Flip 360 Commission Platform
INTERNAL PMO PAPER · Confidential — for Steerco distribution only · Tabled at SC#3 (2026-07-06)
← Backlog register  ·  EPIC-02
WS2 · Tech (Commission Engine + CRM) Delivered Sprint AC-late
EPIC-02

Onboarding Wizard — Guided Provider Signup Flow (Mr Punter’s Design)

Owner (Accountable)
Ms Oliver (WS2 Lead per D110)
Consulted
Mr Punter (originator, requirements consult) · Ms McGowan (marketing narrative consult) · AI agent team (delivery)
Steerco Links
D110 · D116
Depends On
EPIC-04
◆ Attribution — Mr Punter’s Originating Idea
Mr Punter proposed the onboarding wizard architecture in the working session of 2026-07-04 (captured as Item 5 of the flying minutes). Mr Punter’s originating design ethos is that onboarding should feel like a concierge introduction, not a form-fill — the provider is being invited into a curated network, not registering for a SaaS product. Design, build, and implementation is the responsibility of the PMO Tech Workstream (WS2) under the Chair’s accountable ownership per Steerco Decision D110.

Context

The current signup flow (embedded in /crm and /app) is transactional — email, password, basic details. Mr Punter observed in the 2026-07-04 working session that this misses the whole point: providers joining Flip360 are joining a curated federated network, not registering for another SaaS tool. The wizard must reflect that. The wizard is also the operational moment where multiple business rules crystallise into a provider record: profession (from PROFESSIONS in market-sizing.ts), CM territorial assignment (postcode-exclusive — Mr Punter's originating idea from flying-minutes Item 6), consent scaffolding (EA Rule 4 — Sally-shaped referral consent from flying-minutes Item 10), and Foundation opt-in (Mr Punter's community-earnings redistribution architecture from flying-minutes Item 7). Scope for Phase 1 = AU-only (AU postcodes, AU professions, AUD membership fee $1,500). NZ scaffolding flagged as Phase 3 backlog.

Outcome Statement

A production onboarding wizard, live at cosaiflip360.org/onboarding (or similar), that a new provider walks through in under 8 minutes. Provider emerges as a live record in the CRM, with profession assigned, CM territory recorded (or CM-vacant flagged), Rule 4 consent scaffold in place, Foundation opt-in captured, $1,500 membership fee committed, and a welcome-pack email fired via the AI-agent-drafted template system.

Sub-Epics

EPIC-02a · Sprint AC-late
Wizard Step Design + Data Model (Delivered)
AU · Phase 1
Acceptance criteria
  • /onboarding/step/1..8 all live on prod — HTTP 200 confirmed per step
  • /onboarding root — HTTP 302 (session-recovery redirect to last-visited step, working as designed)
  • Step 1 Welcome + concierge framing rendered (federated network, not form-fill)
  • Step 2 Profession selector rendered against PROFESSIONS from market-sizing.ts (18 AU professions)
  • Step 3 Postcode + CM territory lookup rendered against cm_territories D1 table (9 rows verified in prod)
  • Step 4 Business details capture (ABN, registration numbers, professional-body membership) rendered
  • Step 5 Foundation opt-in rendered (50%/80%/20% community-earnings redistribution)
  • Step 6 Rule 4 consent scaffold rendered (Sally-shaped referral consent framing)
  • Step 7 Membership fee $1,500 AUD screen rendered — D-SEQ-05 shared RRP source of truth consumed via rrpByKey() for slider bounds. Stripe Connect activation deferred (secrets required)
  • Step 8 Welcome pack screen rendered — SendGrid live send deferred (secrets required), scaffold has drop-in shape parity
  • D1 schema: onboarding_sessions table live via migration 0029_epic_02_03_04_foundations.sql
  • src/routes/onboarding.tsx delivered (562 lines) under commit 879e10b
Routes
/onboarding /onboarding/step/:n
Files
src/routes/onboarding.tsx (562 lines, delivered) migrations/0029_epic_02_03_04_foundations.sql (delivered)
Stripe Connect + SendGrid live sends deferred pending secret provisioning — scaffolds shipped with shape parity for drop-in upgrade. Explicit disclosure in commit 879e10b message.
EPIC-02b · Sprint AC-early
CM Territory Lookup Integration (Delivered)
AU · Phase 1
Acceptance criteria
  • /crm/territories live on prod — HTTP 200 confirmed (466-line route)
  • D1 cm_territories table populated via seed — SELECT COUNT(*) = 9 verified in prod
  • src/data/cm-territories.ts seed data (214 lines) delivered under commit e48e1b8 (Sprint AC-early)
  • scripts/seed-cm-territories.sql shipped for reproducible re-seed (100 lines)
  • Postcode → CM assignment lookup consumed by /onboarding/step/3
  • CM-vacant flagging feeds EPIC-04 recruitment pipeline (cross-consumer of same table)
  • D1 schema: cm_territories table with columns (postcode, cm_provider_id, foundation_pool_id, status) via migration 0029
Routes
/crm/territories
Files
src/routes/crm-territories.tsx (466 lines) src/data/cm-territories.ts (214 lines) scripts/seed-cm-territories.sql (100 lines) migrations/0029_epic_02_03_04_foundations.sql

Hazards

  • Postcode dataset licensing (Australia Post PAF licensing implications) — flag for WS4 counsel
Ratification note for SC#3 chair
For SC#3 chair (2026-07-06): EPIC-02 delivered ahead of original Sprint AE anchor — collapsed into Sprint AC-late (commit 879e10b) alongside EPIC-03 + EPIC-04. Three-destination audit trail: sandbox 879e10b · GitHub origin/main · Cloudflare prod /onboarding/step/1..8 all HTTP 200. Stripe Connect and SendGrid live sends deferred pending secret provisioning — scaffolds shipped with shape parity. Mr Punter’s originating concierge-framing design attribution intact. EPIC-02b CM territory integration delivered under Sprint AC-early (commit e48e1b8, 9 rows verified in prod D1). D-SEQ-05 shared RRP source of truth consumed by Step 7 membership-fee slider.
← Back to backlog register  ·  Flying minutes 2026-07-04 →
Matt's page