← all sprint docs

TMA Growth Scoreboard — Operating Model

auto-synced 12 Aug 2026 · live numbers: canonical_facts.json + the Growth Cockpit.

The one shared surface Aga + Nic drive from every day, toward £25K recurring MRR. Funnel + company P&L + efficiency. No personal finances live here — ever. Owner: Nic (funnel + fixes). Reviewed weekly by Aga (strategy, budget). Kept fresh by the Scorekeeper (agent + daily email robot).


1. What this is (and what it is not)

This is not the war room. The war room (TMA-TURNAROUND-WAR-ROOM-JUL2026.html) is founder-only — cash, runway, burn, payroll, personal spend. It stays private.

This is the shared growth scoreboard: the ~8 numbers that move us toward £25K MRR, plus company revenue & spend (P&L level, not bank balances). Both Aga and Nic can see it, edit it, and ask Claude questions of it — same page, same second.

The sharing line (locked): - ✅ Shared: funnel stages, MRR-to-goal, Cost per Trial, CAC, channel efficiency, retention/churn, ad spend, email engagement, company revenue & spend (P&L). - 🔒 Never shared here: cash position, bank balances, runway, burn, VAT/tax, payroll by name, personal spend, valuation/exit maths. Those live in the war room only.


2. The goal — show the ladder, not just the horizon

Only recurring MRR counts. Lifetime / promo cash is one-time — it is EXCLUDED from the MRR line (it's cash, not MRR).

~£10K now  →  £12K BREAK-EVEN (next rung)  →  £15K (month-6 gate)  →  £25K (GOAL)

Nic stares at the next rung daily (break-even, ~£2K away), not the far number. £25K is the horizon on the bar.


3. The 8 numbers (funnel-shaped) — and the honest LIVE/DARK truth

Traffic → Leads → Trials → Paid → Retained, plus two efficiency gates.

# Metric Target Status today Owner action
1 MRR (combined recurring) vs £25K £12K → £25K 🟡 LIVE* *Fix: old brief showed app-rail only, under-reporting ~5×. Now Stripe web + RC app combined.
2 Traffic (sessions + installs) grow, quality-weighted ✅ LIVE Watch for cheap-junk inflation
3 Leads + lead rate 28% (now ~12.6%) ✅ LIVE Rate > count
4 Lead → Trial#1 leak rising WoW 🔴 DARK Instrument (Phase 0)
5 Trial → Paid % ≥40% 🟡 PARTIAL Hold
6 Net retention / churn churn ↓ 🟡 PARTIAL 80% of June's drop was here
7 Cost per Trial <$20 🔴 DARK The gate to re-open paid
8 CAC / LTV:CAC ≥3:1 🔴 DARK Tag UNVERIFIED until attribution lands

Half the board is dark — that is the point, not a bug. The DARK boxes ARE Nic's job #1. One fix — RevenueCat→Meta CAPI + repair RevenueCat→Amplitude + de-inflate begin_checkout (Phase 0 in the tracking brief) — lights up the entire right half at once: clean trials, trial→paid, lead→trial, Cost per Trial, CAC.

Event-source naming convention (Nic · 9 Jul 2026): rc_* = RevenueCat · af_* = AppsFlyer · unprefixed = web/GTM. Amplitude's AI-merge unifies same-meaning events across sources (af_purchase + purchase + rc_initial_purchase → merged Purchase); the raw prefixed events stay unmerged for audit. The scoreboard's pullers should read the merged events for KPIs and the raw rc_* stream for the ±5%-vs-RevenueCat reconciliation gate. Verified 9 Jul: af_* flowing; rc_* zero in taxonomy. RE-VERIFIED 24 Jul (live Amplitude API): 7 rc_* event types NOW EXIST and are flowing — but volumes fail the reconcile badly (rc_trial_started = 3/30d vs ~128 web trial_started in GA4). The pipe is connected; most events aren't leaving RevenueCat. Next step = RC→Amplitude integration settings audit (all event types, both platforms) + backfill, then the ±5% gate. Boxes 4/7/8 stay DARK until reconciled.


4. The architecture — permanent, shared, both-edit, both-ask

Three layers, one job each:

  1. Google Sheet = the single source of truth. Both edit, live, same page, permanent. Claude reads and writes it (via the GA4 service account we already own). Nic edits targets/notes on his side, Aga on hers — same cells.
  2. Looker Studio = the beautiful board. Free, connects to the Sheet, permanent share URL. The thing you look at.
  3. Shared Drive/Dropbox folder = the shared brain. Holds this fleet + the Scorekeeper + the pullers. Both point Claude Code at it → both run the whole growth fleet and ask questions of the live data. No git.

Netlify stays only for one-way story docs (the growth analysis, the tracking brief). It is read-only — never the editable scoreboard.

Data flow: growth_scoreboard_pull.pyscoreboard_snapshot.jsonpush_to_sheet.py → Google Sheet → Looker board + daily email.


5. The daily email — free, no n8n, no LLM

An AI never runs unattended in the daily job. The email is a deterministic robot; Claude is the on-demand brain you ask.


6. Roles — who owns what (this is the handoff)

Owns
Scorekeeper (tma-growth-daily-brief agent + the email robot) The mechanical daily refresh + first-draft brief + the ONE flagged action
Nic (human owner) The funnel and the fixes. Job #1: turn the 🔴 DARK boxes 🟢 (Phase 0 instrumentation). Drives leads → trials → conversion.
Aga (founder, part-time) Weekly 30-min review · strategy · budget sign-off. Not the daily grind.

Governance: Nic owns growth and reports the numbers and has equity gated on £25K MRR — so the control is that every number traces to Stripe/RevenueCat truth, runs through the Skeptic + Attribution gates, and Aga reviews weekly. Not distrust — hygiene, protecting both sides.


7. Activation checklist (one-time, ~30 min)

  1. Create a Google Sheet "TMA Growth Scoreboard" → share Editor with Aga + Nic.
  2. Share it as Editor with the pullers' service account: google-analytics-claude-access@the-movement-athlete.iam.gserviceaccount.com. Then export GROWTH_SHEET_ID=<sheet id> (drop it in .env.local).
  3. One-time: tools/finance/venv/bin/pip install gspread google-auth. Then python tools/finance/growth_scoreboard_pull.pypython tools/finance/push_to_sheet.py → Sheet populates. (£0/run, no LLM.)
  4. In Looker Studio: New report → connect the Sheet → build the £25K bar + 8 traffic-light tiles. Share the URL with Nic.
  5. Daily email: paste daily_email.gs into the Sheet's Apps Script, set recipients, add a daily trigger (7am). (Or wire the launchd plist for the ship-today path.)
  6. Put the growth fleet folder in the shared Drive/Dropbox; both point Claude Code at it.

Source of truth for this system. Update this doc — never let the Sheet, the Looker board, and this doc drift.