The pipeline

Watch to Telegram, with nobody pressing go.

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.

github actions · cron 05:30 daily — readiness check-in saturday evening — weekly review no manual runs, no reminders to ignore Garmin Strava sensors intervals.icu load · CTL/ATL/TSB analysis the coach reason + decide gate → readiness → plan wakes it Telegram one chat thread the athlete answers to the check-in questions go straight back in memory structured logs, read before every reply writes + reads

Fully automated on a schedule. The only human step is answering the morning message.

The monitor

A second surface, on purpose.

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

Memory, not a chatbot.

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.

  • readiness.logDaily sleep, HRV, resting HR and check-in answers — the trend, not just today.
  • injuries.logEvery niggle: where, how bad, what aggravates it, whether it's resolving or recurring.
  • fueling.logWhat was eaten and drunk on long sessions, and what happened afterward.
  • weekly-reviews.logWhat was planned, what was completed, and the honest reason for the gap.
  • race-results.logSplits, conditions, execution notes and PRs — evidence for the next taper.
  • intake.mdHistory, constraints, thresholds and the athlete's own rules, including max 2 A-races.

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.