Mock of B1 — Daycare redeems an access code and joins

Sources: spec §3.1 B1, prd.md §5 Journey 1.

Invariants enforced in this screen: founding_tier locked-in at redemption, immutable after (AC4); access-gate enforcement (no daycare signup without a valid code, §1 Core Model).

Inference flags:

B1 — Access code redemption

Screen 1 — Code entry (pre-account)

No daycare record is created until the code validates. Validation happens before any account is created (§3.1 step 1).

Continue

Error states (exact spec copy, §3.1 error cases)

"This code isn't valid. Check the code or contact your referring daycare." (invalid code)
"This code has expired." (expired code)
"This code has no remaining invitations." (exhausted code)

[exact wording for "code already redeemed by this identity — resume existing setup" path (§3.1 error case 4) — not specified in spec, only the behavior]

Screen 2 — Founding-member welcome moment

Welcome

[welcome-moment copy — not specified in spec; per PRD J1 step 3: "warm, brief, acknowledges they are one of the first centers on the platform and that their founding terms are now locked in"]

Founding daycare · terms locked in

[founding-tier rate display — spec §5.3 notes founding-tier daycares may have 85% share rate; whether the exact rate is surfaced here is not specified]

Per §3.1 step 3: "static content; does not block or require input." Per AC3: welcome is observed before B2, not after, not skipped.

Let's set up your center → (transitions into B2 in the same session; no re-auth per §3.1 step 4)

inference: PRD Journey 1a says the director is also offered a "See what a parent sees" moment right after the founding-member welcome, before setup begins. Mock shows this as a second CTA:

See what a parent sees (skippable) → enters B10 preview mode

Screen 3 — Hand-off into B2 setup

Director is carried into the center-setup wizard with an active admin session. See B2.

Postcondition stamped here: Daycare status = setup_in_progress, access_code_id bound, founding_tier = true, remittance_rate set from access code (default 0.80 at launch, higher for founding-tier per §5.3 Q2).