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: !bpm shows both heartbeats in chat. !ticket gives 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

Share this project:

Updates

Submission history