# 04. Программа подтверждения или опровержения ## Принцип Нельзя валидировать этот продукт email signup или вопросом «вы бы заплатили?». Минимальная единица доказательства — **существующая группа**, которая пришла от идентифицируемого хоста, вошла минимум втроём, закончила игру, повторила её и оставила положительную contribution после своего acquisition source. Пороги ниже — **внутренние decision gates**, а не рыночные нормы. Их нужно заморозить до первого участника и не снижать после результатов. Confidence intervals и raw denominators публикуются рядом с процентами. Исполнение интервью, наблюдений, concept comparison и concierge-сессий описано в [10 — Primary research protocol](./10-primary-research-protocol.md). Порядок доказательств не меняется после просмотра данных: ```text problem evidence → group-decision evidence → concept evidence → fulfilled-session evidence → repeat evidence → paid evidence → channel economics ``` Powered checkout или price test нельзя запускать раньше, чем существует реальный inventory, достаточный для исполнения каждого обещанного слота, и заранее описаны authorization, capture, cancellation и refund. ## Сквозная воронка ```text qualified host → assigned concept/message → selected real slot or recorded non-transactional intent → sent 2+ invites → 3+ people joined → mic check → first session started → first canonical action → midpoint → completed first ending → retained host-pass authorization/capture → paid second session completed by the same party → optional guest became next host ``` Activation reservation и retained host-pass — разные события и не объединяются в один `checkout`. Для каждого платёжного события заранее фиксируются `initiated`, `authorized`, `captured`, `cancelled`, `refunded` и причина отказа. Неплатёжный commitment нельзя подписывать как WTP. Каждый переход имеет timestamp, acquisition source, `person_id`, `host_id`, `room_id`, `party_id` и версию состава. Guest logins и повторные devices не создают новые группы. Правило `same party` — допустимый overlap участников и обработка замен — регистрируется до анализа; guest→host считается отдельной петлёй и не подменяет same-party repeat. ## Дерево метрик | Уровень | Primary outcome | Что остаётся диагностикой или guardrail | |---|---|---| | Problem | Доля qualified groups с наблюдаемой прошлой GM/prep/rules friction | Заявленный интерес к AI | | Activation | Qualified parties, которые стартовали обещанную сессию | Landing CTR, email signup, individual curiosity | | Product outcome | Qualified party sessions, завершившие явный финал в обещанном timebox | Participant-hours, число реплик, длина транскрипта | | Experience | Удовольствие, agency и желание снова играть у всей группы, а не только хоста | Novelty и вежливая похвала после пилота | | Retention | Та же party завершила второй QA-equivalent one-shot в заданное окно | Выбор даты без состоявшейся второй игры | | Commercial | Paid second-session completion и 90-day contribution per acquired host | Authorization без исполнения, gross revenue | | Guardrails | Safety/privacy incidents, false-valid intent commits, defects и manual interventions | Средние значения, скрывающие критический инцидент | `Completed participant-hours` публикуется как usage/cost diagnostic, но не является North Star: метрика растёт от более длинной или застрявшей сессии даже без лучшего группового outcome. ## Phase 0 — право запускать тест До любого participant contact: - одна candidate geography и письменная допустимость text recruitment; - consent для text research, incentive, withdrawal и incident route; - approved PII/text storage, access roles, retention/deletion и repository redaction boundary. До promise реального voice slot, voice/STT или payment: - оригинальная rules-light система либо письменная лицензия; - ни одного Chicken Curry/Knave/D&D asset, текста, мира, персонажа, голоса или likeness без прав; - country × provider × payment × age/content policy matrix; - consent на audio/STT, список subprocessors, retention/deletion и export flow; - adults-only pilot envelope, report/block/pause и incident owner; - privacy architecture для branch facts и запрет обучения на sessions по умолчанию; - Stripe/Paddle/store route с рассчитанными tax и refund consequences. **GO text research:** minimum text-research gates имеют письменного owner и pass. **GO voice/payment:** все modality gates имеют письменного owner и pass. **PAUSE:** policy/data вопросы решаемы, но не закрыты. **KILL geography/partner path:** законный или policy-compliant путь отсутствует. ## Phase 1 — problem и group-decision interviews Первый planning cohort — 30 organizers, 18+, в одной выбранной и cleared pilot geography; каждый в последние шесть месяцев пытался собрать TTRPG или совместный online game night и может назвать минимум двух потенциальных гостей. US остаётся current candidate и становится cohort только если Phase 0 geography memo выбирает его; English-first не доказывает лучший рынок. Не набирать только AI enthusiasts или подписчиков одного creator. Организаторские интервью не представляют всю decision-making unit. После них исследуются приглашённые гости, отказавшиеся гости и по возможности intact parties по протоколу `10`. Problem-qualified cohort и high-intent payment cohort маркируются раздельно; ответы второго нельзя переносить на общий рынок. Вопросы только о прошлом поведении: - последняя попытка собрать игру, кто и сколько готовил; - что конкретно сорвало или ухудшило вечер; - как выбрали GM и хотел ли он быть GM; - что уже покупали для группового развлечения; - какой AI опыт использовали и почему вернулись/ушли; - кого реально пригласят и в какой доступный слот. Decision gates: | Результат | Decision | |---|---| | ≥18/30 описывают недавнюю конкретную GM/prep/rules friction; guest evidence не опровергает proposition; autonomous AI-GM проходит заранее заданный concept gate | GO только к отдельному capacity-limited smoke cohort; Phase 1 не доказывает formation | | Проблема реальна, но главным препятствием системно оказывается только scheduling или слишком длинный формат | PIVOT к более короткому/asynchronous/co-GM proposition и повторить интервью | | `none`, co-GM или simpler party-story проходит concept gate вместо autonomous AI-GM | KILL/PIVOT current autonomous proposition до smoke test | Интервью не доказывают WTP. ## Phase 2 — concept comparison и capacity-limited smoke test До оптимизации copy участникам в случайном порядке показываются три честно описанных решения одной и той же проблемы: 1. autonomous AI-GM one-shot; 2. AI co-GM, помогающий человеку-ведущему; 3. более простой AI party-story experience без обещания полноценной TTRPG. Сравниваются forced choice, причины отказа, perceived social risk и готовность принести конкретную группу в доступный слот. Это concept evidence, не demand/WTP. Если autonomous AI-GM системно уступает по наблюдаемым trade-offs и реальному slot/invite behavior, команда делает PIVOT до automation build. Для выбранного concept сравниваются два message variants: 1. `Everyone gets to play — no GM or rulebook.` 2. `Finish a hilarious RPG adventure with your friends tonight.` Primary CTA — не email: выбор реального слота → два invite contacts/links. Прозрачная refundable reservation допустима только в пределах hard inventory cap, с опубликованными сроками исполнения и автоматическим refund при неисполнении. Если такого inventory ещё нет, фиксируется неплатёжный slot/invite commitment и результат прямо помечается как **не являющийся WTP evidence**. Message variants сравниваются concurrent `1:1` на отдельном cohort по одному заранее выбранному primary endpoint: доля **всех qualified unique hosts, увидевших назначенный message**, которые выбрали реальный slot и отправили 2+ invites. После cap copy может быть зафиксирована только как operational candidate; этот малый inventory не поддерживает claim статистического превосходства message. Cap равен фактически доступному inventory, а не желаемой статистической мощности. Данные этого этапа не входят в будущий confirmatory price test. Decision gates: | Метрика | GO threshold | |---|---:| | Все qualified message-exposed hosts, выбравшие real slot и отправившие 2+ invites | ≥40% | | Invite-sending hosts, собравшие 3+ людей за 7 дней | ≥25% | | Independently formed parties, заполнившие pre-registered concierge allocation | 12 total; 3 в каждой `60/90 × 3/4–5 players` cell | В denominator первого gate входят все qualified unique hosts, увидевшие назначенный message, включая не выбравших слот, не отправивших invites, decline, no-response и expired holds. `2+ invites / slot_flow_started` публикуется только как диагностика и не может дать GO. Формирование нельзя считать только среди уже собравших intact party. Если traffic/time cap заканчивается до 12 allocated parties, Phase 3 остаётся `INCONCLUSIVE`; уже обещанные sessions исполняются, но меньший набор не выдаётся за 12-session design. Эти пороги проверяют formation friction, а не цену. `Reservation + invites` анализируется отдельно, если reservation использовалась, но не превращается post-hoc в price validation. **PIVOT:** invites отправляются, но join низкий — менять guest friction/format. Reservation есть, но invites нет — это individual curiosity, не party demand. **KILL current message/segment:** после двух controlled iterations group formation <20% среди invite-sending qualified hosts. ## Phase 3 — 12 concierge/Wizard-of-Oz sessions Два QA-equivalent original-IP one-shots используют общий tone rubric и адаптируются к двум timebox: 60 и 90 минут. Контент counterbalanced по ячейкам настолько, насколько позволяет 12-сессионный дизайн; фактический дисбаланс публикуется. Это отделяет эффект формата от эффекта единственного удачного сценария и оставляет второй content unit для реального repeat test. За кулисами допустим человек, но участникам ясно сообщается формат пилота. Не имитировать ложную автономность. До набора фиксируется направленный `2 × 2` дизайн: `60 vs 90 минут` × `3 vs 4–5 игроков`, по 3 сессии на ячейку, всего 12. Timebox назначается случайно только среди hosts, доступных для обеих длительностей; иначе используется quota matching и раскрывается self-selection. Party size наблюдается и quota-matched: исследователь не добавляет и не исключает людей ради ячейки. Такой объём только выбирает один-два кандидата для alpha; он не подтверждает оптимальную длительность или размер группы статистически. 120-minute branch в этом раунде является только high-load cost scenario, не validated format. Его добавляют отдельной заранее зафиксированной iteration лишь если обе shorter cells системно не успевают к финалу без researcher compression; иначе marketing/PRD не вправе называть 120 минут подтверждённой длиной. Минимальный набор: - mobile-first и desktop-first rooms; - TTRPG-experienced и casual/party cohorts; - минимум две намеренные split-party проверки; - одна ambiguity/clarification задача на session; - один labelled false-valid intent probe на session: синтаксически допустимая, но неверно понятая команда не должна silently commit state; - instrumentation каждого intervention и defect; - planned и actual duration, early exit и explicit ending отдельно по каждой ячейке; - individual post-session ratings и debrief по enjoyment, agency, social comfort, trust и desire-to-repeat; host score не заменяет guest scores. Decision gates: | Метрика | Gate | |---|---:| | Scheduled groups, которые реально стартовали | ≥75% | | Started groups, достигшие явного финала | ≥70% | | Completed groups, выбравшие реальную дату повтора в 30 дней | ≥25% directional intent signal; не считать retention | | Critical state errors или branch privacy leaks | 0 | | False-valid state commits в labelled probes | 0 | | Оплата/correction за ошибку системы | 0 | При 12 sessions проценты являются directional; вместе с агрегатами публикуются raw counts всех четырёх ячеек, сценариев и participant-level experience measures. Они не доказывают PMF. **KILL format** только если после двух content/tempo iterations completion остаётся <50% или участники системно предпочитают human GM/text solo outcome. Выбранный timebox и размер затем подтверждаются в alpha на большем cohort. ## Phase 4 — closed alpha, 30–50 групп Цель — доказать reliability и group outcome без постоянного researcher in room. Предварительно фиксируются: - p95 latency boundary после benchmark с реальными разговорами; - critical/non-critical state defect taxonomy; - допустимый manual intervention rate; - same-party membership rule и окно eligibility для второй сессии; - два QA-equivalent one-shots и критерии их content QA; - exact free-taste vs full-free vs refundable-booking assignment; - price и refund policy. GO к paid beta только если: | Метрика | Gate | |---|---:| | Start→completed ending | ≥70% | | Same party completed a second session within 30 days | ≥25% от eligible parties, завершивших первую сессию | | Critical canonical defects | 0 в release replay suite и real sessions | | Branch privacy leaks | 0 | | Ambiguous state-changing commands clarified before commit | 100% в labelled audit set | | False-valid intent commits | 0 в labelled audit set | | Reconnect duplicate actions | 0 | | p90 measured all-variable service COGS | Ниже выбранного checkout с запасом на refunds, tax/licence, CAC и fixed costs | Same-party repeat означает состоявшуюся вторую игру на другом QA-equivalent one-shot, а не выбор даты, открытие комнаты или повтор того же контента. 10%+ trial→paid — только ранний сигнал. Коммерческий GO принимает не процент сам по себе, а cohort contribution после free subsidy и всех расходов. ## Phase 5 — paid beta и economics proof ### 5A — confirmatory price test после появления inventory Тест проводится только после фиксации copy, channel, landing, eligibility, inventory, fulfillment SLA и refund policy: - `$14.99` — pre-registered primary branch; `$9.99` и `$19.99` — sensitivity branches; - concurrent random assignment `1:1:1`; последовательный запуск цен запрещён; - primary endpoint — доля qualified unique visitors, которые сделали реальную card authorization/capture, отправили минимум два приглашения в течение 24 часов и получили доступ к обещанному inventory; - planning assumption — 10% baseline; `n=1 050` qualified visitors per branch даёт около 80% power обнаружить разницу 5 percentage points при family-wise two-sided `α=0.05`; pairwise comparisons корректируются Holm method; - если отдельный blinded calibration cohort показывает другой baseline, новый sample cap и расчёт мощности публикуются до unblinding, а calibration traffic исключается из confirmatory analysis; - никаких interim winner calls: ветки не раскрываются до cap, кроме fraud/safety monitoring; - bots, repeats, ineligible geography и processor duplicates исключаются по правилам, замороженным до traffic; - cancellation/refund до назначенной сессии остаётся в denominator и считается failure для net-reservation secondary endpoint; authorization, capture, fulfillment, cancellation и refunds публикуются отдельно. Sensitivity branch не может post-hoc заменить primary и превратить провал в GO: её успех означает **PIVOT и отдельный confirmatory rerun** на новой цене. Если required sample или fulfillable inventory превышает budget/capacity, результат помечается inconclusive, а не «победой лучшей ветки». ### 5B — activation-offer decision При замороженных lead channel, retained price из 5A, copy и eligibility хосты concurrent `1:1:1` получают `full-free`, `short free taste` или `refundable booking`; refundable booking — pre-registered control. Primary endpoint — 90-day contribution per acquired host, включая нулевые и отрицательные outcomes неплатящих/вернувших деньги хостов. - hard inventory, fulfillment/refund SLA и запрет overselling из 5A продолжают действовать; capacity/traffic/budget model обязан поддерживать весь pre-registered assignment cap; - минимум 500 eligible acquired hosts и 50 first-paid hosts на branch; Phase 4 variance может потребовать больший sample для 80% power на заранее заданный MDE `$3/acquired host`; - точный cap публикуется до assignment; unblinding и early winner calls запрещены; - challenger заменяет control только если Holm-adjusted lower 95% bound его incremental contribution > `$0` **и** lower 95% bound абсолютной contribution > `$0`; - одновременно branch проходит два non-inferiority guardrail: Holm-adjusted one-sided 95% lower bound разницы против control выше `−5 percentage points` для (a) paid-completed groups / acquired hosts и (b) D30 same-party repeat среди first-session completers, eligible for 30-day observation; - если challengers не проходят, остаётся refundable control; если ни одна branch не имеет положительной абсолютной economics, paid launch останавливается. ### 5C — channel economics После 5B фиксируется один retained offer. Нужны минимум 200 started hosts overall и не менее 50 first-paid hosts **в каждом acquisition channel × retained price/offer cell, для которого заявляется scalable economics**. На первом проходе заранее выбираются один lead channel и invite/organic loop; добавлять каналы после просмотра результатов нельзя. Если conversion не даёт выборку до pre-registered spend/traffic cap, cell признаётся failed/inconclusive; нельзя объединять каналы или объявлять успех по пяти покупкам. До первого spend для каждой cell фиксируются audience, creative, country, attribution window, cash budget, fully loaded budget, target `n`, holdout design и numeric stop-loss. Там, где randomized holdout невозможен, заранее задаётся matched/geographic control и его limitations. Минимум 10% eligible audience удерживается как holdout для creator/reward experiments, если это не нарушает platform rules. ```text maximum acceptable CAC = lower 95% bound of measured 90-day pre-acquisition contribution per host channel spend cap = planned first-paid-host target × maximum acceptable CAC ``` Если maximum acceptable CAC ≤0, paid channel не запускается. Community labor, creator fees/rev share, production, agencies, affiliates и tools включаются в fully loaded acquisition spend; «organic CAC = 0» запрещено без нулевых labor/tool costs. Обязательные разрезы: - source/channel и creator holdout; - country, device/browser, party size; - free-full vs free-taste/refundable booking; - price/offer cell; - first-time vs returning party; - support/moderation cohort. Commercial GO: ```text 90-day cohort contribution = net paid receipts - free and paid service COGS - variable support/moderation - attributed CAC ``` Primary commercial estimator — `90-day contribution per acquired host`. Confidence interval считается non-parametric bootstrap на уровне stable party ID, 10 000 resamples, two-sided 95%. Если одновременно принимается решение по нескольким channel cells, confidence bounds корректируются Holm method. Raw party-level denominators и missing/censored cohorts публикуются; незрелые 90-day cohorts не подменяются forecast. Этот gate доказывает contribution economics когорты, но не прибыль компании. Отдельный operating-P&L считается за полный календарный месяц: ```text monthly operating profit = net paid receipts - all free and paid variable costs - attributed CAC - fixed salaries and contractors - backend/database/observability - legal, content, insurance and administration ``` ```text paid-session break-even volume = fixed monthly costs / contribution per paid session after free subsidy, CAC and variable support ``` - lower 95% confidence bound 90-day contribution per acquired host > $0 для каждой channel cell, заявленной к scale; - CAC payback ≤90 дней до масштабирования paid acquisition; - ≥25% completed same-party repeat в 30 дней; - refunds ≤10% и причины не указывают на системную state/quality проблему; - no unresolved severe safety/privacy incident; - один guest→host loop измерим, а не только заявлен. Один полный месяц с положительным operating P&L, фактическим fixed-cost ledger и трудом основателей по рыночной loaded cost называется только **one-month operating-profit evidence**. До этого допустима лишь формулировка `positive cohort contribution`. **Repeatable profitability proof** требует минимум трёх последовательных полностью начисленных положительных месяцев, причём acquisition cohorts каждого месяца созрели до 90 дней, refunds/tax/licence/support отражены, а channel mix не заменён разовым партнёрским всплеском. Для aggressive scale внутренний gate должен быть строже: contribution LTV/CAC ≥3 после наблюдаемого retention, но это risk policy, а не универсальная рыночная норма. ## Phase 6 — partner pilot Только после independent original-IP proof. Один creator/IP partner, один licensed adventure, письменные rights и economics. Design: - randomized или matched holdout без partner branding; - identical product quality и price; - отдельно считать creator fee/rev share, approval/support cost и cannibalization; - partner reach не считать результатом без formed/completed/paid groups. **GO:** incremental 90-day contribution относительно holdout положительна, editorial acceptance пройден, safety/support не ухудшены. **PIVOT:** partner эффективно продаёт human-led premium, но не self-serve — рассмотреть co-GM/B2B. **KILL partnership path:** uplift не покрывает rev share или создаёт brand/legal risk. ## Диагностика провала | Где падает воронка | Что это опровергает | Что не надо делать | |---|---|---| | Host не отправляет invites | Positioning или social permission | Добавлять combat/maps | | Invites есть, guests не join | Guest friction, длительность или AI aversion | Покупать больше host traffic | | Join есть, start нет | Voice/onboarding/scheduling | Делать subscription | | Start есть, completion нет | Tempo, scenario, reliability | Обвинять acquisition channel | | Completion есть, repeat нет | Novelty; subscription thesis | Строить campaigns автоматически | | Repeat есть, pay нет | Price/packaging/value ownership | Вводить скрытые token fees | | Pay есть, contribution <0 | Free subsidy/CAC/support/architecture | Считать gross revenue прибылью | | Economics есть, scalable channel нет | Viable niche, не high-growth | Выдумывать SOM из category users | ## Stop-loss rules После двух заранее определённых iterations без улучшения: - group formation <20% — закрыть current party-first proposition; - completion <50% — закрыть текущий format/AI-GM autonomy; - same-party completed repeat <10% в 60 дней — отказаться от subscription/campaign thesis и оценивать только event business; - 90-day contribution отрицательна при приемлемой рынком цене — не масштабировать; - privacy/legal/provider gate неразрешим — закрыть соответствующий geography/content path. Stop-loss нельзя обходить добавлением ещё одного feature до выяснения причины.