Material 3

City Loop — editorial preview

Visitor-simple map of Explore · Confirm · Show up · Share and the fourteen City Loop ideas. Visitor home is /rewards (legacy /my-badges redirects). The Monopoly-style “city board” is a structural loop metaphor (advance one stage at a time)—not a literal board UI. Anti ping-pong: Rewards → Passport → back to Rewards progress. Use this page to review UI locations and Studio seed work — not a visitor marketing page.

City Loop is civic loops, not badge chrome: browse and plan, confirm what’s true, show up near partners, and share when you want. No second points currency, no visitor leaderboards, no FOMO timers.

Milestones empty until Studio seed + deploy. Create the six v1 badges/milestones in Sanity (optional E3 soft outcomes too), then deploy worker and app together. Until then, `/my-badges` lanes stay honestly soft-empty.

Explore · Confirm · Show up · Share

Progress on /my-badges groups into these four lanes once Studio milestones exist.

  • Explore

    Browse the city, open Near me, roll Durham Dice, attach journeys, and add stops to a plan.

  • Confirm

    Help keep hours and tips honest — Local Oracle confirms, optional tips, menu photos.

  • Show up

    Check in near Passport partners, finish journey stops, and notice quieter spots without FOMO.

  • Share

    Share a plan or badge when you want — Guest mode / Host trail stays optional and calm.

Fourteen ideas → live UI

Each idea already has calm product UI. Deep links open the live surface; look for data-wod-idea markers when reviewing.

  1. 1 ·

    Block passport

    Calm progress toward three distinct Passport check-ins this season — ribbon when complete.

    /passport · data-wod-idea=block-passport

    Open on site

  2. 2 ·

    Tonight → stamp → plan

    After a stamp, invite the next stop on Plan or Near me — evening copy after 4pm ET.

    Passport place card · data-wod-idea=tonight-stamp-plan

    Open on site

  3. 3 ·

    Truth keeper

    Confirm hours look right on a place page; then open the Confirm lane.

    Place hours Oracle · data-wod-idea=truth-keeper

    Open on site

  4. 4 ·

    Under-seen Patron season

    Quieter Passport places (Studio underSeen) show a soft Patron banner; editors follow E4 checklist — no invented places.

    Under-seen place Passport · data-wod-idea=patron-season

    Open on site

  5. 5 ·

    Journey as live quest

    Journey checklist framed as a live quest — complete → Share lane, no fake packs.

    /journeys/{slug} + /plan · data-wod-idea=live-quest

    Open on site

  6. 6 ·

    Merchant quest packs

    Up to three real published journeys from Sanity on Passport at build time; soft empty with browse/plan CTAs if none.

    /passport · data-wod-idea=quest-packs

    Open on site

  7. 7 ·

    Civic seasons

    Community season scores celebrate places, not visitor ranks — needs a published Studio season (E6 checklist).

    /passport + PlaceSeasonScore · data-wod-idea=civic-seasons

    Open on site

  8. 8 ·

    Event aftercare loop

    After Yes/No on a past event: optional tip or what’s on tomorrow — one primary CTA.

    Past-event queue · data-wod-idea=event-aftercare

    Open on site

  9. 9 ·

    Guest mode / Host trail

    Plan preview + post-share Host trail into the Share lane.

    /plan · data-wod-idea=host-trail

    Open on site

  10. 10 ·

    Durham Dice IRL

    After a roll, try a category nearby — soft signal, then Passport check-in if you want.

    Lite engagement · data-wod-idea=durham-dice-irl

    Open on site

  11. 11 ·

    Weather / transit quests

    Rainy indoor Near me chip; soft transit-honor note from Passport / Durham ETA.

    Weather + Durham ETA · data-wod-idea=weather-transit / weather-quest

    Open on site

  12. 12 ·

    Collect the city

    Neighborhood atlas on Passport and /neighborhoods — needs published Studio neighborhoods + place links (E4).

    /passport + /neighborhoods · data-wod-idea=neighborhood-atlas

    Open on site

  13. 13 ·

    Editor co-op / Cartographer

    Hours confirms and place/event tips bump a local cartographer count toward Confirm.

    Place/submit success · data-wod-idea=cartographer

    Open on site

  14. 14 ·

    Live-heat calm nights

    Quiet nights → Passport; peak → Confirm — embed real place IDs on Live heat modules (E6).

    Live heat modules · data-wod-idea=live-heat-calm

    Open on site

E4 — Under-seen + neighborhoods

Patron season and the neighborhood atlas need real Studio inventory — not invented places or hoods. Editors mark quieter partners with place field underSeen, Publish neighborhood docs (title + slug; no separate published boolean), and link places to neighborhoods for Block Hello.

Demo counts: ~5–8 under-seen Passport places (smoke: 2–3); 4–6 published neighborhoods with linked places. Honest empty atlas is correct until then — do not fake fill-in.

E5 — Partner-offer rails

Editors link real partnerOffer docs to badges so /my-badges can show redeemable perks after grant. Prefer redemptionMode = Badge unlock plus Partner deal unlocked by this badge on the badge. Never invent discount codes in git or seed JSON — Studio only for live partner terms / staff hints.

  • Checklist: whatsondurham-studio/CITY-LOOP-E5-PARTNER-OFFERS.md
  • Playbook: docs/PARTNER-ECONOMY-PLAYBOOK.md (badge unlock · points · Passport stamps)
  • Visitor shelf: /rewards · Perks (legacy /my-badges redirects) · empty until a live offer is linked and unlocked (honest)
  • P1b rails already redeem unlockKind: badge when Studio wiring exists — E5 is editorial

Smoke: one real (or staging) approved + active offer linked to one earnable badge → Refresh /my-badges → Redeem once. Do not add coupon strings to engagement-catalog.seed.json.

E6 — Civic season + live heat

Final editorial phase: activate a real communitySeason (8–12 Passport kitchens before publish; places-not-people) and embed real place _ids on Live heat page modules so calm-night prompts have venues. Soft empties on Passport / /seasons / heat are honest until then — no invented seasons or FOMO.

  • Checklist: whatsondurham-studio/CITY-LOOP-E6-SEASON-HEAT.md
  • Product RFC: docs/COMMUNITY-SEASON.md · seed fields: community-season.seed.json (empty places)
  • Idea 7 (civic seasons): /passport · Civic seasons · /seasons · PlaceSeasonScore on roster places
  • Idea 14 (live-heat calm): page component liveHeat + liveHeatPlaceIdsdata-wod-idea="live-heat-calm"

Smoke: publish one season with real roster → Passport callout + place score widget; embed 3–6 real heat place IDs (calendar gate off for off-day demos). Never invent place IDs in git.

Studio checklist / seed

Exact field values for the six v1 milestones and optional E3 soft outcomes (patron, Dice IRL, transit honor, cartographer) live in the Studio seed pack. Prefer the markdown checklist; optional import uses the engagement catalog seed. E4 inventory, E5 partner-offer, and E6 season/heat checklists are separate (above).

  • Studio seed: whatsondurham-studio/CITY-LOOP-EDITORIAL-SEED.md
  • E4 under-seen / neighborhoods: whatsondurham-studio/CITY-LOOP-E4-UNDERSEEN-NEIGHBORHOODS.md
  • E5 partner offers: whatsondurham-studio/CITY-LOOP-E5-PARTNER-OFFERS.md
  • E6 season + heat: whatsondurham-studio/CITY-LOOP-E6-SEASON-HEAT.md
  • Field source: wod-gallery/audits/CITY-LOOP-V1-MILESTONES.md
  • Phase roadmap: wod-gallery/audits/CITY-LOOP-PHASES.md (E1–E6 done — awaiting final Chris review)
  • Badge catalog City Loop section: whatsondurham-studio/ENGAGEMENT_BADGE_CATALOG.md

Verify after seeding

Public catalog (no visitor id): GET {WORKER}/api/engagement/milestones. Confirm the six v1 loop-* keys appear (plus E3 keys when seeded: loop-patron, loop-dice-irl, loop-transit-honor, loop-cartographer), then Refresh on /my-badges. Details: Studio CITY-LOOP-EDITORIAL-SEED.md § Verify / § C.

This page is noindex. Accept/reject the fourteen ideas in CITY-LOOP-FULL-IDEAS.md. Do not invent journeys or partner discount codes for City Loop demos.