Cricket draws a bigger global audience than almost any other sport, but on Fire TV in the US it's often background noise — a match is on, something dramatic just happened, and the viewer has no idea why the crowd is losing it. We wanted to close that gap the way a knowledgeable friend would: not with a rules glossary, but with "it's like that moment in football, except..." The Fire TV track made this concrete — a living-room screen, a second-screen companion, and a format (sport-to-sport analogy) that's genuinely hard to fake convincingly, which made it an interesting constraint to design around rather than a gimmick.

What it does

Same Game watches a cricket match and, whenever something match-defining happens — a six, a wicket, a Super Over, a last-ball finish — explains it in the terms of whatever sport the viewer already follows: American football, basketball, baseball, or soccer. The line always follows the same shape: a plain statement of what just happened, then "it's like [a moment from your sport], except [the one thing that's different]." A viewer can also ask their own question about what's on screen, and get an answer scoped to that moment only. The Studio side lets a reviewer approve, edit, or reject each sport-to-sport comparison before it's ever shown to a viewer, and a live tracing screen shows judges exactly what the system checked and why, call by call, as it runs.

How we built it

The core design decision was to split "knowing what happened" from "saying it well." A deterministic pipeline — plain code, no model — computes every fact: the score, the moment type, who's involved, what's mathematically possible from here. That fact record is the only thing ever handed to the AI, and the AI's only job is to phrase it, using a comparison that's been written and signed off by a human reviewer ahead of time. Before anything reaches a viewer, the generated line passes through checks for numbers, names, sentence length, banned words, and whether it stayed in the sport the viewer picked; a failure triggers one retry with specific feedback, and if that fails too, a pre-approved template line goes out instead — so there's always a safe answer, never silence or a guess. Code computes every fact; AI only writes the wording, and every line is checked before it airs.

We built this as a FastAPI service designed for Lambda, with DynamoDB for session and rate state, S3/CloudFront for packaged content, SQS for background work, and Bedrock Guardrails as a second layer behind our own validators. We kept the choice of underlying model and the live match data source open rather than hard-coded, since both were still moving as we built. On the Fire TV side, the app is React Native on Vega OS, with the focus-management and animation approach chosen around the SDK's specific quirks rather than assumed defaults. We proved the whole pipeline offline first, with a fake model standing in for Bedrock, so the safety behavior could be tested deterministically before any real model call was involved.

Challenges we ran into

The hardest problem wasn't generating text — it was proving the text could be trusted. Published research on sports-text generation shows most errors are wrong numbers or wrong names, so we built the validators around exactly that failure mode first, then layered in sport-vocabulary and context checks once we started finding our own mistakes in testing (an analogy that mentioned "Super Over" outside of one, a line that used baseball words for a soccer fan). We also had to be deliberate about what we would and wouldn't use: no scraping sites whose terms don't allow it, no real players' names or league trademarks in anything AI-written, which ruled out some of the most obvious analogy material and pushed us toward generic, reviewer-approved comparisons instead. On the Fire TV side, a few assumptions from general React Native experience didn't hold on Vega — the focus API and a commonly-used animation library both needed a different approach than we expected, caught only by testing on the actual SDK rather than reading the docs.

Accomplishments that we're proud of

We're proud that the safety design isn't a claim we're making about the system — it's something we tested. We built an offline prototype that exercises the entire pipeline (detection, fact computation, AI wording, validation, retry, fallback, guardrails, rate limiting, audit logging) and backed it with an automated test suite and a scenario-based evaluation harness, and that harness caught three real bugs — a misrouted question, invented data in a fixture, and a hollow answer with no real comparison behind it — before they could have reached a judge or a viewer. We also built a genuine human-in-the-loop review step for every sport comparison rather than trusting the model's taste, which matters more than it sounds like in a domain where a bad analogy is obvious to anyone who knows either sport.

What we learned

The biggest lesson was how much of "AI safety" in a narrow domain comes down to taking almost nothing away from the model. Once facts are computed by code and the comparison text is pre-written and reviewed, the AI's job shrinks to something small and checkable, and that's what made rigorous automated testing possible at all. We also learned to treat our evaluation set as seriously as our code — a handful of hostile or edge-case questions found real gaps that normal testing wouldn't have surfaced, and several of our own sport-analogy drafts turned out to be factually wrong once we checked them against the actual rules of the away sport.

What's next for Same Game

Next is closing the gap between the finalized design and the current prototype: wiring in a real, licensed live-match data feed, finalizing the model choice behind a config switch we've already built for, and running the full sport-comparison library through human review at scale rather than our current hand-reviewed sample. Beyond the hackathon, we'd like to add more home-sport options, a Spanish-language pack (the validators already support it), and a companion mobile app so the explanation follows the viewer off the TV screen.

Built With

Share this project:

Updates

Submission history