Search "AI tennis stroke quality scoring tool" and you get a wall of apps promising a number for your forehand. Almost none of them explain what the number is, how it is computed, or when to ignore it. This post does. I'm Akshay Sarode, founder of AceSense, so treat the AceSense-specific parts as the view of someone who built one of these tools. Everything about the underlying method is true of any pose-based scorer, not just ours, and I've marked the places where I'm describing our implementation specifically.
This is written for the NTRP 3.0–4.5 player deciding whether a stroke-quality score is worth trusting, and for coaches deciding whether to put one in front of a student.
Bottom line up front
- A stroke-quality score measures form, not outcome. It scores how your swing looks against a technical baseline. It does not know whether the ball went in.
- A single scored stroke is not a coaching diagnosis. It is one noisy measurement. The signal lives in the per-match average and the trend across weeks, not in any one shot.
- Pose-based scoring works by extracting a body skeleton per frame, measuring joint angles and timing around contact, and comparing those to a reference distribution of well-executed shots. There is no magic. There is geometry.
- When you evaluate any tool that claims stroke quality, ask three questions: is the methodology published, is per-shot confidence shown, and are the occlusion failure modes documented. If the answer to all three is no, you are looking at a number with no audit trail.
- AceSense scores every shot 0–100, split into preparation, contact, and follow-through, and publishes the accuracy methodology at /accuracy. The full feature detail is at /features/stroke-quality.
What a stroke-quality score actually measures
Start with the thing most tools blur: a stroke-quality score is a measurement of form, and form is not the same as outcome.
Outcome is whether the ball landed in, how deep, how fast, with what spin. Form is what your body did to produce the swing: how far you rotated your shoulders, where you met the ball relative to your front foot, whether your follow-through finished or got cut short. A stroke-quality scorer looks only at the second thing. It watches your body, not the scoreboard.
That distinction matters because a clean-looking forehand can miss and an ugly one can win the point. The score is telling you something narrower and more useful than "was that a good shot": it is telling you how close the mechanics were to a broad reference of well-executed technique. On AceSense the reference is an aggregate of professionally annotated ATP/WTA footage, weighted toward the most stable mainstream patterns, not a single pro you are being asked to copy.
So a 65 forehand is not a "bad" forehand. It is a forehand with identifiable departures from the canonical pose. The number is a description, not a verdict.
How pose-estimation scoring works, at a reader level
Every credible stroke-quality tool is built on pose estimation. Here is the whole idea without the jargon.
A pose model looks at each video frame and returns the position of your body joints: shoulders, elbows, wrists, hips, knees, ankles. AceSense uses MediaPipe, Google's open-source pose model, which returns 33 keypoints per frame and is accurate to a few pixels on ordinary 1080p phone video. That per-frame skeleton is the raw material.
For one shot, the tool takes the frames around contact, typically 8–15 of them spanning preparation, the contact moment, and the follow-through. From those skeletons it computes geometric features: joint angles, the order and timing of the kinetic chain (do the hips fire before the shoulders before the arm), and where the contact point sits relative to your body. Each of those features gets compared to a reference distribution built from well-executed shots of the same type. Being at the 75th percentile of the reference for, say, trunk rotation becomes a component score. The component scores combine into the 0–100 you see.
That is the entire trick. There is no model watching you play and forming an opinion. There is a skeleton, some angles, and a comparison to a distribution. The five-stage pipeline that feeds this, ball tracking, court detection, player pose, shot classification, then scoring, is walked through in how AI tennis shot detection works.
What the components mean
AceSense breaks each score into three phases, because "your forehand is a 74" is useless and "your contact is the weak part" is not.
- Preparation: racket take-back, shoulder and hip rotation, weight transfer before the swing.
- Contact: where you meet the ball relative to your body, contact height, an estimate of racket-face angle.
- Follow-through: the finishing arc, whether rotation completed, and balance recovery.
The exact sub-features shift by shot type. A serve score weighs toss-height variance, contact-point variance, and leg drive; a volley score weighs ready-position posture and how far in front of the body you make contact. The point of the split is that the useful information is almost never the aggregate. It is which phase is dragging the aggregate down.
What it can't do
Be honest about the ceiling.
- It does not know the outcome. Form only. If you want to know where your shots landed, that is the court heatmap and bounce data, a separate part of the report.
- A single score is not a diagnosis. Per-shot scores carry real noise, roughly ±10 points around the true value of your form on that shot, because the model aggregates across a handful of frames and because your body genuinely varies shot to shot. One 68 forehand means almost nothing.
- It is not personalised to your own best. The score compares you to a pro baseline, not to your form last month. A "vs your previous self" view is something we're still building; today the number is absolute.
- It is not a verdict on whether you can play. A 60 forehand can beat a 75 forehand when the rest of the game is better. The score is one input, not a ranking.
The cleanest way to think about it: the score tells you what the form looks like. A coach tells you what to do about it. The two are not interchangeable.
What to look for in any stroke-quality tool
If you are shopping, most of the marketing will sound identical. Three questions separate a real tool from a number generator.
1. Is the methodology published? You should be able to read how the score is computed and how accurate it is against ground truth, before you pay. If a tool describes accuracy only with adjectives like "professional-grade", it is telling you nothing measurable. AceSense publishes its benchmarks and how the test set was built at /accuracy. It is fair to ask any competitor for the same. As of today, no competitor we know of publishes equivalent stroke-quality benchmarks.
2. Is per-shot confidence shown? A stroke-quality score with no confidence attached invites you to over-read a single number. A tool that is being honest downweights low-confidence shots and tells you when the sample is too small. AceSense flags low-confidence frames and puts a low-confidence marker on the headline when the shot count is thin.
3. Are occlusion failure modes documented? This is the tell. Pose estimation degrades when the player is partly blocked: a net post across the torso, a crossing player in doubles, an extreme camera angle. A serious tool says so and excludes those shots. In the AceSense sample report, you can see net exchanges explicitly dropped from stroke-quality scoring because the player was occluded, listed under Honest Gaps rather than hidden. A tool that scores every shot with equal confidence, including the ones where it could barely see the player, is guessing and not telling you.
How AceSense implements it
For completeness, here is the AceSense-specific version, and this is the part where I'm the biased source.
Every shot detected by shot detection gets MediaPipe pose run across its preparation, contact, and follow-through frames. Geometric features come out, get scored against the ATP/WTA reference distribution, and produce a 0–100 per component plus an aggregate. The per-match summary flags the components that cluster low across the match, and the report's "work on this" section turns the weakest component into one concrete sentence, for example that your forehand contact point sits consistently behind your front foot. The full pipeline is at /how-it-works, and the feature page is /features/stroke-quality.
It is on every tier, including the free one. Free gives you three analyses a month, rate-limited rather than feature-limited, which is enough to test whether the scores match what you and your coach already believe about your strokes. Full pricing is at /pricing.
Where it fails, honestly
Three failure modes worth knowing before you trust a number:
- Non-classical technique. The baseline is broad pro form, and "broad" is not "everyone". A deliberately extreme grip or stance will score lower on the components you have intentionally moved away from. That is a measurement, not a mistake. Read the breakdown, override the deliberate choices, use the rest.
- Heavy occlusion. A match where the player is consistently blocked produces noisier scores. AceSense downweights those shots, but garbage in still widens the error.
- Too few shots. Per-shot scores are noisy; per-match averages stabilise around 50+ shots. A 30-shot practice clip gives a shakier summary than a full match, and the report says so.
Smaller ones: very tall or very short players sit slightly outside the model's assumed body proportions, and unusual kit (long skirts, heavy jackets) makes the segmentation work harder.
How a 3.5 player should actually use the scores
This is the part that decides whether the tool helps you or just entertains you.
Ignore single shots. The noise on one score is large enough that reacting to a single 62 forehand is reacting to randomness. Look at the per-match aggregate for each shot type, and the component that is lowest within it.
Track the trend, not the level. The absolute number matters less than its direction over four to six weeks. If your forehand contact component climbs from 66 to 72 across a month of working on a specific cue, that is the tool doing its job. A single week's number is a data point; the slope is the signal.
Turn one component into one practice focus. If contact is your weakest component across the match, that is the week's work, not all three phases at once. The report is deliberately built to surface one headline fix, not ten. Pair it with a coach for the highest-value loop; the score finds the leak, a coach tells you the drill.
Re-check on the same kind of footage. Compare match to match, filmed the same way. A sunny outdoor hard court and a dim indoor hall are not the same input, and mixing them muddies the trend.
Used this way, a stroke-quality score stops being a vanity number and becomes what it should be: a weekly instrument for spotting which mechanical component is quietly costing you, before it becomes a habit you cannot see.
Read next: Stroke quality feature detail · How AI tennis shot detection works · Accuracy methodology · How AceSense works · Sample post-match report.