Inspiration
I’d seen streamers switch to emote-only chat to avoid spoilers during a first playthrough. That protects the surprise, but takes away some of the conversation that makes streaming fun.
I wanted streamers to keep the reactions and jokes while discovering the game for themselves. That became FirstPlay.
What it does
FirstPlay screens Twitch messages before they reach the streamer’s protected reader. Viewers keep ordinary Twitch chat and install nothing.
Filtering follows the player’s confirmed discoveries. “That Boomerang looks funny” might reveal an unfamiliar creature’s name. After discovering it, that reaction can pass. “Cook the Boomerang” still gives an unwanted instruction.
The Chrome extension replaces My Chat in Twitch Stream Manager. Moderators have a separate view for uncertain messages, decision reasons, and corrections.
How I built it
I used Codex throughout the build, including the Twitch integration, filtering pipeline, browser extension, recognition helper, and tests.
A local Node.js service receives messages through Twitch EventSub. A text model interprets them using authored game context and confirmed discoveries. A separate rules layer allows, blocks, or holds each message for review. Approved messages reach the reader unchanged.
For automatic progress tracking, Apple Vision reads supported English labels locally on macOS. Four matching frames across two checks are required before adding a discovery. Updates include evidence and Undo.
The recorded-gameplay rehearsal uses manual discovery confirmation. Automatic recognition is a separate, limited feature.
Challenges
Understanding meaning was harder than matching keywords. “I need to water my houseplants” is conversation. “Catch a bladderfish and make water” is gameplay advice.
Progress tracking also required careful boundaries. Seeing an item’s name doesn’t establish its recipe or use. Model failures, expired reviews, and outdated results must keep unchecked messages hidden.
One debugging challenge involved Apple Vision returning a lookalike character in a water label. Codex helped diagnose it and add a narrow correction with a regression test.
What I learned
Much of the work sits around the model: defining knowledge, validating results, and handling changes while requests are running.
The project passes 134 controlled tests, but those checks don’t establish a spoiler-detection accuracy rate. Broader gameplay and representative chat still need evaluation.
What’s next
The current pilot focuses on the Subnautica opening on macOS and Chrome. Next, I want to reduce screening delay, independently review more examples, and expand support through carefully authored game packs.
Built With
- api
- apple
- chrome
- codex
- css
- eventsub
- extensions
- html
- javascript
- node.js
- oauth
- objective-c
- openai
- twitch
- vision
Log in or sign up for Devpost to join the conversation.