Athlete Performance Monitor
CMJ · IMTP · Neuromuscular alert system
Synthetic dataset of ~6,500 measurements generated in Python — distributions calibrated against published sport-science norms. On top: an alert system with dynamic percentile thresholds (p25/p75) and longitudinal tracking with a 5-evaluation moving average.
Why synthetic data? Real athlete data contains sensitive health information. Instead of leaving it out or oversimplifying it, I generated fictitious data with the same structure and statistical distributions — IDs hashed at the source, no real name ever stored. The methodology is identical to the real system I built at Ivolution.
150
generated athletes
7
sports
6,500+
measurements
12
months of data
Pipeline
From generation to production alerts.
generate_athlete_dataset.py
Faker · numpy · hashlib — 150 athletes, 6,500+ measurements, 0 PII
measurements.csv / athletes.csv
Clean output · hashed athlete_id · ready to load
mart_fatigue_alerts.sql
Dynamic p25/p75 thresholds · SUPERCOMPENSATION / ATTENTION / FATIGUED
mart_athlete_trend.sql
5-evaluation moving average · % change from baseline
Monitoring dashboard
Real-time neuromuscular status · per-athlete and per-sport views
Alert logic
Dynamic 90-day window per athlete and exercise type.
metric ≥ p75
The athlete is above their usual range. Peak performance or positive overreaching.
p25 < metric < p75
Within the normal range. Keep an eye on the trend.
metric ≤ p25
Dropped below the lower quartile. Review training load.
Code
Dataset generation and the two main SQL models.