Working copy: v1 (frozen in versions/activation-v1/) plus addenda 003–029 — the earlier chat on the store link, titles only on Getting started, and step 1 redesigned: four ways in, one flow (choose → processing → check & save) and the products sheet.
Iteration goal: can a new owner who has never seen FoodBridge get from the store link to running their business (items, customers, first order, delivery, payment, daily plan) on one page, with the floating assistant only pointing the way? Everything works end to end in this browser; progress is kept in localStorage.
▶ Start fresh (the store link on WhatsApp)
| Route | Screen | Where it lives |
|---|---|---|
| #wa-link | The store link | Owner's WhatsApp |
| #home | Getting started: a headline goal, a three-part stage tracker, and the current stage as a setup guide (the current step open with one short line and a named button) | Platform (the activation page) |
| #products | The platform's Products page: search, product cards, Export · Import · + Product · Bulk Action | Platform |
| #items | Import products (step 1): four ways (drop files here on a computer) | Products → Import |
| #items-file | Upload files: the chosen files, add more, Process | Activation page |
| #items-photo | Photoshoot: shutter, shot after shot (live camera or a demo shelf) | Activation page |
| #items-gallery | The shots as a gallery: remove, shoot more, from the phone's gallery, Process | Activation page |
| #items-voice | Speak (or type) your products: name, pack, rate | Activation page |
| #items-catalog | Search products: type, pick from FoodBridge's list and live Open Food Facts results (India, food only), Process | Activation page |
| #processing | Processing, for every way: live stages, products as they are found (never blocks the next step) | Activation page |
| #review | Check & save: on a phone, a plain rate list, name and rate per row (fix one question at a time, edit a line); on a computer, the Excel-like sheet | Activation page |
| #customers | Step 2: customers from phone contacts | Activation page |
| #order | Step 3: first order | Activation page |
| #placed | Order placed | Activation page |
| #deliver | Step 4: deliver it | Activation page |
| #paid | Step 5: get paid | Activation page |
| #plan | Step 6: daily plan on WhatsApp | Activation page |
| #done | All set | Activation page |
| #dashboard | The platform's dashboard: avatar ring, profile menu, Getting started card, floating assistant | Platform |
| #wa-nudge | A morning nudge (links to the page, never into a step) | Owner's WhatsApp |
| #wa-customer | What the customer gets: invoice, payment link, Pay | Customer's WhatsApp |
| #driver | The driver's link: Delivered | Driver's phone (a link, no app) |
| #wa-letgo | Letting a quiet store go | Owner's WhatsApp |
The floating assistant (bottom-right) is on Getting started, All set and the dashboard. Tap it and ask "how do I deliver?": it answers with a pointer to the page and never runs a step.
An uploaded file or photo is not read: the seed's rate list stands in for files and photos. Speaking uses the browser's own speech recognition where it has one (Chrome sends the audio to its speech service); elsewhere the mic types an example. No message is sent anywhere; WhatsApp screens show what each person would see.
One real call: Search products asks Open Food Facts (world.openfoodfacts.org, India only, food only) as you type — the search words leave the browser. Live results: Open Food Facts contributors, ODbL. If the service is busy or offline, FoodBridge's own list still answers.
The sheet works like Excel or Google Sheets: tap or click a cell, type to replace it, Enter moves down, Tab moves right, arrows move, Delete clears, Ctrl/⌘+Z undoes. On a phone, tap a cell twice to edit it in the formula bar.
| From screen / state | Event | To |
|---|---|---|
| #wa-link | Open my store | #home (0 of 6) |
| #home | Next step's button (always the first open, unlocked, not-waiting step) | that step's screen; Add your products → #products |
| #products | Import (bottom bar, or the empty state's button) | #items |
| #items | A way's tile | that way's Choose screen (#items-file, #items-photo, #items-voice, #items-catalog) |
| Any Choose screen | Process … | #processing · a job runs in the background |
| #processing | the job finishes | #review (Check & save) opens by itself |
| #processing | Add customers meanwhile | #customers · the job keeps going; when done, #home suggests "Fix n products, then save" |
| #review | Fix next / a one-tap fix | the next cell that needs a fix |
| #review | Save n products (nothing to fix) | #products · items done (any product saved); the assistant: "n products saved. Step 1 of 6 done." → Back to Getting started |
| #review | Save n now, fix m later | #products, as above; on #home, "n products · m to fix" links back |
| #customers | Add n customers | #home · customers = done |
| #order (unlocks after items + customers) | Place order | #placed · order made; paid at once if cash/UPI |
| #placed | Next: deliver it | #deliver |
| #deliver | Send to driver / Mark it delivered | #home · delivery = sent / delivered |
| #driver | Delivered | delivery = delivered; owner sees it on #home |
| #paid | Send payment link / They paid cash | #home · payment = link / cash |
| #wa-customer | Pay by UPI | payment received; owner sees it on #home |
| #plan | Turn it on | #done if 6 of 6, else #home |
| Any page | Assistant → Open Getting started | #home (the assistant never runs a step) |
| Any step 2–6 | ✕ | #home |
| Import screens | ← | #products (a way's screen: back to #items) |
Data for every screen comes from seed-data/seed.json. Rules: screens/activation/engine.js, tested by tests/engine.test.js (node --test tests/engine.test.js).