cocottetech/@platform/codebase/@features/ai-copilot/docs/D-onboarding.brief.md
natalie 1b719e1fd7 chore(bootstrap): initial V4 commit
Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac
working tree at ~/Code/@projects/@cocottetech/. node_modules and build
artifacts excluded via .gitignore.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 08:11:41 -07:00

81 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# D — Onboarding + persona-seed interview
## Goal
First-run experience: get Quinn from cold-install to a working ai-copilot in under 5 minutes, with a seeded `personas` row that ai-copilot + content-* specialists can lean on from day one.
## Designer skim
- **Headline UX**: 5-minute first-run. SSO device-link → conversational persona-seed interview (812 Qs via voice or text) → ai-copilot summarizes + Quinn approves → handoff to chat-home.
- **Flows (3)**: D1 SSO device-link · D2 persona-seed interview · D3 first-run empty state.
- **States (7)**: splash · device-link in progress · device-link error · mid-interview turn · persona summary review · persona save error · onboarding complete.
- **Pair-with**: [`persona-seed-interview.screen.md`](./persona-seed-interview.screen.md).
- **Blocking Qs**: [OPEN-DECISIONS.md](./OPEN-DECISIONS.md) → D-Q1 voice-vs-text default, D-Q2 interruptible TTS.
## Constraints
- Auth via SSO device-link against `quinn.sso` (federated, P0); will migrate to `platform.sso` later — UI should be auth-provider-agnostic.
- Persona-seed interview is **voice + text**: Quinn can speak answers (TTS prompts; STT capture) OR type. Mixing is fine.
- Persona is written via `PATCH /api/v1/personas/:user_id` once the user record exists.
- Reuse `lilith-messenger-ios/Core/Auth/{AuthManager,SSOAuthenticator,KeychainService}.swift` — port unchanged.
## Flows
### D1 — SSO device-link
1. Splash with brand mark (CocotteAI).
2. Tap "Sign in" → opens device-link QR / code displayed on iPhone.
3. Quinn scans on a trusted device OR enters the code in `quinn.sso`'s portal.
4. Device link confirmed → JWT issued → Keychain storage → home.
5. If user has no `personas` row → push to D2.
### D2 — Persona-seed interview
A guided conversation, ~812 questions, surfaced as a chat thread with `ai-copilot`. NOT a form.
Question shapes (designer to refine wording):
- "What's your brand voice in one sentence?" (free text, ~140 chars)
- "Pick 35 words your audience would say about you." (chip select with custom-add)
- "Who's your audience? Walk me through a typical fan." (free text / voice)
- "What surfaces do we plan for? OF / X / IG / TikTok / Tryst / TS4Rent / others?" (multi-select)
- For each selected surface: "Different voice here than your default? (yes/no — if yes, how?)"
- "What's off-limits? Topics, kinks, places I should never bring up." (free text, multiline)
- "What's a typical week like? When do you shoot? When do you post?" (free text / voice)
- "Anything I should know to not embarrass you?" (catch-all)
After: ai-copilot summarizes the persona back to Quinn and asks for sign-off. On approval → write `personas` row.
### D3 — First-run empty state (after persona seed)
- "Welcome — strategist is drafting your first 14 days. Back in ~30 seconds."
- Progress indicator while strategist runs (post-P0 — for P0 this state is "We're ready when you upload your first shoot or DM us a question").
## States to design
- Splash (signed-out).
- Device-link in progress (waiting on QR scan).
- Device-link error (timeout, wrong code).
- Mid-interview turn (question + voice/text input options).
- Persona summary review.
- Persona save error.
- Onboarding complete → handoff to chat home.
## In-the-wild copy
**Splash CTA** (hearth, dialed warmer — first impression):
> Welcome. Set the kitchen up.
**Device-link in progress** (working):
> Scan the code on a trusted device. Cocotte will know it's you.
**Mid-interview question, voice or text** (hearth):
> Two more, then she'll let you go. What's a typical week? When do you shoot, when do you post?
**Persona summary review** (working — Quinn is deciding):
> Here's what Cocotte heard. Voice: warm, dry, no marketing. Off-limits: real name, ex, Vegas. Surfaces: OF, X, Tryst, TS4Rent. Save and start, or rework anything?
**Onboarding complete, handoff** (hearth):
> She's ready. Drafts will be in the drawer by morning.
## Out of scope
- Multi-account switching (Quinn's only operator P0).
- Reset-and-redo persona (lives in persona-editor drawer, brief B5).
## Open questions
- Voice-first or text-first as the default input mode?
- Should the interview accept Quinn typing while ai-copilot is still speaking the next question (interruptible TTS)?
- Skip-to-end affordance, or force completion?