PitchMath
A football analytics platform, end to end.
The problem
Football stats are scattered across sites and shallow. I wanted one place that ingests raw match data and turns it into structured, comparable signals across many leagues.
What it does
An extraction pipeline pulls fixtures, team and player stats from API-Football into a single Postgres database. A Streamlit app then renders match analyzers, team form, player stats and a "Team DNA" radar on top of it.
Stack
- Python
- Streamlit
- PostgreSQL
- Docker
- API-Football
- Plotly
My role
- Solo developer
- Pipeline architecture
- Data modeling
- UI
Highlights
One DB, many leagues
An idempotent upsert pipeline loads EPL, UCL, cups and tier-2 leagues into one schema — re-runnable any time, never duplicating.
Postgres + Docker
Ships with a docker-compose Postgres and a SQLite fallback, plus a migration path between the two backends.
Analytics-first UI
Analyzers compute form lines, scoring trends and home/away splits — the stats fans and analysts actually read, not raw dumps.