Design preview · On-Brand Support (TMPL-9P3X) — the founder + guest journey, phase-ordered · updated 2026-08-06 (8-section shape)

← Design HQ · HTML on GitHub · PRD — prd-as-on-brand-support.md

On-Brand Support — from Explore to a guest getting answered

On-Brand Support — Discover through Live, then the guest WhatsApp thread.

SizePortrait scrolls 375 · sideways is a slide deckNotes
Design brief — overview · scope · journey (closed)

The full-flow design contract for On-Brand Support, in the locked 8-section shape (design-canon.md § “Assistant-flow mockup structure”, 2026-08-06): Design overview · Scope · Content structure · User journey · Desktop screens · Mobile screens · Components · Future design. Companion to the master build contract: assistant-flows/assistant-lifecycle.html.

19 frames · card → live → monitored · mobile + desktop Brain Check — Connect-only, category-grouped · confirmation copy contract tab order Overview → Personalize → Connect → Try (T1155) pre: Overview → Personalize → Connect → Try · post: Pulse → Overview → Personalize → Connect (R30) amber = action/pending only · emerald = live only

Widths here sample a fluid continuum — content scales continuously; structure steps only at sm 640 · md 768 · lg 1024. Kit: design-canon.md U8.

Every $ figure drawn in these frames ($0.50 per session, wallet balances, MTD totals) is illustrative — prices arrive from props/the DB at runtime, never authored literals (single-source pricing).

Reading order: § Desktop screens first — every desktop frame, full flow, in journey order — then § Mobile screens below it — every mobile/sheet frame, same journey order, laid out side by side as a wrapping grid, grouped per phase (never a tall single-file column of screens). Two sections, never interleaved — a review-document convention only; 375 is still designed and scored FIRST in real work (U8 above still holds).

On-Brand Support answers guest DMs on the founder's WhatsApp, in the founder's confirmed voice, 24/7 — without the founder typing a word. It reads the Brain (prices, policies, hours, FAQs, brand voice), answers routine questions in seconds, and hands anything it can't ground — refunds, complaints, the uncertain — to the founder on Slack, pausing itself for that conversation until the founder is done. Six phases, one direction: a founder discovers it in Explore, evaluates what it does, activates it (Personalize → Connect → Try), a guest's WhatsApp message gets answered or escalated, the founder monitors it in Pulse, and later reactivates it. This file is the per-assistant exemplar of the master contract (assistant-flows/assistant-lifecycle.html) and draws the shipped chat golden path.

In — shipped, drawn 1:1
  • The shipped chat golden path only — real prod copy (post-#2593 never-say fix), T1209 seeded handling defaults, the 7-field Brain gate (§T1097).
  • D-1 Brain Check ownership (R4 review 2026-07-23) — Connect is the only edit surface: the full category-grouped checklist (brain_manifest, D1 confirmation copy contract) lives there alone. Personalize carries a one-line pointer only; Try reads back a single readiness line. Neither owns a second checklist.
  • Three activation outcomes only — loader (6a), live (6), failed/full-rollback (6b). 9P3X is a chat assistant with no WhatsApp template requirement, so the master's pending_template_approval / template_rejected outcomes never apply and are deliberately not drawn.
  • Escalation pipeline end-to-end: route-to-you topics → Slack thread → human mode (AI paused) → #done resume — frames 7/8/9.
Out — explicitly, with the reason
  • No records surface — the named counter-example of the records test (“rows a founder needs to see outside the conversation that created them”); a support thread isn't one. Hence no Storage row on Connect.
  • No pre-activation chat sandbox — R11 honest-test rule; replies only trigger on real inbound messages. A real sandbox is a deferred post-launch decision.
  • No AI-provider picker — BYOK gated by BYOK_AI_HIDDEN (AUTO-only launch); the AI Model row is label + “MystFlo AI” badge, Connected, no caret.
  • In-plan, not built today (drawn as target state, labeled at the frame): rules-take-effect-next-run — plan-onbrand-3fix-2026-07. (#done instant resume left this list — shipped in #2616, 2026-07-22; the 5-min sweep stays as the safety net.)
  • Escalation-rate stat on the Pulse card — tracked nice-to-have (gap #4), not drawn.
TMPL-9P3X (prod row — single source)
├─ catalog copy      description · details.tldr · long_description · details.benefits[4]
│                    (drawn verbatim on frames 1 / 2 / 2b / 9c — R28: pre = post, byte-identical)
├─ price_per_run     $0.50 per session — plain text, never a pill (R27), DB-sourced
├─ handling rules    3 groups, T1209-seeded: Answer on its own · Route to you · Politely decline
│                    (route-to-you feeds the deterministic escalation detector — AC-TS-20)
├─ Brain Check       7 required fields, category-grouped via brain_manifest:
│                    Business Basics · Offerings · Brand Voice · FAQs & Policies · Operations & Payment
│                    per-row ✓ / ○ / ⚠ · rollup “N of M ready” · confirmation copy contract (D1)
└─ session states    AI-answered → escalated (AI paused, Slack thread) → human mode → resumed (#done)
                     one billable unit per closed session (AC-BILL-01/02/03)
Handling rules — the three groups
  • Answer on its own — topics it handles start to finish from the Brain (hours · prices · availability · product details).
  • Route to you — it acknowledges the guest, then pings Slack (refunds · complaints · custom requests). Deterministic, not just a prompt suggestion.
  • Politely decline — out of bounds; it says so kindly and offers the founder's contact (medical advice · legal advice).
  • Plus one greeting field — the first thing guests see, live-previewed as the founder types (frames 3/3b).
Copy rules the content obeys
  • Never-say ledger: “sounds like you — because you confirmed it does”, never “guests won't know it isn't you” (#2593).
  • First-ever AI reply carries the disclosure line — code-side and unconditional (frame 7).
  • “Confirmed” language is reserved for a fully-ready Brain rollup; a partial one reads “N of M sections ready” with an amber dot (D1, frame 6 right panel).

Five founder phases (Discover → Evaluate → Activate → Monitor → Maintain) with the customer's own loop (Trigger → Interact → Outcome) embedded at the point it actually happens — right after Activate, before the founder ever opens Pulse. Interact forks: the AI answers directly from the Brain in the common case, or escalates to the founder via Slack when it can't confidently answer (chat-assistant-standard's 3-tier escalation model). Every frame below sits in one of these six phases.

┌ FOUNDER · DISCOVER ────────────────────────────────────────────────────┐
│ Finds On-Brand Support in Explore — sees price, required apps,         │
│ and what it promises, before tapping in.                               │
└────────────────────────────────────────────────────────────────────────┘
                                     ▼
┌ FOUNDER · EVALUATE ────────────────────────────────────────────────────┐
│ Opens the detail sheet — what it does, how it works, key               │
│ benefits — decides it's worth setting up.                              │
└────────────────────────────────────────────────────────────────────────┘
                                     ▼
┌ FOUNDER · ACTIVATE ────────────────────────────────────────────────────┐
│ Personalize (handling rules + live preview) → Connect (WhatsApp,       │
│ AI, Slack, Brain Check) → Try (honest, no fake test) →                 │
│ Activating (loader) → live, or the whole thing rolled back.            │
└────────────────────────────────────────────────────────────────────────┘
                                     ▼
┌ CUSTOMER · TRIGGER → INTERACT ─────────────────────────────────────────┐
│ A guest messages the WhatsApp number, any hour — 11pm included.        │
└────────────────────────────────────┬───────────────────────────────────┘
                                     ▼
             ┌───────────────────────┴─────────────────────┐
             ▼                                             ▼
             AI-ANSWERED (common)                          ESCALATED
             Grounded in the Brain,                        Refund / complaint /
             replies in the founder's                      can't-ground → Slack
             confirmed voice.                               thread, AI paused.
             │                                             │
             └───────────────────────┬─────────────────────┘
                                     ▼
┌ CUSTOMER · OUTCOME ────────────────────────────────────────────────────┐
│ Guest helped, in the founder's voice — by AI alone or AI + founder.    │
└────────────────────────────────────────────────────────────────────────┘
                                     ▼
┌ FOUNDER · MONITOR ─────────────────────────────────────────────────────┐
│ Pulse card + activity feed — sessions, cost, health at a glance,       │
│ and anything escalated that still needs a reply.                       │
└────────────────────────────────────────────────────────────────────────┘
                                     ▼
┌ FOUNDER · MAINTAIN ────────────────────────────────────────────────────┐
│ Paused later → reactivate (same setup, same WhatsApp number) or        │
│ start fresh — nothing already running is ever lost.                    │
└────────────────────────────────────────────────────────────────────────┘
Sequencing principle BINDING
  • Discover and Evaluate never gate on the Brain — the 7-field readiness check only blocks at Activate (Connect → Try), and only on the 7 required fields, never on full completion (prd-as-on-brand-support.md §T1097 — 7-field gate, AC-GATE-01/AC-GATE-02).
Where each phase lives below
  • P1 · Discover — “Is this the assistant I need?” → 1
  • P2 · Evaluate — “What does it actually do, and is it worth it?” → 2 · 2b
  • P3 · Activate — “Set it up, connect it, turn it on.” → 3 · 3b · 4 · 5 · 5n · 5b · 5c · 6a · 6 · 6b
  • P4 · The guest's thread — “Will it actually help them, at 11pm, without me?” → 7
  • P5 · Monitor — “Is it working, and does anything need me?” → 8 · 9 · 9b · 9c · 9d · 9e
  • P6 · Maintain — “Turn it back on later, without losing anything.” → 10

The frames below are the current build contract — the dev team matches them pixel for pixel; only current / being-built state lives here. Deferred ideas live under Part II · Future at the bottom — never a build target (kit canon U9). Acceptance ids cited in frame notes (AC-* ↗) live in docs/product/assistants/shared/prd-as-on-brand-support.md §Test Plan — this artifact cites ACs, never mints them, except where noted NEW (PRD debt) for behavior this reorg found with no existing criterion, or a freshly-added row (dated) where the gap was simple enough to file in the same pass.

Part I — Active build now, in lifecycle order
Discover
This step is 375. No 1180 drawing — use the Mobile size.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 1 · Discover “Is this the assistant I need?” · the founder's first glance in Explore
1Explore — the card Nina sees
On-Brand Support
Your business answers DMs in your voice, 24/7 — without you typing a word.
$0.50 per session WhatsApp Business MystFlo AI Slack
Personalize Connect Try
tap for detailsActivate
Frame 1 · Explore card — the founder's first glance [P1 · Discover]
  • Story — As a founder browsing Explore, I see On-Brand Support's price, required apps, and setup progress in one glance — enough to decide whether to open it, without reading a paragraph.
Acceptance
  • Acceptance — no dedicated criterion in this assistant's PRD; the card's content contract belongs to the platform's Explore/catalog surface, not prd-as-on-brand-support.md.
  • NEW (PRD debt) — fixed-zone card skeleton (title/desc clamp, chip sort order, price-as-text) has no assistant-level AC; it's implicit platform (Explore) behavior applied here.
Design notes
  • Content + card contractdescription verbatim from the prod row; required apps WhatsApp Business + MystFlo AI + Slack (escalation channel); fixed-zone card skeleton.
  • “Details →” link deleted — card tap + “tap for details” pill carry the doorway. Category tag and task-count chip gone — meta row is price + apps only.
  • Share icon (⤴) beside the heart opens the shipped ShareSheetModal.
  • R27 · R24 — Price + chips — price is plain text, never a pill — full wording “$0.50 per session”, one slot (first item of the meta line).
  • Chips sort required-not-connected → required-connected → storage → optional, max 3 + +N doorway into Connect (frame 4). Readiness signal only, never a cost signal.
Evaluate
dimmed Explore peeks — revealGap · app header stays visible above (C1)
On-Brand Support
Answers guest questions in WhatsApp from your Brain — and hands you the rest.
$0.50 per session
Overview Personalize Connect Try
What it does

On-Brand Support reads your Brain — your prices, policies, hours, FAQs, and brand voice — and answers guest questions in WhatsApp in the voice you confirmed. Routine questions get answered in seconds. Anything it can't ground in your knowledge gets handed to you on Slack.

How it works
01
Customer
“do you have space in September?”Any hour — 11pm included.
02
Brain
Grounds the answer in your facts ✦ AI
03
Assistant
Replies in your voice, in the same thread
tricky ones → routed to you
Outcome
Guest helped, in your voiceYou never typed a word.
Key benefits
Answers while you teach, host, sleep
Guests get instant replies at the exact moment they're deciding.
Sounds like you — because you confirmed it does
Your brand voice, your policies, your tone — all confirmed by you, so replies match how you'd actually answer.
Knows when to hand it to you
Refunds and complaints never get an improvised answer — they get escalated.
Never makes up a price or date
If it isn't in your Brain, it says so and brings you in.
Frame 2b · Desktop 1180 — “How it works” chart [P2 · Evaluate]
  • Story — As a founder on a laptop, I see the same explanation as mobile but drawn as a wider flow chart, so the desktop tier never feels like an afterthought.
Acceptance
  • Acceptance — shares AC-UI-01 ↗ with frame 2 (same modal, same standard, wider viewport) — not re-cited as a separate criterion.
Design notes 2026-07-23
  • 375 tier (frame 2) keeps the vertical numbered rail — unchanged, R5-correct for mobile. Desktop ≥768 had no realization at all; this frame adds it, ported verbatim from the shipped HowItWorksFlow.tsx chart (assistant-lifecycle.html sec-3 desktop, PR #1184) rather than a bespoke rail.
  • Customer → Brain (AI-skeleton node) → Assistant → Outcome, one lit hairline, actor eyebrows, one fragment per node. “Tricky ones → routed to you” is a branch pill hanging off the Assistant node (.fs-drop + .fs-branch) — never its own 5th node/column.
  • Copy matches the master's own worked example for this exact assistant verbatim (same business, same guest line) — no new copy invented.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 2 · Evaluate “What does it actually do, and is it worth it?” · f2 overview mobile · f2b overview desktop
2Detail sheet — Overview tab
On-Brand Support
Answers guest questions in WhatsApp from your Brain — and hands you the rest.
$0.50 per session
Overview Personalize Connect Try
What it does

On-Brand Support reads your Brain — your prices, policies, hours, FAQs, and brand voice — and answers guest questions in WhatsApp in the voice you confirmed. Routine questions get answered in seconds. Anything it can't ground in your knowledge gets handed to you on Slack.

How it works
01
A guest messages your WhatsApp
Any hour — 11pm included.
02
It answers from your Brain
Your real prices, policies, and availability — never invented.
03
Tricky ones come to you
Refunds, complaints, anything uncertain → a Slack ping with the thread.
Guest helped, in your voice
You read the thread over coffee, not at midnight.
Key benefits
Answers while you teach, host, sleep
Guests get instant replies at the exact moment they're deciding.
Sounds like you — because you confirmed it does
Your brand voice, your policies, your tone — all confirmed by you, so replies match how you'd actually answer.
Knows when to hand it to you
Refunds and complaints never get an improvised answer — they get escalated.
Never makes up a price or date
If it isn't in your Brain, it says so and brings you in.
Frame 2 · Overview tab — what it does, how it works [P2 · Evaluate]
  • Story — As a founder deciding whether to set this up, I read what it does, how it works, and its key benefits — in plain language — before committing to Personalize/Connect/Try.
Acceptance
  • Acceptance — 1 criterion, in prd-as-on-brand-support.md §Test Plan.
  • AC-UI-01 ↗ — the Explore detail modal renders to the COHB01 standard (flow chart, requirements, pricing); the Personalize tab shows Brain-sourced facts as “From your Brain ✓” recaps.
Design notes
  • Copy is post-#2593 corrected: “in the voice you confirmed”, never “guests won't know it isn't you” (never-say ledger).
  • Try stays disabled until Personalize + Connect complete; flow ends on the one lit outcome node.
Activate
dimmed Explore page peeks — revealGap · app header stays visible above (C1)
On-Brand Support
Answers guest questions in WhatsApp from your Brain — and hands you the rest.
$0.50 per session
Overview Personalize Connect Try
Handling rules
Answer on its own
Topics it handles start to finish, from your Brain.
hours prices availability product details + add topic
Route to you
It acknowledges the guest, then pings your Slack.
refunds complaints custom requests + add topic
Politely decline
Out of bounds — it says so kindly and offers your contact.
medical advice legal advice + add topic
Greeting (guests see this first)
Hey! You've reached Salt & Stone — how can we help?

When it can't answer, it hands the thread to you — you're never out of the loop.

Full Brain readiness — what's confirmed, what still needs you — lives on Connect →.

Hey! You've reached Salt & Stone — how can we help?
do you have space in September?
Its real reply appears after activation — answers come from your Brain, never faked here
·· preview ··
Frame 3b · Desktop 1180 — the live preview split [P3 · Activate]
  • Story — As a founder on desktop, I edit handling rules on the left while a full-height phone preview on the right proves the greeting is really mine, without switching screens.
Acceptance
  • Acceptance — shares AC-TS-20 ↗ with frame 3 (same handling-rules mechanic, wider viewport) — not re-cited.
Design notes
  • Form flex-1, preview fixed 400px, row capped 1040px. R32 — preview column + device shell fill the full split height, top-aligned (never vertically centered); scroll is the simulated phone's own.
  • Same D-1 pointer as mobile — the full category-grouped checklist stays Connect's alone (frame 4); this tab shows per-run knobs only.
dimmed Explore peeks — revealGap · seated sheet
On-Brand Support
Answers guest questions in WhatsApp from your Brain — and hands you the rest.
$0.50 per session
Overview Personalize Connect Try
01 · Connect apps
Communication WhatsApp Business
Where your guests already message you
Connected
AI Model MystFlo AI
Writes the replies in your voice. Choosing your own AI model is coming later.
Connected
Alerts SlackOptional
Escalations land in #guest-support
Connected
02 · Wallet
Wallet balanceEach session draws $0.50 from your prepaid balance $41.20
03 · Brain Check
Business Basics
Business description
Confirmed
Edit in Brain →
Contact & hours
Ready
Edit in Brain →
Offerings
Offerings & prices
Confirmed
Edit in Brain →
Brand Voice
Brand voice
Confirmed Jul 20
Edit in Brain →
FAQs & Policies
FAQs · 14 items
Confirmed
Edit in Brain →
Policies · 5 items
Confirmed
Edit in Brain →
7 of 7 ready — it can answer guests
Try reads this same check back as one line — it never re-asks.
Frame 4b · Desktop 1180 — Connect tab, two-column split [P3 · Activate]
  • Story — As a founder on a laptop, I connect WhatsApp/Slack and confirm my Brain is customer-ready side by side, without scrolling past one to reach the other.
Design notes
  • Gap closed (2026-08-07) — this file had no desktop-width Connect frame at all, only the 560px panel at frame 4. Content here is ported verbatim from frame 4 (same rows, same copy, same caret amendment from this session) — nothing invented, just redrawn at 1180 with the master's two-column shape.
  • Split follows assistant-lifecycle.html sec-5 exactly: apps + wallet flex-1 on the left, Brain Check fixed 400px on the right — On-Brand Support has a real 7-field Brain Check module, so the master's split applies cleanly with no adaptation needed.
  • Continue-to-Try button omitted from this crop (present in frame 4's panel version) — this frame exists to prove the desktop layout, not re-litigate the CTA.

Both tiers now drawn per R22. Archetype: assistant-detail-tabs.md.

dimmed Explore page peeks — revealGap
On-Brand Support
Answers guest questions in WhatsApp from your Brain — and hands you the rest.
$0.50 per session
Overview Personalize Connect Try
What you're activating
Greeting“Hey! You've reached Salt & Stone — how can we help?”
Answers on its ownhours · prices · availability
Routes to yourefunds · anything it can't ground
AppsWhatsApp Business · MystFlo AI
Brain 7 of 7 ready
Wallet$41.20 · $0.50 per session
Trying it
Replies are triggered by real customer messages Message your WhatsApp after activation to see it live. There's no way to fake a guest message before then — so we don't pretend to.
Send yourself the first one Open WhatsApp and message your own business number.
Name this one
Autumn retreat support
Activate — $0.50 per session

Runs on your WhatsApp from the moment you activate. Pause anytime.

Frame 5b · Desktop 1180 — the activation tab, seated sheet [P3 · Activate]
  • Story — shares its story with frame 5 (same tab, wider viewport, rail layout instead of stacked).
Acceptance
  • Acceptance — shares frame 5's PRD-debt note; not re-cited.
Design notes T1147/T1155
  • Seated sheet, dimmed page peeking above, no drag handle; content full-width with 32px gutters; read-back capped at 720px, trying-it rail uses the freed width.
  • Pre keeps the stepper voice (chevron separators, ✓ on completed tabs). One primary action.
Brain · Business hours — masthead stripped, opened AT the section
Mon–Fri8:00 – 18:00
Saturday9:00 – 14:00
SundayClosed — retreats only
Save

← the REAL Brain page, live and editable · tap the seam to return

On-Brand Support — setup
Overview Personalize Connect Try
03 · Brain Check — from your Brain
Operations & Payment
Business hours
Saved on the left just now
checking…
FAQs & Policies
FAQs · 14 itemsEdit →
Policies · 5 itemsEdit →

The check re-runs the moment you save on the left — ○ flips to ✓ without leaving Connect.

Frame 5c · Desktop ≥1024 — “Edit in Brain” split, checking live [P3 · Activate]
  • Story — As a founder who's missing a Brain field on Connect, I fix it right there — the real Brain page opens beside my setup, and the check flips from ○ to ✓ live the moment I save, without losing my place in activation.
Acceptance
  • Acceptance — 1 criterion, in prd-as-on-brand-support.md §Test Plan.
  • AC-UI-02 ↗ — “Edit in Brain” opens BrainSlideOver with the target section auto-expanded; closing returns to the wizard without losing wizard state.
Design notes 2026-06-23
  • Real page docks LEFT at 40% (masthead stripped), opened AT the section the row named; setup sheet keeps RIGHT 60%. Both panes flush top, one lit hairline on the seam, page shadow casts right.
  • Saving on the left fires the re-check on the right — the founder watches the row flip live without leaving Connect. Keeps the founder's place in activation while editing Brain.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 3 · Activate “Set it up, connect it, turn it on.” · f3 personalize · f4 connect · f5 try · f6a/f6/f6b activation outcomes
3Personalize tab · 375 — handling rules + preview, pointer to Brain Check R32 · D2 · D-1
Closed — the form keeps the full working height
dimmed Explore peeks — tap to return
Overview Personalize Connect Try
Handling rules
Answer on its own
hours prices availability + add topic
Route to you
refunds complaints + add topic
Greeting (guests see this first)
Hey! You've reached Salt & Stone — how can we help?

Brain readiness lives on Connect →.

·· preview ··
Open — tap the pill, preview slides up as a bottom sheet
form dims behind — tap ✕ or drag down to return
Hey! You've reached Salt & Stone — how can we help?
do you have space in September?
Real replies after activation — answers come from your Brain, never faked here
·· preview ··
Frame 3 · Personalize · 375 — handling rules + live preview [P3 · Activate]
  • Story — As a founder personalizing my assistant, I set which topics it answers on its own vs. routes to me, write my greeting, and watch a live preview react as I type — before Brain readiness ever enters the picture.
Acceptance
  • AC-TS-20 ↗ — added 2026-07-27 (this reorg, from prd-as-on-brand-support.md §Personalization Scope §02 Handling rules, #2605/T1206): a “route to you” topic feeds the deterministic escalation detector, not just a prompt suggestion.
  • NEW (PRD debt) — the live-preview mechanic itself (default-on, reacts to typing, D2 mobile pill-bar pattern) has no dedicated AC; it's a design decision (R32/D2), not a tested behavior in the Test Plan.
Design notes
  • Preview — shipped, Peyton-locked — default-on for every chat assistant; reacts to typing (greeting renders live/white in the guest bubble; the AI's answer is never drawn, stays a labeled placeholder).
  • D2 · 375: form keeps full height; a docked “·· preview ··” pill bar (keyboard/safe-area aware) slides the preview up on tap.
  • D-1 — Brain Check lives on Connect only R4 review 2026-07-23 — Personalize is per-run knobs ONLY (handling rules, greeting) — never a Brain-readiness gate. The full category-grouped checklist is Connect's alone (frame 4); Personalize carries a quiet pointer line only.
  • Handling-rule groups pre-seeded with T1209 defaults — founder edits, never authors from zero.
4Connect tab — apps, escalation channel, wallet
Overview Personalize Connect Try
01 · Connect apps
Communication WhatsApp Business
Where your guests already message you
Connected
AI Model MystFlo AI
Writes the replies in your voice. Choosing your own AI model is coming later.
Connected
Alerts SlackOptional
Escalations land in #guest-support
Connected
02 · Wallet
Wallet balanceEach session draws $0.50 from your prepaid balance $41.20
03 · Brain Check
Business Basics
Business description
Confirmed
Edit in Brain →
Contact & hours
Ready
Edit in Brain →
Offerings
Offerings & prices
Confirmed
Edit in Brain →
Brand Voice
Brand voice
Confirmed Jul 20
Edit in Brain →
FAQs & Policies
FAQs · 14 items
Confirmed
Edit in Brain →
Policies · 5 items
Confirmed
Edit in Brain →
7 of 7 ready — it can answer guests
Try reads this same check back as one line — it never re-asks.
Continue to Try
Frame 4 · Connect tab — apps, wallet, Brain Check [P3 · Activate]
  • Story — As a founder connecting my assistant, I connect WhatsApp and Slack, see the AI model is already included, check my wallet, and confirm my Brain is customer-ready — all in the ONE place it lives.
Acceptance
  • Acceptance — 5 criteria, in prd-as-on-brand-support.md §Test Plan / §T1097 — 7-field gate.
  • AC-GATE-01 ↗ — all 7 required Brain fields satisfied and unblocked → ready=true, the wizard allows activation.
  • AC-GATE-02 ↗ — any of the 7 fields missing → ready=false, that field routes the founder to its Brain section.
  • AC-GATE-03 ↗ — the “No operating hours” default writes the sentinel value and satisfies the business_hours requirement.
  • AC-GATE-04 ↗ — a field present but verdict-flagged junk/unverified still blocks — present-but-failing is distinct from absent.
  • AC-TS-10 ↗ — no AI provider connected → activation blocks and routes to /connects?category=ai.
Design notes
  • Three setup sections T1155 — 01 apps · 02 wallet · 03 Brain Check. “Connected” stays monochrome — colour reserved for action-needed (amber Reconnect/Pending).
  • AI row = label "AI Model" + badge "MystFlo AI", status Connected — never "Included" (kit `design-decisions.md` 2026-08-04 closing amendment, retires #2576 C7's title-only treatment); wallet-first — balance, per-session draw, no card talk.
  • Communication carries the caret — structural, not conditional (kit `design-decisions.md` 2026-08-05, caret scope amended 2026-08-07, Peyton-locked). The caret is now present on every Connect-apps row EXCEPT AI Model, whether or not a second option exists today. Tapping WhatsApp Business's badge opens the same hairline expand mechanic as Storage: the current pick as the sole selected option (`◉ WhatsApp Business (current)`) plus one disabled `⊘ More channels · coming soon` row — matching the glyph/copy pattern of the Storage picker's disabled Supabase group (not redrawn as its own frame here — see `assistant-lifecycle.html` sec-5b for the exact expanded shape). AI Model is the one exception — no caret, no coming-soon row: `AiModelPicker.tsx` has no provider dropdown at all, and BYOK is gated by `BYOK_AI_HIDDEN` as a deliberate product decision, not an unbuilt roadmap item, so drawing either would promise a choice withheld on purpose. There is no Storage row — On-Brand Support deliberately has no records surface (Records Layer rule: the test is "rows a founder needs to see outside the conversation that created them", and a support thread isn't one). Slack stays an ordinary app connection, not a role, so it carries no caret either. Post-activation, Communication's caret gains a third state — muted-while-Active / live-while-Paused (lifecycle sec-9d, build gap #3120); this file draws no post-activation Connect tab, so it isn't redrawn here.
  • D-1 — Connect is the only Brain Check home — category-grouped rows (brain_manifest), required first, Optional label on recommended, per-row ✓/○/⚠, amber Add/Review in Brain → on anything missing/degraded. Not-ready state: ! 5 of 7 ready, same module every time it renders.
  • Personalize shows a one-line summary only (frame 3); Try reads it back as one line (frame 5). Neither owns a second checklist.
  • R35 — Split doorway — every fix action here (app/wallet/Brain row) opens its owning page as the split pane — inherits the master mechanic, assistant-lifecycle.html frame 14.
5Try tab — what you're activating
Overview Personalize Connect Try
What you're activating
Greeting“Hey! You've reached Salt & Stone…”
Answershours · prices · availability
Routes to yourefunds · anything ungrounded
Brain 7 of 7 ready
Wallet$41.20 · $0.50 per session
Trying it
Replies are triggered by real customer messages Message your WhatsApp after activation to see it live. There's no way to fake a guest message before then — so we don't pretend to.
Send yourself the first one Right after you activate, open WhatsApp and message your own business number. You'll see the real reply, from your real Brain, in seconds.
Name this one
Autumn retreat support
Activate — $0.50 per session

Runs on your WhatsApp from the moment you activate. Pause anytime.

Frame 5 · Try tab — what you're activating [P3 · Activate]
  • Story — As a founder about to go live, I read back exactly what I'm turning on — including Brain readiness — and I'm told plainly there's no fake test, only the real thing right after I activate.
Acceptance
  • Acceptance — no dedicated criterion; this tab's honesty-copy and read-back are a design decision (R11), not a tested behavior in this PRD's Test Plan.
  • NEW (PRD debt) — “no pre-activation test for chat assistants” + the read-back's own fields (greeting/answers/routes/Brain/wallet) have no AC row; consider filing one if this exact read-back becomes load-bearing.
Design notes
  • R11 — Honest test, no fake capability — no pre-activation test run exists for WhatsApp chat assistants; replies only trigger on real inbound messages. Honest copy: “Replies are triggered by real customer messages — message your WhatsApp after activation to see it live”, plus a first-message nudge.
  • Tab: launch read-back (what you're activating) → name-this-instance → Activate. Testable types (WAITL1, BRVX01, webhook-backed) keep a real Test button — master contract: assistant-lifecycle.html frame 6.
  • A real pre-activation chat sandbox is a deferred post-launch decision.
5nTry tab — the name is already taken START FRESH · ARCHETYPE #6 · SHIPPED (#3243)
Overview Personalize Connect Try
Starting fresh Your previous setup stays in Past. Nothing is overwritten.
Name this one
Autumn retreat support 2

You already have one called Autumn retreat support. We numbered this one so you can tell them apart in Pulse — rename it to anything you like.

Keeping the same name is fine, it's just harder to read later.

Activate — $0.50 per session

Runs on your WhatsApp from the moment you activate. Pause anytime.

Frame 5n · Try tab — the name is already taken [P3 · Activate]
  • Story — As a founder starting a second, separate instance, the name field arrives already distinct from the one I'm still running, and I'm told plainly why — so I never end up with two identical rows in Pulse that I can only tell apart by an ID string.
Acceptance
  • Acceptance — owned by prd-pl-activation-wizard.md § “Instance Naming — Derive Distinct, Then Nudge” (AC-NAME-01…06). Cross-cutting: this is the shared Try-step naming contract, not a TMPL-9P3X behaviour — drawn here because 9P3X is the exemplar file. AC-NAME-04's sibling-status list was revised at gate R2 (2026-08-08) to include `stopped` + `archived` — verified live against the CF Pages preview (real WhatsApp-connected test account, Start Fresh path): the collision nudge fires correctly against a `stopped` sibling, matching this frame's copy exactly.
Design notes Archetype #6 · reactivation-flow (c)
  • The derive is the fix; the nudge is the safety net. The archetype already locks “custom name auto-derives at the Try step so two instances are tellable-apart in Pulse” (archetypes/reactivation-flow.md (c) + (e)). The field must arrive already distinct — the copy explains a name the founder can see, it never asks them to fix our default.
  • Monochrome, not amber. This page's colour law is “amber = action/pending only” (masthead callout). A duplicate name is legal and sometimes deliberate — nothing is blocked, nothing is pending — so the explanation is --fg-55 body text under the field, the sibling's name lifts to --fg-70, and the escape line sits at --fg-30. No amber chip, no warning icon, no red.
  • Never a block. Activate stays enabled and unchanged. Two same-named instances stay legal — the founder may be testing. No modal, no confirm step, no disabled button.
  • Same field, one extra line. Reuses frame 5's Name this one section verbatim (.sm + .field); the only new elements are the two caption lines. The “Your word for this instance” helper is replaced by the collision copy while a sibling exists, not stacked on top of it.
  • Start-fresh reassurance rides above it — the “previous setup stays in Past” line is the archetype's one start-fresh-specific element; drawn here so the naming nudge reads as bookkeeping, not as a loss warning. Suppressed on plain first activation (nothing to reassure about).
  • Suffix rule — first collision appends 2, then 3… (never (copy), never a date, never the display_id). The founder's word stays the stem so the pair sorts together in Pulse.
6aActivating — the loader C2
Activating “Autumn retreat support”

About 20 seconds. Stay on this screen.

Checking your setup
Confirming billing & terms
Setting up your assistant
Running a live test~15s
Going live
Frame 6a · Activating — the loader [P3 · Activate]
  • Story — As a founder who just tapped Activate, I watch real setup steps run — including a live test — so I know activation is actually happening, not just spinning.
Acceptance
  • Acceptance — owned by prd-pl-activation-wizard.md (the shared activate-assistant pipeline this loader collapses to 5 steps) — not this assistant's own PRD; no AC-* id to cite here.
Design notes
  • C2 loader — same pipeline as every assistant — collapses the real activate-assistant pipeline (auth → apps → BYOK-AI gate → payment → terms → workflow → test run → finalize) to 5 grouped steps — wording copied verbatim from the master loader (assistant-lifecycle.html frame 7a, .ld-step): Checking your setup → Confirming billing & terms → Setting up your assistant → Running a live test → Going live.
  • This pipeline test-run step is separate from the Try-tab pre-activation sandbox (frame 5's note) — 9P3X still has no fake pre-activation chat test, but the activation pipeline itself always runs a real live-test step before finalizing, same as every other assistant type.
6Activated — live
On-Brand Support is live

It's answering on your WhatsApp now. Escalations go to #guest-support. Watch it work in Pulse.

WhatsApp connected Brain confirmed — 7 of 7 sections
View in Pulse Done
On-Brand Support is live

It's answering on your WhatsApp now. Escalations go to #guest-support. Watch it work in Pulse.

WhatsApp connected Brain — 5 of 7 sections ready
View in Pulse Done
Frame 6 · Activated — live [P3 · Activate]
  • Story — As a founder who just activated, I see two facts that are always true — WhatsApp connected, Brain readiness — and I'm handed off to Pulse to watch it work, instead of a screen full of noise.
Acceptance
  • Acceptance — owned by prd-pl-activation-wizard.md (the shared success-state contract) — not this assistant's own PRD; no AC-* id to cite here.
  • NEW (PRD debt) — this assistant's OWN reason the third fact (“test run passed”) is cut — activate-assistant skips the test step for user_initiated (chat) trigger types — is asserted only in this design note, not in a Test Plan row.
Design notes R11 fix, 2026-07-25
  • Quiet: one glowing badge (the surface's single lit object), two facts that are always true, handoff to Pulse. “Test run passed” was cut, not deferred — see the PRD-debt note above.
  • Right panel — the not-fully-ready Brain variant (D1, #2611): “confirmed” language is reserved for a fully-ready rollup (left panel, 7 of 7). A partial rollup (5 of 7) reads “Brain — N of M sections ready” with an amber dot, never “confirmed — 5 of 7” — that phrase would contradict itself. This state is reachable because only hard blockers gate activation, not full completion.
6bFailed — full rollback B6
The live test didn't pass

WhatsApp rejected the message send, so we stopped before activating anything.

Nothing was created No assistant, no workspace, no charge. Your setup is exactly where you left it — we rolled the whole thing back.
Try activating again
Reconnect WhatsApp first

Still stuck? Message us — we'll look at the run.

Frame 6b · Failed — full rollback [P3 · Activate]
  • Story — As a founder whose activation failed, I'm told plainly nothing was created or charged, and I get one clear next step to fix it and try again.
Acceptance
  • Acceptance — owned by prd-pl-activation-wizard.md (the shared rollback contract, B6) — not this assistant's own PRD; no AC-* id to cite here.
Design notes
  • B6 — failure = full rollback, stated plainly — Live-test failure = FULL rollback, nothing created/charged — said in plain words, never implied. Retry CTA + a named first fix; “Reconnect” is the one action verb (design-canon connection-status rule) — here it's WhatsApp, 9P3X's own connection.
  • “Message us” is a real link (wa.me/<MYSTFLO_SUPPORT_NUMBER>, config value, never hardcoded), run reference prefilled — master precedent: assistant-lifecycle.html frame 7(b) note “(b) Failed · B6”. This landing owns the link; the Try-tab nudge (frame 5) keeps its own separate “send yourself the first one” copy untouched.
  • Only these two extra outcomes apply to 9P3X — 9P3X is a chat assistant with no WhatsApp template requirement, so the master's other two outcomes (pending_template_approval launch-pending, template_rejected) never apply and are intentionally not drawn here. The loader (6a) and this failed/rollback landing (6b) are the only outcomes beyond the live success state (6).
Live
dimmed Pulse page peeks — revealGap
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21 · 142 sessions this week · $18.40 MTD
$0.50 per session
Pulse Overview Personalize Connect
Today
Session — booking question answered+49 •• •• 4821 grounded in Offerings · 2 turns 11:04 PM · $0.50
EscalatedRefund request → #guest-supportAI paused · waiting on you route rule: refunds 11:06 PM
Session — hours & directions+1 ••• ••• 2210 grounded in Basics · 1 turn 6:31 PM · $0.50
Resumed — AI back onMaya replied · #done human handled · 12h 37m 7:43 AM
Frame 9b · Desktop 1180 — post-activation tabs, Pulse [P5 · Monitor]
  • Story — shares its story with frame 9 (same tab, wider viewport, plus a third column showing what grounded each reply).
Acceptance
  • Acceptance — shares AC-BILL-01/02/03 ↗ with frame 9 — not re-cited.
Design notes T1145
  • Post = pre's twin — same seated-sheet shell and tab family; tabs are plain nav (no chevrons/stepper, jump anywhere). Header gains live identity (status dot, since/sessions/MTD) + icon run-controls.
  • Pulse tab uses the full desktop width for a third column (grounding source · turns · rule fired) that mobile folds away.
  • R30 applies identically: Pulse · Overview · Personalize · Connect, Pulse first/default, no Try — same tab strip both tiers.
#3242 — escalation copy + footer link, not drawn above
  • The generic “Escalated” chip above (row 2) covers a normal handoff. A safety-catch escalation (the #2039 C2 grounding guard blocking a fabricated price/date) reads differently in pulseFeedFormatting.ts: “Reply held — a detail wasn't confirmed in your Brain” — class-neutral (never names price specifically, the guard also catches dates) and never interpolates the raw offending value.
  • Real component (LogsTab.tsx) also renders a footer row below this feed: “This assistant's activity.” + a link to the account-wide Pulse Runs tab — not drawn in the frame above. Link text was “All runs →”; relabeled “See account-wide runs →” (destination unchanged, intentional per existing code comment).
dimmed Pulse peeks — revealGap · app header stays visible above (C1)
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
What it does

On-Brand Support reads your Brain — your prices, policies, hours, FAQs, and brand voice — and answers guest questions in WhatsApp in the voice you confirmed. Routine questions get answered in seconds. Anything it can't ground in your knowledge gets handed to you on Slack.

How it works
01
Customer
“do you have space in September?”Any hour — 11pm included.
02
Brain
Grounds the answer in your facts ✦ AI
03
Assistant
Replies in your voice, in the same thread
tricky ones → routed to you
Outcome
Guest helped, in your voiceYou never typed a word.
Key benefits
Answers while you teach, host, sleep
Guests get instant replies at the exact moment they're deciding.
Sounds like you — because you confirmed it does
Your brand voice, your policies, your tone — all confirmed by you, so replies match how you'd actually answer.
Knows when to hand it to you
Refunds and complaints never get an improvised answer — they get escalated.
Never makes up a price or date
If it isn't in your Brain, it says so and brings you in.
Frame 9c · Post detail sheet — Overview tab [P5 · Monitor]
  • Story — As a founder revisiting what my live assistant does, I see the exact same explanation I saw before activating it — nothing rewritten, nothing to relearn.
Acceptance
  • Acceptance — shares AC-UI-01 ↗ with frame 2 (same modal standard, now in its post-activation chrome) — not re-cited.
Design notes master sec-10, 2026-07-23
  • R28 — Pre/post Overview identical — copy is byte-identical to frame 2/2b — same “What it does” paragraph, same “How it works” rail (mobile) and chart (desktop), same four benefit cards. One long_description; post never draws a second one.
  • Only chrome changes from pre: header carries live identity (status dot, instance name + rename pencil (R17) + ASST-7Q1, template name dropped to the quiet sub-line) and icon run-controls (⏸ ⏹) in place of the price-only pre header; tabs are plain nav (Pulse · Overview · Personalize · Connect), no chevron separators, no done-ticks.
  • Frames 9/9b (above) carry this same D4 header pattern — one identity contract across every post-activation surface.
dimmed Pulse peeks — revealGap · app header stays visible above (C1)
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
Your setup
Greeting“Hey! You've reached Salt & Stone…”Edit
Handling ruleshours · prices · availabilityEdit
Routed to yourefunds · complaintsEdit

Changes take effect on the next run. Brain readiness lives on Connect →.

Frame 9d · Post detail sheet — Personalize tab [P5 · Monitor]
  • Story — As a founder checking my live setup, I see my greeting and handling rules exactly as I set them, with a quiet reminder that Brain readiness lives on Connect — never a second checklist here.
Acceptance
  • Acceptance — shares AC-TS-20 ↗ with frame 3 (same handling-rules mechanic, read back at rest) — not re-cited.
Design notes master sec-11, 2026-07-23
  • D-1 — Post-activation twin of frames 3/3b — same three fields as pre (frames 3/3b) — Greeting and the Answer-on-its-own / Route-to-you handling-rule topics — Brain-prefilled, at rest as a settled read-back rather than the pre-activation chip editor: exactly the rows master's assistant-lifecycle.html sec-11 draws for this exact assistant, values pulled verbatim from this file's own frame 3 (greeting text, hours/prices/availability, refunds/complaints).
  • No Brain-readiness gate here (D-1 stands: Connect owns the full category-grouped checklist, frame 4) — same quiet one-line pointer to Connect as pre, reworded for a live assistant (“Changes take effect on the next run”). No stepper voice, no chevrons, no done-ticks — this is a settled/live assistant, not a setup step.
  • Both tiers drawn — master sec-11 shows a matching mobile + desktop pair for this section, so both are built here too (per this wave's brief).
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 5 · Monitor “Is it working, and does anything need me?” · f8 Pulse card · f9 activity · f9c overview · f9d personalize, all post-activation
8Pulse — monitored
Active Details →
Autumn retreat support ASST-7Q1
On-Brand Support
3 connected
Sessions
142 · 96% handled solo · 2h ago · $18.40
Needs your attention
!
+49 •• •• 4821 — refund request, July retreat
Escalated 11:06 PM · you're replying in #guest-support
Resume AI
Frame 8 · Pulse — monitored [P5 · Monitor]
  • Story — As a founder checking in, I see at a glance whether my assistant is healthy, how many sessions it's handled, what it's cost me, and whether anything is waiting on my reply.
Acceptance
  • Acceptance — 1 criterion, in prd-as-on-brand-support.md §Test Plan.
  • AC-BILL-01 ↗ — the cost figure shown ($18.40) is the sum of metered per-session charges — one billable unit per closed session.
  • NEW (PRD debt) — the card's own layout contract (fixed zone map, “Needs your attention” panel) is platform Pulse-lifecycle territory, not this assistant's PRD.
Design notes R13 · D4 · R24
  • “Needs your attention” panel (AttentionPanel, verified end-to-end): amber icon + reason + Resume AI, polling every 30s.
  • Card uses the master's fixed zone map — badge+controls · title (instance name + id) · template sub-line · meta line · pinned metrics — identical to every Pulse card.
  • R24: healthy apps collapse to “N connected”; a broken one is the whole story.
  • Escalation-rate stat on the card is a tracked nice-to-have (gap #4).
9Post detail sheet — Pulse tab (default) R30 · AMENDS T1155
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21 · 142 sessions this week
$0.50 per session
Pulse Overview Personalize Connect
Today
Session — booking question answered+49 •• •• 4821 · grounded in Offerings 11:04 PM · $0.50
EscalatedRefund request → #guest-supportAI paused · waiting on you 11:06 PM
Session — hours & directions+1 ••• ••• 2210 · grounded in Basics 6:31 PM · $0.50
Resumed — AI back onMaya replied · #done 7:43 AM
Frame 9 · Post detail sheet — Pulse tab (default) [P5 · Monitor]
  • Story — As a founder checking today's activity, I see every session, what it cost, and every time it got escalated to me — in founder language, not a log dump.
Acceptance
  • Acceptance — 3 criteria, in prd-as-on-brand-support.md §Test Plan.
  • AC-BILL-01 ↗ — each session shown ($0.50) reflects one metered charge on close.
  • AC-BILL-02 ↗ — a re-closed session never appears twice — Stripe drops the duplicate meter event.
  • AC-BILL-03 ↗ — the “Resumed — AI back on” row reflects a pure-human stretch that itself never re-bills.
Design notes amends T1155
  • R30 — Pulse tab, first + default — post tab set: Pulse · Overview · Personalize · Connect, Pulse first/default, Try removed post-activation.
  • Contents unchanged from prior “Activity” — metrics band, status, run feed, health rail; only name/position move.
  • Feed speaks founder language: sessions, what grounded them, cost, escalation as a first-class amber event — not a log dump.
  • Health-% staying honest through escalations is the tracked chat-billing status fix.
9cPost detail sheet — Overview tab — mobile R28
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
What it does

On-Brand Support reads your Brain — your prices, policies, hours, FAQs, and brand voice — and answers guest questions in WhatsApp in the voice you confirmed. Routine questions get answered in seconds. Anything it can't ground in your knowledge gets handed to you on Slack.

How it works
01
A guest messages your WhatsApp
Any hour — 11pm included.
02
It answers from your Brain
Your real prices, policies, and availability — never invented.
03
Tricky ones come to you
Refunds, complaints, anything uncertain → a Slack ping with the thread.
Guest helped, in your voice
You read the thread over coffee, not at midnight.
Key benefits
Answers while you teach, host, sleep
Guests get instant replies at the exact moment they're deciding.
Sounds like you — because you confirmed it does
Your brand voice, your policies, your tone — all confirmed by you, so replies match how you'd actually answer.
Knows when to hand it to you
Refunds and complaints never get an improvised answer — they get escalated.
Never makes up a price or date
If it isn't in your Brain, it says so and brings you in.
Story · acceptance · design notes — shared with the desktop half: frame 9c ↑ (one note, both tiers).
9dPost detail sheet — Personalize tab — mobile D-1
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
Your setup
Greeting“Hey! You've reached Salt & Stone — how can we help?”Edit
Handling ruleshours · prices · availabilityEdit
Routed to yourefunds · complaintsEdit

Changes take effect on the next run. Nothing already answered is rewritten. Brain readiness lives on Connect →.

Story · acceptance · design notes — shared with the desktop half: frame 9d ↑ (one note, both tiers).
9ePost detail sheet — Connect tab · state 1 of 3, channel already picked #3205 · #2699 parity fix
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
01 · Connect apps
Communication WhatsApp Business
Where your guests already message you
Connected
AI Model MystFlo AI
Writes the replies in your voice. Choosing your own AI model is coming later.
Connected
Alerts SlackOptional
Where escalations + critical issues notify your team
Connected
#general
Story · acceptance · design notes — shared across all three 9e states, see below the last one ↓.
9ePost detail sheet — Connect tab · state 2 of 3, no channel picked yet live-assistant tense
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
01 · Connect apps
Communication WhatsApp Business
Where your guests already message you
Connected
AI Model MystFlo AI
Writes the replies in your voice. Choosing your own AI model is coming later.
Connected
Alerts SlackOptional
Where escalations + critical issues notify your team
Connected
#Select a channel

Pick a channel — escalations aren't reaching you yet

Story · acceptance · design notes — shared across all three 9e states, see below ↓.
9ePost detail sheet — Connect tab · state 3 of 3, picking a new channel optimistic, no revert
Autumn retreat supportASST-7Q1
On-Brand Support · active since Jul 21
$0.50 per session
Pulse Overview Personalize Connect
01 · Connect apps
Communication WhatsApp Business
Where your guests already message you
Connected
AI Model MystFlo AI
Writes the replies in your voice. Choosing your own AI model is coming later.
Connected
Alerts SlackOptional
Where escalations + critical issues notify your team
Connected
#marketing-team

Saving…

Story · acceptance · design notes — shared across all three 9e states, see below ↓.
Frame 9e · Post detail sheet — Connect tab, 3 states [P5 · Monitor]
  • Story — As a founder who's already running this assistant, I can come back to Connect at any time and pick (or fix) my Slack escalation channel — the same picker I saw during setup, not a dead end.
Fix — found via #2699 QA click-through
  • The bug: ConnectionsSection.tsx documented this as a deliberate DOM-parity omission — the post modal never passed tetheredPickers, so no picker rendered here at all (the "Connected ⌄" chevron was dead). Fine while the channel was optional; a dead end once #3205 made it required once Slack connects — confirmed live when the FFB test account's escalation never reached Slack.
  • The fix: AssistantDetailModal.post.tsx now builds tetheredPickers the same way ConnectStep.tsx (frame 4) already does — same tetheredPicks.tsx builder, no new component. Pre and post render the identical picker.
  • Section header dropped: the single-item "Optional — enrich this assistant" eyebrow wrapper is removed from ConnectionsSection.tsx — the row-level "Optional" badge already carries the signal, and no launch template has more than one optional role (checked all 5 in T408p2's seed migration).
Design notes — round 2 (Chief Designer catch, PR #3323 review)
  • Shell-language #7 (journey coherence) — pre and post are twins; this frame restores that for Connect specifically (frame 4 already had the picker, 9e now matches).
  • State 2 needed post-activation-tense copy, not the wizard string. tetheredPicks.tsx's shared renderPick() reused the wizard's amber "Pick one to continue" verbatim — true during setup ("continue" is a real next step), false here: the assistant is already live and escalations are silently dropping on the floor right now. State 2 above draws the corrected copy, threaded through a new context: 'wizard' | 'live' param on buildTetheredPickers/renderPick so the wizard's own copy is untouched.
  • State 3 needed an optimistic value, not a revert-then-settle. SlackChannelPicker is fully controlled by value; a save that only updates local state on success made a pick visually snap back to "Select a channel" for two round-trips (fresh-fetch, then save) on a slow connection — the exact "did my pick even register" failure class TetheredPickReveal (#2368) exists to prevent. State 3 shows the picked value immediately, dimmed, with a quiet "Saving…" line — never the empty placeholder — and only reverts on an actual failure.
  • Badge unchanged — "Optional" still describes connecting Slack itself; the conditional-required-once-connected state is carried by state 2's copy above.
  • "Connected" stays monochrome per frame 4's rule — colour reserved for action-needed states (state 2's amber hint, state 3's dimmed-pending).
Phase 6 · Maintain “Turn it back on later, without losing anything.” · f10 reactivation chooser
10Later — reactivation chooser
Turn “Autumn retreat support” back on
Two ways to do it. Neither one loses anything.
Reactivate
Same setup, same WhatsApp number — nothing's lost, picks up right where it left off.
What comes back
Greeting“Hey! You've reached Salt & Stone…”
Handling ruleshours · prices · availability
Escalations#guest-support
AppsWhatsApp Business · MystFlo AI
Brain 7 of 7 ready
Reactivate

Rename it first? Winter retreat support ✎

Start fresh
A new, separate instance — your old one stays in Past, nothing's overwritten.
Start fresh
Frame 10 · Later — reactivation chooser [P6 · Maintain]
  • Story — As a founder turning a paused assistant back on, I can pick up exactly where I left off or start a clean new instance — and I can see up front that nothing I already set up gets lost either way.
Acceptance
  • Acceptance — owned by prd-pl-activation-wizard.md (the shared reactivation contract: quick_resume / review_config / start_fresh) — not this assistant's own PRD; no AC-* id to cite here.
Design notes Archetype #6 · R18 · R19
  • Small dialog (ModalWrapper presentation="dialog" size="sm"), two real choices, recap answers “what happens to my old setup?” before it's asked. Start-fresh opens the standard wizard prefilled; old instance stays in Past.
  • Locked copy: “Turn '<name>' back on” · “Two ways to do it. Neither one loses anything.” Start fresh → “A new, separate instance — your old one stays in Past, nothing's overwritten.” Never “delete”/“replace”.
  • Reactivate sub-line is audience-split (§O1, Peyton-resolved 2026-07-26): offering-backed assistants (waitlist/launch) keep “Same setup, same list — new signups join as the next wave” (still literally true there). Non-offering chat assistants — this one — get the chat-domain equivalent drawn above: “Same setup, same WhatsApp number — nothing's lost, picks up right where it left off.” The master (assistant-lifecycle.html sec-13) draws the generic/offering example; this file is the chat-adapted one.
  • Two cards only — review_config stays invisible plumbing, never a card. Optional rename rides on the Reactivate card.
  • “Don't ask me next time” is shipped (ReactivationConfigReview.tsx:341, auto-resume branch at :134) — drawn here and in the master (assistant-lifecycle.html frame 13), labeled “always Reactivate”, never the internal quick_resume name.
  • Chief Designer reconciliation (PR #2773, 2026-07-26): shipped recap rows use this component's existing stacked label-over-value convention with hairline dividers (the same one the fallback “Your settings” dump already uses one slot over) instead of this frame's single-line .kv — chosen for consistency with the pattern already shipped in this exact modal, not a new one. Rename affordance is a single text link across every viewport (matches this frame; the master's sec-13 desktop side-by-side outline button is not built — size="sm" barely changes width by breakpoint, so a second button treatment isn't a real gain here).
  • Escalations recap row shows a boolean “Configured”, never the illustrative channel name (“#guest-support”) drawn here — only a Slack channel ID is ever persisted, never resolved to a display name; an opaque ID would be worse for a founder than the clean boolean (R11/C2 honesty discipline).
Inventory note block, not a three-part-shape part-components label — per the canon, flow files keep the component inventory as notes; every part listed here appears seated in a full screen in sections 5/6, never only here.
Components this surface draws from
  • Card + detail taxonomy: `AssistantSummaryCardPre` / `AssistantDetailModalPre` (f1/f2), `AssistantSummaryCardPost` + post detail sheet with R30 tab order (f8/9b–9d).
  • Wizard: `ConfigureStep` Personalize with the R32 live-preview split (f3/3b); Connect rows + the 7-category Brain Check module reading `brainInheritance` (f4); Try seated sheet (f5/5b).
  • Cross-reference choreography: "Edit in Brain" via `PageSlideOver` 60/40 split — f5c; never a nested modal.
  • Chat runtime surfaces: the WhatsApp thread vocabulary (`.bub`, disclose line, human-mode handover rows) backed by `_shared/chat-handler.ts` + `chat-prompts.ts` — Phase 4.
  • Sheet chrome: every modal rides `ModalWrapper presentation="sheet"` with the platform-wide band + measured column (PR #2346).
  • No records surface — this assistant is the named counter-example of the records test (`../../archetypes/records-surface.md`).
Master contract
  • assistant-flows/assistant-lifecycle.html is the PRIMARY structural contract — this file is the per-assistant exemplar and must never contradict it. assistant-flows/workshop-booking.html is the canonical structural reference for the 8-section shape (design-canon.md § Assistant-flow mockup structure, 2026-08-06); this file is the token-block exemplar the siblings copy verbatim.
  • Aligned to the master: Personalize live preview (default-on + honesty locks, R32 fill geometry) · Brain Check module scoped to Connect only (D-1) · R24 app chips · R27 price treatment · R30 post tab set.
Sources
  • Prod row TMPL-9P3X (post-#2593 copy) · prd-as-on-brand-support.md §Test Plan · T1209 handling-defaults migration · HandlingRulesEditor.tsx · AttentionPanel.tsx · ReactivationConfigReview.tsx · chat-assistant-standard.md · ledger ../parity/parity-on-brand-support.md (2026-08-04).
  • Frame 7's #done resume and frame 3's rules-take-effect are in-plan fixes (plan-onbrand-3fix-2026-07), drawn as target state, labeled where today's behavior differs. Business/guest names are illustrative.
Guest
This step is 375. No 1180 drawing — use the Mobile size.
768 not yet drawn for this flow. Desktop and 375 are the contract.
Phase 4 · The guest's thread “Will it actually help them, at 11pm, without me?” · Trigger → Interact (AI-answered or escalated) → Outcome → Fallback
7What the guest sees — WhatsApp, 11:04pm
MF
MystFlo 11:06 PM
Needs youRefund request from +49 •• •• 4821 — July retreat, injury.
"my friend needs a refund for the july one, she broke her ankle"
Reply in this thread to answer the guest directly. AI is paused for this conversation.
P
Maya 7:42 AM
So sorry to hear about her ankle! Full refund is on its way today — tell her to rest up and join us in September on us. 💛
P
Maya 7:43 AM
#done
MF
MystFlo 7:43 AM
Got it — AI is back on for this conversation.
Frame 7 · What the guest sees — WhatsApp, 11:04pm [P4 · Trigger → Interact → Outcome]
  • Story — As a guest messaging at 11pm, I get an answer grounded in the business's real prices and policies, in their voice — and when it's something only the founder can decide, I'm reassured a real person is coming, without having to ask twice.
Acceptance
  • Acceptance — 5 criteria, in prd-as-on-brand-support.md §Test Plan.
  • AC-TS-01 ↗ — grounded, brand-voice reply within the session when the knowledge base has the answer.
  • AC-TS-04 ↗ — a message matching an escalation trigger hands off to the founder, posts to the configured Slack channel, and the session still bills.
  • AC-TS-05 ↗ — when it can't ground an answer, it escalates rather than fabricating one.
  • AC-TS-06 ↗ — once the founder replies (human mode active), the AI is suppressed for that conversation — no interference.
  • AC-TMPL-04 ↗ — #done in the Slack thread resumes AI mode within seconds; the literal string “#done” is never forwarded to the guest's WhatsApp.
Design notes
  • This is the AI-answered / escalated fork drawn in the journey diagram above (#journey) — the September-space reply is the AI-answered branch, the refund ask is the escalated branch, both inside the SAME thread.
  • The wedge frame — conversation becomes the operation: answer grounded at 11pm, refund escalated (“route to you” topic), founder replies from Slack.
  • #done hands the thread back to AI instantly — shipped (#2616, 2026-07-22): the Slack reply triggers resume_ai_mode immediately; the 5-min sweep stays as the safety net if #done fails or the owner forgets.
  • First-ever reply carries the AI disclosure line, code-side and unconditional.
8 · Future design — Part II · Future no frames deferred — this file draws the shipped chat golden path only

No deferred items — everything above is the current build (the shipped On-Brand Support flow). Deferred decisions named in Scope (§2) — the pre-activation chat sandbox, BYOK AI provider picker, escalation-rate card stat — stay listed there, not drawn: never invent Future frames to fill this part (kit canon U9).