It missed my race by two minutes. It called the split that mattered to 4 seconds.
An AI head coach built on 14 years of my own telemetry sealed a race prediction, missed the total, nailed the decisive split — and got me within 71 seconds of the podium in 7 days.
Publish the number before you know the answer
Three weeks before race one, the system predicted my splits from FTP tests, sleep data, a GPX recon of the course and three years of my age group's results. I published it before the start. That's the method: a forecast you can't quietly edit afterwards.
And this is what the coach saw at 6 a.m. on race morning — a taper landing exactly where it was aimed:
24·07·26
| Tägi Sprint · 16 Aug | Predicted | Actual | Δ |
|---|---|---|---|
| Swim | 8:25 | 9:28 | +63s |
| Bike | 30:50 | 30:54 | +4s |
| Run | 14:55 | 15:35 | +40s |
| Transitions | 4:10 | 4:17 | +7s |
| Total | 58:20 | 1:00:13 | +1:53 |
Outside its own range. But the bike — the split it had named three weeks earlier as the one costing me the podium, quantified at 1:05 short — came in 1:09 short. Wrong about the race. Right about the problem.
A prediction that can't be wrong in public is a demo.
Fix two things. Only two.
Race two was seven days out. The data said dozens of things; the system prescribed exactly two: race the swim (I'd left my heart rate 7 beats below my own 2023 self) and pedal to the dismount line (I'd shut off 500 m early and gifted 8 seconds).
Both executed. And the watch carried a power script — four segments by distance, each with a target range and a cue written by the coach:
Result: 1:06:00.8 — 5th of 95 in my age group, 22nd of 351 overall. Top 5%. And the number that actually matters:
GAP TO THE PODIUM · THREE MINUTES CLOSED
Effort was never the problem
I fixed the swim effort — heart rate up 4 beats, pushed from the first stroke — and went 16 seconds per 100 m slower. The watch explained it: stroke length collapsed 15% without buoyancy, covered up by 19 extra strokes. That's not a fitness gap. It's a technique gap, measured — and it just became a named project with a swim coach.
The run opened 10 seconds slower than goal pace — by prescription. Every kilometre after was faster than the last, closing at 3:54 with heart rate climbing 162→175. Same speed as race one over 1.1 km more, at 3 beats lower cost. The slowest first kilometre bought the fastest finish.
What ten weeks of AI coaching bought
The race block ran ten weeks, W24 to W34 — Norwegian sub-threshold method, scaled to 7–9 hours a week around a family of five. Start to finish, measured:
| Start · W24 | End · W34 | |
|---|---|---|
| Bike FTP | 237 W (test) | 241 W held 31 min in race |
| Swim CSS | ~1:50 /100m | 1:44 long-course |
| Run threshold | 3:56 /km fresh | 4:10 /km off the bike, at 30°C, negative split |
| Tägi vs my 2023 | 1:00:34 · 4/28 | 1:00:13 · 6/42 — same percentile, field +50% |
| Uster | — | 5/95 · top 5.3% |
| Body weight | ~72.8 kg | ~72.2 kg |
| Gap to the podium | 4:34 (2023) | 1:11 |
The clock says 21 seconds in three years. The podium gap says 3:23 in ten weeks. Pick your metric carefully — it decides what you train next. I picked the gap.
Two races distilled to five rules
After both races the system audits itself — prediction vs actual, leg by leg, in a document it can't edit later. These five survived contact with reality and are now standing orders:
1 · Power scripts live on the watch, by distance
Four segments, each with a wattage range and a one-line cue. Segments advance by kilometre, not by button press.
Evidence: 3 of 4 segments in range · VI 1.13 → 1.10 race over race2 · First kilometre: 10 seconds slower than goal. Always.
Restraint is a purchase, not a loss. Racing the first km cost a mid-race collapse in race one; banking it bought a full negative split in race two.
Evidence: 4:22 opener → every km faster · final km 3:543 · Between close races, fix exactly two things
The data offers twenty fixes. Two get through. Both were executed on race day — because two is a plan and twenty is noise.
Evidence: swim HR +4 · pedalled to the line, both delivered4 · Recon the course at gun hour
Swim the actual lake at the actual start time, days before. Same sun angle for sighting, same water, same no-wetsuit feel. Fear becomes a number.
Evidence: recon pace 1:47–1:49/100m → race plan built on it5 · The prescription arrives in the morning brief
Full session table — doses, targets, an abort rule — written into the daily brief before I wake. No app-hopping, no recomputing, no ambiguity at 6 a.m.
Evidence: read every morning of race week, on a phone, with coffeeWhat it's made of
The corpus is the coach
3,778 activities, 8,590 nights of sleep and HRV, 75 races since 2012 — in a Postgres database I own. The coach doesn't guess my zones; it reads them. When it says "your bike is 92 seconds short of the podium," that's a query, not a vibe.
The coach is prose
Its behaviour is a markdown file in my notes. When it got a race distance wrong, the fix was editing a sentence — on my phone. Every rule on this page is literally a paragraph in that file now. It runs every morning as part of a twelve-agent system that also handles my money, my inbox and my week.
Got a race, a body, and years of data no app has ever read together?
This isn't a product. It's a way of building — and the corpus you already have (Garmin, Strava, a drawer of results) is worth more than any plan you can buy. If you want one of these for your own season, tell me where you're stuck.
TELL ME YOUR RACE → Easiest way in: just email me at cris@grossmann.ai. I read every one myself.