← All writing

I made Claude predict the 2026 World Cup winner

4 min Quick Take

Opus 4.8 came out a couple of weeks ago and I still had not built anything real with it. Every release I promise myself I will take it for a proper run, and then I just use it to answer emails and tidy up code I already understand. Meanwhile the World Cup is almost here and my friends have not shut up for a month about who they are putting money on. Spain because of the draw, Brazil because it is Brazil, France because someone read one preview. None of it based on anything except who they want to win.

So I did the obvious thing and killed two birds with one stone. I would take the newest Claude for its first World Cup, and finally get an answer to the argument my group chat refuses to drop.

Here is the part people get wrong, so let me be straight about it. I did not ask Claude who wins the World Cup. That is just a confident guess in a nicer voice, and it is the same rubbish every account online is already selling you. What I did was get it to build me a proper machine-learning model, the kind a football analyst would actually use, and then let the model do the predicting. Think of Claude as the engineer and the model as the thing that holds the opinion.

And it turns out the new Claude is very good at being the engineer. I described what I wanted in plain English and it wrote almost all of it, the maths, the simulator and the website. The model learns from around forty-nine thousand real international matches going back to the 1870s, works out how strong every team is, then plays the entire tournament a hundred thousand times over and counts how often each side ends up lifting the trophy. That is the part no human does by hand, and it runs in about two seconds.

Two honest lines on Opus 4.8 itself, since that was half the reason I did this. As a builder it is genuinely good now, it put the whole thing together with me steering rather than babysitting, which a year ago I would have called a lie. It still needs someone who already knows what good looks like, because aim it at the wrong target and it will build you the wrong thing very convincingly.

So here is the result my friends were after. The model’s favourite is Argentina at around fifteen percent, with Spain just behind and a long tail of everyone else on smaller numbers. The single number is the least interesting thing in there though, so let me show you around what it actually built.

The front page is the title race, all forty-eight teams ranked by their shot at the trophy. Drop into any group and you get each side’s chance of going through, Group J being one of the tightest in the draw, with Argentina almost a lock and Algeria and Austria all but tied for the places behind. There is a match center too, all hundred and four games laid out by date from the opener to the final at MetLife, and as real results come in they get pinned into the simulation so the whole forecast re-conditions on what has actually happened.

Open any single game and you get the chance of a home win, a draw or an away win, with expected goals, which is where the genuine coin-flips show up.

The predictor's fixtures view, a single match showing home win, draw and away win probabilities with expected goals
Every match gets its own odds and expected goals, from the live predictor. The near three-way splits are the games the whole tournament turns on.

The part I would go to first is the bracket. It shows the most likely team in every knockout slot, and you can pin a what-if, your team reaching the final say, then watch every number on the page recompute using only the simulations where that came true.

The predictor's projected knockout bracket, the most likely team in each slot all the way to the final
The projected bracket, the most likely team in every slot, from the live predictor. Pin a what-if and the whole tree recomputes from only the simulations where it happened.

Which brings me to the thing nobody betting in that group chat wants to hear.

A real predictor does not tell you who wins. It tells you how sure you are allowed to be.

Argentina at fifteen percent means Argentina probably does not win. Fifteen out of a hundred makes them the favourite, and the favourite still loses far more often than it wins. If they go out in the quarters the model was not wrong, that is simply what fifteen percent looks like most of the time. One tournament can never prove a thing like this right or wrong, the same way one coin flip cannot prove a coin is fair. The honest way to judge it is not July, it is the hundreds of past matches it never trained on, where it calls the right result about sixty percent of the time and beats every simpler method going. It is built for curiosity rather than betting advice, which feels worth saying out loud given how this started.

So go and pick it apart instead of taking my word for it. It is online and free, with nothing to install, and the code is public, which means the part I am proudest of, the model, is the part you get to prove me wrong on. Swap in your own data, argue with how it rates a team, build a version that beats it.

You can try the predictor here, all of it precomputed so nothing runs on your phone. The code is on GitHub if you want to fork it or tell me exactly where the model is wrong.