Work / 06
Sports data · Gravity racing
OnSprint
Race intelligence from timing PDFs
- Client
- OnSprint (our own product)
- Role
- Founder: product, design and engineering

Official race timing is published as PDFs. OnSprint parses them into rider-level sector data and makes it comparable across racers, races and venues.
Context
In downhill and enduro racing, split times decide everything, but they are locked in ChronoRace and UCI result PDFs. Comparing a rider’s sectors across a season means copying numbers by hand.
What we built
- A parsing pipeline that runs whenever a results PDF lands in storage, built on Firebase Functions
- Racers, Races, Venues and Compare views for sector-by-sector analysis
- A corpus of 1,607 source events, 16,595 runs, 62,757 sectors and 3,354 riders
Why it matters
The hard part was not the interface. It was making messy, inconsistent source documents reliable enough to compare. That is the same problem most AI-era products face: the model or the UI is the easy 20%, the data plumbing is the rest.

Next case study
ChronoCultRace timing without the timing truck →Have a product at a similar stage?
Book a call