Inspiration

A lot of sports technology focuses on whether an athlete has "good" or "bad" form, but that felt like the wrong question to us. Everyone moves differently, and even an athlete with consistent technique can start moving differently as they get tired.

That led to the main idea behind BreakingPoint:

Instead of comparing you to the perfect athlete, what if we compared you to yourself?

BreakingPoint learns how an athlete moves while they are fresh and detects when their movement begins to consistently drift away from their own baseline.

What it does

BreakingPoint uses computer vision through a normal webcam to track an athlete's movement and extract features such as joint range of motion, movement speed, trunk position, rep timing, landing depth, and asymmetry.

After a short calibration period, the system builds a personalized baseline. Every later repetition is compared against that baseline, producing a movement-drift score.

Instead of flagging one random bad rep, BreakingPoint uses sequential change detection to determine when the change becomes persistent.

That moment is the athlete's BreakingPoint.

The platform is built around reusable movement protocols instead of one specific exercise. Squats, jumps, and lunges can be mapped across sports like soccer, basketball, volleyball, pickleball, tennis, badminton, martial arts, and strength training.

The goal is not to diagnose injuries. BreakingPoint is designed to identify meaningful changes in how an athlete is moving before those changes are obvious.

How we built it

For live movement tracking, we use MediaPipe Pose Landmarker to extract body landmarks directly in the browser.

From those landmarks, we calculate biomechanical features for each repetition and standardize them relative to the athlete's personal baseline. Those deviations are combined into a movement-drift score, which is then passed through an EWMA-based sequential change detector to determine whether the athlete has entered a persistently different movement state.

We also built BreakingPoint Lab, a Python Monte Carlo simulation and validation pipeline that we ran on UF's HiPerGator supercomputer.

Instead of manually choosing detector thresholds, we simulated 100,000 individualized athlete sessions containing normal movement, isolated bad reps, gradual fatigue drift, sudden changes, camera noise, missing landmarks, high natural variability, and recovery.

Across those sessions, we evaluated 25,280 detector configurations. Half of the simulated sessions were used to select the detector, while the other half were held out for evaluation.

On the held-out simulations, the final detector achieved a 2.2% false-positive rate and detected 89.6% of simulated movement-drift events, with a median detection delay of 4 reps.

One of the most interesting results was the value of personalization. Using each athlete's own baseline produced a 2.2% false-positive rate, compared with 17.8% using population-level norms.

The live TypeScript application and the Python validation pipeline use matching detector logic, so the parameters tested on HiPerGator are the same ones used in the actual app.

Challenges

One of the biggest challenges was separating real movement drift from noise.

A single awkward repetition should not trigger a warning, but if the detector waits too long, it becomes less useful. That tradeoff pushed us away from simple one-rep thresholds and toward sequential change detection.

Computer vision also introduces problems like landmark jitter, camera positioning, occlusion, and inconsistent tracking quality. We handled this with landmark smoothing, confidence filtering, missing-feature handling, and personalized baselines instead of pretending a normal webcam gives laboratory-grade biomechanics.

Another challenge was making the project generalizable without building a completely different model for every sport. We solved that by organizing BreakingPoint around reusable movement primitives such as squats, jumps, and lunges. Different sports can share the same underlying movement engine while emphasizing different metrics.

We also had to make sure the detector used in the browser behaved the same as the detector tested on HiPerGator, so we built cross-language parity tests between the TypeScript and Python implementations.

What we learned

The biggest thing we learned was how valuable personalization can be.

BreakingPoint does not need to know what the "perfect" squat, jump, or lunge looks like. It needs to understand how you normally move and recognize when that pattern begins to change.

We also learned how ideas from seemingly unrelated areas, computer vision, biomechanics, statistical process control, Monte Carlo simulation, and quantitative anomaly detection, can come together around the same underlying problem:

detecting when a system stops behaving like itself.

The next step would be validating the system on real longitudinal athlete data and expanding the movement protocol library across more sports.

Built With

Share this project:

Updates

Submission history