-
-
A downloaded ticket PNG: 254 messages, 4 shared peaks. The viewer's chat moments glow on the show's heartbeat graph.
-
Live on stream: the BPM Log overlay in OBS. Streamer heart rate (pink) vs Crowd BPM (cyan), with a PEAK banner when chat explodes.
-
Demo studio: simulate chat bursts through the same pipeline as real Twitch chat, so anyone can try BPM Log with zero viewers.
-
Real Twitch chat: type !bpm and the bot replies with both heartbeats. !ticket sends each viewer a personal ticket link.
-
Your proof you were there: a personal ticket stub with the show's heartbeat, your messages, and the peaks you were part of.
-
Dashboard: live streamer and crowd heartbeats, chatter count, and the full-show graph.
Inspiration
The best moments of a live stream vanish the second they happen. Streamers can't easily see which moments their community loved most, and viewers have nothing to remember the night by. BPM Log started as an app that records your heart rate at concerts and games and prints that excitement graph onto your ticket. We asked: what if every Twitch stream had a ticket like that?
What it does
- Two heartbeats, live on stream: an OBS overlay graphs the streamer's heart rate next to the chat's collective excitement, the Crowd BPM, calculated in real time from message speed, unique chatters, emotes and hype words.
- Automatic peak detection: when chat spikes above its baseline, BPM Log fires a 🔥 PEAK banner on stream and records who was there.
- Chat commands:
!bpmshows both heartbeats in chat.!ticketgives any viewer their personal ticket. - Personal ticket stubs: the whole show's heartbeat graph with your messages glowing on it, the peaks you were part of, minutes present and message count. Download it as a PNG.
- Demo studio: simulate chat bursts through the exact same pipeline as real chat, so any streamer can try it with zero viewers.
How we built it
Built in one night with OpenAI Codex (Codex CLI, one main session). I described the product and the milestones; Codex wrote:
- Node.js + Express server and Twitch OAuth (authorization code flow with token refresh)
- EventSub WebSocket client (
channel.chat.message) and replies through the Helix Chat API - The BPM engine: smoothing, rolling baseline, peak detection, per-viewer records
- The WebSocket-driven OBS overlay, the SVG ticket renderer, and unit tests
When something broke, I described it and Codex fixed it — for example, rescaling the overlay as a 1920×1080 stage so it never clips, and letting one account act as both broadcaster and bot without reply loops.
Challenges
- Making Crowd BPM feel like a heartbeat instead of a noisy counter (smoothing + rolling baseline).
- Demoing on a brand-new channel with no viewers, solved by the Demo studio, which feeds the same pipeline as real Twitch chat.
Accomplishments
It works end to end on real Twitch chat: !bpm and !ticket reply in chat, the overlay runs live in OBS, and the tickets are something viewers actually want to keep.
What's next
- Real heart rate from Apple Watch and other wearables (HypeRate / Pulsoid). In this MVP the streamer's heart rate is simulated behind a provider interface that is already in place.
- A weighted multi-signal Hype Score: heart rate weighted highest, then voice volume and speed, then chat, emotes and follows.
- A post-stream recap showing streamers which of their moments fans loved most.
- Hosted public ticket pages and a Twitch Extension.
How BPM Log fits the judging criteria
- Innovation: Heart-rate overlays exist, but BPM Log adds a second heartbeat — the chat's — and turns each stream into a collectible ticket for every viewer. Nobody leaves a stream with a souvenir today.
- Potential impact: Streamers see which moments their community loved most; viewers get proof they were there. Works for any category — games, IRL, sports, music.
- Technological implementation: Twitch OAuth, EventSub WebSocket chat, Helix Chat API, a smoothed real-time BPM engine with peak detection, and unit tests — all built with OpenAI Codex.
- Design: A bold, high-contrast overlay that scales to any OBS layout, and a concert-style ticket designed to be shared.
Built with
node.js · express · websockets · twitch-api · eventsub · javascript · svg · obs · openai · codex
Built With
- codex
- eventsub
- express.js
- javascript
- node.js
- obs
- openai
- svg
- twitch
- websockets
Log in or sign up for Devpost to join the conversation.