Readiness
55.1/100~
Daily energy estimate blending current form (TSB) with the trailing 7-day sleep quality average. Sleep nudges the score by up to ±15%. Higher is better: ≥65 good (recovered, ready to push), 40–64 middling (train easy), <40 low (rest/recover).
Form (TSB)
+1.5✓
Neutral
Fitness − fatigue (CTL − ATL). Negative TSB means you're loading harder than your baseline; very negative is over-training territory. Zones: -10 to +25 optimal / fresh (good — gaining fitness or race-ready), -30 to -10 productive or >+25 transition/detraining (middling), <-30 high-risk / over-trained (back off).
Fitness (CTL)
16.2
42-day exponentially weighted moving average of daily training load (hrTSS). Slow-moving baseline that reflects long-term aerobic conditioning. No fixed good/bad number — higher = fitter, and the trend is what matters: steadily rising = building fitness, falling = detraining. Its gap to Fatigue (ATL) is your Form above.
Fatigue (ATL)
14.6
7-day EWMA of daily training load — short-term workload. Stays above CTL when you're stressing the body to build fitness. No fixed good/bad — it's expected to rise during hard blocks; what matters is ATL vs CTL: above CTL (negative Form) = loading harder than baseline (productive in bursts, risky if sustained), below CTL (positive Form) = fresh / recovering.
Sleep modifier
+4%
7-day sleep avg: 85.3%
How recent sleep is adjusting today's readiness. Capped at ±15%; neutral at 80% sleep quality.
Using age-derived max HR (176) and manual resting HR (57). Set STRAVA_BIRTHDAY in .env or grant Strava profile:read_all for a tighter fit.