โจ Inspiration
Ok real talk, every friend group has that ONE argument that refuses to die. ๐ vs ๐ฎ. Who's actually funny. Who really carried the group project. It never gets settled because nobody has the authority to call it. So we gave that authority to a bot with zero chill. Meet 67, an AI that lives in your group chat, picks sides, and ends debates with receipts. ๐งพ๐ฅ
We did NOT want another polite "as an AI language model I can't pick a favorite" bot. Gross. We wanted a menace. ๐
๐ What it is
67 is a real-time group chat with an AI character living in every room. Your friends argue,
67 reacts live, and when you tag it (@67 who won) it drops a verdict: the winner, the
reasoning, and a roast for the loser. ๐ Spin up a room, drop the QR, and the whole squad piles
in from their phones in seconds. There's a leaderboard tracking who 67 has crowned, and yes, 67
keeps a per-room memory and plays favorites. iconic behavior honestly.
๐ ๏ธ How we built it
- Frontend: Next.js 16 (App Router, TS, Tailwind v4), mobile-first because nobody's arguing from a desktop ๐ฑ
- Backend: NestJS + Socket.io gateway for that real-time, no-refresh chat energy โก
- DB: PostgreSQL via TypeORM
- The brain: Z.ai GLM server-side. Reactions stream in live, verdicts come back as structured JSON, and there's a deterministic fallback so the whole demo runs with no API key. no notes. ๐ง
- The soul: 67's entire personality lives in an editable
soul.md, and every room gets its own context-isolated agent with its own vibe and its own memory. ๐
๐ฎโ๐จ Challenges we ran into
- Making 67 opinionated without letting it fully lose the plot. Tuning the sass so it's spicy but still picks a real winner is harder than it looks. ๐ถ๏ธ
- Memory isolation. Room A's drama can NOT leak into Room B, no exceptions. We wrote an 11/11 isolation test to prove people, topics, and verdicts stay locked to their room. โ
- The classic "let phones scan the QR" boss fight.
localhostwas not it, so the QR auto-encodes the server's LAN IP and we proxy sockets through one tunnel for anywhere-access. ๐
๐ง What we learned
- Streaming tokens absolutely bodies waiting for a wall of text. Live reactions make 67 feel alive.
- Personality is a product feature, not a gimmick. The sass IS the virality. ๐
- Constraints are lowkey a cheat code. That no-API-key fallback forced an architecture that never flops on stage. ๐ค
๐ What's next
More personalities, group tournaments, and shareable verdict cards so the roasts escape the chat and hit the timeline. fame is the goal. ๐ค
Built With
- glm
- next.js
- z.ai
- zymix
Log in or sign up for Devpost to join the conversation.