โœจ 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. localhost was 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
Share this project:

Updates