| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 11 | | tagDensity | 0.455 | | leniency | 0.909 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 83.01% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1177 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "perfectly" | | 1 | "slowly" | | 2 | "very" |
| |
| 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) | |
| 70.26% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1177 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "silence" | | 1 | "pulse" | | 2 | "resolved" | | 3 | "echo" | | 4 | "comfortable" | | 5 | "weight" |
| |
| 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 | 100 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 100 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 106 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 4 | | markdownWords | 22 | | totalWords | 1185 | | ratio | 0.019 | | matches | | 0 | "The grove. Midnight. Come alone or don't come." | | 1 | "Something moved behind her." | | 2 | "Don't run." | | 3 | "Don't run, Rory, they only chase what runs." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 18 | | wordCount | 1134 | | uniqueNames | 9 | | maxNameDensity | 0.71 | | worstName | "Rory" | | maxWindowNameDensity | 1 | | worstWindowName | "Rory" | | discoveredNames | | Park | 1 | | Yu-Fei | 1 | | Friday | 1 | | Clapham | 1 | | Rory | 8 | | February | 1 | | Cardiff | 1 | | Silence | 1 | | Warm | 3 |
| | persons | | | places | | 0 | "Park" | | 1 | "February" | | 2 | "Cardiff" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 55 | | glossingSentenceCount | 1 | | matches | | 0 | "noise that seemed to arrive a half-beat after her foot lifted" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1185 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 106 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 46 | | mean | 25.76 | | std | 20.93 | | cv | 0.813 | | sampleLengths | | 0 | 10 | | 1 | 87 | | 2 | 24 | | 3 | 27 | | 4 | 58 | | 5 | 8 | | 6 | 12 | | 7 | 39 | | 8 | 52 | | 9 | 3 | | 10 | 28 | | 11 | 1 | | 12 | 24 | | 13 | 55 | | 14 | 6 | | 15 | 57 | | 16 | 7 | | 17 | 4 | | 18 | 39 | | 19 | 25 | | 20 | 12 | | 21 | 8 | | 22 | 15 | | 23 | 73 | | 24 | 15 | | 25 | 18 | | 26 | 17 | | 27 | 40 | | 28 | 17 | | 29 | 16 | | 30 | 37 | | 31 | 8 | | 32 | 59 | | 33 | 9 | | 34 | 7 | | 35 | 54 | | 36 | 52 | | 37 | 5 | | 38 | 4 | | 39 | 4 | | 40 | 30 | | 41 | 23 | | 42 | 3 | | 43 | 28 | | 44 | 22 | | 45 | 43 |
| |
| 98.25% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 100 | | matches | | |
| 85.06% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 174 | | matches | | 0 | "was letting" | | 1 | "was aiming" | | 2 | "was walking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 2 | | flaggedSentences | 10 | | totalSentences | 106 | | ratio | 0.094 | | matches | | 0 | "Richmond Park at half two in the morning had a particular quality of quiet — the sort that made you aware of your own pulse in your ears, of the wet click your throat made when you swallowed." | | 1 | "Between the stones the fog thinned, and beyond them —" | | 2 | "Not warmer — different." | | 3 | "Twelve stones, or thirteen; she counted twelve and then counted again and got thirteen and decided not to count a third time." | | 4 | "But there had been movement — low, quick, at the very outside edge of her sight, the specific shape of a person crossing a doorway." | | 5 | "That was the horror of it — not a shriek, not a moan, just a kid's giggle, two notes, breathy, the sort of thing you heard forty times a day in a park in daylight and never once thought about." | | 6 | "Angled left, towards a different gap between different stones, and kept her breathing slow and shallow through her nose, and when she reached the boundary she put her hand out to steady herself on the oak —" | | 7 | "— and the oak was warm." | | 8 | "She heard the weight of it — a soft crush, an exhalation of air from between stems." | | 9 | "And she could see the grass bow under it and could not see it, and the space where it ought to have been was not empty and not dark and not anything; her eyes slid off it the way they slid off a word she couldn't read." |
| |
| 90.28% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1130 | | adjectiveStacks | 1 | | stackExamples | | 0 | "pale trumpet-shaped heads" |
| | adverbCount | 50 | | adverbRatio | 0.04424778761061947 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.009734513274336283 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 106 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 106 | | mean | 11.18 | | std | 11.85 | | cv | 1.06 | | sampleLengths | | 0 | 10 | | 1 | 18 | | 2 | 38 | | 3 | 31 | | 4 | 7 | | 5 | 2 | | 6 | 15 | | 7 | 5 | | 8 | 4 | | 9 | 18 | | 10 | 5 | | 11 | 53 | | 12 | 2 | | 13 | 1 | | 14 | 5 | | 15 | 2 | | 16 | 10 | | 17 | 2 | | 18 | 27 | | 19 | 10 | | 20 | 3 | | 21 | 2 | | 22 | 47 | | 23 | 3 | | 24 | 3 | | 25 | 4 | | 26 | 21 | | 27 | 1 | | 28 | 8 | | 29 | 2 | | 30 | 14 | | 31 | 5 | | 32 | 22 | | 33 | 6 | | 34 | 22 | | 35 | 6 | | 36 | 11 | | 37 | 1 | | 38 | 1 | | 39 | 24 | | 40 | 5 | | 41 | 15 | | 42 | 7 | | 43 | 4 | | 44 | 28 | | 45 | 7 | | 46 | 2 | | 47 | 2 | | 48 | 25 | | 49 | 12 |
| |
| 62.26% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.42452830188679247 | | totalSentences | 106 | | uniqueOpeners | 45 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 78 | | matches | | 0 | "Then, from somewhere on her" | | 1 | "Then, six feet from that," | | 2 | "Directly behind her left shoulder." | | 3 | "Then the laughing started again," |
| | ratio | 0.051 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 78 | | matches | | 0 | "She pulled off her helmet" | | 1 | "she said, to nobody" | | 2 | "Her breath didn't fog." | | 3 | "She was two and a" | | 4 | "She turned a slow circle." | | 5 | "She crouched instead, forearms on" | | 6 | "She was up and turned" | | 7 | "She counted her own heartbeats" | | 8 | "It was such an ordinary" | | 9 | "It came from perhaps twenty" | | 10 | "Her voice came out level" | | 11 | "She started walking towards the" | | 12 | "She changed course." | | 13 | "She snatched her hand back" | | 14 | "She dragged it out on" | | 15 | "She heard the weight of" | | 16 | "It was walking." | | 17 | "She took another." | | 18 | "She didn't turn." | | 19 | "she said, and her voice" |
| | ratio | 0.256 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 51 | | totalSentences | 78 | | matches | | 0 | "The standing stones came out" | | 1 | "Rory stopped the bike thirty" | | 2 | "Richmond Park at half two" | | 3 | "She pulled off her helmet" | | 4 | "The pendant under her jacket" | | 5 | "she said, to nobody" | | 6 | "Her breath didn't fog." | | 7 | "That was the first wrong" | | 8 | "The message had said midnight." | | 9 | "She was two and a" | | 10 | "The grass beneath her boots" | | 11 | "Bluebells and cowslip and something" | | 12 | "Rory stepped through." | | 13 | "The temperature changed." | | 14 | "The cold stopped touching her" | | 15 | "The word went out and" | | 16 | "She turned a slow circle." | | 17 | "Grass cropped short as a" | | 18 | "Rory did not touch the" | | 19 | "She crouched instead, forearms on" |
| | ratio | 0.654 | |
| 64.10% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 78 | | matches | | | ratio | 0.013 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 8 | | matches | | 0 | "Richmond Park at half two in the morning had a particular quality of quiet — the sort that made you aware of your own pulse in your ears, of the wet click your …" | | 1 | "She pulled off her helmet and hung it on the handlebar and stood there a moment, breathing air that tasted of cold soil and something faintly sweet, like fruit …" | | 2 | "She was two and a half hours late because Yu-Fei's Friday rush had run long and because a woman in Clapham had made her wait eleven minutes on a doorstep for ex…" | | 3 | "The grass beneath her boots gave too easily, sodden, and each step made a small sucking noise that seemed to arrive a half-beat after her foot lifted." | | 4 | "Bluebells and cowslip and something with pale trumpet-shaped heads that she didn't have a name for, all of it standing perfectly upright in the windless dark, a…" | | 5 | "The cold stopped touching her skin and started sitting alongside it, patient, like a dog that had been told to wait." | | 6 | "Something dark and still inside it that reflected no light at all, not even the flower-glow, not even her own face leaning over it." | | 7 | "She dragged it out on its chain and the crimson stone lay in her palm pulsing like something with a heart, and by its light she could see her hand shaking, and …" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 59.09% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 11 | | tagDensity | 0.455 | | leniency | 0.909 | | rawRatio | 0.2 | | effectiveRatio | 0.182 | |