Season Engine.

Build 57 · Oct 10 · venue caps switch (cashflow header) · every gym stops at its cap when on

Team count and revenue for every location, four seasons out. Tune the growth levers, move markets between launch seasons — the whole plan recomputes.

Scenario
⋯


Network teams by season
Growth levers
Unit econ players × $ = / team / season

Existing markets — same-store growth per season

historical same-store trend +19%/yr, spread evenly across the four seasons · the seasonal tide rides on top: into winter −8% · spring 0 · summer +26% · fall −14% · summers are also floored at last summer × YoY (existing markets hit ATH in summer)

Launched markets — maturation by age

historical cohort curve 14 → 19 → 22 → 26 → 26 → 27: +36% · +17% · +16% · then ≈+2%/season  ·  Vancouver plan (8→14→24→30): +75% · +71% · +25%  ·  seasons 5–6 feel only part of the seasonal tide and never shrink  ·  from the 7th season a location is an existing market

The seasons — markets, team count & revenue

drag a chip between seasons · tap it to pick · a market carries its later venue adds with it
red = launch seasonamber = capped by venueclick any season cell to type your own number — it wins and growth compounds from it (blank = back to formula)new launched Fall \'26 · new · opens … not open yet · no tag = existing marketbase = Slasher 26 close planteams are always even — everything rounds down to the pair
Notes, sources & rules

Chip counts = teams at open (offset-0 venues). Deepen books (Chicago · Boston · NY adds) are movable chips too — venue launches inside live markets. Chicago's Central 18 is unresolved; XCEL has never answered a human.

Everything in a row is editable — click a location name or its venue note to rename it, click the Sl 26 base to type the real fall number, click any cap (blank = default · 0 = no cap), click any season cell to override the formula. Red means you typed it. Every count is floored to an even number — teams play in pairs, so 93 shows as 92 and a formula result of 47.6 lands at 46. Edits persist in this browser — Save as… in the Scenario bar keeps a setup under a name (low / plan / stretch, or whatever you're testing), and the picker switches between them; Export JSON hands a scenario to someone else. Existing + fall-cohort caps are real (planner / capacity sheet); new-class caps are court-derived (courts × ~10 weeknight / ~14 weekend).

New markets ignore the seasonal tide while they mature — 2nd/3rd/4th season on the cohort curve, 5th/6th at the mature-launch rate with only the "tide on young mkts" share of the season swing and never a step down, existing-market sliders from the 7th. Launch size follows the scenario: 8 (Low) · 12 (Historical) · 24 (Medium) · 36 (High) per new metro, stepping +33% / +25% / +15% by age. Long Island is pinned at 12 in every case; every other market — the Chicago/Boston/NY books included — follows the scenario. Tap a chip to override any market's open size.

Season revenue = teams × team cost (players × $/season; default 8.67 × $360 = $3,121). ×4 = annualized run-rate. 1,400 = the raise-go marker. Sources: capacity sheet (Aug 17) · Expansion Lab planner · Q2 deck. Warehouse basis — don't quote absolute counts to investors.