Place Journey v2 — master-plan SSOT

Fresh journey mockup, premium component system only. Governed by build/place-pages/master-plan/ — each screen implements its council decision sheet verbatim (✅ rulings only; ⏳/🚫 absent by design). C13-amended / DECISIONS #8: ONE language per screen — the app renders a single locale via i18n (12 locales); frames are English, plus one hi-locale reference frame. Currently: S1 Entry + Set-your-place (5 states + locale check), S2 Intro (the carousel is dead — land on the page, a ~40% sheet does the talking; 3 states + locale check) and S3 Adaptive landing + place header (THE HEADER DIET — top bar → counted ladder → Today strip → sticky tabs, ≈230px vs 510px; identity blocks move into Overview; 5 states + locale check) and S4 Overview tab content (identity blocks first; ONE builder/consumer reorder at 60%; ONE consolidated builder card; directory trust anatomy — checkmark only on claimed, no party on administrative roles, no dead call chips; hybrid local places + POI sheet; 4 states + locale check). Later screens land here as their councils rule.

S1 · Entry + Set your place · 6 frames S2 · Intro — arrival sheet · 4 frames S3 · Landing + header · 6 frames S4 · Overview tab · 5 frames S5 · Contribution flows · 6 frames S7 · Issues + closure loop · 6 frames S6 · Place Feed + composer · 6 frames S8 · Communities tab · 6 frames S9 · People tab · 5 frames S10 · Leaderboard + Seva · 6 frames S11 · Steward desk + history · 5 frames S12 · Profile civic integration · 5 frames S13 · Authority + claim + desk · 6 frames S13 · Office journey — interactive end-to-end · BUILT ✓ on dev · claim→verify→office-desk→broadcast+targeting S14 · Events + Alerts (megaphone) · 6 frames S15 · Party pages (light pass) · 5 frames
Business track (B-series) — ⚠️ SUPERSEDED by Bazaar v2 (kept for reference)
B1 · Create + Own a Business · 6 frames B2 · Owner management + channel + enquiry chat · 8 frames B2 · Public discovery (directory + store/service pages) · 6 frames B3 · Offers + status signals + haat · 6 frames B4 · Local Need: jobs + services + workers · 9 frames B5 · Place-economy rails (mandi + SHG + promotion) · 8 frames
My Gaon — Multi-place follow & explore (places)
Follow + Explore — multi-place, Place Pulse & Constituency Intelligence · BUILT ✓ on dev · follow many places · trending villages/seats · F8 political signal
Pages — identity · profiles · party hierarchy · channel · manager (NEWEST)
1 · Pages platform — create + claim place-affiliated pages (party first) · BUILT ✓ on dev · PP1–PP8 · create→follow→post→@tag→discover 2 · Page Profiles — full-parity profiles for all 5 page types (Party · Business · Public Figure · Organization · Community) · PROPOSED · PF1–PF5 + manager + empty/unclaimed · channel/circles blocks · both themes 3 · Party Pages — hierarchy · national → state → constituency + My Units + Officials + Analytics · PROPOSED · 9 frames · visitor + manager · claim tree · affiliation approvals (both sides) · paid teaser · both themes 6 · Business / Franchise hierarchy — brand → outlets · per-outlet control · affiliation approvals · brand dashboard · PROPOSED · 7 frames · visitor + manager · BRAND-MANAGED vs FRANCHISEE-OWNED · approval queue · paid teaser · both themes 4 · Page ↔ Channel & Circle link — a page can run both a broadcast channel and forum circles · PROPOSED · channel (R10, 1:1) + circles (R11, many) · shown as two blocks on the profile 5 · Pages Admin / Management — roles, settings hub, transfer, insights · PROPOSED · for review · 6 frames · Owner/Admin/Editor · staff-only posting · channel slot for R10 Local Need — jobs · services · workers (B4 finalized) · PROPOSED · for review · 8 frames · printed-notice, voice-first, no payments
Bazaar v2 — FINAL local-commerce UI (supersedes B1–B5)
Bazaar v2 — FINAL (one consolidated mockup) · for review · ~28 frames · ONE root (no dupes) · Discover + Sell/Manage + Rails · full taxonomy · role-aware (owner/user) · per-state · cold-start

Journey position: S1 confirm → LAND on the home-village page + intro sheet (S2 — the carousel gate is dead per S2·A1/A2; adaptive landing starts from the SECOND session) → S3+. All frames render inline in the Place branch (root tab, no back chevron). One language per screen (C13-amended / DECISIONS #8): en frames + one hi-locale translation check per screen (S1·F, S2·D). S1 app-only rulings (A2 key scoping, A3 far-GPS soft confirm, A4 gpsAccuracy + 3/30d rate-limit, E21 timeout→retry, F28 events) ship in set_your_place.page.dart + nybursapi. S2 app-only rulings: A3 PlaceIntroRoute/PlaceIntroExtra deleted — the sheet lives in place-page logic reading the loaded PlaceDetail, placeIntroSeen + double-show guard, ~1.2s rise · D13 funnel events · D14 kill criterion (D1-return uplift ≥ +4pp or the intro is removed) · D15 post-first-contribution share card — part of the S2 design set, designed & built with the profile/share wave · E16 interim carousel bugs die with the carousel. C12's ⏳ rename is RESOLVED by DECISIONS #10: points = "Seva" — UI renders "★ +N Seva" / "Seva score" ("सेवा" in hi); "karma" survives only as internal code identifiers. S3 (header diet) app-only/build-phase rulings cited in captions: A3 first-arrival = client skips the landing call when placeIntroSeen unset + lazy ladder after paint (zero API change) · D12 auto-follow home wired as an UpdatePinnedRegions side-effect of confirmHomePlace · E15 invalidatePlaceDetail also busts places#landing#<id> (15-min banner lag), 10-min remount refresh gate, isFollowedByViewer pre-warm/fold, landing cache key gains a userId prefix BEFORE any personal cell ships (cross-user leak), open-issues count added to the landing payload · E16 personal-delta cells (Seva delta / issue-moved / per-rung rank) are deferred — the ③ Today slot is DESIGNED for them · F17/F18 mechanical-AA + i18n batches: ≥11px sublabels, kPlaceWarn light variant, chip maxWidth/ellipsis/scroll-to-active wiring, home icon on active chip, "1 contributor" singular, onAppCount stats gate ≥3, Material icons for stats, hide the "Nearby" stub tab, 44px back-chevron, "Page completeness" → "{place} info" (hi: jaankari), live "karma" string → Seva. Banner mechanics: "Go to" = pushReplacement; orientation state capped at 3 impressions in the first 2 weeks. S4 (Overview tab content) app-only/build-phase rulings cited in captions: A1 identity blocks structurally relocate from pre-tab slivers into the Overview tab + sticky TabBar via SliverPersistentHeader · B6 expose verifiedCivic in DTOs (the checkmark currently renders on ALL rows — must become claimed-only) · B8 _ContactChip currently has NO onTap — wire the locked Call·WhatsApp·Copy sheet · B10 attribution = batched revision join on directoryTemplate (M); the ⏳ confirm-counts mechanism ("6 logon ne sahi maana") + confirm-gated call = slot designed, built later · B11 new REPORT contribution kind (S) · B14 election-staleness refresh mechanics ride the election runbook · B16 POI lat/lng is currently silently dropped — plumb it (S) for distance + open-in-maps · D ledger: onAppCount display DEPENDS on the primaryLocation sync flag (currently OFF — everything reads 0; launch-blocking) + ≥3 gate, emoji stats → icons, "1 contributors" singular, helpChipMeta missing keys (popularPlace/co/civil_surgeon/chief_secretary/dgp/panchayat_secretary = invisible chips), hardcoded-strings batch (hero fallback, completeness card, "Add a place", empty states, "karma" in _LeaderRow → Seva ×2), placeText3 ≥11px/text-2, party+seat 320px overflow guards, breadcrumb › RTL, rank width, _SectionLabel merge, canRevert role-gate, kPlaceWarn light #D9641B, "View all" 44px tap targets, steward card tap + role label. The S4·A/S4·B/S4·E tall frames render the FULL Overview scroll in one device frame — in app the same content scrolls under the sticky tab bar.