← Design HQ · HTML on GitHub · PRD — prd-as-waitlist-launch.md
Waitlist + Launch — Discover, activate, go live, then the subscriber thread.
The full proposed screen flow for the pre-sale waitlist + timed launch-broadcast assistant — a review artifact, not a signed build target (status in Scope). Structured to the 8-section shape: overview · scope · content structure · journey · desktop · mobile · components · future.
frames 1–8 · card → live → monitored · mobile + desktop grounded in the 2026-07-26 Assistant Builder + WhatsApp Agent scope passes amber = action/pending/informational-warning · emerald = live onlyWidths 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 (per-run price, wallet balance, launch-broadcast tier price) is illustrative — prices arrive from props/the DB at runtime, never authored literals (single-source pricing).
Reading order (2026-07-30, kit-locked): § Desktop screens first — every desktop frame, full flow, journey order — then § Mobile screens below it — every mobile frame, same order, laid out side by side as a wrapping grid grouped per phase (never a tall single-file column of phone screens). Two sections, never interleaved — a review-document convention only; 375 is still designed and scored FIRST in real work (U8 above still holds).
Waitlist + Launch captures pre-sale interest and fires the launch the moment the founder says go. Before doors open, subscribers join through three doors — a WhatsApp text, the hosted signup page, or a broadcast keyword reply — each deduped, written to the founder's own Sheet, and answered instantly with an honest confirmation (spots still open, or sold-out with a waitlist position). When the founder is ready, one "Launch now" action from Pulse fans a single broadcast out across channels — the Meta-approved WhatsApp template plus a Brain-voiced email — segmented by what each subscriber can actually receive, billed once per send, never per recipient. Pulse then shows delivered counts and cost by channel. This file finishes the Peyton-locked v9 setup spec (2026-06-10) that the live build stalled halfway into; every frame note calls out what's live today vs. what's proposed and why.
setup (3 Qs + channels) ─▶ 3 signup doors ─▶ Sheet row (name·contact·channel·time)
│ dedupe, one row per subscriber
▼
segments: WA+email · email-only (US) · WA-only
│ one launch send, billed once
▼
locked WA template + editable Brain-voiced email
channels choice (it drives what the signup form collects). Everything else (dates, caps, richer copy) lives behind "Make it richer" — vs. today's 16 fields across 4 phases (`waitlistPhases.ts:47-107`).channel (whatsapp / web / broadcast-reply) · timestamp — deduped across the three doors (AC-WL-01 · AC-WL-02 · AC-WL-08 ↗).waitlist_launch_broadcast — never editable. Email subject/body are Brain-voiced defaults, editable only at launch time (sec-7), never at setup (Gap #3).Two journeys, shown as one diagram because
they connect at two exact points: the founder's Activate step is what opens the subscriber's Trigger
door, and the founder's Maintain action (Launch now) is what fires the subscriber's Outcome fan-out.
Standard vocabulary from the /assistant-builder Scope Council pipeline, used across the
whole assistant catalog: founder Discover → Evaluate → Activate → Monitor → Maintain ·
subscriber Trigger → Interact → Outcome → Fallback.
FOUNDER JOURNEY ────────────────────────────────────────────────────────────
┌ DISCOVER & EVALUATE ──────────────────────────────────────────────────┐
│ Explore card, price + apps at a glance (sec-1) → tap for detail │
└─────────────────────────────────┬──────────────────────────────────────┘
▼
┌ ACTIVATE ────────────────────────────────────────────────────────────────┐
│ Personalize — 3 questions + channels (sec-2/2b) → Connect — read-only │
│ number/sender/Brain (sec-3) → Try — one real test signup (sec-4) │
└─────────────────────────────────┬──────────────────────────────────────┘
│ founder taps Activate
▼
┌ MONITOR (early) ──────────────────────────────────────────────────────────┐
│ Activating… → "your program is live" (sec-5) — signups already flowing │
└─────────────────────────────────┬──────────────────────────────────────┘
│
▼ ◄── subscribers join here, see below
┌ MAINTAIN — founder decides it's time ──────────────────────────────────────┐
│ "Launch now" (sec-7): sender + copy, pick lists, reach math, send │
└─────────────────────────────────┬──────────────────────────────────────┘
│ fans OUT to subscriber segments
▼
┌ MONITOR (after) ────────────────────────────────────────────────────────┐
│ Pulse card — delivered counts, cost by channel (sec-8) │
└──────────────────────────────────────────────────────────────────────────┘
SUBSCRIBER JOURNEY ──────────────────────────────────────────────────────────
┌ TRIGGER — three doors fork IN ────────────────────────────────────────────┐
│ WhatsApp text ──────┐ │
│ Web form (sec-2b) ──┼──▶ dedupe + write, per unique subscriber │
│ Broadcast-reply kw ─┘ (AC-WL-01 · AC-WL-02 · AC-WL-08) │
└─────────────────────────────────┬──────────────────────────────────────┘
▼
┌ INTERACT ──────────────────────────────────────────────────────────────────┐
│ Confirmation reply — pre-sale (sec-6a) or sold-out + position (sec-6b) │
└─────────────────────────────────┬──────────────────────────────────────┘
▼
┌ OUTCOME — one broadcast forks OUT to segments ───────────────────────────┐
│ WhatsApp + email (218) · email-only, US (142) · WhatsApp-only (40) │
│ — one locked launch-day template, per segment (sec-6c) │
└─────────────────────────────────┬──────────────────────────────────────┘
▼
┌ FALLBACK ──────────────────────────────────────────────────────────────────┐
│ STOP/unsubscribe (AC-WL-07) · delivery failure (AC-WL-10/AC-BILL-03) · │
│ schema mismatch (AC-WL-12) — no dedicated frame drawn yet, see note ↓ │
└──────────────────────────────────────────────────────────────────────────┘
channels
choice lives in Activate (Personalize) because it drives what the signup form collects; sender
identity, launch copy, and list targeting all move to the Maintain-time "Launch now" moment
(prd-as-waitlist-launch.md §Setup Flow v9, T1051, locked 2026-06-10).The frames below are the 1:1 build contract, once
signed off — the dev team matches them pixel for pixel; only current / being-built state lives
here. Section 8 · Future design at the bottom marks only the two explicitly deferred,
Peyton-owned scope questions, not a second gallery of drawn screens
(kit canon U9). Acceptance ids cited in frame notes (AC-* ↗) live in
docs/product/assistants/shared/prd-as-waitlist-launch.md — §Acceptance Criteria
— Setup Flow v9 (T1051) for AC-WLSETUP-*, and §Test Plan → Acceptance Criteria for
AC-WL-*/AC-BILL-*. This artifact cites ACs, never mints them; NEW
(PRD debt) marks a criterion still to file.
docs/product/platform/prd-pl-platform-core.md), not a per-assistant criterion.Each one's a link or snippet you can hand out.
Sent to everyone the moment you launch — also shapes what the signup form collects (phone, email, or both). Message + sender are picked at launch time (sec-7).
✦ Reads your Brain — business name, voice. Full readiness lives on Connect →.
.panel despite being TOC'd under § Desktop screens — no true 1180-width realization existed. Re-drawn here in the master's two-column desktop chrome (apps+wallet flex-1 left, Brain Check 400px right — same shape as `assistant-lifecycle.html` sec-5), same rows/copy as before, nothing invented. The "Continue to Try" button is omitted from this crop; content otherwise identical to the prior single-frame version.channels) is a Personalize-only choice; launch execution fields that don't need a connected app (launch copy, wave targeting) stay absent from setup, present only in the Launch-now modal.We'll add a test row to your store and send the confirmation to your own WhatsApp — so you see exactly what a guest sees. Free.
Each one's a link or snippet you can hand out.
Sent to everyone the moment you launch — also shapes what the signup form collects (phone, email, or both).
✦ Reads your Brain — business name, voice. Full readiness lives on Connect →.
channels) is present in Personalize and live-drives the previewed form fields; launch execution fields (sender identity, launch copy, wave targeting) are absent here.About 20 seconds. Stay on this screen.
Your signup page is open and taking names right now.
Unsubscribe link + business mailing address are a fixed CAN-SPAM compliance footer, not part of this editable slot.
Nobody on an unchecked list is contacted or charged. Sending needs at least one list checked — with both off, "Send" disables and shows "No recipients, no charge," same as every other staged assistant.
This can't be undone once you send.
Nothing sends until the wallet covers it. No partial send, no retry-on-top-up.
Story, acceptance, and design notes for this modal live with its primary desktop frame — sec-7 above.
assistant-flows/assistant-lifecycle.html is the PRIMARY structural contract — this file extends its existing WAITL1 worked example (Personalize live-preview, Try honest-test, activation loader, Pulse cards) rather than re-deriving it, and must never contradict it. assistant-flows/workshop-booking.html is the canonical structural reference (design-canon.md § Assistant-flow mockup structure); token block from on-brand-support.html verbatim.prd-as-waitlist-launch.md §Setup Flow v9 (AC-WLSETUP-*, the 2026-06-10 Peyton-locked spec) + §Test Plan (AC-WL-*/AC-BILL-*) · waitlistPhases.ts · templateConfigurationFields.ts · ledger ../parity/parity-waitlist-launch.md · 2026-07-26 Assistant Builder scope pass (Personalize/Connect/Brain findings) · 2026-07-26 WhatsApp Agent scope pass (send-path, template, tier-cap, US-policy findings).