The Algorithm
HOW RUNCOACHBUILDS YOUR PLAN.
Every plan is a deterministic function of your inputs. No machine learning, no black box: seven rules, twelve weeks, one plan calibrated to your physiology.
01
What you provide
Eight inputs drive the full plan. Each one unlocks a specific layer of the algorithm.
02
Fitness calibration
When you provide a race result, RunCoach solves for your VDOT using the Daniels–Gilbert formula. This single number encodes your current aerobic ceiling and sets every training pace.
Heart rate data flows through a three-tier priority chain. Higher tiers override lower ones.
Threshold HR supplied
Zones set directly. Easy zone derived as threshold ÷ 0.855 × [0.65, 0.75]. Max HR estimated.
Max HR supplied
Threshold zone = 81–85% maxHR. Easy zone = 65–75% maxHR.
Age only
Tanaka formula: maxHR = 208 − 0.7 × age. Zones then derived as in tier 2.
03
The 12-week structure
The plan runs for exactly twelve weeks across three four-week blocks. Each block has the same internal shape: two progressive build weeks, one hold week at the same load, and one recovery week at 70% of the prior block's peak.
| Wk | Phase | Volume | Threshold |
|---|---|---|---|
| 1 | Build A | Base | Starting time |
| 2 | Build A | +1 step | Starting time |
| 3 | Build B | Hold | +1 step |
| 4 | Recovery | ×0.70 | Reduced |
| 5 | Build A | +2 steps | +1 step |
| 6 | Build A | +3 steps | +1 step |
| 7 | Build B | Hold | +2 steps |
| 8 | Recovery | ×0.70 | Reduced |
| 9 | Build A | +4 steps | +2 steps |
| 10 | Build A | +5 steps | +2 steps |
| 11 | Build B | Hold | ≤ 30 min cap |
| 12 | Recovery | ×0.70 | Reduced |
04
Session strategy
Volume and experience determine your session pattern. The algorithm selects the highest-intensity strategy you qualify for, then applies a ramp-up downgrade in block-start weeks to limit acute load.
| Mon | Tue | Wed | Thu | Fri | Sat | Sun | |
|---|---|---|---|---|---|---|---|
| Two SinglesAll runners | Easy | INTRVL | Easy | INTRVL | Rest | Long | Rest |
| Half Double≥ 40 km/wk · not beginner | Easy | AM+PM | Easy | INTRVL | Rest | Long | Rest |
| Two Doubles≥ 55 km/wk · not beginner | Easy | AM+PM | Easy | AM+PM | Rest | Long | Rest |
On block-start weeks (1, 5, 9): Two Doubles downgrades to Half Double; Half Double downgrades to Two Singles.
05
Interval templates
Each threshold session draws from one of three pools. The algorithm matches your target threshold minutes to the appropriate pool, picks a template, and calculates the maximum whole-rep count that meets the validity constraints.
Rep calculation
reps = floor(targetMinutes / workMinutes)
valid if: reps ≥ 2, reps ≤ 20, total work ≥ 13 min
06
Volume rules
Weekly target volume is a deterministic function of your starting mileage, capped by a per-day ceiling derived from training day count. Long runs and easy runs are derived fractions of the weekly target.
Days per week volume ceiling
4 days
60 km
5 days
80 km
6 days
100 km
7 days
120 km
Starting threshold time (minutes)
| Weekly volume | Beginner | Intermediate | Advanced |
|---|---|---|---|
| < 40 km/wk | 10 min | 12 min | 15 min |
| 40–54 km/wk | 12 min | 15 min | 18 min |
| ≥ 55 km/wk | — | 18 min | 20 min |
07
Flags
The plan generator emits warning flags when inputs hit a rule boundary. Flags don't block generation; they document the decisions made on your behalf.
- Beginner: plan locked to Two Singles — doubles are disabled for beginner experience level.
- Double days not selected: plan locked to Two Singles.
- Fewer than 4 training days: plan locked to Two Singles.
- Two or fewer training days: plan is minimal — 3 or more days recommended for full structure.
- Weekly volume under 20 km: consider building more base before starting threshold work.
- Max HR estimated from threshold HR.
- No threshold days selected — auto-assigned: [days].
- Weekly volume capped: your training day count cannot safely absorb this mileage.
Have a suggestion?
Get in touch.
Ideas for new features, algorithm improvements, or anything else — send them through.