7.1 KiB
Implemented — the product overlay
Last verified: 2026-08-02 against commit
b876490.
The mapping product/'s 14 business areas need and never had: which flow builds
each area, and what state it's actually in. product/ itself stays untouched — this file is the bridge
between "what the business is" and "what we built." States: built (end-to-end real) · partial (real with
named gaps) · mocked (UI real, data fake) · not started · deferred.
Every row's Gaps column links into backlog.md; the full evidence is in the linked docs/flows/ file, not restated here.
Business area → build state
| # | Business area | Doc | Primary flow(s) | State | Gaps |
|---|---|---|---|---|---|
| 01 | Actors & Onboarding | product/business/01-… | auth-login-otp (built), onboarding-customer, onboarding-nurse | partial | BL-023, BL-031..038, BL-085..092, BL-193..197, BL-249 |
| 02 | Nurse Verification | product/business/02-… | nurse-verification | mocked | BL-010 (blocker), BL-080..084, BL-190..192, BL-214, BL-233 |
| 03 | Catalog & Pricing | product/business/03-… | nurse-catalog-and-pricing | partial | BL-018 (blocker — zero option groups outside Development), BL-069..072, BL-176..178, BL-231 |
| 04 | Search & Matching | product/business/04-… | search-and-discovery | partial | BL-014 (blocker), BL-103, BL-104, BL-210..213, BL-221, BL-232 |
| 05 | Booking & Scheduling | product/business/05-… | booking-request | partial | BL-006 (blocker), BL-040..044, BL-071, BL-138..143, BL-228, BL-260 |
| 06 | EVV / Service Delivery | product/business/06-… | booking-lifecycle-evv | partial | BL-016 (blocker), BL-039, BL-043..046, BL-133..137, BL-259 |
| 07 | Cancellation & Refunds | product/business/07-… | cancellation-and-refunds | mocked | BL-009 (blocker), BL-047..054, BL-144..148, BL-215, BL-237 |
| 08 | Payments & Escrow | product/business/08-… | checkout-and-payment | partial | BL-005 (blocker), BL-058..062, BL-156..159, BL-253, BL-262 |
| 09 | Installments / BNPL | product/business/09-… | bnpl-installments | mocked | BL-007, BL-008 (blockers), BL-126..132, BL-227, BL-238 |
| 10 | Payouts | product/business/10-… | nurse-earnings-and-payouts | mocked | BL-012 (blocker), BL-073..076, BL-179..184, BL-240..242 |
| 11 | Reviews, Trust & Safety | product/business/11-… | reviews | partial | BL-017 (blocker), BL-099..102, BL-207..209, BL-243 |
| 12 | Messaging & Emergencies | product/business/12-… | messaging-tickets | partial | BL-063..068, BL-160..168, BL-247, BL-261 |
| 13 | Tax, Invoicing & Legal | product/business/13-… | partner-center (+ invoice half of checkout-and-payment, VAT — see BL-060) |
mocked — weakest area | BL-013 (blocker), BL-093..095, BL-198..201, BL-236, BL-239, BL-246, BL-254, BL-255 |
| 14 | Notifications & Admin | product/business/14-… | notifications (partial), admin-backoffice (mocked) | mocked (admin half) | BL-001, BL-002 (blockers — the RBAC finding that touches 11 of 14 areas), BL-114..117, BL-124, BL-125, BL-169..175, BL-244, BL-245 |
No area is orphaned — all 14 map to a primary flow, matching docs/flows/index.md's coverage accounting. Area 13 is confirmed the weakest: invoicing and VAT are split across two flows with no single owner, the entire partner-center portal is mocked with zero tenancy, and BNPL/invoicing can name two different merchant-of-record centers for the same booking (BL-199).
One flow has no product/ source at all: account-and-settings is a ui-phase-9 UI decision with no
business-area file behind it — not a gap in this table, just a fact worth knowing before editing it.
Cross-cutting: the RBAC finding
BL-001 (admin RBAC grants only the literal role admin, which no seeded account
holds) is the single defect with the widest blast radius in this table — it independently degrades the admin
half of areas 02, 07, 09, 10, 11, 12, 13 and 14, plus the admin-only surfaces inside 03, 05 and 06. Fixing it
does not fix any area's mocked state on its own (most of those are separately blocked by their own
USE_*_MOCK flag or missing route — see each row above), but it is the single highest-leverage fix in the
whole backlog: docs/flows/index.md independently
found the same root cause from the code side.
Data model — never-built product tables
The STATUS logs and product/data-model/index.md name 8 tables
modeled in the product data model that have no implementation today, all [DEFERRED] by product decision
(not oversight — see decisions.md):
| Table | Backs | Product doc |
|---|---|---|
organizations |
Employer/company account model | 13-partner-centers-and-future.md |
organization_nurses |
Employer↔nurse membership | same |
fraud_flags |
ML-scored fraud signals (manual suspension covers this today) | same |
recurring_booking_schedules |
Recurring/subscription bookings | same |
bnpl_settlement_entries |
Tranched BNPL settlement (one settlement row covers it today) | 08-bnpl.md |
nurse_availability_slots |
Soft scheduling-guidance windows | 05-booking-and-scheduling.md |
nurse_availability_exceptions |
Time-off exceptions to the above | same |
incidents |
First-class incident entity (support alerts cover this today) | 11-reviews-trust-and-safety.md |
None of these are backlog items — they're recorded product decisions to not build yet, carried in backlog.md's Deferred section (BL-222 through BL-247) with their pull-triggers.