cocottetech/@platform/codebase/@features/ai-copilot/docs/persona-seed-interview.screen.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

10 KiB
Raw Blame History

persona-seed-interview.screen

Single-screen breakdown for the persona-seed interview — the first-run conversational flow where Quinn teaches Cocotte who she is, what her voice sounds like, what's off-limits, and what brands she operates. Outputs become rows in personas, brands, and safety_blocklist. Voice register: hearth, dialed warmer than usual (this is the brand's strongest first impression — per 00-system/voice.md §V5).

Context

  • Entered after SSO device-link (brief D step 1) → empty CocotteAI state.
  • Conversational, not form-based. Cocotte asks one question at a time; Quinn answers in natural language.
  • Skippable per-question (Quinn can say "skip" or "later"); skipped seeds use sensible defaults Cocotte will refine over time.
  • ~68 questions; total ~5 minutes if Quinn answers tersely, ~15 if she expands.
  • Outputs visible immediately in the persona drawer (brief B5) so Quinn can edit if Cocotte misread.

Layout (full-screen onboarding chat — not the regular chat-home)

┌─────────────────────────────────────────────────┐
│                                          Skip   │ 44pt — minimal top bar
├─────────────────────────────────────────────────┤
│                                                 │
│   ┌─────────────────────────────────────────┐  │
│   │ 1 of 8 · Voice                          │  │   progress dot row + label
│   │ ━━░░░░░░░░░░░░░░░░░░░░░░░░░░░░         │  │
│   └─────────────────────────────────────────┘  │
│                                                 │
│ Cocotte                                         │
│ Welcome. Set the kitchen up so I can            │   hearth register; warm opening
│ start tending well.                             │
│                                                 │
│ First — how do you talk to fans? Pick one or    │   the question
│ describe it your way.                           │
│                                                 │
│ ┌─────────────────────────────────────────┐    │   suggested chips (tap-to-fill)
│ │ Playful · teasing                        │    │
│ ├─────────────────────────────────────────┤    │
│ │ Direct · businesslike                    │    │
│ ├─────────────────────────────────────────┤    │
│ │ Editorial · slightly literary            │    │
│ ├─────────────────────────────────────────┤    │
│ │ Warm · soft                              │    │
│ └─────────────────────────────────────────┘    │
│                                                 │
│ ╭─────────────────────────────╮ [🎤]            │   free-text composer (always available)
│ │ Or describe it your way…    │                 │
│ ╰─────────────────────────────╯                 │
│                                                 │
└─────────────────────────────────────────────────┘
                                                  │ 34pt — home indicator

Question sequence (8 questions; reorderable / extensible)

# Topic Goal Stored in
1 Voice register How Quinn talks to fans (chips + free text) personas.voice_register, becomes brief J ported persona
2 Off-limits phrases / topics What never appears in outbound copy safety_blocklist.kind='phrase', per brief K
3 Brands operated Which surfaces Cocotte will tend (Tryst, TS4R, OF, X, brand sites) directory_handles, social_handles per platform.db schema
4 Tours / travel posture Does Quinn travel? How far in advance to announce? Lead-time guardrail tours.config per brief H §H3
5 Autonomy comfort How much should Cocotte auto-act vs ask? Anchors initial confidence thresholds per-specialist defaults, brief L §L3 + brief I §5
6 Quiet hours When should Cocotte never bother her? global notification config per brief C
7 Coop membership (optional) Should Cocotte invite her to a coop network? brief N coop invitations; defaults to no auto-join
8 Anything else Free-text catch-all; Cocotte uses it to seed Facts DB per brief J Facts DB (key/value memory)

Components

Component Notes
Top bar "Skip" rightward — skips current question. No back chevron (it's a forward flow); long-press progress dots to revisit.
Progress strip Dot row + label; tap any past dot to revisit/edit that answer.
Question card Cocotte's bubble + the actual prompt below. Voice: hearth, with warmest delivery for #1 (Welcome) and #8 (catch-all).
Suggested chips 35 quick-fill options per question. Tappable, mutually exclusive (chip), or multi-select (chip set). Tappable to fill the composer, then user can edit before submitting.
Composer Always available below the chips. Voice mic active. Submitting advances to next question.

States

  1. Welcome (Q1 init) — first question; warmest copy.
  2. Mid-flow (Q2Q7) — standard format; user can skip per-question or back-tap progress.
  3. Free-text answer pending — user typing; chips dim; submit-arrow on composer.
  4. Chip selected (filling composer) — chip text inserted in composer; user can append or just submit.
  5. Multi-select chip set (Q3 brands, Q4 tour cities) — chip set allows N selections; "Continue" CTA appears.
  6. Cocotte clarifying — if Quinn's answer is ambiguous, Cocotte asks one follow-up: "By 'editorial', do you mean longer-form like Vogue, or shorter and witty?" Then advances.
  7. Skip confirmation — first skip: small toast "OK, I'll use a safe default and learn over time." Subsequent skips: no toast (don't nag).
  8. Final question (Q8 catch-all) — also offers "I'm done" CTA in addition to "Continue".
  9. Complete — Cocotte: "Set up. I'll get tending — say hi when you want." Routes to chat-home in the "first-day quiet" state (per chat-home.screen.md state 2).
  10. Connection lost mid-flow — answers cached locally; on reconnect, flow resumes where Quinn left off (per brief M §M2c offline).

Interactions / gestures

  • Tap chip → fills composer, but does NOT auto-submit. User decides.
  • Voice mic on composer → tap = push-to-talk; long-press = hands-free (per A §voice).
  • Submit arrow → advances to next question + animates the question card up + brings the next card in from below.
  • Long-press progress dot for a past question → re-opens that question with the previous answer pre-filled.
  • Skip (top-right) → records skip event; advances.
  • Two-finger swipe down on the screen → minimize-and-resume-later (rare; defaults to staying in flow).

Edge cases

  • Quinn refuses to answer Q2 (off-limits) — Cocotte respects, but inserts a recommended-defaults card: "Some defaults I'll start with — you can edit these later." (Real-name redaction, location-fuzzing, etc.) per brief K §K2.
  • Quinn enters a brand handle that doesn't validate (Q3) — gentle: "I can't reach Tryst with that handle. Skip and add later?" Doesn't block flow.
  • VoiceOver / accessibility — full flow readable; chips are buttons with hints "answers question {N}".
  • Reduced motion — replace card-slide-up with crossfade.
  • First-run on iPad / web companion — flow runs on iPhone only at P0; iPad/web prompts user to "open CocotteAI on phone to set up" per brief E.
  • Quinn already had v2 data (per brief J port) — interview is shorter (skips brands, off-limits if already in v2); imports them silently and confirms each: "I see you have these handles from v2 — keep them?"
  • Mid-interview push notification arrives — DO NOT interrupt onboarding. Notifications queue per brief C; the interview keeps the screen.

Outputs (data written)

On completion, the following rows are written via platform.api:

  • personas row (Q1 voice + Q3 brand seeds)
  • safety_blocklist rows (Q2 phrases)
  • directory_handles + social_handles rows (Q3)
  • tours.config (Q4)
  • per-specialist policy rows with initial auto/draft posture (Q5)
  • notification_config (Q6)
  • Optional coop_invitations_consent (Q7)
  • facts entries (Q8)

Each write emits an agent_actions row of action_type='persona_seed_set' so first-run is auditable.

Out of scope

  • iPad / Mac / web variants of the interview (defer; iPhone-only at P0).
  • The "import from v2" sub-flow (separate v2-import.flow.md if it gets complex).
  • Re-interview mechanic (running this flow again later to refine) — covered conceptually but no dedicated state here.