The problem: the prose passed every AI detector and still felt composed
I spent the last two days rewriting the narrator voice of Book 1 from scratch, and not because anything was broken in the story. The prose sounded like an AI wrote it, and no detector agreed with me.
Here's the thing I learned: AI detectors are useless for this job, because they scan for vocabulary tells, and our draft was already cleaner than the human baseline on every classic phrase. "A sense of," "couldn't help but," "tapestry," "palpable," "eyes widened": we measured 31 chapters (about 85,000 words) against a bestselling LitRPG benchmark of 204,500 human-written words, and every one of those phrases came back zero. The detectors said CLEAN while the prose still felt composed.
The scent was hiding in two places the detectors never look: rhythm and punctuation.
Finding the real tells with measured budgets
I ran a phrase-rate and sentence-rhythm comparison, normalized per 10,000 words so the two corpora are comparable, and it produced three findings:
- Vocabulary layer: clean, so the job there is just holding the line. Every classic AI phrase measured zero, which means the risk had moved elsewhere.
- The X-not-Y contrastive: 10.3 per 10k in our draft against 4.0 in the benchmark, a known LLM reflex running 2.5x hot. But it's also genuinely the POV character's annotating voice, so the fix wasn't elimination. The fix was a budget of two per chapter in new prose.
- Rhythm at the extremes: 39.6% of our sentences were six words or fewer against the benchmark's 15.5%, and 14.5% ran past thirty words against their 3.5%. Everything was punch or lyric with no walking pace in between, and that hyper-curation is itself an AI tell, since every sentence performing is how composed prose betrays itself.
The budget approach is the thing I want to flag, because it generalizes to any voice problem. You pick a human baseline you trust, you measure specific features per 10,000 words, and you encode the findings as hard numbers you can grep instead of vibes or "it feels AI-ish." The audit becomes a shell command you run at every QA gate:
# Em dashes: must be 0
grep -c "—" story/manuscript/book-1/ch-NN-*.md
# Contrastive "X, not Y": budget 2/chapter
grep -oc ", not " story/manuscript/book-1/ch-NN-*.md
# AI-phrase zero-list: must stay 0
grep -cin "a sense of\|couldn't help but\|in that moment\|tapestry\|palpable\|washed over\|eyes widened" story/manuscript/book-1/ch-*.md
That third line is a regression list, and you run it after every revision pass. Any new hit is a defect: your draft had zero of them, so if one shows up, something changed and you need to know why.
The transplant: 1,410 em dashes to zero
Once I had the budgets, the big ruling was simple and brutal: em dashes go to absolute zero. The draft had 1,410 of them, which works out to 165 per 10k words when published norms run maybe 5 to 20. I rewrote chapters 1 and 24 as binding anchor exhibits first, with every box and beat and canon line preserved and only the punctuation and rhythm re-voiced, then batched the remaining 29 chapters in five passes, each one verifier-graded before the next started.
The verifier is a fresh-context pass that checks three things: continuity anchors are verbatim, character voice contracts hold (one character never contracts, ever, and that has to stay perfect across twelve lines of dialogue), and the rhythm sits inside the anchor band. V1 through V5 covered chapters 2 through 31, all graded, and the pass is done: all 31 chapters are in the new voice.
The receipts after the full pass:
| Metric | Before | After | Benchmark |
|---|---|---|---|
| Em dashes (book-wide) | 1,410 | 0 | ~5-20/10k |
| Long sentences (30+ words) | 14.5% | 6.7% | 3.5% |
| X-not-Y contrastives | 10.3/10k | 7.6/10k | 4.0/10k |
| AI-phrase zero-list | 0 | 0 | several used freely |
The contrastives are still high, and that's deliberate, because it's the POV character's voice and I'm not flattening it. A later phase will thin existing chapters down to the two-per-chapter budget. But the em dashes and the rhythm extremes were the real tells, and those are fixed.
The rhythm pass, and a measurement bug that hid it
After the transplant, nine chapters still carried staccato-heavy narration, so I ran a sentence-combining pass on them: connective-tissue short sentences merged into flowing ones with ordinary joins (however, though, still, as, until, so), while payoff beats and dialogue stayed untouched. Every chapter came in at or below the chapter-1 anchor's short-sentence share, and the book average landed at 29.5%.
Then I found the measurement bug. The old sentence counter was scoring dialogue and dialogue tags as narration, so one chapter looked like an outlier at a 41% short-sentence share when its true narration runs 15.2%. The fix went into the tool, since the prose was fine. But the bug mattered because it made the rhythm problem look worse than it was and sent me at the wrong chapters first. Measure twice, cut once, and make sure your counter knows what narration is before you trust it.
What ships next
The writing road map is now recorded: the next batch is chapters 32 through 40, then a QA gate, then a canon-rulings gate before Part Three, because two mechanics need to be locked before later chapters can reference them. After that, the remaining parts get their passes in order.
Chapters 32 onward write natively in the new voice, and that's the real win. The transplant was the expensive part; new prose just follows the style guide and the grep passes clean on the first try.
The takeaway
If you're co-writing with an AI and the prose feels off, stop reaching for detectors. Pick a human baseline you trust, measure specific features per 10,000 words, and encode the findings as grep budgets, because the tells live in rhythm and punctuation while vocabulary is a red herring. Em dashes are the loudest tell and sentence-length distribution is the quietest. And whatever counter you build, make sure it knows the difference between narration and dialogue before you trust its numbers.