How scoring works
Six raw numbers in. One score and a six-axis profile out. Here is everything the engine does between those two points - no marketing, just the math.
Step 1 · The six stations
One station per axis. No substitutions.Every combine day tests the same six things, in the same units. Two stations are scored relative to your bodyweight; the rest are absolute. Three reward higher numbers, three reward lower numbers - the engine handles the orientation for you.
Step 2 · From a raw number to a percentile
A 2.9s sprint means nothing in isolation. The engine asks: where does this sit compared to other adults like you? Three sub-steps run for every station:
Find your cohort
Each athlete sits in a cohort defined by age band × sex. Bands are 18–29, 30–39, 40–49, 50–59, 60+. You are compared only to people in your cohort - not to a 22-year-old when you are 47.
Blend the norm
On day one we use a seeded population distribution. As real results land, we blend them in proportional to sample size. Once your cohort has logged 40+ results for a station, the seed is dropped and the curve is fully empirical.
Read off the percentile
Your raw value is located on that blended curve via linear interpolation between known points. A faster sprint or a heavier lift sits further up the distribution. Lower-better stations are inverted at the end - fast time becomes high percentile.
Step 3 · From six axes to one score
Once every station has a percentile, the engine combines them into a single composite. Current scoring config v1 weights all six axes equally - none is favoured over the others.
The math
overall_pct = Σ axis_pct[a] × weight[a] score = round(overall_pct × 10)
Output is an integer from 0 to 1000. The same percentile that drives your score is also what you see plotted on the radar.
A worked example
Step 4 · Two stations are bodyweight-relative
Trap-bar deadlift and grip dynamometer are normalised by your bodyweight on the day. A 200 kg deadlift at 120 kg bodyweight (1.67×) and a 150 kg deadlift at 80 kg bodyweight (1.88×) land in different places on the curve. This is why bodyweight is captured at check-in.
Frozen per season
When a season opens, the active scoring config - weights, age-band definitions, blend threshold - is locked. Every score published in that season is stamped with that config version. We can recompute against improved norms, but your published number does not drift under you.
Every event makes the next one sharper
The blended curve is recomputed continuously as new results land. The platform's own results gradually replace the seed, so your percentile becomes more accurate the more athletes compete. The leaderboard database is the moat.
Want to see your number?
The estimator runs the same engine with no persistence - your inputs are not saved.
Estimate your score →