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.

View demo

Invite-only service. Accepted athletes start with a 14-day trial.

training.cjarhodes.com/dashboard

Good morning, Alex

Saturday, March 22 · Build phase

A Race · 47 days

FITNESS

62

CTL

FATIGUE

71

ATL

FORM

-9

TSB

PHASE

Build

Training

Soreness

Quadsmild

60% recovered

Calvesmild

85% recovered

Bike · Saturday~148 TSS

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.
↓ Download .fit✓ Log completion
CrossFit · SaturdayStrength

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 docs

Scoped 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

Swim · TuesdayTSS 58

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.

CrossFit · TuesdayStrength focus

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.

See the product

Works with

StravaGarmin .fit filesAgent APIOpen-Meteo weatherRace calendarReadiness check-ins

training.cjarhodes.com