Give the predictor below a GPX file and two numbers about you — system weight (you + bike + gear) and sea-level FTP — and it predicts your race: where the course breaks into climbs, descents, and flats, what power you can afford to hold on each section, how long each will take, and when you'll cross the finish line riding a maximal, well-paced effort.
It loads the 2024 Leadville Trail 100 MTB course by default, but you can drop in any GPX export from Strava, RideWithGPS, or a head unit.
Loading the course…
Physics. For each 25 m slice of the course, the predictor solves the steady-state cycling power equation — rolling resistance, gravity, and aerodynamic drag — for speed at the target power. Descents are capped at a surface-appropriate speed, because nobody descends Powerline at terminal velocity.
Altitude, twice. Elevation enters the prediction in two opposing ways. Thin air means less aerodynamic drag, which is why flat speed at 3,000 m is higher than at sea level for the same watts. But thin air also means less oxygen: aerobic power falls with elevation, following the acclimatized-athlete curve from Bassett et al. (1999). At Leadville's 10,200 ft start your threshold is already down ~15–20%, and on top of Columbine at 12,400 ft you have roughly three quarters of your sea-level engine. This matches the standard coaching guidance that a 300 W sea-level FTP plans for about 255–270 W in Leadville. The oxygen penalty beats the aero bonus everywhere except descents, so altitude costs real time — the test suite checks that a sea-level clone of the Leadville course is solidly faster.
A race effort, not a tour. The prediction assumes you're racing: the goal is the fastest finish your fitness allows. FTP is roughly one-hour power and nobody holds it for nine, so the base target is the highest intensity sustainable for the predicted duration (~78% of FTP for a six-hour race, ~68% at twelve), and the model iterates until the duration it assumed matches the duration it predicts. On top of that base, power is spent where it buys the most speed: harder on the climbs, where speed scales almost linearly with watts, and soft-pedaling the descents, where extra watts are nearly worthless.
Or your ride, your rules. Maybe you're not racing — you want a steady endurance day on a race course, or you're treating a long course as a hard three-hour training block you'll abandon at the second aid station. The optional desired IF field overrides the race logic. IF here means what your head unit means: normalized power over sea-level FTP. The planner re-paces the whole ride until the plan's normalized power lands on your number, so the IF you type is the IF the prediction reports — whatever the terrain's surges or the altitude derate do underneath. To pick a number with context, the prediction includes a chart of the theoretical sustainable IF across durations with your plan's operating point marked on it, so you can see exactly how far off the all-day curve you're choosing to ride. Aim above the curve and the predictor says so — and if the target is so hot the anaerobic reserve runs dry mid-course, the plan is flagged as a blow-up, not a schedule. Leave the field blank and the model races as before.
The anaerobic budget. How far above threshold can the climbs go? The model tracks your anaerobic work capacity (W′, about 20 kJ) the way physiologists do — as a reservoir that drains whenever you ride above your altitude-adjusted threshold and refills when you ride below it. The predictor searches for the biggest climb efforts that never quite drain it before the finish line: you cross the line with nothing left, but you never blow up on course. On very long races the search concludes what experienced ultra-racers know — almost nothing is worth going above threshold for, and the reserve is best kept as a buffer for the moments the plan doesn't know about.
The segmentation finds what Leadville veterans would expect: the St. Kevin's and Sugarloaf climbs early, the long grind up to the Columbine Mine turnaround at the course's midpoint, and the Powerline wall on the way home, connected by fast valley flats.
Benchmarks I used to calibrate the predictions, all for the ~105 mile, ~11,800 ft course:
Leadville — despite the "MTB" in its name — is essentially a gravel race: fire roads and doubletrack, ridden on bikes that get more gravel-shaped every year. It calibrates the predictor's Gravel surface. Real singletrack racing is a different sport: knobby tires on loose trail, constant cornering and braking, descents ridden at trail speed instead of gravity speed. The MTB surface models that, and it's benchmarked against the 2025 Life Time Tahoe Trail 100K at Northstar — shortened from three laps to two before race day: 42.2 miles of Sierra singletrack and resort roads with over 7,000 ft of climbing, all between 6,100 and 8,050 ft of elevation.
Loading the course…
The anchor benchmark: Lachlan Morton — a WorldTour pro — won the 2025 race in 3:27:26. The predictor puts ~6.3 W/kg of fitness on a 10 kg race rig at 3:27 on this course. The same rider on the Gravel surface would come through around 2:44; that 40-minute gap is the cost of singletrack, and it's why the old combined "MTB / gravel" surface had to split in two. Further back, a ~3 W/kg rider pencils out at 5:55, consistent with the usual 1.6–1.8× winner-to-mid-pack spread at mass-participation races.
The predictions are honest about what they exclude: aid-station stops, flat tires, weather, the hike-a-bike conga line up Columbine on a crowded year, and how well you actually ride a loaded descent. Treat the output as a best-case prediction for a clean day, not a promise.