← Back to tools
Performance · IM Cervia 2026
ClaudeCoach
An AI coaching system built on Claude + Intervals.icu for a 21-week Ironman build. Four automated jobs run daily and weekly — checking readiness, modulating sessions, monitoring load, and summarising the week. Every decision includes a traceable reasoning trail linking a real data point to a rule to an outcome.
Automation — runs without any user action
06:33
Daily
Session prescription
Pulls live readiness signals from Intervals.icu, runs the modulation engine, pushes the adjusted session back to the calendar. Sends a notification only if the session changed.
07:03
Daily
Watchdog check
Evaluates 8 load and recovery triggers. If nothing fires, it produces no output at all — zero noise on good training days.
18:07
Daily
Capture reminder
Checks Intervals.icu for any key session (TSS >40 or duration >45 min) logged today that hasn't been captured yet. Notifies if one is missing.
18:00
Sunday only
Weekly summary
Generates a week card with TSS vs planned, compliance rate, CTL change, flags, and Monday focus. Pushes a single headline notification.
Weekly rhythm
Sun
06:33
07:03
18:00 summary
Automatic
User-triggered
Weekly
Session day sequence
06:33 daily
Prescription
Readiness assessed, modulation engine runs, adjusted session pushed to Intervals.icu calendar.
automatic
morning
Train
Garmin records the session. Activity syncs to Intervals.icu via IcuSync after completion.
you do this
after session
Capture
Log RPE, gut comfort, heat tolerance, fuelling adherence. Triggered by you or the 18:07 reminder.
you trigger
after capture
Debrief
Lap drift, aerobic decoupling, power zone distribution, form metrics. One coaching note written to the session log.
automatic
Data flow
Inputs
Live signals
CTL / ATL / TSB
HRV trend (7d)
Sleep last night
Yesterday RPE
Ankle pain score
Temp + dew point
→
Analytics engine
Pure Python primitives
Modulation rules R1–R7
Env pacing (L1)
Banister CTL/ATL model
TSS compliance analysis
Ramp headroom check
Lap debrief metrics
→
Outputs
Actions + reasoning
Adjusted session on calendar
L2 reasoning trail
Push notification
Session debrief note
Weekly summary card
Watchdog alert (if triggered)
Intelligence layers
W2 · Daily prescription
Session modulation
Seven rules applied in priority order at 06:33. Adjusts intensity, interval count, or replaces the session entirely based on fatigue, HRV, sleep, RPE, and heat.
L1 · Environmental
Environmental pacing
Heat and humidity corrections to bike IF and run pace for the Cervia course. Segment-level wind time tax using actual course headings (280° / 100° / 0°).
W4 · Watchdog
Load monitoring
Eight triggers evaluated daily: ATL spike, weekly ramp, HRV trend, sleep deficit, missed sessions, aerobic decoupling, heat dose trajectory, heat recency.
W1 · Re-optimiser
Week re-optimiser
After missed sessions: assesses TSS debt and ramp headroom using the Banister model, then proposes a redistribution that respects quality-session spacing and the ramp cap.
Compliance
TSS compliance
28-day rolling analysis of planned vs actual TSS. Classifies why the gap exists — skipped, duration short, fatigued, or not pushed — then prescribes the right fix for each.
W6 · Post-session
Session debrief
Lap drift (first→last), aerobic decoupling (HR:power ratio across halves), Coggan zone distribution, Stryd form metrics for run. One coaching note per session.
Session modulation rules
| Rule |
Signal |
What happens |
Type |
| R1 |
Ankle pain ≥ 3/10, or quality movement not yet cleared |
Session blocked — no run or brick today |
Hard stop |
| R2 |
ATL − CTL > 25 (acute fatigue spike) |
Quality session swapped to Z2 or easy run; duration preserved |
Swap |
| R3 |
HRV trend < −7% over 7 days |
Intensity −5%, interval count −1 |
Soft |
| R4 |
ATL − CTL between 15 and 25 |
Intensity capped at 95% FTP |
Soft |
| R5 |
Yesterday's RPE ≥ 8 |
Intensity −5% |
Soft |
| R6 |
Sleep < 6h + HRV depressed (two signals) |
Swap to Z2. Single poor night alone: interval count −1 only |
Swap / Soft |
| R7 |
Ambient temp or dew point above threshold |
Intensity reduced by combined heat + humidity correction |
Soft |
Rules apply in priority order. R1 exits immediately — no other rules run. R2 exits after the swap — soft rules do not stack on top. Intensity floor: 65% FTP regardless of how many soft rules stack.
TSS compliance — why is there a gap?
When planned TSS consistently exceeds actual TSS, the system classifies why before deciding what to do. Scaling targets up is only correct in one of the five cases.
completed
Within 12% of target
No action needed
skipped
No activity logged
Adherence issue — protect calendar time, not a load problem
duration short
Session cut to <80% duration
Scheduling / time pressure — fix the slot, not the target
intensity · fatigued
Full duration, high RPE, low TSS
Load too ambitious — reduce targets or add recovery
intensity · soft
Full duration, low RPE, low TSS
Execution gap — scale targets ×(1/rate), capped at ×1.20
Reasoning trail format — every decision is explained
The L2 format enforces accountability: a real data point, a named rule, a concrete adjustment, and a predicted effect. "Fatigue looks high" is not permitted.
Modulation:
HRV −8.5% over 7d → R3 (HRV below −7% threshold) → drop interval count 4→3, target 95% FTP not 100% → maintain quality stimulus, reduce cumulative strain ~15%
Watchdog:
ATL 148 vs CTL 121 for 4 days → T1 (ATL > CTL +25) → insert recovery day today, swap Thursday threshold to Z2 → TSB recovers ~8 pts by weekend, ramp drops to +3.2/wk
Debrief:
Power fell 14% first→last lap → paced the opening set 8–10W above target → start 5W lower on next threshold session → power holds consistent through the full set
Compliance:
87% compliance over 28d, dominant gap: intensity_short_soft → full duration, low RPE, below target power — execution gap not fatigue → apply ×1.15 correction to quality session TSS targets → actual TSS lands on goal load within 2–3 weeks