Inspiration

Twitch chat is full of great ideas: "talk like a pirate", "play it blindfolded", "draw it with your eyes closed". But they scroll away in seconds. Nobody knows what's coming next, and the viewers who make a stream fun get nothing back. We wanted to give chat a real way to steer the show, with the streamer always in control.

What it does

LiveDares lets chat dare the streamer, and the streamer does it live.

  • A viewer types !challenge do a victory dance in Twitch chat, or sends an idea from the web page.
  • OpenAI moderation screens the idea, then GPT-4o mini turns it into a short, safe dare with a title, a description and a countdown, returned as structured JSON.
  • The dare appears instantly on the streamer's dashboard and on a transparent OBS overlay, and the bot announces it in chat.
  • More ideas wait in a queue, and chat votes with !vote 1. The streamer can start the most-voted dare by hand or automatically.
  • When the streamer finishes and hits Done (or types !done), the viewer who suggested the dare earns 100 points. The overlay celebrates with confetti and updates the live leaderboard.
  • Three overlay themes (Midnight lime, Ember orange, Studio white) switch live from the dashboard.

How we built it

  • Node.js + Express with Socket.IO, so the dashboard, overlay and chat stay in sync in real time.
  • tmi.js for Twitch chat commands and bot replies, plus the Twitch API for the live game and stream title as context.
  • The OpenAI API: omni-moderation-latest screens every idea, and gpt-4o-mini with a strict JSON schema writes the dare.
  • SQLite (better-sqlite3) keeps the queue, votes, leaderboard, history and theme across restarts.
  • HTML, CSS and JavaScript for the dashboard and the 1920×1080 OBS overlay, in light and dark themes.
  • Deployed on Railway with persistent storage.

How we used OpenAI Codex: we used Codex throughout the build. It helped connect Twitch chat to the challenge flow, build the live dashboard and OBS overlay, and add the challenge queue and voting. We also used it to investigate errors, write the automated tests, and refine the experience as we tested it live on Twitch.

Challenges we ran into

  • Keeping AI output safe for a live stream: we used two layers, OpenAI moderation before generation and a required safe flag in the structured output.
  • Fairness when chat is busy: we added per-viewer cooldowns, one-at-a-time processing and private page votes.
  • Keeping chat, the page and the overlay in sync, so every vote and result shows up everywhere at once.

Accomplishments that we're proud of

  • The full loop runs live on a real Twitch channel: chat → OpenAI → dashboard and overlay → points → leaderboard.
  • Anyone can try it in seconds from the web page.
  • 28 automated tests, run by CI on every push.
  • An overlay that looks great on stream, with a countdown, a result moment and three live themes.

What we learned

  • Structured outputs make AI responses dependable enough to drive a live interface.
  • Safety and fairness matter as much as the fun part when chat has the controls.
  • Small touches like confetti, bot replies and points are what keep viewers playing.

What's next for LiveDares

  • Channel Points and Bits to boost a dare.
  • Multi-channel support for many streamers.
  • Dare categories tuned to the game being played.
  • A Twitch Extension panel for suggesting and voting.
  • Automatic clips of completed dares.

Built With

Share this project:

Updates

Submission history