Confident and unchecked
A model sounds just as sure when it's wrong. Without a check between the draft and the screen, every error goes out live.
Running on a synthetic match, right now
Every call comes with its evidence.
AI agents commentate a live football match. Before any line goes to air, a Critic agent checks it against the raw match events. If a claim can't be proven, it's rewritten or dropped.
Submitted 24 Octoberready for the judges' review, awaiting the results
Five pillars, a fifth of the score each, and where to see the evidence for every one.
The live studio is open to you. Sign in at the studio with your @microsoft.com or @premierleague.com address: Cloudflare Access emails a one-time code, with no password and no account. The Foundry models narrate every match there, live, through November 10.
Microsoft Foundry and Agent Framework at the core, 278 tests on every push, and the whole studio on any machine with no Azure.
Five agents, and a Critic that recomputes every number before a line airs. When a model fails, the Orchestrator keeps the broadcast on.
Trust is the product: nothing unverified airs, in English, Urdu or Arabic, and a broadcaster plugs in through a cue contract.
Replay the studio, see the match through three lenses, ask it a question, and verify its ledger in your browser.
Best Use of Microsoft Foundry: gpt-4.1-mini writes, gpt-5-mini stands by, and Foundry's evaluators judge the lines that aired.
Read it like a match. The story moves up the pitch: the stakes at the back, the engine in midfield, the front three to finish, then the second half from the bench.
watches a football match and commentates on it, like a broadcaster would. The difference: before any line goes on air, a second AI checks every fact in it against what actually happened on the pitch. If a claim can't be proven, it doesn't air.
As a match plays, one AI spots the moments that matter: a goal, a big chance, a team taking control. Another writes the line a commentator would say. A third, the Critic, checks the line against the match's raw events. It recounts the passes, re-measures the distances, checks that every event cited had actually happened yet. Only then does the line reach the screen, with its evidence attached and a receipt showing what it cost.
AI writes fluent sentences, and fluent isn't the same as true. In sport, a wrong number on air costs the broadcaster the viewer's trust. I wanted commentary you can audit: every claim traceable to the moment it describes, and a system honest enough to say "I can't prove that" instead of making it up. If a model fails mid-match, the broadcast keeps going and says so.
is my entry to Inside the Game: Developer Hackathon, run by Microsoft with the Premier League from October 6 to 27, 2026. Developers around the world build AI that turns football-realistic, synthetic match data into insight, commentary and recaps, using Microsoft's AI and cloud tools. Judging runs to November 10, and winners are announced on November 20. The full brief — the ask, the requirements, the judging pillars and every reward — is on the challenge page.
Every club, player and match here is invented, as the rules require. is an independent entry: it isn't affiliated with or endorsed by Microsoft or the Premier League.
Watch a synthetic match in the studio. The Critic's refusals appear on screen as they happen, and one button takes the commentator off air so you can watch the broadcast recover.
Language models write fluent commentary in seconds. They also invent numbers, mix up minutes and cite moments that haven't happened yet. On a live broadcast, a wrong line reaches every viewer before anyone can check it.
A model sounds just as sure when it's wrong. Without a check between the draft and the screen, every error goes out live.
An analyst wants expected goals and pressing patterns. A casual viewer wants to know why the crowd just roared. Most feeds serve one and lose the other.
The game is watched around the world, but live commentary is mostly written in English. Urdu and Arabic speakers usually get a translation, not commentary written for them.
A live system that waits on one slow or failed model call goes quiet at exactly the moment the match needs it.
Six awards, one engineer. I'm building to win every one of them, and each category below is built to its full standard, with the work live to prove it. The rules let one project take home at most one grand prize and one category prize; which ones is the judges' call. My job is to give them every reason.
Winners announced in
--
Explainable match intelligence, every line with its evidence. Engaging narratives: live commentary, the recap and the ref's call. Ask the match anything, and get a checked answer. Context: momentum, breaks, the press, a card for any player. Accessible and personal: English, Urdu or Arabic, read aloud for fans who can't watch the screen, with questions asked out loud and answered aloud for fans who can't type them, casual or analyst, your club, your player, one number. And HUD², the same match on one heads-up screen through the referee's, the commentator's or the fan's lens, every checked line pinned where it happened. All in one match, end to end.
Built to winThe same match and the same evidence. Whichever place the judges give, it's the whole build that stands behind it.
Built to winModels on Foundry write the commentary from facts code computed, and translate it into Urdu and Arabic under the same law. Asked a question, the model calls tools for every number it states, and the Critic checks each one. Azure AI Speech, on the same Foundry resource, reads every verified line aloud and hears questions asked out loud, in English, Urdu or Arabic. A backup model takes over when the first fails. Evaluation chose which model serves, by a rule fixed before the run, and Foundry's own evaluators judge the lines that aired (groundedness 4.84 of 5) and the answers to viewers' questions (5.0 of 5, after the fix the first run called for). Every model call is traced with its tokens and its cost, in Application Insights and in Foundry's own tracing view. Keys are off: Entra ID only.
Built to winFive agents on Microsoft Agent Framework with typed handoffs and shared match state. The Critic sends a line back with its reasons; take the narrator off air mid-match and the broadcast keeps going, and says so. Asked a question, the Narrator answers with the Scout's counting tools and the Critic checks the answer: three agents on one question. Other agents can reach the Critic as a peer over A2A, and assistants over MCP. The Critic is also an MCP server any assistant can call.
Built to winPrivate by default: Cloudflare Access in front, and the studio checks Cloudflare's signature on every request. Prompt Shields screen every viewer's question before a model reads it. An audit trail on Azure Cosmos DB for every claim, refusal, cue and answer, kept 90 days and then deleted by policy, a receipt on every line, traces and a workbook in Application Insights, a daily model budget under a $100 ceiling, and a 38-point health check before every recording.
Built to winOne image on Azure Container Apps, signing in with its own managed identity and no keys, watched by liveness and readiness probes, with Microsoft Foundry, Cosmos DB's free tier, Application Insights and a registry with admin off around it. Every agent step is traced, and a read-only doctor checks the whole of it.
Built to winBeyond the hackathon The road to an AI fourth officialI promised to show the core loop end to end by October 24, or narrow this declaration in public. It ran end to end, live on Azure, on October 18, and nothing has been narrowed since.
The challenge's full brief — the five stages, the hard requirements, the judging pillars and every reward with its amounts — is on the challenge page.
Inside the Game: a developer hackathon run by Microsoft with the Premier League, October 6–27, 2026, hosted on Microsoft's Innovation Studio. Build AI that turns synthetic, football-realistic match data into intelligence, narratives, recaps and personal experiences. This page sets the challenge out in the open: what it asks, what it requires, how it's judged, what it rewards — and how this entry answers.
Winners announced in
--
“Build an AI-powered solution that transforms synthetic, football-realistic data into explainable match intelligence, real-time narratives, automated recaps, and personalized experiences — for fans, studios, broadcasters, and streaming platforms.”
Four things to build — intelligence, narratives, recaps, personal experiences — for four audiences. And one law underneath them, also from the brief:
“A project that only generates metrics has no audience, and a solution that only personalizes has nothing to personalize.”
Two stages: a pass/fail screen — does it fit the theme and apply the required technologies — then five pillars, each worth a fifth of the score.
Quality practices, effective use of the hero technologies, well-structured and maintainable code.
Creative agent patterns, sophisticated orchestration and multi-agent collaboration, novel implementations.
A significant problem, production readiness, impact on developers, businesses and users.
Intuitive to use, clear value in the demo, a balanced frontend and backend.
Compliance with the chosen prize category's description.
A $50,000 pool across six lanes. Cash ships as e-gift cards (§8.3), split equally between a team's members; one winning team a lane; a project may take at most one grand prize and one category prize (§4.2, §8). Amounts as published in the official rules and awards register, October 2026.
Grand prize · first place
~$4,000 cash, per member
For the most complete and compelling solution: innovative use of the Microsoft AI stack, explainable intelligence, engaging narratives, contextual insight, accessible and personal experiences.
Grand prize · second place
~$2,500 cash, per member
Judged against the same bar as first place: the whole build stands behind whichever place the judges give.
Best use of Microsoft Foundry
~$1,500 cash, per member
For the most effective leverage of Foundry: development, orchestration and management of AI-powered solutions — scalable AI “difficult to achieve through traditional approaches alone.”
Best multi-agent orchestration
~$1,500 cash, per member
For purposeful multi-agent collaboration: distinct roles, shared state, effective handoffs, recovery from failures — an end-to-end outcome no single agent could achieve.
Best enterprise solution
~$1,500 cash, per member
For enterprise-deployment readiness and long-term business impact: a clear path to adoption, reliability, transparency, production controls.
Best Azure cloud-native integration
~$1,500 cash, per member
For Azure's cloud-native services — Container Apps, AKS, Functions, event-driven and resilient by design — with operational excellence.
This entry is a solo build: whatever it wins lands undivided. Which lanes it aims at, feature by feature, is on the goal page.
The event stream contract: a committed JSON Schema, and the seeded synthetic generator that makes the football-realistic data itself — the brief's data-innovation pillar, taken literally.
The Scout: deterministic counting code on the hot path, no model, sub-millisecond — goals, big chances, great passes, breaks, the high press, momentum, the ref's call.
The Narrator writes from a fact sheet; the Critic recomputes every number from the events and refuses what it can't prove. Why a moment matters, with the evidence on screen.
Timed, prioritised JSON cues with evidence, receipt and player tags — a JSON Schema contract a broadcast graphics system can build against — and HUD²'s on-screen lenses.
HUD²'s three lenses, Ask the match, a club, a player or one number to follow, casual or analyst — in English, Urdu and Arabic, spoken as well as written.
At full time the match writes its own recap, every line through the Critic first, as a page that prints to PDF.
is an independent entry and isn't affiliated with or endorsed by Microsoft or the Premier League. Every club, player and match on this site is invented, as the rules require. Prize figures are quoted from the official rules and awards register; winners are announced November 20, 2026. Every ask on this page, delivered and linked to its evidence: the deliverables report.
The deliverables report. Every ask of the challenge, row by row: what the brief required, what shipped, how it works underneath, and where that feature goes next. Nothing here is promised — it is live, on synthetic matches, and linked to its evidence.
Everything checkable in one place. This report ships as a PDF inside the media kit — one click below — beside the 101-second video, the screenshots and the brand. The studio runs on any machine with make studio-offline, no Azure needed; the live studio's credentials are in the testing instructions.
The ask: not “AI says X dominated”, but why — with event evidence.
The ask: live during the match, not only after it.
The ask: the 90-minute story writes itself.
The ask: the analyst and the casual fan as two genuinely different experiences — custom modes, favourite clubs and players, player focus, one metric.
The ask: insight for fans around the world, in multiple languages.
The ask: synthetic, football-realistic data only (rules §4.7) — and the brief invites creating and extending it.
The ask, in the grand-prize lane's own words: ask the match anything, and get a checked answer.
The ask, from the multi-agent lane: recovery from failures — an end-to-end outcome no single agent could achieve.
make studio-offline runs the same studio on any machine, no Azure needed at all.make setup; 278 tests on every push; a 38-point doctor and a smoke script that streams a whole match and checks every part.In the build daily, working from the repository's own evidence rules, so it follows the same law the agents do.
gpt-4.1-mini writes the lines, gpt-5-mini backs it up; Foundry's evaluators judged what aired (groundedness 4.84 of 5) and every call is traced with its tokens and its cost.
The warm path is an Agent Framework workflow; the Critic serves assistants over MCP (six read-only tools) and other agents over A2A, with no model inside.
The audit trail on Cosmos DB's free tier, every cue and refusal kept 90 days; Microsoft Fabric weighed for the analytics and deferred — recorded above, in Data innovation's next.
One image on Container Apps with a managed identity and no keys; Application Insights traces every agent step; liveness and readiness probes watch it; a read-only doctor checks the whole of it.
Every row above names its evidence. The road from here — the decision explainer, perception, the fourth official — is written down, gate by gate.
Every event takes the hot path: fast, deterministic, no language model. Each alert then takes the warm path, where one agent writes, another checks, and nothing airs until it passes.
The claim from the front page, through each step of synthetic match seed 7.
The Scout reads every event as it arrives and flags goals, big chances, great passes, breaks from a ball won in a side's own half, a high press paying off, swings in momentum, and fouls with a card or a penalty in them.
The Narrator drafts the line for air from a sheet of facts code computed, and cites the event behind every one. On Azure, a model in Microsoft Foundry writes it: gpt-4.1-mini, chosen by evaluation.
The Critic recomputes each number from the raw events, with the same formulas the Scout uses. A wrong number, a missing citation or an event from the future sends the claim back, up to three attempts.
The Localizer turns the verified claim into an on-screen cue for casual fans or analysts, in English, Urdu or Arabic, with its player tags and a receipt of what was checked and what it cost. A claim that never passes never airs.
A viewer picks a club, a player, or one number to follow. Their moments come first and carry their club's colour; the other side's still air, marked as the rival's. Following one player keeps only that player's moments, counts the rest, and adds a live card counted from the player's own events. The models tell the line from the viewer's side. The facts don't move: every line still passed the Critic.
Your clubYour player
Bilal Arholm scores for Saltmarsh Rovers from 10 m, a speculative chance (xG 0.11). Set up by Adem Rosmere's 22 m pass, difficulty 58 of 100.
Synthetic match seed 21, with Saltmarsh Rovers as the viewer's club and Adem Rosmere as their player.
At full time the match writes its own recap: the result, every goal, the numbers for both sides, the moments that aired and the players who made them. Each line it writes goes to the Critic first, with one rule lifted: it may look back over the whole match. A whole-match number must be counted to the final whistle, and the line cites it.
Shots: SAL 19, BRK 10. Expected goals: SAL 2.82, BRK 1.64.
Checked by the Critic, citing all 29 shots and the final whistle.
A viewer can ask the match anything, live or after full time. The Narrator answers, but it learns a number only by calling the Scout's tools: code that counts the events so far. Each count comes back as a fact with an id, the answer names the facts it uses, and code builds the claim from them. The Critic then checks it like any line: every count recomputed, every number and every player it names backed by those facts. What the events can't answer, like an injury or the final score, gets plain fixed words, not a guess. With the voice on, ask out loud in English, Urdu or Arabic: Azure AI Speech turns the question into words, and the checked answer is read back in the same language.
Saltmarsh Rovers have pressed higher in the second half with 18 high presses compared to Brackenfield's 5.
Answered by gpt-4.1-mini on Microsoft Foundry from two counts, both recomputed by the Critic before it showed. Synthetic match seed 21.
Everything the court produces is built for someone else's system to use, not only this studio.
Each line leaves as a timed, prioritised JSON cue with its evidence, its receipt, the players it tags and, for a foul, the card to draw. A JSON Schema, written from the code and checked on every push, is the contract a graphics system builds against.
Six read-only MCP tools, so an assistant can read a match and put a claim to the same Critic before it says anything. And an A2A agent with a card, so another agent can hand it a claim or a question as a peer. Same rules either way.
Every cue, refusal, answer and change of service level, kept for 90 days on Azure Cosmos DB: what aired, who wrote it, what was refused and why.
A receipt on every cue: the model, its tokens and its cost. A model-written line costs about $0.0007, a whole match under a cent.
One standalone page per match that prints to PDF, every line it wrote checked by the Critic.
The competition picks how strictly fouls are read. English, Urdu and Arabic, on screen and spoken aloud.
The Orchestrator supervises the line. If the Narrator or Critic stops responding, it retries once. If the agent is still down, viewers get detection-only cues, marked as unverified, and the broadcast says when full service is back.
A test knocks the Narrator out four times in a row mid-match and checks that the cues never stop. In the studio a switch takes the narrator off air mid-match and puts it back, and the demo video does it on camera.
New here? This is the whole project in eight moving scenes: the gap in AI commentary, the law this build follows, and the hashing that keeps a match's history honest — hash chains and Merkle roots, the same structures behind Certificate Transparency — ending with where it all goes. No prior knowledge needed; every scene explains itself.
Each scene moves while it's on screen, and two of them break on purpose, at your button. Prefer less motion? The site honours your reduced-motion setting: every scene stands still, complete.
Scene 1 · the gap
A language model writes fluent lines at broadcast speed, and sounds just as sure when it's wrong. Here the caption says seven shots on target; the events, recounted, say six. On a live broadcast the wrong line reaches every viewer before anyone can check it, and one wrong number costs the broadcast its trust. That gap is what this project is built to close. The problem, in full.
Scene 2 · the law
Every number a line may state is computed by deterministic code straight from the events; the model never does the arithmetic. It writes from a fact sheet, citing the fact behind every number, and then the Critic recomputes each number from the raw events with the same formulas. Proven: the line airs with its evidence and a receipt for what it cost. Not proven: it goes back with the reasons, and a line that never passes never airs. The whole pipeline.
Scene 3 · the hash
Before anything goes into the ledger, each entry is written as JSON in one canonical form and hashed with SHA-256. Same bytes in, same hash out, always. Change one digit anywhere and the whole fingerprint changes, completely and unpredictably — there is no way to change an entry and choose a hash that still matches. That one-wayness is the entire trick. Press the button and watch one digit end a fingerprint.
Scene 4 · the chain
The match is sealed a minute at a time. A block holds that minute's entries, hashed into a Merkle root, and the previous block's hash; its own hash is taken over all of that. So every block stands on the one before it, back to the first, and the last block's hash — the seal — stands for the whole match. Change one entry anywhere and its block's root changes, so its hash changes, so the next block no longer names it: the break runs all the way to the seal, and anyone can see it. That is hash chaining. Press the button and break block 13.
Scene 5 · the root
A block doesn't hash its entries in one long line; it builds a Merkle tree, the way Certificate Transparency builds its logs (RFC 6962): entries hashed in pairs, pairs of pairs, up to a single root, and that root goes in the block's header. To prove that the one line you care about is really in the match, you need only its branch up to the root and the block headers on to the seal — a few hundred bytes, checked in your browser without trusting the studio.
Scene 6 · the seal
The last block's hash stands for the whole match, and copies of it live where the ledger doesn't: in the audit trail on Azure Cosmos DB and in the trace in Application Insights. Anyone can recompute every hash from the ledger alone — in the browser, or offline with python -m court verify, which also replays the match from its seed and demands the ledger hold exactly those events. Verify a real match yourself.
Scene 7 · the seed
The rules of this hackathon allow no real match data, so every club, player and match here is invented by a generator, calibrated so its scorelines sit close to real football. Feed it the same seed and it replays the same match, to the event — which is why every number on this site can be checked by anyone, and why the ledger can be held to the seed's own events. How real is the synthetic football.
Scene 8 · the road
The hackathon is stage one: commentary that proves every claim. Next, the decision explainer — when the referee makes a call, the evidence and the Law it rests on, explained to the crowd and the viewers in their language. Then perception: fouls read from cameras, every prediction citing its frames. The north star is an AI fourth official that advises the referee team, faster than a video review takes today, and explains every decision to the whole stadium. It advises. The human decides. The whole road.
Every match is generated from a seed: invented clubs, invented players and realistic volumes, about a thousand passes, 29 shots and three goals a match on average. The same seed always replays the same match, so every claim on this site can be reproduced.
Replay this match yourself:
python -m court run --seed 7
The generator's scorelines against real results: competitive men's internationals since 2010 at a home venue, from a public-domain record of every international match. A result can't check what happens inside a match, so this checks the shape of the scores only.
The full comparison is in the repository's docs/realism.md, written by scripts/realism.py. Credit for the real results is on the credits page.
One heads-up screen, three ways to see the same match. Every action is drawn where it happened, and every line the Critic checked is pinned to the events it cites.
A match recorded from the live studio on October 20, replayed by the studio's own code. The lines, the refusals and the ledger are real; the studio itself is open to the judges only.
Every foul, with its distance from the goal the fouling side defends; the pressing; and the zones a likely call is read against at the competition's strictness: the penalty area, the goal-chance zone and the line of a promising attack. This lens shows the least. A referee's eyes belong on the players.
Who's on the ball, by number and name, the passes and the shots as they happen, and the last five minutes against the match so far, both sides on one bar. Every number is counted by the code the Critic checks with.
Who's on top, where each side has played lately, the chances so far, and plain words for anyone new to football. Any lens can ask the match a question.





On any device the law stays the same: a word passed the Critic, and a mark is an event that happened. The whole road.
Type a question or say it, in English, Urdu or Arabic. Code counts every number from the match's events, the Critic checks the answer before you see it, and the answer is sealed into the match's ledger, so you can check it was never changed.
The recorded match answers the ten questions asked of it in the live studio, with their real answers and proofs; tap one, then verify it. The live studio answers anything.
A blockchain's integrity, without a blockchain. Every event, line, refusal and answer of a match is hashed and sealed, minute by minute, into blocks that each name the one before. Change one byte anywhere and it shows.
The ledger of the match recorded from the live studio: 1,815 events and every line, refusal and answer. Your browser recomputes every hash itself, with nothing taken on trust.
python -m court verify, which also generates the synthetic match again from its seed: the ledger must hold exactly those events.New to hash chains and Merkle roots? Watch them explained in eight animated scenes — including what happens when you change one entry on purpose.
It proves the history hasn't changed since it was sealed, and that the events are the ones the seed generates. It adds nothing a line didn't already prove, and a studio that lied while recording would seal its lie: the copies of the seal kept elsewhere make that harder, not impossible. Publishing each match's seal to a public log is the next step.
The live studio is open to the judges only, so here it is for everyone: every screen recorded from it on October 20, and replays that run its own code in your browser.






The challenge names four audiences — fans, studios, broadcasters, streaming platforms — and this page is for the last two. The same checked lines, delivered as a program feed: nothing here is drawn by hand. Every strap, citation, receipt, player tag and card on the left is rendered from the cue stream's own JSON, the way a graphics system would draw it.
A match recorded from the live studio, replayed by the studio's own stream. Play the take, or step line by line with Next line — the panel on the right is the JSON your system receives for every cue, live.
Both lanes of the brief's law, served: the metrics have an audience — this feed — and the personalisation has something to personalise — the same checked lines.
A system that checks its claims should say where its checks stop. These are the limits as they stand today, measured where they can be.
only tells you what has already happened, from the match events. It never predicts a result, a score or the next goal, never shows odds, and won't help anyone bet: ask it about bets or odds, in English, Urdu or Arabic, and it says so in fixed words before any model reads the question. Enjoy the football, not the odds. If betting is causing harm to you or someone close to you, free and confidential support is there to help.
On matches never used for tuning, 62% of the Scout's momentum calls match a real swing, and it catches about a quarter of the swings there are. It's tuned to say less and be right, so when it stays quiet a swing may still be under way.
Every club, player and match is invented by code. The generator matches real volumes over 100 seeds (about three goals, 29 shots, 78.5% of passes completed and 320 pressures a match), but no real team plays in it, so nothing here says anything about real clubs or players.
The court sees what the event stream records: passes, shots, tackles, pressures and changes of possession, each with a place and a time. It doesn't see runs off the ball, a team's shape between events, or anything only a camera would. Speed and distance tags come from the events' own fields: a shot's speed, a pass's length.
Expected goals here come from a small, open formula (distance, angle, headers, pressure), the same one the Critic recomputes with. It's consistent, not a trained provider's model: its numbers aren't comparable with a broadcaster's.
The Critic proves that a line's numbers and citations hold. It doesn't judge emphasis or fairness, so a verified line can still be one-sided or dull. Checked means supported by the events it cites, and nothing more.
An Urdu or Arabic line may state no number the English line doesn't, and must keep every name. The wording itself is the model's, reviewed by a person, not by the Critic.
The recap's players who made it happen are counted from their own events. There's no rating behind them and no per-player rule for the Critic yet, so the recap marks those lines as counted, not checked.
It sees where a foul happened and what it stopped, never the force or the speed of the challenge. It states a likely decision at a stated strictness. The restart has ground truth (the generator awards penalties the same way); the card has none yet.
Names stay in Latin letters in every language, so the Critic can check them; an Urdu or Arabic voice may say an invented name oddly. The words it speaks are exactly the line that aired.
When you ask the match, every number, name and citation in the answer is checked. Words like "dominated" or "the better side" are the model's reading of those checked counts, not a verdict the Critic can prove. Ask for the numbers and judge for yourself.
A favourite club or player changes what comes first and what's marked as yours. The facts are the same for every viewer.
A model can already write commentary. The open question is whether anyone can rely on it, live, with millions watching. is built around that question.
“We will see whether you have told the truth.”
Broadcasters answer for every word on screen. Each claim carries its own audit trail: the events behind it, the check it passed and the attempt it took.
I don't ask the model to be careful. I check its work with the same formulas the Scout uses, and refuse anything that doesn't add up.
Urdu and Arabic are live beside English. The verified line is translated under the same law: no number it doesn't state, no name changed. Every fixed word was reviewed and signed off before it shipped.
Models will be slow, rate-limited or down mid-match. The system degrades, says so on air and recovers, instead of falling silent.
The goals are declared on this site before the deadline, and the code goes public with the entry. Judge the work against the promise.
Built in the open, one tested commit at a time. Everything under “Live” runs today, on synthetic matches.
October 18, 2026. Cost is estimated from token counts at list prices; Azure Cost Management has the actual bill.
The live studio is open to the judges through November 10: any @microsoft.com or @premierleague.com address signs in with a one-time code from Cloudflare Access. Every other visitor still meets the wall, and the daily model budget still caps what an open studio can spend.
The entry went in on October 24, three days before the deadline, and the repository went public with it, under the MIT licence. Every Code link on this site now opens the source.
Both videos side by side, on my channel, MATX104: the 101-second judges' cut and a four-minute walkthrough of every page. A script recorded them from the live studio, driving the browser and OBS on one clock, and Azure AI Speech voiced and captioned them. Every replay is one click away beside them, in the demo room.
The program feed for broadcasters and streaming platforms: a 16:9 frame that draws every strap, citation, receipt, player tag and card from the cue stream's own JSON, nothing placed by hand, with a replay player over a match recorded from the live studio.
Every ask of the challenge, row by row: what the brief required, what shipped, how it works underneath and where it goes next, each linked to its evidence. The same report is a PDF in the media kit.
Eight scenes teach the gap, the evidence law and the hash chain to anyone new, and the challenge page sets out the ask, the rules and the rewards.
In a settled match the ball changes hands about seven times in five minutes of open play. When it changes hands eleven times or more and both sides have had a shot, the match has broken open, and the Scout calls it end to end: about one match in two, never on a goal, because the goal is the news. The Critic recomputes it from the cited ball wins and both sides' shots, and HUD²'s commentator lens shows the index live, from settled to broken open. The studio's feed can now be read by the biggest moments first as well as the latest.
The same match on one heads-up screen, through the referee's, the commentator's or the fan's lens. The referee sees every foul with its distance from goal, the pressing, and the zones a likely call is read against at the competition's strictness. The commentator sees who's on the ball, the passes and shots, and the last five minutes in numbers. The fan sees who's on top, where each side has played, and plain words for anyone new to football. Every checked line is pinned where the events it cites happened, the Critic's lock closing on the spot, and every refusal is struck where it was aimed. Each viewer switches layers on or off, and the choice is kept. Today a screen; next glasses, then lenses.
The Critic now talks Agent2Agent (A2A) as well as MCP. Another agent reads its card, then hands it a claim or a question as a peer: Microsoft Agent Framework serves it, with no model inside, so its verdicts are computed and can't be talked round. Agent Framework's own A2A client checked it: a claim verified, the same claim a minute early refused, a question answered.
A fan who can't type can say the question, in English, Urdu or Arabic. The studio records it, Azure AI Speech turns it into words in that language, and the answer comes back checked and read aloud. Asked in Urdu who scored for an invented club, it named both scorers and their minutes, every number recomputed, and answered in Urdu. The audio is kept nowhere: only the words go on.
Ask the match a question, live or after full time, and the answer comes back checked. The model calls the Scout's tools for every number (function calling on Microsoft Foundry), and the Critic recomputes each count, checks each number and refuses any player the facts aren't about. On its first live run the model cited facts that were never counted; the Critic refused that draft, and the next one was right. Questions the events can't answer get fixed words. Offline, a rule-based answerer handles the common questions through the same Critic. Every question is screened by Prompt Shields (Azure AI Content Safety) before a model reads it. Measured on two unseen matches, 57 questions: the first run got every answerable one right but inferred "no signs of injury" from a player's pass counts, twice, so code now holds back what event data can't see before any model is asked.
The Critic checks numbers and citations by code. Microsoft Foundry's evaluators now read every line that aired against the fact sheet it came from, judged by a different model from the one that wrote it. They caught what code can't: colour the facts don't give, and a true number told as the wrong thing. The Narrator's instructions changed, and groundedness rose.
Every verified line can be read aloud by Azure AI Speech, in English, Urdu or Arabic, for fans who can't watch the screen. The voice reads only what aired: the studio asks for a line by its id, never with free text, so it says exactly what the Critic passed. Same Foundry resource, signed in with Entra ID, with a daily budget.
The first step on the road to an AI fourth official. When a foul carries a card or a penalty, the line states the referee's likely decision, read from Law 12 at the strictness the competition chose, and the Critic recomputes it from the foul before it airs. A harsher card than the Law gives is refused.
The generator's scorelines set against 7,559 real internationals: close on goals a match and on draws, a smaller home edge than real football, and too few goalless draws. Said plainly, and kept as a target for the generator. See the comparison.
Two more kinds of moment. A break: the ball won in a side's own half and a shot away within 15 seconds. The press: a side winning the ball back in the attacking third four times in ten minutes, told against how often it pressed there. The Critic recomputes both from the events, with a rule for each.
Personal modes from the rules' own list: pick a club, a player, or one number to follow. Your moments come first, marked in your club's colour; following one player keeps only their moments and adds a live card; one number gets a ticker for both sides. The models tell the line from your side, and the Critic checks it the same way.
At full time the match writes its own recap, and every line it writes passes the Critic first. The studio offers it to read or download. Read a sample.
The limits, stated plainly: how often the momentum calls are right, what synthetic data and event-only data leave out, and what "checked" does and doesn't mean. Read them.
moved to hudhud.com.pk. The studio went private behind Cloudflare Access, and its own Azure address now turns away anything Access didn't sign. Nothing secret is stored for it: the studio checks Cloudflare's signature on every visit.
The studio speaks Urdu and Arabic as well as English. The verified line is translated, and the translation is held to the same law: it may state no number the checked line doesn't, and every name stays as written. If it breaks either, the English line airs instead. I reviewed the wording myself and signed it off.
A great pass is now a moment of its own, with its distance, difficulty and accuracy; a fast shot says how fast. Every number is recomputed by the Critic from the match. Each cue tags its players, with badges when a shot passes 110 km/h or a pass is long or hard.
The Critic is an MCP server: GitHub Copilot, or any assistant that speaks the Model Context Protocol, can read a match and put a claim to the same Critic that guards the broadcast. An assistant can't vouch for its own numbers: each must be recomputed from the match or carried by an event it cites.
Watch a synthetic match narrated live, with every cue's receipt and the Critic's refusals on screen. Take the narrator off air and watch the broadcast keep going. It runs on Azure Container Apps with its own identity and no keys. It's private, behind Cloudflare Access: the demo video shows it at work.
gpt-5-mini and gpt-4.1-mini narrated the same 50 alerts from five unseen matches, judged by a rule fixed before the run. Both were grounded every time, with no invented numbers. gpt-4.1-mini put a cue on air in 1.3 seconds against 3.7, at a third of the cost, so it writes the commentary now.
Every line on air carries its receipt: who wrote it, how many numbers the Critic checked, how many facts it recomputed from the match, the events cited, the time from alert to air, and the tokens and cost.
Every agent's work traced into Application Insights, with keys off: each alert's outcome and the Critic's reasons, every model call with its tokens. A workbook charts it, and the demo video walks through it.
Each match's cues, the claims the Critic refused with its reasons, and the model cost go to an audit trail on Azure Cosmos DB's free tier. The writes run in the background, so a slow store can't delay a cue.
gpt-4.1-mini writes each line from a fact sheet that code prepared, and gpt-5-mini takes over if it fails. There are no keys: access is through Microsoft Entra ID only.
If a line states a number that code didn't compute, the Critic refuses it and sends it back to the model with its reasons.
A momentum claim must cite at least three of the side's own shots or passes into the final third, all from inside the spell it describes.
When model access failed during a test run, the broadcast switched to detection-only cues and said so on air, instead of going silent.
Each synthetic match hides the real momentum swings. The Scout makes few, sure calls: on matches never used for tuning, 62% of its calls are right, and it catches about a quarter of the swings.
Invented clubs and players, real-match volumes, calibrated over 100 seeds. The same seed gives the same match every time.
Stage two on the roadmap: when the referee makes a call, explains it to the crowd and the viewers, with the evidence and the Law it rests on, in their language.
The audit trail mirrored into OneLake, so every match can be queried in SQL and charted in Power BI. I weighed it for the hackathon and kept the build to Cosmos DB's free tier. It's the route the analytics will take as grows.
The hackathon is stage one. keeps going after it, toward an AI fourth official that sits beside the referee team, from the grassroots to the biggest international tournaments.
An official that watches every moment and judges calls in a blink, at the strictness the competition chooses. It shows the evidence for every decision and explains it to the referee, the broadcast and the crowd, each in their own language. It advises. The human referee decides.
The aim is a standard part of the game, in the most prestigious international tournaments and at every level beneath them, that adds understanding and takes nothing from football's beauty.
Commentary that proves every claim. Five agents, a Critic that refuses what it can't verify, and a broadcast that survives failure.
Bridge, live: the “Ref's call”. The Scout flags a foul with a card or a penalty in it, the Narrator states the likely decision, and the Critic recomputes it at the strictness the competition chose: lenient, standard or strict.
When the referee makes a call, explains it to the crowd and the viewers, with the evidence and the Law it rests on, in their language.
Gate: agreement with ground-truth decisions measured over many seeds, and explanations signed off by a referee panel.
The Scout gets eyes: fouls classified from multiple camera angles and from player tracking, with every prediction citing its frames.
Gate: matching published results on a public benchmark, with evidence attached to every call.
Real-time advice to the referee team, faster than a video review takes today. Flashpoint predictions, a published strictness spectrum, and announcements the whole stadium understands.
Path: simulation and esports first, then grassroots football, then professional trials inside the game's own rules, and the biggest tournaments once each step has proven itself.
Everything above has to reach people's eyes. HUD² is how: one match, and each viewer's own lens on it, shaped to their needs and their language.
ہدہد
hudhud, the hoopoe, in Urdu, Persian and Arabic
is the hoopoe's name. The bird carries news through some of the oldest stories in those languages, and in the best known, no one acts on its news until it has been checked.
The Quran, Surah An-Naml 27:20–28
King Solomon notices the hoopoe is missing and demands a clear reason for its absence. It returns from Sheba with news it calls certain. Solomon doesn't take its word for it.
بِنَبَإٍ يَقِينٍ
“With sure news.” 27:22
سَنَنظُرُ أَصَدَقْتَ أَمْ كُنتَ مِنَ الْكَاذِبِينَ
“We will see whether you have told the truth, or are one of the liars.” 27:27
He tests the report before he acts on it. That is the Critic's job: no claim reaches the screen until it has been checked against the match events. The hoopoe reported to a court, and so do the agents, which is why the code is called court.
Farid ud-Din Attar, The Conference of the Birds, 12th century
In Attar's Persian poem the hoopoe, once Solomon's messenger, leads the birds of the world in search of the Simurgh, their king. Thirty survive the journey and discover that si murgh means “thirty birds”: together, they are what they were looking for. The agents work the same way. None of them sees the whole match, together they do, and the Orchestrator leads.
Broadcast English
A HUD is a heads-up display, the layer of graphics over a live picture. That's what makes: verified cues, timed to the match and ready to overlay.
The mark
The hoopoe's crest fans open like a broadcast signal, and the mark gives it one feather per agent. The name says itself twice, hud-hud, two beats like a chant from the stands. Written short, it's : the display, squared.
The mark carries the match: the crest prints on the football, and a scope locks on the root of the tail — the point where all five agents meet and every claim is checked. The glyphs inside the feathers are the agents' own: the Scout's eye, the Narrator's pen, the Critic's check, the Localizer's globe, the Orchestrator's hub.
Every culture has a messenger that brings back the truth. Odin's ravens, Huginn and Muninn, fly over the world each day and report what they saw. Noah's dove returns with an olive leaf, proof in its beak that the flood is going down. Hermes carries the Greek gods' messages on winged sandals. In Urdu, Persian and Arabic, the messenger is the hudhud.
A one-man army: every agent and every line of code, the Azure and Cloudflare setup, the brand, this site and the video, built alone.
Muhammad Abdullah Tariq
Principal Software Engineer (DevOps), CISSP. Karachi, Pakistan.
I've spent seven years on cloud architecture, DevSecOps and migrations across 23 sites around the world. I grew up in Kuwait and speak Arabic, which is why is built to speak Urdu and Arabic as well as English. I'm building it alone: one engineer, five agents, ten days, and a road that goes well past the deadline.
A one-man club still gets a shirt. The builder's kit, home and away, in the colours of his own crest — obsidian and emerald, the sovereign palette — with the crown over the heart and the maker's sigil on the chest. Number 104: the handle since the first repository.
The greatest footballers and coaches study tape on the sides they're about to face, and while building this I studied the competition the same way. I read the other entries for what each one promised, how it framed the problem and what it chose to show. Seeing the field side by side showed me which ideas were well covered and where the open ground was. That study shaped this build's two headline features: a Critic that rejects unevidenced claims live, on screen, and an Orchestrator that recovers from agent failure without dropping the broadcast. My notes stay private out of respect for the other entrants. What I learned from them is in the work.
Questions about , the fourth-official roadmap or working together: message me on LinkedIn or X, or book a call.
stands on other people's data, teaching and tools. Each is named here with its author and license.
Shortcuts to the project's own addresses, and into the Azure and Cloudflare accounts that run : what it costs, the budget, the app's health, the AI models at work and their logs, and the wall in front of the studio. I use them while I build and while I record the demo.
A read-only check of the whole environment, run from the project's own command line (make doctor). Identifying details are left out.
Screenshots from the Azure portal. Identifiers, account names and email addresses are covered. Full-size copies are in the media kit on Google Drive.
Everything you need to see HUDHUD work — the videos, the interactive demos you can run right now, the evidence, and the code. Nothing to install for most of it; the full studio runs on any machine with one command.
These run in your browser, on a match recorded from the live studio. The lines, the refusals and the ledger are real; the studio itself is open to the judges only.
The same studio, on your machine, no Azure account needed:
git clone https://github.com/matx104/HUDHUD.git
cd HUDHUD
make setup
make studio-offline
Then open http://localhost:8091. Pick a match, kick off, take the narrator off air and watch the broadcast recover. With Azure: make studio runs it narrated by the Foundry models.
Every ask of the challenge, met and linked to its evidence. Read it or download the PDF.
1,815 events sealed into 111 blocks chained by hashes. Your browser recomputes every hash. Try it.
Every cue, refusal and answer kept on Azure Cosmos DB, 90 days. The control room on Azure shows the matches, the alerts, the costs.
278 tests on every push: the generator's realism, the Critic's rulebook, the workflow loop, the site and the studio. make test.
Both videos, the screenshots, the brand sheet, the deliverables report as PDF. Download the kit.
Public on GitHub at submission. Every agent, every test, every script. Source on GitHub.
There's no page at . Pick a chapter from the menu, or start from the beginning.