# 04 — Roadmap Assumes a core team of ~4–6 (2–3 app devs, 1–2 backend, 1 QA/support who knows Classic). Durations stretch/shrink with team size; the **sequence and exit criteria** are the point. Dates below start from project kickoff. > ## ⚡ Staging update (founder call, 2026-07-09 — see D14) > **Build the local product first; add the cloud tier afterwards.** Phase 1 ships a > fully working local-only system: POS counters (SQLite buffer) + the existing in-store > Oracle 12c as store master (D12), offline licensing as Classic does today, local + > exported backups. The cloud tier (Postgres, sync agent, licensing service, auto-update > channel) is stood up as its own workstream and switched on per store afterwards. > > **The one non-negotiable that makes this safe:** even in local-only v1, every write > uses client-generated UUIDs and also writes its outbox row (dormant, drained by > nothing). Cloud enablement then = install sync agent + drain backlog — a switch-on, > not a data migration. Skip this and "add cloud later" becomes a second migration project. > > **Deferred until the cloud tier exists** (moves with it, not with the phase numbers > below): owner mobile app, Purchase Inbox, WhatsApp e-bills/reminders, UPI webhook > auto-confirm, central backups, silent auto-update, HQ fleet dashboards (the HQ *ops* > console starts earlier — see the HQ Ops workstream below), e-Invoice via > GSP (can interim-run through a manual portal flow if needed before then). ## Phase 0 — Prove the risky bits (4–6 weeks) Goal: kill the project-killers before writing product code. - **Sync spike**: two POS clients + cloud; bills offline on both, kill the network, sync, verify stock & numbering correctness. Evaluate PowerSync/ElectricSQL vs custom outbox. - **Hardware spike**: Electron app printing ESC/POS (2"/3"), cash-drawer kick, scanner input, one weighing scale. This decides Electron vs Tauri (vs Flutter). - **Billing engine v0**: pure-TS pricing/GST/rounding engine with golden tests derived from real Classic bills (grab 100 real bills, new engine must reproduce them to the paisa). - **Classic data audit**: map the Oracle schema; export 2–3 real customer datasets; identify the ugly bits (they exist). - **UX prototype**: clickable billing screen; put it in front of 3 real cashiers; time them. - Founder decisions locked: 06-DECISIONS items D1–D5. **Exit criteria:** sync demo survives a pulled cable; printed bill from Electron; engine reproduces Classic bills; stack decision written down. ## Phase 1 — MVP: one store bills on it all day (3–4 months) Scope (all "M" items in [01-SCOPE.md](01-SCOPE.md)): masters + import, POS billing offline with print, payments (cash/UPI-static/card/khata), returns, purchases (manual), stock, day-end, party ledgers, GST invoice formats, core reports, users/roles/audit, licensing skeleton, auto-update, cloud backup, **Classic migration tool alpha**. **Pilot:** 3–5 friendly existing customers (one mini, one medium, one busy counter) run Next **in parallel with Classic** for 2+ weeks, then cut over. Their cashiers' stopwatch beats our opinions. **Exit criteria:** a real store bills a full day with zero Classic fallback; migration tool moves a real customer with verification report green; counter timing ≤ Classic. ## Phase 2 — Compliance depth + counter polish (2–3 months) GSTR-1/3B exports, e-Invoice + e-Way via GSP, Tally export, schemes/offers, UPI dynamic QR with auto-confirm, WhatsApp e-bills & khata reminders, multi-counter + Store Hub LAN sync, weighing-scale barcodes, salesman tracking, accounting vouchers/day book, multi-language UI (top 2 languages), onboarding wizard. **Exit criteria:** a supermarket with 3+ counters runs through GST filing month entirely on Next; dealer can onboard a new store without us on the call. ## Phase 3 — The differentiators (2–3 months) **Purchase Inbox** (email/upload → AI parse → review queue → posted purchase, with item-matching memory), GSTR-2B reconciliation, owner mobile app v1, stock-take mobile scanning, dashboards & scheduled digests, loyalty, PO/GRN flow, expiry dashboards. **Exit criteria:** ≥50% of pilot stores' purchase lines flow through the Inbox; owner app DAU > 60% of owners. ## Phase 4 — Scale-out (ongoing) Multi-store HO console, central pricing, inter-store transfers, consolidated reporting, Enterprise onboarding for chains, API access, customer display/promo engine, offer broadcasts, then evaluate: Android POS terminals, ONDC/e-commerce bridges, restaurant mode. ## Migration & go-to-market thread (runs across all phases) 1. Phase 1: migration tool + parallel-run playbook; migrate the 5 pilots. 2. Phase 2: dealer training kit, migration-week checklist, Classic price-lock offer; migrate the top 20% (largest/most engaged) of the base. 3. Phase 3: mass migration waves by region with dealer incentives; Classic enters maintenance-only mode (security/GST patches). 4. Phase 4: Classic sunset date announced — only after >80% of active base has moved and Next's support ticket rate is demonstrably lower. ## HQ Ops workstream — the internal console (parallel track) New workstream (founder call, 2026-07-09 — **D15 ✅ RESOLVED**, [06-DECISIONS.md](06-DECISIONS.md)): build `apps/hq` per [14-SPEC-HQ-CONSOLE.md](14-SPEC-HQ-CONSOLE.md) — the [doc-11 HQ Console](11-ADMIN-SUPPORT-CONSOLE.md) **started early**, aimed at the **current ~300 Classic clients** (quotations/proforma/invoices in minutes, recurring billing + reminders, AMC, per-client AWS cost, interaction log), replacing the internal Oracle APEX app entirely. Runs **in parallel with Phases 0–4**, staffed lightly (~1 dev), reusing the tested foundation packages (billing-engine, domain, ui, auth patterns) — it doesn't compete with the product track for people. **Reconciling with the staging note above:** this does **not** change D14 — the store product stays local. The HQ Console is *vendor-side* cloud, which doc 11 already prescribes. The **fleet half** (fleet dashboards, migration tracker UI, remote support) still waits for the cloud tier as deferred above — only the **ops/billing slice** starts now, on the same client registry the fleet features will later share. | Phase | Ships (condensed from spec §6) | |---|---| | **HQ-1** | Skeleton + auth/audit; client registry (APEX import + verification); module catalog + module_price_book; client_module tracking; **quotation/proforma/invoice + letterhead PDF + Gmail send + payment recording** | | **HQ-2** | Recurring plans + reminder engine (auto + manual queue); AMC contracts; money dashboard + follow-ups; interaction/visit/call/training log | | **HQ-3** | AWS usage & cost per client + margin view; reports (dues aging, module revenue, client profitability); Client 360° polish | | **HQ-4** | Convergence with doc-11 fleet features once SiMS Next ships — migration tracker, fleet dashboards, support queue on the same registry, no rebuild | ## Standing risks to watch | Risk | Mitigation | |------|-----------| | Sync correctness bugs erode trust fast | Phase-0 spike, property-based tests, sync health dashboard, replayable op logs | | New POS feels slower than Classic to veteran cashiers | Keyboard-first + "Classic keys" preset; measure per-bill timings in pilots; don't ship until ≤ Classic | | GST rule changes mid-build | Rates/thresholds as dated config; GSP handles portal churn | | Migration data horror stories | Verification report (counts, balances, stock match) per migration; parallel-run period mandatory | | Scope creep from Classic parity ("but it had X") | Parity backlog triaged against usage data from Classic telemetry/pilots, not memory | | Team spread across 4 surfaces | Phase 1 ships POS + minimal back office only; owner app waits for Phase 3 |