The single reference for how the launch system works. Read this before editing anything.
| Piece | Version | Lives at | Job |
|---|---|---|---|
| Migration tool | v2.4.1 | /migrate | POS export to validated Shopify product CSV |
| Kickoff form | v3.2 | /kickoff | Call capture, generates record and summaries |
| Dashboard | v3.1 | /dashboard | Portfolio overview, per client boards, slip logic |
| EOW generator | v2.1 | /eow | Friday Shopify update from the portfolio |
| ai-map function | v1 | /netlify/functions | Holds the Anthropic key, proxies AI mapping calls |
| Email templates | v1.1 | /templates | All trigger emails |
| Hardware list | v1.2 | Drive (xlsx) | Shopify AU catalogue with GL recommendations |
Kickoff form → project record JSON → Dashboard (progress ticks live here) → portfolio JSON → EOW generator
The project record is the single source of truth per merchant. The form creates it, the dashboard updates it, the EOW reads it. Records reopen in the form for edits and dashboard progress survives the round trip.
| Field | What it holds |
|---|---|
| merchant | name, url, contact, email, phone, leadSource, poNumber |
| setup | currentPos, locations, registers, skuCount, barcodes, customers, giftCards, shopifyPayments, tax |
| gates | store, byop, plan, terminal, hardware. Each: done (bool), date |
| hardware | receipt, drawer, scanner, labelprinter. Each: existing, want |
| dates | kickoff, dataDue (+3), orderBy (+2), hardwareEta (order +7), migrationDone (+10), testing (+12), goLive (+14) |
| futureTags | training, online, shipping, loyalty, labels. Each: answer (yes/no/blank), notes |
| progress | Task ticks written by the dashboard: todo, doing, done per task id |
| outOfScope, callNotes, hwExisting, availability | Free text captured on the call |