Roadmap
Phased roadmap by deliverable, with a measurable exit criterion per phase — from the supastarter foundation through the wedge, presence, ads, marketplace, and scale — and what we will not build.
06 — Roadmap (by deliverable, no durations)
Every phase has a measurable exit criterion. We do not move on before it is met.
Phase 0 — Foundation on supastarter
- supastarter-nextjs adopted as the upstream (ADR-0008); demo content, unused locales, and unused payment providers removed;
upstreamremote kept for merges. - Monorepo runs (pnpm + Turborepo), CI,
dev/previewenvironments. - Core in place: organization = merchant (extended with CR / VAT / sector / phone / city),
Locationmodel, memberships and roles, Better Auth with phone OTP, plans in SAR,@repo/coremodule contract +@repo/module-registry, outbox event names. - Glass design system implemented in
tooling/tailwindandpackages/uiperdocs/design/glass-design-system.md. - Exit criteria:
- The glass design system renders on every surface of
apps/saas,apps/marketing, andapps/docs, with the documented fallbacks. ar(default, RTL) andenlocales work end to end; no physical-direction utilities in touched code.- A merchant signs up with a phone number (OTP), creates their organization (the merchant business), and lands on an empty dashboard in their brand.
- Plans
starter/growth/proare priced in SAR and attached to the organization; a trial subscription can be billed. - The Mahalli Handbook (this
docs/folder) renders inapps/docsin English with ADRs. pnpm lint,pnpm format:check, andpnpm type-checkpass.
- The glass design system renders on every surface of
- Status (2026-09-18):
- 1 — done: glass renders on
saas,marketing, anddocsin light and dark (screenshots reviewed); fallbacks compiled but not yet exercised under reduced transparency / forced colors. - 2 — done:
arandenbundles are structural mirrors (574 leaves); the cohesion audit finds no physical-direction utilities in touched code. - 3 — partial: phone OTP sign-in verified end to end against the local Postgres (send → verify → session with
phoneNumberVerified); organization creation and the branded empty dashboard come from upstream and were not exercised in this pass. - 4 — partial: plans are configured in SAR and attached to the organization; billing a trial needs a PSP that serves Saudi merchants (open question Q2 / Q13 — Stripe is the reference implementation only).
- 5 — done: the Handbook renders from the root
docs/folder. - 6 — done: format, lint, type-check (22 tasks) and unit tests (99) pass.
- 1 — done: glass renders on
Phase 1 — The wedge: storefront + payments
sitesv1:<slug>.mahalli.sa, one template for each of 4 sectors, catalog / menu, branches on a map, WhatsApp (implemented).paymentsv1: payment links / QR, mada + Apple Pay + cards through the PSP (Moyasar), Tabby and Tamara as payment methods, ZATCA simplified invoice (QR) (implemented).presencev0: GBP connection and sync of hours / photos / branches.- Wathq CR verification in onboarding with automatic Sector Pack suggestion and primary location seeding (implemented).
- Exit: 50 paying merchants (Design Partners), ≥ 60% of them have collected at least one payment, NPS ≥ 40.
Phase 2 — Presence and content
presencev1: reviews + AI replies + Posts + presence report.socialv1: brand-bound templates, text / image generation, scheduling and publishing to IG / X / Snap / TikTok, unified inbox.- Custom domain (Cloudflare for SaaS, planned
apps/storefront) + the Growth upgrade. - Weekly summary over WhatsApp (Copilot v0).
- Exit: 30% of merchants on Growth or above, ≥ 4 posts / month per active merchant.
Phase 3 — Local ads
adsv1: Google / Snap / TikTok connection, 3 campaign templates, consented customer audiences, ROAS report, waste alerts.- Exit: 20% of merchants have launched a campaign; reported average ROAS ≥ 3× on store-visit templates.
Phase 4 — Marketplace and accounting
marketplacev1: add-on catalog, install / uninstall, add-on billing.- Accounting add-on through an embedded partner (invoice and expense sync, VAT return), and a bookings add-on.
- Partner API + documented webhooks.
- Exit: 30% of merchants with at least one add-on; first third-party add-on published.
Phase 5 — Scale
- Copilot v1 (tools across all modules), SoftPOS, additional Sector Packs, agent / reseller programme, small chains (multi-location dashboards).
- Exit: 1,000 paying merchants, churn ≤ 3%, gross margin ≥ 70%.
What we do not build in any of these phases
- A full POS, an online store with shipping and warehouses, full payroll, financing / lending, a standalone customer app (a PWA from the storefront is enough).
Compliance and Regulation
Saudi regulatory map for Mahalli — ZATCA e-invoicing and VAT, SAMA and BNPL, PDPL, commercial registration, e-commerce, messaging, advertising, sensitive sectors, and security — plus the decisions that must be made before code.
Go-to-Market
Distribution channels ranked by cost and impact, the launch sequence, and the core messages for shop owners and partners.