How to read this. Humans: the intro, §1 state machine, and §9 open questions give the shape. Engineers/Claude: all sections - especially §2 taxonomy, §3 validation, §4 error states, and §6 system notes.
Action - copy sign-off. "Leah" is the founder, who appears as a friendly guide throughout the flow. All of her speech-bubble copy in the prototype is placeholder and must be reviewed and edited by Leah before build.
Copy style. Use normal hyphens (-), not em or en dashes, throughout all product copy.

1 State machine & scope

This spec owns the application. After submit, the caregiver is handed to the existing onboarding (PR26) - they set a password by email, complete their profile, the team reviews, and they go live. The password-set email is sent immediately on submission (not after review), so the caregiver can finish their profile before the team reviews it.

This spec · logged outVisitor

/caregiver/register. No account yet.

This spec · account in backgroundCompleting application

Multi-step form. Draft autosaved.

This spec · handoffSubmitted

"Check your email to create your password."

PR26 · existing onboardingPassword & profile

Set password → agreements, training certificate, payout details.

PR26Under review

Team review within 72h.

PR26Live & matchable

Approved; visible to parents.

This spec - landing → application → submitted/handoff screen. Covered in PR26 - password, profile completion, review, go-live (referenced only).

Declined is a terminal branch off review - communication & reapply still open (Q8).

2 Items taxonomy

Every field the application collects, in order, and whether it gates submission. Must blocks submit · Nudge optional · Cond conditional.

StepField(s)ClassNotes
LandingEmailMustRequired + format-validated (gates "Get started"). Creates account + draft in background. Locked after creation - it's the login identity, shown read-only with no in-flow edit. Early uniqueness check (Q7).
GoalsWhat you're hoping forNudgeSelect up to 2 (single interaction); curated list, no "Other".
About youFirst name, Last nameMustRequired.
PhoneMustInternational (E.164). Pronouns removed.
About youAddress (line 1, city, country)MustGlobal address lookup + manual fallback. Line 2 / postcode / region optional. Framed as safeguarding, not proximity.
Your practiceCaregiver type (4: doula, lactation, sleep, hypnobirthing)Must≥1. Drives the conditional specialisms below.
Years practising / Births supportedMustMutually-exclusive bands (incl. "less than a year").
Hourly rate (1-hr virtual)MustCurrency (ISO 4217) + banded amount. Match input + analytics (Q16).
Services / care types · Bio (care style)Must / NudgeBio is mandatory - shown to parents & used for matching. Services optional.
Your practiceAreas of specialisationNudgeRole-conditional - the per-type specialism lists (defined by the founder) for each caregiver type selected, plus a shared Family & identity group. Sits in "Your practice" (expertise).
Your matchesAvailability (grid + school-holiday flag)NudgeStarting point only; granular settings added later.
LanguagesMust≥1; type-ahead from a standard list; English pre-added.
Check & submitGDPR consentMustHard gate on submit; timestamp stored.
Collected later, in PR26 onboarding: password, agreements (service agreement + code of conduct), training certificate, payout details (Stripe). Certificates/documents are not part of the application.

3 Validation rules

All rules enforced client-side and server-side - the public submission endpoint must re-validate (client checks are bypassable).

FieldRule
EmailStandard format; lowercased; uniqueness checked at first entry (Q7).
PhoneInternational, incl. country code; strip separators; store E.164. Use a library (e.g. libphonenumber).
AddressGlobal lookup; line 1, city, country required; postcode/ZIP optional (format varies by country) - never hard-block.
NamesRequired; trimmed; sensible max length.
Bio (care style)Required; minimum length to avoid empty/placeholder submissions.
Type / Years / Births / LanguagesType ≥1; Years & Births single band each; Languages ≥1.
Hourly rateCurrency from ISO 4217; amount as a defined band (Q16).
GDPR consentMust be explicitly ticked; store timestamp.
Continue gating. Each step's primary action stays disabled until that step's required fields are valid, evaluated in real time (on input), not only on click. Inline errors still show if a user edits a field then leaves it invalid.

4 Error & edge states

5 Responsive & layout (mobile + desktop)

RuleDetail
Single column alwaysOne column at every width - multi-column forms hurt completion. Desktop adds width & breathing room, not extra columns of fields.
Breakpoints<768 mobile (full-width). ≥768 centred card, max 680px. ≥1100 max 760px.
"Phone frame"A mobile artifact only; on desktop it renders as a centred card on the page - no device chrome.
Padding / typeContent padding scales 20 → 56 → 72px; H1 23 → 28px. Tap targets ≥44px on mobile.
Selection grids2-up mobile → 3-up ≥768px (shortens long lists, e.g. the 12 doula specialisms).
Footer navBack + Continue at the foot of the card; may stick to bottom on mobile. Gating (§3) applies at all widths.
LandingMay use a wider/2-column hero on desktop; form steps stay single-column.

6 System notes & flags (engineering)

Retention & pre-population (must-have). Everything captured in the application must be retained and surfaced in the caregiver's profile, with fields pre-populated. When they reach the PR26 profile-completion step, they should see and edit what they already entered - never re-enter it. The application and the profile must read/write the same caregiver record.

Flags & conflicts to resolve before build

7 Analytics

PostHog - deferred to a later phase. The step-level funnel and event taxonomy (registration started / step viewed / step completed / abandoned / submitted) are to be added later, not in this build. PII discipline (no raw email/phone/address; EU host) and per-step routing will be defined then.

8 Out of scope

9 Open questions

Stable numbering across versions. Reply by number.

Q5
Reconcile registration route + caregiver login with canonical /auth.
CLAUDE.md §10.1 forbids a separate caregiver login page. Confirm before build.
Q6
Explicit status enum vs. overloaded active boolean?
Five+ states needed. Assumption: introduce a status field + migration.
Q8
Declined applicants - email them, and a reapply window?
Handled in review (PR26). Assumption: respectful decline email + defined window.
Q10
Global address lookup - which provider, pre-fill vs. validate-only?
Cost per lookup + data residency. Assumption: a global autocomplete (e.g. Google Places) + manual fallback.
Q11
Drop-off re-engagement - provider & cadence?
Per CLAUDE.md §10.3: Resend for the secure resume link, Klaviyo for the nudge cadence (e.g. +24h, +3d).
Q13 / Q14
Documents & insurance - handled in PR26 onboarding.
Now collected in the PR26 profile step (training certificate, agreements). Still to settle there: which documents are uploaded vs. viewed, and whether insurance expiry is captured (for renewal reminders / auto-pause).
Q16
Rate banding - scheme, and how across currencies?
£-bands don't map cleanly once global. Options: per-currency bands / raw+band-at-analysis / FX-normalise. ISO 4217 covers currency only.
Q18
Confirm specialisms dropped from the per-type lists.
"Bereavement / loss" & "complex health needs" aren't in the new role lists. Assumed intentional; confirm or find them a home.
Resolved / superseded: Q1 (goals = select up to 2) · Q2 (no parallel set-up - profile via PR26) · Q3 (guide-voice density - folded into Leah copy sign-off) · Q4 (review SLA = 72h) · Q7 (early email-taken recovery) · Q9 (certs out of application) · Q12 (PostHog deferred) · Q15/Q17 (rate captured; setup handed to PR26) · Q19 (password email sent immediately on submit - see §1).