The owner-LOCKED, two-sided marketplace, walked end to end. Two mirrored user types: a hirer (needs a person) posts a Need, browses the Workers tab, and closes with Filled; a worker (looking for work) posts an editable Work card, browses the Jobs tab, and toggles Busy / Available. Two separate entities (not social posts — no like/comment, open→filled lifecycle, voice-first). Both composers carry a "Post as: You / Your Page" author picker. Display = ONE Kaam hub with Jobs + Workers tabs, plus a place-feed "Work" segment and an Explore rail. Connect = auto-match push (nearest, staggered) + browse both ways + contact ladder Message → Call → WhatsApp. Wage optional (else "Negotiable"); Needs auto-close in ~7 days with an Extend nudge; no verification at start; basic safety only (risky-category warning + no-fee line + Report); no payments v1.
The whole feature in one frame. The hirer (amber) and the worker (green) run the same three beats — post → display → connect — from opposite ends, meeting in the middle at the match. Both can also just browse the other side's tab.
The hirer's composer. First the author picker — Post as You (person + village) or Your Page (business/org + verified badge). Then mic-first input (you speak, the transcript fills the fields), a trade picker, when, and a wage that is optional — leave it blank and the card reads "Negotiable". Place is auto from your home village, never GPS.
The worker's composer. Same author picker (You, or a Page — e.g. a labour contractor's org). Voice-first: speak your trade, years, rate, and where you work; the transcript fills the card. Wage is still optional. The result is a persistent, editable Work card with a Busy / Available toggle — a visiting card, not a one-off post.
ONE "Kaam / Work" hub with two tabs. The Jobs tab is the worker's browse surface: open Needs near them. Each card shows identity + village + distance + trade + status (still-open) + wage if given, else Negotiable + Contact. No like/comment row.
The same hub's second tab — the hirer's browse surface, a VIEW of Work-cards. Rows show identity + village + distance + trade + years + rate or Negotiable + status (Available / Busy) + Contact. The greyed "hired by N households" village-vouch is a later teaser, not built.
The Need a worker reads in 3 seconds: trade → wage (or Negotiable) → when → identity + village + distance → still-open · N responded → fraud footer. The status line renders before the contact buttons (a dead or crowded job must show first). No like/comment/view row. Apply = the contact ladder (F8), never a form, never a fee.
The connect engine. A new Need pings the nearest matching workers, on a +2–3 min stagger (proximity gets the early-bird advantage; the stagger stops a 12-phone pile-on). The push carries trade · village name · distance · when · age — never the full post text. Only matching trade + serviceArea get a push (which is why browse, F4/F11, exists for everyone else).
How either side connects. Message is primary (a Nyburs enquiry, no number exposed). Call opens a locked sheet where the number is revealed on tap. WhatsApp lives inside the same sheet. The status line shows first. No in-app form, no fee, ever, no payments.
Both lifecycles close cleanly. The hirer marks the Need Filled (optionally who, to feed a later village-vouch). The worker flips their card to Busy and back. And a Need that nears its 7-day life shows a "still need this? Extend" nudge before it auto-closes.
Safety is basic at launch. On a risky category (domestic / nursing / hotel / abroad work), an amber interstitial warns: verify the employer, never pay a fee, tell your family. Every card carries a no-fee guarantee line + a Report/flag. The heavier gating (verified-business-only posting, admin review) is shown only as a greyed "later as we grow" note — not a built flow.
Hotel, domestic, nursing and "abroad" jobs are where scams happen. Before you go:
The browse door for everyone the match push can't reach. A "Work near you" rail at the top of Explore/Search mixes open Needs (amber) and available workers (green) as compressed teasers, deep-linking into the Kaam hub (F4/F5). It renders only when there is enough nearby supply/demand — never padded.
These are the owner-locked decisions reflected above (green = locked-in-v1), plus the items deliberately deferred (amber = later as we grow). Nothing here is built.
Local Need — locked two-sided flow. This file is the decision-ready walk-through reflecting the owner-LOCKED design; b4.html stays the prescriptive design SSOT. The marketplace, both ways: hirer (post Need → browse Workers → Filled) and worker (post Work card → browse Jobs → Busy/Available), meeting at the auto-match. One Kaam hub (Jobs + Workers tabs) is the home surface, with a place-feed "Work" segment and an Explore rail as the browse doors. Both composers carry the "Post as: You / Your Page" author picker. Locked into v1: two separate entities (no social row), wage optional ("Negotiable"), distance from registered-village centroid, contact ladder Message → Call → WhatsApp with status-before-buttons, 7-day expiry + Extend, Filled/Busy close-loop, no payments. Basic safety only: risky-category amber warning + no-fee line + Report. Deliberately deferred (grey teasers, not built): worker verification, the "hired by N households" village-vouch, and the heavier verified-business-only + admin-review gating. App-only / build-phase (cited, not designed): match fan-out + nearest-first stagger queue · async voice transcription · expiry scheduler + Extend nudge · server-driven trade vocabulary · the risky-category rule · WhatsApp share-out · all strings in 12 locales.