Under the Hood
A boat's bearing is its direction of travel. Not where it's pointed, not where the wind is blowing — where it's actually going, given everything acting on it right now.
That's how Azimuth thinks about training. Your goal is fixed. Your conditions aren't. The job of the dashboard is to read the conditions honestly and tell you what bearing you're actually on, so you can adjust before you drift.
Numbers from code. Words from a model.
Your threshold pace has sharpened by four seconds over the past two weeks. Last Sunday's long run was textbook — heart rate stayed suppressed through the final 8km, which suggests your aerobic base is absorbing load well.
One flag: acute workload spiked above 1.4 this week. Back off Tuesday's session by 15% and the 8-week arc stays on track.
Azimuth has two kinds of output.
Numbers — your readiness score, your compliance, your pace zones — are produced by deterministic code. They don't hallucinate. They don't round up to make you feel better. They're calculated from the same inputs every time.
Words — the daily guidance, the post-run assessment, the weekly summary — are written by a language model that reads those numbers and explains them in plain English. The model is a writer, not a decision-maker. It never sets a score, never proposes a goal pace, never writes your plan. Every AI-generated card carries a small badge so the distinction is always visible.
The score is built on the science
Race Readiness is a single number from 0 to 100, broken into 13 components across two layers: performance capacity (can you physiologically run the time?) and readiness and risk (will you arrive at the start line able to express that capacity?).
The components and their weights come from the marathon physiology literature — research on critical speed, lactate threshold, fractional utilisation, durability, training load, taper, and the dozen other variables that decades of studies have linked to marathon performance.
A recent tune-up race carries the most weight because half-marathon time four to eight weeks out is the single most accurate predictor of marathon finish time in the published literature. Threshold fitness comes next because lactate threshold pace is the strongest physiological proxy for marathon performance in amateur runners. Components like ACWR (acute-to-chronic workload ratio) and durability appear because newer research shows they materially improve prediction beyond the classic predictors.
Honest about what it doesn't know
Here's where Azimuth differs from most apps. Many components can't be measured at any given moment. You can't score a tune-up race you haven't run. You can't score taper discipline outside the final three weeks.
So Azimuth doesn't pretend missing data scored zero, and doesn't quietly fill gaps with averages. Components with no measurable data drop out of both sides of the calculation.
Your score is paired with a second number: evidence completeness — the percentage of the framework that's actively scoring. A 78 at 45% completeness means the parts we can measure look strong, but most of the framework hasn't fired yet. A 78 at 95% completeness is a confident prediction. Below 90% the score renders in neutral ink. Above 90%, an accent activates — because at that point the score is trustworthy enough to act on.
Two scores, two questions
The dashboard shows two confidence numbers side by side.
Fitness Level is a four-week window. It answers "how is my training going right now?" and moves quickly. A great week lifts it; a recovery week dips it.
Race Readiness is the eight-week, thirteen-component framework above. It answers "how prepared am I for race day?" and moves slowly by design. A great week can lift Fitness Level without moving Race Readiness much — if the missing tune-up is still missing, the model still knows. Showing both is more honest than blending them into a single number that hides the trade-off.
What feeds it
Three streams flow in.
Strava handles the run log. Each activity is reconciled against the planned session for that day, so the system knows not just what you ran but whether you hit the prescription.
Garmin handles wellness — sleep score, HRV, resting heart rate. These feed the recovery components of Race Readiness and the daily guidance model.
You handle the subjective layer through a one-tap post-run check-in: how hard did it feel, how do you feel right now. These are the inputs the physiology literature consistently shows that data alone undersells.
What it deliberately doesn't do
It doesn't write training plans from scratch. It doesn't gamify anything — no streaks, no badges, no leaderboards. It doesn't pretend to know things it doesn't know.
And it doesn't lose your data. Runs are soft-deleted. Plan changes are append-only with a reason and a timestamp. The original prescription is always recoverable. The path back is always there.
Adapting without drama
Training is a moving target. A poor April, a sleepless week, a tune-up that goes better than expected — each one shifts the bearing. The dashboard recomputes daily. When conditions demand a plan adjustment, it's logged with a reason. When the model writes something, you can see the inputs it used.
No black boxes. No confident-sounding guesses. No numbers that flatter.
You run. We navigate.