RESEARCH · WRITING TEXTURE

Why AI prose feels flat.

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.

The mechanism: peaks without valleys

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.

What a silence does

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.

The measure: within-document variance

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.

The seven dimensions

D · Diction

Lexical reach

How much of the vocabulary is uncommon or precise. High D = rare and exact words throughout. Low D = the thousand most common words.

O · Orchestration

Sentence rhythm

Variance in sentence length within a paragraph. High O = short punchy sentences mixed with long complex ones. Low O = uniform sentence length.

M · Mechanism

Explanatory density

How often the prose explains causes and effects: because, which means, so, therefore, when, if. High M = every sentence has a reason attached.

A · Addressivity

Personal voice

Density of first- and second-person pronouns: I, you, we, your, my. High A = direct personal address. Low A = institutional or impersonal register.

I · Imagery

Sensory grounding

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.

N · Narrative arc

Movement and tension

Contrastive and temporal words: but, yet, although, then, before, after. High N = the prose moves, reverses, advances. Low N = no arc, only accumulation.

S · Suppression

Economy

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."

The evidence

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.

Human baseline by register

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 OpinionMcCulloch v. Maryland86.84
EncyclopedicWikipedia (long-form)88.94
AcademicarXiv ML papers80.54
Medical ClinicalPubMed trials83.812
Literary EssayThoreau, Emerson76.995
Narrative FictionAusten, Dickens, Twain69.912
JournalisticCurrent-events long-form42.08 — 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).

Model baselines

Three models, two topics (memory and loss; social cohesion), multiple prompt conditions. Same scoring method.

Model Condition sum_sd n
GLMUnprompted25.63
GLMWith literary prompt34.53
GrokUnprompted33.56
GrokWith literary prompt29.15
GrokWith academic prompt45.45
LLaMA 3.3 70BAcademic topic, unprompted35.03

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.

The adversarial test: Grok

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.

Literary prompting made it more flat, not less

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.

Academic structure helped most, but not enough

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).

The model's own diagnosis

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.

Why the judge matters: reasoning models fail this task

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
cerebrasNon-reasoning120B+25.8 (strongest)
nemotronReasoning, thinking off49B+23.3 devotional / +18.7 analytical
groq (LLaMA)Non-reasoning70B+17.4 (rate limits in batch)
glm-5.2Reasoning754B+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.

Two tiers: fast rules and deep scoring

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.

• FAST TIER (live tool)

Rule-based scoring

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.

DEEP TIER (in progress)

LLM-judge scoring

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.

Why the gap is structural, not a prompt problem

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.

What this builds on

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.

What we have not proved

The literary-prompting result is one topic

"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.

The academic and legal baselines are small

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.

Journalistic may partially overlap with the LLM range

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.

sum_sd predicting reader fatigue is a prediction, not a result

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.

Try it on your own writing

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.

Score your draft → The writing surface