Making AI Chat Indistinguishable from Human: What We Learned

Can you make AI chat truly indistinguishable from a human? We spent months researching this question, running experiments with fine tuning, building detection pipelines, and reading every paper we could find. The answer is nuanced: yes, you can get remarkably close, but the tells are not where most people think they are.
The obvious tells everyone misses
Most discussions about AI detection focus on vocabulary. And sure, certain words are dead giveaways. If your chatbot writes "delve" in casual conversation, everyone knows. But vocabulary is only the surface layer. The deeper patterns are structural, and they are far harder to fix.
Vocabulary flags
These words and phrases appear 10x to 50x more frequently in AI output than in human writing:
Words: delve, crucial, comprehensive, leverage, facilitate, multifaceted
Phrases: "It's important to note that..."
"I'd be happy to help you with that!"
"Here's a comprehensive breakdown..."
"Let me provide you with..."
"Great question!"
Removing these from your output filter is table stakes. Every team building AI chat products should maintain a blocklist. But even with a perfect vocabulary filter, detection rates barely drop. The real signals live elsewhere.
Structure and message shape
This is the first major tell. Compare how AI and humans actually write in chat:
AI style:
"I'd be happy to help you with that! Here's a comprehensive breakdown
of the key considerations you should keep in mind. First, you'll want
to ensure that your database schema is properly normalized. Second,
consider implementing proper indexing strategies. Third, make sure
your connection pooling is configured correctly."
Human style:
"yeah so basically"
"your db schema is probably the issue"
"wait actually"
"have you checked if you have indexes on that table?"
"nvm found it, your connection pool is maxed out"
Humans send multiple short messages, sometimes mid thought. They interrupt themselves, correct course, and leave thoughts incomplete. AI produces one polished, well structured reply every single time. This structural difference is visible to any observer within seconds.
The burstiness problem
This is the strongest detection signal of all, and the one most teams overlook entirely. "Burstiness" refers to the variation in sentence length within a piece of text. Human writing has high burstiness: a three word sentence followed by a 40 word sentence followed by a fragment. AI writing has remarkably low burstiness: sentences cluster around a similar length throughout.
Burstiness is the single strongest signal in statistical AI detection. A piece of text can pass vocabulary checks, tone checks, and even style checks, but uniform sentence length distribution gives it away every time.
Consistency is the enemy
Humans are inconsistent. We vary our tone mid conversation, misspell words when typing fast, use abbreviations in one message and full sentences in the next. AI maintains the same register, reading level, and vocabulary throughout an entire conversation. That unnatural consistency is itself a detection signal.
We tried fine tuning on WhatsApp exports
The obvious next step seemed brilliant at the time: take thousands of real chat messages, fine tune a model on them, and produce output that matches a specific person's writing style. Here is what happened.
We exported 2,000+ messages from WhatsApp, formatted them as context/response pairs, and ran LoRA fine tuning on Llama. The hypothesis was straightforward: if the model learns how a specific person writes, it should produce text that reads like that person.
The result was disappointing. The model memorized specific phrases and sentence fragments instead of learning the underlying style patterns. With fewer than 1,000 training examples, we saw catastrophic overfitting. The model would reproduce exact messages from the training data verbatim, which is worse than generic AI output because it leaks private conversations.
Fine tuning on personal chat data carries real privacy risks. Even with careful filtering, models memorize and reproduce fragments of training data. If your training set contains sensitive messages, those messages can surface in production output.
The fundamental problem is that casual chat data has high perplexity tokens (slang, typos, code switching between languages, inside jokes) that damage model parameters during training. The model cannot distinguish between "this person's style" and "noise," so it learns both or neither.
Our conclusion: fine tuning on personal chat data does not work well with current approaches. Few shot prompting with carefully selected style examples produces better results with zero training overhead. You give the model five or six example messages in the system prompt, and it adapts its style more reliably than a fine tuned model does.
What actually works
After months of experimentation, here are the techniques that genuinely move the needle on making AI text feel human.
Strategic imperfection. Introduce deliberate hesitation, self correction, and incomplete thoughts. Not randomly, but in patterns that match how humans actually communicate. A well placed "actually, wait" or a thought that trails off is more convincing than a perfect paragraph.
Multiple short messages. Instead of generating one structured reply, split output into several shorter messages with natural pauses. This alone changes the perception dramatically.
Varied sentence length. The burstiness fix. Deliberately vary your output between very short and longer sentences. Mix fragments with complete thoughts. This is the single most effective technique for defeating statistical detection.
Output vocabulary filtering. Maintain a blocklist of AI characteristic words and phrases. Replace them at the output layer before the user sees them. Simple, effective, and easy to maintain.
Register matching. The model should detect the formality level of the conversation and match it. Casual chat gets casual responses. Professional inquiries get professional language. Humans do this instinctively. AI defaults to a single register unless explicitly told otherwise.
The watermarking elephant in the room
Here is where things get complicated. The EU AI Act, which entered its enforcement phase in August 2026, requires machine readable marking of AI generated content. Anthropic and Google have already deployed invisible watermarking systems (Google's SynthID being the most prominent). These systems embed statistical signatures in token selection that are invisible to humans but detectable by specialized tools.
The fundamental tension is real: regulation wants AI output to be detectable, while users and product teams want AI output to feel natural. And text watermarks, unlike image watermarks, are trivially removable. Simple paraphrasing, synonym substitution, or Unicode normalization strips them. This creates an arms race with no clear resolution.
For product teams: focus on transparency rather than trying to hide AI involvement. Users increasingly prefer knowing when they are talking to AI, as long as the conversation quality is high. The "uncanny valley" of almost human AI text often feels worse than an openly AI assistant that communicates well.
Where this leaves us
The gap between AI text and human text is closing, but it is not closed. The remaining differences are structural, not lexical. They live in message patterns, sentence length distributions, and conversational flow rather than in word choice. Fixing these requires rethinking how AI chat systems generate and deliver output, not just what words they use.
If you are building a product where AI text quality matters, we have done the research so you do not have to. Get in touch and let us help you build AI communication that actually works.
