A tactical intelligence system for semi-professional football teams, combining match data and machine learning to generate data-driven insights and decision support.
gafferOSv2 uses historical match data (StatsBomb) and engineered performance metrics to:
- Predict match outcomes
- Analyze team strengths (attack vs defense dynamics)
- Model team form and matchup differences
- Lay the foundation for tactical decision-making (e.g., formation adjustments)
- PostgreSQL database and REST API implemented
- 1100+ matches processed (La Liga, UCL, Premier League)
- 30+ engineered features from match data
- Rolling form and team-vs-opponent differential features
- Exploratory Data Analysis completed
- Initial XGBoost model trained (WIP, ~74% accuracy)
-
Match outcomes are primarily driven by:
- Offensive output
- Defensive solidity
- Shot quality
-
Home advantage has a measurable impact
-
Several features are highly correlated, requiring pruning
-
Teams exhibit strong tactical identity:
- ~63% of matches use their most common formation
Rather than asking:
βWhich formation is best?β
gafferOS aims to answer:
βWhat is the best tactical adjustment for this team in this situation?β
This is achieved by:
- Learning team tendencies (form + formation identity)
- Comparing realistic tactical variations
- Evaluating outcomes using the trained model
Python β’ FastAPI β’ PostgreSQL β’ XGBoost
Data β Feature Engineering β ML Model β API β Tactical Insights
backend/
βββ api/ # REST endpoints
βββ core/ # business logic
βββ db/ # database models
βββ ml/ # data + training pipeline
βββ main.py
To make practical tactical analytics accessible to teams without elite-level resources.
Active development β evolving from prediction system to tactical decision engine