Skip to main content
← All projects

PitchMath

A football analytics platform, end to end.

  • Solo developer
  • Active
  • 2025

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

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.

PitchMath architecture — API-Football to Python extractor to Postgres to Streamlit
How it works — API-Football → extractor → Postgres → Streamlit
PitchMath match stats — Liverpool vs Brentford xG, shots and possession comparison
Match stats — full head-to-head comparison
PitchMath Team Analyzer showing the Team DNA radar for Arsenal
Team Analyzer — Team DNA radar