AI prose is not bad writing. It passes every per-sentence check: varied vocabulary, clear structure, correct grammar. The problem is what it does across sentences. Every dimension of voice is held at peak, continuously, with no relief. A reader cannot name this. They feel it as flatness, as Muzak, as prose that delivers everything and lands nothing. This page explains the mechanism, shows the measurement, and puts the evidence on the table.
A human writer does not hold every dimension of voice at maximum through an entire piece. They go plain when the thought is plain. They drop the register before a charged moment. They stop a sentence one word before the conclusion and let the reader finish it. These descents are not failures. They are the structure that makes the peaks feel like peaks.
An AI does not do this. It is trained to be helpful, which means it tries to be maximally vivid, maximally precise, maximally engaging at every sentence. The result is prose with no interior shape. High diction from the first paragraph to the last. Every image named. Every mechanism spelled out. Every implication completed. Nothing handed to the reader. Nothing left in the silence.
The reader picks this up. Not as a list of errors, but as fatigue. The prose that requires nothing from you, that fills every gap before you can feel it, is Muzak: technically music, optimized so the listener never has to engage.
Real music has valleys. Real cheese has terroir. Real prose has texture. The AI delivers the mean of all of it, continuously, until the reader stops reading.
A silence in prose is not an absence. It is a transfer. The writer stops before the conclusion. The reader's mind steps in and finishes the thought. That act of finishing is what the reader feels as resonance. They think they were moved by the sentence. They were moved by their own mind, completing what the writer left open.
An AI fills every silence. It explains the implication. It names the emotion. It completes the sentence it should have ended one clause earlier. The thought is delivered whole. It arrives correct and lands nowhere. Nothing to finish means nothing to feel.
A voice can be described on seven dimensions. For any document, each dimension gets a score per paragraph. The key number is not the mean per dimension. It is the standard deviation per dimension across paragraphs, summed across all seven. We call this sum_sd, or texture.
A document where every paragraph scores the same on every dimension has texture near zero. A document where some paragraphs are plain and some are vivid, some are dense and some spacious, has high texture. The number catches what per-sentence quality scores miss.
This is a document-level property, not a sentence-level one. A sentence can be excellent. A passage of excellent sentences, all excellent in the same way, is flat.
How much of the vocabulary is uncommon or precise. High D = rare and exact words throughout. Low D = the thousand most common words.
Variance in sentence length within a paragraph. High O = short punchy sentences mixed with long complex ones. Low O = uniform sentence length.
How often the prose explains causes and effects: because, which means, so, therefore, when, if. High M = every sentence has a reason attached.
Density of first- and second-person pronouns: I, you, we, your, my. High A = direct personal address. Low A = institutional or impersonal register.
How often the prose anchors in concrete physical experience: hard, soft, warm, thin, raw. High I = the prose reaches into the body to make the abstract felt.
Contrastive and temporal words: but, yet, although, then, before, after. High N = the prose moves, reverses, advances. Low N = no arc, only accumulation.
Inverse of hedge and filler density. High S = nothing wasted, no hedges, no throat-clearing. Low S = "it is important to note that" and "in a sense."
We scored a human corpus spanning seven registers and three language models across multiple topics and prompt conditions. The finding holds across all of them: human prose sits in the 69-89 range; model prose sits in the 25-45 range, regardless of model, topic, or how the model was prompted.
Texts scored: Thoreau, Emerson (literary essay); Austen, Dickens, Twain (narrative fiction); PubMed clinical trials; arXiv ML papers; McCulloch v. Maryland; Wikipedia; long-form journalism. Each document was split into 200-word paragraphs; sum_sd computed across all paragraphs in the document.
| Register | Exemplars | sum_sd | n (paragraphs) |
|---|---|---|---|
| Legal Opinion | McCulloch v. Maryland | 86.8 | 4 |
| Encyclopedic | Wikipedia (long-form) | 88.9 | 4 |
| Academic | arXiv ML papers | 80.5 | 4 |
| Medical Clinical | PubMed trials | 83.8 | 12 |
| Literary Essay | Thoreau, Emerson | 76.9 | 95 |
| Narrative Fiction | Austen, Dickens, Twain | 69.9 | 12 |
| Journalistic | Current-events long-form | 42.0 | 8 — floor check pending |
Every register except journalistic sits above 69. Journalistic is the lowest-texture human register we measured, and may partially overlap with the LLM range. The n=8 estimate (42.0) supersedes the earlier n=4 estimate (47.8).
Three models, two topics (memory and loss; social cohesion), multiple prompt conditions. Same scoring method.
| Model | Condition | sum_sd | n |
|---|---|---|---|
| GLM | Unprompted | 25.6 | 3 |
| GLM | With literary prompt | 34.5 | 3 |
| Grok | Unprompted | 33.5 | 6 |
| Grok | With literary prompt | 29.1 | 5 |
| Grok | With academic prompt | 45.4 | 5 |
| LLaMA 3.3 70B | Academic topic, unprompted | 35.0 | 3 |
Human range: 69-89. Model range: 25-45. The gap is 25 to 45 points depending on the register comparison. It held across all three models and all six conditions tested.
We chose Grok as the adversary. It is trained on X/Twitter data and marketed with an "anti-corporate, rebellious" positioning. If any model was going to escape the averaged attractor, Grok was the candidate.
It did not escape.
All three Grok conditions produced sum_sd 29-45, well below the human floor of 69. Two findings from the adversarial run are worth naming directly.
Grok unprompted: sum_sd 33.5. Grok asked to write like Montaigne: sum_sd 29.1. Prompting toward a famous literary register collapsed to the averaged attractor of that register. Every dimension simultaneously at peak (D=77, I=86, N=74, A=71), uniformly across every paragraph. The prompt succeeded at shape. It made the flatness worse.
The intuition that "prompting can fix the flatness" is exactly backward. Shape is promptable. Variance is not.
Grok prompted to write in an academic register with subheadings: sum_sd 45.4. The best of six conditions. The reason: structural constraints (subheadings, argument transitions, conclusion blocks) force partial mode-shifts between paragraphs. They are a weak lever toward texture. Weak: 45.4 is still 43% below the human academic baseline (80.5).
When shown a summary of this research, GLM agreed: "The averaged attractor concept is dead-on. We are trained to be balanced, which kills texture." It then immediately added: "though flatness is a feature for technical writing." The corporate hedge, deployed as defense, in the response that proved the point.
Not every model is a good judge of flatness. We ran a 4-model panel test on the same texts (Thoreau's Walden against LLM-generated prose in the same register) and found a clean inversion: the largest, most capable reasoning models were the worst judges. The mid-weight non-reasoning models were the best.
| Judge | Type | Size | Cross-register discrimination |
|---|---|---|---|
| cerebras | Non-reasoning | 120B | +25.8 (strongest) |
| nemotron | Reasoning, thinking off | 49B | +23.3 devotional / +18.7 analytical |
| groq (LLaMA) | Non-reasoning | 70B | +17.4 (rate limits in batch) |
| glm-5.2 | Reasoning | 754B | +4.7 - flips wrong direction on analytical |
The reason is structural. A reasoning model does not simply read what is on the page. It constructs a coherent interpretation from the available material. When it encounters flat prose, it reasons about what the prose is trying to say, fills the gaps, and produces a generous reading. It perceives the intent, not the surface.
A non-reasoning model reads the surface more directly. Flat prose with no interior variation reads as flat. The variance is in the signal, and the model reports the signal.
The surface judge is the right tool here. Texture is a surface property. The judge that perceives the surface beats the judge that reasons past it. GLM-5.2 at 754B parameters is a more powerful model, and it is the worst judge for this task.
The research above uses LLM judges (cerebras + nemotron) to score per-chunk dimensional variance. The live DOMAINS tool at writing.doloop.io/domains uses a different approach: pure Python rules, no model. These are two tiers of the same system, not the same thing.
Seven dimensions computed from word counts, sentence lengths, and frequency lists. Runs in milliseconds, fully deterministic, no LLM calls, no cost per request. Accurate enough to identify register proximity and name the primary lever. The formula is a calibrated approximation of the LLM-judge score.
Per-chunk scoring via a 2-judge panel (cerebras + nemotron), results cached by SHA1 of the chunk text so rescore is free. Produces a richer diagnostic: which paragraphs are peaks, which are valleys, which are flat. Slower and has a first-run cost; appropriate for longer documents where the variance pattern matters, not just the aggregate.
The human baselines and the Grok adversarial test above used the LLM-judge tier. The live tool uses the fast tier. Both tiers measure the same property; the deep tier gives a per-paragraph breakdown the fast tier does not.
Your voice is not in the training data. Montaigne's shape is. Austen's rhythm is. Every famous writer's surface features are in there, averaged. When you ask the model to write like any of them, you get the mean of all their imitators, which is not what any of them wrote.
Your corpus is not in the training data. Your specific pattern of when to go dense and when to go plain, when to use imagery and when to suppress it, when to address the reader directly and when to pull back: these moves, in your particular sequence, have never been trained on. They cannot be prompted into existence.
The moat is not that your shape is private (a large enough few-shot context could approximate it). The moat is that your natural within-document variance, the specific way you modulate each dimension across a piece, cannot be recovered by prompting. Shape without variance is Muzak. The restoration requires showing the model what you do, not telling it what register to aim for.
Measuring an author's voice from their own corpus is not new. The approach has clean scientific lineage.
DOMAINS does not claim to measure author attribution (Burrows' problem). It measures within-document texture and register proximity. The lineage is the reader's, not the claim.
"Literary prompting made Grok more flat" is based on n=1 topic seed. It needs three independent topics to confirm. We report it as a finding because the mechanism (collapsing to an averaged attractor) is theoretically predicted and the result matches the prediction. But a single topic is a single topic.
arXiv (n=4 paragraphs) and McCulloch v. Maryland (n=4 paragraphs) are thin. The sum_sd for these registers is provisional. Literary Essay (n=95) and the model baselines (n=3-6 documents per condition) are more robust. We label thin baselines in the tables.
At sum_sd 42.0 (n=8), journalistic sits close to the top of the model range (45.4). One outlier in the journalistic sample scored 61.6; the other seven ranged 20-33. The floor is provisional. It is possible that brief, plain-style journalism falls within the model range on this measure.
The core claim is that a reader fatigues faster on low-texture prose, even when per-sentence quality is rated equivalent. We have the mechanism and the measurement. We do not yet have an A/B test linking sum_sd to dwell time or completion rates. One falsifiable prediction still waits on a data partner: if high-texture and low-texture drafts on the same topic, length-matched, show no difference in completion rates, the fatigue mechanism is wrong.
DOMAINS scores any draft on all seven dimensions, names the nearest register, and tells you the one change that moves it toward where you want to be. The scoring is deterministic: same draft in, same scores out, every run.
Routes you to a real doloop page, asks when your question is ambiguous, or tells you when there is no answer. No model runs on the answer path, so it cannot invent one.