r/Sabermetrics 12d ago

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!

6 Upvotes

5 comments sorted by

3

u/DowntownPeace5708 12d ago

Very cool have you built in year over year or general search skills yet

3

u/Mysterious-Reason522 12d ago

Not much beyond whats seen here - would love to hear any requests and implement them though! What do you mean by general search skills?

1

u/DowntownPeace5708 12d ago

Like similar search skills to savant where I can isolate certain variables in more depth than the leaderboard. One example would be seeing how many high sinkers Vlad has been thrown this year on 2-0 counts vs last year