BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Explained match intelligence from synthetic football events, for the Microsoft Premier League Hackathon: on-screen graphics that explain each moment in a headline and a few lines of text. Agent Framework agents on Microsoft Foundry redraft some of them, code checks every figure, and a producer can approve, edit or kill each one.
翻訳待ち
Loading the full README.
Read the full README ↗Explained match intelligence from synthetic football events: on-screen graphics that explain each moment in a headline and a few lines of text. Entry to the Microsoft Premier League Hackathon ("Inside the Game").
Video, 1:55: https://youtu.be/rT6zPgLGF38. Its footage is filmed from the deployed demo.
The football here is synthetic. The league, clubs, players, officials and matches are fictional and generated by code in this repository. No real match events, footage, clubs, players or crests are used. Names were checked against real people and clubs; see docs/data.md.
Who it's for and why: docs/audience.md. What each viewer sees: docs/experience.md. Scope and done-list: SCOPE.md.
The demo runs on Azure until judging ends on 10 November 2026, free and with no sign-in: https://ca-web-kwy7jucrk2pdm.whitepebble-d77f6eb9.westus3.azurecontainerapps.io. It replays the showcase match, Saltmarsh Rovers v Kingsferry Athletic, as if it were live.
On the start page, pick who to watch as, where to start and the speed, then Start the replay. A replay begins 30 seconds before the minute picked. Starting as Nadia, the producer, leaves each graphic for her to approve; starting as a fan approves graphics as they're found, and the console's Approve automatically switch changes that either way. Watch as, above the match, switches between the producer and the fans at any point. At 2×, each of these takes a few minutes:
The fifth profile, Priya, owns Teo Varlan in a fantasy league and watches in analyst mode, focused on him, with pass difficulty pinned. A fan's Settings change the mode, club, player in focus, pinned metric, language, stream delay, calm mode, the pitch view and its graphics, and the described feed.
flowchart TB
replayer["Replayer"] -- "feed" --> eh[("Event Hubs")]
eh --> processor["Processor<br>models, insights, templates"]
processor -- "checkpoints" --> blob[("Blob Storage")]
processor -- "state, graphics, jobs" --> pg[("Azure Database<br>for PostgreSQL")]
pg -- "jobs" --> agents["Agents service<br>Agent Framework writers,<br>MCP match tools, checks,<br>translation, producer's desk"]
agents -- "drafts, translations" --> pg
agents -- "Responses API" --> foundry["Foundry<br>gpt-5-mini"]
agents -- "wording in English" --> translator["Azure AI Translator"]
agents -- "traces" --> appi["Application Insights"]
processor -- "events, graphics" --> wps["Web PubSub"]
agents -- "graphics" --> wps
wps --> browser["Browser"]
browser --> web["Web app<br>Next.js"]
web -- "client tokens" --> wps
web -- "start, stop" --> replayer
web -- "snapshots, evidence" --> pg
web -- "producer's actions" --> agents
The four services run as container apps in one Azure Container Apps environment and authenticate with managed identities, so no service uses a key or password. What each one does, how a replay flows through them, the latency measured on the deployed stack and the cost: docs/architecture.md.
This is the beginning of the README. Read the rest at the original. Read the full README ↗