What is Data to Dirt?
Data to Dirt is the system I created to combine your personal performance data with a course GPX file to generate an actionable, realistic race strategy unique to you as an individual.
Why I Built It
As a runner, I made the leap from the road to the trails over a decade ago, stepping into the ultra world a few years later. I quickly learned just how fundamentally different it is to pace and manage race execution for trail and ultra events compared to the road. This was a challenge that I would come to relish.
Solving complex problems is what I’ve always done: first as an engineer, then as a project manager, an enterprise solution architect, and now as a full-time running coach. To be completely transparent from the outset: I am not a scientist, and I am not an elite runner. But I am a massive running nerd with a proven track record of deconstructing complex problems and implementing real-world solutions.

Data to Dirt in action: Crossing the finish line of Ultra Trail du Saint Jacques, my best race in terms of execution.
Case Study: Great Ocean Trail 100k
"Data to Dirt is a unique and revelatory racing plan that will make achieving your race goals so much easier. The fuelling strategy, as well as the split times between check-points, will give you the confidence that if issues do occur, they can be overcome with the knowledge gained."
Mark, Great Ocean Trail Ultra 100k Finisher
CASE STUDY: GREAT OCEAN TRAIL
The Philosophy
My philosophy is built on three pillars:
Eliminating potential points of failure
Working smarter, not harder
Ensuring the system is trainable, scalable, and repeatable
Initially I set out to build this system purely for my own running:
Could I systematically eliminate the various physical, logistical, and timing pitfalls of an ultra?
Could I build a system that handles the heavy mental lifting, leaving me to focus purely on execution on race day?
Could I create a process that is easy to adopt and deploy across races of varying distances, terrains, and environmental demands?
Who Benefits
While I originally created the system for my own events, it has utility for any runner wanting to improve their race execution, whether you are stepping onto the trails for your first off-road 10k or half marathon, or preparing for a bucket-list 100-mile alpine epic. Eliminating pacing errors and timing miscalculations applies to every runner at every distance.
What Problems Does Data to Dirt Seek to Resolve
An ultra-marathon or technical trail race presents a minefield of potential failure points. While not an exhaustive list, these are the primary pitfalls Data to Dirt is built to resolve:
Racing At The Wrong Intensity
This is the single biggest and most common failure mode. In most cases, it means starting too hard, though pacing too conservatively can also carry risks for athletes fighting for podium places. Starting at an intensity that is too high can deplete precious glycogen stores, trigger early muscular fatigue, and can lead to severe gastrointestinal (GI) distress hours later.
Miscalculating Sector Timings
Misjudging the time required between aid stations can lead to major fueling and hydration shortfalls. If you estimate a sector between Checkpoint A and Checkpoint B will take 2 hours at your sustainable race pace, but it actually takes 3 hours, and you only carried liquids and fuel for 2 hours, you could dig a physiological hole that you might not climb back out of.
Missing Race Cut-Offs
In that exact same scenario, if that 1-hour miscalculation causes you to arrive at an aid station beyond the cut-off time, your race is over on the spot.
Kit and Logistics
If you are running through a day-to-night transition and relying on a drop bag or crew meeting you at a specific checkpoint up ahead, that extra hour in the dark can introduce setbacks from temperature drops and gear issues.
Why Standard Commercial Tools Fall Short
Existing commercial tools that claim to offer pacing solutions suffer from fundamental structural limitations. This is not a criticism of these tools, they have their place, but executing a successful race requires understanding their limitations.
With tools such as Garmin PacePro, the user selects a course GPX file, inputs an arbitrary goal time or pace, and applies basic sliders for positive/negative pacing splits and uphill effort.
This approach has three major flaws:
Flaw A: The Minetti et al. (2002) Study
The underlying formula used by PacePro is based on the landmark Minetti et al. (2002) study, which sought to measure the oxygen consumption and metabolic energy cost of elite mountain runners across varying gradients on a treadmill. The research team derived a polynomial formula to calculate metabolic cost as a function of gradient. While this provides a valuable baseline, its direct application to real-world trail runners has major limitations:
Are you an elite male mountain runner? The vast majority of us are not. The study evaluated a sample size of just 10 elite males. If you are not an elite male, the applicability of that energy curve is limited.
Do you race on a treadmill? Almost certainly not. Off-road racing involves muddy fields, technical singletrack, fire road, scree, and brutal climbs. It is not a smooth treadmill belt, which again limits real-world accuracy.
Are you fully fresh and rested throughout your race? Absolutely not. The athletes in the study performed short 3-to-5-minute bouts at a set incline, followed by long rest intervals. Your race is continuous and multi-hour.
(Note: While follow-up studies to Minetti et al. have yielded both supporting and conflicting findings, this treadmill model remains the foundation of commercial algorithms).
GRAPHIC 1
Can you descend as efficiently as an elite mountain runner?
Flaw B: Elevation Telemetry and Smoothing Errors
If the course elevation file is inaccurate, grade-adjusted pacing becomes wildly flawed. Between Digital Elevation Model (DEM) grid resolution, polyline generalisation, and noise filtering, courses planned in standard tools frequently low-ball total ascent and descent. This is a massive issue on undulating, rolling terrain, such as the South West Coast Path in the UK, where standard Garmin course files can under-count total vertical gain by almost 100%. Basing your pacing strategy on an elevation profile missing half the climbing is a guaranteed recipe for a race-ending error.
The two elevation profiles below highlight this exact issue. Anyone who has run the Arc of Attrition, or is familiar with the stretch of coastal path between Land's End and St Ives, knows just how relentless those coastal climbs are. In the first profile, the terrain looks fairly innocuous. The second, high-fidelity profile paints a very different picture, exposing its true saw-tooth nature.
GRAPHIC 2
The exact same route, two wildly different elevation profiles. Which one do you entrust your race strategy to?
Flaw C: The Reverse Logic Fallacy
Fundamentally, PacePro and similar tools require the runner to input a goal time or pace first, then retroactively fit the terrain to it. To my mind, this is the exact opposite of how race planning should be approached. We must start with an individual’s actual sustainable pace and intensity for the given terrain, and from that data, derive the goal time.
What Data to Dirt Provides
The system starts well before race day. There is no "cramming for the test" when it comes to ultras or tough trail races. To execute well, you must be thoroughly prepared, and the exact same rules apply for Data to Dirt. We require clean, reliable data gathered under race-specific conditions during the build phase of your training plan.
Once we have that data, we combine it with high-resolution telemetry extracted from the official race GPX file, mapping your individual intensity zones and effort levels across different gradients. By layering on target fueling and hydration, the system outputs:
Realistic, terrain-adjusted pacing
Accurate, sector-by-sector time splits
Exact carb, fluid, and electrolyte consumption targets between checkpoints
How It Works, In 4 Steps
Step 1: Identifying Goal and Establishing Your N = 1 Energy Curve
We start by identifying your target race and analysing the exact terrain expected on course. We then prescribe specific training and data-gathering sessions to be completed on comparable terrain.
Next, we establish your sustainable intensity for the specific demands of your race, measured via both Heart Rate (quantitative) and Rate of Perceived Exertion (RPE - qualitative). We intentionally blend quantitative and qualitative metrics to combine their relative strengths while mitigating their individual weaknesses.
None of that should be new if you already have an effective training plan in place. What's new is how we'll use the data in the following steps. Once we've extracted that data from TrainingPeaks, we will essentially recreate a version of the Minetti et al. (2002) study, but where:
The only participant is you
It is completed on course-specific, real-world terrain
We build your personalised metabolic energy cost curve across gradients
We perform repeat sessions to adjust for confounding variables such as weather, temperature, sleep, and stress.
For clarity, we are not calculating your energy cost in the same way as the Minetti et al. (2002) study, rather we are measuring your physiological response via heart rate, and perceived work rate via RPE, against gradients.
Step 2: High-Resolution Course Telemetry Extraction
We create a high-resolution dataset for the race course using a trusted GPX file, often the official race GPX. To turn this into a usable format, we run the GPX file through a custom Python script. In less than a second, Python extracts distance and elevation data to generate thousands of micro-sectors, each containing exact distance, vertical gain, and gradient.
Why bother with thousands of micro-sectors? Why not just apply average pacing to broad sectors between Checkpoints A and B?
Because broad-brush averages completely miss the nuances and terrain variations that can send your race sideways.
The UTMB Case Study: Champex-Lac to Trient
Let's look at a real-world example from UTMB. The sector from Champex-Lac to Trient covers roughly 16.5 km with +850m of climbing and -1,050m of descent. It contains a mix of runnable roads, forestry tracks, brutal technical roots, and flowing downhills.
If you were to tackle this sector using standard methods, you might split it into 3 broad chunks:
Champex-Lac to Plan de l'Au: 4.9 km, net downhill ~130m, average gradient ~2.7%
Plan de l'Au to La Giète: 6.6 km, net uphill ~545m, average gradient ~8.3%
La Giète to Trient: 5.0 km, net downhill ~580m, average gradient ~11.6%
There are massive problems with this 3-chunk approach:
Almost none of the course is actually run at those net average gradients!
Distinct elevation swings are completely erased. For example, the sharp drop from Bovine down into La Giète is entirely lost inside the net positive average gradient of that middle chunk.
What if you halved the sections to create 6 chunks? It is slightly better, but you still miss crucial terrain details like the drop to La Giète or how the descent into Trient flattens before steeply dropping down.
What if you halved it again to create 12 chunks (~1.4 km each)? While better, even within the 1.4 km leading up to La Giète, gradients swing wildly from +10% all the way to -45%. Targeting a single fixed pace across that stretch makes no sense.
GRAPHIC 3
With each level of sub-division, each chunk more closely resembles the actual course profile.
What if we could break up the Champex-Lac to Trient sector into 1000 chunks, or micro-sectors, with granular elevation change and gradient, each with a target split? Well we can, and that’s exactly what Python does. Based on the type of terrain, we break the race course down into thousands, or even tens of thousands of micro-sectors.
Step 3: Merging Physiology with Telemetry
We have your specific metabolic energy cost across gradients on race specific terrain.
We now also have a database containing thousands of data points with the exact distance, elevation, and gradients for your race.
Mapping your unique energy cost onto the course telemetry database gives us a highly accurate and specific set of splits for the race, unique to you.
At this stage however, we’re still dealing with splits for tens of thousands of micro-sectors, which is completely unrealistic for anyone to cope with. So, we sum the micro-sectors back into tangible course sectors (e.g., summing all micro-sectors between Plan de l'Au and La Giète). You receive one clear split for that sector, but that split is derived from micro-data and misses nothing.
Step 4: Multi-Variable Strategy Integration
Finally, we layer on operational race-day variables:
Hourly Nutrition and Hydration: Target grams of carbohydrates, fluid millilitres, and electrolytes based on the calculated sector times.
Terrain Technicality Weightings: Applying a weighting alongside gradient to model the different energy demands of a muddy singletrack vs. a smooth section of tarmac.
Fatigue and Pace Strategy: Modelling performance decay over time as a result of muscle fatigue, glycogen depletion, and central nervous system fatigue; or integrating positive/negative split strategies. We can't assume your pace for a given intensity at 10km will be the same at 100km.
Complex Backend, Simple Frontend
How does this actually work in practice? On race day, you need fewer things to juggle, and doing mental maths while running fatigued isn’t at the top of everyone's agenda…
The output of this entire system is a simple, spreadsheet card with basic split times, target intensity windows, and fueling targets. Behind it sit layers of Python telemetry and performance modeling designed to help you race smarter.
Data to Dirt does the heavy lifting behind the scenes. All you need to do is run at the sustainable level of intensity you’ve practiced in training, look after yourself, and execute.
Ready to Eliminate Guesswork on Race Day?
Data to Dirt does not eliminate all risks and variables on race day, but it can take the guesswork out of your strategy.
Whether you are preparing for your first off-road trail race or mapping out a multi-hour mountain ultra, let’s build a data-informed execution strategy unique to your physiological profile.
BOOK A FREE DISCOVERY CALL