I have over 2,400 activities on Strava. Fifteen years of running data. Races in the heat, races in the rain, races where everything clicked, and races where I bonked at mile 20 and limped home wondering why I do this.
When I started building Vici, I assumed the hard part would be generating training plans. It wasn't. The hard part was figuring out what all that data actually means.
The Average Is a Lie
Here's something most running apps get wrong: they average your race results.
Say you've run five half marathons. Your times are 1:22, 1:24, 1:25, 1:38, and 1:23. Four of those are pretty consistent. One is way off. Maybe it was 95 degrees. Maybe you paced it badly. Maybe you were coming back from an injury and shouldn't have raced at all.
If you average those five results, your "fitness level" gets dragged down by that one bad day. And now your training paces are slower than they should be. You're running easy runs that are too easy, tempo runs that aren't challenging enough, and intervals that don't push you where you need to go.
That bad race didn't mean you lost fitness. It meant you had a bad race. There's a massive difference.
Your Ceiling Is Real. Your Floor Is Situational.
This is the insight that changed how we think about running data at Vici: performance is asymmetric.
You can't fake a fast race. If you ran a 1:22 half marathon, your body was genuinely capable of that effort on that day. You can't accidentally outrun your aerobic capacity. That performance is real.
But you can absolutely fake a slow race. Bad weather, bad pacing, bad sleep, bad nutrition, a cold you didn't realize you had, a course that was hillier than expected, or just one of those days where your legs didn't show up. There are a hundred ways to underperform. There's basically no way to overperform.
Your best day reveals your fitness. Your worst day reveals your circumstances.
So when Vici looks at your race history, it doesn't just average everything together. It trusts the ceiling and questions the floor. A result that's close to your best? Full confidence. A result that's way off? The system treats it with healthy skepticism — it probably says more about conditions than about your fitness.
Old Data Fades (As It Should)
There's another problem with running data: you're not the same runner you were three years ago. Maybe you're faster. Maybe you took time off. Maybe you had a kid (guilty) and your training looked very different for a while.
A 5K PR from 2022 shouldn't carry the same weight as a race you ran last month. Recent performances are a much better indicator of where you are right now. But they shouldn't completely erase what came before, either — especially if you're coming back from a break and your recent data is limited.
The right approach is a sliding scale: recent results matter most, older results still contribute but with less influence, and anything from five-plus years ago is interesting history but not useful for setting today's training paces.
Experience Changes the Equation
Here's one more thing that matters: how experienced you are as a racer.
A runner who's been racing for a decade knows how to pace a 10K. If they run a 38-minute 10K, that's almost certainly an accurate representation of their fitness. But a runner who just completed their first race might have gone out too fast, faded badly, or left a lot in the tank because they didn't know what they were capable of.
The same finishing time means different things for different runners. A coaching system that ignores this is going to miscalibrate training paces for newer runners — which is exactly when getting the paces right matters most.
Why This Matters for Your Training
This might sound academic, but it has real consequences for every workout you run.
Your training paces — easy, tempo, interval, everything — flow from a single number: your estimated fitness level. If that number is wrong, every workout is calibrated incorrectly. Too slow, and you're not getting the stimulus you need. Too fast, and you're digging a hole you can't recover from.
Most apps take a simple approach because simple is easier to build. Average the races, set the paces, move on. It works okay for some runners. But for anyone with a complicated history — and that's most of us — it leaves a lot on the table.
We built Vici to be smarter about this because Joe and I lived it. We both have years of messy data: great races, terrible races, long breaks, comebacks, different distances, different conditions. We wanted a coach that could look at all of that and actually understand what it means.
Not just the numbers. The story behind them.