Agentic AI · Full-Stack · Claude

Fill out a World Cup bracket
like you actually know ball.

Millions of people fill out a World Cup bracket in a pool with friends — and most couldn't tell you who half the teams are, so they agonize for twenty minutes and pick by flag. The Bracket Analyst is the knowledgeable friend they'd text: it knows every team, weighs each pick's real odds, and shows you how to stand out enough to actually win your pool. And because those odds are built on real Elo team ratings — the kind FIFA ranks teams by — it's advice you can trust.

Next.js 16 · React 19 TypeScript Anthropic Claude · tool-grounded Monte Carlo · 50k sims Vitest · 287 tests Public FIFA JSON · zod
~60s
From one chat to a
complete, editable bracket
50,000
Tournaments simulated
behind every pick's odds
1,489
Players, 48 teams —
one grounded data model
287
Tests keeping every
number honest
The bracket predictor

A complete World Cup bracket, in one sitting.

A 48-team World Cup has a genuinely hard first step: working out who survives the group stage. The Analyst predicts each team's odds of advancing — including the tricky bit, the 8 best third-placed teams drawn from across the 12 groups, whose fate decides the final knockout spots. Those predictions seed a complete Round of 32, so you start from a filled-in knockout draw instead of a blank one.

From there, it's the knockout bracket you actually fill in — yourself, or let the Analyst autofill a complete, editable one, calibrated to your pool size and risk appetite. Every pick carries its real head-to-head odds, bold underdogs are flagged, and when you're happy you lock it and export to CSV straight into your pool.

Full walkthrough — autofill a bracket, weigh the odds, ask the Analyst▶ Demo

Pool-winning strategy

Winning a pool isn't the same as being right.

Winning a small pool is about being differentiated, not just accurate — if everyone picks the chalk, being right wins you nothing. The "You vs. the Model" view measures how bold your bracket is versus the favourites and calibrates the payoff to your pool size, so you stand out enough to win without blowing it up.

You vs. the Model

Ask it straight — "Is my bracket too safe to win?" — and it answers with numbers: how far you stray from the chalk, and where a well-chosen upset actually buys you an edge.


The group stage

The part no scoreboard shows you.

The dashboard tracks all 12 groups live — every team marked Through, In contention, in the 3rd-place race, or Out, with a Next-Round % beside it. The top two of each group always advance; the twist is that the 8 best third-placed teams out of the 12 groups go through as well, and working out which ones means weighing results across every group at once — the part no single group's table can show you. Tap any team for the exact scenarios that decide its fate.

Group-stage dashboard showing all twelve groups with live-aware standings, each team's status and a Next Round percentage, including the eight best third-placed teams
Group dashboard — standings, status, and Next-Round % across all 12 groups3rd-place race, solved
Team detail view breaking down a single team's qualification situation and the scenarios that decide whether it advances
Team detail — the scenarios that decide whether a team advancesTap to expand

Ask the Analyst

The expert friend you'd text for advice.

"Why are Netherlands favoured?" "NED vs MAR — who wins?" "Who's the top scorer so far?" A chat on both tabs answers free-form questions in plain English, drawing on the exact same engine that powers the bracket and the dashboard — so the chat and your bracket never disagree.

Ask the Analyst answering a free-form question about the bracket in plain English, grounded in the model's probabilities
Ask the Analyst — plain-English answers grounded in the model's numbersSame engine, everywhere

Why you can trust it

The math is real; the AI can't fake it.

Every probability starts from Elo team ratings — the same rating method FIFA uses for its own World Ranking, not opinions. From those ratings a dedicated engine plays the whole tournament out tens of thousands of times — modelling each match from the two teams' relative strength — to produce every standing, verdict, and knockout odd, with its rules locked down by an automated test suite so the numbers don't drift. The AI never computes any of it; it only reads what the engine produced and explains it in plain English.

📥
FIFA public JSON
Fetched and validated with zod into a typed tournament snapshot.
🎲
Elo-strength engine
50,000 simulated tournaments per forecast — standings, odds, and pool-finish. Pure math, no I/O.
💬
The grounded Analyst
Claude reads the computed facts through tool calls and explains them.

And the way it behaves around those numbers is governed by hard rules, not left to the model's discretion:

🛡️
Grounded, or it declines
Every figure the Analyst gives is pulled from the engine, not written by the model. Ask something it can't ground and it says it doesn't have that — it won't invent a number to fill the gap.
🔗
One model, no contradictions
The odds on a bracket pick and the Analyst's answer for that same matchup are drawn from one shared model — so your bracket and the chat can never disagree.
📌
Settled facts are pinned
A team that's clinched reads 100% and one that's out reads 0% — fixed, never left to simulation. Uncertainty is added only where the result is genuinely still open.
⚖️
It won't oversell a pick
A long shot is never dressed up as a lock, a bracket is called busted only when it truly is, and past World Cups are context only — history never bends a 2026 number.

Personal reflection
Behind the build

I built the Bracket Analyst because I've been in that group chat — everyone fills out a World Cup bracket, nobody actually knows half the teams, and everyone secretly wants to beat their friends. I wanted to put the knowledgeable friend they'd text into an app.

The insight that shaped it: winning a small pool isn't about being the most accurate, it's about being differentiated in the right way — while keeping every number honest enough to hold up when someone checks it. Getting both right is the part I'm proudest of.

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.

See it live — or dig into the build.