Most "training score" features I have seen are either a glorified weekly TSS total, or a black box that punishes you for missing one ride. Neither is useful. The first tells you you trained more, but not better. The second makes athletes anxious instead of informed.
I have been running Training Score in beta for the past few months while we tuned it. Today it comes out of beta and turns on by default for every Pro, Max, and trial athlete — no flag toggle.
What the score actually is
Training Score is a 0-100 number on your dashboard, computed from four components. Each one maps to something a coach would actually look at when they assess an athlete:
- Fitness Base (40%) — Your current eFTP (cycling) or pace at threshold (running), benchmarked against population percentiles, plus a CTL bonus that rewards sustained training load. A 3.0 W/kg cyclist scores ~55, 4.0 W/kg ~77, 5.0 W/kg ~92. Compound Score (watts × W/kg) is preferred over raw W/kg when both are available, because riding 350W at 4.0 W/kg is meaningfully different from riding 250W at 4.0 W/kg.
- Progressive Overload (20%) — Whether your weekly TSS and ramp rate are actually building you toward something. Climbing 3-5 CTL/week in a build phase scores high. Plateaued or declining for weeks scores low. The score is phase-aware, so a planned taper or recovery week does not get punished for ramping down.
- Consistency (20%) — How closely you have hit your last few weekly plan targets. Adherence over four weeks. This is the component most people underestimate — the research is unambiguous that consistency beats intensity for most athletes most of the time.
- Load Management (20%) — Two pieces. Monotony (Foster 1998) — the same week-to-week stress monotony index used in classic overtraining research, where values above ~2.0 correlate with increased illness/injury risk. And Training Intensity Distribution — whether your easy/hard split looks polarized, pyramidal, or threshold-heavy. Neither monotony nor TID has a single right value, but extremes get penalized.
Total weights to 100. Sub-scores you do not have data for (e.g. consistency before you have a complete plan week, monotony before you have enough activity history) get marked as N/A in the UI rather than dragged down by a default value.
Three real stories from this week
To make this concrete, here is what the score is actually surfacing for three real IntervalCoach athletes right now (anonymized, numbers verbatim from production data on 2026-05-05).
Story 1 — A marathon, perfectly framed by the score
A Pro runner trained all spring for a marathon and ran it on Sunday two weeks ago at 102% compliance — sustained Z3 threshold pace for 3+ hours, IF 0.97 across 42 km. His weekly Training Score snapshots tell the story of how the system saw it:
| Date | Total | Fitness | Overload | Consistency | Load Mgmt |
|---|---|---|---|---|---|
| 2026-04-19 (race-7) | 64 | 72 | 60 | 41 | 70 |
| 2026-04-26 (race day) | 70 | 72 | 100 | 35 | 70 |
| 2026-05-03 (post-race) | 59 | 72 | 39 | 31 | 70 |
| 2026-05-05 (rested taper) | 51 | 72 | 25 | 24 | 45 |
Three things the score got right. Fitness Base held at 72 the whole time — his W/kg-equivalent threshold pace did not change in two weeks, and the score correctly does not pretend it did. Overload hit 100 in the week of the race itself, the structural maximum, because his ramp-up into the marathon was textbook. And after the race the score gracefully comes back down: not as a punishment, but because he is now in active taper at TSB +18, which is exactly where he should be.
This is the shape that makes me happiest. The score went up when training was at its peak, and it is now correctly rewarding rest as rest, not as decline.
Story 2 — A build block doing exactly what it is supposed to
A Pro athlete prepping for a hard mountain event, 7 weeks out, CTL 88 — high-volume rider. His weekly snapshots:
| Date | Total | Fitness | Overload | Consistency | Load Mgmt |
|---|---|---|---|---|---|
| 2026-04-19 | 64 | 58 | 75 | 46 | 95 |
| 2026-04-26 | 66 | 59 | 87 | 40 | 95 |
| 2026-05-03 | 57 | 60 | 60 | 38 | 70 |
| 2026-05-05 | 60 | 61 | 45 | 40 | 95 |
The bold column is the one to watch. Fitness Base is climbing 58 → 59 → 60 → 61 across four weekly snapshots — small, but real, fitness gains showing up in the score with two-week-resolution. The CTL bonus is working: he is sustaining a high CTL (now 88), and the model rewards that because it is what actually moves your underlying ability over multi-week timescales.
Overload doing 75 → 87 → 60 → 45 is the build-phase shape: ramped hard, then naturally tapered down as the FTP test approaches. The brief Load Management dip to 70 on 2026-05-03 is the score noting his monotony rose during his hardest week — and then bouncing right back to 95 once he varied his intensity again. None of those moves are alarming. They are the score reporting what is actually happening, week to week.
He is averaging 1100-1450 TSS per week. The score is not punishing him for it. The score is celebrating it.
Story 3 — What "dialed in" actually looks like
A road racer prepping for a peak event next month. Strong rider, training consistently for years. Here is what his snapshot history looks like:
| Date | Total | Fitness | Overload | Consistency | Load Mgmt |
|---|---|---|---|---|---|
| 2026-04-19 | 96 | 95 | 100 | 100 | 95 |
| 2026-04-26 | 90 | 96 | 60 | 100 | 95 |
| 2026-05-03 | 82 | 96 | 53 | 71 | 85 |
| 2026-05-05 | 85 | 96 | 68 | 72 | 85 |
The headline number reaching 96 out of 100 is rare — three of the four sub-scores at literal maximums in the same week, with the fourth at 95. It happens when every component is firing at once: the rider's W/kg puts Fitness Base at 96 (high-end recreational, near-elite for an amateur), his weekly TSS ramp put Overload at 100, his plan adherence put Consistency at 100, and his monotony / intensity distribution kept Load Management at 95.
The first two stories show what good trajectories look like — the marathon runner's score climbing into race week, the mountain athlete's Fitness Base ticking up snapshot by snapshot. This story shows what a good state looks like: a rider who has been doing the work for long enough that the score has nothing to flag. Stories 1 and 2 are journeys. Story 3 is a destination.
What is also notable is the natural recede. The 96 in the week of 2026-04-19 was peak load. Once he started winding down toward his goal event, Overload correctly dropped from 100 to 53, then climbed back to 68 as he resumed work. Consistency went from 100 to 72 because of a planned recovery week. Total stayed in the 82-90 band the whole time — never below 80. The score is calm at the top of the range, and that calm is the signature of training that is working.
This is the shape that earns the score's credibility for the harder cases. When the system can correctly recognize a 96 — and then correctly let it drift to 85 during a planned wind-down without panicking — the same model is much more trustworthy when it tells you your Consistency is 4, or your Overload has been 36 for three weeks running.
What the data shows across our users
A few patterns worth flagging from looking at the broader data:
- Most active Pro/Max athletes land in the 50-65 range during build blocks. A 70+ requires either elite W/kg or strong sub-scores across the board, peaking in race week. A consistent recreational rider with no obvious problems sits in the 50s, and that is a healthy place to be.
- Fitness Base is the slow-moving one. It only ticks up by 1-2 points per snapshot when things are going right, because real fitness changes are slow. Watching it climb week-by-week is one of the best signals that a build block is working — see Story 2.
- Overload swings most. It is the sub-score that lights up when training peaks (Story 1) and the sub-score that calmly steps down during taper (Story 3). That is by design.
- Load Management is high for almost everyone. Most athletes do not actually overtrain. The score does its job most of the time by not firing this signal — and it earns its keep on the rare days when it does.
What's not in the score
A few things I deliberately left out:
- Race results. Not predictive enough at the recreational level. A bad race day says nothing about training quality.
- Heart rate variability. Excellent for daily readiness, terrible as a multi-week trend signal — too much noise from sleep, alcohol, stress, time-zone shifts. HRV stays in the dashboard's daily readiness layer, not in the score.
- PR streaks. PR-driven scoring rewards aggressive testing and punishes the months in between, which is the opposite of what you want.
Where to find it
- Dashboard — the Training Score card sits with the rest of your daily summary. Tap for the breakdown.
- Analytics page — weekly snapshot history, with the four sub-scores overlaid. Watching Fitness Base inch up across a build block, like Story 2, is the kind of pattern that is invisible week-to-week and obvious on the chart.
- Post-workout email — the score's weekly delta lives at the top of the summary, so you can see how each session moved the number against your week-start baseline.
- Coach+ — the chat agent has the sub-score values, the weakest component, and the context for each one. "Why did my Overload drop this week?" gets a real answer, not a generic one.
If you have been on the beta flag, nothing changes other than the toggle is gone. If you are new to the score and on Pro / Max / trial, it is on your dashboard right now.