- Every outstanding test the founder skipped or hasn't run, in one place.
- Tap "Open the app" → walk the steps → "✓ Tested" or "✗ Bug" (with note).
- Progress saves locally — refresh whenever.
- Found a bug? Tap ✗ Bug, write what you saw, then tap 🐞 Log to GSD →. It writes the bug to the log AND creates a GSD to-do, so the next phase discussion picks it up automatically — no copy-paste needed.
- Sections are collapsible. Tap a section header to fold/unfold.
- "Copy results as text" at the bottom still gives you a paste-able report (backup).
- Frozen UAT build: http://192.168.1.171:5174/ — a built snapshot (no reload mid-test), refreshed 2026-05-30 to Phase 52 (includes every fix below).
Compass International (CIH) RE-centric pitch deck
pitch/): Nabe-Compass-International-RE-Deck.html · …-2026-06-11.pdf (19pp) · Nabe-Compass-RE-OnePager.html + PDFWhat to review → Cover ("It's everything, and like nothing that exists." / "One world, one community.") → the "real estate has never had a home" hook → aggregators-are-a-thin-slice → what Nabe is → off-the-screen → the RE foundation / "context sells" → what it does for agents → why only CIH can build this → the new layer CIH owns → model & scale (residents free, revenue directional) → the Ask → close. Does the narrative land for an RE-literate Compass leadership room?
What to review → (1) Showpiece — browse a listing / "choose your agent" → connected → see what that agent posted in the neighborhood (relationship-gen, not lead-gen; universal across personas). (2) Persona section — opens on the RE trio (broker · developer · regular→future-customer), then sweeps resident/newcomer/business/journalist, each with a Today→Nabe contrast. Do these hit the "wow" bar?
The brief said both "dark purple → black palette" AND "use solid purple text." Those conflict (purple text needs a light bg; a dark bg needs white text). I built it as light paper + solid-purple text/accents (matches "solid purple text" + the attorney deck). If you pictured a dramatic dark deck (purple→black slide backgrounds, white text), say the word — it's a quick swap. This is the one open decision.
The showpiece has 3 empty phone placeholders for screens that don't exist yet (the choose-agent CTA → connected → agent's-posts flow). The capture script is staged but not run (pitch/capture-agent-flow.cjs). When you want them filled, say so — I'll capture from the live app and re-export the PDF.
Places/POI as entities + spatial conversation layer + block discovery
Parks/plazas/landmarks/transit are now real map pins. Tapping one opens its place page directly (no popup) — the same direct-open behavior businesses and developments use.
What to walk →
- Open 192.168.1.171:5173.
- Go to the Map (Feed → Map toggle, or Explore's map). Make sure the "Places" filter chip is on.
- Find Domino Park on the Williamsburg waterfront — its pin is category-colored (a park glyph), not all-teal.
- Tap the pin → the place page drawer should open immediately (no intermediate popup card).
- Expected: a full place page for Domino Park. If the tap does nothing or shows only a popup, tap Bug.
The agreed section order (D-03): a slim official banner pinned at top, then the photo wall as the hero, then time-sensitive content (events → check-ins), then the conversation at the bottom.
What to walk →
- On the Domino Park page (from the previous card), scroll from top to bottom.
- Order should be: (1) Coastal-navy gradient banner with name + type → (2) photo wall (big hero grid) → (3) "Happening today" / events → (4) Check-ins → (5) Conversation.
- Expected: that exact order, all on one scroll (no tabs for the page itself). If sections are out of order or missing, tap Bug.
The pinned banner is curated/official content: "Domino Park · Waterfront park", a short blurb ("6-acre park on the East River…"), a key-facts row (hours/address), and two distinct actions — Save Place (bookmark) and Follow (updates) — plus a show-on-map tap.
What to walk →
- On the Domino Park page, look at the top banner.
- Confirm: name + type ("Domino Park · Waterfront park"), a short official blurb, and a key-facts row (hours/address).
- Tap Save Place → it should toggle to a saved state. Tap Follow → it should toggle independently (Save and Follow are different actions).
- Tap show on map / directions — it should point to the place's location.
- Expected: all present, Save and Follow toggle separately. If either is missing or they're wired together, tap Bug.
Recent photos taken at the place lead the page (most visual / shareable). Layout is a hero-left magazine grid: one big tile + smaller tiles, with a "+N" overlay when there are extra photos.
What to walk →
- On the Domino Park page, look just under the banner — the photo wall.
- Domino Park has 5 photos → expect a big first tile + smaller tiles (magazine grid), full-bleed.
- Open a place with few/no photos (e.g. a smaller transit/landmark place) → expect a graceful 1–2 photo layout or a "No photos yet — be the first to share" empty state, not a broken grid.
- Expected: photo wall is visually the hero. If it's tiny, below the fold, or broken, tap Bug.
Events near the place (pulled from the calendar by location) show up as a time-sensitive section under the photo wall.
What to walk →
- On the Domino Park page, scroll to the "Happening today" / events section (below photos).
- Expect event cards for things near the park, or a clear "Nothing scheduled today — check back soon." empty state.
- Expected: events tied to the place, not random city-wide events. If empty for Domino Park specifically (it should have some) or showing unrelated events, tap Bug.
One-tap "I'm Here" (required for parks, which aren't businesses) PLUS existing check-in posts get pulled in so businesses feel alive on day one. "Here now" (recent) sits above "been here" (history). Names are visible to everyone.
What to walk →
- On the Domino Park page, scroll to Check-ins. Tap "I'm Here" → the button should switch to a green "Here now" state and your check-in should appear under "here now".
- Open a business place page (via Explore or search — see later cards). Its Check-ins should show "been here" history populated from existing check-in posts, even before anyone taps.
- Expected: tap works on parks; businesses show historical check-ins; here-now above, been-here below; real names shown. If the button does nothing or businesses show zero history, tap Bug.
The bottom of every place page is a conversation room — the same component as block chat, now serving places. Everyone can read; verified residents/visitors post. Domino Park and the other headline parks have seeded messages.
What to walk →
- On the Domino Park page, scroll to the bottom Conversation section.
- Expect seeded messages (it's a real room). Confirm the read/post gate behaves like block chat (post box present for a verified resident).
- Open a different place (e.g. McCarren Park) → its conversation should be a separate room with its own messages (not shared with Domino).
- Expected: per-place isolated rooms. If two places share the same messages, tap Bug.
The visible "spatial" part: a small sky-blue glow dot sits on the pins of places/blocks that have an active conversation, so you can see where the neighborhood is talking.
What to walk →
- On the Map with the "Places" filter on, look at the place pins.
- Pins for places with active rooms (Domino Park, McCarren Park, etc.) should carry a small sky-blue glow dot; quiet places should not.
- Expected: a subtle dot/glow (not just a number badge, not invisible). If no dots appear on any active place, tap Bug.
Like "walking outside and hearing the block" — a compact strip aggregating the nearest active place conversations, at the top of the Places/Blocks band in Explore.
What to walk →
- Open Explore tab and scroll to the Places & Blocks band.
- At the top of that band, find the "What's being said nearby" strip — up to 3 chips, each a nearby active place + a small activity dot + "talking".
- Tap a chip → it should open that place's page.
- Expected: the strip shows nearby active places and chips open the place. If it's empty when active places exist nearby, tap Bug.
Discovery lives inside Explore: a horizontal row of place cards (photo + name + type + "X here now"), plus a Blocks sub-section. No new tab was added to the bottom nav.
What to walk →
- Open Explore tab → scroll to the Places & Blocks band (between the Neighbor Economy and "More to explore" bands).
- Scroll the place tiles sideways; tap one → its place page opens.
- Scroll to the Blocks sub-section; tap a block entry → the block page/drawer opens.
- Confirm the bottom nav still has the same tabs as before (no new "Places" tab).
- Expected: browse band present, tiles open pages, nav unchanged. Otherwise tap Bug.
Places (by name/type/neighborhood) and blocks (by label/intersection/neighborhood) are now indexed in global search, each in its own results section.
What to walk →
- Open the search (header search icon).
- Type "Domino" → expect a Places results section with Domino Park (MapPin icon). Tap it → place page opens.
- Type a neighborhood or block term → expect a Blocks section too.
- Expected: places + blocks appear as their own sections and open the right entity. Otherwise tap Bug.
The home-feed "Right Now" banner now surfaces the single most-active nearby place as a tappable chip.
What to walk →
- Open the Feed and look at the Right Now banner near the top.
- Expect a place chip (a nearby active place). Tap it → that place's page opens.
- Expected: chip present and opens the place. If absent when an active place exists nearby, tap Bug.
Saving a place adds it to a new "Saved places" bucket in Profile › Saved AND a "Saved places" card on the Me page (mirroring the My Block card). Full round-trip.
What to walk →
- On a place page, tap Save Place.
- Go to Me tab → look for the "Saved places" card (just after "My Block"). The place you saved should be a tile there; tap it → place page opens.
- Check Profile › Saved — the place should also appear in the saved-places bucket alongside saved posts/listings.
- Un-save it → it should disappear from both.
- Expected: save/un-save round-trips to both surfaces. Otherwise tap Bug.
The rich block features stay nested in the block page but are now easy to reach, and a highlight (Time Machine) is promoted to a discoverable surface — fixing the "buried behind one profile card" problem you flagged.
What to walk →
- In Explore → Places & Blocks → Blocks sub-section, confirm block entries show a "Time Machine available" pill (the surfaced highlight).
- Tap a block → the block page/drawer opens with the full feature set still reachable: Time Machine (year slider), throwbacks, 30-day timeline.
- Confirm the old path still works too: Me → My Block → Open Time Machine.
- Expected: blocks discoverable from Explore + Time Machine promoted; nested features intact. Otherwise tap Bug.
The Explore Places band has a horizontal scroll of place tiles + a "Browse all" link. Right now "Browse all" opens the first place (a demo shortcut) rather than a full scrollable list/grid of every place. We deliberately did NOT build a new list view this phase (out of scope) and flagged it for you. Decision needed: is the horizontal scroll enough, or do you want a dedicated "all places" list view in a future phase? Also worth your eye: the activity-dot glow and place pins render only in the live browser (not testable headless) — confirm they look right on-device.
What to decide →
- Open Explore → Places & Blocks, scroll the place tiles, and tap "Browse all" — note it opens a place page, not a list.
- Decide: keep the horizontal scroll as the browse mechanism, OR queue a dedicated "all places" list/grid view for a later phase.
- Tap ✓ Tested if the current behavior is fine for now, or ✗ Bug with a note if you want the list view queued.
Coastal Slate — Visual UAT finalize (inline leak fixes + design-system lock)
The onboarding flow (first thing a new user sees) used a dark-indigo bg #1e1b4b → #312e81 that grep missed. Phase 61 fixed it to Coastal navy. Playwright-confirmed live. Also: feed header, Right Now banner, and promo cards all read navy→teal→sky.
What to walk →
- Open 192.168.1.171:5173.
- Go to Me tab → scroll to the bottom → tap "Reset Onboarding" (dev button). App reloads to the first-run flow.
- The welcome screen background should read deep navy (#0f172a) fading to teal — no purple or indigo cast.
- Tap through NeighborhoodPicker and InterestGrid — both header frames should stay Coastal navy→teal, not indigo.
- After finishing, check the Feed: header reads navy→teal→sky, Right Now banner cool (no green glow), active chip teal.
- Expected: navy background, not dark-purple/indigo. If it still reads violet, tap Bug.
Three places had a #faf8ff → #fdf2f8 warm violet→pink card tint that grep missed. All three fixed to slate-neutral #f8fafc → #f0f9ff. The Vault's featured card star was also fuchsia — now teal.
What to walk →
- Open 192.168.1.171:5173, tap Vault tab.
- The Featured Guide card (top of Vault) should have a cool slate background — no warm violet/pink tint. The star icon should be teal, not fuchsia/purple.
- Tap the bell icon in the header to open Notifications.
- Unread notification rows (those with the "unread" indicator) should have a cool slate/sky card background — no warm violet/pink tint.
- Expected: cool/neutral card backgrounds throughout. If you see a warm pink or violet tint on any card background, tap Bug.
The active "Resident" mode toggle used from-primary-500 to-accent-500 — the accent token is warm coral/amber-tan, so it read as a warm gradient on AI chrome. Fixed to from-primary-500 to-primary-600 (cool teal). The Agent toggle (amber) is intentionally kept — that's a categorical role color.
What to walk →
- Open 192.168.1.171:5173, tap Explore tab → tap the AI / Ask button or the sparkle icon.
- The Resident mode toggle (when active/selected) should be a cool teal gradient — no warm amber or coral tint.
- The Agent toggle (if visible) stays amber — that's intentional categorical color.
- Expected: Resident toggle = cool teal. If it reads warm/coral, tap Bug.
Playwright-confirmed: Listings CTA gradient teal, score bars teal; Explore header + chips teal; Profile hero teal, progress bar teal; Map chrome teal. Exemptions intact: "Active" badge green, rating stars amber, like-heart red, map pins category-colored.
What to walk →
- Open 192.168.1.171:5173.
- Explore tab → find a listing and open its detail. Header, CTA button ("Message Emma…"), and score progress bars should be teal. The like-heart should still be red/pink. The "Active" status badge should be green.
- Me tab: hero header reads navy→teal→sky; progress bar teal; active tab underline teal.
- Map view (Feed → Map toggle or Explore map): map chrome (cluster bubbles, legend) teal; pins keep category colors (not all teal).
- Expected: all brand chrome teal, semantic + map-pin colors unchanged. Tap Bug with the surface name if anything reads purple/indigo.
Playwright-confirmed: all gradient hero drawers navy→teal, messaging header teal, builder-claim drawer teal, settings toggles teal. Neighborhood selector hero teal. Calendar event-category colors exempt (categorical).
What to walk →
- Open 192.168.1.171:5173.
- Tap the messages icon (header) → Inbox should have a navy→teal header and teal active tab.
- Tap any post or person card to open a drawer — the gradient hero header in the drawer should read navy→teal→sky.
- Open Me tab → Settings: toggle switches should be teal when on.
- On the Feed, tap into a Development card (if visible) — builder-claim drawer hero should be navy→teal.
- Expected: all hero headers + toggles teal. Tap Bug with the surface name if anything reads purple.
Phase 60 deliberately recolored sent bubbles to the brand teal gradient (bg-gradient-brand-r). Received bubbles are slate-sky, so sent/received distinction is preserved (teal vs pale sky). The Phase 61 UAT flagged this because messaging typically uses semantic blue for "you" bubbles (iMessage, WhatsApp). This is NOT a leak — it's a design judgment. No auto-change was made.
Option A (current): sent = Coastal teal gradient → brand consistency, but departs from the universal "blue = you" convention.
Option B: sent = semantic blue (#3b82f6 or similar) → familiar iMessage-style, but interrupts the Coastal Slate palette in the thread.
What to walk →
- Open 192.168.1.171:5173, tap the messages icon in the header.
- Open any conversation thread (Personal or Professional).
- Look at the sent bubbles (right-aligned, your messages) — they currently read navy→teal→sky (Coastal brand gradient).
- Decide: does teal feel right for sent messages, or would you prefer the classic semantic blue?
- Tap ✓ Tested if teal is fine (no change needed), or ✗ Bug and write "restore semantic blue" if you want the classic look.
The agent-dashboard IntroRequestsList had a warm tint (#faf8ff → #fdf2f8) that Phase 61 fixed (commit c67748a). This surface is gated behind the agent/broker role — the Playwright walk runs as a resident so it couldn't screenshot it. The fix is grep-confirmed clean (faf8ff | fdf2f8 = 0 hits in src/), but an on-device confirm in agent role is the final sign-off.
What to walk →
- Open 192.168.1.171:5173.
- Switch to agent/broker role (demo role switcher, or via the Me tab if there's a role toggle).
- Navigate to the Agent Dashboard → Intro Requests section.
- The card background for intro-request rows should be cool slate-neutral — no warm violet/pink tint.
- Expected: neutral/cool card background. If you still see a warm pink or violet tint, tap Bug.
Map pins were verified category-colored in the headless walk, but the popup CARD that appears when you tap a pin wasn't opened headless. This card should follow brand (teal header/CTA). Also: a final sweep confirming semantic/categorical colors still read their meaning — hearts red, success green, warnings amber, event-type category colors intact.
What to walk →
- Open 192.168.1.171:5173, tap Explore → open the Map view.
- Tap any map pin — a popup card should appear. Its header/CTA should read teal (brand), while the pin itself keeps its category color.
- On the Feed: tap "like" on any post → heart should turn RED (not teal).
- Find a warning badge (e.g. "MEDIUM" flood risk, or any amber alert) → should still be AMBER.
- Open Calendar → event-type colored dots/chips should keep their purple/teal/pink category identities (these encode meaning, not brand).
- Expected: popup card = teal brand; hearts red; warnings amber; category colors intact. Tap Bug for any surface that looks wrong.
Original Recolor → "Coastal Slate" — color-only sweep of the original design (navy → teal → sky)
pitch branch); layout, structure, type, copy, and interactions are frozen. The new palette is "Coastal Slate" — a navy #0f172a → teal #0e7490 → sky #0ea5e9 gradient replacing the old midnight-purple→black brand.
The whole point of this track: only the hue changed. Same layout, same spacing, same type, same cards — just teal instead of purple.
What to walk →
- Open the app: 192.168.1.171:5173.
- On the Feed: header wordmark/skyline, the Right Now banner, and the active filter chips should read navy→teal→sky (no purple anywhere).
- Avatars should be cool teal/slate/sky.
- Confirm only the colors changed from the original design — layout, type, spacing, and card structure are untouched.
- If anything other than color moved, tap ✗ Bug and say which surface.
This was your repeated complaint: the decorative amber/violet "glow" blobs layered over the banner turned green on teal. They were hunted down and recolored to cool sky.
What to walk →
- Open 192.168.1.171:5173, look at the Right Now banner at the top of the Feed.
- The soft glow over the gradient should read cool blue/sky — no green cast, no muddy amber.
- Scroll for other promo/hub banner cards (World Cup hub, developments banner, photo-surge banner) — confirm their glows are also cool.
Per your direction, category-coded map markers stay colorful for legibility. The brand frame around the map (cluster bubble, legend, preview) recolored to teal.
What to walk →
- Open 192.168.1.171:5173 and open the Map (Feed → "Map" toggle, or the Explore map).
- Confirm the category pins/markers keep their distinct colors (food, events, developments, etc.) — they should NOT all be teal.
- Confirm the map's brand chrome (cluster bubbles, legend, any gradient header/preview) reads teal, not purple.
The WC-Hub V2 zinc "stadium" surface is a deliberate dark theme, exempt from the recolor. It should look exactly as before.
What to walk →
- Open 192.168.1.171:5173 and open the World Cup Hub (the "Right Now" World Cup 2026 banner → tap in).
- Confirm the dark zinc "stadium" surface is unchanged — dark/charcoal, not recolored teal.
- This surface should look structurally identical to the original — only the hue changed.
Status/meaning colors are NOT brand colors — they stay put so the app stays readable. Only the brand identity went teal.
What to walk →
- Open 192.168.1.171:5173.
- On the Feed, "like" a post — the heart should be RED (not teal).
- Find a success state (e.g. "Resolved" / saved confirmation) — still GREEN; a warning badge (e.g. "MEDIUM") — still AMBER.
- Open Messages → a conversation — your sent bubbles should still be BLUE.
- The "love" reaction stays pink (semantic, like the heart) — that's intended, not a leak.
Explore + Vault Redesign — single-page Explore, unified headers, Real Estate section, Local Spots, Vault mixed-size cards, feed diversity, profile view-as
- ExploreMapModule: the dark tint overlay now uses
bg-gradient-brand opacity-30and the footer usesbg-gradient-brand-b+ a mask — the effect is very similar to before but test on device to confirm legibility of the "Open map" pill and label text is acceptable. - The "Open map" pill in ExploreMapModule now reads
text-cyan-800(dark brand purple) instead of the previous #0e7490 — these are the same actual color; this is a migration to a Tailwind class, not a design change.
The lead block was re-curated: photo → safety → bridge-tip → event → marketplace → agent-insight → news → help/lost-pet → community → check-in. Only one bridge-moment post in the first 10.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap the Home tab (or it's the default view)
- Scroll through the first 10 feed cards
- Confirm you see a variety of card types — a photo post, a safety post, an event, a marketplace post, an agent insight, etc. (not 4+ identical bridge Q&A rows in a row)
- Confirm the first 10 cards are all Williamsburg / Greenpoint (no Austin, Paris, Tokyo content)
The demo toggle at the bottom of the Me tab now has 3 modes. "Resident — no agent" hides all agent sections (Active Engagement timeline, Ask My Agent, First 30 Days, Welcome Kit, Move-In).
What to walk →
- Open the app: 192.168.1.171:5173
- Tap the Me tab in the bottom nav
- Scroll to the very bottom of the profile page — find the demo View As toggle
- Confirm it shows 3 modes: "Me (with agent)", "Agent view", "Resident — no agent"
- Tap Resident — no agent — confirm the agent-engagement sections disappear (timeline, Ask My Agent, First 30 Days, Welcome Kit, Move-In)
- Tap Me (with agent) — confirm the agent sections return
Both tabs now use the shared SurfaceHeader primitive: midnight-purple gradient, centered icon + title + subtitle + glassy search. Explore adds a "Map" pill top-right; Vault does not. They must not visually drift.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap the Explore tab — notice the dark gradient header with "Explore" and a subtitle + search bar
- Tap the Vault tab (BookOpen icon in the nav) — the header should look like Explore's: same dark gradient, same layout (icon + "The Vault" + subtitle + search bar)
- Compare: they should look like siblings from the same design — NOT one drab gray and one colorful
- Confirm Explore has a "Map" pill top-right; Vault does NOT have that pill
Below the Explore header is a sticky row of 5 short chips: Happening · People · Local · Homes · Economy. Tapping a chip SCROLLS to that section — it does NOT filter/hide everything else. The active chip highlights as you scroll through sections.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore — below the gradient header you should see a sticky chip row: Happening · People · Local · Homes · Economy
- Tap Homes — the page should scroll smoothly to the Real Estate section (nothing disappears)
- Tap Economy — it should scroll to Neighbor Economy at the bottom
- Tap Happening — should scroll back to the top section
- Manually scroll down through the page — the active chip should update as you pass through each section heading (Happening → People → Local → Homes → Economy)
These 5 elements all appear in the Happening band near the top of Explore: a horizontal stories rail (round brand-ringed bubbles of live spots + active developments), a full-width map preview card with "Open map" pill, a "Trending" section (numbered topics), a seasonal card (cherry blossom / day-of weather), and a "Featured collections" horizontal carousel.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore
- Just below the header + chips row, look for a horizontal row of round bubble avatars (stories rail) — confirm bubbles show business emoji and/or development cover photos
- Below the stories rail, confirm a map preview card with a photo background, colored pins, and an "Open map" pill on the right — tap it to confirm it opens the full map
- Scroll into the Happening band — find a Trending section labeled "Trending" (NOT "Rising") with a numbered list of topics
- Find a Seasonal visual card (cherry-blossom or weather-aware prompt)
- Find a "Featured collections" heading with a horizontal scroll of editorial image cards (Best of the Waterfront, Where locals get coffee, etc.)
The "Homes" anchor band consolidates all RE into one branded card: a Find Your Agent entry (the built intake flow), the agent leaderboard, a 2-up sample listing + development card, and two CTAs.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore → tap the Homes chip (or scroll down past People and Local)
- Confirm a "Real Estate" card with a dark gradient header strip appears
- Look for a Find Your Agent entry — tap it and confirm the intake form opens (neighborhood, beds, budget, etc.)
- Back out — confirm an agent leaderboard (Top Agents) is visible below
- Confirm a 2-column grid shows a sample Listing card and a Development card side by side
- Confirm two CTA buttons: Browse listings and New developments
- Tap "Browse listings" — confirm it switches to the Listings tab
The Local band's first section is "Local Spots" with a subtitle "What neighbors love — and what's buzzing now". Hot this week: horizontal cards with a buzz pill (e.g. "24 love it") and an honest discovery signal. Neighbor favorites: stacked rows ranked by recommendation count.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore → tap the Local chip
- Confirm the "Local Spots" heading appears with subtitle "What neighbors love — and what's buzzing now"
- Confirm a "🔥 Hot this week" horizontal strip with scrollable business cards, each showing a buzz pill (e.g. "24 love it" or "Buzzing") and a star rating
- Tap one of the Hot cards — confirm it opens a business detail drawer
- Below Hot, confirm a "💜 Neighbor favorites" strip with stacked rows showing business name, emoji icon, star rating, and "N recommend"
- Tap a Neighbor favorites row — confirm it opens the business detail drawer
The jump-not-filter approach keeps all sections on the page. Scroll from top to bottom and confirm each band contains its sections. Automated test (exploreSections.test.ts + color-audit) covers this in CI; this card verifies the visual rendering.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore — confirm the page is one long scroll (no tab-switch to see content)
- Happening band: Stories rail → Map preview → Trending section → Seasonal card → Featured collections → Explore other nabes (ExploreNeighborhoodMode)
- People band: Singles, Neighbors, Families, Groups cards
- Local band: Local Spots (Hot + Favorites) → Find a Pro tile → Coming soon tile → Ask section
- Homes band: Real Estate card (Find Agent + Top Agents + Listing/Dev + CTAs)
- Economy band: Micro-economy / Neighborhood challenge content
- Confirm you didn't have to tap a filter chip to see any of the above — just scrolled
Vault's flat one-line topic rows were replaced with an Explore-matching mixed-size card layout. The stats card (Guides / Threads / Contributors count) is preserved and still floats below the hero header.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap the Vault tab (BookOpen icon)
- Confirm the dark gradient header with "The Vault" + search bar appears (same design language as Explore)
- Just below the header, confirm a floating stats card with three numbers: Guides · Threads · Contributors
- Scroll down — find the "Topic guides" section (previously called "Topic Collections")
- Confirm the first collection renders as a full-width image hero card (cover photo with gradient overlay, collection name + emoji + counts)
- Confirm the remaining collections render as a 2-column grid of compact icon tile cards (emoji, name, guide count)
- Tap a collection card — confirm it opens the collection detail
The map card is a first-class h-32 card (not a tiny button) — a preview image, 4 colored pins, label "Explore on the map" with a subtitle, and an "Open map" pill. Tapping the card OR the pill calls onOpenMap. From the map view, a back-to-Explore button returns to the single page.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore
- Below the stories rail, confirm a wide map card — a photo background with colored pin dots, "Explore on the map" label, and an "Open map" pill on the right
- Tap the card — confirm the full NabeMap opens (interactive map with pins, category chips)
- Confirm there is a "← Explore" (or "← Back") button to return to the single-page Explore view
- Tap it — confirm you land back on the scrolling Explore page (not the old bucket hub)
The brand is midnight-purple → black (not bright indigo → pink). Active chips, section labels, and header backgrounds should look deep/dark. Automated color-audit test guards this; this card confirms it visually on device.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore — the header gradient should look dark (deep purple → black), NOT a bright indigo/magenta/pink
- Tap a jump chip (e.g. "Homes") — the active chip pill should show a dark gradient (not bright indigo/pink), with white text
- Tap Vault — confirm same dark gradient header
- If you see any bright neon indigo or hot-pink gradient anywhere in the new Explore/Vault surfaces, that is a bug
The People anchor band re-homes MeetPeopleView — singles discovery, neighbor matching, families, and groups — all visible on the page as you scroll through.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore → tap the People chip
- Confirm the page scrolls to a Meet People section header
- Confirm you can see singles, neighbors, families, and/or groups content in that band (open-to-meeting toggle, neighbor profiles, group cards)
- Confirm you did NOT have to tap a separate chip/filter to reveal this content — it's all on the page
Two ways to open the Explore map: the header "Map" pill (top-right corner of the gradient header) and the large map preview card below the stories rail. Both should open the same NabeMap view.
What to walk →
- Open the app: 192.168.1.171:5173
- Tap Explore
- In the dark gradient header, find a "Map" pill in the top-right corner (with a map icon)
- Tap it — confirm the full NabeMap opens
- Use the back button to return to Explore — confirm you land back on the scrolling single page
Explore Redesign — hub landing, bucket filters & shorter scroll
ExploreContainer went 822 → 189 lines (decomposed). Walk these on the live build: 192.168.1.171:5173 (dev server, always current). Live-smoke-tested after execution.
- In Local Biz & Services, the Find-a-Service / coming-soon icon tiles use icon size 18. Decide by eye whether 16 looks cleaner — see card 56-11.
- The pre-existing PushToast nested-button console warning is logged separately (not introduced by this phase) — noted in 56-11, no action needed for UAT.
Opening Explore now lands on the ExploreHub: a search/ask bar at the very top, then a curated lead mix of preview blocks (Happening now / Meet people / Local biz & services), each capped with a "See all". It is NOT a 12-chip wall and NOT one endless stack of full-width posts.
What to walk →
- Open the live app: 192.168.1.171:5173
- Tap the Explore tab in the bottom nav
- Confirm the top shows a search / ask bar
- Below it, confirm a few short preview blocks (e.g. Happening now, Meet people, Local biz & services), each with a "See all" — not a wall of chips, not one long stack of posts
A single row of exactly five bucket filter chips replaces the old long chip overflow row.
What to walk →
- On the Explore tab, find the bucket chip row near the top
- Confirm there are exactly 5 chips, labeled: Happening · Meet People · Local Biz & Services · Build & Permits · Neighbor Economy
- Confirm there is NOT a long overflow wall of 12+ chips
This is the core fix. Tapping a chip swaps the page content to that bucket's view — it does NOT scroll you down one long page to a section heading.
What to walk →
- On the Explore tab, tap the Meet People chip
- Confirm the content swaps to the Meet People bucket (the chip goes active) — the page does NOT just scroll down through everything else
- Tap Build & Permits — confirm the content swaps again to that bucket
- Tap back to Happening — confirm it returns to the Happening content
From a hub preview block, "See all" opens that bucket's full view. A "< All" back link returns you to the hub.
What to walk →
- On the Explore hub, find a preview block (e.g. Happening now) and tap its "See all"
- Confirm it drills into that bucket's focused view
- Confirm there is a "< All" back link at the top
- Tap the back link — confirm you return to the hub landing
A key density fix: in Build & Permits, developments and permits render as compact grid cards two-per-row, instead of full-width stacked posts that ran on forever.
What to walk →
- On Explore, tap the Build & Permits bucket chip
- Confirm developments and permits show as a 2-up grid — two compact cards per row
- Confirm they are NOT full-width, one-per-line stacked posts
- Tap a card and confirm it still opens the development/permit detail
The Meet People bucket consolidates the social features: Singles, Meet new neighbors, Families (via identity chips in Groups), and Groups.
What to walk →
- On Explore, tap the Meet People bucket chip
- Confirm you can reach Singles
- Confirm you can reach Meet new neighbors
- Confirm you can reach Families (via the identity chips in Groups)
- Confirm you can reach Groups
The Local Biz & Services bucket gathers the commerce + service surface: Local Discovery, Local Businesses (with category filters), Find a Service, coming-soon businesses, agents, Ask, and a Browse Listings CTA.
What to walk →
- On Explore, tap the Local Biz & Services bucket chip
- Confirm you can reach Local Discovery
- Confirm Local Businesses shows with category filters
- Confirm Find a Service is present
- Confirm coming-soon businesses and agents are present
- Confirm Ask and a Browse Listings CTA are present
The Neighbor Economy bucket gathers the give-and-get features: skill sharing, tool lending, babysitting co-op, and the neighborhood challenge.
What to walk →
- On Explore, tap the Neighbor Economy bucket chip
- Confirm skill sharing is present
- Confirm tool lending is present
- Confirm the babysitting co-op is present
- Confirm the neighborhood challenge is present
The redesign kept the Explore Map toggle intact. Tapping it loads the Leaflet map; toggling back returns to the List/hub view.
What to walk →
- On the Explore tab, tap the Map toggle (top-right)
- Confirm the Leaflet map loads (tiles + pins)
- Tap the toggle back to List
- Confirm you return to the Explore hub/list view
The headline check, against the original complaint: "chips scroll too long, every post is a full line, endless scroll." Explore should now feel organized into buckets, with a short hub landing and far less endless scrolling.
What to walk →
- Open Explore and scroll the hub top to bottom
- Confirm it feels organized into buckets, not one endless stack
- Confirm the chip row is short (5 buckets), not a long overflow wall
- Confirm posts aren't all full-width single lines running on forever (grid cards where it makes sense)
- Gut check: does Explore feel meaningfully shorter / easier to navigate than before? Flag anything that still feels too long.
Two flags to decide by eye — not a pass/fail walk. (1) In Local Biz & Services, the Find-a-Service / coming-soon icon tiles use icon size 18; decide whether 16 reads cleaner. (2) The pre-existing PushToast nested-button console warning is logged separately — it was NOT introduced by this phase and needs no UAT action; noted here only so it's not a surprise in the console.
What to walk →
- On Explore, tap the Local Biz & Services bucket chip
- Look at the Find a Service / coming-soon icon tiles
- Decide by eye: does the current icon size (18) look right, or would 16 be cleaner? Note your preference in the box.
- (No action needed) The PushToast nested-button warning is a pre-existing console note, tracked separately.
Unified Map — filter chips, markers/bubbles & popup redesign
- 3 lucide icon swaps on map markers (kept emoji everywhere else): Tips → lightbulb, Package → box, Help → life-buoy. Approve by eye or revert any.
- Chip layout = Variant A (layer-first contextual chips) was built. Variant B (grouped + "More" sheet) / Variant C (category-first) are still on the table — see the chip mockup. The layer→chip backbone is reused if you switch.
- Q1 — rich neighborhood-memory timeline popup is left merged into the standard popup this phase (no separate timeline UI). Flagged as possible future polish.
- Q3 — a dedicated "Stories" toggle was NOT built (stretch). Stories got a legend entry + clickable interactive dots instead. Flag if you want the toggle.
The old 18-chip overflow row is gone. The map now leads with a segmented Now / Coming / History control (gradient when active), a contextual label, and a chip row that shows only the chips valid for the active layer. Verified live: Now shows All / Live / Safety / Events / Tips / Help / Market / Community / Families / Singles / Meet Neighbors / Properties / Businesses / Listings; Coming shows All / Developments / Permits; History shows All / Throwbacks. No Developments chip appears on History.
What to walk →
- Open the live app: 192.168.1.171:5173 (Williamsburg)
- On the Home feed, tap the floating Map button (bottom-left)
- Confirm the top of the map shows a pill segmented control: Now · Coming · History (Now active = brand gradient), with a small contextual label ("Happening now") below it
- Confirm the chip row below shows the Now set (All, Live, Safety, Events, Tips, Help, Market, Community, Families, Singles, Meet Neighbors, Properties, Businesses, Listings) and scrolls horizontally
- Tap Coming — confirm the chip row swaps to just All · Developments · Permits and the label reads "Coming to the block"
- Tap History — confirm the chip row swaps to just All · Throwbacks (NO Developments chip), label "How it used to be"
A chip selected on one layer can't strand you in an empty/stale state on another. Verified live: selecting Safety on Now then switching to History snapped the selection back to All.
What to walk →
- Open the map (Home → Map button), make sure Now is the active layer
- Tap the Safety chip — it goes gradient/active
- Tap the History layer segment
- Confirm the chip selection has reset to All (Safety is no longer offered on History, and you're not left on an empty filter)
The chip + layer-segment registry was migrated off emoji glyphs to lucide icon components (per DESIGN_STANDARDS). Verified live: an automated scan of every chip/segment button found zero emoji glyphs.
What to walk →
- Open the map and look at the chip row + the Now/Coming/History segments
- Confirm each chip's icon is a crisp single-color line icon (lucide) — e.g. Live = a zap/bolt, Events = calendar, Tips = lightbulb — not a colorful emoji
- Switch layers and confirm the same on the Coming/History chips (Developments, Permits, Throwbacks)
Previously History + Developments leaked orange neighborhood-memory pins. The chip row now makes that combo unselectable (Developments isn't offered on History), and the data layer is layer-aware as a backstop. Verified live + locked by test: on History, "All" shows only throwbacks + memory — no development / permit / business pins.
What to walk →
- Open the map and tap the History layer
- Confirm there is NO Developments chip in the row (only All · Throwbacks)
- With All selected, confirm the pins on the map are throwback/memory pins only — no hard-hat development pins, no permit pins, no business pins
- Tap Throwbacks and confirm pins stay throwback/memory-only (no leak)
A development/permit no longer leaks across layers. Placement is driven by status: under-construction → Now; proposed/filed/approved/opening-soon → Coming; completed/expired → History. Verified live: the Coming layer shows the hard-hat development clusters + a permit pin; the exact status→layer table is locked by a test.
What to walk →
- Open the map, tap the Coming layer, tap the Developments chip
- Confirm you see hard-hat development pins/clusters (upcoming projects)
- Switch the chip to Permits — confirm permit pins appear (e.g. a small "…0402" permit pin)
- Tap the Now layer — confirm any actively-under-construction development sits here, not on Coming
- Tap History — confirm completed/expired items (if any) sit here, not on Now/Coming
Story/camera pins used to mislabel as "Business" and showed a dead "View Full" button on non-clickable dots. Fixed: the badge now reads Story; a story with an entity shows "View story →"; a label-only story shows no CTA. A Stories legend entry was added too. The automated drive couldn't isolate a single story dot (they cluster/overlap at WB zoom) — confirm this one by eye on the device. The label + CTA logic is locked by unit tests and verified in code.
What to walk →
- Open the map, stay on the Now layer (stories live here)
- Pinch-zoom in until the clusters break apart into individual pins; find an indigo camera pin (📸)
- Tap it — confirm the popup badge reads Story (NOT "Business")
- If it's an interactive story (e.g. tied to a block/business), confirm the CTA reads "View story →" and tapping it opens the story
- Find a label-only story dot — confirm its popup has NO button (no dead "View Full")
- Open the legend and confirm a Stories entry with an indigo camera swatch is listed
Already unified in Phase 51 (one NabeMap component mounted in both tabs) — this just confirms it still holds. Verified live: the Williamsburg Home map and Explore map showed the identical Variant A chip control + the same round brand markers (11 markers each); checked Paris too. The old "Explore only shows hard-hat/permit until you zoom in" complaint did NOT reproduce — both maps show the full marker set on the Now layer; that earlier report was a zoom/density perception, not a real gap.
What to walk →
- Open the Home map (Williamsburg) and note the chip control + the markers/clusters
- Go to the Explore tab, tap its Map toggle (top-right)
- Confirm the Explore map has the SAME Now/Coming/History control, the SAME chips, and the same round brand markers/clusters as the Home map
- Switch to a different neighborhood (e.g. Paris) via the header pill and repeat — Home map vs Explore map should still match
- Confirm the Now layer shows the full mix of markers (not just hard-hat/permit) without needing to zoom in
Phase 51 merged the two history surfaces. Verified live: the segmented control has exactly three layers (Now / Coming / History) — there is no separate neighborhood-memory layer; memory pins surface under History.
What to walk →
- Open the map and look at the layer segmented control
- Confirm there are exactly three options: Now · Coming · History (no fourth "Memory" layer)
- Tap History → All and confirm old-timer memory + throwback pins both appear under this one layer
Phase 51 removed businesses from the Coming gate. Verified live: the Coming chip row offers only All · Developments · Permits — open businesses are excluded by construction.
What to walk →
- Open the map and tap the Coming layer
- Confirm the chip row is only All · Developments · Permits — no Businesses chip
- With All selected, confirm the pins are upcoming developments + permits — no current/open restaurant/shop pins
Emoji glyphs were kept (3 lucide swaps — see flags), colors harmonized (3 clashing hexes fixed), sizes brought onto one round-bubble scale, and ONE urgency system spans content + hotspot pins: calm everyday dots, a subtle ring for medium, an animated pulse + size bump for emergency/safety. Verified live: markers render as round brand bubbles; the nabe-marker-pulse keyframe is defined; compare against the bubbles mockup.
What to walk →
- Open the map on the Now layer and look at the individual pins (zoom in to break clusters)
- Confirm pins are consistent round bubbles with a colored ring + glyph (not a grab-bag of squares/sizes)
- Find a safety/emergency pin — confirm it's bigger/bolder and has an animated pulse ring; everyday pins (events, tips) sit calm
- Open the legend — confirm the swatches/labels match the markers on the map (including the Stories entry)
- Compare to the bubbles mockup and flag any color/size you don't like
The three old inline-styled popups are unified into one MapPreviewCard: brand-gradient header band + brand-gradient CTA (the old hardcoded purple is gone), category color demoted to a small accent dot. Verified live: a tapped content pin showed the new card with the bg-gradient-brand "View Full →" CTA (no #7C3AED); a permit pin showed the light card with NO CTA and "Tap-outside to dismiss · no drawer".
What to walk →
- Open the map (Now layer) and tap a content pin (e.g. a throwback/event)
- Confirm the popup is a card with a brand-gradient header strip, a small category-color accent dot, photo thumb, title + description, and a brand-gradient CTA button (not flat purple)
- Tap a few different pin types (post, business, hotspot) — confirm they all use the same card shape/treatment
- Go to Coming → Permits, tap a permit pin — confirm a LIGHT card with NO CTA button ("Tap-outside to dismiss · no drawer")
- Flag anything off about the card style against the bubbles mockup
Replaces the old uniform two-step (tap → popup → "View Full" → drawer). Rich content jumps straight to its full entity drawer; light content (story, permit) keeps a quick preview popup. The automated drive couldn't isolate a single rich pin (they cluster at WB zoom) — confirm by eye on device. The routing predicate (property/business/development = direct-open; story/permit = popup) is exhaustive and locked by a unit test.
What to walk →
- Open the map (Now layer), tap the Listings chip, pinch-zoom in to break clusters into single pins
- Tap a property/listing pin — confirm it opens the full listing drawer directly, with NO intermediate popup flash
- Do the same with a Businesses pin and a development pin (Coming → Developments) — both should open their drawer on the single tap
- Now tap a story dot or a permit pin — confirm those show the quick preview popup instead (not a direct drawer)
The two cluster bubbles were restyled into one family on a shared size ladder: content clusters use the dark brand gradient, hotspot clusters a red gradient + soft glow, both with the same white border/shadow/font. Verified live: zooming out produced consistent brand-gradient cluster bubbles.
What to walk →
- Open the map and pinch-zoom OUT so pins collapse into clusters
- Confirm content clusters are dark brand-gradient circles with a count, clean white border
- If hotspots are present, confirm their clusters are the red-glow sibling (same size scale + treatment, just a different accent)
- Confirm the look matches the cluster panel in the bubbles mockup; flag anything off
AI Re-Imagining — Ambient Intelligence Layer
claude-sonnet-4-6. Walk these on the live build: 192.168.1.171:5173 (dev server, always current). Build + 471 automated tests green. DESIGN_STANDARDS sweep: all 15 components PASS.
VITE_ANTHROPIC_API_KEY in .env.local. If no key is set, the scripted fallback runs instead (no action-proposal card appears). Scripted paths (snap-building, snap-apartment, plan-weekend) work with or without a key.When a live Claude response includes a tool_use block, an action-proposal card renders (purple AI card, "Proposed Action" label, Confirm / Edit / Cancel buttons). Confirming executes the tool against mock state and shows an action-result card with a navigable link. Requires VITE_ANTHROPIC_API_KEY.
What to walk →
- Open the live app: 192.168.1.171:5173
- Tap the Sparkles AI bubble (bottom right)
- Type a request that triggers a tool: "RSVP me to the next event in Williamsburg" or "Set up a saved search: 2BR under $4K in Williamsburg"
- Expect: an action-proposal card with a warm violet gradient, "Proposed Action" header, detail rows showing the tool inputs, and three buttons: Confirm / Edit / Cancel
- Tap Confirm — expect: the card switches to a green "Confirmed" badge + an action-result card below it ("Done" header + summary text)
- If the result has a navigable artifact (event, saved search, post), expect a "View it" button — tap it and verify navigation opens the right entity
- Try Cancel on a second request — expect: the proposal card turns gray with a strikethrough description and a "Cancelled" label
The welcome screen's "Plan my weekend in Williamsburg" card triggers the scripted neighborhood-vibe scenario (not a live API call). Renders listing cards, community data, events, and follow-up chips. Works with or without API key.
What to walk →
- Open the live app and tap the AI bubble
- Confirm welcome screen shows 4 prompt cards: "Plan my weekend in Williamsburg", "Snap a building for Nabe intel", "Find me a 2BR under $4K", "What does $3,500/mo get me?"
- Also confirm 3 capability pills below the welcome bubble: Plan, See, Find (in violet/pink/indigo)
- Tap "Plan my weekend in Williamsburg"
- Expect: AI responds with the neighborhood-vibe scripted scenario — rich Williamsburg intel, listing cards, transit info, follow-up chips
- Tap a follow-up chip and verify further scripted steps render
The "Snap a building" prompt card triggers the snap-building scenario. Scripted path renders nabe-data card with building score, tenant review summary, noise/safety, transit hint, and nearby listings. Works with or without API key.
What to walk →
- Open the AI drawer (Sparkles bubble)
- On the welcome screen, tap "Snap a building for Nabe intel"
- Expect: AI responds with a Nabe data card — building score (e.g. 87/100), tenant review summary, noise level, transit info (L train distance), and 2-3 nearby listing compact rows
- Tap any listing row — expect entity navigation to the listing detail drawer
- Return to AI drawer via re-open — confirm scroll position is preserved
The snap-apartment scenario fires when the user types a message containing "snap" + "apartment/interior/room" keywords OR attaches an image. Scripted path renders an agent-draft card with a full listing description.
What to walk →
- Open the AI drawer
- Type: "snap my apartment" or "photograph this room for a listing" and send
- Expect: AI responds with the snap-apartment scripted scenario — an agent-draft card with a full listing description (Williamsburg 2BR, exposed brick, hardwood floors, building amenities, agent-style commentary)
- Alternatively: tap the camera icon in the chat input, attach any photo, send — same scripted snap-apartment flow fires
- Confirm the agent-draft card shows the draft text, "Copy" + "Send" buttons, and a "Nabe" badge
A camera icon sits left of the chat textarea. Tapping it opens the OS file picker (rear camera on device). After selecting an image, a preview strip appears above the input showing the file type + name. An X dismisses it.
What to walk →
- Open the AI drawer and look at the chat input bar at the bottom
- Confirm a camera icon button appears to the LEFT of the text input (circular, neutral border)
- Tap the camera icon — confirm the OS file picker opens
- Select any image — confirm a preview strip appears above the input: shows file format badge (e.g. "JPEG") + file name + size
- Confirm an X button on the preview removes the attachment
- Attach a photo and send (no text needed) — confirm the send button activates when only an image is attached
Each listing card in the Listings tab has an "Ask AI about this" pill at the bottom. Tapping it opens the Nabe AI drawer with a preloaded message referencing the listing entity tag.
What to walk →
- Open the app and go to the Listings tab (via Explore or direct nav)
- Scroll to any listing card — confirm "Ask AI about this" pill appears at the very bottom of each card (violet gradient pill, Sparkles icon)
- Tap the pill (not the card itself) — confirm it does NOT open the listing detail drawer; instead the AI drawer opens
- Confirm the AI chat starts with a message like "Get the Nabe take on [listing reference]" — the concierge answers with Nabe data about that specific listing
- Verify the pill tap stops propagation: tapping the pill should NOT also open the listing drawer
Inside the listing detail drawer, an "Ask AI about this listing" pill sits just below the action buttons (Save, Share, Compare, Agent) and above the Proactive Nudges. Tapping opens the AI drawer with the listing ID preloaded.
What to walk →
- Open any listing detail (tap a listing card, or via Listings tab)
- Scroll past the photo carousel and action buttons row
- Confirm "Ask AI about this listing" pill appears (violet gradient, Sparkles icon, centered)
- Tap it — confirm AI drawer opens and starts a response about the listing
- Verify: listing detail drawer closes first, AI drawer opens (they don't stack)
Event-type feed posts now have an "Ask AI about this event" pill at the bottom of the event content block (below RSVP Going/Interested buttons). Tapping deep-links into the AI drawer with event title + venue preloaded.
What to walk →
- Open the Home feed (Feed tab)
- Scroll to find an event card (purple category badge like "Community" or "Music", calendar/location details, RSVP buttons)
- Confirm "Ask AI about this event" pill appears below the Going/Interested buttons
- Tap the pill — confirm AI drawer opens with event context ("Tell me about this event: [title] at [venue]")
- Confirm the tap stops propagation — does NOT also open the event/post detail
The Morning Briefing drawer now has two AI additions: (1) a small violet narrative bar at the top with a Sparkles icon and italic AI-voice copy tailored to the current neighborhood + time of day; (2) an "Ask Nabe AI for details" footer button that opens the AI concierge pre-loaded with a briefing context prompt.
What to walk →
- From the Home feed, tap the briefing split-bar (left half, "Morning Briefing" / "Today So Far" / "Evening Briefing" depending on time of day)
- Confirm the drawer opens with the Variant C gradient hero header
- Confirm a small AI narrative bar appears near the top — violet-to-pink gradient background, Sparkles icon, italic text in sky-800 referencing a neighborhood-specific event or forecast (e.g. for Williamsburg: "Jazz Night at Devocion + rain forecast tonight…")
- Scroll to the bottom of the drawer and confirm "Ask Nabe AI for details" footer button (violet tint, Sparkles icon, indigo-600 text, arrow →)
- Tap it — confirm it closes the briefing AND opens the AI drawer pre-loaded with "Give me the full briefing breakdown for today"
When a resident opens the AI drawer after the proactive notification fires (the notification dot on the AI bubble), the drawer shows 4 resident proactive cards: Rain Saturday, 2 events tonight, 2 new neighbors, trending neighborhood buzz. Each card has an action label that deep-links to a context-preloaded follow-up.
What to walk →
- Reset the chat (tap the rotate/reset icon in the AI header if a conversation is open)
- Switch to the Resident mode toggle in the AI header (if in Agent mode)
- If a red dot appears on the AI bubble, tap it to open the drawer — or just open a fresh drawer
- Confirm: "Here's what's happening in your neighborhood today:" introductory text + 4 proactive cards stacked below it
- Cards should be: "Rain Saturday — 3 indoor plans near you" | "2 events tonight you might like" | "2 new neighbors joined this week" | "Neighbors are buzzing about something"
- Tap the action label on any card (e.g. "Plan my weekend") — confirm the AI drawer responds with a context-aware message
Switching to Agent mode in the AI drawer triggers proactive agent cards ("Welcome back, Emma! Here are things that need your attention"). Cards include client follow-up, listing expiry, and meeting prep. Follow-up chips "Draft response for Sarah" and "Prep my next meeting" fire scripted scenarios.
What to walk →
- Open the AI drawer and reset the chat
- Switch the mode toggle to "Agent"
- Confirm: the drawer shows "Welcome back, Emma!" introductory text + a set of agent proactive cards (urgent client, listing expiry, meeting prep)
- Confirm follow-up chips appear below: "Draft response for Sarah" and "Prep my next meeting"
- Tap "Draft response for Sarah" — confirm scripted agent-draft scenario fires
- Switch back to Resident mode — confirm the cards change back to resident proactive context
The session preferences store seeds from the Intake context (budget, neighborhood interests, intent) and accumulates facts during the conversation. On a live API path, the system prompt includes these preferences so Claude can reference them. This is a session-memory (in-memory, not persisted), so context is per-drawer-open.
What to walk →
- Open the AI drawer (requires VITE_ANTHROPIC_API_KEY for live personalization)
- Send a message mentioning a preference: "I'm looking for a 2BR in Williamsburg, budget around $4K/mo"
- Then ask a follow-up: "What about the commute from there?"
- Expect: Claude's response references your prior mention of Williamsburg + $4K without you repeating it
- If no API key: the scripted fallback still runs (no personalization from Claude, but the welcome message adapts to Intake context if Intake was completed)
- To verify the preferences store feeds the system prompt: check the network request to the API — the system prompt should include neighborhood/budget hints if Intake was filled out
The AI welcome screen now shows: 4 resident prompt cards (Plan my weekend, Snap a building, Find 2BR, Budget explorer), 3 capability pills below the welcome bubble (Plan in violet, See in pink, Find in indigo), and a refreshed welcome message. Agent mode has 4 agent-specific prompt cards.
What to walk →
- Open the AI drawer (reset chat if needed)
- Confirm welcome bubble says "Hey! I can help you find apartments, plan your weekend, or snap a building for instant Nabe intel. What would you like to do?"
- Confirm 3 capability pills below the welcome text: "PLAN" (violet), "SEE" (pink), "FIND" (indigo)
- Confirm 4 prompt cards in a 2×2 grid: Plan my weekend in Williamsburg | Snap a building for Nabe intel | Find me a 2BR under $4K | What does $3,500/mo get me?
- Switch to Agent mode — confirm 4 different agent-specific prompt cards appear (Draft response, Prep meeting, Client follow-ups, New listings)
The CLAUDE_MODEL constant is now "claude-sonnet-4-6" (the old id "claude-sonnet-4-20250514" was deprecated and retires 2026-06-15). When no API key is set, the app falls back gracefully to scripted/mock responses — no crash, no blank bubble, no error message shown to the user.
What to walk →
- Graceful fallback (works without API key): Open AI drawer, type a free-form message like "What's the best brunch spot?", send it — expect a fallback response (scripted suggestion or mock text), NOT a blank/crashed state
- No error toast or broken UI should appear
- Scripted flows (prompt card taps) always work regardless of key
- Model upgrade (for founder curiosity): the automated test already verifies CLAUDE_MODEL === "claude-sonnet-4-6" — 471 tests green confirms this. No manual step needed unless you want to inspect src/services/aiService.ts line 25
Added post-build to close the Pillar-C "map area view" gap. On the map view a small Sparkles "Ask AI" pill sits near the bottom-center with the active neighborhood name; tapping it opens the AI drawer already asking what's happening there right now.
What to walk →
- Open the map view (any neighborhood)
- Find the "Ask AI" pill near the bottom-center, above the tab bar
- Tap it — confirm the AI drawer opens asking about that neighborhood right now
Your 2026-05-29 note: "the AI bubble to open it, and right above it an Ask the Nabe AI thing — why two?" Removed the redundant first-use tooltip pill. The bubble is the single global AI entry point; proactive nudges now show as the bubble's pulse + in-chat cards, not a second floating button.
What to walk →
- Open the Home feed
- Look at the bottom-right AI bubble
- Confirm there is no second "Ask The Nabe AI" pill floating above it
UAT Fix Pass 3 — every bug, one card each
You reported the top bar collapsing / falling below the notch on device. On desktop the header is unconditionally pinned (sticky, top 0) — confirmed live, no collapse state exists in the code. The notch behavior is iOS-only: viewport-fit=cover + safe-area padding shipped.
What to walk →
- Open the app on the iPhone
- Scroll the Home feed, open the map, open Messages, switch tabs
- Confirm the top bar stays pinned at the top in every section — never collapses or slides under the notch
You reported: selecting a filter chip collapsed the top bar and it stayed collapsed across other tabs until refresh. Driven live — no header-collapse state exists; tapping a chip then switching Home→Explore→Home keeps the header pinned (top 0, height 63).
What to walk →
- On Home, tap a filter chip (e.g. a category)
- Switch to Explore, then back to Home
- Confirm the top bar is still fully visible the whole time — no collapse that persists across tabs
You reported the top nav collapsing to only the red urgent banner when opening the map / toggling list↔map. Re-verified live: header stays pinned with the bottom nav present through the list↔map toggle.
What to walk →
- On Home, open the map
- Toggle between list and map a few times
- Confirm the full top bar stays pinned each time (not just the red urgent banner)
You reported the top header disappearing on a listing page. Re-verified live: opening a listing keeps the header pinned at the top.
What to walk →
- Open a listing (Listings tab → tap a listing, or a listing card in the feed)
- Confirm the top header is still present at the top of the listing
You reported the banner cutting into the battery/signal area and the logo clipped by the Dynamic Island. The header now pads for the safe-area inset and paints white up under the status bar — an iOS-only behavior.
What to walk →
- Open the app on a notch / Dynamic Island iPhone
- Confirm the 'Nabe' wordmark + skyline logo sit fully below the status bar — not clipped by the island
- Battery / signal indicators stay clearly visible above the banner
You reported pull-to-refresh leaving a blank gap with no spinner. There was actually no pull-to-refresh built at all — a new one was added: pulling past the threshold shows a spinning icon inside the feed, then resolves.
What to walk →
- On the Home feed at the very top, pull down
- Confirm a spinning refresh icon appears (inside the feed area, not a blank gap)
- Release → the spinner resolves and the feed returns to top
You asked to build 'tap the top to return to the top of the feed.' Tapping the header wordmark/logo now smooth-scrolls the active feed back to top (verified: scrollTop 600 → 0).
What to walk →
- On the Home feed, scroll down a few screens
- Tap the 'Nabe' wordmark / skyline logo at the very top
- Confirm the feed smooth-scrolls back to the top
You reported the spinner rendering above the locked top banner and dragging pulling the bottom bar past the fold. The gesture is now bound to the scroll container only (never the page body) and arms only at the top — an iOS-only behavior to confirm on device.
What to walk →
- On the iPhone Home feed, pull down at the top
- Confirm the spinner appears BELOW the locked top banner (not above/over it)
- Confirm the locked bottom tab bar does NOT get pulled past the fold while dragging
You reported intermittent whole-page scrolling (header + bottom bar moving) and sometimes being unable to scroll down. The scroll container now keeps overscroll contained — an iOS touch behavior to confirm on device.
What to walk →
- On the iPhone Home feed, scroll up and down briskly several times
- Confirm only the feed content moves — the top bar and bottom tab bar stay put
- Repeat a few times to confirm it's not intermittent
You reported the map filter-chip row and the AI FAB being cut off by the bottom nav. The page bottom padding + FAB lift now account for the safe-area inset (verified: FAB bottom clears nav top).
What to walk →
- On Home, open the map
- Confirm the filter-chip row above the bottom nav is fully visible (not cut off)
- Confirm the AI bubble (FAB) sits clear of the bottom tab bar
You flagged the bottom nav disappearing on a listing page. This is intended — the listing detail is a focused full-screen sheet with its own 'Message [agent]' CTA bar; the top header is still present. Confirm it reads as intentional, not broken.
What to walk →
- Open a listing
- Confirm the bottom tab bar is gone but the listing has its own action/Message bar at the bottom and the top header is still present
- Close the listing → the bottom tab bar returns
Found in a live hunt: the expanded 'Ask The Nabe AI' card could overlap content / intercept the Me-tab tap. Confirmed handled — the bubble container is click-through except the button, and opening it hands off to a drawer.
What to walk →
- Tap the AI bubble to expand it
- Confirm you can still tap the Me tab (the expanded card doesn't swallow the tap)
- Confirm the expanded chat doesn't sit on top of feed/profile action buttons
You reported the back arrow dumping you in Messages while X returned to the profile. Now, when Say Hi was opened from a profile, BOTH back and X return to that profile (verified live).
What to walk →
- Open a neighbor's profile (e.g. Marcus Rivera) → tap Say hi
- Tap the back arrow → confirm you land back on that profile (not the Messages inbox)
- Re-open Say hi → tap the X → confirm you again land back on that profile
You reported a sent Say Hi message showing then vanishing — reopening showed a blank thread. Sent messages now persist per-conversation (localStorage), so they survive close + reopen (verified live).
What to walk →
- Open a profile → Say hi → send a message (tap a chip like '👋 Wave hi' or type one)
- Confirm it appears in the thread
- Close the conversation, then reopen Say hi for the same person → confirm your message is still there
You reported a doubled drawer (two X's + handles, cut off at top) opening a neighbor from 'Meet new neighbors'. The browse drawer now closes before the profile opens, so it's a single clean drawer (verified live — was 2 drawers, now 1). Also fixed on Singles.
What to walk →
- Explore → Meet new neighbors → tap a neighbor
- Confirm exactly ONE drawer opens (one X, one handle) — not a doubled/stacked drawer cut off at the top
- Repeat from Singles → tap a single → confirm a single clean drawer
You asked to confirm Say-Hi messaging is consistent with the standard message-open pattern. It now routes through the same shared open path; the back/X behavior (D1) and single-drawer (D3) are the alignment.
What to walk →
- Open a profile → Say hi → note how it opens (elevated above the header, with back/X)
- Open a normal message thread elsewhere → confirm it opens the same way
- Confirm closing returns you correctly in both cases
Found in a live hunt: a button nested inside a button in the conversation list caused a React hydration error when opening Messages. The inner chip is now valid markup — verified live: 0 console errors (was 2).
What to walk →
- Open Messages
- Confirm conversation rows render normally and the entity chip inside a row is still tappable
- (No visible glitch — this confirms the underlying error is gone)
Found in screenshot 1: '💡 Local Tip → Category' rendered an empty 'Category' row when a post had no category. The row now only renders when there's an actual category.
What to walk →
- Open a post detail that is a tip / help post
- Confirm there is NO empty 'Category' label with nothing after it
- A tip that DOES have a category still shows it
You reported the author/developer-name bar sitting too close to the bottom edge. The action-bar bottom padding was increased so it has comfortable clearance.
What to walk →
- Open a post detail (ideally one with a broker/business 'Message [name]' CTA)
- Scroll to the bottom action / Message bar
- Confirm it isn't jammed against the very bottom edge of the screen
Decided autonomously while you were away (reversible): Chat and Discussion stay SEPARATE surfaces this pass — their bugs were fixed and a Discussion disclaimer was added. Merging the two is a structural redesign, and the disclaimer you ordered implies they stay distinct, so the merge is recommended for its own pass. Confirm you're happy keeping them separate for now.
What to walk →
- Open a development drawer → note the separate Chat and Discussion tabs (with the new disclaimer on Discussion)
- Confirm: keeping them as two distinct surfaces this pass is the right call
- If you'd rather merge them, that's its own redesign pass — flag it
You reported that adding a comment pulled the screen up / showed underneath, in both Chat and Discussion. The composer now uses the keyboard inset + safe-area with a fixed drawer height — an iOS keyboard behavior to confirm on device.
What to walk →
- On the iPhone, open a development drawer → Chat → tap the message bar
- Confirm the keyboard opens without pulling the whole screen up or showing empty space underneath
- Repeat on the Discussion tab
You reported the message bar zooming + distorting on tap, unable to unzoom, ending up stuck zoomed on the explore feed. This is iOS auto-zoom on small inputs — the composer now forces 16px on touch devices so iOS won't auto-zoom. Confirm on device.
What to walk →
- On the iPhone, open a development drawer → Discussion → tap the message bar
- Confirm the screen does NOT zoom in on focus
- Confirm you can type and dismiss the keyboard without getting stuck zoomed
You reported long-tap moderation doing nothing and not being able to scroll a long message. A 500ms touch long-press now opens the moderation sheet (iOS doesn't reliably fire the desktop right-click), and long messages render in full and scroll.
What to walk →
- Open a development drawer → Chat (or Discussion)
- Press and hold a message ~half a second → confirm a moderation sheet appears (Hide / Report / Block)
- Confirm a long message shows in full and the thread scrolls
You asked to add a Discussion disclaimer/info bar (you said 'add it, not a decision'). An info bar now sits at the top of Discussion explaining what it's for vs Chat.
What to walk →
- Open a development drawer → Discussion tab
- Confirm there's an info / disclaimer bar at the top explaining what Discussion is for (vs casual Chat)
You reported a Chat message also appearing in Discussion and vice-versa. Re-verified live: it was already correct — both directions show zero leak, and a regression test now locks it. Confirm it holds.
What to walk →
- Open a development drawer → Chat → post a test message
- Switch to Discussion → confirm your Chat message is NOT here
- Post in Discussion → switch to Chat → confirm that Discussion post is NOT here
You reported no way to cast sentiment ('1 neighbor weighed in — how?'). Re-verified live: the Bullish / Neutral / Concerned cast control is present and castable in Discussion. Confirm it holds.
What to walk →
- Open a development drawer → Discussion
- Find the sentiment bar ('N neighbors weighed in')
- Tap Bullish / Neutral / Concerned → confirm the bar + count update with your vote
You reported the drawer changing height on input blur and a Discussion message not persisting after Send. Re-verified live: a Discussion message survives Send + close + reopen, and the drawer height is fixed. Confirm it holds.
What to walk →
- Open a development drawer → Discussion → type a message → Send
- Confirm the drawer doesn't jump/resize when you tap away (blur)
- Close + reopen the drawer → confirm your Discussion message is still there
You reported the RSVP note Send button present but not clickable. A real bug was found (the gating compared the draft against itself, so Send never enabled) and fixed — now Send enables once you type, saves the note, and re-disables after.
What to walk →
- Calendar → open an event → RSVP Going
- Type a note in the 'Add a note' field → confirm the Send button becomes clickable
- Send → confirm a 'Note saved' confirmation and the note sticks
You reported the top briefing buttons (posts / events / new neighbors) showing a white popup that didn't navigate. Re-verified live: they navigate (events → calendar, new neighbors → Explore) — no dead popup. Confirm it holds.
What to walk →
- Open the morning briefing
- Tap the events stat → confirm it navigates (to the calendar)
- Tap the new-neighbors stat → confirm it navigates (to Explore) — no blank white popup
You reported a briefing event opening the Calendar instead of the event, and a community highlight just collapsing the briefing. Re-verified live: an event row opens that event's detail (with RSVP); highlights navigate. Confirm it holds.
What to walk →
- Open the morning briefing
- Tap an upcoming event → confirm it opens THAT event's detail (with 'Add to your calendar'), not the calendar list
- Tap a community highlight → confirm it navigates somewhere real (not just a dead collapse)
You reported everything in Nabe Pulse opening the profile. Re-verified live it was still broken (every row opened a profile), then fixed: each row now has a separate person tap (→ profile) and place tap (→ business). Verified: tapping 'Devocion' opens the Devocion business drawer.
What to walk →
- On Home, open the Nabe Pulse drawer (tap the pulse row)
- Tap a person (avatar / name) → confirm their PROFILE opens
- Tap the venue name → confirm the PLACE / business opens (not the profile)
You reported the home pulse showing only 1 of 4 people and missing the quick-reactions. Re-verified live: the home pulse right card already shows a 4-avatar stack ('4 live now') with inline wave / heart / celebrate. Confirm it holds.
What to walk →
- On the Home feed, find the Nabe Pulse row → look at the right card
- Confirm it shows several avatars + a 'live now' count (not just one person)
- Confirm inline quick-reactions (wave / heart / celebrate) are present on the pulse itself
You reported two different listing layouts (map vs tab). Re-verified live: a map property tap → 'View Full' opens the SAME listing detail the tab uses. Confirm it holds.
What to walk →
- Listings tab → open a listing → note the layout
- Go to the map → tap a property pin → 'View Full'
- Confirm it's the same listing layout as the tab version
You reported the Listings filter chip removed from the home feed. It's restored — a gradient 'Listings' chip leads the home filter row and routes to the Listings tab (verified live).
What to walk →
- On the Home feed, look at the filter-chip row
- Confirm a 'Listings' chip is present
- Tap it → confirm it routes to the Listings tab
You reported the heart filling with no confirmation, the heart clearing on reload, and 'saved' listings not having a home. Now: a confirmation shows, the heart persists on reopen, and saved listings live under Me → Saved listings (separate from saved posts).
What to walk →
- Open a listing → tap the heart / save
- Confirm a confirmation appears and the heart stays filled (reopen the listing → still saved)
- Go to Me → confirm a 'Saved listings' section holds it (separate from saved posts)
You asked for the alert to fire on any activity (new post, sold/rented), not only price changes. The save flow now reads 'price changes, sold/rented, or new posts' and the alert scope is locked by a test.
What to walk →
- Open a listing → save it / open the alert toggle
- Confirm the copy says it alerts on ANY activity (price changes, sold/rented, or new posts) — not price-only
You flagged 'where does the Ask Agent message go?' (screenshot 3). The inline Send keeps its in-place confirmation AND now offers 'View in messages' → opens a listing-scoped thread seeded with your exact question.
What to walk →
- Open a listing → find the agent 'Ask Agent' section → type a question → Send
- Confirm an inline 'question sent' confirmation
- Tap 'View in messages' → confirm a thread opens that references this listing and contains your question
You reported the listing's bottom message bar being too low / cut off. Safe-area padding shipped — an iOS-only behavior to confirm on device.
What to walk →
- On the iPhone, open a listing
- Confirm the 'Message [agent] about this listing' bottom bar isn't cut off and clears the home indicator
You reported listing messaging opening a plain message with no listing context. It now opens a thread carrying the listing reference — a 'Re: [address]' header + the listing card.
What to walk →
- Open a listing → 'Message [agent] about this listing'
- Confirm the thread shows a 'Re: [address]' header and a card for that specific listing (not a blank message)
You reported the honest-take panel not showing on the listing. It now renders on the listing (verified live). (The visual facelift of this panel is a separate future phase.)
What to walk →
- Open a listing
- Confirm a 'What they don't tell you' honest-take section is present
You asked for the honest-take panel to sit higher on the listing. It was raised from deep-after-Building-Insights to right after the Scores section.
What to walk →
- Open a listing → scroll down
- Confirm 'What they don't tell you' appears high up (right after the Scores), not buried near the bottom
You reported the Listings tab showing listings from all cities. The listing DATA was already scoped — the real leak was the matched-agent card hard-coding 'Williamsburg' on a non-WB city. Fixed so the agent card derives its area from the listing's own neighborhood (verified: Tokyo/LA show zero WB strings).
What to walk →
- Switch to a non-NYC city (e.g. Tokyo or LA) → Listings tab
- Confirm the listings AND the matched-agent card reference that city — no 'Williamsburg' text leaking in
You confirmed removing the 'live' buttons from all heatmaps. The on-map 'X live' badges were removed from all four city heatmaps (verified: 0 live badges on NYC/LA/Paris/Tokyo). Liveness now reads from the polygon color + tap popup.
What to walk →
- Open the heatmap (each city)
- Confirm there are NO 'X live' buttons/badges floating on the map
- Liveness still reads via the polygon color and the tap popup
You reported pinch-zooming a non-WB heatmap (e.g. LA) collapsing the heat and bouncing to the nabe selector (WB didn't). Couldn't reproduce on desktop (it's a pinch gesture); the fix stops the sheet from misreading the pinch as a drag-dismiss. Confirm on device.
What to walk →
- On the iPhone, open a non-WB heatmap (e.g. LA)
- Pinch-zoom the map
- Confirm it does NOT collapse the heat / bounce back to the nabe selector
You reported live dots rendering in the river instead of on the nabe. Removing the live badges (M1) removes this entirely — confirm none appear in the water.
What to walk →
- Open a coastal-nabe heatmap
- Confirm there are no live dots/badges floating in the river/water
Decided autonomously while you were away (reversible): the FIX is removing the live buttons + the pinch-collapse fix; the full live/writing-live look redesign is deferred to its own phase. Confirm you're happy deferring the redesign.
What to walk →
- Confirm: removing the live buttons now + fixing the collapse is the right scope for this pass
- Confirm: the bigger 'live look' redesign can wait for its own phase
You were promised ~3 ways to reach My Block and could find none. A clear 'My Block' card now sits on your own (Me) profile and opens the block detail (block chat, throwbacks, honest take, Time Machine); the map story-dot path remains a second way.
What to walk →
- Go to Me (your own profile)
- Find the 'My Block' card → tap it
- Confirm the block detail opens (chat / throwbacks / honest take / Time Machine)
You reported the Time Machine being buried. A real bug was found — it opened to 'Block not found' (a null id on close) so nobody could reach the slider. Fixed: it now opens with the 1996→2026 year slider.
What to walk →
- Open My Block (from the Me profile card)
- Open the Time Machine
- Confirm the 1996→2026 year slider appears with per-year businesses/permits/residents
You reported the 'Bridge moment' badge on a lone question with the answer nowhere. Re-verified it was still broken, then fixed: the question now renders with its longtime-neighbor answer attached as a tappable 'Answered by a longtime neighbor' affordance, and only the connected pair is badged (never a lone question). DECISION (reversible): this is a tap-to-expand affordance — if you'd prefer it always-expanded or a dedicated drawer, it's a one-component change.
What to walk →
- On the Home feed, find a post with the 'Bridge moment' badge
- Confirm it's a question that has an 'Answered by a longtime neighbor' affordance attached (not a lone badged question)
- Tap it → confirm the longtime-neighbor's answer reveals (author + tenure + text)
- Confirm: are you happy with tap-to-expand, or would you prefer always-expanded?
You reported archive posts being huge on the feed. The throwback image was changed to the standard feed-card banner ratio and the year badge shrunk.
What to walk →
- On the Home feed, find a 'From the archive' / throwback post
- Confirm it's the same compact size as other feed cards (not a giant full-screen photo)
You reported My Archive staying empty after posting a throwback. A real bug was found — a caption-less throwback bailed out before submitting. Fixed: throwbacks no longer require a caption, so posting one populates My Archive.
What to walk →
- Create a throwback post (a past year + photo, caption optional) → post it
- Go to Me → My Archive
- Confirm the throwback now appears there (not an empty archive)
You reported the feed 'History' chip and 'From the archive' being two disconnected things. Re-verified they were still separate, then unified: there's now a single 'From the archive' chip that surfaces both. (The map-level history merge is a separate phase.)
What to walk →
- On the Home feed, look at the filter chips
- Confirm there is ONE 'From the archive' chip (not a separate 'History' chip too)
- Tap it → confirm it surfaces both history and throwback posts together
You reported the Places map text showing just a street + nabe. It now leads with the venue name (street drops to a sublabel) and still links to the post.
What to walk →
- Open a place (Places history / a venue with a map)
- Confirm the text under the map leads with the venue name (not just a street + nabe)
- Confirm the 'Open post →' link still works
You reported the permits feed not being clickable / not rich. Re-verified live: tapping a permit row opens the parent development drawer. Confirm it holds.
What to walk →
- Explore → open the Permits feed
- Tap a permit row
- Confirm it opens the related development
You reported the community-submit address being plain text and a submitted coming-soon biz not appearing. The coming-soon biz submit now uses the post address-picker, and a submitted biz appears in the coming-soon section (verified live with Domino Park).
What to walk →
- Find the community / coming-soon biz submit
- Confirm the address uses a map address-picker (not a plain text box)
- Submit a coming-soon biz → confirm it appears in the coming-soon section
You reported a builder's 'post update' button not being tied to an actual development. It now shows the target development name ('Posting to [name]' + an 'Update for: [name]' chip).
What to walk →
- Open a claimed builder profile → tap 'post update' on a development
- Confirm it clearly names which development the update is for
You reported permits leaking across nabes and the feed being too long. Re-verified live: WB shows WB-only permits, LA shows LA-only — no cross-nabe leak (locked by a test). Confirm it holds.
What to walk →
- Set the nabe to Williamsburg → open the Permits feed → note the permits
- Switch to another nabe (e.g. LA)
- Confirm the permit list changes to that nabe's permits, not a mixed all-nabe list
You reported the claim-builder developments being too big (one big column). They now lay out 2-per-line like the public builder profile.
What to walk →
- Claim a builder profile → open the builder dashboard
- Find Active developments
- Confirm they're laid out 2-per-line (not one giant column)
You reported the builder profile having no header/banner. Re-verified live: the builder dashboard has a gradient header (greeting + verified badge + stats). Confirm it holds.
What to walk →
- Open a claimed builder profile / dashboard
- Confirm there's a header/banner with name, verified badge, and stats (like the user profile)
You reported an owner opening their own development seeing the public view. Re-verified live: the owner dashboard is distinct (leasing signals + permit counts / post-update). Confirm it holds.
What to walk →
- As a claimed builder, open your own development
- Confirm you see owner-specific tools (edit / post update / leasing signals), not just the public view
You reported the claim-builder drawer opening at the wrong height / messy. Re-verified live: the claim drawer opens at a fixed ~70vh (measured 591px on an 844px screen) — not near-fullscreen. Confirm it holds.
What to walk →
- Start the builder claim flow (open a development → Claim this profile)
- Confirm the claim drawer opens at a sensible height (not jammed to the top / messy)
You kept getting stuck as a developer/builder with no way out — Reset Demo was a tiny gray link bottom-right that blended into the map. It's now a clear pill bottom-LEFT (so it doesn't collide with the AI FAB); when you're in a non-resident role it turns amber and reads 'Exit demo role'.
What to walk →
- From any tab, look for the Reset Demo pill (bottom-left)
- Claim a builder/agent role → confirm the pill turns amber and reads 'Exit demo role'
- Tap it → confirm it clears the demo state (back to resident / onboarding)
You asked to remove all video posts for now (the Ana Reyes video was huge / didn't fit). Every video post now renders as a plain photo (no play button / duration badge) — verified: zero video badges across many feed screens. (It's flagged to reconsider later.)
What to walk →
- Scroll the Home feed for several screens
- Confirm there are no video play-buttons / duration badges — former video posts show as plain photos
You reported a Jenna Park family post opening Daniel Okonkwo's profile. Re-verified live: it opens Jenna Park's profile (id fix from Phase 51 held, locked by a test). Confirm it holds.
What to walk →
- On the feed, find a post by Jenna Park → tap her name
- Confirm it opens Jenna Park's profile (not Daniel Okonkwo's)
You reported tapping 'Priya' opening Jenna's profile and many singles in other cities → 'user not found'. Re-verified: all singles + neighbors resolve to their own profiles (both 'Priya' singles resolve correctly). Confirm it holds.
What to walk →
- Switch to another city → Singles / Meet neighbors → tap a person (e.g. a 'Priya')
- Confirm their own profile opens — no 'user not found'
You reported the 'Priya joined your block' notification → 'user not found'. Fixed — and the new test caught two MORE orphaned newcomer notifications (Jamie Torres, David Park) which were also fixed.
What to walk →
- Open the notifications drawer
- Tap a 'joined your block / neighborhood' notification (e.g. Priya)
- Confirm it opens a real newcomer profile — no 'user not found'
Confirmed already fixed: WB seasonal content (cherry blossoms, Domino Park) no longer leaks into LA/Austin/Paris/Tokyo. Only the explicitly-labeled 'Explore Other Neighborhoods → Williamsburg' carousel shows WB (intended). Just spot-check it holds.
What to walk →
- Switch to a non-WB city → Explore / things-to-do
- Confirm no Williamsburg-specific seasonal items leak in (cherry blossoms, Domino Park, Smorgasburg)
Found this session: seasonal guide cards fired a native OS alert ('peak bloom this week') instead of an in-app sheet. Replaced both with a styled in-app bottom sheet.
What to walk →
- Explore → tap a seasonal guide card
- Confirm it opens an in-app sheet (gradient header, drag handle, 'Got it') — NOT a plain native OS popup
Confirmed already fixed: 'Meet new neighbors' is present in all cities (city-agnostic, opt-in-gated; Austin shows both Singles + Neighbors). Just spot-check it holds.
What to walk →
- Switch to a non-WB city → Explore
- Confirm 'Meet new neighbors' is available (not WB-only)
You reported the Vault community threads leaking WB content cross-city (LA Vault showed 'Best coffee in Williamsburg', 'Greenpoint'). Fixed — threads are now scoped to the active city (a review-pass also fixed user-created threads being stamped WB). Verified: LA + Tokyo show zero NYC threads.
What to walk →
- Switch to a non-NYC city (e.g. LA or Tokyo) → Vault → Community Threads
- Confirm there are no Williamsburg / Greenpoint / Brooklyn threads leaking in
- (WB itself still shows its own NYC threads)
You reported Settings buried at the bottom of the notifications list. It's now a top-level Inbox / Settings tab.
What to walk →
- Open the notifications drawer
- Confirm there are Inbox and Settings tabs at the top
- Tap Settings → confirm the settings open as a tab (not buried at the bottom of the posts)
You reported the drawer resizing when you tapped a pill with less content (e.g. 'Block'). The drawer height is now constant (measured 743px in both All and Block views).
What to walk →
- Open the notifications drawer
- Tap different filter pills (All, Block, etc.)
- Confirm the drawer height does NOT shrink/grow when the content count changes
You reported X-ing a notification closing all the way to Home. Now the per-notification X dismisses only that one and keeps the drawer open.
What to walk →
- Open the notifications drawer
- Tap the X on a single notification
- Confirm just that notification is removed and the drawer stays open (you don't get kicked to Home)
You reported 'Preview this week's digest' doing nothing. It now opens the email-digest preview ('This week in [nabe] — N highlights').
What to walk →
- Open the notifications drawer → Settings tab
- Tap 'Preview this week's digest'
- Confirm a digest preview opens
You reported it reading 'on'. Re-verified: the visible string already reads 'in [nabe]' (only stale code comments said 'on', now corrected). Just confirm.
What to walk →
- Find a 'What's coming in [nabe]' header (developments/coming-soon)
- Confirm it reads 'in [nabe]', not 'on [nabe]'
You reported the city pill 'saved' section showing nothing. Confirmed: it shows a proper 'No saved nabes yet' empty state with explanatory copy. (The 'Add a nabe' button stays routed to the post-pitch saved-nabes backlog.)
What to walk →
- Tap the city pill (top-right) → look at the saved nabes section
- Confirm a clear 'No saved nabes yet' empty state (not a blank gap)
You reported the mock push toast tap doing nothing. Confirmed it's already wired to open the target via the notification deeplink. DECISION (reversible): tapping the toast opens the notification's entity / feed — a sensible default.
What to walk →
- Trigger a mock push toast (it appears on the demo flow)
- Tap it → confirm it opens the relevant target (the related development / post)
- Confirm: opening the target on tap is the behavior you want
You asked to rename 'Families with kids' to 'Families'. Done.
What to walk →
- Open the neighbor filter chips (Meet neighbors / Explore)
- Confirm the chip reads 'Families' (not 'Families with kids')
You reported the intro pages not fitting (button past the fold; iPad too big). Rebuilt as flex columns so the CTA is always visible and the interests grid scrolls internally. Verified above-the-fold at iPhone + iPad widths — but real iOS safe-area must be confirmed on device.
What to walk →
- On the iPhone / iPad, trigger onboarding (reset the demo, or a fresh tab)
- On the welcome screen, confirm the CTA button is fully visible without scrolling
- Step to Pick interests → confirm 'Show me my Nabe' is visible; the chips scroll inside their own area
You reported 'skip intro' producing the identical flow. Now 'skip intro' completes onboarding immediately with sensible defaults (WB + resident) and drops you into the app — distinct from the full nabe → interests → welcome flow.
What to walk →
- Trigger onboarding
- Tap 'Skip intro' → confirm it drops you straight into the app (defaults applied)
- Re-trigger → take the full path → confirm it walks the nabe picker → interests → welcome (genuinely different from skip)
Found this session: another user's profile (e.g. Marcus Rivera) showed the self-only empty-archive CTA ('no archives yet, tap Create…'). The empty-archive CTA was already gated; the actual leak was the self-framed 'Your Nabe Cards' section — now gated to your own profile only.
What to walk →
- Open another user's profile (e.g. Marcus Rivera)
- Confirm it does NOT show 'no archives yet, tap + Create to share'
- Confirm it does NOT show a self-framed 'Your Nabe Cards' section
Found this session: a nabe card opened inside a profile was too big with no X. Re-verified live: the nabe-card preview has a Close X and fits the viewport (~523px in an 844px screen). With MN1's gate, other-user profiles no longer surface these at all. Confirm.
What to walk →
- Open a nabe card (from your own profile's Nabe Cards)
- Confirm it fits the screen and has an X to close
You reported Day-4 'Try a rec' opening the top of Explore instead of a recommendation. A real bug was found (the scroll fired before Explore mounted). Fixed — it now reliably lands ON Local Discovery (Peter Luger, Devocion, etc.).
What to walk →
- On Day-4 of the demo flow, tap 'Try a recommendation'
- Confirm it lands on the Local Discovery recs (actual recommendations) — not the top of the Explore tab
Found in a live hunt: the profile bio over-Italianized ('Italian American, 5th gen' + 'Italian Food' tag). Trimmed per your sensitivity flag — bio now ends 'always down for a good slice'; the tag is 'Local Food'.
What to walk →
- Open your own (Me) profile → read the bio + expertise tags
- Confirm it no longer says 'Italian American, 5th gen' and the tag reads 'Local Food' (not 'Italian Food')
Found in live-hunt notes: the NYC neighborhood-boundary fetch logged a red 'TypeError: Failed to fetch' on first load (the static fallback works fine). It's now a single quiet info log; real errors still surface. Low priority — confirm nothing looks broken.
What to walk →
- Open the app fresh → open the NYC heatmap / map
- Confirm the map / boundaries render normally (the underlying fetch warning is now silenced; nothing user-visible should be broken)
UAT Fix Pass 2 — your post-P51 bug reports
Your report: scrolling pulled the whole page + header + bottom bar up/down (intermittently) instead of the feed, and pull-to-refresh sat above the locked top bar and shoved the bottom bar past the fold. The feed is now the single scroll container with overscroll contained and the page body locked.
What to walk →
- On the Home feed, scroll up and down briskly several times
- Confirm the top banner stays put and the bottom tab bar stays put — only the feed content moves
- Try the same a few times to confirm it's not intermittent anymore
- Pull down hard at the very top — the page should not rubber-band the whole UI or push the bottom bar past the fold
Your report: the locked top banner cut into the battery/signal area and the logo was clipped by the iPhone island. The header now pads for the safe-area inset and centers the logo below it.
What to walk →
- Open the app on an iPhone with a notch or Dynamic Island
- Confirm the "Nabe" wordmark + skyline logo sit fully below the status bar — not clipped by the island
- The battery/signal indicators stay clearly visible above the banner
Your report: the intro pages didn't fit on iPad and the bottom button was past the fold. Each step now fits the viewport with the CTA always visible; the interests grid scrolls internally rather than pushing the button down.
What to walk →
- Trigger onboarding (clear the app data / "reset intro" if available, or open in a fresh tab)
- On the welcome screen, confirm the "Let's go" button is fully visible without scrolling
- Step to Pick interests — confirm the "Show me my Nabe" button is visible; the chips scroll inside their own area if there are many
- No step should require scrolling the whole page to reach its button
Your report: no way to comment on a post, and the like/bookmark row sat too close to the bottom edge. There's now a comment composer; the action bar has safe-area padding.
What to walk →
- On the Home feed, tap a post to open its detail
- Scroll to the comments — confirm there's a text field + Send at the bottom (not just a "be the first" dead end)
- Type a comment, press Send (or Enter) → it appears immediately in the list
- Confirm the like / bookmark / share row isn't jammed against the very bottom edge
Your report had four parts: discussion input sat mid-screen (chat was at bottom), typed messages didn't persist after Send, typing broke the UI / changed drawer height, and the sentiment bar couldn't be cast. All four addressed.
What to walk →
- Open a development drawer → Discussion tab
- Confirm the input bar is at the bottom (same as the Chat tab)
- Type a message → Send → confirm it appears and stays (re-open the drawer; it should still be there)
- Find the sentiment bar ("N neighbors weighed in") → tap bullish / neutral / concerned → confirm the bar + count update with your vote
- Tap the input to bring up the keyboard → confirm the drawer doesn't jump/resize; dismiss → it restores
Your report: after RSVPing "Going" you typed a comment but there was no Send button, so it just sat there. There's now a Send action + a "Note saved" confirmation.
What to walk →
- Calendar → open an event → RSVP Going
- Type a note in the "Add a note" field → confirm a Send button appears (or press Enter)
- Send → confirm a "Note saved" confirmation and the note sticks
Your report: tapping an event in the briefing opened the calendar (not the event), and tapping a community highlight just collapsed the briefing and did nothing. Events now open their own detail; highlights navigate to the relevant business / meetup / event.
What to walk →
- Open the morning briefing (the briefing card / banner on the feed)
- Tap an upcoming event → confirm it opens that event's detail (with RSVP), not the calendar list
- Tap a community highlight → confirm it navigates somewhere real (e.g. the business, a meetup, or the calendar) — not a dead collapse
Your report: permits were leaking across nabes (showing every nabe's permits). The permit feed now filters to the active neighborhood.
What to walk →
- Set your nabe to Williamsburg → Explore → open the Permits feed
- Confirm the permits shown belong to Williamsburg
- Switch to Greenpoint (or another nabe) → confirm the permit list changes to that nabe's permits, not a mixed list
Your report: Explore kept showing "cherry blossoms" and other Williamsburg things-to-do even in different nabes. The seasonal + trending sections no longer default to Williamsburg — a non-WB nabe shows generic / its-own content.
What to walk →
- Switch to a non-Williamsburg nabe (Greenpoint, East Village, or another city)
- Open Explore → scroll the seasonal / "things to do" / trending sections
- Confirm you do NOT see Williamsburg-specific items (Cherry Blossoms in Domino Park, Smorgasburg, East River Greenway)
Your report: in the claimed-builder profile, active developments were plain one-line text you couldn't click. They're now rich cards (cover photo, status) that open each development — with a little deeper owner detail.
What to walk →
- Claim a builder profile (the builder claim flow) → open the builder dashboard / profile
- Find Active developments → confirm they're rich cards (image + status), not one-line text
- Tap a card → confirm it opens that development
- Confirm the claim drawer opened at a sensible height with a confirmation (not jammed to the top / messy)
These chips were removed in P51 because they were empty. They're back, each backed by real seeded content so a tap is never empty — including on the map (a tag-mismatch bug that would have left Families empty was caught and fixed).
What to walk →
- On the map filter chips, tap Singles → confirm pins show (not an empty map)
- Tap Meet Neighbors → confirm pins show
- Tap Families → confirm pins show (this is the one that was at risk)
- Switch nabes and repeat — each chip should surface ≥1 item in each active NYC nabe
Your report: the Pulse right card showed only one person even though tapping in revealed ~4, and quick reactions weren't on the pulse itself. It now surfaces up to 4 avatars with inline Wave / Love / Celebrate reactions.
What to walk →
- On the Home feed, find the Nabe Pulse row → look at the right card
- Confirm it shows several avatars + a "{N} live now" line (not just one person)
- Tap a quick reaction (Wave / Love / Celebrate) right on the pulse → it registers
Your report: tapping "Ask Agent" opened an agent page with no way to ask — it should have a text field. There's now an inline composer (type a question + Send) right in the listing, with the full conversation as a secondary link.
What to walk →
- Open a listing → find the agent's take / "Ask Agent" section
- Confirm there's an inline text field + Send to type a question
- Type a question → Send → confirm a "question sent" confirmation
You re-reported these after P51; driving the live app confirmed these 4 are genuinely working (Say Hi was the exception — it really was broken and is fixed in card 52-15). Quick confirm on this snapshot:
What to walk →
- Other-user archive: open another user's profile (e.g. Marcus Rivera) → confirm it does NOT say "no archived yet, tap + Create to share" (that's self-only)
- Nabe card size: tap a nabe card in a profile → it fits the screen and has an X to close
- Listings city filter: Listings tab shows the active nabe's listings (not all cities) when a nabe is selected
- Vault collections: switch to a non-Williamsburg city → Vault still shows the topic collections (not an empty screen), with city-specific featured guides
You were right: on :5173 the Say Hi conversation had no X to close it and the suggestion chips were dark-on-dark (only the 👋 showed). The conversation now opens above the app header with its own back/X, and the chips are readable. Verified end-to-end in a real browser (iPhone + iPad).
What to walk →
- Open a neighbor's profile (e.g. Marcus Rivera) → tap Say hi
- Confirm the conversation has a visible X (and back arrow) at the top to close it — and the Nabe app header is NOT sitting on top of it
- Confirm the 3 suggestion chips ("👋 Wave hi", "Coffee this week?", "New to the area") are readable (dark text on light violet) — not dark-on-dark
- Tap a chip → it sends that message; also try typing in the box → it accepts text
- Tap the X → you return to the feed (not stuck, not a stale profile)
UAT Fix Pass — Phases 44–50
Opening a drawer and switching between its Overview / Chat / Discussion tabs should not change the drawer's size — the sheet stays at a fixed height, with content scrolling inside it.
What to walk →
- Open a development drawer (tap any hard-hat pin or a card in Explore → Coming)
- Switch between Overview, Chat, and Discussion tabs
- Confirm the drawer does NOT resize or jump — footprint stays constant
- Chat and Discussion content should scroll inside a panel under a pinned hero, not resize the whole sheet
- Repeat for a building drawer and a business drawer
When you tap the chat input field inside a drawer, the keyboard should open without hiding the close button (X) or the drawer's hero area. Dismissing the keyboard should restore the full sheet. Best tested on iPhone.
What to walk →
- Open any drawer with a Chat tab (e.g. a development) → tap Chat
- Tap the chat input field at the bottom → keyboard opens
- Confirm the gradient hero and its X (close) button are still visible and tappable above the keyboard
- Type a few characters — input should be responsive (no dead / frozen input)
- Dismiss the keyboard (tap outside or swipe down) → full sheet restores to its original height
A message posted in Chat should only appear in Chat, not in Discussion — and vice-versa. Seeded Discussion content (civic threads, upvoted posts) should still show up in Discussion.
What to walk →
- Open a development drawer → tap Chat → post a test message (e.g. "test chat")
- Tap Discussion → confirm your "test chat" message does NOT appear here
- Confirm Discussion shows structured civic content (upvoted threads, concerns) — not empty
- Post in Discussion → switch to Chat → confirm that Discussion post is absent from Chat
This was blocked in Phase 50 UAT because the drawer keyboard bug made the chat unusable. Now that the drawer is fixed, re-test: long-press any chat message to get the moderation sheet.
What to walk →
- Open a drawer (development, building, or business) → tap Chat
- Press and hold a message until the moderation sheet appears
- Tap Hide → the message disappears from the thread
- Tap Report and Block user on other messages — confirm they show a confirmation (no error)
Previously blocked by the drawer bug. A development's Discussion tab should show structured civic content (CB1 threads, upvotes, "concerned" signals) — not the casual Chat messages.
What to walk →
- Open a development drawer (e.g. tap "Berry St Workforce Housing" in Explore → Coming)
- Tap Discussion → confirm civic content: permit filings, CB1 meeting threads, shadow analysis, upvoted concerns
- Confirm the sentiment bar (Positive / Neutral / Concerned) appears in Discussion
- Tap Chat → confirm the civic Discussion posts are NOT visible here
Previously blocked. Tap the follow/bell button on a development or block to subscribe — the button should fill (active state) and tapping again unfollows.
What to walk →
- Open a development drawer → find the follow / bell button (in the header area or Overview tab)
- Tap it → it fills / shows "Following" state
- Tap again → reverts to unfollowed state
- Repeat on a block drawer (reach via Calendar → "My block" or map drill-in)
Previously blocked. Open a business (restaurant or shop) and confirm the Chat tab shows an honest-take / neighbor-chat panel you can post in.
What to walk →
- Tap Explore → Businesses → tap any business card to open its drawer
- Tap Chat → neighbor-chat / honest-take panel visible
- Post a message → it appears in the thread
- Switch to Discussion → confirm your Chat message is NOT here
Previously blocked. Open a building, post in its Chat tab, and verify the post does not bleed into the Discussion tab.
What to walk →
- Open any building (tap a building pin on the map, or find one via Explore)
- Tap Chat → post a casual message
- Tap Discussion → confirm your Chat message is absent; Discussion shows maintenance/review threads
The Nabe wordmark + logo + bell in the top nav should remain visible at all times: with the map open, in messages, on Explore, scrolling the home feed, and with any drawer open. On iPhone it should also clear the Dynamic Island / notch.
What to walk →
- On the Home feed, scroll down fast — confirm the top nav (wordmark, skyline logo, bell) stays pinned and visible
- Open the Home map — confirm nav still visible above the map
- Tap Explore — confirm nav visible
- Tap Messages — confirm nav visible above the conversation thread
- Open any drawer — confirm nav is not covered by the drawer overlay
- (iPhone) Confirm the nav doesn't sit behind the Dynamic Island / status bar — it should clear the notch area
Two previously separate history surfaces (throwback photos + neighborhood memory archive) are now merged into one History layer on the map, with exactly one History control.
What to walk →
- Open the Home map — find the layer row at the top: Now / Coming / History
- Tap History → the map should show dots for both throwback photos AND neighborhood memory entries (amber pins with a clock icon)
- Confirm there is only ONE "History" control — no second separate archive toggle anywhere on the map
- Tap a history pin → popup opens showing a preview of the archived content
Three layer/archive behaviors fixed together: story dots on the Now map are visually distinct (indigo camera pins), developments/permits appear under both Now and History layers, and posting a throwback actually fills your "My archive" tab in your profile.
What to walk →
- On the Home map → Now layer → look for indigo pins with a camera icon — those are story dots
- Tap a story dot → popup opens (confirm it's distinct from other pin types)
- Switch to Coming layer → development hard-hat pins and permit pins should be visible
- Switch to History → development and permit pins should also appear here (completed/historical ones)
- Tap + (create) → find the Throwback / archive option → pick a year + add a caption → post
- Go to Profile (Me tab) → My archive tab → your throwback should appear
The Explore tab's map view was previously showing reduced content (no stories, hotspots, or listings). It should now show the same full set of pins + filter chips as the Home feed map.
What to walk →
- Tap Explore → tap the Map button (top-right of the Explore header)
- Confirm the Explore map shows pins: stories (indigo camera), developments (hard-hat), businesses, listings — same variety as the Home map
- Find the filter chips row — confirm it includes chips like Singles, Meet Neighbors, Families, Listings (newly added in Phase 51)
- Tap any chip → map should filter to that content type (it should NOT go blank/empty)
- Tap the same chip again to deselect — map restores
Tapping a listing pin on the map used to open a deprecated simpler view. It should now open the same full listing detail (nabe-score breakdown, commute, reviews, work-done section) as tapping a card in the Listings tab.
What to walk →
- On the Home map (Now layer) → find a listing pin (house icon) and tap it to open the listing
- Scroll down: confirm you see a nabe-score breakdown, a commute section, at least 2 reviews + "view all" link, and a "work done near here" section near the bottom
- Close it, then go to the Listings tab → open the same listing from there
- Confirm both views look identical in layout and section order
In LA, Tokyo, Paris, and Austin: tapping a Singles or Neighbors card should open a real profile (not a "User not found" error). No Williamsburg landmarks (Domino Park, East River Greenway) should bleed into these cities. Every city should have a "meet new neighbors" section in Explore.
What to walk →
- Switch city to LA → Explore → Singles → tap any profile card → a real profile opens (name matches the card)
- In LA Explore → look at the seasonal guides / highlights section — confirm no WB landmarks ("peak bloom at Domino Park", "East River Greenway run")
- In LA Explore → confirm a "Meet new neighbors" section exists with at least one person card
- Repeat for Tokyo, Paris, and Austin — check: no 404, no WB landmarks, neighbors section present
Non-Williamsburg cities (LA, Tokyo, Paris, Austin) should see a "coming soon in your area" placeholder in the Vault, not WB-authored topic-collections. Williamsburg, Greenpoint, and East Village still see their full Vault.
What to walk →
- Switch to LA → tap Vault tab → confirm you see a placeholder message (e.g. "Neighborhood guides and collections coming soon for your area.") — NOT WB topic-collections
- Switch to Tokyo and Paris — same: placeholder, no WB content
- Switch back to Williamsburg → Vault shows the full collection of WB guides and topic threads as before
A mock push notification slides in from the top during a session. Tapping it should navigate to the linked item (a development or post) — not just dismiss the toast.
What to walk →
- Open the app on Williamsburg and leave it on the Home feed
- Wait ~30 seconds — a push notification toast slides in from the top of the screen
- Tap the toast (don't let it auto-dismiss) → it should open the linked development or post directly
- If it auto-dismissed: wait for the second toast at ~90 seconds and tap that one
The new-member onboarding guide (the "Day 1–7" nurturing cards on the Home feed) previously showed a Developments tile on Day 4 that felt out of place. It should be gone — Day 4 is now a single "Try a rec" tile.
What to walk →
- If you need to see Day 4: tap Reset Demo (visible on any tab in the top-right area of the header) to reset the onboarding state
- On the Home feed, find the "Your first week in the nabe" guide card
- Advance to Day 4 — confirm it shows only a single tile ("Try a rec" or similar) with NO "See Developments" / "What's coming on your block" secondary tile
Bridge-moment posts (old-timer↔newcomer pairs) were previously buried past the feed's "caught up" divider. They've been moved to the top of the post list so they appear within the first visible cards.
What to walk →
- On the Williamsburg Home feed, scroll through the first 10–15 posts without going below the "You're all caught up" divider
- Confirm you see at least one post with a "from a longtime neighbor" gradient pill or a bridge-moment badge on the author card
- Look for a newcomer-question + old-timer-answer pair — both should have a bridge badge
"Reset Demo" is now visible on every tab (not just the Me tab) and clears all persona state: if you're stuck as a developer or agent, one tap returns you to the resident default and clears onboarding.
What to walk →
- Confirm "Reset Demo" is reachable from the Home tab (look for it in the top-right header area or a menu)
- If currently in resident view: tap "Reset Demo" → app stays in resident view with onboarding cleared
- To test the developer-persona reset: use the Builder Claim flow (48-B above) to enter developer mode, then tap "Reset Demo" from ANY tab → app should return to resident view and show the normal onboarding intro
The Morning Briefing drawer previously had placeholder alert() popups on every button. All 13 actions are now wired: events go to Calendar, new-neighbors goes to Explore, posts close the drawer to reveal the feed.
What to walk →
- On the Home feed, find the Morning Briefing card and tap it to open the drawer
- Tap the Posts stat button (e.g. "14 posts") → no popup appears; drawer closes and feed is visible
- Reopen Morning Briefing → tap Events stat → drawer closes and Calendar tab opens
- Reopen → tap New neighbors stat → drawer closes and Explore tab opens
- Tap any event row → drawer closes + Calendar opens
- Confirm NO JavaScript
alert()dialog pops up at any point
A data-reference bug caused Jenna Park's feed posts to resolve to Daniel Okonkwo's profile when tapped. Fixed: tapping any Jenna Park post now opens Jenna Park's profile.
What to walk →
- On the Williamsburg Home feed, scroll to find a post authored by Jenna Park
- Tap her name or avatar → a profile drawer opens
- Confirm the profile shows Jenna Park — not Daniel Okonkwo or any other person
- Look for her posts: family playdates, family tip, family bike ride — these should all correctly resolve to Jenna Park
A leftover copy error had the Explore tab banner showing "Discover" as the heading. It's now been corrected to "Explore."
What to walk →
- Tap the Explore tab
- Look at the large heading in the purple gradient banner at the top
- Confirm it reads "Explore" — not "Discover"
Five small iPhone-specific fixes: Vault tile now reads "in {nabe}" (not "on"), video thumbnails match standard post size, header clears the Dynamic Island, pull-to-refresh sits above the locked nav banner, and the bottom tab bar is stable (no jank).
What to walk →
- On iPhone: tap Vault → find the "What's coming…" tile → confirm it reads "What's coming in Williamsburg" (not "on Williamsburg")
- On the Home feed, find a post with a video play-button overlay — confirm the video thumbnail is the same size as standard post images (not oversized)
- On iPhone: confirm the top nav (wordmark + logo + bell) sits below the Dynamic Island / status bar — not behind it
- Pull down to refresh on the Home feed — confirm the pull-to-refresh animation appears below the locked top nav (not hidden behind it)
- Scroll up fast and down fast — confirm the bottom tab bar doesn't jitter or disappear briefly
Non-NYC heatmaps previously showed a live-activity badge on almost every neighborhood, making the map look noisy. Now only genuinely active neighborhoods (liveness score ≥ 0.5) show a live count badge — quieter nabes show the colored shape without a badge.
What to walk →
- Switch city to LA → tap the city pill → "Browse all LA" → full-screen heatmap opens
- Compare to before: confirm NOT every neighborhood has a live-count badge floating over it — only the more active ones do
- Repeat for Tokyo and Paris — same expectation: fewer badges, less visual clutter
- Switch to NYC (Williamsburg) heatmap → confirm NYC's active nabes (Williamsburg, Greenpoint, East Village) still show their live counts
Place + Time + Community
:5173 dev server). Every "Open the app" button here points to :5174.
The map has a time toggle: Now = today's posts + stories, Coming = developments + permits, History = old throwback photos as dots.
What to walk →
- Open the map (Explore → map, or the Map button)
- Find the layer chips at the top: Now / Coming / History
- Tap Coming → only construction + permit pins show
- Tap History → old/faded photo dots appear
- Tap Now → back to live posts + stories
- Red flag: the chip rows crowd the map or don't fit vertically on iPad
Each place with stories shows one dot (not a cluster). Tapping it opens a popup with Now (last 24h) and All-time tabs.
What to walk →
- On the map (Now layer), find a story dot
- Tap it → a story popup opens
- Toggle between the Now and All-time tabs
- Confirm one place = one dot (no duplicate dots stacked on the same spot)
From a block's story dot you can jump into that block's full page — the 3rd way to reach a block. This was a gap I just closed, so worth a real check.
What to walk →
- Switch city to Williamsburg
- On the map, find the Bedford Ave story dot
- Tap it → popup → tap "View block details"
- The block page opens (timeline, chat, etc.)
A block now has its own page: a 30-day timeline, stories, neighbor chat, honest take, and throwbacks. Reachable from the Calendar "My block" toggle too.
What to walk →
- Calendar tab → find the "My block" toggle → tap it
- (Or reach a block via the map drill-in, 50-C)
- Scroll: Timeline (last 30 days) → Stories → Neighbor chat → Honest take → Throwbacks
- Confirm each section has content (not empty or broken)
A year slider lets you travel a block back through time.
What to walk →
- Open a block (50-C or 50-D)
- Tap the "Time Machine" button
- Drag the year slider (1996 → 2026)
- Sparse years show a friendly "Not much to see here yet" message
Old neighborhood photos with a year. They appear in the feed as vintage cards, you can post one, and they collect in your Profile "My archive" + on the map's History layer.
What to walk →
- Home feed → scroll for a vintage amber "from the archive" card (year badge)
- Tap + (create) → find the Throwback / archive prompt → pick a year + add photo + caption → post
- Profile (Me) → "My archive" tab → your throwback shows in a grid
- Map → History layer → throwbacks appear as dots
The same neighbor-chat thread now lives on developments, buildings, businesses, and blocks. A "verified residents" gate is shown but stays frictionless in the demo.
What to walk →
- Open a development (hard-hat pin) → Chat tab → post a message
- Open a building → Building chat section → post
- Open a business → Neighbor chat section → post
- Open a block → its chat → post
- Confirm a "verified residents" badge appears but doesn't block you
Long-press any chat message to Report it, Hide it, or Block the user.
What to walk →
- In any neighbor chat (50-G), press-and-hold a message
- A sheet appears: Report / Hide / Block user
- Tap Hide → the message disappears from the thread
- Report + Block just confirm (mock) — check they don't error
A development drawer has a casual Chat tab and a structured Discussion tab with a community sentiment bar (positive / neutral / concerned).
What to walk →
- Open a development (hard-hat pin)
- See the tabs: Overview / Chat / Discussion
- Tap Discussion → sentiment bar + top concerns
- Tap Chat → casual thread (50-G)
Listings, buildings, businesses, and blocks now show an honest-signals panel — factual, soft cues, no harsh flags — with an owner's right-of-reply.
What to walk →
- Open a listing (real-estate) → scroll to the honest-take panel
- Repeat for a building, a business, and a block
- Find an owner/manager reply on at least one
- Red flag: tone feels harsh/editorial rather than factual
You parked a careful look at whether an honest-signals panel feels right on a restaurant/shop (vs only real estate). This is that check — it's a judgment call, not a bug.
What to walk →
- Open a business (a restaurant or shop) → find the honest-take panel
- Ask: does this fit Nabe's brand on a business, or feel off / harsh?
- Tap ✗ Bug + note your call (keep / soften / remove on business) → Log to GSD
The notification drawer has category filter chips; settings has category toggles, digest cadence, quiet hours, and an email digest preview.
What to walk →
- Tap the bell → notification drawer → tap category chips (the list filters)
- Open notification settings → toggle categories, set digest cadence (Daily/Weekly/Off), quiet hours
- Tap "Preview this week's digest" → email-style preview opens
- Red flag: the email from-line isn't
@thenabe.com
A follow/bell button lets you subscribe to a development, a thread, or a block.
What to walk →
- Open a development → tap the follow/bell → it fills (following)
- Same on a neighbor chat and on a block timeline
- Tap again → unfollows
- Red flag: buttons crowd or overflow on the narrow iPad screen
A mock push notification slides in from the top during a session (demo fires around 30s and 90s).
What to walk →
- Open the app and leave it sitting for ~30 seconds
- A push toast slides in at the top, then auto-dismisses
- Check it looks right (icon, text) and isn't annoying / mistimed
Four mechanisms surface longtime residents to newcomers: a "longtime neighbor" pill, bridge-pair badges on Q&A, old-timer composer prompts, and feed mixing.
What to walk →
- Home feed → look for a gradient "from a longtime neighbor" pill on some posts
- Find a newcomer-question / old-timer-answer pair both showing a "bridge moment" badge
- Tap + (create) → if set as long-tenure, see old-timer prompts
- Red flag: too many pills (feels spammy) — note the density
Residents can submit a development they've heard about; there's a standalone permit feed; and community coming-soon businesses.
What to walk →
- Explore → Coming → "Submit a development you've heard about" → fill + submit → it appears (auto-verifies after ~10s)
- Explore → Permits → standalone permit feed with time-window filters
- Explore → Coming-soon biz → submit one → it appears
Deep audit + demo data sweep
All 6 non-NYC cities (LA, Tokyo, Paris, Austin, Buenos Aires, Cape Town) have baseline content. Do they feel lived-in, not formulaic?
What to walk →
- Tap city pill → switch to LA
- Scroll Home feed — does it sound like LA, not "demo content"?
- Open Explore → Businesses, Singles, Families
- Repeat for Tokyo, Paris, Austin, Buenos Aires, Cape Town
- Red flag: stereotypes (tacos/tango/sake), repeated phrasing, generic names
Heads up: Phase 49 will deepen this further. Test now to surface tonal issues we should catch in Phase 49.
A builder can fake-log-in, claim a development, post updates. Mirror of the agent/contractor pattern.
What to walk →
- Open the map (Explore) — find a hard-hat icon
- Tap it → DevelopmentDrawer with builder, timeline, permits
- Tap "Claim this profile" CTA
- BuilderClaimDrawer opens → fake-login form → submit
- Profile (Me tab) → BuilderDashboard with greeting + verified badge + your developments list
- Tap a development → "Post update" → write + post → update appears on timeline
LA (32 neighborhoods), Tokyo (23 wards), Paris (20 arrondissements) — same brand-gradient liveness shading as NYC.
What to walk →
- Switch city to LA via city pill
- Tap city pill again → "Browse all LA" button
- Full-screen heatmap with violet/pink polygons + live-count badges
- Tap a colored neighborhood → app switches to that nabe
- Repeat Tokyo + Paris
1:1 copy of saved-nabes pattern. Bookmark icon on dev drawer hero, "Saved developments" section in Profile.
What to walk →
- Open a development drawer (any hard-hat icon)
- Top-right of gradient hero → tap bookmark icon → fills
- Close drawer → Profile (Me tab) → "Saved developments" warm gradient card
- Tap → re-opens dev drawer
- Bookmark a 2nd → both list. Unbookmark → leaves list.
No real video — play overlay + duration badge on ~15% so the pitch script can say "photos and video".
What to walk →
- Scroll Home feed — ~every 6-7th post has a Play ▶ overlay + duration badge ("0:42")
- Switch to LA + Tokyo — same pattern (sprinkled across all 6 non-NYC cities)
- Tap a video-flagged post → behaves normally (visual signal only, no playback)
- Red flag: every post has it (too many), or none (sprinkle failed)
Spatial intelligence — developments + heatmap
Phase 47 shipped 2026-05-27 (6 plans). All 10 acceptance criteria implemented; never iPad-tested.
Tap city pill in header. Panel opens with saved nabes + "Browse all NYC" + "Pin demo cities" + "Add to saved list".
What to walk →
- On Home, tap the purple "Wburg" pill in the top-right of the header
- A panel slides up: "Switch neighborhood / Your nabes"
- Confirm you see: a "Saved nabes" section, a "Browse all NYC →" button, a "Pin demo cities to top" switch, and a dashed "Add Williamsburg to your saved list" button
From city-pill modal, tap "Browse all NYC". NYC neighborhood polygons in brand gradient + live-count badges. Tap any colored nabe → switches.
What to walk →
- Open the city pill → tap "Browse all NYC →"
- A full-screen "Browse NYC by liveness" sheet opens — wait ~2-3s for the shapes to load (first open fetches map data; a "Loading…" note is normal)
- NYC shows as colored neighborhood shapes (purple→pink = quieter→busier; legend at the bottom)
- Tap any neighborhood → it becomes active and the app switches to it
⚠ Drifted since Phase 50: Explore → Map DOES show hard-hat markers for developments, but it has NO filter chips — the Developments/Permits toggle moved to the HOME map's new "Now / Coming / History" layer row.
What to walk →
- Tap "Explore" → tap the "Map" button (top-right of the purple Discover header)
- Markers cluster over Williamsburg — zoom in (pinch / + button) until clusters split into pins
- Confirm development pins = white hard-hat on a violet pin (permits = neutral pins with a permit-number badge)
- Note: this map has no filter chips — the dev/permit toggle is on the HOME map's "Now / Coming / History" row, and Home hides developments until you pick "Coming"
Tap any hard-hat. Drawer with: builder name (tappable), other projects from same builder, permit list, timeline, community sentiment.
What to walk →
- Easiest path: Explore → top section "What's coming in Williamsburg" → tap a card (e.g. "Berry St Workforce Housing")
- A sheet opens: purple header with title, a tappable underlined "by [builder]", a "Follow this development" button, Units/Status/Expected stats
- Scroll Overview → confirm a Timeline, "Linked permits", and a "From the neighborhood" sentiment section (and Overview/Chat/Discussion tabs near the top)
- Confirm an "Other projects by [builder]" grid + a "View [builder]" button at the bottom
From dev drawer, tap builder's name. New drawer: bio + signature project + their other developments, each tappable.
What to walk →
- In an open development sheet (AC4), tap the underlined "by [builder]" in the header (or "View [builder]" at the bottom)
- A builder sheet opens (e.g. "North River Development"): logo, projects/units/years stats, an "About" bio
- Confirm a "Signature project" card + an "All projects (N)" list
- Tap any project in that list → it opens that development's sheet
⚠ Drifted since Phase 50: the "Coming" chip still opens the temporal developments feed (with a "N new" badge), but the Explore chip row was expanded (added Permits + Coming-soon biz) and the feed gained a "Submit a development" button.
What to walk →
- Tap "Explore" — the chip row now starts "Coming", then "Permits", "Coming-soon biz", "Services", "Listings"…
- Tap "Coming" (it's selected by default)
- Confirm the "What's coming in Williamsburg" feed with status cards (Newly filed / Breaking ground / Topping out / Opening) + a purple "N new" badge for the first ~2s
- Confirm a "Submit a development you've heard about" button above the cards
Open Vault. New tile "What's coming on [Williamsburg]" with live counts. Tap → Coming feed pre-filtered to active nabe.
What to walk →
- Tap "Vault" (Williamsburg active, and keep the Vault search box empty)
- At the very top, confirm a purple "What's coming on Williamsburg" tile with a count
- Tap it
- Confirm it switches to Explore → the "Coming" feed, scoped to Williamsburg (tile is hidden if a search is typed)
Right Now banner on feed fires when ≥50-unit permit drops in active nabe, or when tracked dev hits milestone. Mock-triggered — visible on first load in W'burg.
What to walk →
- Open Home in Williamsburg (default on first load)
- In the "RIGHT NOW" banner row near the top, swipe the cards sideways
- Find the hard-hat card "New filing — 184 Bedford Ave" (88-unit) with a pulsing amber DEVELOPMENT/PERMIT label
- Tap it → confirm it opens that development's sheet
⚠ Drifted — walk path corrected: the Day 4 "See Recommendations" + "See Developments" tiles live in the Home "New Here Guide" 7-day strip, NOT inside the onboarding swipe flow — and Day 4 only unlocks after you finish Days 1-3.
What to walk →
- "Me" tab → "Reset Onboarding" (bottom), then complete the short onboarding (pick Williamsburg)
- On Home, find the "New Here Guide" strip (horizontal day cards, "0/7 done")
- Complete Day 1 → Day 2 → Day 3 (tap each card's CTA) so Day 4 becomes active
- Open Day 4 ("Day 4 of 7 · 2 things") → confirm TWO tiles: "See Recommendations" + "See Developments"
How to reset onboarding →
Profile → bottom → Settings → "Reset onboarding". Or Safari Settings → Advanced → Website Data → 192.168.1.171 → Remove.
Switch via city pill → LA / Tokyo / Vesta. Each demo city has 4-6 developments (more than the "2-3" originally stated), and the drawer pattern works.
What to walk →
- Tap the city pill → optionally turn on "Pin demo cities to top" so LA / Tokyo / Vesta sit at the top
- Tap "Los Angeles" → Explore → "Coming" → confirm multiple development cards; open one to confirm the sheet works
- Repeat for "Tokyo" and "Vesta"
- (Optional) Explore → Map for each → zoom in to confirm hard-hat markers
Pre-pitch punch list — never walked
Original 12-step walk from mockups/uat-checklist.html — never iPad-completed. Phase 48 self-testing covered most surfaces but not these specific checks. Folded here.
Home / Explore / Vault / Me / Calendar — switching should NOT leak W'burg content into LA / Tokyo / Vesta / Greenpoint.
Every one should open a real profile drawer. NO "User not found." Repeat 6×.
Tap bookmark heart → toast "we'll notify on price changes" → reload → bookmark stays filled. Tap violet dot to disable.
Open Say hi thread → 3 chips visible above input ("Wave hi" / "Coffee this week?" / context chip) → tap "Wave hi" → message sends.
Filter feed by "Families" → playdate / library workshop / Strider bike posts visible.
Open Neighbors browse → tap "Families with kids" chip → Park family + Sofia & Jin visible.
Open Vault on LA / Tokyo / Vesta → "Want Vault in your city? Vote" CTA visible → tap → vote count increments. Note: Phase 49 will override this to actually seed vaults everywhere — test now to capture baseline.
Open AI chat (sparkle FAB bottom-right) → first session shows "Ask The Nabe AI" tooltip → dismissible. Reload → stays dismissed.
Open any drawer + press Esc on connected keyboard → closes. Open Say hi thread + tap X → returns to caller surface (profile/explore), NOT inbox.
Open MorningBriefingDrawer → 8 section headers render Lucide icons (Building2 / Package / Moon / Flame / UserPlus / Heart / Bird-or-Heart / Star). No emoji.
Open Me / Family profile / Feed → warm violet→pink gradient background. NOT gray.
Eyeball every demo surface — should be dark Variant C (deep purple → black) everywhere. NOWHERE the old lighter violet→orchid. 224 instances were swept; this catches any regression.
Pitch-mode items (parked)
Pitch-mode work parked per "build mode" rule. Tracked here for visibility — no pressure to do now.
The static heatmap mockup that drove Phase 47. Now that the live version ships (47-AC2 above), confirm the mockup direction was correct.
Read deck Slide 13 and PITCH_OBJECTIONS §3-4 — does the "$25-40M with creative structure" framing read better than the old "$40-60M inbound interest"?
Where to read →
pitch/pitch-deck.htmlSlide 13pitch/PITCH_OBJECTIONS.md§3 + §4pitch/PITCH_STRATEGY.md(valuation section)
Three deck drafts on founder-review.html: W5.18 Corcoran broker workflow story, W5.19 W'burg-at-maturity density model, W5.32 Meta-variant Neighborhoods-failure slide.
The 5-6 min demo walk in pitch/DEMO_SCRIPT.md — 7 wow moments + open + ask. Practice with timer when pitch nears.
.planning/TODOS.md outstanding UAT log + Phase 48 VERIFICATION.md + Phase 47 SPEC + Phase 44 PLAN