The first entry in the project's history is dated 24 June 2026 and says exactly what it is: "Initial commit - Football Prediction System".
A World Cup was being played at the time. That matters later.
Phase one was modest on paper. A database, a connection to a football data provider, a job that pulled fixtures each morning and results after full time, for 13 leagues. The data plan was the free one: 100 requests a day. The whole thing lived in a single SQLite file on a laptop.
It lasted about an afternoon.
Before the end of that first day the database had moved to a hosted PostgreSQL service, the app had a login, and almost every commit after that was a fix - the small, humbling differences between one database and another. `GROUP_CONCAT` does not exist in Postgres. Neither does `sqlite_master`. By the time the first real page loaded in the cloud, the project had learned its first lesson: things that work on your own machine are a hypothesis.
Day two brought the machinery everything since has run on. A scheduler on its own server to fetch, predict and settle without anyone touching it. A dashboard on another. Automatic bet settlement. A Top 5 picks page and - the same day - tracking of how often those Top 5 picks were actually right. Twenty-six commits.
Day three: thirty-three. Bookmaker odds. Form guides, head-to-head records, league tables, an injury tracker. International team ratings built from World Cup qualifying and the tournament itself. An ROI tracker. And an AI assistant tab, which took six attempts in one afternoon to connect to the model it was meant to use - wrong model name, wrong API version, wrong free tier, wrong prompt format, and then right. Anyone who has built software will recognise that afternoon.
Day four: a live scores page that was burning 4,700 data requests a day until it was switched to a shared cache, and a tab called Platinum - the first time the predictions were blended. Five classic models, combined:
- Dixon-Coles - a 1997 goals model, built to fix the way simpler models get low-scoring games wrong.
- Poisson - goals treated as random events around each team's average.
- Elo - the chess rating, adapted for football: win and your rating rises, lose and it falls, by more when it's a surprise.
- xG - expected goals: the quality of the chances a team creates.
- Form - recent results.
Eighty-two commits in four days. One person.
How it was being built
Two things are worth being honest about from that first week.
The first is how the code was being made. Andrew was building in a chat window with Claude: describing what he wanted, getting code back, copying it out and saving it into files by hand. It worked - eighty-two commits say it worked - but it was fragile. Notepad quietly corrupted anything that wasn't plain text; a single dash character was enough to break a file. More than once a file was saved into the wrong folder, or not saved at all, and the fix was wrong because the file it was fixing wasn't the file that was running.
The project still carries the scars as working rules: every new file is written in plain ASCII, and nobody believes a change has landed until they've checked that it did. At the end of those chat sessions, a handover document was written - what the project is, why it's built the way it is, which mistakes not to repeat - so that the next conversation could start where the last one stopped. That document matters in the next chapter.
The second is what the project was for. The plan at the time, written in the project's own notes, was a commercial prediction platform with paid VIP subscribers, launching in mid-2027.
Keep that plan in mind. It does not survive the data.
The lab book
- Tested: the free data plan, 100 requests a day. Outgrown within weeks - the project moved to a paid plan with 7,500 a day.
- Tested: an AI assistant tab. Six fixes to connect it. It stayed, admin-only.
- Didn't work: the live scores page as first built - far too hungry for data. Cached, then removed altogether a month later.
- Didn't work: moving code by copy and paste. The corrupted files and wrong folders became the project's first working rules.
- Still testing: whether blending models beats any single one of them. That question is still open.
Next stop: a model of his own.