⚽ 48 teams · 16 cities · 104 matches

World Cup 2026 Dashboard

Follow the 2026 FIFA World Cup in one place — a live bracket and group tables, three interactive maps, match-day weather, a live score ticker, a Golden Boot tracker, and a form-aware Elo prediction engine — with a steerable projected bracket and an AI pundit panel — all shown in your device's local time.

🇨🇦 Canada  ·  🇺🇸 United States  ·  🇲🇽 Mexico  —  Jun 11 – Jul 19, 2026

What's inside

Built with Flask + vanilla JS and Leaflet — no heavy front-end framework.

🗂️

Live bracket

Round of 32 → Final in FIFA's two-pathway layout, with feeder group tables alongside. Slots resolve as results land.

📊

Group tables

All 12 groups with live points, GF/GD and full FIFA tiebreakers — top-2 and in-contention thirds highlighted.

🗺️

Daily map

A day slider lights up each day's venues with country-flag pins and click-through match detail.

🧭

Follow-a-team map

Trace any team's journey with date-gradient pins, gradient path lines, directional arrows and per-match kickoff weather.

🌦️

Match-day weather

Live radar, isobars and advisories; temperature + precipitation forecasts; historical conditions for past games. °F/°C toggle and a national heat map.

🔴

Live score ticker

When a match is in progress, the live score — and the minute of play as of the last check — shows up on every page, refreshed every 5 minutes.

🎲

Prediction engine

An Elo Monte-Carlo simulator — with form-adjusting ratings and a Dixon–Coles draw model — projects title odds, qualification odds and a single consistent projected bracket, depth-selectable from R32 to the Final.

🕹️

Interactive bracket

Steer the projected knockouts: click any team to force it through, and the bracket re-walks every slot it feeds — or roll the whole bracket back to an earlier matchday and re-forecast from there.

👟

Golden Boot tracker

The top-scorer race — penalties count, own goals don't — with a projected whole-goal range of additional goals scaled by how far each striker's team is simulated to go.

📈

Form tracker

Team ratings start from a prior and adapt to in-tournament results — a live board of the biggest risers and fallers.

📐

Transparent methodology

Every projection is explained: an in-app popup documents the Elo, Poisson goals, draw correction and Monte-Carlo — assumptions and limits included.

🎙️

AI pundit panel

A MiroFish-inspired panel of Claude personas debates the race, grounded in the model's numbers — with built-in cost controls.

🔀

What-if scenario mapper

Ask any free-form scenario question and get a mapped tree of branches — probabilities, consequences and who benefits — grounded in the played results and the model's numbers.

🏆

Women's World Cup 2027

The whole dashboard runs a second edition: Brazil 2027 mounts at /women with its own data, ratings and branding — every page lights up as fixtures land.

How it was built

The dashboard grew in self-contained rounds, each shipped onto the live deployment.

Stage 0 · Foundation

Flask + SQLite skeleton

Schedule, teams, groups and venues seeded from openfootball; a 15-minute cron pulls scores, recomputes standings and resolves the bracket. Bracket, groups and daily map go live.

Stage 1 · Live data

football-data.org key

Live score enrichment wired into the updater, keeping the keyless fallback intact.

Stage 2 · Maps

Flag pins on the daily map

Pins show the two competing nations' flags; time, stadium and stage on click.

Stage 3 · Maps

Follow-a-team map

Pick teams from a checklist and plot their matches, color-coded by date.

Stage 4 · Maps

Team-map polish

Gradient path lines, directional arrows and whole-pin date coloring.

Stage 5 · Weather

Radar, isobars & advisories

Live conditions for today's games, forecasts ahead, and historical weather for matches already played.

Stage 6 · Weather

Temperature controls

°F/°C toggle, a national temperature heat map, a numeric legend, plus humidity and dewpoint.

Stage 7 · Live

Site-wide score ticker

In-progress scores surface on every page.

Stage 8 · Predictions

Elo Monte-Carlo engine

Thousands of simulations project title odds and a likely bracket, with an Actual/Projected toggle and depth selector.

Stage 9 · AI

MiroFish-inspired pundit panel

Claude personas debate the race, grounded in the stats, with daily/monthly caps and a reserve to protect the shared key.

Stage 10 · Rigor

Consistent bracket & open methodology

The projected bracket became internally consistent — no team in two places at once — with a popup documenting the whole model for review.

Stage 11 · Predictions

Calibrated, living ratings

A Dixon–Coles draw correction for realism, and dynamic Elo that adapts to results — surfaced as a Form tracker of risers and fallers.

Stage 12 · Polish

Local time for every visitor

Kickoff times and the "today" schedule now follow each device's own timezone.

Stage 13 · Predictions

Steerable projected bracket

In Projected mode, click any team to force it through its match — the bracket re-walks every slot it feeds, so you can play out what-if runs. Resolved Round-of-32 teams are pickable too, with a lock badge and a one-tap "Reset picks". Per-slot confidence stays the honest simulation marginal.

Stage 14 · Predictions

Golden Boot tracker

A top-scorer race off the keyless goals feed — penalties count, own goals don't — flagging everyone within two of the lead as in contention. Each contender gets a projected whole-goal range of additional goals, scaled by how deep their team is simulated to go. Re-rank by current goals or projected finish.

Stage 15 · Maps

Kickoff weather on the team map

The follow-a-team map now shows each match's kickoff weather too — actual conditions for games played, forecast for those upcoming — sharing one formatter with the daily map.

Stage 16 · Live

Faster refresh & minute of play

Live scores refresh every 5 minutes, and the ticker shows the minute of play as of the most recent check — football-data's own minute when present, otherwise estimated from kickoff.

Stage 17 · Sharing

Rich link previews

Open Graph / Twitter Card metadata and a 1200×630 preview image on both the app and this page, so a pasted link unfurls in Discord, iMessage, Slack, WhatsApp and X.

Stage 18 · Knockouts

Shootouts settled right

Knockout ties are decided by the full result from every data source, the shootout winner is named on match cards and the ticker, extra time gets its own live badge, and a match is presumed live once its scheduled kickoff passes.

Stage 19 · Maps

Daily-map round-up

Covered vs open-air stadiums noted, upcoming days show their match-ups, a TODAY button jumps the slider home, live weather rolls over at 2am local like the rest of the site, and overlays say when they're loading — or failed.

Stage 20 · AI

What-if scenario mapper

The free-form half of the MiroFish idea: ask a scenario question and get a branch map of outcomes — probabilities, consequences, who benefits — grounded in the played results and the model, generated in the background under the same cost controls as the pundits.

Stage 21 · Polish

Out of the race, crossed off

Teams that can no longer win the title, and Golden Boot contenders who can no longer catch the leader, are struck through automatically as results land.

Stage 22 · Editions

One engine, two World Cups

An editions abstraction pulls everything tournament-specific — database, data feeds, venues, Elo priors, branding — out of the core, and the whole app (pages, updater, prediction engine, pundits) is threaded through it.

Stage 23 · Predictions

Roll back & re-forecast

A matchday picker rewinds the projected bracket to any earlier point: later results are stripped from the working view (never the database), the dynamic Elo rewinds with them, and settled matches unlock so you can steer the replay.

Stage 24 · Editions

Women's World Cup 2027 goes live

Brazil 2027 is seeded and verified end-to-end at /women — provisional fixtures, flags and branding included — while the completed men's 2026 tournament stays on record at the site root.

Tech stack

Lightweight by design, running directly on a DigitalOcean droplet.

Python · Flask SQLite gunicorn + pm2 nginx subpath Leaflet + OpenStreetMap Vanilla JS Open-Meteo · RainViewer · NWS football-data.org Anthropic Claude (via the claude CLI)

Live scores via football-data.org (free tier, slightly delayed) with a keyless openfootball fallback. Elo ratings start from an early-2026 snapshot and update from in-tournament results. AI pundit takes are model-grounded commentary — entertainment, not predictions of record.