GameBooth — Financial Operating Model
Canonical source: model/ in the repo. Generated 2026-08-18 21:12 UTC.
Aggregates and pseudonymous IDs only.
How this model changes
This page is generated — nothing on it is editable, and the retired
Google Sheet is not the model anymore. Every number here derives from exactly one input
surface: model/assumptions.yaml in the repo.
To change an assumption: edit assumptions.yaml → the regression tests in
model/test_model.py run (13 fixtures pin the math itself; a wrong model that
renders is worse than one that doesn't) → commit → CI re-renders and re-deploys this page.
The change arrives with a diff, an author, and a timestamp — a model change is a
code change, reviewable and revertable like any other.
Two kinds of values never need a hand edit: measured drivers overlay
automatically from the weekly prod snapshot (ops/weekly/*.json) when their
sample clears the n≥5 floor, and computed figures (everything not chip-
tagged below) follow from the inputs. If a number on this page looks wrong, the fix is in
the yaml or in model/model.py — never in this page.
Drivers & assumptions — the honesty column
| Input | Value | Basis | Note |
|---|---|---|---|
| starting_active_coaches | 1 | ✓ actual | Danny |
| coach_monthly_churn | 0.05 | ● guess insufficient (n=3) | |
| parents_invited_per_coach_per_month | 8.00 | ● guess insufficient (n=4) | |
| invite_to_first_purchase_conversion | 0.35 | ● guess insufficient (n=1) | |
| parent_monthly_retention | 0.70 | ● guess | Highest-leverage unknown. Enters as 1/(1-r). |
| reviews_per_active_parent_per_month | 1.17 | ◐ measured (n=6) | |
| price_per_review | 15.00 | ◐ measured (n=7) | CHANGED FROM 20.00. Rationale recovered from the sheet's Drivers tab 2026-08-18: 'Derived from a $120/hr coach rate on a <=5 min clip.' Also matches the measured beta price exactly ($15.00, n=7, every real transaction; ops/weekly 2026-08-18 snapshot). |
| base_take_rate | 0.20 | ◆ decision | |
| premium_take_rate | 0.28 | ◆ decision | |
| free_reviews_per_coach_month | 3 | ◆ decision | Free at the BOTTOM of each month, resets monthly. NOT a cap. |
| matched_share | 0.00 | ✓ actual | No platform_matched transactions exist yet. The projection uses the RAMP below instead — a plan, not an estimate (sheet Model row 22). |
| coach_reference_hourly_rate | 120 | ▢ canvas | |
| minutes_per_async_clip | 5 | ▢ canvas | |
| minutes_per_sync_session | 60 | ▢ canvas | |
| stripe_pct_of_gmv | 0.03 | ▤ vendor | |
| stripe_fixed_per_txn | 0.30 | ▤ vendor | |
| infra_cost_per_review | 0.75 | ● guess | |
| coach_onboarding_cost | 40 | ● guess | |
| fixed_monthly_costs | 250 | ● guess | |
| one_time_legal | 6000 | ● guess | |
| legal_lands_month | 2 | ◆ decision |
Measured overlays this build:
reviews_per_active_parent_per_month: promoted to measuredparents_invited_per_coach_per_month: REFUSED — insufficient (n=4); assumption keptinvite_to_first_purchase_conversion: REFUSED — insufficient (n=1); assumption keptparent_monthly_retention: not tracked (null) — assumption keptcoach_monthly_churn: REFUSED — insufficient (n=3); assumption keptprice_per_review: promoted to measured
Changed since previous snapshot:
- no driver changes between the last two snapshots
Sensitivity — plausible ranges (never ±% flexing)
Swing of steady-state contribution per coach across each driver's configured plausible range (assumptions.yaml). Sorted by swing, descending. The dot on each bar marks the current base-case value.
What-if — steady state, live
Driver trends — weekly snapshots
One small multiple per driver — different scales never share an axis. Series are sparse: the weekly export began 2026-08-18.
18-month projection
Every column below is COMPUTED from these assumptions (hover a chip for
its note; change any of them via assumptions.yaml, never here):
Plus two plans (decisions, not estimates —
projection: in the yaml): coaches added per month (shown as
+n in the Coaches column) and the platform-matched share ramp
(0 → 18% from month 10, which is what lifts the blended take rate late in the table).
CONVENTION: reviews are driven off ending parents — optimistic in a growing book. Cumulative cash from a zero starting balance; one-time legal lands month 2.
| Mo | Coaches | Parents | Reviews | Billable | Revenue | Absorbed | Fixed | Onboard | Legal | Net | Cash |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.95 | 2.66 | 3.10 | 0.25 | $0.76 | $4.61 | $250.00 | — | — | −$253.85 | −$253.85 |
| 2 | 0.90 | 4.39 | 5.12 | 2.41 | $7.24 | $7.61 | $250.00 | — | $6,000.00 | −$6,250.36 | −$6,504.21 |
| 3 | 1.86 +1 | 8.27 | 9.65 | 4.08 | $12.25 | $14.34 | $250.00 | $40.00 | — | −$292.09 | −$6,796.30 |
| 4 | 2.76 +1 | 13.53 | 15.79 | 7.50 | $22.49 | $23.45 | $250.00 | $40.00 | — | −$290.96 | −$7,087.26 |
| 5 | 3.63 +1 | 19.63 | 22.90 | 12.02 | $36.07 | $34.01 | $250.00 | $40.00 | — | −$287.94 | −$7,375.19 |
| 6 | 4.44 +1 | 26.18 | 30.56 | 17.22 | $51.67 | $45.38 | $250.00 | $40.00 | — | −$283.71 | −$7,658.91 |
| 7 | 6.22 +2 | 35.75 | 41.72 | 23.05 | $69.16 | $61.96 | $250.00 | $80.00 | — | −$322.79 | −$7,981.70 |
| 8 | 7.91 +2 | 47.18 | 55.06 | 31.32 | $93.97 | $81.76 | $250.00 | $80.00 | — | −$317.79 | −$8,299.49 |
| 9 | 9.52 +2 | 59.67 | 69.64 | 41.09 | $123.26 | $103.41 | $250.00 | $80.00 | — | −$310.15 | −$8,609.64 |
| 10 | 11.04 +2 | 72.68 | 84.82 | 51.70 | $156.26 | $125.96 | $250.00 | $80.00 | — | −$299.70 | −$8,909.33 |
| 11 | 12.49 +2 | 85.84 | 100.18 | 62.72 | $190.97 | $148.77 | $250.00 | $80.00 | — | −$287.80 | −$9,197.13 |
| 12 | 14.86 +3 | 101.71 | 118.69 | 74.10 | $227.31 | $176.26 | $250.00 | $120.00 | — | −$318.95 | −$9,516.08 |
| 13 | 17.12 +3 | 119.13 | 139.03 | 87.67 | $270.89 | $206.46 | $250.00 | $120.00 | — | −$305.57 | −$9,821.65 |
| 14 | 19.26 +3 | 137.33 | 160.27 | 102.48 | $318.96 | $238.00 | $250.00 | $120.00 | — | −$289.04 | −$10,110.69 |
| 15 | 21.30 +3 | 155.78 | 181.79 | 117.89 | $369.58 | $269.96 | $250.00 | $120.00 | — | −$270.38 | −$10,381.07 |
| 16 | 23.24 +3 | 174.11 | 203.18 | 133.47 | $421.44 | $301.73 | $250.00 | $120.00 | — | −$250.28 | −$10,631.36 |
| 17 | 25.07 +3 | 192.08 | 224.16 | 148.94 | $473.62 | $332.88 | $250.00 | $120.00 | — | −$229.26 | −$10,860.61 |
| 18 | 26.82 +3 | 209.56 | 244.55 | 164.09 | $525.50 | $363.16 | $250.00 | $120.00 | — | −$207.66 | −$11,068.28 |
Unit economics — per review
The free allowance is NOT free to the platform: allowance reviews earn zero take but still incur the Stripe + infra legs above. Coach pitch: async net $144.00/effective-hour = 1.20× sync net; throughput 12.00× — publish the net multiple only.
Raise gates
| Gate | Threshold | Base case | Status |
|---|---|---|---|
| active_coaches | 5 | 4 | ✗ BASE CASE FAILS |
| coaches_retained_90d | 3 | — | ◌ no data yet |
| total_paying_parents | 50 | — | ◌ no data yet |
| reviews_per_active_parent_per_month | 2.50 | 1.17 | ✗ BASE CASE FAILS |
| month3_parent_retention | 0.40 | — | ◌ no data yet |
| monthly_gmv | 3000 | — | ◌ no data yet |
| platform_matched_transactions | 1 | 0 | ✗ BASE CASE FAILS |
| consecutive_months_positive_contribution | 2 | — | ◌ no data yet |
| legal_posture_counsel_signoff | 1 | — | ◌ no data yet |