Project · 2026
Golf Stats
Turns TrackMan 4 launch monitor exports into one practice focus per session, a plan the next session grades, and an offline dashboard for each player.
- Python
- SQLite
- JavaScript
- SVG

Problem
A TrackMan 4 shows dozens of numbers after every shot, but it doesn’t tell you what to work on next, or whether last week’s practice paid off. I wanted each session to end with one thing to practice, and the next session to grade it.
Approach
A standard-library Python pipeline that runs on local files, with no server or account:
- Parse the TrackMan Performance Studio CSV export. Every column is converted by the export’s own units row, and a file with ambiguous numbers (mixed decimal marks, possible thousands separators) is refused rather than guessed at.
- Store shots in SQLite, deduplicated by file hash and by shot. A re-export with different values is reported as a conflict instead of silently overwriting.
- Analyze each session per player. The focus picker checks strike before direction (low point, smash index, impact spread), then splits the sideways miss into start line and curve and targets whichever is bigger.
- Render a markdown report and a self-contained HTML dashboard (vanilla JavaScript, inline SVG, works offline). Each player gets their own file, so a friend’s dashboard can be shared without anyone else’s shots in it.
Highlights
- The first real export had club data on only 12 of 90 indoor shots. Every check that needs club data now requires enough measured values, and start line falls back to launch direction, which the radar measures on every shot.
- A synthetic export generator reproduces TrackMan’s 61-column format, so the test suite never touches real shot data.
- Each plan records the baseline when it was set, so progress is a number: shots in the target window this session against the count before.