Let’s be honest: there is nothing quite like the feeling of moving a machine learning model off a messy local Jupyter Notebook and seeing it live, breathing, and clickable on the internet.
A few weeks ago, I decided to tackle a fun challenge: predicting the knockout stages of the upcoming 2026 FIFA World Cup. Instead of just looking at standard text readouts on my terminal, I wanted to build a complete, interactive visual experience that anyone could play with.
Here is the story of how I built the data pipeline, why I chose my model, and the cheeky trick I used to keep the app online 24/7 for free.
I wanted to keep this workspace modular and clean. Instead of one massive script that does everything, I split the workflow across four dedicated stages:
The Ingestion (01_data_alignment.ipynb): Cleaning up raw data and aligning historical match histories.










