Every run is searched for races. Any run that covered a race distance (1600 to 10K) at race effort counts, whatever it was labelled, and if it beats a PR on file Kestrel updates the PR. The fastest stretches inside your runs (from your watch, through intervals.icu) count too.
Course and weather are taken out. Every race and hard run is credited back to a flat course on a cool day. Van Cortlandt runs about 5.5% slow (about a minute on an 18-minute 5K), other cross-country courses about 2.5% plus their hills, and heat by temperature plus dew point (about 1% at 120, 3% at 140, 6% at 160). Heart rate on steady runs is read the same way. Your PRs stay the real times, and a cross-country race counts toward your XC PR, never your track one.
KesslerPredict reads your results. Your races and PRs from the last two years (a 5K you typed in only counts when nothing newer exists) go into KesslerPredict-Lite, a small model trained on collegiate and Ontario high-school race results. It predicts a time for every event from 400 to the half marathon, with an 80% range, and learns your own speed-vs-endurance shape from the distances you have run. Your race VO2max (the oxygen use your times are worth) is read off its 1600, 3200 and 5K times and sets your training zones.
It uses your best results. It looks at your fastest result at each distance from the last two years, so someone coming back from a layoff or injury will read faster than they are today; add a recent race or edit the PR date when that is you.
Garmin's VO2max is matched to your races. Garmin estimates VO2max from heart rate vs speed, which usually reads higher than race results. Kestrel finds your personal ratio from races run near a Garmin reading, so the number can track your fitness between races.
Runs without a race. If you have no race or PR at all, Kestrel falls back to a training estimate from rep sessions and heart rate on steady runs, and says so.
More events, your choice. Tap Edit on Race fitness to show 100m, 200m, 600m, 1000m or the steeplechases. KesslerPredict-Short estimates them from your other times (and any PR you enter at those distances), using the relationships between events in World Athletics, collegiate and Ontario high-school results. Every row shows how sure it is: the dot and the ± are the width of its 80% range. Sprints and steeples are the least certain: the model learned them mostly from elite athletes, with a check on real high-school sprinters.
Marathon, from your training. Tap Edit and turn on Marathon. KesslerPredict-Marathon reads your last 16 weeks of watch runs (weekly miles, long runs, pace, your best 5 to 15 mile effort) and needs at least 15 running days. It was trained on 14,000 real marathon days with their training logs; on runners it had never seen it was off by about 6% on average, and its range is about ±10%, so treat it as a ballpark. It does not use your PRs, and it does not know the course, weather or taper.
Mileage matters for long races. 10K and half marathon estimates slow down when your last 4 weeks are low on miles.
VO2max is your watch's (Garmin or COROS) when it sends one. Kestrel VO2max is what your race times are worth, and it sets your training paces. With no watch number, the headline is Kestrel' heart-rate estimate from steady runs (using your resting heart rate when known). Watches tend to read high for some runners; none of these is a lab test.
Fitness score is your training load (minutes x effort) averaged over 42 days; fatigue is the same over 7 days, and form is fitness minus fatigue. It goes up with steady training and doesn't depend on racing.
Your training works on its own. A team adds a shared calendar, a mileage board and a place to talk.
Your runs flow in on their own once a watch is connected. Pick one way: Claude walks you through it, or do the steps yourself.
In Claude (claude.ai or the app): Settings → Connectors → Add custom connector. Name it Kestrel AI and paste your link. Claude can't add connectors to itself, so this one step is yours. Keep the link private: it's your login.
Claude checks Kestrel AI is connected, then walks you through intervals.icu and Garmin (those need your own logins), connects your watch to Kestrel, imports your whole history, saves your PRs and explains your Fitness States.
Your runs sync into Kestrel by themselves. In Claude, say "coach me" after a run for a full review from Kestrel AI.
intervals.icu is a free training site. It's the bridge between your watch and Kestrel: Garmin and COROS send runs to it officially, and Kestrel reads them from there.
Open intervals.icuOn intervals.icu go to Settings → Connections and connect Garmin (or COROS). Then use the option on that connection to import your old activities, so your full history comes across, not just new runs.
Don't connect Strava there instead: Strava doesn't let intervals.icu share your runs, so Kestrel can't see them.
Still in intervals.icu Settings: your athlete id is under your name (looks like i12345). Scroll to Developer Settings for the API key.
Kestrel pulls everything intervals.icu has, a few months at a time. It keeps going in the background, so you can leave this page.
Kestrel is a free tool, not a doctor or a certified coach. Plans, paces, predictions and AI replies are estimates and can be wrong. Running carries a risk of injury; talk to a doctor before changing your training and stop if something hurts.
Who’s using this device?