LORE: Turn Twitch moments into legends

"wait im new here, whats the pillar landing thing??" A new viewer typed that into our Twitch chat during a live test, seconds after the rest of chat had spammed "PILLAR LANDING" for a minute straight. Everyone else was in on the joke. They weren't. On most channels, that question scrolls away unanswered, and the moment that started it disappears when the stream ends.

LORE gives a Twitch community a way to keep its legends. When something unforgettable happens on stream, chat summons it with !lore, names it in a live vote, and canonizes it as a collectible card with a real Twitch clip, signed by every viewer who took part. Newcomers who ask "what's that thing?" get initiated into the joke on the spot. Regulars prove they were there in the Lore Trials. Every legend lives on in a public archive. The ritual begins with "chat is losing it" and ends with "this is our history."

Explore LORE online · Source on GitHub

Try it in 30 seconds:

  1. Open the overlay demo. It plays every scene over our demo game, Bucket Quest. No login, no install.
  2. Open the archive and click the Pillar Landing Unbound card. It was canonized live on Twitch, and it carries the real clip.
  3. To run the whole ritual yourself: npm install, npm run seed, npm start, then use the control room's crowd simulators.

Six-second recording at 30 fps: chat's moment is revealed as a Legendary LORE card, signed by every witness, with the CANONIZED stamp.

This is the real run on our Twitch channel: chat summoned the moment, voted on its name, and LORE canonized it while the bot posted the auto-created clip in chat.

The LORE card revealed live on Twitch, with the bot posting the canon and the auto-created clip in chat.

Inspiration

  • Every community runs on inside jokes. Emotes, copypastas and running gags are how Twitch chats talk to each other. They are also how a viewer becomes a member: you belong once you get the joke. But that shared history lives nowhere. It is scattered across VODs, clips nobody can find, and the memory of the regulars.

  • Newcomers are left outside. A new viewer sees chat spamming a phrase and has no way to learn why. Asking feels awkward, the question scrolls away, and the moment that could have pulled them in is gone. Twitch already has a moment designed to bring new people in, the raid, but raiders arrive with zero context for the community they just joined.

  • Chat wants to author, not just watch. The interactions chat loves are the ones where it has a short, clear job and a big shared payoff. We wanted a ritual where chat does the writing, the streamer does nothing extra, and the result is something the community keeps.

What we heard in our own test

  • The question came unprompted. In our final live run, a fresh account asked "wait im new here, whats the pillar landing thing??" within seconds of the moment being canonized. LORE recognized the reference, explained it in chat with the clip, and celebrated the initiation on stream.
  • The evidence shaped the product.
    • Newcomers phrase questions casually, so initiation listens for natural questions, not only commands.
    • Chat bursts arrive together through EventSub, so the ritual counts distinct witnesses, not message order.
    • The overlay blocked the game in our first test, so we rebuilt it as a broadcast layout.

What it does

  • Summon. After a big moment, viewers type !lore. Each one becomes a witness and locks onto a summoning circle in a side panel. Enough witnesses, and the ritual begins.

The summoning circle in the right-side panel, with witness avatars and a 3/3 counter.

  • Name it. LORE creates a real Twitch clip of the moment, reads the last 40 chat messages and the stream context, and drafts three names. Chat votes 1, 2 or 3 in a lower third, while the game stays visible.

Three title options with live vote bars in the lower third.

  • Canonize. The winner is revealed center stage as a collectible LORE card with its story, date and every witness's avatar. Rarity is participation: 1 to 3 witnesses mint a Common card, 4 to 6 Rare, 7 to 9 Epic, 10+ Legendary. The bot posts the canon in chat with the clip link.

A Legendary LORE card reveal, signed by ten witnesses.

  • Initiate newcomers. "What's the bucket thing??" or !lore bucket triggers an initiation: the bot explains the joke with the clip, and an "Achievement Unlocked" toast welcomes the new member on stream.

  • Lore Trials. The streamer types !trial. Chat answers a quiz built from the channel's own canon, and the fastest correct viewers climb the Loremasters podium.

The Lore Trials panel with a revealed answer and the Loremasters podium.

  • Living lore. When three chatters repeat a canonized phrase, a "Lore recalled" chip appears, so old jokes stay alive. When a raid lands, a Twitch-purple alert welcomes the raiders and deals them the channel's top three lore cards, with an invite to type !lore.

The raid alert and the welcome panel with the channel's top lore.

  • The archive. A public page with a living starmap and a collectible card binder. Every card opens its origin story, its witnesses and its real Twitch clip, next to the Loremasters leaderboard.

The archive: a starmap of lore and the Loremasters leaderboard.

Value for streamers and communities

  • Content that writes itself. Every canonization is a ready-made highlight: a clip, a title chat chose, and a story. The streamer just plays.
  • A reason to show up together. Rarity rewards participation, so chat has a reason to rally at the big moments.
  • Onboarding that feels like belonging. Newcomers and raiders get the context they were missing, from the community itself.
  • One browser source. LORE runs as a single OBS overlay, with a control room for rituals, trials, pacing and crowd simulators. It works with zero AI keys.

How we built it

  • OpenAI Codex, one thread from start to finish. We built LORE with the Codex CLI in a single thread (session 01a19d28-4159-73c3-bd36-d3f64e531f16), one focused prompt at a time. All 17 prompts are committed in codex-prompts/ in order, and Codex followed the project rules in AGENTS.md. Between steps we reviewed screenshots of every scene at 1920x1080 over real gameplay and gave Codex precise fix lists. Every step ended with npm run smoke, an offline test that plays a full ritual, initiation, trial, recall and raid with stubbed Twitch calls.

  • Six Twitch integrations, each doing real work:

    • EventSub WebSocket, channel.chat.message, receives every !lore, vote, answer and question.
    • EventSub channel.raid triggers the raid welcome.
    • Send Chat Message posts canons, explanations and raid greetings.
    • Create Clip and Get Clips preserve each canonized moment.
    • Get Users puts witness avatars on cards and toasts.
    • Get Streams and Channels give the naming step its context.
  • A ritual engine built for live chat. A Node.js state machine (summoning, deciphering, voting, canonized) queues rituals so they never collide with trials. A pressure detector notices phrases spiking in chat, recall detection uses per-lore cooldowns, and JSON persistence uses atomic writes.

  • Naming with or without AI. With an OpenAI API key, LORE drafts titles, an origin story, a newcomer explainer and a quiz question. Without one, a deterministic drafter finds the phrase chat was repeating, so any streamer can run LORE for free.

  • An overlay made for broadcast. One 1920x1080 OBS browser source with GSAP timelines and a shared canvas particle system. Graphics live in a right-side panel and a lower third; only the card reveal takes center stage. Every visual is CSS, SVG or canvas, and every sound is synthesized with the Web Audio API, so there are no asset files to license.

  • A demo game of our own. Bucket Quest is an original, self-playing side-scroller we built as stream content for the demo, with a scripted "impossible" landing for chat to canonize.

Challenges we ran into

  • Flashy versus readable. Our first overlay was loud but sat over the middle of the game, and its text was unreadable at stream size. Watching frames from a real stream led to a broadcast layout, a design system with Inter for body text, and solid panels behind every line.

  • Real chat is messy. Our newcomer detection expected "what is X". Real viewers type "wait im new here, whats the pillar landing thing??". We rewrote it to understand natural questions anywhere in a message, with a cooldown so it never spams.

  • Twitch delivers bursts. EventSub sometimes delivered several !lore messages at once, and brand-new accounts are rate limited. The ritual counts distinct witnesses rather than timing, and our demo chat was paced like real viewers.

  • Free to run. We kept every feature working with zero AI keys, so the AI is an upgrade, not a requirement.

Accomplishments that we're proud of

  • The full loop, live on Twitch. With real accounts on our channel, chat:

    • summoned a moment;
    • voted on its name;
    • canonized it with an auto-created clip;
    • initiated a newcomer;
    • played a scored Lore Trial;
    • recalled an old joke;
    • welcomed a raid.
  • Rarity driven by participation. Chat is rewarded for showing up together, and every witness is on the card.

  • Tested and public. A fresh clone installs and passes the offline end-to-end test. The overlay demo and archive run on GitHub Pages with no install.

What we learned

  • Communities want to author. The best interactions give chat a short, clear job (!lore, 2, B) and pay it off with a moment everyone sees.
  • Belonging is a feature. The most useful thing LORE does may be the quietest: answering a newcomer's question with the community's own story.
  • Design for the stream, not the screenshot. An overlay is judged at stream size, over a moving game, by people half-watching. That changed every layout decision we made.

Why LORE fits this challenge

  • It meets every judging criterion. The official criteria weigh innovation, potential impact, technological implementation and design equally:

    • Innovation: a new ritual in which chat writes its own canon, with rarity earned by participation.
    • Potential impact: streamers get content, regulars get legacy, newcomers and raiders get welcomed.
    • Technological implementation: EventSub chat and raids, Helix chat, clips and users, tested live, built in one Codex thread with every prompt in the repo.
    • Design: a broadcast layout that keeps the game visible, readable at stream size, and fun to watch.
  • It is made for TwitchCon. Raids, clips, emotes and chat are what make Twitch different. LORE is built from those pieces and only makes sense on Twitch.

What's next for LORE

  • A Twitch Extension panel. Viewers could browse the archive and their own witness history right on the channel page.
  • Raid lore exchange. When two communities meet in a raid, they could trade their best lore cards.
  • Lore anniversaries and seasons. "One year ago today, the Pillar Landing" moments, and seasonal Loremaster badges.
  • Pilot with real streamers. We want small and mid-size communities to try LORE, so their feedback shapes the next version and more newcomers get the joke.

Built With

Share this project:

Updates

Submission history