Content & coach supply
Ladder · A4
The strongest Finding. Their JSON APIs, Mux streams and job requisitions — and the arithmetic that relocates the moat.
Area question. How does Ladder produce and refresh its content, who are the coaches, and what does that supply chain cost?
One-line answer. Ladder's content machine is three layers with three different cost curves,
and only one of them is a treadmill. The expensive-looking layer — thousands of movement demo
videos — is capital: each Team's clip library is shot in one dated batch and then serves for
two to three years untouched. The actual recurring cost is programming plus the coach's own
voice: ~12 authored sessions per Team per 8-week cycle, a ~40-second coach intro video per
workout, and on the order of 30 coach-recorded audio cues per workout, produced roughly two weeks ahead of air
date. And the coaches themselves are not primarily a content cost at all — the utm_medium=
coach-acquisition campaign taxonomy in Ladder's own URLs proves the roster is a paid
acquisition channel wearing a content costume.
Source legend
Inquiry-wide legend in SCOPE.md. Local identifiers used below:
| Tag | Source |
|---|---|
| [AS] | assets/appstore-us.json, v4.11.0, pulled 2026-08-16 |
| [SS-NN] | assets/screenshots/appstore-NN.png |
| [IB] | Ilia's field notes (verbatim in SCOPE.md) |
| [WEB] | joinladder.com — /, /sitemap, /sitemap.xml, /pricing, /hilary, and all 22 live /team/<slug> pages, fetched 2026-08-16 |
| [WEB-JSON] | The __NEXT_DATA__ JSON embedded in those same pages — the live team object with coachCertification, coachGender, quadrant, workoutSplits, instagramHandle, welcomeVideoURL, practiceWorkoutID. Primary source, not marketing copy. |
| [WOD] | joinladder.com/app/workout/today — the free public Workout of the Day, which ships the complete workout object (playlist, per-item media URLs, audio URLs, movement trait dictionary, ratings). Sampled 2026-08-16 = Team ELEVATE, workouts dated 2026-08-15 and 2026-08-14. |
| [WOD-ARC] | Wayback captures of the same page across 2025-10 → 2026-05, which expose other Teams' asset folders |
| [JOBS] | api.ashbyhq.com/posting-api/job-board/ladder, 4 live reqs pulled 2026-08-16 (full descriptions read) |
| [ARC] | web.archive.org captures of joinladder.com/sitemap (2022-05 → 2026-04) and the CDX index of joinladder.com/team/* |
| [PRESS] | PR Newswire 2020-08 launch release; BusinessWire / Fitt Insider / Athletech News 2025-10-27 nutrition launch |
| [3P] | LinkedIn company page; Garage Gym Reviews |
| [A2] | Sibling Finding core-loop-training.md, sections 1.2–1.3 (the 6-week series / A-B week structure). Load-bearing for the authoring multiplier. |
[WEB-JSON] and [WOD] are the load-bearing sources in this Finding. They are Ladder's own production data, served publicly, not claims about it.
1. What we found
1.1 The unit of supply is a Team, and there are 22 of them — not 20, not 15, not 25
Every published count disagrees, so we counted the artefacts instead [WEB]:
| Count | Where it comes from | Date |
|---|---|---|
| 20 | App Store description, named coach list | 2026-08-10 [AS] |
| 22 | /sitemap page — 22 /team/<slug> links, all returning HTTP 200 with a full team object |
2026-08-16 [WEB][WEB-JSON] |
| 16 | /sitemap.xml — stale, missing 6 live teams |
2026-08-16 [WEB] |
| "25+" | homepage marketing copy | 2026-08-16 [WEB] |
| "22+" | /hilary and /pricing copy |
2026-08-16 [WEB] |
| "15+ elite coaches" | in-page carousel asset on every team page | 2026-08-16 [WEB] |
22 is the real number, because 22 slugs return a populated team object with a UUID, a
coach, a certification string, a 7-day split, and a Mux welcome video. Three slugs that appear
in other sources — iconic, embody, thrive — return the homepage fallback (identical
155,745-byte response), i.e. no live team page [WEB].
That gives a three-way discrepancy worth naming, because each side is stale in a different direction:
:: Roster, three sources, 2026-08-16
Что там: the App Store copy lags behind launches; the website lags behind removals
├── In App Store copy AND live on site (18)
│ └── align ascend body-and-bell crews-control define elevate endure evolve
│ forged formation limitless maximus movewell project-alpha resilient
│ transform versa vitality
├── In App Store copy, NO live page (2) → EMBODY (Allegra Paris), THRIVE (Nairee Kiana)
├── Live on site, NOT in App Store copy (4) → ERA (Coach Dani), FLOURISH (Coach Kimmie),
│ IGNITE (Coach Stevie), VANTAGE (Coach Brady)
└── In screenshots only, gone from both (1) → ICONIC (Coach Sarah / Sarah Ryan)
The four site-only teams are the newest launches — they appear on the sitemap only after 2026-04 [ARC] and are not yet written into the store description. The ICONIC discrepancy Ilia's brief flagged resolves cleanly: ICONIC left the sitemap between 2025-05 and 2025-08 [ARC] and is screenshot lag, not roster mystery. A2 independently found IGNITE, VANTAGE and Coach Stevie named in reviews with no listing anywhere — all three are now confirmed live teams [WEB-JSON].
1.2 The roster is a deliberate 2×2 portfolio, and Ladder says so in a field called quadrant
Every team object carries "quadrant": "1".."4" and "coachGender": "F"|"M" [WEB-JSON]. Cross
them with the equipment field and the quadrant decodes exactly:
| Q | Coach | Setting | Teams | n | Typical duration |
|---|---|---|---|---|---|
| 1 | Female | Home / minimal | align, body-and-bell, define, elevate, endure, flourish, formation, ignite, movewell | 9 | 30–45 min |
| 2 | Female | Gym / barbell + machines | ascend, era, evolve, limitless, transform, versa | 6 | 45–60 min |
| 3 | Male | Home / minimal | crews-control, maximus, vitality | 3 | 30–45 min |
| 4 | Male | Gym / barbell + machines | forged, project-alpha, resilient, vantage | 4 | 45–60 min |
This is not an inference. The two open Operations reqs are titled, verbatim, "Team Manager | Female-Led Home Programs" and "Team Manager | Female-Led Gym Programs" [JOBS] — Q1 and Q2. Ladder staffs content ops per quadrant, so a Team Manager carries 3–9 teams.
Portfolio weighting: 15 of 22 teams are female-led (68%), 12 of 22 are home/minimal-equipment (55%). Marketing corroborates the skew — the Hilary Duff page reads "Join 400,000 Strong Women on Ladder" [WEB].
1.3 The delivery machine: one workout per team per calendar day, cohort-synchronised
The public Workout of the Day exposes the workout object directly [WOD]:
"workout": { "id":"699b13ee-…", "teamID":"b4250e1c-…", "dateStr":"2026-08-15",
"name":"BALANCE IT OUT", "type":"Full Body Strength", "durationMS":1760000 }
"yWorkout": { … "dateStr":"2026-08-14", "name":"1 x 15", … }
A workout is keyed (teamID, dateStr) and carries one name. There is no per-user variant.
Every member of Team Elevate did "BALANCE IT OUT" on 2026-08-15. That is the structural proof of
what A2 observed behaviourally — Ladder is a broadcast, and the team chat works because everyone
did the same session today [A2][SS-10].
Every one of the 22 team objects publishes a workoutSplits array of exactly 7 entries with
exactly 1 "Rest" [WEB-JSON]. Uniform across the whole portfolio, no exceptions:
22 teams × 6 training days = 132 workouts delivered per week.
1.4 What one workout is actually made of — the asset census
Measurement caveat first, because it bounds everything below. The public Workout of the Day
serves a preview, not the whole session. Team Elevate's 2026-08-15 workout declares
duration: 1760 (29 min 20 s), but the served playlist is 8 items covering roughly the first
three minutes and stops mid-way through the second section:
type=media Intro 0:37 audio=null ← the video carries the voice
type=section WARMUP — audio=YES
type=movement Toe Touch Squat Lift 0:30 audio=YES
type=movement Knee Hug to Lunge 0:40 audio=YES
type=movement Chest Opener 0:30 audio=YES
type=movement Skip - Increase Speed 0:30 audio=YES
type=section UNILATERAL LOWER — audio=YES
type=movement Deadlift • Left 8 reps audio=YES ← cut off here
So the census below is per preview, and full-session figures are extrapolations, labelled as such. Identical shape on the 2026-08-14 workout (8 items, 5 movements, 1 intro, 7 audio) [WOD].
| Asset type | Per preview (measured) | Where it comes from |
|---|---|---|
type: "media" (coach Intro video) |
1, 0:37 / 0:41, Mux HLS |
newly produced per session |
type: "section" |
2 | authored structure |
type: "movement" |
5 instances | pulled from the team's clip library |
audioUrl (coach voice cue) |
7 — one on every non-video item, stream.mux.com/<id>/audio.m4a |
newly produced |
audioSpeakerUser |
{"name": "Elise Young"} on every clip |
the coach's own voice, not a VO artist |
distinct movement demo .mp4 files |
10 across both sampled sessions | media.teams.joinladder.com/movement-videos/**elevate-2023-11**/… |
Three facts fall out, and they are the whole economic story of this Area:
(a) The rule is one coach-recorded audio cue per playlist item. 7 of 8 items carry one; the
only exception is the intro video, which carries the coach's voice in the video itself. Every cue
is attributed to the coach by name in audioSpeakerUser. This is the recurring media cost, and
it is audio, not video.
(b) Not one movement video in an August-2026 workout was filmed for it. All 10 demo clips
resolve to the folder elevate-2023-11/ — Team Elevate's library, shot November 2023, still
serving 33 months later [WOD].
(c) Exactly one new video per session: a ~40-second coach intro. type: "media",
customName: "Intro", Mux HLS, unique stream ID per session [WOD].
1.5 The movement library is a per-team batch shoot, amortised for years
Asset paths are self-documenting. Across the live WOD and five archived captures [WOD][WOD-ARC]:
| Batch folder | Team | Shoot date encoded | Observed serving | Highest file index seen |
|---|---|---|---|---|
Maximus/ |
MAXIMUS | none (pre-convention) | 2025-12 | 307. Wall Squat.mp4 |
elevate-2023-11/ |
ELEVATE | Nov 2023 | 2026-08 | 433. Single Arm Deadlift.mp4 |
transform-2024-07-01/ |
TRANSFORM | 1 Jul 2024 | 2026-05 | 391. Walk.mp4 |
project-alpha-2024-07-09/ |
PROJECT ALPHA | 9 Jul 2024 | 2026-02 | 102. Tempo Squat (3-1).mp4 |
vitality-2024-08-19/ |
VITALITY | 19 Aug 2024 | 2025-10 | 572. Jog.mp4 |
transform-2024-10-10/ |
TRANSFORM | 10 Oct 2024 | 2026-05 | top-up batch |
thrive-2025-04-04/ |
THRIVE | 4 Apr 2025 | 2026-04 | 650_toe_touches_dumbbells.mp4 |
transform-2025-10-16/ |
TRANSFORM | 16 Oct 2025 | 2026-05 | top-up batch |
What this proves:
- Folders are named
<team>-<single date>. Not a month, a day. These are one-day shoots. - Files are sequentially numbered (
155.,196.,433.,572.,650_) — a pre-built, numbered shot list executed in order. Highest indices observed run 307 → 650. - Left/right variants are separate files (
141. Quad Stretch/142. Quad Stretch;hip_circle_forward_left/hip_circle_backward_left), which inflates the count relative to distinct exercises. - TRANSFORM has three batches (2024-07, 2024-10, 2025-10) — the refresh pattern is a top-up shoot roughly every 12–16 months, not a re-shoot.
- The naming convention changed between
transform-2024-07-01(391. Walk.mp4, title case) andtransform-2024-10-10(7_rocking_downward_butterfly.mp4, slugified) — an asset-pipeline upgrade around Oct 2024. - One shared asset,
rest_2024_2.mp4, sits at the root and is reused across teams [WOD-ARC] — generic rest-period filler, produced once for everybody.
A Team's movement library is a capital asset acquired in one shoot day and amortised over 24–33 months. It scales with team count, never with workout count.
1.6 The production lead time is ~2 weeks, and it is visible in the timestamps
Each playlist item carries createdAt / updatedAt [WOD]:
| Item | createdAt |
Air date (dateStr) |
Lead |
|---|---|---|---|
| Intro video, workout "BALANCE IT OUT" | 2026-08-03 (updated 08-04) | 2026-08-15 | 12 days |
| Intro video, workout "1 x 15" | 2026-07-28 | 2026-08-14 | 17 days |
| Movement item (Inchworm to Push Up) | 2026-07-31 | 2026-08-15 | 15 days |
Ladder builds and voices workouts roughly two to two-and-a-half weeks before they air. For a weekly-drop product that means a rolling ~2-week buffer per team — the pipeline is scheduled, not live, and one coach going quiet does not break the week.
1.7 There is a canonical exercise catalogue — it just isn't a user-facing feature
The WOD movement object exposes the data model [WOD]:
"movementIdInt": 16534,
"movementFamilyId": "19f3ccb7-…", "movementFamilyName": "Knee Hug to Lunge",
"movementTraitDict": {
"movementPattern":"Squat", "primaryMuscleGroup":"Legs - Quads",
"targetMuscleGroups":["Legs - Quads","Legs - Glutes","Legs - Hamstrings","Core (Abs)"],
"exerciseType":"Strength", "difficultyLevel":"Intermediate",
"location":"Not Gym-Oriented", "bodyPosition":"Upright", "exercisePosition":"Standing",
"unilateralOrBilateral":"Bilateral (Both Limbs)",
"essentialFitnessMovement":"No"
},
"equipment": {"name":"Dumbbells"},
"altEquipments": [{"name":"Barbell"},{"name":"Kettlebells"},{"name":"Machine"}],
"weight":"Heavy", "description":"Custom Movement"
Read carefully, this settles several open questions:
- A movement family is canonical and shared across teams; the video instance is per-team.
"Deadlift", "Good Morning", "Jumping Jack" and "Knee Hug" all appear as families in Elevate's
workout, and "Knee Hug" also appears in Project Alpha's
[WOD][WOD-ARC]. One taxonomy, many coach-filmed instances. movementIdIntvalues observed run 413 → 16,534. That is the size of the instance ID space, not the family count — treat it as an order-of-magnitude ceiling, not a library size.altEquipmentsis why the swap feature works: every movement declares its substitutable kit.description: "Custom Movement"on several items — coaches can author one-offs outside the catalogue, which is exactly how a canonical library gets diluted.essentialFitnessMovementis a real, Ladder-owned flag. Across the 10 movements exposed in the two sampled previews it reads "Yes" on 2 (Deadlift,Reverse Lunge) and "No" on 8 (Toe Touch Squat Lift,Knee Hug to Lunge,Chest Opener,Skip - Increase Speed,Good Morning,Knee Hug,Jumping Jack). Heavy caveat: the preview is almost entirely warm-up, where a low essential ratio is expected. The finding here is that the flag exists at all — Ladder's schema knows which movements are fundamental — not that most of a Ladder workout is non-essential. The ratio needs an in-app sample to be worth anything. PARKED.
There is no evidence of a browsable, standalone exercise library in the product. The catalogue is server-side infrastructure that surfaces only inside workouts and inside the swap picker. A2 reached the same conclusion independently [A2].
1.8 Coaches are an acquisition channel, and the URL taxonomy proves it
The strongest evidence in this Finding is not a statement — it is Ladder's own campaign taxonomy, preserved in the archive [ARC]:
/team/limitless?utm_medium=coach-acquisition&utm_source=instagram&utm_campaign=link-in-bio&utm_term=kelly-2023
/team/limitless?utm_medium=coach-acquisition&utm_source=tiktok &utm_campaign=link-in-bio&utm_term=kelly-2023
/team/limitless?utm_medium=coach-acquisition&utm_source=youtube &utm_campaign=link-in-bio&utm_term=kelly-2023
/team/limitless?utm_medium=coach-acquisition&utm_source=pinterest &utm_campaign=link-in-bio&utm_term=kelly-2023
/team/forged ?utm_medium=coach-acquisition&utm_source=instagram &utm_campaign=link-in-bio&utm_term=corey-2023
/team/ascend ?utm_medium=coach-acquisition&utm_source=tiktok &utm_campaign=link-in-bio&utm_term=aria-2024
/team/define ?utm_medium=coach-acquisition&utm_source=tiktok &utm_campaign=link-in-bio&utm_term=maia-2024
/team/vitality ?utm_medium=coach-acquisition&utm_source=youtube &utm_campaign=link-in-bio&utm_term=brian-2024
/team/versa ?utm_medium=coach-acquisition&utm_source=youtube &utm_campaign=link-in-bio&utm_term=abbie-2025
/team/endure ?utm_medium=coach-acquisition&utm_source=twitter &utm_campaign=link-in-bio&utm_term=jennifer-2025
/team/resilient?utm_medium=coach-acquisition&utm_source=instagram &utm_campaign=story &utm_term=neen
/team/iconic ?utm_medium=coach-acquisition&utm_source=instagram &utm_campaign=link-in-bio&utm_content=sarah-ryan
Four things are being asserted by Ladder's own analytics:
utm_medium=**coach-acquisition**— the coach is a medium, sitting in the same slot a paid channel would occupy. Other observed media on the domain:organic,partnership,referral,email[ARC].utm_campaign=**link-in-bio**— the mechanism is the coach's own bio link on their own account, across Instagram, TikTok, YouTube, Pinterest and X.utm_term=**<coach>-<year>**— a per-coach cohort tag whose year matches the team's launch (kelly-2023, corey-2023, aria-2024, maia-2024, brian-2024, abbie-2025, jennifer-2025).instagramHandleandtiktokHandleare first-class fields on the team object itself [WEB-JSON] — the coach's social identity is product data, not a bio footnote.
Reinforcing this: there is a separate, differently-booked in-house creator channel. Captured 2026-07-22 [ARC]:
/team/define?utm_medium=organic&utm_source=tiktok&utm_campaign=link-in-bio
&utm_term=ladder-creator-program&utm_content=juliannafromladder
Same link-in-bio mechanism, same TikTok source, but utm_medium=**organic** — not
coach-acquisition. Ladder's own analytics separate borrowed audience (a coach's, booked as an
acquisition medium) from owned audience (a staff creator's, booked as organic). Alongside it: a
now-closed "TikTok Creator (Ladder Creator Program)" req [3P] and two live Austin creative reqs
[JOBS].
The live "Lead Creator, Brand Social" req makes the distinction explicit and slightly brutal: "Most creators are building their own brand. This role is not that… Willingness to be Ladder's creator exclusively" [JOBS]. Which tells you the terms differ: the staff creator may not have a personal brand; the coaches are hired precisely because they do.
1.9 Credentials are real but not a hiring gate
coachCertification is a populated string on the team object [WEB-JSON]. It is not marketing
fluff — it is the field that renders the "Certifications" row visible at the bottom of the
program sheet in [SS-04]. The distribution:
| Pattern | Teams | Note |
|---|---|---|
| Multi-cert stack (3–5 credentials) | align, ascend, body-and-bell, elevate, endure, evolve, flourish, limitless, maximus, movewell, project-alpha, resilient | e.g. Samantha Lindauer lists Doctor of Physical Therapy – APTA; Sam Tooley lists CSCS – NSCA |
| Single or minimal cert | define, formation, ignite, transform, versa, vitality | Robin Barrett lists NASM CPT + Doctorate of Pharmacy |
"None" |
era (Dani), forged (Corey), vantage (Brady) | three teams ship with an empty certification field |
| Award-as-credential | crews-control | "CrossFit Level 2 Trainer • Men's Health Magazine Fittest Man Award" — a media accolade listed in the certification slot |
FORGED is a flagship team (top-row placement in [SS-04], one of the longest-running male teams) and its certification field is empty. A credential is not a prerequisite for a Ladder team. An audience, or a distinct method, is.
The other casting field is unusually honest about this: coachPersonality — e.g. LIMITLESS reads
"Confident, funny, authoritative." [WEB-JSON]. Ladder stores on-camera persona as a product
attribute, alongside skill level and equipment.
1.10 Roster churn: additive, not revolving
Reconstructed from 18 archived sitemap captures [ARC] plus the 2020 launch release [PRESS]:
| Date | Live programs | Change |
|---|---|---|
| 2020-08 (launch) | 9 | Jennifer Jacobs, Lauren Kanski, Meghan Hayden, Sam Tooley, Ebenezer Samuel, Taylor Walker, Andre Crews, Miriam Fried, Kenny Santucci [PRESS] |
| 2022-05 | 12 | URL scheme is teams.joinladder.com/program/<coach-name> |
| 2022-10 | 11 | −madeleine |
| 2023-01 | 12 | +sarah-ryan |
| 2023-06 | 14 | +robin-b, +sam-lindauer |
| 2023-10 → 2023-12 | 15 | +corey |
| 2024-02 | 13 | −ben-greenfield, −emily-rethwill; brand-slug URLs begin appearing |
| 2024-05 | 14 | URL scheme now /team/<PROGRAM> — coach names gone from URLs; −courteney-fisher |
| 2025-01 | 16 | +ascend, +transform, +vitality |
| 2025-05 | 17 | +thrive |
| 2025-08 | 17 | +endure (Jennifer Jacobs returns); −iconic |
| 2025-11 | 18 | +versa |
| 2026-02 | 19 | +embody |
| 2026-04 | 18 | −thrive (from sitemap) |
| 2026-08 | 22 | +era, +flourish, +ignite, +vantage |
Read of the numbers:
- Departures are rare: roughly 1–2 per year. Named exits across six years: madeleine (2022), Ben Greenfield (2024), Emily Rethwill (2024), Courteney Fisher (2024), Sarah Ryan / ICONIC (2025), Nairee Kiana / THRIVE (2026, ambiguous — still in store copy). Five of the original nine were gone by 2022; four survive (Kanski, Crews, Tooley, and Jacobs after a hiatus).
- Additions are accelerating: 18 → 22 in four months (2026-04 → 2026-08), a ~22% roster expansion in one quarter. That matches the two open Team Manager reqs and the $90M ARR disclosure [JOBS] — this is a supply build-out funded by the Series B.
- The 2024 URL migration is the strategic move of the whole Area. Ladder stopped selling
program/kelly-matthewsand started sellingteam/limitless. The brand asset moved from the person to the program. That is what makes 1–2 exits a year survivable: when ICONIC left, the team disappeared; when a program brand is the asset, the members don't follow the coach out the door. It also explains the store copy naming the coach inside the program line ("LIMITLESS (Kelly Matthews)") rather than leading with them [AS].
1.11 The content org is small, and it is an ops function, not a studio
| Signal | Value | Source |
|---|---|---|
| Total employees listed | 61 (LinkedIn band "11–50") | [3P] |
| HQ | 1005 E Saint Elmo Rd, Austin TX 78745 | [3P] |
| Benefits copy | "Access to the sickest private gym in Austin", "Fully-stocked gym @ Ladder HQ" | [JOBS] |
| Live reqs, content-adjacent | 2 Marketing (Austin, on-site), 2 Team Manager (remote) | [JOBS] |
| ARR | $90M (vs $3M in 2023) | [JOBS] |
| Paid members | 300,000+ (Oct 2025); "400,000 Strong Women" (2026 campaign) | [PRESS][WEB] |
The Team Manager JD is the single clearest description of how content is actually governed [JOBS], verbatim:
"Own the day-to-day execution, performance, and management of your assigned Ladder teams" "Review and analyze workout programming and hold everything members see to a 5-star bar" "Serve as the primary liaison between Ladder and your assigned coaches, building high-trust relationships" "Shape programming strategy alongside your coaches — what a team trains toward, how it progresses, and how it evolves for its members" "Help coaches deliver across the whole experience — programming, coaching, media, and community" "Every new team starts as an idea. You own the launch, the coach's onboarding, and making sure the team is built for the right member." Requirement: "A current fitness certification (NASM, NSCA, ACE, or similar)", "You know good programming from bad — you can analyze a week of workouts and say whether it holds up" Tools: "Google Workspace, Amplitude, and Claude, plus our in-house systems"; "AI-native"
Three inferences, flagged as inferences:
- "Liaison between Ladder and your assigned coaches" is not how a company describes managing its own employees. Combined with the coach-acquisition UTM taxonomy and the per-coach link-in-bio campaigns, the coach relationship reads as partner/contractor with a commercial interest in their own team's growth. Ladder has never published the terms. PARKED — do not state as fact.
- Ladder is the editor, the coach is the author. Programming is coach-produced and Ladder-reviewed. "Nothing ships to members that you wouldn't put your name on."
- Ladder uses Claude in content ops by name. An AI-assisted programming/review loop is explicitly part of the job spec, at a company doing $90M ARR with 61 employees.
1.12 The media stack, for reference
| Layer | Vendor / host | Evidence |
|---|---|---|
| Movement demo video (batch clips) | own S3-fronted CDN media.teams.joinladder.com |
[WOD] |
| Coach intro video + all coach audio | Mux (stream.mux.com/<id>.m3u8, /audio.m4a) |
[WOD][WEB-JSON] |
| Images, thumbnails, posters | imgix (ladderteams.imgix.net) |
[WEB-JSON][WOD] |
| Legacy asset bucket | ladder-bootcamp-media-dev.s3.amazonaws.com |
[WEB-JSON] |
| Team chat | PubNub (oobPubnubChannel, legacyRoomID) |
[WEB-JSON] |
| Offline playback | offlineVideoUrl per movement |
[WOD] |
Two footnotes worth keeping. The bucket name ladder-bootcamp-media-dev is still in production
paths in 2026 — the com.ladder.bootcamp bundle ID is not the only fossil of the pivot [AS].
And Mux serves audio as a first-class object (/audio.m4a), which is what makes 24 discrete
coach cues per workout cheap to ship.
The content treadmill, quantified
Layer 1 — delivery volume (what a member perceives as "new workouts every day").
22 live teams × 6 training days/week = 132 workouts delivered per week
132 × 4.345 weeks = ~573 workouts delivered per month
132 × 52 = 6,864 workout-days delivered per year
Layer 2 — authoring volume (what actually costs money). A2 established the macrocycle from three converging sources: 6-week series → 2-week "Open Season" deload, and inside a series there are A-weeks and B-weeks, so members "do the same workouts every other week" [A2].
Per team per series: 2 week-templates × 6 sessions = ~12 authored sessions
Cycle length: 6 weeks series + 2 weeks deload = 8 weeks
Series per year: 52 ÷ 8 = 6.5
Per team per year: 12 × 6.5 = ~78 authored sessions
Across the portfolio: 78 × 22 teams = ~1,716 authored sessions/year
This is the number that matters, and it is 4× smaller than the delivery number. Ladder delivers ~6,900 workout-days a year off roughly 1,700 authored sessions — a 4:1 leverage ratio, achieved purely by the A/B week structure and the 6-week repeat.
Assumption stated: that a repeated A-week re-serves the same intro video and the same audio cues rather than re-recording them. Unverified — the two consecutive days we sampled cannot discriminate. If intros and audio are re-cut per air date, the recurring media figures below quadruple. PARKED.
Layer 3 — media assets per authored session.
MEASURED (public preview, ~3 min of a 29m20s session):
1 coach intro video (0:37 / 0:41, Mux HLS, unique stream ID per session)
7 coach-voiced audio cues — one on every non-video playlist item
0 new movement videos (all drawn from the team's batch library)
EXTRAPOLATED to a full session:
observed item density ≈ 1 playlist item per ~35–40 s of session time
1760 s ÷ ~40 s ≈ 30–45 playlist items
→ ~25–40 coach audio cues per full workout (ESTIMATE — midpoint 30)
Assumptions: that item density holds through the working sets (rest periods and multi-set blocks could push it either way), and that section headers and repeated left/right movements each keep their own cue as they do in the preview.
Recurring media production, at the ~1,716 authored-sessions/year figure and 30 cues/session:
Coach intro videos: 1,716 × 1 = ~1,700 short videos/year (~33/week portfolio-wide)
Coach audio cues: 1,716 × 30 = ~51,000 audio clips/year (~990/week portfolio-wide)
Per coach per year: ~78 intros + ~2,340 audio cues
Per coach per week: ~1.5 intro videos + ~45 audio cues
Add A2's separately-evidenced weekly team intro video (1 per team per week, 22/week, ~1,150/yr) and the per-coach on-camera load is roughly 2–3 short videos a week — a phone-and-ring-light sitting, not a studio call.
Both bounds, since the A/B-reuse assumption is unverified:
| Sessions authored/yr | Coach videos/coach/week | Audio cues/coach/week | |
|---|---|---|---|
| A/B weeks reuse media (adopted) | ~1,716 | ~2–3 | ~45 |
| Every air date re-cut | ~6,864 | ~7 | ~180 |
Even the pessimistic bound is one long recording day per coach per week. That is the honest size of the "content treadmill" at the individual level.
Layer 4 — the capital layer (the movement library).
Observed shot-list indices per batch: 307, 391, 433, 572, 650
Midpoint working figure: ~400 clips per team library
22 teams × ~400 = ~8,800 movement demo clips (ESTIMATE)
Shoot cadence: 1 founding day-shoot per team,
+ a top-up batch every ~12–16 months (TRANSFORM: 3 in 16 mo)
Amortisation observed: elevate-2023-11 still serving 2026-08 = 33 months
Portfolio shoot-day load: ~22 founding days (historical, sunk)
+ ~15–22 top-up days/year (ESTIMATE)
Assumptions: that the highest filename index approximates the shot list length (it is a lower bound — we only see the clips that appeared in the sampled workouts); that left/right variants inflate the count by perhaps 20–30%. Dollar cost per shoot day is not public — PARKED. What is provable is the shape: a fixed set, a numbered list, one day, ~400 takes, then two to three years of service.
The verdict on the treadmill. Ilia's note 8 says Ladder is "still riding on content". The arithmetic says the treadmill is real but much narrower than it looks:
| What feels like the treadmill | What it actually is | Cost curve |
|---|---|---|
| "A new workout every day" | 132 deliveries/week off ~1,716 authored sessions/year | scales with team count, ×4 leveraged by A/B weeks |
| "Video demonstrations" | one day-shoot per team, amortised 24–33 months | capital, scales with team count only |
| "In-ear coaching" | ~30 coach-voiced clips per session, ~51k clips/year (est.) | recurring, and it is the real treadmill |
| "My coach posts in the chat" | ~2–3 short coach videos/week + Coach Pins [SS-10] | recurring, low unit cost, high perceived value |
| "22 programs to choose from" | 22 coaches × their own audiences | an acquisition cost, booked as content |
Cheap to copy vs expensive to copy
For a solo iPhone developer with AI tooling, ranked by real replication difficulty:
| Layer | Verdict | Why |
|---|---|---|
| Workout programming (~1,716 sessions/yr) | CHEAP — this is the surprise | 12 authored sessions per 8-week cycle per program, with A/B weeks. An LLM plus one credentialed reviewer can produce this. Ladder's own Team Manager req lists Claude as a required tool [JOBS] — the incumbent has already conceded that programming is AI-assistable. |
| Movement taxonomy (families, traits, patterns, muscle groups, equipment + alternates) | CHEAP | It is a data-modelling job, and the schema is publicly readable in [WOD]. Open exercise datasets cover the family layer. |
| Exercise demo clips | MEDIUM — capital, not treadmill | This is the item most people over-price. It is one shoot day per program, not a weekly cost. A solo dev needs one competent demonstrator, one location, one numbered shot list, one day. Licensed stock demo libraries also exist. Ladder's own choice to reuse a Nov-2023 batch into Aug-2026 proves nobody notices staleness. |
| In-workout audio coaching in a specific human voice | EXPENSIVE, and it is the real moat | ~30 clips per session (measured: one cue on every non-video playlist item), every session, all attributed to a named coach by name in audioSpeakerUser [WOD]. A2 found this is what users experience as "the coach in my ear", and that it is a content asset, not a system [A2]. Voice cloning changes the economics but not the trust problem — the value is that a real named person said it. |
| A named coach with a real credential | MEDIUM | Hire one. 3 of 22 Ladder teams ship with coachCertification: "None" — the bar is lower than it looks. |
| A named coach with 100k+ engaged followers who will point them at your app | EXPENSIVE — the actual barrier | This is the coach-acquisition channel. It is not a content cost, it is a distribution cost, and a solo developer with no audience and no budget cannot manufacture it. |
| 22 simultaneous programs across a gender × setting 2×2 | EXPENSIVE by aggregation | Any one program is cheap. Twenty-two of them, each with its own shoot, its own weekly voice load, and its own community, requires the ops layer (~1 Team Manager per 3–9 teams). |
| Team Managers as an editorial QA layer | CHEAP at n=1 | With one program, the founder is the Team Manager. This cost only appears at scale. |
| The community that makes a broadcast feel personal | EXPENSIVE | Cohort-synchronised delivery + PubNub team chat + coach video drops [SS-10]. Cheap to build, near-impossible to bootstrap cold. |
The one-line strategic read for a solo builder. Ladder's content supply chain is far more copyable than its brochure implies — the programming is AI-assistable by the incumbent's own admission, the video is a sunk day-shoot per program, and the taxonomy is a schema. What is not copyable is the coach's name attached to the voice and the coach's audience attached to the funnel. Any clone strategy should assume it will win on programming and lose on distribution, and pick a wedge where neither a named human nor a cohort community is load-bearing.
Verdict on Ilia's notes 4, 5, 8
Note 4 — "Сама подборка упражнений, нет базовых (точнее мало, они смиксованы)." → CONFIRMED, and this Area supplies the supply-chain cause A2 could not see.
Three independent mechanisms, all measured:
- Portfolio weighting makes basics structurally impossible for over half the catalogue.
Only 10 of 22 teams list a barbell in
suggestedEquipmentDesc; 12 of 22 (55%) are dumbbell/kettlebell/band/mat-only [WEB-JSON]. A team whose declared equipment is "Dumbbells" cannot program a barbell squat, bench or deadlift at all. Ilia's perception is a direct readout of Ladder's home-first portfolio decision. - Splits are named by body part and aesthetic outcome, never by a lift. Across all 22
workoutSplitsarrays — 154 session slots — not one is named for a squat, bench press, deadlift or overhead press. They are namedGlutes,Arms x Abs,Bonus Glutes,Quads x Abs,Push - Delt Dominant,Hourglass Upper Body,Express Core[WEB-JSON]. The closest anything gets to a movement pattern isLower Body - Hinge(MAXIMUS) andUpper Body - Press x Pull(BODY & BELL). Roughly every team carries at least one arms/abs/glutes "aesthetic" day. Basics are never the organising principle of a week. - Ladder's own schema has a name for what Ilia noticed. The flag
essentialFitnessMovementexists on every movement [WOD], and the movements Ladder puts in front of a member early in a session are largely flagged"No"—Toe Touch Squat Lift,Knee Hug to Lunge,Chest Opener,Skip - Increase Speed,Jumping Jack. Honest caveat: the only sample we can see publicly is warm-up-heavy, so the ratio proves nothing about the working sets. What it does prove is that Ladder maintains an explicit essential/non-essential distinction — which means the dilution Ilia perceives is a programming choice made against a flag Ladder itself owns, not an accident of a shallow catalogue.
The basics do exist — Maximus/200. Bench Press.mp4, Maximus/96. Bent Over Row.mp4,
Maximus/178. Single Leg Romanian Deadlift.mp4, family Deadlift in Elevate [WOD][WOD-ARC].
The refinement to Ilia's note is precise: the basics are in the library, they are diluted in the
programming, and the dilution is a deliberate portfolio choice (home-first, female-first,
outcome-named) rather than a gap in the exercise catalogue.
Note 5 — "Тренера классно онбордят в приложении." → CONFIRMED, and it is a productised, per-team asset — not a coach being nice.
Every one of the 22 team objects ships both:
- welcomeVideoURL → a Mux-hosted coach welcome video (22/22 populated) [WEB-JSON]
- practiceWorkoutID → a dedicated try-before-you-commit practice workout [WEB-JSON]
The screenshot corroborates the payoff: a new member writes "that welcome workout has sealed the deal for me", and the coach replies with a video message posted into team chat, with a "Coach Pins" affordance in the header [SS-10]. Coach onboarding is a fixed asset produced once per team (2 assets × 22 teams = 44 onboarding assets) plus a recurring, low-cost video drop. Cheap to produce, disproportionately effective — and directly copyable.
Note 8 — "Новые тренировки. Они на контенте еще едут." → CONFIRMED as the strategy, REFINED on the economics — and the refinement is the finding.
Confirmed: the store's lead claim is content freshness ("A NEW WORKOUT PLAN EVERY DAY", "new each week" [AS]); the Team Manager JD says "No team is ever finished. Every workout and every member experience has to be better than the last" [JOBS]; the roster grew 18 → 22 in four months [ARC]; and the recurring load is real (~1,700 authored sessions and ~51,000 coach audio clips a year).
Refined, and this is where Ilia's instinct needs adjusting: "riding on content" is not the same as "carrying a large content cost." The treadmill is engineered down at every joint —
- 4:1 leverage from A/B weeks and the 6-week repeat (6,864 deliveries ← ~1,716 authorings);
- the video library is capital, amortised 33 months on Team Elevate;
- a ~2-week production buffer means the pipeline is scheduled, never live;
- ~$90M ARR on 61 employees
[JOBS][3P], with Claude named as a required content-ops tool; - one authored session is consumed simultaneously by the whole team — Team Elevate's 2026-08-14 workout carries 1,834 ratings, avg 4.86 on a single day [WOD].
The thing Ladder is actually riding on is not content volume — it is 22 coaches' audiences.
utm_medium=coach-acquisition is the tell. The content treadmill is the product of the coach
strategy; the coach strategy is the business. A solo developer who benchmarks against "600
workouts a month" is pricing the wrong thing.
2. Capability / object table
| Object | What it is | Cardinality (2026-08) | Produced by | Cost curve | Source |
|---|---|---|---|---|---|
| Team | Program brand + coach + split + skill + equipment; the unit of supply, subscription and community | 22 live (20 in store copy, "25+" in marketing) | Ladder brand + coach | fixed per team | [WEB-JSON][AS] |
quadrant |
Portfolio slot: coach gender × home/gym | 4 (Q1=9, Q2=6, Q3=3, Q4=4) | Ladder | — | [WEB-JSON][JOBS] |
| Series | 6-week progressive block, then 2-week "Open Season" deload | 6.5 series/team/year | Coach, reviewed by Team Manager | recurring | [A2] |
| Week template | A-week / B-week alternating inside a series | ~2 per series | Coach | recurring | [A2] |
| Workout | (teamID, dateStr) + name + type + duration; identical for all team members |
132 delivered/wk; ~1,716 authored/yr | Coach | recurring | [WOD] |
| Section | Block inside a workout | ~6 per workout | Coach | recurring | [WOD] |
| Playlist item | Movement / media / section entry | 8 in the ~3-min public preview; ~30–45 per full 29-min session (est.) | Coach | recurring | [WOD] |
| Coach intro video | type:"media", Mux HLS, 37–41 s |
1 per workout | Coach, self-shot | recurring, low unit cost | [WOD] |
| Coach audio cue | audioUrl → Mux /audio.m4a, audioSpeakerUser = coach; one per non-video item |
7 measured in preview; ~30 per full session (est.), ~51k/yr | Coach's own voice | recurring — the real treadmill | [WOD] |
| Movement demo clip | Per-team .mp4 in <team>-<shoot-date>/, numbered shot list |
~300–650 per team; ~8,800 total (est.) | one day-shoot per team | capital, 24–33 mo amortisation | [WOD][WOD-ARC] |
| Movement family | Canonical cross-team exercise identity (movementFamilyId/Name) |
shared taxonomy; movementIdInt seen to 16,534 |
Ladder | capital | [WOD] |
| Movement traits | Pattern, muscles, difficulty, position, laterality, location, essentialFitnessMovement |
11 attributes | Ladder | capital | [WOD] |
| Equipment + altEquipments | Primary kit + declared substitutes; powers the swap feature | 4-way alt set observed | Ladder | capital | [WOD] |
| Custom Movement | Coach-authored one-off outside the catalogue | present in sampled workout | Coach | recurring | [WOD] |
| Welcome video | welcomeVideoURL, Mux, per team |
22/22 populated | Coach | fixed per team | [WEB-JSON] |
| Practice workout | practiceWorkoutID, try-before-commit session |
22/22 populated | Coach | fixed per team | [WEB-JSON] |
| Coach chat video drop + Coach Pins | Coach posts video into PubNub team chat | ~weekly per team | Coach | recurring, low unit cost | [SS-10][WEB-JSON] |
coachCertification |
Rendered as "Certifications" on the program sheet | 19/22 populated, 3 = "None" |
Coach | fixed | [WEB-JSON][SS-04] |
coachPersonality |
On-camera persona as a product attribute | 22/22 | Ladder casting | fixed | [WEB-JSON] |
instagramHandle / tiktokHandle |
Coach social identity, first-class team field | 22/22 | — | — | [WEB-JSON] |
coach-acquisition campaign |
Per-coach link-in-bio funnel across IG/TikTok/YT/Pinterest/X, tagged <coach>-<year> |
≥12 coaches observed | Ladder growth | acquisition, not content | [ARC] |
| Ladder Creator Program | Separate in-house paid creator channel | ≥1 named creator + 2 open Austin reqs | Ladder | marketing | [ARC][JOBS][3P] |
| Team Manager | Owns a quadrant: programming review, coach liaison, launch, metrics | 2 open reqs (Q1, Q2); ~1 per quadrant inferred | Ladder Operations | opex, ~1 per 3–9 teams | [JOBS] |
| Ladder Nutrition | Food logging (voice/photo/barcode/search), macros, Protein Mode, water, streaks, badges | launched 2025-10-27; library expanded 2026-08-10 | Ladder product | bundled free — no new tier | [PRESS][AS] |
| Nutrition "your library" | User's own foods, meals, favourites; user-created meals | v4.11.0, 2026-08-10 | users | UGC — offloads database gaps | [AS] |
The nutrition expansion, specifically
What shipped and when. - 2025-10-27 — "Ladder Nutrition" launches [PRESS]. Logging by voice, photo (image recognition → estimated macro breakdown), barcode scan, and text search. Macro tracking with "accuracy transparency", a "Protein Mode", water intake, plus streaks, badges and progress reminders. CEO Greg Stewart: "Success requires a plan — both in the gym and in the kitchen." - 2026-08-10 — v4.11.0 [AS], verbatim: "Ladder introduces your library, now including your foods, meals, and favorites. Create meals from your existing entries… Favorite your recipes or foods… Check out your foods for times our library is missing something or you just want to get something just right."
Bundling. Free with every membership, and inside the 7-day trial [PRESS]. The /pricing
page does not mention nutrition as a line item or an add-on [WEB]. It is not a new paid tier.
Food database provider. Not disclosed in any release, on the site, or in coverage. PARKED.
Strategic read. Three things, in order of confidence:
- It is a retention and price-defence play, not a revenue line. Bundled free at $29.99/mo (or $14.99/mo annual) [WEB], it removes the reason a Ladder member also pays MyFitnessPal ($~20/mo) or MacroFactor. Athletech explicitly frames it against Peloton's Twin Health partnership [PRESS].
- The Aug-2026 move is a database-gap admission, and the fix is UGC. "For times our library is missing something" is Ladder telling members to fill the holes themselves — which is exactly how MyFitnessPal's database was built. A user-maintained food corpus is a compounding asset Ladder does not have to pay for.
- It opens a second content treadmill with a completely different cost curve. Workout content is media (shoots, voice, coaches). Food content is data (a database, an image-recognition model, an accuracy problem). Nothing about the coach roster helps here. This is Ladder spending its Series B to become an all-in-one health app, and it is the first content line in the company that is not coach-supplied.
3. Reconciliation notes
Against A2 (core-loop-training) — complementary, one correction each way.
- A2 reported the roster as churning with "no single count current" and handed the count to A4
[A2]. Resolved: 22 live teams, enumerated with UUIDs [WEB-JSON]. A2's unlisted teams
IGNITE, VANTAGE (Coach Brady) and Coach Stevie — found only in reviews — are all confirmed
live:
ignite(Coach Stevie, Beginner),vantage(Coach Brady, Q4). A2 was right and the reviewers were ahead of the marketing. - A2's ~12 authored workouts per Team per 6-week series is adopted here as the authoring denominator. It is the single most important input to the treadmill arithmetic and it comes from A2's video sources, not from ours. We could not independently confirm the A/B reuse from the public workout objects — see the assumption flag in §The content treadmill.
- Correction to any reading that in-workout video is a recurring cost. A2 correctly described per-workout intro videos and looping movement demos. This Finding separates them: the intro is newly produced per session, the movement demos are not — every clip in an August-2026 Elevate workout comes from a November 2023 batch [WOD]. Any cost model that treats movement video as recurring is wrong by two to three years of amortisation.
- A2 §1.12 concluded Ilia's note 4 is "supported, but the cause is Team selection, not library
depth". This Finding agrees and adds the supply-side proof: 12 of 22 teams have no barbell
in their declared equipment, no session slot in the entire portfolio is named for a barbell
lift, and Ladder's own
essentialFitnessMovementflag reads "No" on most of a sampled session.
Internal tension in Ladder's own numbers. "15+ elite coaches" (in-app carousel), "22+"
(pricing/Hilary pages), "25+" (homepage), 20 (App Store), 16 (sitemap.xml), 22 (/sitemap
HTML). We treat the live team objects as authoritative and everything else as marketing or
stale cache. The sitemap.xml being 6 teams behind the HTML sitemap is a plain content-ops bug.
A workout-rating leak worth handing to A6. The WOD object exposes
"rating": {"count": 1834, "avg": 4.862} on Team Elevate's day-old workout [WOD]. That is a
per-workout, per-day engagement counter served publicly. It is not a member count, but it bounds
one, and it is a live instrument. → A6.
Employment terms are the one thing we refused to conclude. The JD language, the per-coach acquisition campaigns, the coach-owned social handles as product fields, and the 2024 de-personalisation of URLs all point the same way. None of it is a statement of terms. Parked below, not asserted above.
4. Open Questions / Parked
- Coach commercial terms. Employee, contractor, revenue-share, or equity partner? No public statement from Ladder or any coach. Everything in §1.8 and §1.11 is directional evidence of a partner model, never proof. Do not put a number on coach cost.
- Does an A-week repeat re-serve the same intro video and audio, or get re-cut? Decides whether recurring media is ~1,700 or ~6,900 videos/year and ~51k or ~206k audio clips/year. Testable inside the app by comparing week 1 and week 3 of a series.
- Actual movement-library size per team. We have a lower bound from filename indices (307–650) and an unknown left/right duplication rate. Ladder has never published a count.
- Cost of a shoot day. Not public. Do not estimate in dollars.
- Where the shoots happen. Austin HQ has an in-house gym per the JDs [JOBS], and screenshots show a consistent dark, branded gym set. One third-party mention describes an 8-hour LA shoot with a small in-house crew. Not established whether the movement batches are shot at HQ, at a rented set, or at the coach's own location.
- Nutrition food-database provider. Undisclosed. Licensed (Nutritionix / Edamam / Open Food Facts) vs owned is a material cost and quality question.
- The nutrition image-recognition model. "AI-powered" with no technical detail; own model vs vendor is unknown.
- Total coach headcount vs team count. 22 teams, but MAXIMUS is two coaches (Bobby Maximus + Joe Cebula), so ≥23 people. Whether any coach runs two teams is unverified.
- The Team Manager count. Two reqs are open for Q1 and Q2; whether Q3/Q4 are already staffed, or the function is new, is unknown.
- What happened to EMBODY and THRIVE. Both are in the current App Store copy with named coaches; neither has a live team page. Retired, paused, or web-page bug — unresolved.
- Coach identity, credentials and pre-Ladder audience size, per coach. A dedicated research pass was run and had not returned at the time of writing; §1.9 covers what the live product data proves (certification strings, handles, personality casting) and §1.8 covers the channel mechanics, which is the decision-relevant half. The follower-count table is the gap in this Finding.
- Whether Ladder pays for the coach's promotion or the coach promotes for their own upside.
The
coach-acquisitionmedium proves the channel exists; it does not reveal who bears its cost. - The "Sustain" seasonal series A2 found — whether seasonal/holiday series are authored centrally and pushed across all teams (a big efficiency) or written per team.
5. What this does NOT cover
- In-workout UX, audio delivery mechanics, progression logic, tracking and swap behaviour. →
A2
core-loop-training. This Finding covers where the assets come from, not how they play. - Screen inventory, IA and design system. → A1
product-surface. - Onboarding funnel, trial design, paywall copy and conversion. → A3. The 22 welcome videos and 22 practice workouts are counted here as content assets; their conversion role is A3's.
- Team chat, Volts, streaks, rewards and the social loop as retention machinery. → A5. Coach chat video drops appear here only as a production line item.
- Company finances, funding, valuation, member economics and competitive positioning. → A6. ARR, headcount and member counts appear here only to size the content org. The public per-workout rating counter is handed to A6 as an instrument.
- Any dollar figure for coach compensation, shoot production, or content COGS. Not public. Deliberately absent — see §4.
- Android content parity. Out of Inquiry scope.
- Ladder's technical stack beyond the media-delivery vendors that are load-bearing for the
cost argument (Mux, imgix, S3, PubNub). Out of Inquiry scope per
SCOPE.md. - Any claim about a coach's pay, contract, personal life, or private conduct. Only public professional facts are reported.
Six parallel Scouts · reconciled in one brief · nothing summarised away