Agentic AI · Full-Stack · Claude

My bracket called both finalists.
I built the engine behind it.

All four semifinalists and both finalists — Spain and Argentina — called before the knockouts began; the champion pick fell one extra-time goal short. The Bracket Analyst pairs Elo-grounded odds with an upset-watch engine that calculates how bold a bracket should be for your pool size and risk appetite. I built it, then trusted it with my own bracket — graded in full below.

Final grade · World Cup 2026
✓ 4/4 quarterfinal results called ✓ 2/2 semifinal results called ✓ Both finalists called: Spain vs Argentina ✗ Champion pick: Argentina — Spain won 1–0 aet
final graded July 19, 2026
~60s
From one chat to a
complete, editable bracket
50,000
Tournaments simulated
behind every pick's odds
4/4
Semifinalists called —
World Cup 2026
287
Tests keeping every
number honest
Why trust it

All 4 semifinalists and both finalists called; the champion pick missed by one extra-time goal — every pick graded openly below, with 287 passing tests and a verified live session.

The problem

Everyone fills out a bracket. Almost nobody can defend one.

Every World Cup, the group chat fills with brackets picked by flag and gut feel. And winning a small pool isn't even about being the most accurate — if everyone picks the chalk, being right wins you nothing. I wanted the knowledgeable friend you'd text: real odds for every matchup, and a straight answer on where a bold pick actually buys you an edge.


How it works

Consistency you can compute.

Tell the Analyst your pool size and how bold you feel, and about a minute later you have a complete, odds-backed bracket — yours to overrule pick by pick, then lock and export into your pool. Underneath is one engine: each matchup's Elo gap — the same rating method FIFA uses for its own World Ranking — becomes a win probability, the whole tournament plays out 50,000 times, and every odd on the page comes from those runs, pinned by 287 automated tests. The AI never computes any of it — it reads the engine's numbers and explains them, and if it can't back an answer with those numbers, it says so rather than invent one. Your risk setting never bends the simulation; it only decides which underdogs are worth backing for your pool size.

📥
Real FIFA data
Live standings, fixtures, and results — straight from FIFA's public feed.
🎲
The simulation engine
Plays the whole tournament out 50,000 times to turn team strength into every odd on the page.
💬
The Analyst
The AI reads those numbers and explains them — it never invents its own.

Demo

This is the real late-June session behind the bracket graded below — balanced risk, a 50-person pool, thirty-one picks, lock, export. The Analyst calls Argentina, France, Spain, and England deep into the tournament on camera, before a single quarterfinal was played.

The real session — balanced risk, pool of 50, locked and exported▶ 1:38

Graded in public

What a balanced bracket in a pool of 50 looks like.

Here's the whole bracket against what actually happened — every pick exactly as exported from the app, nothing edited after the fact, misses included. It was built at a balanced risk setting for a 50-person pool: chalk where the chalk is right, bold only where the numbers earned it. From the quarterfinals to the final matchup it didn't miss a call; the champion pick was the one that got away. A pick is graded ✓ if the picked team advanced from that round.

Rounds of 32 & 16 17/24
Round of 32: 12/16 · Round of 16: 5/8Three of the seven misses were penalty shootouts
Quarterfinals 4/4
France over NetherlandsAdvanced — beat Morocco
Spain over BelgiumAdvanced — beat Belgium
England over BrazilAdvanced — beat Norway
Argentina over ColombiaAdvanced — beat Switzerland
Semifinals 2/2
Spain over FranceCalled exactly
Argentina over EnglandCalled exactly
Final 0/1
Argentina over Spain — championMatchup called — Spain won 1–0 aet

These are my picks, built in the Bracket Analyst — the model's autofill plus my own judgment calls. That's the product working as intended: grounded odds, human bracket. The session is on tape above — balanced risk, 50-person pool — in this site's public repo since July 1 and live on this page before the quarterfinals were played. I kept refining after the recording: the graded export is one save later, with a few picks changed along the way, so the video's end screen and the table above differ in places — noted so you don't have to spot it yourself. I still won't claim a pre-tournament lock (I can't cryptographically prove pick dates) — next World Cup, the bracket gets published before kickoff. Every pick above matches the app's export verbatim, and you can build your own in the live app.


Reflection
Behind the build

I built the Bracket Analyst because I've been in that group chat — everyone fills out a bracket, nobody knows half the teams, everyone wants to beat their friends. The insight that shaped it: winning a small pool is about being differentiated in the right way, while keeping every number honest enough to hold up when someone checks it. This World Cup I trusted it with my own bracket, and the calls landed in public — every semifinalist, both finalists, and a champion pick that missed by one extra-time goal. I set out to build the knowledgeable friend you'd text; ending up as the tool's first proven user is the ending I didn't script.

Unofficial hobby project. The Bracket Analyst reads FIFA's undocumented public JSON endpoints and uses original styling only — no FIFA logos or imagery. It is not affiliated with, endorsed by, or associated with FIFA.

Run your bracket the way I ran mine — or dig into the build.