World Cup Challenge 2026

Live Dashboard — Group Stage

⚽ Kicks off in
Mexico vs South Africa
--:--:--
๐Ÿ‘ฅ โ€”
Try the new experience
Narrative view โ€” beta
Try it โœฆ
The plot so far
Loadingโ€ฆ
The race
Chaos index
โ€”
calmchaos
โšก Live
Loadingโ€ฆ
โšฝ Next kick-off
โ€”
--:--:--
๐Ÿ“‹ Today's story
๐Ÿ’ฌ Banter
๐Ÿ“Š Stats & picks breakdown
Group Stage kicks off June 11
Form 2 opens June 27
Knockouts from June 28
Final July 19 — MetLife Stadium
🏆 Champion picks
🔴 Dirty Fouler
🎯 Most popular groups to predict
๐Ÿ… Leaderboard
๐Ÿ† Live Leaderboard
Updates after every match ยท tap a row to see breakdown

Set your name in the Banter chat to see your picks here.

๐Ÿ“Š Tournament Facts
โšฝ Goals per match
๐Ÿ  Result types
๐Ÿƒ Cards by group
๐ŸŽฏ Goals scored by team (group stage)
๐Ÿ“ Winning margins
🍀 Random team draw

Each entrant randomly assigned one of the 48 World Cup teams. This is your team to follow. Some of you got lucky. Taffy got Cabo Verde.

#EntrantAssigned TeamGroup
โ–ผ Played games

Loading...

Only groups chosen by at least one person are shown. Counts reflect only those who selected that group.
๐Ÿ•’ Kickoff times in
๐Ÿ’ฌ Banter Not connected
Pick your name above to load the chat.
โ†ฉ

๐Ÿ“‹ What's New

A brief history of this dashboard, annotated for posterity and mild embarrassment.

v3.3Jun 2026
All 72 fixtures. Every name. No excuses.
All 72 fixtures. Correct dates, correct matchups, who's got skin in every game. Banter unread badge fixed. Failed upset picks now show. Schedule got a team filter. Names are your colour now, not a flat yellow.
๐ŸŽ– Kudos: Paul, for knowing exactly how many fixtures there should be
v3.2Jun 2026
The beautification package. Botox for the dashboard.
Your Banter name now drives everything personal โ€” no more "View As" picker. Groups page has a My Groups toggle. The ticker calls out your results and flags upset picks 24h before kick-off. Banter badge fixed.
๐ŸŽ– Kudos: Paul, for knowing that polish is not optional
v3.1Jun 2026
Scores, standings, and cards โ€” all automatic now.
Results, cards, standings โ€” all live from API-Football now. No manual updates. If the lower-ranked team won, it's an upset. Simple.
๐ŸŽ– Kudos: Paul, for asking the obvious question
v3.0Jun 2026
Claude writes the commentary. Live.
Match events โ€” goals, cards, VAR, halftime โ€” are now sent to Claude in real time and come back as sharp, personalised commentary for the people in this group whose teams are on the pitch. Add your Anthropic API key in Settings and every event gets a fresh, context-aware one-liner. No key? Falls back to the built-in templates so nothing breaks. One batched API call per poll covers all new events at once.
๐ŸŽ– Kudos: Paul, for realising static templates are a crutch
v2.9Jun 2026
Settings panel. No more console archaeology.
Added a proper Settings panel โ€” accessible from the sidebar nav and the mobile hamburger menu. Paste your RapidAPI key in once and the live match feed just works. No more opening the browser console, no more localStorage.setItem() spelunking. Future keys and config options will live here too.
๐ŸŽ– Kudos: Paul, for correctly pointing out that asking users to open a console is not a UX
v2.8Jun 2026
Live match feed. API-Football wired in. The status box grows up.
During an active game, the mobile status box expands into a live match feed โ€” current score, goals, red cards, yellow cards, VAR decisions, halftime, and sharp commentary about the people whose teams are playing. Events are pulled automatically from API-Football every 4 minutes (one call covers all concurrent games). Banter chat sent during the game window gets injected into the feed too, so the whole group's commentary ends up in one place. New messages pushed via Ably keep the feed current in real time. When the final whistle goes, the feed clears and the status box returns to normal.
๐ŸŽ– Kudos: Paul, for wanting the dashboard to tell its own story
v2.7Jun 2026
The ticker got a brain. The clock learned to watch football.
The status ticker is now fully automated โ€” no more manual updates to a jsonbin. It reads the live scores data and writes its own commentary: match results, leaderboard movement, card counts, upset confirmations, and a teaser for the next game. Items are fresh within 48 hours of the match. More results means more material. The countdown clock now detects in-progress games and switches to a live match clock showing elapsed minutes (e.g. "43'"), halftime, and stoppage time. Knockout games get the full treatment โ€” extra time and penalties included. When the final whistle blows, it flips back to the next game countdown automatically.
๐ŸŽ– Kudos: Paul, for asking for a proper automation rather than a jsonbin bodge
v2.6Jun 2026
Mobile gets its act together. Cards, results, and a secret.
The schedule now buries played games in a collapsible section so you're not scrolling past history to find tomorrow's kick-off. Card icons show individually โ€” three reds means three red squares, not one with a multiplication sign. The Upsets page stopped pretending a seven-column table was fine on a phone screen and switched to proper cards. The mobile menu now shows the elemetric logo and version. We've also hidden an easter egg somewhere in the dashboard โ€” 20 bonus points to the first person who finds it and posts it in Banter.
๐ŸŽ– Kudos: Paul, for asking the right questions at the right time
v2.5Jun 2026
It's on the internet now. No take-backs.
The dashboard has a permanent home at enablon-presales-wc2026.netlify.app. No more downloading HTML files, no more "which version do I have", no more corporate IT blocks because it looked like a local file. One URL. Everyone gets the same thing. Updates deploy instantly. This is objectively better and only took until week two of the tournament to happen.
๐ŸŽ– Also: chat no longer runs on a 60-second polling loop like it's 2009. Ably WebSocket delivers messages the moment they're sent. Flash the Sloth has been retired. The ticker, meanwhile, has developed opinions and does not plan to stop.
v2.4Jun 2026
Dirty Fouler league table. Cards now count for something.
The Fouler panel grew up. It now shows every picked team ranked by card points โ€” yellow worth 1, red worth 2. South Africa collected 5 points of chaos in a single game. Three red cards. The tournament is 63 games long. The group stage alone has them in the lead. Backed by Dez. Dez knows.
๐ŸŽ– Also: chat switched from 60-second polling to Ably WebSocket. Messages now arrive instantly. No more "why isn't the chat updating" moments.
v2.3Jun 2026
This changelog. Meta, but necessary.
Someone had to document the carnage. Version history added to the nav. Sharp-tongued, because why would we do anything straight. Also: auto-scroll to bottom on chat load, because apparently gravity needed to be coded in manually.
๐ŸŽ– Kudos: Paul, for asking
v2.2Jun 2026
Reply threading โ€” because group chats needed more chaos.
Hover any message and hit โ†ฉ reply. Your retort shows up with a quoted preview, Teams-style. The original sender gets full credit when you dunk on them. Stored in jsonbin, visible to everyone. There is no undo.
๐ŸŽ– Leah "BoomGoesTheDynamite" Mitchell โ€” requested this. All consequences are hers.
v2.1Jun 2026
5 new entrants. The refactor paid off in 30 seconds.
Anitha, Chalida, Leo Bernardes, Ruben, and Bon joined fashionably late. Adding them required exactly one array entry each. The entire dashboard โ€” all panels, stats, charts, draw table, chat dropdown โ€” updated automatically. This is what good architecture feels like. Leo picked Brazil to win. He was assigned France. The football gods are not subtle.
v2.0Jun 2026
The big refactor. PEOPLE as the single source of truth.
Everything that was hardcoded across six panels is now derived from one PEOPLE array. Champion charts, group picks, upset tables, fouler league, draw assignments, chat dropdowns โ€” all rendered dynamically. A live scores system was also wired in via a second jsonbin: Paul updates one JSON file after each game, the dashboard computes everyone's points automatically. No more editing HTML between matches like it's 2003.
v1.4Jun 2026
GIFs and emoji. The banter just got visual.
Giphy API integration: search, preview, send. 100 API calls per hour, shared across 24 users. Do the math and behave accordingly. Emoji picker also added, because sometimes a ๐Ÿ’€ is all you need. Tenor was investigated and rejected โ€” they stopped accepting new clients in January 2026, which tracks.
๐ŸŽ– RazAgul โ€” requested GIFs and memes. You built this monster.
v1.3Jun 2026
Banter chat โ€” live, shared, slightly unhinged.
A real-time group chat powered by jsonbin.io, accessible to all 24 entrants. Messages persist for the duration of the tournament. @mention support added. A disclaimer warns users that messages are not encrypted before they type something they'll regret. The Netherlands colleague's corporate proxy blocks it. We investigated. We cannot fix corporate IT.
๐ŸŽ– Aliza โ€” had the idea. Has only herself to thank.
v1.2Jun 2026
Three new entrants. Stats updated. Ticker got snarky.
19 entries received, all hardcoded stats refreshed across every panel. Ticker messages rewritten โ€” data-driven, moderately cruel, occasionally affectionate. Taffy still has Cabo Verde. The ticker mentions this.
v1.1Jun 2026
Random team draw. Everyone gets a horse in the race.
48 teams, randomly assigned. One per entrant, no duplicates. Vern's first draw was quietly re-rolled โ€” nothing to see here. Taffy got Cabo Verde. Senda got Argentina. The football gods were consulted and had opinions.
v1.0Jun 2026
Launch. The founding document.
16 entrants. Champion picks, group predictions, upset picks, dirty fouler league. A schedule tab with live countdown timers. Lock/reveal logic keeping individual picks hidden until form close. A ticker running sharp commentary about everyone's picks. The dashboard that started as "a quick HTML file" and became a minor engineering project.
⚽ Live
๐Ÿ’ฅ
๐Ÿ“ฐ Catch Up
Tap any category to filter
tap to close
Menu
powered by
elemetric

โš™๏ธ Settings

API-Sports Key (for live match feed)
Get a free key at dashboard.api-football.com โ†’ My Account
Live data
If the feed is stale for more than ~10 min, trigger Actions manually:
API Status
Error Log

Who are you?

Your bubble colour