MuseMuse
Follow Through

Follow Through

Shot-form analysis

Your shot,
graded against the pros.

Record the shot. Follow Through extracts the shooter's pose, aligns every frame to a pro reference, and returns a 0-99 similarity score plus the three mechanics to fix first. A coach can read it in thirty seconds.

Reference -- Shaquille O'Neal

Target -- Steve Nash

Pipeline

How it works.

01

Pose extraction

MediaPipe lands 18 joints per frame. Savitzky-Golay smooths the jitter without flattening the snap at release.

02

Normalisation

Centre on the hip midpoint; scale by the shoulder-to-hip distance. Camera angle and body size wash out, leaving only form.

03

Deviation + scoring

Per-joint Euclidean distance to the reference, resampled to a common 60-frame axis. Mean deviation collapses into one number you can say out loud.

The product layer

A score is the headline.
Advice is what you do with it.

The score answers how close am I? The coaching layer answers what do I change?For the three most-deviated joints, the system writes specific cues in plain English: vertical offsets ("elbow drops 8% lower than Nash at release"), lateral offsets ("guide-hand wrist drifts across the body"), and timing deltas. The whole analysis layer is pure functions -- no UI, no framework, ready to ship on a phone.

Joints tracked
18
Score range
0 -- 99
Unit tests on analysis
10

Example output -- Shaq vs. Nash

What the system actually returns.

Similarity score

50/ 99

Noticeably different mechanics

Mean per-joint deviation of 0.251 across 18 shared joints over a 60-frame aligned window.

Top-3 coaching cues

  1. 01

    Guide-hand wrist

    Sits lower than Nash’s. Lift it higher through the shot.

  2. 02

    Shooting wrist

    Tucked too close vs. Nash’s. Let it extend outward naturally.

  3. 03

    Right heel

    Tucked too close vs. Nash’s. Let the base open up on the release.

Per-joint deviation

Normalised Euclidean deviation per joint, descending. Top contributors drive the advice.

Left wrist (guide)
0.467
Right wrist (shooting)
0.432
Right heel
0.351
Left heel
0.326
Left foot index
0.316
Right foot index
0.310
Left elbow
0.300
Right ankle
0.295

Engineering note

Training data was the hardest part. I got around it with NBA 2K.

Labelled pose data from real basketball film is expensive and scarce. Before MediaPipe made the custom-trained pose step unnecessary in production, I generated synthetic training data from NBA 2K -- a game engine that renders realistic shooting mechanics on demand, with programmatic control over camera, lighting, and player. Good enough as a proof of concept, good enough to test on, and a pattern that still works wherever training data is the bottleneck. (The production system now leans on MediaPipe's pretrained landmarks.)

Under the hood

Stack.