The pipeline
There is no app to open and no dashboard to remember to check. Sessions flow out of the watch and into an analysis layer; a scheduler wakes the coach; the answer arrives as a message. The athlete's only interface is a chat thread.
Fully automated on a schedule. The only human step is answering the morning message.
The monitor
Everything on this site is the story. Day to day, the athlete doesn't read a story — he glances at one screen for about four seconds. That's a separate, private daily dashboard, built to answer three questions and nothing else: how many days, what's today, what needs a decision.
Deliberately the opposite design from this site. This page can afford five sections and a scroll, because its job is to explain. The monitor can't — its job is a 6 a.m. phone glance, so it stays to one screen: countdown, today, a handful of numbers, whatever needs a decision. The race calendar, the safety net, the data model, the memory layer — all of that lives here instead of being re-explained there.
It's generated from the same files this site describes —
data/athlete_profile.yaml, data/plan_state.yaml,
data/benchmarks.yaml — by a small script, rebuilt on demand rather than
hosted anywhere. Private by construction: it never leaves the athlete's machine, which
is also why this showcase links to the idea of it rather than embedding the real one.
Memory
A stateless chat gives confident advice and forgets the context that made it wrong. This one keeps structured logs and reads its own history before it says anything — so a niggle from three weeks ago is still on the record when it decides whether today's tempo run happens.
The practical effect: it never forgets a niggle, never re-asks something already answered, and never congratulates you on a PR it has no record of. Continuity is the feature.