Every sports analysis app arrives at the same fork. You have video of a person doing a thing. You have a model that can say something about it. What do you put on the screen?
The default answer is a score. Form: 7.4 out of 10. It is the easiest thing to build, it looks quantitative, it makes a satisfying number to put in a screenshot, and it gives you something to chart over time. We do not ship it, in either sports product, on purpose.
What a score actually communicates
Put yourself on the receiving end. You filmed a throw, you waited, and the app says 6.8. Now what?
You cannot practice a 6.8. You cannot walk onto the court on Saturday and do anything differently because of a 6.8. The number has told you that you are mediocre, which you suspected, and has given you nothing to act on. It is a judgment delivered with the confidence of a measurement.
It is also, quietly, not a measurement. Scored against what? There is no scale on which a recreational player's backhand is objectively a 6.8. The number is a model's vibe, rounded to one decimal place so it feels rigorous.
What we return instead
Three things, in this order, every time:
- The pose overlay, drawn on the user's own footage. Not a diagram, not an idealized skeleton next to their video. The tracked joints, on their body, in their clip, so they can see the moment the mechanic goes wrong.
- The named fault, in plain language. "Running through the shot, no front-side brace" beats "suboptimal kinetic chain sequencing" every time, and both beat a number.
- The correction. Specific enough to attempt at the next session: plant the front foot, keep the back toe down through contact, let the hips rotate around the braced leg.
That output is harder to build than a score. It requires the pipeline to actually locate a mechanical problem rather than gesture at overall quality, and it requires the language layer to produce a structured, reliable result rather than a paragraph of encouragement. It is worth it, because it is the only version a user can act on.
The retention argument, since someone always asks
Scores are defended on engagement grounds. Users chase the number, come back to improve it, and the chart goes up and to the right.
The problem is what happens in month two. The number moves for reasons the user cannot attribute, because a small change in camera angle moves it as much as a real change in mechanics. Once someone notices that the score is noisy, the whole product loses credibility at once, including the parts that were sound.
A named fault fails more gracefully. If we identify the wrong fault, the user disagrees with a specific claim and we can be wrong about one thing. If a score is wrong, we were wrong about them.
A number tells a player they were bad. A named fault and a drill tells them what to do on the next session.