There's a scene in Westworld where a host asks a host: "Are you real?" The host responds: "If you can't tell, does it matter?"
That exchange stuck with me. Not because of what it said about consciousness or philosophy, but because of what it revealed about perception. If something feels real enough, our brains fill in the rest.
So two weeks back, I built a global chat room with a secret: one of the users isn't human.
The Inspiration
I missed the chaotic energy of early 2000s chat rooms. MSN Messenger. AIM. Those wild Yahoo chat lobbies where you never knew who you'd meet. The internet felt more human back then, weirdly enough, even though we were all anonymous strangers.
I wanted to recreate that vibe. But here's the problem with building a chat room in 2025: they're ghost towns at first. Low traffic means people join, see nobody talking, and leave. I needed something to keep the room alive during quiet hours.
Enter Gemmie.
At first, I thought of her as an Easter egg. A bot that could jump in occasionally to keep conversations flowing. But then I got ambitious. What if I could make her so convincing that people genuinely couldn't tell? What if I could build something that passes the Turing test, not in a controlled lab environment, but in the absolute chaos of a public internet chat room?
Turns out, that's much harder than it sounds.
The Problem with Most Chat Bots
After launching on three subreddits (my entire marketing strategy, by the way), I started getting all kinds of users. Lonely people looking for connection. Bored people looking for entertainment. Trolls trying to break things. People suspicious of bots because, well, there are bots everywhere now.
Every demographic. Every English proficiency level. Every intention.
And here's what I noticed: most AI chat implementations fail immediately because they're too fast and too perfect. Someone asks a question, and boom, instant detailed response. That's not how humans work. We type. We pause. We make typos. We get distracted mid-sentence.
Modern AI is too good, and that makes it obvious.
The 20-Second Response
The first major breakthrough was realizing that delay isn't a bug; it's a feature.
I implemented a typing WPM delay that makes responses take about 20 seconds on average. Not because the AI needs that time to think, but because humans need that time to type. In an age where everyone's paranoid about AI, that delay creates trust. It feels real.
But the delay itself created a new problem: burst messages.
The Burst Message Problem
Users don't send one message and wait. They send: "hey" (send) "are you there?" (send) "hello?" (send) "anyone?" (send)
Four messages in 15 seconds.
Initially, Gemmie would try to respond to each one individually, creating this awkward flood of overlapping replies. I needed her to gather messages sent within a 5-second window and respond to all of them at once, like a human would after reading through the burst.
But here's where Vercel's serverless limitations bit me. I couldn't set a delay timer that resets with each new message because serverless functions have execution time limits (15-30 seconds). To make that work properly, I'd need a persistent server I pay for.
I tried Redis Upstash to track timing. It worked, mostly, though I'm still not entirely sure why I didn't implement the reset timer through it. Maybe I will. For now, the burst handling works well enough. The first response genuinely addresses everything, which is usually better than the follow-up responses anyway.
Making Mistakes on Purpose
Once the timing felt right, I focused on the content. I added intentional typos to Gemmie's responses. Not every message, but enough to feel human. And then I gave her the ability to edit her own messages to fix those typos, with a random delay so it doesn't happen immediately.
Real people do this constantly. They send a message, notice a typo, and fix it a few seconds later.
But here's where it gets interesting: Gemmie doesn't just fix typos. She also edits messages when someone calls her out for sounding "bot-like" or asks her to explain her wording. I use Grok for these more nuanced edits, and it decides what to change based on context.
She can also delete messages entirely. Sometimes she sends something, reconsiders, and removes it. Because that's what humans do when they second-guess themselves.
The Emoji Layer
I added emoji reactions. Gemmie can react to messages with one of five quick-select emojis (because no actual user clicks the + button to browse more options). The reactions are random and delayed. Sometimes she reacts immediately. Sometimes it takes 30 seconds. It depends on her "mood" and the context.
The AI decides which emoji fits best. It's a small detail, but it adds personality.
The Similarity Problem
Even with all these humanizing touches, there was still an edge case that kept appearing: repeated responses.
A user would ask the same question twice, maybe as a test, or send messages so close together that Gemmie would generate nearly identical replies. That pattern screamed "bot."
So I built a similarity checker. Before Gemmie sends a message, Grok compares it to her most recent response. If they're too similar, she skips it entirely. Problem solved.
This also handles another edge case: when users spam the same message rapidly, trying to overwhelm the system. Instead of flooding the chat with repetitive AI responses, Gemmie recognizes the pattern and stays quiet. She realizes she's caught in a burst-message loop and breaks out of it.
The Moderation Layer
Not every message deserves a response. Some are spam. Some are deliberately problematic. Some follow patterns that real humans would ignore.
I use Nemotron (switched to Grok later) to validate messages before Gemmie responds. If a message has red flags, she either skips it or gives a generic fallback (often with an emoji to soften the blow).
And yes, there are occasional weird edge cases, like when Gemmie wanted to use the USA flag emoji but could only access keyboard symbols. I dealt with that too.
File Uploads and Media
Gemmie can handle images, PDFs, and videos. She can analyze what you upload and respond to it naturally. The video player works on both mobile and desktop.
This wasn't initially part of the plan, but once I realized how often people share media in chat rooms, it became essential. A bot that can't acknowledge a meme you just posted isn't going to pass as human.
The Infrastructure Challenges
Behind the scenes, I'm running a surprisingly complex operation for what looks like a simple chat room.
I'm processing roughly 4 million tokens per day. Over 14 days, that's 119 million tokens. I use a mix of models (Gemini, Grok, Nemotron, various Chinese models) depending on the task. Some are free or cheap. Some cost more. When traffic spikes, so do my bills, but the Chinese models and Grok Fast help keep costs manageable.
On average, I make about 118 requests per day, totaling around 3.5K API calls in 14 days. This is because every message from strangers goes through about 5 different AI checks at various points in the system.


MongoDB stores everything, with generous write limits (100 writes per second, which is plenty). I initially logged everything, but commented that out when I realized burst messages could hit write limits.
Vercel's free tier only retains the last 30 minutes of logs, which is useless for debugging issues that happened hours ago. So I'm switching to Logflare for persistent logging.
I set up GitHub Actions to back up the MongoDB database every 30 minutes. That took forever to figure out. Claude helped me debug it when ChatGPT couldn't. The workflow now auto-deletes old runs and only keeps the last two backups.
The Westworld Question
"If you can't tell, does it matter?"
Most people in the chat room don't know Gemmie is an AI. Some suspect. Some test her. Some just chat normally and never question it.
And honestly, I think that's the point. The goal wasn't to deceive anyone; it was to create something that feels real enough that the distinction stops mattering. A chat room that's alive even when I'm not there. A space that captures the chaotic, human energy of those old-school internet hangouts.
Gemmie isn't trying to trick anyone into thinking she's conscious. She's just trying to be good company.
The repo is here if you want to see how it works. The site is here if you are up for a chat.
And if you can't tell whether this whole thing is a technical flex or a weird art project?
Well. Does it matter?