Inspiration

About 50 million American adults played fantasy sports in 2022: FSGA reports 50.4 million U.S. players aged 18+. About half of partnered U.S. adults said their partner was often or sometimes distracted by their phone during conversation: Pew Research Center reported 51% in May 2020, from its October 2019 survey.

Amazon has been Thursday Night Football's exclusive home since 2022 under an 11-year NFL deal, and 2025–26 began its new 11-year NBA agreement, with NBA media-deal coverage and first-season reporting providing context. Fantasy players follow both sports; AZ Fantasy puts their teams where they watch.

I'm one of those people. I want to be in the moment with family and friends and still follow my fantasy team. That's why I built AZ Fantasy: a Fire TV companion that keeps my team in view and brings scoring alerts to the screen, even when the player is in a different sport from the game I'm watching.

What it does

Start in the app before returning to the game. In Connect, link the TV from your phone: scan the QR code on the TV, confirm on the phone (the code is already filled in), and the TV is linked. Typing the code on the link page remains the fallback.

In My setup, turn NFL and NBA alerts on or off, choose alert types, set quiet hours and streaming-provider preferences, and choose whether new alerts open the full lineup with “Open lineup on alerts.”

My lineup opens with NFL and NBA tabs and shows every starter in roster order with their position, live fantasy points, game time (or BYE) and the team total. NFL points last the whole fantasy week; NBA points are daily. Choose Show over game to start the corner card and return to watching. From My lineup, Expand over game opens the larger overlay instead.

While you watch any live game, AZ Fantasy shows your fantasy team in a corner card. It supports NFL and NBA, so the sport on the television does not have to match the sport that produces an alert. A basketball player scoring can matter to your fantasy team even while you are watching football.

The remote handles the main controls. Double-tap the menu button, ≡, to switch teams. Hold it to open a menu with Expand, League and Hide. Choose Expand for a larger view of your lineup. These interactions keep you with the game.

Lineups are entered manually today. Yahoo Fantasy API approval did not arrive in time for the submission, so the live demonstration uses manual lineups.

How we built it

The TV app uses Kotlin and Jetpack Compose on Fire OS. Its corner card, alert cards and expanded panel put fantasy information over the viewing experience, with the remote as the main input.

The backend is defined with AWS SAM. AWS Lambda runs the application logic, Amazon API Gateway HTTP API connects the TV to the backend, and Amazon DynamoDB stores the application data. Amazon EventBridge Scheduler triggers feed polling. AWS Systems Manager Parameter Store is part of the backend configuration.

We use ESPN public feeds for live NFL and NBA statistics. The backend connects those updates to the players in a manual fantasy lineup and sends the relevant information to the TV. ESPN's live play feed omits player identifiers, so matching scoring plays requires parsing the play text.

Security. Linking uses a random, one-time 8-character code that expires; the TV never handles a password. The server stores only SHA-256 hashes of the TV's session tokens and polling handles, never their raw values. The phone link page warns users not to enter a code sent by someone else and is served with a strict Content-Security-Policy and frame blocking. Yahoo credentials stay out of source in SSM Parameter Store, and IAM permissions are scoped per function.

Challenges we ran into

Vega and its virtual device. We ported the companion to Vega OS (Kepler SDK 0.24) and tested it on the Vega Virtual Device. That took the most debugging of the project:

  • The VVD booted only with a specific lock and graphics setup.
  • It reported "ready" before input actually worked.
  • Its screenshot tool produced empty captures, and release-app logs were missing.
  • Networking did not work behind a host-name allowlist proxy until we built a workaround.
  • The documentation disagreed with itself on supported hosts and versions.
  • A legacy storage binding lost the signed-in session on every relaunch.

We repaired our own bugs along the way (session storage, the default panel selection). In the end the Vega build showed live NBA alerts and a refreshing panel on the VVD. We could not test it on physical Vega hardware.

Getting an alert onto the TV during a game. Standard Fire OS notifications posted, but never appeared over the video with actions. Placing a panel beside uncropped video was not possible either. We built our own overlay instead: a small corner card plus alert cards that never take focus from the game. They are driven by the remote's ≡ button through an accessibility key filter. Fire OS does not list that service in Settings, so setup needs adb, and the overlay permission has no settings screen at all.

Fantasy data access. Yahoo's Fantasy API returned 403 for unapproved apps even after OAuth succeeded. We applied for access, signed the agreement and registered a new app, then shipped manual lineups so the product works today. Yahoo's Fantasy API access approval did not arrive before the submission deadline, so the product ships with manual lineups.

Live sports data. ESPN's live NFL feed leaves the player off scoring plays. The first live game produced touchdowns by our own lineup and no alerts. We found the cause during the game and now read the player from the play text.

The first live night. It exposed more problems, all fixed during the game:

  • The TV dropped alerts for players outside the team on screen, which removed the cross-sport moment.
  • Raw debug labels appeared on the card.
  • Players with no stats showed "Unavailable".

Two problems remain: alerts reached the TV about 70–90 seconds after the play, and the Watch flow was not tested live. Prime Video also blocks screenshots on some frames, so we recorded the stick's own screen to prove what viewers saw.

Accomplishments we're proud of

On October 22, 2026, the Fire TV stick's own screen recording captured the companion working during live Thursday Night Football on Prime Video. A “D. Maye · SCORE” alert appeared. Later, “C. Holmgren · SCORE” arrived from Denver at Oklahoma City while the NFL game was still on screen. An “A. Gordon · SCORE” alert appeared too.

That cross-sport moment is the clearest demonstration of the idea: the viewer stayed with football while the companion followed basketball. The same night's corner card showed NE at CHI, the fourth-quarter clock, a fantasy total and D. Maye's points. The expanded panel also showed an NBA lineup for CLE at PHI.

What we learned

A live game answers questions that a static layout cannot. The card has to be readable without taking over the picture, and the remote controls have to be simple enough to use while following play. Rebuilding the UI during the game made those choices concrete.

We also learned to separate useful live behavior from finished behavior. Seeing the right player's alert arrive proved the connection from a scoring event to the TV. The 70–90 second delay showed why that connection still needs work. Capturing an alert and testing the Watch flow are separate checks; one does not prove the other.

What's next

First, reduce the observed alert delay and check the result during another live game. Improve play-text matching, make the accessibility setup clearer, and test the Watch flow live. We also need another live pass through the rebuilt UI and a capture approach that accounts for Prime Video's blocked frames.

Next, add real accounts and sign-in, complete Yahoo access and connection setup so we can move beyond manual lineups, then add more leagues and sports. The next version should make the experience easier to set up and faster to follow while preserving the simple corner card and remote controls.

Prime Video already offers FanDuel bet tracking during Thursday Night Football, as reported in September 2026. AZ Fantasy could eventually show your bets next to your fantasy team on any game you watch. This is a future idea for tracking only, never placing bets; no partnership with Amazon, Prime Video or FanDuel is implied.

Built With

  • amazon-api-gateway
  • amazon-dynamodb
  • amazon-eventbridge-scheduler
  • aws-lambda
  • aws-sam
  • aws-systems-manager
  • espn
  • fire-os
  • fire-tv
  • jetpack-compose
  • kotlin
  • python
Share this project:

Updates

Submission history