Onboarding
10-step conversational sign-up. Beacon asks about your child the way a therapist would, then uses every answer in every future conversation.
When to use this
You only do this once. It's a conversational form: 10 questions, each tied to a future feature. Skip nothing; the answers wire into the Crisis page (regulator), the Workshop tools (motivator), the chat (challenges + communication style), and Memory (your top goal becomes the first fact Beacon stores).
How it works
Welcome + 3 disclaimers
Privacy, AI-by-a-parent-not-clinician, not-a-replacement-for-doctors. Tap continue. UTMs from the inbound URL are captured here in localStorage; written to your profile on finish.
Email magic link
Email-only sign-in. Click the link, come back, continue. No password. The session is preserved through the round-trip via sessionStorage so you don't lose your typing.
Conversational profile (10 questions)
Child name โ age โ diagnosis stage โ communication style โ top 3 challenges โ motivators โ regulator โ top goal. Each answer is acknowledged with a personalized line ('Recently diagnosed โ got it, Beacon can help you figure out what to focus on first').
Resume + back nav
If you close the tab, sessionStorage holds your spot. Reopen, you're where you left off. You can also tap back at any step to redo an answer. The profile is only saved on the final tap.
What Beacon stores when you use it
child_profiles + memory + profiles: Three writes on finish. child_profiles holds the child data, memory stores the top goal as fact #1, profiles flips onboarding_complete and saves UTM attribution.
| Column | Type | Example |
|---|---|---|
| child_profiles.name | text | Avery Used everywhere Beacon names your kid (which is everywhere). |
| child_profiles.age | int | 6 Drives age-band logic in Workshop tools and chat. |
| child_profiles.diagnosis_timeline | text | 1-2 years in One of 5 chips. Frames Beacon's tone. |
| child_profiles.communication_style | text | Some words From COMMUNICATION_OPTIONS. Surfaces in chat + IEP prep. |
| child_profiles.challenges | text[] | ["transitions", "sleep", "sensory"] Up to 3. Drives challenge-aware default suggestions. |
| child_profiles.motivator | text | trains What lights them up. Used in Social Story + Activity Planner. |
| child_profiles.regulator | text | deep pressure hug What calms them. Surfaced on the Crisis page. |
| memory.fact | text | Parent's top priority: sleep through the night First row in your Memory. Beacon reads this on every chat boot. |
| profiles.onboarding_complete | bool | true Gates the rest of the app. Until true, /chat redirects back to /onboarding. |
| profiles.acquisition_source | jsonb | { "utm_source": "facebook", "utm_campaign": "..." } Captured from the inbound URL; attached to Stripe metadata on first subscribe. |
A real example
Maya signs up after seeing a Facebook ad. 6yo Avery, recently diagnosed.
| Step | Beacon_says | Maya_answers |
|---|---|---|
| 1. Name | What's your child's name or nickname? | Avery |
| 2. Age | Love it. How old is Avery? | 6 |
| 3. Diagnosis | And where are you in the diagnosis journey? | Recently diagnosed |
| 4. Communication | How does Avery communicate right now? | Some words |
| 5. Challenges (up to 3) | What's making life hardest right now? | Transitions, sleep, sensory overload |
| 6. Motivator | What are Avery's biggest interests? | Trains, dinosaurs, swinging |
| 7. Regulator | When everything gets too much, what brings Avery back down? | Deep pressure hug + her weighted lap blanket |
| 8. Top goal | If Beacon could help with one thing first for Avery, what would it be? | Sleep through the night |
| 9. Confirmation | Got it. I remember our conversations. Ready? | Tap Finish |
| 10. Result | (writes child_profiles, memory, profiles, enrolls in MailerLite onboarding nurture) | Lands on /chat with Avery's name in the greeting |
What Beacon auto-knows
- Everything you entered in onboarding (used in literally every other feature).
- Your acquisition source (UTM/cookies) attached to Stripe metadata on first subscribe.
- Your top goal stored as memory fact #1; Beacon reads it on every chat boot.
- Your onboarding step progress (resume-from-where-you-left-off).
How it fits with Chat
- Onboarding doesn't have a Discuss button (it IS a conversation already).
- After onboarding, every other feature can Discuss. Beacon's first reply usually references your top goal: 'I remember sleep is the priority. This routine targets that.'
Try these with Beacon
โI got Avery's regulator wrong. The deep pressure hug doesn't work anymore.โ
Routes to Settings โ child profile (edit fields). Once updated, Crisis Mode + Workshop tools use the new value on next render. Beacon also offers to chat through what's working now so you can update it from observation.
โI want to redo onboarding. Avery's situation changed.โ
Onboarding only fires once per profiles.onboarding_complete. To 'redo' it, edit fields in Settings one at a time. If you want a fresh start, Beacon can walk you through every field interactively from /chat.
โI started onboarding 3 days ago and lost where I was.โ
sessionStorage usually preserves progress within a session but expires when the browser is closed. Beacon writes onboarding_last_step on each completed step, so if you're signed in, /onboarding/profile resumes from there.
โMy partner wants to add their own child profile.โ
Beacon currently supports one child per user (child_profiles.user_id is unique). For a second child or a partner, create a second account. Roadmap has a multi-child v2 planned.