File No. VI · FIFA World Cup 2026 Prediction Hub
Case Closed

The Case of the Foretold Final

RoleSolo Build
Timeframe2026
InstrumentsPython · Flask · Scikit-learn · XGBoost
63% 71% 82% EXHIBIT F — MATCH PROBABILITY READOUT

The Complaint

What Brought Me to the Case

Football punditry runs almost entirely on gut feeling. Ask three pundits who wins a match, who's likely to score, or who takes a penalty shootout, and you get three confident, contradictory answers with nothing behind them.

The case called for something pundits don't have: a data-backed forecast, built from scratch, that could actually be checked against reality instead of argued about at a pub.

The Investigation

How the Case Was Solved

I built three machine learning models entirely from scratch, trained and validated in Google Colab: a Logistic Regression match-outcome predictor (~63% accuracy), an XGBoost Expected Goals (xG) analyzer (~71% accuracy, 0.784 AUC), and a dual-XGBoost penalty shootout predictor (~82% accuracy, 0.85 AUC).

Three separate models solve three separate questions, so I unified all of them into a single Flask application with namespaced API routes — one system a fan could actually use, rather than three disconnected notebooks.

The investigation needed a scene worth visiting, so I built a stadium-themed interactive frontend around the models and deployed the full system to production on Render.

  • Logistic Regression match-outcome predictor — ~63% accuracy
  • XGBoost Expected Goals (xG) analyzer — ~71% accuracy, 0.784 AUC
  • Dual-XGBoost penalty shootout predictor — ~82% accuracy, 0.85 AUC
  • Unified Flask app with namespaced routes, stadium-themed UI, deployed on Render

The Verdict

Closing the File

Three from-scratch ML models — for match outcomes, expected goals, and penalty shootouts — unified into one stadium-themed prediction hub, live in production, replacing pub arguments with evidence.