| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 9 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.6 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 84.35% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1278 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | |
| 100.00% | AI-ism character names | Target: 0 AI-default names (17 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 96.09% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1278 | | totalAiIsms | 1 | | found | | | highlights | | |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 0 | | maxInWindow | 0 | | found | (empty) | | highlights | (empty) | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 1 | | narrationSentences | 102 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 102 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 109 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 6 | | totalWords | 1286 | | ratio | 0.005 | | matches | | 0 | "Coo-COO-coo, coo-coo." | | 1 | "Coo-COO-coo, coo-coo." | | 2 | "Coo-COO-coo, coo-coo." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 28 | | wordCount | 1190 | | uniqueNames | 13 | | maxNameDensity | 0.67 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Sheen | 1 | | Cross | 1 | | Rory | 8 | | Park | 2 | | Richmond | 3 | | Kingston | 1 | | Heathrow | 1 | | October | 1 | | Britain | 1 | | Cardiff | 2 | | Eva | 3 | | Surrey | 1 | | Isolde | 3 |
| | persons | | 0 | "Cross" | | 1 | "Rory" | | 2 | "Eva" | | 3 | "Isolde" |
| | places | | 0 | "Sheen" | | 1 | "Park" | | 2 | "Richmond" | | 3 | "Kingston" | | 4 | "October" | | 5 | "Britain" | | 6 | "Cardiff" | | 7 | "Surrey" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 56 | | glossingSentenceCount | 1 | | matches | | 0 | "felt like being watched" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1286 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 109 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 44 | | mean | 29.23 | | std | 27.72 | | cv | 0.948 | | sampleLengths | | 0 | 33 | | 1 | 77 | | 2 | 18 | | 3 | 10 | | 4 | 63 | | 5 | 66 | | 6 | 7 | | 7 | 57 | | 8 | 11 | | 9 | 2 | | 10 | 40 | | 11 | 19 | | 12 | 12 | | 13 | 19 | | 14 | 85 | | 15 | 10 | | 16 | 2 | | 17 | 7 | | 18 | 15 | | 19 | 52 | | 20 | 7 | | 21 | 48 | | 22 | 14 | | 23 | 10 | | 24 | 61 | | 25 | 86 | | 26 | 7 | | 27 | 31 | | 28 | 2 | | 29 | 85 | | 30 | 8 | | 31 | 67 | | 32 | 2 | | 33 | 6 | | 34 | 44 | | 35 | 16 | | 36 | 4 | | 37 | 81 | | 38 | 21 | | 39 | 7 | | 40 | 2 | | 41 | 59 | | 42 | 5 | | 43 | 8 |
| |
| 98.38% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 102 | | matches | | 0 | "been chained" | | 1 | "being pulled" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 183 | | matches | | 0 | "wasn't laughing" | | 1 | "was breathing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 1 | | flaggedSentences | 9 | | totalSentences | 109 | | ratio | 0.083 | | matches | | 0 | "Her torch cut a cone through it and the cone found nothing — no deer, no dog walkers, no orange bleed of Kingston on the horizon, which was wrong, because she'd stood on this ridge in daylight and watched planes stack up over Heathrow like beads on a wire." | | 1 | "She wasn't laughing now; she walked with her fingers out, brushing hawthorn, and the third time the path forked she took the branch that felt like being watched." | | 2 | "The standing stones came out of the mist all at once — eight of them, oak instead of granite, grey and grained and cracked with age, each one taller than her and leaning inward like men sharing a secret." | | 3 | "Not a sound — the absence of the sound she expected." | | 4 | "The clearing was maybe twenty yards across, floored in cropped turf, and at its centre stood a well — or the ruin of one, a lip of mossed stone no higher than her knee." | | 5 | "Not a heartbeat's worth of movement — a knock, like a knuckle on a door from the inside, and the crimson stone had gone hot enough that she pulled the chain away from her skin with two fingers." | | 6 | "That was mist's job — she knew that, she'd walked home through enough Cardiff fog to know the brain builds men out of nothing." | | 7 | "It came from very close, low down, at the level of her hip, and it was not a laugh so much as three quick breaths through a smile — the sound a person makes when they've caught you out and are being kind about it." | | 8 | "She was proud of that, later — the specific, muscular effort of not looking, the way she had to instruct each part of her neck separately." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 539 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 17 | | adverbRatio | 0.03153988868274583 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.0037105751391465678 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 109 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 109 | | mean | 11.8 | | std | 12.36 | | cv | 1.048 | | sampleLengths | | 0 | 33 | | 1 | 9 | | 2 | 19 | | 3 | 49 | | 4 | 2 | | 5 | 2 | | 6 | 14 | | 7 | 7 | | 8 | 3 | | 9 | 11 | | 10 | 19 | | 11 | 5 | | 12 | 28 | | 13 | 39 | | 14 | 5 | | 15 | 2 | | 16 | 20 | | 17 | 7 | | 18 | 6 | | 19 | 11 | | 20 | 22 | | 21 | 4 | | 22 | 6 | | 23 | 8 | | 24 | 11 | | 25 | 2 | | 26 | 5 | | 27 | 8 | | 28 | 27 | | 29 | 1 | | 30 | 3 | | 31 | 15 | | 32 | 3 | | 33 | 2 | | 34 | 7 | | 35 | 3 | | 36 | 15 | | 37 | 1 | | 38 | 34 | | 39 | 5 | | 40 | 46 | | 41 | 5 | | 42 | 2 | | 43 | 3 | | 44 | 2 | | 45 | 4 | | 46 | 3 | | 47 | 15 | | 48 | 21 | | 49 | 4 |
| |
| 65.75% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.42201834862385323 | | totalSentences | 109 | | uniqueOpeners | 46 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 79 | | matches | | 0 | "Just stars, too many of" | | 1 | "Then, from somewhere inside the" | | 2 | "Exactly the same." |
| | ratio | 0.038 | |
| 98.48% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 24 | | totalSentences | 79 | | matches | | 0 | "Her torch cut a cone" | | 1 | "she said, to hear a" | | 2 | "She wasn't laughing now; she" | | 3 | "She stopped at the boundary" | | 4 | "Her own blood in her" | | 5 | "She stepped between two stones," | | 6 | "Her breath didn't fog, though" | | 7 | "She swept the torch around." | | 8 | "she said, and hated the" | | 9 | "She crossed to the well" | | 10 | "She kept the torch low," | | 11 | "She counted them, and got" | | 12 | "Her voice went out and" | | 13 | "It came from very close," | | 14 | "She spun the torch down." | | 15 | "Her own bootprints, and beside" | | 16 | "They stopped at her feet." | | 17 | "she said, and her voice" | | 18 | "She lifted the jar." | | 19 | "She heard it move as" |
| | ratio | 0.304 | |
| 92.91% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 58 | | totalSentences | 79 | | matches | | 0 | "The gate at Sheen Cross" | | 1 | "Richmond Park at night didn't" | | 2 | "The grass held the last" | | 3 | "Her torch cut a cone" | | 4 | "she said, to hear a" | | 5 | "The pendant lay flat against" | | 6 | "Isolde had said the grove" | | 7 | "Rory had laughed at that." | | 8 | "She wasn't laughing now; she" | | 9 | "The standing stones came out" | | 10 | "Wildflowers grew at their feet." | | 11 | "Foxglove and cornflower and something" | | 12 | "She stopped at the boundary" | | 13 | "That was the first wrong" | | 14 | "Richmond had a hum to" | | 15 | "Here there was nothing." | | 16 | "Her own blood in her" | | 17 | "The tick of moisture falling" | | 18 | "Rory's shoulders dropped an inch." | | 19 | "Pigeons were the most ordinary" |
| | ratio | 0.734 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 79 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 35 | | technicalSentenceCount | 2 | | matches | | 0 | "Her torch cut a cone through it and the cone found nothing — no deer, no dog walkers, no orange bleed of Kingston on the horizon, which was wrong, because she'd…" | | 1 | "She wasn't laughing now; she walked with her fingers out, brushing hawthorn, and the third time the path forked she took the branch that felt like being watched…" |
| |
| 69.44% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 9 | | uselessAdditionCount | 1 | | matches | | 0 | "the voice agreed, delighted" |
| |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 3 | | fancyTags | | 0 | "Isolde had (have)" | | 1 | "she whispered (whisper)" | | 2 | "the voice agreed (agree)" |
| | dialogueSentences | 15 | | tagDensity | 0.533 | | leniency | 1 | | rawRatio | 0.375 | | effectiveRatio | 0.375 | |