chalk.bar

How chalk.bar thinks

Any tool that predicts your lifting owes you an answer to "how do you know?" Here is ours — what the model learns from the record, what your own meets change, and how we check that the band means what it says.

Any tool that hands a lifter a number owes them an answer to a fair question: how do you know? A projected total is easy to print. Whether you should trust it on the platform, with three attempts and months of prep riding on it, depends entirely on where it came from. So here is where ours comes from.

One number underneath everything

Under every chalk.bar product sits a single quantity per lift: the weight you would make half the time, today, under competition conditions. Not your best ever — your edge. Everything the model does is a way of gathering evidence about where that edge sits and how fast it is moving. Defining the target this precisely matters, because it makes every scrap of data interpretable: a made attempt says the edge is probably above that weight, a missed attempt says it is probably below, and a lifetime PB from three seasons ago says almost nothing at all.

The starting point is the record

Before the model knows anything about you, it knows the sport. OpenPowerlifting's public-domain archive — millions of results across federations, decades, ages and body types — teaches it how strength runs with age, bodyweight, sex, equipment and competitive experience; how much lifters vary around those patterns; how performance moves across a career; how much a good or bad day swings a total; and what happens when lifters attempt weights near their edge. That fitted surface is the same one the free standing tool reads. For prediction it plays a different role: it is the starting point — the honest guess for a lifter the model has never met, carried with the wide uncertainty band that honesty requires.

Your data does the updating

Then your evidence arrives, and the population steps back as you step forward. A lifter with one meet gets an estimate that leans mostly on people like them; a lifter with a dozen meets is governed almost entirely by their own record. That sliding balance isn't a design flourish — it is the standard Bayesian answer to thin data, and it is why the model can serve a first-timer and a ten-year competitor without pretending either is someone else.

Two details of the updating do work that no lookup table can. Misses count: a failed third attempt locates your edge in a way a made opener never could, so the model reads your failures rather than politely ignoring them. And gym numbers are translated, not trusted: gym lifts usually read high — softer depth, no commands, a friendly bar — so the model learns your gym-to-platform conversion by watching how your training numbers cash out on the platform, instead of applying a folklore percentage.

400450500550estimated total, kg — 90% band (illustration)population only: 480 kg, band ±60population onlyafter 1 meet: 500 kg, band ±28after 1 meetafter 2 meets: 505 kg, band ±20after 2 meetsafter 4 meets: 509 kg, band ±14after 4 meetsafter 8 meets: 512 kg, band ±10after 8 meets
An illustration of the shape — not a real lifter's numbers. The population starting point is wide; each meet narrows the band and moves the centre toward the lifter's own level.

The band is the product

Everything above is carried as a distribution, never a single number, and the attempt recommendations are chosen against it: an opener you make on a bad day, a third that trades make probability against the total it buys. On meet day the logic tightens further — how your squat and bench actually went says something about what you have in the deadlift today, because good and bad days are correlated across lifts, and the model conditions on the day as it unfolds.

How we check it

Trust should not require reading anyone's equations, so the checks are the kind you can hold us to from the outside. We backtest: hide a lifter's most recent meet, predict it from what came before, and score the prediction — across thousands of lifters, not cherry-picked ones. We check calibration: when the model says 90%, the thing should happen nine times in ten, and where the bands run hot or cold we fix the model rather than the story. And we replay decisions: given what the model believed before a real meet, would its attempt calls have beaten the ones actually taken?

What we don't publish is the recipe — the exact curves, the fitted constants, the engineering that makes the update fast enough to serve. Two things make that reasonable rather than convenient. The claims that matter are checkable from the outside, because calibration is a property of published predictions, not of hidden code. And where the analysis is about the sport rather than the product — the GoodLift series — the code and data choices ship in the open, on the same public-domain record anyone can download.

There is no default athlete anywhere in this. The record sets the starting point, your lifting does the updating, and the band tells you honestly how far the two have converged — which is the promise the rest of chalk.bar is built to keep.

Data: OpenPowerlifting (public domain) · more writing · privacy