Inspiration
Football tactics begin spatially. A coach points to an area, draws a run, or remembers a moment when the team created space. Most analysis platforms immediately force that idea into filters, timestamps, coordinates, or database terminology. Chat interfaces have the opposite problem: they make the coach translate a visual idea into prose.
I wanted to explore a different relationship between a coach and an AI agent: one where the tactical board itself becomes part of the conversation.
Match Room is built around a simple division of responsibility:
The coach brings judgement. The agent brings search. The pitch is their shared language.
WebMCP made it possible to connect the agent directly to the live semantics of the application. The coach can draw what they mean, and the agent can read that visual state without asking them to restate coordinates or describe what is already visible.
What it does
Match Room is a WebMCP-native football review workspace built around a complete 44:55 first half from the SoccerTrack v2 dataset.
The coach can draw a destination zone, sketch a complete route, or describe a tactical moment. ChatGPT reads the live workspace and searches 1,029 observed actions, tracking snapshots, video, and reconstructed play sequences.
The agent can:
- Rank attacks ending inside or near a drawn zone.
- Search complete routes by origin, shape, destination, and entry direction.
- Find temporal chains such as a successful tackle followed by a shot.
- Open an exact observed moment and synchronize the video, pitch, clock, and timeline.
- Compare two attacks at their start, final pass, or outcome.
- Save coach-selected examples to a review tray.
Search results configure the visible interface instead of returning hidden JSON. Candidate searches deliberately do not move the video or choose an answer for the coach. Only an explicit focus request seeks to the evidence.
If the requested pattern did not occur, Match Room returns zero evidence. It never silently replaces the request with a more convenient event.
How we built it
The project combines deterministic football evidence with a live, agent-readable React workspace.
SoccerTrack BAS events + GSR tracking
↓
Deterministic Python adapter
↓
Normalized evidence manifest
↓
React workspace + shared state reducer
↓
Six native WebMCP tools
↓
ChatGPT ↔ coach ↔ shared pitch
Offline Python adapters normalize SoccerTrack BAS action labels and GSR tracking frames into a static evidence manifest. The browser does not need a database, API server, model inference backend, or access to the original multi-gigabyte tracking source.
The interface is built with React 19 and TypeScript. An SVG tactical pitch, HTML video player, evidence cards, timeline, comparison view, and review tray all share the same reducer state.
Match Room registers six semantic tools through document.modelContext.registerTool():
get_match_room_contextshow_match_sequencesexplore_match_evidencefocus_match_sequencecompare_match_sequencesadd_sequence_to_review
These tools read and mutate the same state as the human interface. The result of an agent action is therefore visible and inspectable by both the coach and the agent.
The public application is deployed with OpenAI Sites. Its 1080p match video is delivered from Cloudflare R2 through a range-aware Worker, allowing the browser to request only the byte ranges needed for playback and distant seeks.
The implementation is covered by unit tests, evidence validation, rendered-browser tests, and discovery and invocation tests against Chrome’s real WebMCP host.
Challenges we ran into
The first challenge was establishing a strict evidence boundary. SoccerTrack BAS labels determine what happened, while deterministic code calculates distances, local counts, team shape, temporal chains, and route similarity. The agent can arrange and describe those observations, but it cannot create an event or prove tactical causality.
Synchronizing several representations of the same moment was also difficult. Video time, match clock, action IDs, tracking frames, tactical routes, and timeline marks all needed to remain aligned when the agent opened or compared evidence.
Another important challenge was preserving human control. Early agent experiences tend to jump immediately to one result. In Match Room, searching and focusing are separate operations: search arranges candidates without moving the video, and only the coach’s explicit selection changes focus.
The original tracking source was too large for a browser application. I built a deterministic preparation pipeline that preserves the complete first half while producing a compact evidence manifest. For the final 1080p video, byte-range delivery through Cloudflare R2 and a Worker made long seeks practical without downloading the whole file first.
Finally, WebMCP is still an emerging browser capability. Tool registration, cleanup, JSON-serializable results, real Chrome discovery, and visible UI mutations all needed to work together rather than relying on a mocked integration.
Accomplishments that we're proud of
- Registering six working WebMCP tools directly against the live React state.
- Making a drawing on the pitch a genuine search query rather than a decorative input.
- Indexing all
1,029observed actions across the complete first half. - Reconstructing
110broad play sequences and11finishing sequences deterministically. - Keeping video, tracking, event chains, pitch routes, measurements, and comparisons inspectable together.
- Returning no result for impossible requests instead of inventing or substituting evidence.
- Separating candidate search from explicit focus so the coach retains tactical control.
- Validating the workflow through both real Chrome WebMCP and ChatGPT Site Tools.
- Delivering the experience as a working public application rather than only a technical prototype.
The accomplishment I value most is that WebMCP does not feel like an integration added beside the product. It changes how the product can be used: the coach and the agent genuinely operate the same workspace.
What we learned
An agent-native interface is not simply a conventional application with a chat box. The application must expose meaningful operations and enough live context for the agent to understand what the human is already seeing.
Visible mutations are also essential for trust. Returning structured data is not enough when the user needs to evaluate the agent’s reasoning. Evidence cards, routes, timestamps, video, and measurements must all remain open to inspection.
I also learned that constraints can improve the human-agent experience. Preventing search tools from seeking automatically initially felt restrictive, but it created a clearer and more respectful division between machine search and human judgement.
Finally, deterministic data and generative interaction complement each other well. The agent provides flexibility in how a question is expressed, while the evidence engine keeps the answer grounded.
What's next for Match Room: Football’s Shared Language
The next step is to move from one public research match to user-provided matches, multiple teams, and reusable analysis workspaces.
I would like to add:
- Secure ingestion pipelines for event, tracking, and video providers.
- Cross-match pattern search and opponent comparison.
- Larger libraries of coach-curated examples.
- Collaborative review rooms for analysts and coaching staff.
- Richer route similarity and phase-of-play models.
- Saved tactical concepts that remain inspectable across matches.
- Additional WebMCP tools as the browser standard evolves.
The long-term idea is not an AI that claims to understand football better than the coach. It is an evidence workspace that helps the coach search more of the match without giving up judgement.
Built With
- chatgpt
- openaisites
- python
- r2
- react
- soccertrack
- svg
- typescript
- webmcp

Log in or sign up for Devpost to join the conversation.