Place Journey v2 — B1 · Create + Own a Business

Business-track foundation wizard (DECISIONS #17: B5+B1 first · #15: create-not-claim). Governed by build/place-pages/master-plan/B1-brief.md + B-UX-PLAN.md §1 ten laws / §3-B1 / §4 reuse map. The wizard's character: ≤5 steps, one decision per screen, giant pictograms, tap advances (no Next), mic = the large input target (L2), completable <60s, proxy-capable. The caller-view preview is the consent step (L5) — text promises are not believed, the preview is. No completeness scores, no pending states, ever (L9). DECISIONS #8: one language per screen — frames are English plus the brief's binding Devanagari strings, with one full hi-locale reference frame (B1·F).

‹ All screensB1·A Entry pointsB1·B Wizard coreB1·C Service areaB1·D Caller preview + photoB1·E Success + proxyB1·F hi locale check
B1 · create · entry points

Two doors in — the section CTA and the picker tile

Entry 1: §2 IA — "Local businesses" lives in the Overview tab AFTER officials (S4 DTO stitch, zero new tabs); the empty section IS the CTA — binding string "Add your shop here", no separate marketing surface. Entry 2: the S8 create-picker gains ONE business tile (ruling R1: three kind tiles in the picker would make it a two-decision screen and duplicate the wizard's kind step — one tile → wizard opens at KIND; law L1, one decision per screen). DECISIONS #15 create-not-claim: no "claim an existing listing" path anywhere — duplicates resolve later via the S5 conflict sheet. L7: the empty section never renders "0 businesses" as a count badge. Section order + officials rows reuse S4's offgrp verbatim.

3:42
••••

Bheldi Village

Home · Resident
Overview
Feed6
Issues3
Communities
People
Your officials9View all
SD
Mukhiya · Gram Panchayat
Sunita Devi
Elected 2021 · 5-yr term
Panchayat Secretary
Manoj Kumar
Posted since Mar 2024
Local businesses
No shops or services listed yet
The first listing puts Bheldi's bazaar on the map
Entry 2 · The S8 create-picker gains the business tile (R1)
Start for Bheldi
Circle
Everyone can write — talk together
Channel
You write updates — neighbours read
Add your shop here
Shop, service or food — on the Bheldi page, free
R1 ruling: ONE business tile, not three — Shop/Service/Food inside the picker would duplicate the wizard's kind step and break "one decision per screen". The tile opens the wizard at KIND. #15: there is deliberately no "claim a listing" option here.
B1 · create · wizard core

Four taps to a listing — no Next button exists

§3-B1 amendments verbatim: ① KIND = 3 giant pictograms Shop/Service/Food with example sublines — tap advances ② CATEGORY = flat top-8 (3×3, kirana FIRST, "More" expands; the 6-group intermediate level is DROPPED; labels = server-driven domain vocabulary, §6) ③ NAME label "Shop / service name", shop-style placeholder "Khushi Tailors", NEVER profile-name autofill (women's identity separation — the highest-leverage adoption decision); mic = the 46px target, keyboard = the 30px icon (L2). PHONE pre-filled + always-visible green lock chip "Number stays private — connects only in-app" — at the field, never a tooltip ④ PLACE auto-anchor "In Bheldi?" with one big YES — no map, no GPS ask. §5: steps 1–4 offline-capable, zero images, SVG sprites.

3:42
••••
Step 1 · Kind — giant pictograms, tap advances
What are you adding?
Shop
Kirana · Medical · Clothing
Service
Mistri · Tailor · Electrician
Food
Dhaba · Sweets · Tiffin
L1: a non-reader identifies all three targets by glyph alone. Tapping a tile IS the answer — the wizard slides forward; there is no Next anywhere in B1.
Step 2 · Category — flat top-8, kirana first (Shop shown)
What kind of shop?
Kirana
Medical
Mobile & recharge
Clothes
Hardware
Khad-beej
Electronics
Sweets
More
§6: category labels are SERVER-driven domain vocabulary (directoryTemplate precedent, CMS-relabel per state, no app release). The 6-group intermediate level is dropped — top-8 flat, kirana always tile #1.
Step 3 · Name + phone — mic first, lock chip at the field
Shop / service name
Khushi Tailors
Phonepre-filled — change if calls go elsewhere
+91 94312 67890
Number stays private — connects only in-app
The name field NEVER auto-fills the profile name — a tailor's listing must not out her personal account (identity separation, §3-B1). Voice fills the field; keyboard is the fallback icon (L2). The lock chip is permanent UI at the phone field, not a tooltip.
Step 4 · Place auto-anchor — no map, no GPS ask
In Bheldi?
your home place — nothing to search, nothing to pin
Anchors to the creator's confirmed home place (S1). 🚫 map widget · 🚫 GPS permission ask — the wizard stays offline-capable end to end (§5). SERVICE kind inserts the B1·C co-step after this; Shop/Food jump straight to the preview.
B1 · create · service area (SERVICE kind)

The provider's make-or-break screen — dense but calm

§3-B1: serviceArea is a REQUIRED co-step for SERVICE kind (not a later-edit) — a tailor with no area gets no calls, an area too wide gets Justdial-style junk calls. Anatomy: auto-anchor (Bheldi pre-selected, "your village") → binding title "Show villages within 10 km"nearest-first CHECKLIST with per-row km → live counter chip "15 villages selected ✓"whole-block master toggle (Garkha, 32 villages — OFF here: she picked by hand). Selected rows bubble to the top (R2: the binding count includes selections below the fold — 23 villages sit within 10 km). 🚫 map-pin · 🚫 search-only · 🚫 district→block→village cascade. App-only: nearest-first = one geo-sorted query off the location-SSOT centroids.

3:42
••••
Khushi Tailors · Service
step 4
Show villages within 10 km
Callers from ticked villages will find Khushi Tailors
15 villages selected ✓ live count
Whole Garkha block
32 villages — one switch
Bheldiyour village
0 km
Sitalpur
1.2 km
Mahmadpur
2.1 km
Dumri
2.8 km
Kotwa
3.4 km
Bishunpura
4.0 km
Chainpur
4.7 km
Pakri
5.3 km
nearest first · 23 villages within 10 km · list scrolls
B1 · create · caller preview + photo

The consent moment — she SEES what a stranger sees

L5: the preview IS the consent step — before anything goes live, the creator sees the exact caller sheet a stranger gets, rendered as a real phone-sheet screenshot inside the flow (sheet anatomy = S4's locked sheet 1:1; DECISIONS #19 Nyburs-first ladder: MESSAGE = Nyburs chat enquiry primary, Call second, WhatsApp DEMOTED to the Call·WhatsApp·Copy options row — never a primary button): Khushi Tailors · Tailoring · Bheldi · 🔒 Message · Call — and NO number anywhere (R3: the in-preview lock line renders in the frame locale; the binding Devanagari chip lives at the b1b phone field). Home-based protection is SILENT-ON for everyone — one illustrated line with the crossed-eye glyph, never a question. Then PHOTO: optional, skip = equal weight (same-size buttons; hi renders "बाद में" per L1), steering via 3 sample thumbs + binding line "Box / Clothing — no face or home needed". App-only: rear camera default, EXIF/geo stripped, listing live instantly — photo uploads in background (§5).

3:42
••••
Step 5a · Caller-view preview — the consent screen (L5)
This is what a caller sees
your number is never on the screen
Khushi Tailors
Tailoring · Bheldi
Number stays hidden — the call connects through Nyburs
exact screen — pixel for pixel
Home address never shown — only the name, the work and the village.
Text promises are not believed; the preview is (L5). The protection line is INFORMATION, not a toggle — home-based listings are protected silently for everyone, so opting out can never be socially demanded of her.
Step 5b · Photo — optional, skip carries equal weight
Add one photo?
Box / Clothing — no face or home needed
Equal-weight skip (hi: "बाद में", L1) — a photo-less listing is a COMPLETE listing (L9). Samples steer to goods/work shots, never faces or houses. Rear camera default, EXIF/geo stripped; the listing goes live instantly and the photo uploads in the background (§5).
B1 · create · success + proxy

Live now — and the one-OTP handover

SUCCESS = the live listing card — literally the S4 directory row the village sees — under the binding line "Now live on the Bheldi page" + the promise line "We'll tell you when someone views it" (L7 viewed-honesty: we notify on VIEWS, which we measure). L9: no completeness %, no "pending review", no nag chips — created = complete; any review state is invisible to the creator. PROXY-CREATE is first-class (owner fork #4 → YES): the agent's phone runs the SAME wizard + one extra field "Owner's number" → the owner's phone gets a one-tap OTP claim → ownership transfers to the owner's device; the agent never stays admin. One feature, three channels: elder onboarding (son), CSC/VLE seeding, SHG facilitator. App-only: OTP claim + transfer transaction, claim push deep-link.

3:42
••••
Success — the page row IS the reward
Now live on the Bheldi page
Kirana · Bheldi
Sharma General Store
Listed just now
We'll tell you when someone views it
L9 enforced: nothing here scores, nags or says "pending" — the row above is the EXACT directory row (S4 .off vocabulary). The only future touch is the positive signal: a views notification, ≤1/week, real numbers only (L7).
Proxy create — agent's phone → owner's phone (fork #4 ✅)
Agent's phone
Amit — Ramesh's son
Shop / service name
Sharma General Store
Owner's number
+91 94312 67890
Owner's phone
Ramesh Sharma
Sharma General Store is on the Bheldi page. Your shop?
OTP 4 8 3 1 auto-fills · one tap
Ownership moved to Ramesh's phone — Amit no longer controls the listing
The wizard is identical either way — proxy adds ONE field. The same OTP-handover machinery serves elder onboarding (son), CSC/VLE seeding drives and the SHG facilitator flow (B5): the facilitator creates, the president claims, the facilitator never stays admin.
B1 · create · hi locale check

hi reference — the consent screen, end to end

DECISIONS #8: one language per screen — this frame renders B1·D's consent screen fully in the hi locale as a translation check, NOT a design pattern (R4: chosen over the kind step because it is B1's string-heaviest, highest-stakes screen; the kind step is Devanagari-native by definition). Business names stay Latin (proper nouns, S1·F precedent); the category label "सिलाई" is the server-driven hi label (§6). The lock line here is the binding chip string "नंबर सुरक्षित — सिर्फ़ call बटन से जुड़ेगा" verbatim — "call" stays Latin in the binding string. Devanagari titles use the .sp-hi metrics (21.5/700), body strings ride Noto Sans Devanagari from the shared font stack.

3:42
••••
लोगों को ऐसा दिखेगा
आपका नंबर स्क्रीन पर कभी नहीं आएगा
Khushi Tailors
सिलाई · भेलड़ी
नंबर सुरक्षित — सिर्फ़ call बटन से जुड़ेगा
हू-ब-हू यही स्क्रीन दिखेगी
घर का पता कभी नहीं दिखेगा — सिर्फ़ नाम, काम और गाँव।

B1 position in the track: entry (place page section CTA / extended S8 picker) → KIND → CATEGORY → NAME+PHONE → ANCHOR → [serviceArea co-step, SERVICE kind only] → CALLER-VIEW PREVIEW (the consent step, L5) → optional PHOTO → LIVE + promise line. ≤5 decisions, tap-advance throughout, no Next, mic-first input (L2), completable <60s, proxy-capable end to end. en UI strings (updated from brief's Devanagari originals per DECISIONS #8): "Add your shop here" · Shop / Service / Food · "More" · "Shop / service name" · "Number stays private — connects only in-app" · "In Bheldi?" · "Show villages within 10 km" · "15 villages selected ✓" · "Box / Clothing — no face or home needed" · "Now live on the Bheldi page" · "We'll tell you when someone views it" · "Owner's number". hi-locale equivalents live in b1f only (DECISIONS #8). App-only/build-phase (not designed elements): OTP-claim machinery + ownership-transfer transaction + claim push deep-link · rear-camera default, EXIF/geo strip, instant-live + background photo upload (§5) · serviceArea nearest-first = one geo-sorted query off the location-SSOT centroids · top-8 category lists = CMS-editable server config per state (§6 directoryTemplate precedent) · wizard steps 1–4 offline-capable, zero images, SVG sprites (§5 2G kit) · review/moderation states exist server-side but are INVISIBLE to the creator (L9). Design rulings R1–R4 are documented in the header comment for the lead's consolidation pass; the SHG facilitated-create VARIANT (group name, empty phone + "समूह/अध्यक्ष का नंबर", product multi-select, admin handoff) is B5's frame set — B1·E's proxy panel is the shared machinery it rides. R+ (2026-06-11 owner): Nyburs-first contact ladder per DECISIONS #19 — WhatsApp demoted to locked-sheet row on all conversation surfaces; share-out links unchanged.