Morning brief · 2026-07-01
🚩 Watch: respiratory rate 16.81 elevated. Cross-check before adding load.
Today's call
Moderate — 45% recovery, TSB -0. Keep it aerobic (Z2) and protect the easy day; banking base volume here is not wasted.
State & Goals · whole-athlete
/fitness-check for the why
Fitness · CTL
37
↑ +2.3/wk
Freshness · TSB
-0
loaded
Recovery
45%
HRV 23ms · RHR 67
Consistency
1.6h
of 10h · sleep 7.0h
Goals → race · building to elite-AG / world-class
Sustained NP/kg1.8 race 2.0
short 1.85 · elite-AG 2.7 · world-class 4.2
Run km/week0.0 race 40
short 25 · elite-AG 55 · world-class 90
CTL (fitness)37 race 70
short 45 · elite-AG 90 · world-class 140
Weekly hours1.61 race 10
short 7.5 · elite-AG 14 · world-class 25
Coach's read · whole-athlete
Fresh and building — CTL 37 (+2.3/wk), TSB -0, recovery 45%. Keep intensity modest today. Your binding limiter is the run: ~0 km/wk (0 runs/wk) against a 25 km short-term target. The bike is ahead of the run — the race is won by closing the run gap, so protect bike fitness but make the run the priority. On the bike, durability is the gap: 1.80 W/kg sustained vs the 2.0 finish-strong target (+0.20).
Deep insights — cross-signals · recovery × load × terrain × weight
🔻What a hard day costs. High-strain days (Whoop ≥14) drop next-day recovery a median -15 pts; easy days (<10) rebound +7 (n=82). Don't stack two hard days — bank an easy day to get the recovery back.
💗Adapting, not overreaching. As fitness built (CTL 23→37), your HRV has risen with it (20→24 ms). Autonomic system is keeping pace with the load — a healthy build.
🗻Don't panic about EF. Your EF tracks terrain (r=0.7, n=20): flat-ride EF medians 1.08 vs 1.29 on climbs. The recent EF dip is flatter rides, not lost aerobic fitness — judge EF within the same terrain.
⚖️Weight is doing work for you. Down 5.6 kg since spring (93.0→87.3) = +0.11 W/kg toward the 2.0 target at the same power. Of the 0.20 gap, the scale can keep chipping in — keep the trend going.
45
WHOOP RECOVERY
🟠 Reduced — easy/recovery
HRV
22.8
ms
Rest HR
67
bpm
Sleep
7.0h
78%
Strain
16.2
/21
CTL · TSB
37
TSB -0
SpO₂
93.8%
altitude
Skin °C
33.2
temp
Wk hrs
1.6
of 10h
ACWR · INJURY RISK INDEX
ATL 37.4 / CTL 37.4
1.0 ⬤ LOW · training safe
Yesterday TSS
7 gym
TODAY'S OPTIONS
🏊 Easy swim
Primary
30 min drills only. HR below 130. · ~15 TSS
🏃 Easy jog
Alt
20-30 min very easy. HR below 130. · ~20 TSS
💪 Strength
Gym
45 min lower body focus. Squats, deadlifts. No failure. · ~15 TSS
🚴 CYCLING — PRIORITY BLOCK · finish strong
EF · NP/HR
1.17
1.24 8wk ↓5.6%
NP/kg
1.75
1.77 8wk ↓1.1%
GAS km/h
26.0
24.0 8wk ↑8.5%
VI · pacing
1.68
1.94 8wk ↓13.4%
FINISH STRONG → 2.0 W/kg OVER 90 KM
1.80 W/kg
sustained NP/kg on 30 km+ rides · +0.20 W/kg to target · longest 80/90 km
📈 Build the long ride toward 90 km (last 46 km), but the real gap is power: long rides hold 1.80 W/kg vs the 2.0 finish-strong target.
EF (NP/HR) TREND — RECENT RIDES
Recent workouts
💪
Morning Weight Training
2026-07-01 · weights
44m34s
💪
Morning Weight Training
2026-06-30 · weights
52m11s
DAILY CHECK-IN · ENERGY · FOCUS · MOOD
▶ OPEN FORM
Tap daily on iPhone — add to home screen in Safari for one-tap access. Responses sync for correlation with HRV, TSB, and recovery.
Energy
Focus
Mood
💚 Autonomic recovery Yellow — Z2 only
HRV · TODAY
23
-3ms vs 30d avg 26ms
RESTING HR · TODAY
67
+2bpm vs 30d avg 65bpm
RECOVERY SCORE
45
7d HRV avg 23ms (-2.1ms wk)
Recovery & longevity goals → race · building to elite-AG / world-class
Resting HR67 race 57
short 60 · elite-AG 52 · world-class 40
HRV (RMSSD)24 race 40
short 32 · elite-AG 60 · world-class 85
HRV benchmark · best-in-class (sea level, 35 y/o male)
trained-rec 45–60 elite-AG 72 world-class 102
Altitude method: at 2240 m, RMSSD runs ~17% below sea level, so CDMX targets above = sea-level benchmark × 0.83. Your 24 ms29 ms sea-level-equivalent. Personalize the factor by logging HRV on any sea-level trip (≥3 nights).
RECOVERY SCORE — 60 DAYS · 14d 54.9 · 30d 66.4
HRV (RMSSD) ms — 60 DAYS · 14d 24 · 30d 26
RESTING HR bpm — 60 DAYS · 14d 67 · 30d 65
ACWR 1.0 and HRV 23ms (vs 30d avg 26ms) are moving in the same direction — load and autonomic state are aligned. RHR flat at 67bpm week-over-week — stable autonomic baseline. Your data shows a 9-point recovery drop after hard sessions (TSS 100+) vs easy days: 55% vs 64%. Two days post-hard-session, HRV averages 22.8ms vs 23.4ms after easy days — the autonomic suppression is measurable and specific to you.
RECOMMENDATION
Hold intensity today — Z2 only. Your TSB is already negative and two consecutive moderate days is the typical ceiling before HRV dips in your data. Banking Z2 volume here is not a wasted day; it's when aerobic base adaptation happens.
🔗 Signals — forecast & correlations AMBER forecast
Tomorrow · predicted recovery
54% ±16
for 2026-06-30 · from 2026-06-29 · model R²=0.24
AMBER
deep sleep · lowering recoverystrain · lowering recovery
😴 Deep sleep was low last night (1.6h vs ~2.2h baseline) — RHR tends to rise and recovery dip (rhr↔deep-sleep r=-0.52). Tonight: cool, dark room, earlier wind-down to bank slow-wave sleep.
🔻 Hard day (strain 14.6) — next-day recovery takes a modest hit. Don't stack another hard session tomorrow; bank an easy day to get it back.
Cross-domain correlations · 41 signals
From 93 days. Gates: |r|≥0.3 · p≤0.05 · n≥20 days · cross-domain only — definitional/same-family pairs removed so only independent, actionable links surface. Bar = strength; warm = positive, cool = inverse.
Skin temp Sleep performance
Body · Sleep · n=93
-0.48
Light sleep Strain
Sleep · Load · n=93
-0.45
Resting HR Awakenings
Autonomic · Sleep arch · n=93
+0.44
Resting HR Skin temp
Autonomic · Body · n=93
+0.42
Resting HR Sleep performance
Autonomic · Sleep · n=93
-0.42
Resting HR Deep sleep (SWS)
Autonomic · Sleep · n=93
-0.42
Disturbances Strain
Sleep · Load · n=93
-0.41
Micro-arousals Strain
Sleep arch · Load · n=93
-0.41
Resting HR Awake time
Autonomic · Sleep · n=93
+0.40
Resting HR Awake-after-onset
Autonomic · Sleep arch · n=93
+0.40
Fragmentation Daytime HR elevation
Sleep arch · Daytime HR · n=87
-0.40
Max HR Light sleep
Load · Sleep · n=93
-0.39
Resting HR Sleep efficiency
Autonomic · Sleep · n=93
-0.39
Fragmentation Sedentary HR floor
Sleep arch · Daytime HR · n=87
-0.38
Avg HR Sleep performance
Load · Sleep · n=93
-0.36
Recovery % Deep sleep (SWS)
Autonomic · Sleep · n=93
+0.36
Avg HR Resting HR
Load · Autonomic · n=93
+0.35
Max HR Disturbances
Load · Sleep · n=93
-0.35
Max HR Micro-arousals
Load · Sleep arch · n=93
-0.35
Recovery % Sleep efficiency
Autonomic · Sleep · n=93
+0.35
Disturbances Daytime HR elevation
Sleep · Daytime HR · n=87
-0.35
Fragmentation Median daytime HR
Sleep arch · Daytime HR · n=87
-0.35
Micro-arousals Daytime HR elevation
Sleep arch · Daytime HR · n=87
-0.35
Avg HR Recovery %
Load · Autonomic · n=93
-0.34
Recovery % Awake-after-onset
Autonomic · Sleep arch · n=93
-0.34
Avg HR Light sleep
Load · Sleep · n=93
-0.33
Recovery % Strain (prev day) lead-lag
Autonomic · Load · n=76
-0.33
Strain (prev day) Daytime HR elevation lead-lag
Load · Daytime HR · n=72
+0.33
Recovery % Awakenings
Autonomic · Sleep arch · n=93
-0.32
Recovery % Sleep performance
Autonomic · Sleep · n=93
+0.32
Skin temp Awakenings
Body · Sleep arch · n=93
+0.32
Kilojoules Light sleep
Load · Sleep · n=93
-0.31
Recovery % Awake time
Autonomic · Sleep · n=93
-0.31
Recovery % Longest sleep bout
Autonomic · Sleep arch · n=93
+0.31
Recovery (prev day) Fragmentation lead-lag
Autonomic · Sleep arch · n=76
-0.31
Resting HR Fragmentation
Autonomic · Sleep arch · n=93
+0.31
Disturbances Median daytime HR
Sleep · Daytime HR · n=87
-0.31
Micro-arousals Median daytime HR
Sleep arch · Daytime HR · n=87
-0.31
Avg HR Sedentary HR floor (prev) lead-lag
Load · Daytime HR · n=72
+0.30
Recovery % Fragmentation
Autonomic · Sleep arch · n=93
-0.30
Resting HR SWS front-load
Autonomic · Sleep arch · n=93
+0.30
🌙 Sleep quality Architecture OK
SWS · 30d AVG
2.34h
deep sleep · target ≥1.5h
REM · 30d AVG
1.64h
cognitive recovery · target ≥1.5h
EFFICIENCY · 30d AVG
94.8%
resp rate 16.81 brpm
SLEEP CONSISTENCY · 30 NIGHTS
bed ±32 min · wake ±62 min — wake time is the #1 lever
53%
Sleep goals → race · elite-AG / world-class
7-NIGHT DEBT −5.1h
Sleep h6.8 race 7.5
short 7.0 · elite-AG 8.0 · world-class 8.5
Sleep eff %95 race 90
short 85 · elite-AG 92 · world-class 95
Debt = hours under the 7.5h race target across the last 7 nights. Cross-metric: good sleep (≥85%) lifts your next-day HRV — sleep is your highest-leverage recovery lever after training load.
SLEEP STAGES — SWS · REM · LIGHT (30 NIGHTS)
SLEEP PERFORMANCE % — 30 DAYS
SLEEP DURATION — HOURS IN BED
Last night: 7.0h / 78% performance / SWS 2.51h / REM 1.55h. 30-night averages: SWS 2.34h, REM 1.64h, efficiency 94.8%. SWS 2.51h and REM 1.55h last night are both at or above your 30-day avg (SWS 2.34h, REM 1.64h) — architecture is solid. Sleep performance and next-day HRV show weak correlation in your data — your HRV response is more load-driven than sleep-driven currently. Resp rate 16.81 brpm is elevated — sustained >16 brpm is an early overreach or illness signal. Watch for convergence with rising RHR and falling HRV over the next 72h.
RECOMMENDATION
Sleep architecture is your strongest recovery asset. SWS 2h+ is rare — most trained athletes average 1.0–1.5h. Protect it: consistent wake time ±30 min daily, room 18–20°C, no training within 3h of bed. Current architecture supports continued CTL build.
🏆 Race readiness — 70.3 March 2027 243d to race
CYCLING · 4WK
67%
target 55%
RUNNING · 4WK
0%
target 30%
SWIMMING · 4WK
9%
target 15%
TRAINING BALANCE — LAST 4 WEEKS
LOAD → NEXT-DAY RECOVERY (60d)
HRV vs CTL FITNESS (60d)
With 243 days to race day, sport balance is Cycling 67% / Running 0% / Swimming 9% — target is 55/30/15 for a 70.3. Running exposure last 4 weeks: 0 sessions — running economy risk is CRITICAL. Running fitness decays at ~1%/week without stimulus. Zero sessions in 4 weeks means 4–6%+ economy loss — a direct hit to race-day run split. This is the highest-priority gap to close, not cycling. CTL 37 requires +0.8 pts/week average to reach 65 by Jan 2027 — achievable at current build rate.
RECOMMENDATION
The single highest-leverage action right now: add 1 easy run/week immediately to stop the economy decay, then scale to 3/week by September. Close the running (+30% gap from target) and swimming (+6% gap from target) volume gap by Oct — not before, or it disrupts the cycling priority block. Swimming: 1 technique session/week now (not fitness — technique). At 70.3 Ironman pace, swim is ~30 min — economy matters far more than fitness here. Cycling: maintain current priority through Aug, then shift to multi-sport balance in the Sept build. Finish-strong target: hold 2.0 W/kg across the 90 km bike. You currently sustain 1.80 W/kg on 30 km+ rides — close the remaining 0.20 W/kg with sustained tempo work.
Daily Strain
7-DAY LOAD
241
TSS this week
MONOTONY
0.49
<1.5 good · >2 risky
FOSTER STRAIN
118
load × monotony
Monotony = how same-y your daily load is (mean ÷ SD of the last 7 days' TSS). High monotony with high load is the classic illness/overtraining setup — vary hard and easy days rather than grinding the same load daily.
Whoop strain — 30 days
⚡ Training load & fitness LOW · training safe
CTL · TODAY
37.4
+2.3/wk · cyc CTL 33 (88%)
TSB · TODAY
-0.1
ATL/CTL 1.0
STRAIN · YESTERDAY
16.2
/21 · gym
PERFORMANCE MANAGEMENT — CTL · ATL · TSB (180 DAYS)
CTL rose 34 → 37 in 15 days (+2.9 pts). That's 1.4 pts/week — within the sustainable band of 3–4 pts/week. TSB has averaged -7 over the last 14 days, ranging -28 to +7 — near neutral — undertraining risk. Load distribution is appropriate — ACWR 1.0 is in the safe band.
RECOMMENDATION
CTL target: 65–80 by Jan 2027. At current pace (1.4 pts/wk), you hit 65 around Nov 2026. Sustainable path: 3–4 pts/wk gain through Oct, then a 3-week de-load before the build phase begins. Protect easy days — the aerobic base built in Z2 now is what race-pace tolerance is built on.
Running
🏃 Run — your race limiter Dormant — rebuild now
VOLUME · /WEEK (28d)
0km
0 runs/wk · target 25
LONGEST · RECENT
10km
race leg 21.1 km
BEST PACE
5:06/km
T-pace target 4:50/km
Run goals → race · building to elite-AG / world-class
Run km/week0.0 race 40
short 25 · elite-AG 55 · world-class 90
Runs/week0.0 race 4.5
short 3.5 · elite-AG 5.0 · world-class 6.0
Long run km9.52 race 21
short 16 · elite-AG 25 · world-class 32
T-pace /km5:06 race 4:50
short 5:00 · elite-AG 3:55 · world-class 3:05
The run is effectively dormant — 53 days since your last logged run, ~0 km/wk over the last month. This is your race-defining limiter: a 21.1 km leg off the bike is built on weekly run volume, and you're ~25 km/wk short of the Aug Base-1 target of 25. The key insight: your aerobic engine is far ahead of your legs — bike CTL 37 means your cardiovascular system can absorb much more running than 0 km/wk; the limiter is musculoskeletal durability, not fitness. So rebuild frequency FIRST — 3–4 easy Z2 runs/wk (HR <137, ~7:00/km) — before any speed work. Speed isn't the problem: your best pace is 5:06/km against a 4:50/km race T-pace target. Bank easy volume now; sharpen pace in the Build phase.
THIS WEEK
This week: 4 easy runs of 20–40 min at Z2 (~7:00/km, HR <137), with one slightly longer building toward 16 km. No intervals yet — frequency and time-on-feet are the adaptation that protects the legs. Grow weekly volume ≤10%/wk. Add a short bike-to-run brick once you're running 3+×/wk — that's the missing race-specific session.
Pace min/km — last 25 runs · lower = faster
HR zone distribution — last 10 runs · % time in zone
Weekly volume km — 12 weeks
Cycling · priority block
🚴 Cycling — finish strong 1.80 / 2.0 W/kg
EF · NP/HR
1.17
8wk 1.24 (-5.6%)
LONG-RIDE NP/kg
1.80
target 2.0 · +0.20 to go
CYCLING CTL
33
88% of load
Efficiency Factor (NP/HR) is 1.17 on your last 5 rides vs 1.24 over 8 weeks — the aerobic engine is slipping (-5.6%). EF is the truest fitness read here since it needs no FTP. The finish-strong gap is the headline: you sustain 1.80 W/kg on 30 km+ rides against the 2.0 W/kg target — 0.20 to close. Encouragingly, power holds up as rides lengthen, which is exactly the durability race day demands. Distance is largely solved — longest 80 km of the 90 km leg. Pacing is surgy (VI 1.68); on long rides, smoother output will leave more for the run. Cycling-specific fitness (cyc CTL 33) is 88% of total load — the block is cycling-led, as intended.
RECOMMENDATION
Close the 0.20 W/kg gap with structure inside the weekly long ride: 2×15–20 min at ~175 W (2.0 W/kg), progressing to 3×20 min by August — this trains time-at-target, not just distance. Hold the long ride steadier (target VI < 1.15): smoother power is more economical and protects the run. EF slipping under high volume usually signals accumulated fatigue, not lost fitness — check TSB before adding intensity. Skip FTP testing this block — EF and sustained long-ride NP/kg are your truer signals.
🎯 Finish-strong — sustained NP/kg on long rides vs 2.0 W/kg target
Long-ride progression — EED vs 65–75 km target band
Recent rides — tap for full detail vs your medians
06-26 · 46 km
EED 93.4 · 674 m · EF 1.173
1047 kJ
NP 156 W · 193 min
06-24 · 37 km
EED 72.6 · 512 m · EF 1.266
852 kJ
NP 171 W · 166 min
06-20 · 75 km
EED 75.6 · 5 m · EF 1.117
1296 kJ
NP 143 W · 196 min
06-13 · 80 km 🏅
EED 100.8 · 297 m · EF 1.03
1136 kJ
NP 133 W · 237 min
06-07 · 46 km
EED 84.0 · 548 m · EF 1.263
955 kJ
NP 162 W · 166 min
06-03 · 40 km
EED 68.2 · 397 m · EF 1.13
792 kJ
NP 139 W · 214 min
05-30 · 51 km
EED 51.6 · 3 m · EF 1.263
874 kJ
NP 168 W · 116 min
05-29 · 27 km
EED 50.7 · 334 m · EF 1.126
594 kJ
NP 140 W · 158 min
05-27 · 37 km 🏅
EED 74.5 · 540 m · EF 1.569
886 kJ
NP 171 W · 234 min
05-23 · 42 km
EED 80.1 · 553 m · EF 1.313
937 kJ
NP 172 W · 177 min
05-20 · 39 km
EED 77.1 · 542 m · EF 1.371
885 kJ
NP 159 W · 213 min
05-17 · 47 km
EED 92.9 · 657 m · EF 1.314
1004 kJ
NP 155 W · 185 min
Efficiency Factor (NP/HR) — aerobic fitness · last 20 rides
Total work kJ — last 20 rides
Grade-Adjusted Speed km/h · calibrated coeff 0.07 km per m
Variability Index (pacing steadiness) — last 20 rides
Normalized Power W — last 20 rides with power
TSS per ride — last 20 · 🏠 Zwift
Outdoor cadence vs 85 rpm target — avg 67.8 rpm · Zwift 85.1 rpm
Weekly volume km — 12 weeks
FTP device reference — back-calc, not a fitness signal
Swimming
🏊 Swim — distance there, sharpness missing Below frequency
VOLUME · /WEEK (28d)
1.2km
1×/wk · target 3×
CSS · BEST RECENT
2:15
untested · per 100m
LONGEST SWIM
2.5km
race 1.9 km ✓
Swim goals → race · building to elite-AG / world-class
Swim CSS /100m2:15 race 1:58
short 2:05 · elite-AG 1:35 · world-class 1:12
Swim km/week1.2 race 8.0
short 6.0 · elite-AG 12 · world-class 25
⚠ Open-water sessions logged: 0 — sighting, wetsuit and mass-start are untrained race variables. CSS shown is a proxy from your best session pace; run a formal test to set it properly.
Swim volume is ~1.2 km/wk (1×/wk). Distance isn't the worry — you've swum 2.5 km in one session vs the 1.9 km race leg. The two real gaps are sharper: (1) CSS is unverified — your best recent pace is ~2:15/100m but you've never run a formal CSS test, so race pacing is guesswork; (2) zero open-water sessions — all pool, so sighting, wetsuit feel and mass-start chaos are completely untrained. Swim gains are frequency-driven, not volume-driven: 3×/wk with technique focus beats one long grind. Your race CSS target of 1:58/100m would put the 1.9 km swim around 37 min.
THIS WEEK
This week: swim 3×. One is a CSS test — warm up, then 400 m time-trial, rest 5 min, 200 m time-trial; CSS pace = 200 ÷ (T400 − T200). One technique/drill session (frequency builds feel for the water). One aerobic 1.5–2 km continuous. And book your first open-water session this month — it's the single biggest unpracticed race variable.
Pace sec/100m — last 25 swims · lower = faster
Weekly volume m — 12 weeks
Body Metrics
⚖️ Body composition — your W/kg lever Weight trending down
WEIGHT
87.3kg
race target 82 kg
BODY FAT
25%
race target 14%
MUSCLE · HOLD
61.9kg
protect through the cut
Body goals → race · building to elite-AG / world-class
Weight kg87 race 82
short 85 · elite-AG 78 · world-class 76
Body fat %25 race 14
short 16 · elite-AG 11 · world-class 7.0
VO₂max (est) race 52
short 48 · elite-AG 60 · world-class 80
⚠ VO₂max is untested — it's the #1 longevity predictor and your aerobic ceiling. Set it with a field test (Cooper 12-min run or a ramp test). Body-fat 7% world-class rung is a healthy elite floor, not a target to undercut.
Body fat 25% (Withings) vs a 14% race target and the ~7% elite-male floor. Weight is a free W/kg lever: down 5.6 kg since spring has already added +0.11 W/kg at the same power — and every further kg ≈ +0.02 W/kg toward the 2.0 finish-strong target. Protect muscle (61.9 kg) through the cut — protein 1.6–2.0 g/kg/day; dropping weight by losing muscle costs power. Lean, not just light, is the goal.
Body composition — Fat mass kg & Muscle kg trend
Weight kg & body fat % — dual axis
Muscle mass kg
Health Metrics
❤️ Health & altitude SpO₂ 94%
Oxygenation goal → race · altitude watch
SpO₂ %94 race 93
short 92 · elite-AG 94 · world-class 96
SpO₂ 94% at 2240 m — normal acclimatized range. Altitude cuts both ways: a natural hypoxic stimulus that lifts your aerobic ceiling, but it also caps overnight SpO₂ and depresses HRV (same reason the HRV targets are altitude-adjusted).
SpO₂ % — 30 days
Skin temperature °C — 30 days
Generated 2026-07-01 19:20 · FTP device est. 195W · 315 activities