training.cjarhodes.com
Personalised triathlon and CrossFit
programming for hybrid athletes
Connect Strava, set your races and training constraints, and get a daily session built around fitness, fatigue, soreness, and the 80/20 endurance model.
Invite-only service. Accepted athletes start with a 14-day trial.
Good morning, Alex
Saturday, March 22 · Build phase
FITNESS
62
CTL
FATIGUE
71
ATL
FORM
-9
TSB
PHASE
Build
Training
Soreness
60% recovered
85% recovered
Long Aerobic Ride — Zone 2 with 2×15 min sweetspot
What this trains
Aerobic base via long Zone 2 stimulus. Sweetspot blocks build threshold capacity at low fatigue cost before peak phase.Saturday Accessory — Upper Pull Focus
• Strict pull-up: 4×5 @ BW — 3-sec down
• Single-arm DB row: 3×10 @ 28kg
• Face pulls: 3×15 @ light cable
Why today
Upper posterior balance. Low CNS cost on a long ride day.Coach's note
Saturday long ride per weekly structure. TSB at -9 — healthy for build phase. ATL ramp rate 1.4 TSS/day. 47 days to A race — no peak work yet. Upper accessory after ride keeps lower body fresh.
How it works
01
Connects to Strava
Syncs your activities and calculates fitness, fatigue, and form scores automatically — no manual logging.
02
Prescribes daily training
Workouts adapt to your training load, soreness, available time, and race goals using polarised methodology.
03
Exports to Garmin
Triathlon sessions download as .fit files and sync directly to your watch, ready to execute.
AI-native coaching layer
Built for the app, your devices, and external agents
The coaching system is available through a headless API, not just the web interface. External agents can read training context, submit confirmed updates, move planner sessions, log WODs, and refresh connected data while the app remains the source of truth.
Read the Agent API docsScoped agent tokens
Grant read or write access by capability, from today's workout to planner moves and confirmed WOD imports.
Structured training context
Expose readiness, CTL, ATL, TSB, recent activity, soreness, races, availability, and upcoming sessions as JSON.
Confirmed actions only
Ambiguous writes return confirmation_required so an agent has to ask before changing the plan.
Sample output
What gets prescribed
Aerobic threshold + catch drill set
What this trains
High-elbow catch mechanics at race pace. Builds the neuromuscular pattern for early vertical forearm before fatigue accumulates in the second half of a 70.3 swim.
Back squat 5×3 @ 80% + accessory
Warm-up: 3 sets × 5 @ 60%, 70%
Working sets: 5×3 @ 96kg (80% of 120kg 3RM)
Accessory: 3×10 Bulgarian split squat, 3×12 GHD sit-up
Why today
Quads recovered, TSB neutral. Strength day before tomorrow's rest. Loading from tested 3RM — not 1RM.
The methodology
Polarised training for long-course athletes
Most training apps push athletes into the moderate-intensity trap — too hard to recover from, not hard enough to produce real adaptation. Polarised training fixes this: 80% of sessions in Zone 1–2 (easy, aerobic), under 5% in Zone 3 (deliberately avoided), and 15–20% in Zones 4–5 where actual fitness gains happen.
Every workout is prescribed from your CTL, ATL, TSB, race proximity, and today's soreness — not pulled from a static plan. The programming changes when your data changes.
See it in the demo →Start training from your data
Apply for coaching access
For athletes who want triathlon structure without giving up CrossFit. Connect your training history, define your races, and get programming that adjusts as your fitness and recovery change.
Works with
training.cjarhodes.com