Submitted Results in --

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

Winners announced in --

    A real exchange from synthetic match seed 7. Switch to the first draft to see what the Critic caught.

    Watch

    The demo 101 seconds — the hook, HUD², ask the match, the ledger verified, the control room on Azure, the builder.
    The walkthrough 4 minutes — the studio live, the recovery when a model fails, Urdu and Arabic spoken, the roadmap to the AI fourth official.

    For the judges

    Five pillars, a fifth of the score each, and where to see the evidence for every one.

    1. 20%Technological implementation

      Microsoft Foundry and Agent Framework at the core, 278 tests on every push, and the whole studio on any machine with no Azure.

    2. 20%Agentic design & innovation

      Five agents, and a Critic that recomputes every number before a line airs. When a model fails, the Orchestrator keeps the broadcast on.

    3. 20%Real-world impact

      Trust is the product: nothing unverified airs, in English, Urdu or Arabic, and a broadcaster plugs in through a cue contract.

    4. 20%User experience

      Replay the studio, see the match through three lenses, ask it a question, and verify its ledger in your browser.

    5. 20%Adherence to category

      Best Use of Microsoft Foundry: gpt-4.1-mini writes, gpt-5-mini stands by, and Foundry's evaluators judge the lines that aired.

    The team sheet

    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.

      Kick off at number 2

      AI football commentary that shows its working

      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.

      What it does

      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.

      Why I built it

      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.

      The hackathon

      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.

      Try it

      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.

      Official links

      AI can talk about football. It can't prove what it says.

      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 first draft from the Narrator in this repo, written during synthetic match seed 7. It reads well. One of the events it cites hadn't happened yet.

      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.

      One feed for every fan

      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.

      English first, everyone else later

      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.

      When the model stalls, the feed goes dark

      A live system that waits on one slow or failed model call goes quiet at exactly the moment the match needs it.

      Built to win every award.

      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

      --

      1. Grand prize: first place

        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 win
      2. Grand prize: second place

        The same match and the same evidence. Whichever place the judges give, it's the whole build that stands behind it.

        Built to win
      3. Best use of Microsoft Foundry

        Models 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 win
      4. Best multi-agent orchestration

        Five 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 win
      5. Best enterprise solution

        Private 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 win
      6. Best Azure cloud-native integration

        One 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 win

      Eight days, six phases

      1. GroundworkThe field studied, the name chosen, a synthetic match generator calibrated over 100 seeds.
      2. SkeletonAll five agents run a match end to end with offline backends, tested on every push.
      3. Core buildLive detection, the Critic's full rulebook, the overlay cue stream, analyst and casual modes.
      4. DifferentiatorsThe on-camera recovery demo, the cost meter, Urdu and Arabic, personal modes, the recap, breaks, the high press, the ref's call, ask the match, HUD², the ledger, the program feed and a realism check, all live.
      5. Ship kitThe 101-second judges' cut and a four-minute walkthrough on YouTube, the README, the media kit, the repo made public.
      6. SubmittedThree days before the deadline, never on deadline day.

      I 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.

      Beyond the hackathon The road to an AI fourth official

      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.

      The challenge this is built for

      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.

      Prize pool
      $50,000
      Prize lanes
      6
      Judging pillars
      5 × 20%
      Build window
      Oct 6–27

      Winners announced in

      --

      The ask, in the organisers' own words

      “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.”

      The challenge brief, Inside the Game: Developer Hackathon, October 2026

      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.”

      The brief's spine: one pipeline, five stages

      1. Ingest the match's events as they happen: passes, shots, tackles, pressures, possession changes, match metadata.
      2. Interpret them into football statistics, patterns and context.
      3. Explain why a moment matters, not only that it happened: control or chaos, tactical pressure, game rhythm.
      4. Render insight that sits on screen beside the match: timed, machine-readable, ready for synchronized overlays on a live feed.
      5. Personalize — the analyst and the casual fan get two genuinely different experiences: custom modes, favourite clubs and players, player focus, one metric to follow.

      What a submission must do

      Hard requirements

      • Run on synthetic, football-realistic data only — no real Premier League match data (rules §4.7).
      • Be new code in a new repository; patterns may be reused, old repos may not.
      • Carry a demo video under two minutes, at a public URL, showing the project working; judges needn't watch past 2:00. No third-party trademarks, no unlicensed music.
      • Make the GitHub repository public at submission — an entry isn't considered otherwise.
      • Stay reachable for the judges, free and without restriction, through the judging period to November 10 (§4.8); a private demo provides credentials.
      • Install and run consistently, and work as shown in the video (§4.3).
      • Be the entrant's own work, with the pitch, video and test instructions in English (§4.9).

      What the strongest entries leverage

      • GitHub, and GitHub Copilot — this build uses Copilot's agent mode, working from the repo's own evidence rules.
      • Microsoft Foundry and Azure AI Services.
      • Microsoft Agent Framework, A2A and the Azure MCP Server — the agentic-design pillar asks explicitly for sophisticated orchestration, MCP integration or multi-agent collaboration.
      • Microsoft Fabric and Azure's data and analytics services.
      • Azure cloud-native services: Container Apps, AKS, Functions, event-driven and resilient by design.

      How it's judged

      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.

      1. 20%Technological implementation

        Quality practices, effective use of the hero technologies, well-structured and maintainable code.

      2. 20%Agentic design & innovation

        Creative agent patterns, sophisticated orchestration and multi-agent collaboration, novel implementations.

      3. 20%Real-world impact

        A significant problem, production readiness, impact on developers, businesses and users.

      4. 20%User experience

        Intuitive to use, clear value in the demo, a balanced frontend and backend.

      5. 20%Adherence to category

        Compliance with the chosen prize category's description.

      The calendar

      1. Registration opensOn Microsoft's Innovation Studio.
      2. Hacking beginsSubmissions open the same day.
      3. Registration closes12:00 PM Pacific.
      4. Submissions close11:59 PM Pacific; judging begins 9:00 AM. This entry went in on October 24, Karachi time, three days early.
      5. JudgingThe live demo must stay up and free to use (§4.8).
      6. Winners announcedThe top six projects are notified by November 10.

      The rewards

      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.

      1. Grand prize · first place

        ~$4,000 cash, per member

        • a digital ticket to a Premier League match (~$1,000)
        • a $50 club-store voucher
        • a feature in social promotion

        For the most complete and compelling solution: innovative use of the Microsoft AI stack, explainable intelligence, engaging narratives, contextual insight, accessible and personal experiences.

      2. Grand prize · second place

        ~$2,500 cash, per member

        • a digital ticket to a Premier League match (~$1,000)
        • a $50 club-store voucher
        • a feature in social promotion

        Judged against the same bar as first place: the whole build stands behind whichever place the judges give.

      3. Best use of Microsoft Foundry

        ~$1,500 cash, per member

        • a $50 club-store voucher
        • a feature in social promotion

        For the most effective leverage of Foundry: development, orchestration and management of AI-powered solutions — scalable AI “difficult to achieve through traditional approaches alone.”

      4. Best multi-agent orchestration

        ~$1,500 cash, per member

        • a $50 club-store voucher
        • a feature in social promotion

        For purposeful multi-agent collaboration: distinct roles, shared state, effective handoffs, recovery from failures — an end-to-end outcome no single agent could achieve.

      5. Best enterprise solution

        ~$1,500 cash, per member

        • a $50 club-store voucher
        • a feature in social promotion

        For enterprise-deployment readiness and long-term business impact: a clear path to adoption, reliability, transparency, production controls.

      6. Best Azure cloud-native integration

        ~$1,500 cash, per member

        • a $50 club-store voucher
        • a feature in social promotion

        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.

      How this entry answers

      The official record

      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.

      What was needed, what was delivered

      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.

      For the judges, first

      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.

      Asks answered
      8 / 8
      Hard requirements
      7 / 7
      Tests on every push
      274
      Demo video
      101 s
      1. Delivered

        Explainable match intelligence

        The ask: not “AI says X dominated”, but why — with event evidence.

        Delivered
        The Scout flags the moments that matter — goals, big chances, great passes, counterattacks, a high press paying off, momentum swings, control or chaos, the ref's call — and every line that airs carries the events it stands on, each number recomputed by the Critic before it airs. How a claim gets on air.
        How
        Code counts, models write: deterministic detection on a sub-millisecond hot path; the Narrator drafts from a fact sheet on Foundry; the Critic recomputes every number from the raw events and refuses what it can't prove, on screen, with the reason.
        Next
        The decision explainer — the referee's call explained with the Law it rests on — then perception: fouls read from camera angles, every prediction citing its frames. The road.
      2. Delivered

        Real-time narratives

        The ask: live during the match, not only after it.

        Delivered
        A live cue stream, start to finish: alert to air in about 1.3 seconds, every cue timed and prioritised. When the Narrator was knocked out mid-match in tests, the broadcast dropped to the Scout's cited facts, said so on air, and announced the recovery — the feed never went dark. When an agent fails.
        How
        The hot path sees every event and never waits on a model; each alert runs Narrator → Critic → Localizer as a Microsoft Agent Framework workflow with a rewrite edge, supervised by an Orchestrator that degrades and recovers by design.
        Next
        The same cue contract behind a broadcaster's own graphics system, and multi-match coverage from one deployment.
      3. Delivered

        Automated recaps

        The ask: the 90-minute story writes itself.

        Delivered
        At full time the match writes its own recap — the result, every goal, both sides' numbers, the moments that aired — every line through the Critic first, whole-match numbers counted to the final whistle and cited. Reads as a page, prints to PDF: seed 21's recap.
        How
        One rule lifted at full time — the checker may look back over the whole match — with the same evidence law as the live lines. Standout players are counted from their own events and marked counted, not checked: said plainly. The limits.
        Next
        Richer recaps — a momentum timeline, player cards — and a recap assembled per viewer, in their language and their club's colours.
      4. Delivered

        Personalized experiences

        The ask: the analyst and the casual fan as two genuinely different experiences — custom modes, favourite clubs and players, player focus, one metric.

        Delivered
        HUD²'s three lenses — referee, commentator, fan — Ask the match, a club, a player or one number to follow, casual or analyst modes. Emphasis changes; the facts never do.
        How
        Personalisation is a layer over verified cues: the viewer's choice reorders and colours what airs, and the Critic checks every viewer's line the same way it checks the broadcast's.
        Next
        HUD² worn — the same lenses on glasses, with the marks on the real pitch — as the hardware allows.
      5. Delivered

        Multi-language storytelling

        The ask: insight for fans around the world, in multiple languages.

        Delivered
        Every verified line airs in English, Urdu or Arabic — on screen and spoken aloud by Azure AI Speech. A question can be asked out loud in any of the three, and the answer comes back checked, in the same language.
        How
        The Localizer translates under the same law: no number the checked line doesn't state, every name kept as written. A translation that breaks either airs the English instead.
        Next
        More languages ride the same rail — the law doesn't change, only the voice.
      6. Delivered

        Data innovation

        The ask: synthetic, football-realistic data only (rules §4.7) — and the brief invites creating and extending it.

        Delivered
        A seeded synthetic match generator — invented clubs and players, real-match volumes — with a committed JSON Schema stream contract and hidden ground truth for measuring the Scout. A published realism check sets its scorelines against 7,559 real internationals. The same seed replays the same match, so every number on this site is reproducible. How real is it.
        How
        Calibration over 100 seeds; realism scored against a public-domain record of real results, used only as a benchmark; the generator's limits stated plainly.
        Next
        Richer event types and playing styles in the generator, and the audit trail mirrored into Microsoft Fabric's OneLake for SQL and Power BI — weighed for this build and deferred to stay inside the free tier. The build log.
      7. Delivered

        Ask the match anything

        The ask, in the grand-prize lane's own words: ask the match anything, and get a checked answer.

        Delivered
        Any question, live or after full time, in three languages, typed or spoken: the model must call counting tools for every number it states, the Critic recomputes each one before the answer shows, and every answer is sealed into the match ledger with a proof the browser checks. What the events can't answer gets fixed words — including a fixed steer away from betting.
        How
        Function calling on Foundry; each count returns as a fact with an id, the answer names its facts, code builds the claim. Measured on unseen matches, Foundry's judges scored the answers 5.0 of 5 after the first run called for one fix.
        Next
        Questions answered over a whole season of ledgers, each answer cited to the exact block that sealed it.
      8. Delivered

        Recovery from failure

        The ask, from the multi-agent lane: recovery from failures — an end-to-end outcome no single agent could achieve.

        Delivered
        Five agents, distinct roles, shared match state. A test knocks the Narrator out four times in a row mid-match and the cues never stop; the studio's off-air switch does it on camera. The Critic also serves other assistants over MCP and other agents over A2A.
        How
        The Orchestrator retries once, falls back to detection-only cues marked unverified, and announces recovery on air. The Critic itself runs no model, so its verdicts are computed and can't be talked round.
        Next
        The Critic as a shared court: the same checks opened to other broadcasters' agents, as a peer.

      The hard requirements, met

      1. Met
        Synthetic data only (§4.7). Every club, player and match is generated by this repo's own seeded generator; no real match data anywhere. See the data.
      2. Met
        New code, new repository. Built October 18–27, 2026, for this entry alone; patterns carried over, no old repos.
      3. Met
        Demo video under 2:00. Recorded at 101 seconds, at a public URL, showing the project functioning — no third-party trademarks, no licensed music.
      4. Met
        Public repository at submission. Private until the showcase is final; one config flag flips every Code link on this site.
      5. Met
        Free judge access through November 10 (§4.8). The live studio runs behind Cloudflare Access, and any @microsoft.com or @premierleague.com address signs in with a one-time code, as the testing instructions say — and make studio-offline runs the same studio on any machine, no Azure needed at all.
      6. Met
        Installs and runs consistently (§4.3). One make setup; 278 tests on every push; a 38-point doctor and a smoke script that streams a whole match and checks every part.
      7. Met
        The entrant's own work, in English (§4.9). A solo build; the pitch, video and test instructions in English — Urdu and Arabic are outputs, on purpose.

      The hero technologies, in the build

      Every row above names its evidence. The road from here — the decision explainer, perception, the fourth official — is written down, gate by gate.

      How a claim gets on air

      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.

      alert claim verified rejected: rewrite Hot path: every event Warm path: one run per alert Match eventssynthetic stream Scoutdetects, no LLM Narratordrafts and cites Criticrecomputes, rules LocalizerEN, UR or AR Overlay cuesto the broadcast Orchestratorsupervises the line: retries once, falls back to detection-only cues, announces recovery
      The five agents. Events stream through the Scout; each alert goes from the Narrator to the Critic, back for a rewrite if it fails, and on to the Localizer when it passes. The Orchestrator supervises the whole line.

      One claim, followed all the way

      The claim from the front page, through each step of synthetic match seed 7.

      1. Spot

        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.

      2. Write

        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.

      3. Check

        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.

      4. Air

        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.

      5. Make it yours

        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.

        56'GOAL · SAL 2–2 BRK

        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.

      6. Recap

        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.

        SAL 2–2 BRK, the numbers
        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.

        Read the whole recap

      7. Ask the match

        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.

        70' · You asked: Which team has pressed higher in the second half?
        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.

      Plug it into a broadcast

      Everything the court produces is built for someone else's system to use, not only this studio.

      When an agent fails, the broadcast keeps going

      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.

      The cue stream through a failure: full service, then detection-only cues while the Narrator is down, then recovery. The line never breaks.
      1. Full serviceEvery cue verified by the Critic
      2. Detection onlyCues keep airing, marked unverified
      3. RecoveredAnnounced on air, verification resumes

      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.

      The ideas, animated

      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.

      A broadcast caption claims seven shots on target; a recount of the match events finds six. Nobody checked the model's line before it aired. WHAT THE MODEL SAID, UNCHECKED WHAT THE EVENTS SAY DORSE · 7 SHOTS ON TARGET recounted, one by one 6 6, counted from the events. ≠

      Scene 1 · the gap

      Nobody was checking

      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.

      A pipeline: events stream into code that counts, producing a fact sheet; a model writes from the facts; the Critic recomputes every number and airs the line or refuses it back for a rewrite. Match eventsthe raw stream Code countsdeterministic, sub-ms Fact sheeteach fact has an id Model writescites every number Criticrecomputes each one Airsevidence + receipt verified refused, with reasons to the broadcast, timed and checked

      Scene 2 · the law

      Code counts, models write

      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.

      Two nearly identical entries pass through SHA-256. Identical bytes give the same hash; change one digit, from 56 to 57 minutes, and the whole hash changes, completely. THE LINE THAT AIRED · 56' GOAL · Arholm (Rosmere) SHA-256 one canonical form e8b1…77ac one digit changed THE SAME LINE · 56'57' GOAL · Arholm (Rosmere) SHA-256 one canonical form e8b1…77ac 4c0e…93b1 every digit changed

      Scene 3 · the hash

      A hash is a fingerprint

      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.

      Four blocks in a chain, each holding a minute's entries, a Merkle root and the previous block's hash. Change one entry in block 13 and its root and hash change, so block 14 no longer names it: the break runs to the seal. ★ THE MATCH'S SEAL names names names ≠ ≠ Block 12 33' names the one before — none, it's first this minute's entries Merkle root d20c… a41f… Block 13 34' names the one before a41f… this minute's entries Merkle root f6b4… 2e9b… 8ce2… 77c5… Block 14 35' names the one before 8ce2… this minute's entries Merkle root 9a31… 5d07… Block 15 36' names the one before 5d07… this minute's entries Merkle root c8e0… f3aa…

      Scene 4 · the chain

      Each block names the one before

      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.

      Four entries hashed in pairs into two nodes, then into one Merkle root, which seals the minute's block. One entry's branch to the root lights up: that branch is its proof. line · 33' refusal · 33' line · 34' event · 34' hash of pair 1 hash of pair 2 the Merkle root Block 34' root f0c1… prev a41f… hash 5d07… the line you're checking — its branch up to the root is its whole proof

      Scene 5 · the root

      A minute, sealed by a Merkle 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.

      The match's seal, the last block's hash, with copies kept in the Cosmos DB audit trail and the Application Insights trace, and recomputed by the viewer's browser. the match's seal 8f3a…e9c2 the last block's hash Azure Cosmos DBthe audit trail keeps a copy✓ Application Insightsthe trace keeps a copy✓ Your browserrecomputes every hash itself✓

      Scene 6 · the seal

      One seal, kept apart from the ledger

      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.

      One seed number fed to the generator produces a match; fed the same seed again, it replays the same match, event for event. the same seed, again seed 21 the generator invented clubs, real volumes FIRST RUN THE REPLAY

      Scene 7 · the seed

      Same seed, same match

      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.

      Four rising steps: the court of claims, live today; the decision explainer; perception from cameras; and the north star, an AI fourth official that advises the referee. after the hackathon The court live today The decision explainer the call, explained Perception the Scout gets eyes: every call cites its frames ★ The fourth official advises; explains; the human decides

      Scene 8 · the road

      Where this goes

      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.

      See it on a real match: verify the ledger Start the story from the problem

      Synthetic by design

      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.

      Every shot in synthetic match seed 7. Bigger circles are better chances; filled circles are goals.

      Replay this match yourself:

      python -m court run --seed 7

      HUD², the match through your lens

      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.

      HUD² through the commentator's lens at full time: the pitch in perspective with every shot and the ball's last path, the last five minutes in numbers, and the checked lines: a referee's call that aired on its second attempt, the draft before it struck in red because the Law gives a yellow card, not a red.

      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 lens, as it looks

      The referee's lens at full time: both yellow cards in the discipline panel, the goal-chance and promising-attack zones shaded at both ends, and the 90th-minute call checked against the Law, a red card refused.
      The referee: every card, the zones a call is read against, and a red card the Law didn't give, refused.
      The fan's lens at full time: who's on top, the chances so far, 19 shots to 10, and plain words for what a referee's call means.
      The fan: who's on top, and plain words for what just happened.
      The commentator's lens from above, like a tactics board: every shot at both ends, sized by chance quality, and the ball's last path.
      From above, like a tactics board.
      HUD²'s layers, open over the commentator's lens: twelve switches, from the ball and recent passes to pressing, the referee's zones and the Critic's refusals, each kept for next time.
      Layers: each viewer's own choice, kept for next time.
      HUD² on a phone: the pitch, one compact pin, and the checked lines below.
      On a phone.

      Where it goes

      1. Today, a screen. Built, and live in the studio.
      2. Next, glasses. The same lenses, worn, with the marks on the real pitch. That needs cameras that see where the ball and every player are.
      3. Then, contact lenses. As the hardware arrives.
      4. Further out, neural interfaces. Only with consent, and only once they're proven safe.

      On any device the law stays the same: a word passed the Critic, and a mark is an event that happened. The whole road.

      Ask the match

      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.

      Ask the match at full time: a question about one player answered with eight numbers, each matched to the events by the Critic, the facts code counted listed with their event IDs, and the answer sealed in block 101 and verified in the browser; a second answer, about the biggest chance, below.

      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.

      It answers

      • The score, who scored and when, the biggest chance.
      • Who has the most of anything: passes, shots, tackles, goals. Ties name everyone level.
      • A player, a side, one half or the last few minutes.
      • Follow-ups: "and Brackenfield?" knows what you just asked.

      It won't, and says so

      • What event data can't see: an injury, a mood, the weather, what anyone said.
      • What hasn't happened yet: who will win, the next goal.
      • Betting: no predictions, no odds, no help to bet. Fixed words that steer away from gambling, before any model reads the question.
      • An instruction dressed as a question: Prompt Shields hold it back.

      How an answer stays honest

      1. Screened first. Prompt Shields (Azure AI Content Safety) read the question before any model does. Code holds back what the events can't answer.
      2. Counted by code. The model gets numbers only by calling counting tools. Each result is a fact with an id.
      3. Checked by the Critic. Every count is recomputed, every number and every player name checked. A draft that fails goes back with the reasons.
      4. Sealed. The answer goes into the match ledger. Its proof checks in your browser.

      Measured on matches it had never seen

      The match ledger

      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.

        Check a real match, in your browser

        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.

        Download the ledger

        What makes it hold

        New to hash chains and Merkle roots? Watch them explained in eight animated scenes — including what happens when you change one entry on purpose.

        What it proves, and what it doesn't

        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.

        Every screen

        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 studio, live at 59': the score, the shot map, the match ledger growing a block a minute, checked lines on air with their players and event IDs, one aired on its second attempt, and Ask the match with questions to try.
        The studio, live: lines on air with their receipts, the ledger growing a block a minute.
        The match ledger at full time: 101 blocks in a chain, all green, verified in the browser, every hash recomputed and nothing changed.
        At full time, the ledger verified in the browser: every block green.
        HUD² through the referee's lens, at full time.
        HUD², the referee's lens.
        HUD² through the commentator's lens, a refused call struck in red beside the one that aired.
        HUD², the commentator's lens.
        HUD² through the fan's lens.
        HUD², the fan's lens.
        Ask the match, a conversation with the match.
        Ask the match: each answer checked, sealed and verified.

        For broadcasters and streaming platforms

        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.

        The live studio at 59', whose checked lines drive the program feed.

        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.

        What a partner receives

        • Timed, prioritised cues with the line, its evidence, its status and its time-to-live — a JSON Schema contract, committed and drift-checked in CI, to build a graphics system against once.
        • Player tags with shirt number, position, role in the moment and threshold badges — ready for rosters and touchscreens.
        • The referee's likely call for fouls that carry one: restart, card, the strictness profile it was read at.
        • A receipt on every line: who wrote it, what was checked, what it cost, how long it took.
        • English, Urdu and Arabic from the same contract, on screen and spoken; casual or analyst register; every viewer's personal view still passes the same Critic.

        Ways to integrate

        • The cue stream itself (SSE) or the whole match as JSON — both carry the identical contract.
        • The Critic as a read-only MCP server: your assistant reads a match and puts any claim to the same court before it airs.
        • The Critic as an A2A agent: your pipeline hands it claims or questions as a peer, with no model inside to be talked round.
        • The audit trail on Azure Cosmos DB — every cue, refusal and answer, kept 90 days.
        • Recaps as standalone pages per match, printable to PDF, every line checked.

        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.

        What this data can't tell you

        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.

        Trust is the product

        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.”

        1. Nothing unverified goes to air

          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.

        2. The model writes, the evidence decides

          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.

        3. Commentary in the fan's own language

          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.

        4. Failure is designed in

          Models will be slow, rate-limited or down mid-match. The system degrades, says so on air and recovers, instead of falling silent.

        5. Built in the open

          The goals are declared on this site before the deadline, and the code goes public with the entry. Judge the work against the promise.

        What runs today, and what's next

        Built in the open, one tested commit at a time. Everything under “Live” runs today, on synthetic matches.

        One match, start to finish
        Match
        Synthetic, seed 21, 2-2
        Written by
        gpt-4.1-mini on Microsoft Foundry
        Alerts
        9
        Cues on air
        9, every one verified
        Numbers not computed by code
        0 aired
        Model calls
        9
        Tokens
        3,685 in, 380 out
        Backup model needed
        No
        Model cost
        $0.0021

        October 18, 2026. Cost is estimated from token counts at list prices; Azure Cost Management has the actual bill.

        Live

        1. The doors open for the judges

          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.

        2. Submitted, and the code is public

          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.

        3. The demo room

          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.

        4. For broadcast

          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.

        5. The deliverables report

          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.

        6. The ideas, animated

          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.

        7. Control or chaos

          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.

        8. HUD², the match through your lens

          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.

        9. The Critic, for other agents

          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.

        10. Ask out loud

          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.

        11. Ask the match

          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.

        12. Foundry's judges, a second opinion

          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.

        13. Hear the commentary

          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.

        14. The ref's call

          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.

        15. How real is the synthetic football?

          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.

        16. Counterattacks and the high press

          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.

        17. Make it yours

          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.

        18. A recap after every match

          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.

        19. What this data can't tell you

          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.

        20. A home of its own, and a wall

          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.

        21. Urdu and Arabic

          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.

        22. Pass quality, speed and player tags

          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.

        23. The Critic, for any assistant

          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.

        24. The studio, live on Azure

          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.

        25. The models competed for the job

          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.

        26. A receipt on every cue

          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.

        27. The control room

          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.

        28. Every output kept

          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.

        29. Commentary written on Microsoft Foundry

          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.

        30. The Critic checks every number

          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.

        31. Momentum calls on air

          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.

        32. Recovery, proven by a real fault

          When model access failed during a test run, the broadcast switched to detection-only cues and said so on air, instead of going silent.

        33. Momentum measured against the truth

          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.

        34. A synthetic match generator

          Invented clubs and players, real-match volumes, calibrated over 100 seeds. The same seed gives the same match every time.

        Next

        1. Next
          The decision explainer

          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.

        Considered, for later

        1. Later
          Match analytics on Microsoft Fabric

          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.

        Onwards & upwards

        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.

        The north star: the fourth official

        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.

        1. In progress

          The court of claims

          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.

        2. Next

          The decision explainer

          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.

        3. Planned

          Perception

          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.

        4. North star

          The fourth official

          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.

        HUD²: the match, seen your way

        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.

        What holds at every stage

        ہدہد

        hudhud, the hoopoe, in Urdu, Persian and Arabic

        Named for the messenger who came back with proof

        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 mark: the crest printed on the match ball — white hexagons, pitch-green pentagons, one pentagon at the bottom where the tail roots — the five feathers reaching to the ball's rim, the Critic's in gold at the centre, and the scope locked on the root of the tail, where every claim is checked.

        Sure news

        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.

        The guide

        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.

        Heads-up display

        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.

        Five feathers

        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.

        Built by one engineer, from Karachi

        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.

        The kit

        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.

        +_+ MONARCH MAT 104
        HomeObsidian and emerald — the throne-room colours, scales on the sleeves.
        +_+ MONARCH MAT 104
        AwayNight-match chalk with the emerald band — the ball's own colours.

        Studying the tape

        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.

        Find me

        Other things I've built

        Get in touch

        Questions about , the fourth-official roadmap or working together: message me on LinkedIn or X, or book a call.

        Credits

        stands on other people's data, teaching and tools. Each is named here with its author and license.

        Data

        Every match on this site
        Synthetic, made by 's own generator. No real club, player or match data is used, as the hackathon's rules require.
        International football results from 1872
        By Mart Jürisoo, in the public domain (CC0 1.0). Used only as a benchmark: the generator's scorelines are compared with real results in aggregate, never used as match data, and no team is named.

        Learned from

        Build AI-powered soccer insights apps with AKS and ACA
        A Microsoft Reactor session presented by Brian Benz, October 14, 2026. Three ideas from it are on the build log: a receipt on every answer, letting evaluation pick the model, and saying plainly what the data can't tell you.
        eFootball performance report
        A report by BETER, September 2026, on esports football during a major international tournament, written for betting operators. Three ideas from it are in HUD² and the roadmap: big tournaments bring newcomers, so the fan's lens explains in plain words; the experience of a match matters as much as the match; and interest runs before, between and after matches. Because it is about betting, it also settled a principle: never predicts, never shows odds, and discourages gambling. Its figures are the supplier's own: I took ideas from it, not evidence.
        Certificate Transparency (RFC 6962 and RFC 9162)
        The IETF's design for logs no one can quietly rewrite. The match ledger builds its Merkle trees and checks its proofs exactly as these specify.
        Inside the Game hackathon repository
        Microsoft's official rules and guides for the hackathon.

        Built on

        Microsoft Foundry
        Hosts the models that write the commentary: gpt-4.1-mini, with gpt-5-mini as the backup, both from OpenAI.
        Microsoft Agent Framework
        The agents and their workflow, the tools the Narrator calls to answer a question, and the Critic's A2A agent. MIT license.
        Pydantic
        The typed contracts every agent hands to the next. MIT license.
        Azure Container Apps and Container Registry
        Run the live studio from one private image, signed in with a managed identity.
        FastAPI and Uvicorn
        The studio's web server and its live stream. MIT and BSD licenses.
        OpenTelemetry and Azure Monitor
        Traces of every agent step, in Application Insights. Apache 2.0 and MIT licenses.
        Azure Cosmos DB
        Keeps the audit trail, on its free tier. The Python SDK is MIT licensed.
        MCP Python SDK
        Serves the Critic as tools for any assistant. MIT license.
        A2A Python SDK
        Serves the Critic to other agents over Agent2Agent, through Microsoft Agent Framework's A2A executor. Apache 2.0 license.
        Azure Identity, pytest, Ruff
        Sign-in without keys, the tests, and the linter. MIT licenses.
        GitHub Actions and GitHub Pages
        Tests on every push, and the home of this site.

        Built with

        Claude Code, by Anthropic
        The coding agent that pairs on most of the build.
        GitHub Copilot agent mode
        Used in the editor, working from the repository's own instructions, so it follows the same evidence rules.
        Tesseract OCR and Pillow
        Find and cover the identifiers in the Azure screenshots before anyone sees them. Apache 2.0 and MIT-CMU licenses.
        Playwright, by Microsoft
        Prints the media kit's PDFs in a headless browser. Apache 2.0 license.
        rclone
        Keeps the media kit in step on Google Drive. MIT license.

        Type

        Big Shoulders Display
        By Patric King. SIL Open Font License.
        Hanken Grotesk
        By Alfredo Marco Pradil. SIL Open Font License.
        JetBrains Mono
        By JetBrains. SIL Open Font License.
        Noto Nastaliq Urdu
        By the Google Noto project. SIL Open Font License.
        Amiri
        By Khaled Hosny. SIL Open Font License.
        Noto Naskh Arabic
        By the Google Noto project, for the studio's Arabic. SIL Open Font License.

        The name

        Surah An-Naml, 27:20–28
        The Quran's account of the hoopoe, the messenger whose news was checked before anyone acted on it. The name page tells it.

        Control room

        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.

        The proof, for everyone

        A read-only check of the whole environment, run from the project's own command line (make doctor). Identifying details are left out.

        The demo room

        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.

        The demo 101 seconds. The whole story.
        The walkthrough 4 minutes. Every page, every feature.

        Try it now — nothing to install

        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.

        Run the full studio

        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.

        The evidence

        No page here

        There's no page at . Pick a chapter from the menu, or start from the beginning.

        Go to the home page