I built a self-hosted MLB analytics tool with pitch-level Statcast data — strike zone heatmaps, spray charts, leaderboards
Wanted something like Baseball Savant I could run myself and tweak however I wanted, so I built one.
It's pulling Statcast data through a dbt-duckdb pipeline, with a React/D3 frontend for the visualizations. What it does:
Pitch-level strike-zone heatmaps per player Spray charts Season rollups and leaderboards All backed by a dbt pipeline so the data modeling is transparent and versioned, not a black box
It's live if you want to poke around: https://mlb.palanbates.com
Built with FastAPI on the backend, DuckDB for storage, dbt for the transforms. Since it's dbt-based, the underlying models are all inspectable if you're curious how a given stat is actually computed — no mystery aggregations.
Would love feedback on what stats or views are missing, especially from anyone who lives in Savant regularly and has opinions about what's missing there.
If you want to join the repo feel free as well to shoot me a message!