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_context
  • show_match_sequences
  • explore_match_evidence
  • focus_match_sequence
  • compare_match_sequences
  • add_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,029 observed actions across the complete first half.
  • Reconstructing 110 broad play sequences and 11 finishing 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

Share this project:

Updates