Team count and revenue for every location, four seasons out. Tune the growth levers, move markets between launch seasons — the whole plan recomputes.
Existing markets grow at the same-store rate (per year, spread over the four seasons) with the seasonal tide sliders on top (into winter / spring / summer / fall) — the tide moves teams between seasons, the rate is the growth. Launched markets grow by age — 2nd, 3rd, 4th season on the cohort curve, 5th and 6th on the mature-launch rate with only a share of the seasonal tide (and never a step down) — then join the existing sliders from their 7th. Seasonality is an existing-market thing; a young market is still filling its gym. Launch size follows the scenario (Low 8 · Medium 24 · High 36 per new market; Long Island fixed at 12 — and tap any chip to type a custom open size for that market). Summers anchor year-over-year: an existing market's summer is never below last summer × the Summer YoY lever (summer is ATH season). Venue caps clamp any row at its building's limit. Base is the 570-team Slasher 26 close. Sandbox — your edits live only in this browser.
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.
Benchmark = the nine GTA rows on the Plan tab (Burlington, Vaughan, Toronto ×2, Brampton, Oshawa, Mississauga, Markham, Oakville), read live with your edits. Today = Sl 26 base · Summer peak = Summer 26 actuals · At cap = every GTA venue at its venue cap. Utilization = teams ÷ cap.
Same teams as GTA gives every GTA-type metro (2M+ people) the GTA level flat; smaller metros get the per-capita target instead so Niagara is not asked for 400 teams. GTA per capita scales it by metro population (US = 2023 Census MSA estimates, Canada = 2021 CMA; New York 19.5M, GTA 7.1M). GTA per venue gives each venue already on the plan the GTA's teams-per-venue — the "same utilization and maturity in the gyms we have" reading, no new venues.
Plan at Sl 28 = this metro's rows summed in the last season of the 8-season run, on the current preset, slate and overrides. Gap = target − plan. Venues to add = gap ÷ the GTA's teams-per-venue at the chosen level. Crosses = the first season the plan meets the target; "capped" means the venue caps stop it first. Parity network = every metro at the larger of its plan or its target — no market is pulled down. Revenue uses the Unit econ box on the Plan tab.