World Cup Pool 2026

Five coworkers, 48 teams, one trophy

June 2026, finished July 2026 worldcup.nbnstack.com

Overview

I built a full-stack web app to run a live pool for five coworkers during the 2026 FIFA World Cup. The 48 national teams are split across the players, every match scores itself, and a live leaderboard shows who is winning and who is likely to win once the rest of the bracket plays out.

I built it entirely with Claude Code over the first two days of the tournament, while matches were already being played. The pool had to exist before the group stage got away from us, so the goal was to get something real and self-scoring online fast and let the live data do the rest.

What It Does

  • Tiered snake draft: The five players snake-drafted all 48 teams from FIFA-ranking tiers, each tier carrying its own point multiplier so favorites and long shots both pay off. Draft order was settled the only fair way: five Level 9 CPUs fighting it out in Super Smash Bros.
  • Automatic scoring: Match results pull from ESPN's public API, so there is no manual data entry. Points are calculated through every stage, with escalating base points as the tournament moves into the knockout rounds.
  • Win probability: A Monte Carlo simulation runs 5,000 iterations of the remaining tournament to estimate each player's chance of winning the pool, refreshing every five minutes with a live animated visualization.
  • Live match clock: Scores update in real time with an accurate match clock, including stoppage time.
  • Pre-match odds: Each upcoming match shows win probability bars sourced from DraftKings odds via ESPN.
  • Mobile-first: Responsive design built to be checked from a phone during a match.

Tech Stack

Backend Django 4.2, with the scoring engine driven by ESPN's public API
Frontend React 18, built with Vite
Database PostgreSQL
Simulation Monte Carlo win-probability engine, 5,000 iterations refreshed every five minutes
Infrastructure Docker Compose, Cloudflare Tunnel for TLS termination

Related Projects