ChatGPT vs a measured voice

SGR-002, conducted 2026-09-20.

Question: When GPT-5 writes from the same brief three ways (bare, with a one-page measured prompt, and through ScriptGrain's profile), how close does each get to the author's own writing?

Sample

Five posts (5,233 words) from one author's company blog, already the samples of an existing ScriptGrain profile. The two longest (1,394 and 1,392 words) were held out; a fresh study profile was extracted from the remaining three (2,447 words). Two briefs, three arms, six drafts.

Method

Study profile: api-v1 POST /v1/profiles from the three training posts (one extraction slot), status polled to complete.

Briefs: gpt-5-mini read each held-out post and wrote the brief a writer would have received (topic, angle, audience, three points, target length), instructed not to quote it.

Arm one, bare: GPT-5 (reasoning effort minimal) with the brief and a target length only.

Arm two, prompt: GPT-5 with a system prompt from ScriptGrain's free prompt builder, measured from the three training posts (numbers for sentence length and variation, contractions, punctuation, pronoun mix; judged formality, humour, argument structure; the hard rules against AI tells).

Arm three, ScriptGrain: api-v1 POST /v1/generations against the study profile, content type article, the brief's target length.

Measures per draft: voice match against the study profile (POST /v1/voice-match, feature-delta engine), pairwise match against the held-out post (POST /v1/compare-voice), AI-tell density and em dashes (the public cliché checker's scanner), share of sentences under eight words, and the AI detector's human score (POST /v1/ai-detect). Runner: scripts/experiments/run-study.mjs in the ScriptGrain repository.

Variables measured

Findings

Results by arm (means over two briefs)

ArmVoice match vs profileMatch vs held-out pieceAI-tells per 1,000Em dashes per draftSentences under 8 wordsDetector human scoreWords (target ~1,393)
GPT-5, brief only0.740.820.217.537%0.522309
GPT-5 with the prompt-builder prompt0.620.801.60.054%0.782294
ScriptGrain (measured profile + generation)0.830.912.30.038%0.671302

Results by brief

BriefArmVoice matchMatch vs held-outAI-tells per 1,000Words
Brief 1GPT-5 bare0.740.820.02287
Brief 1GPT-5 + prompt0.550.741.42205
Brief 1ScriptGrain0.870.903.81312
Brief 2GPT-5 bare0.750.820.42331
Brief 2GPT-5 + prompt0.700.861.72383
Brief 2ScriptGrain0.800.920.81292

What the numbers say

The measured profile moved the drafts towards the author on every voice measure, by about 0.09 on both the profile score and the held-out comparison, and it hit the length. It also carried the study's least flattering number: the checker found 'not X but Y' constructions in ScriptGrain's drafts that bare GPT-5 did not produce. The generator forbids that shape and the model wrote it anyway, which means the ban has to be checked, not only stated.

The prompt-builder arm is the surprise. The prompt carried the author's numbers and GPT-5 honoured the ones that are easy to count (no em dashes, short sentences, burstiness) while drifting away on register: fewer contractions than either other arm and a judged formality of 7.2 against a target of 3.7. A prompt can describe the target; it cannot check the draft against it. That is the difference a scorer makes, and it is why the product scores every draft rather than trusting the instruction.

Two briefs and one author make this a demonstration of direction, not a statistic. The runner is a script, the drafts are in the data file, and every number can be reproduced with the free tools on this site.

Limitations

Reproducing this