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 ·
Block passport
Calm progress toward three distinct Passport check-ins this season — ribbon when complete.
/passport · data-wod-idea=block-passport
-
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
-
3 ·
Truth keeper
Confirm hours look right on a place page; then open the Confirm lane.
Place hours Oracle · data-wod-idea=truth-keeper
-
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
-
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
-
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
-
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
-
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
-
9 ·
Guest mode / Host trail
Plan preview + post-share Host trail into the Share lane.
/plan · data-wod-idea=host-trail
-
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
-
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
-
12 ·
Collect the city
Neighborhood atlas on Passport and /neighborhoods — needs published Studio neighborhoods + place links (E4).
/passport + /neighborhoods · data-wod-idea=neighborhood-atlas
-
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
-
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
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.
-
Checklist:
whatsondurham-studio/CITY-LOOP-E4-UNDERSEEN-NEIGHBORHOODS.md -
Idea 4 (Patron): Passport place card when
underSeen— deep link after you flag a real partner - Idea 12 (atlas): /passport · Collect the city · /neighborhoods
-
Show up lane (after
loop-patronseed): /my-badges#show-up
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-badgesredirects) · empty until a live offer is linked and unlocked (honest) -
P1b rails already redeem
unlockKind: badgewhen 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+liveHeatPlaceIds—data-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.