| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 9 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 78.17% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1374 | | totalAiIsmAdverbs | 6 | | found | | 0 | | | 1 | | | 2 | | adverb | "deliberately" | | count | 1 |
| | 3 | | | 4 | |
| | highlights | | 0 | "lightly" | | 1 | "very" | | 2 | "deliberately" | | 3 | "suddenly" | | 4 | "softly" |
| |
| 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) | |
| 52.69% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1374 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "porcelain" | | 1 | "silence" | | 2 | "weight" | | 3 | "pulse" | | 4 | "echo" | | 5 | "stomach" | | 6 | "footsteps" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 1 | | narrationSentences | 109 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 109 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 113 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 51 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1387 | | ratio | 0 | | matches | (empty) | |
| 75.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 1 | | matches | | 0 | "Body heat, she told herself, and did not believe herself, and kept pedalling." |
| |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 30 | | wordCount | 1332 | | uniqueNames | 17 | | maxNameDensity | 0.38 | | worstName | "Richmond" | | maxWindowNameDensity | 2 | | worstWindowName | "Richmond" | | discoveredNames | | Golden | 1 | | Empress | 1 | | Yu-Fei | 1 | | Cheung | 1 | | Rory | 4 | | Isolde | 4 | | Richmond | 5 | | Park | 2 | | Gate | 1 | | Heathrow | 1 | | June | 1 | | November | 2 | | Cardiff | 2 | | Sunday | 1 | | English | 1 | | London | 1 | | Severn | 1 |
| | persons | | 0 | "Empress" | | 1 | "Yu-Fei" | | 2 | "Cheung" | | 3 | "Rory" | | 4 | "Isolde" | | 5 | "Severn" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Heathrow" | | 3 | "November" | | 4 | "Cardiff" | | 5 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 78 | | glossingSentenceCount | 1 | | matches | | 0 | "not quite a fence post and stood a moment with her hand on the bag strap, listening" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1387 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 113 | | matches | | 0 | "was that Isolde" | | 1 | "knew that name" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 33 | | mean | 42.03 | | std | 25.48 | | cv | 0.606 | | sampleLengths | | 0 | 58 | | 1 | 53 | | 2 | 45 | | 3 | 59 | | 4 | 13 | | 5 | 109 | | 6 | 39 | | 7 | 41 | | 8 | 9 | | 9 | 63 | | 10 | 72 | | 11 | 43 | | 12 | 41 | | 13 | 29 | | 14 | 6 | | 15 | 80 | | 16 | 3 | | 17 | 38 | | 18 | 31 | | 19 | 64 | | 20 | 6 | | 21 | 67 | | 22 | 41 | | 23 | 37 | | 24 | 89 | | 25 | 32 | | 26 | 16 | | 27 | 53 | | 28 | 4 | | 29 | 53 | | 30 | 56 | | 31 | 17 | | 32 | 20 |
| |
| 98.83% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 109 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 221 | | matches | | 0 | "were running" | | 1 | "was glowing" | | 2 | "was warming" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 2 | | flaggedSentences | 13 | | totalSentences | 113 | | ratio | 0.115 | | matches | | 0 | "The Golden Empress stopped taking deliveries at eleven, and Yu-Fei Cheung did not bend her rules for anyone — Rory had once watched her refuse a cardiologist with a hundred-pound note stapled to the receipt." | | 1 | "Richmond at night was a different animal from Richmond by day — black hills of trees, bracken silvered, the ponds holding scraps of moon." | | 2 | "The smell changed — hay, warm sap, crushed green things." | | 3 | "The standing stones were oaks — seven of them, so old they had gone grey and fluted and stone-hard, ringing the clearing like sentries that had forgotten how to leave." | | 4 | "Then, a half-second late, from behind her left shoulder when she had faced right, it came back — s'olde?" | | 5 | "— flattened, curious, like something repeating the word to learn the shape of her mouth." | | 6 | "Panic was a luxury; she'd left it in Cardiff." | | 7 | "Something droned past her ear — fat, unhurried, half-drunk on the flowers." | | 8 | "Every sensible part of her said bees slept; everything else said not here." | | 9 | "It matched her stride exactly, placed exactly where her stride would fall — and it had been matching her, she understood, for some time." | | 10 | "Between two stones, at the edge of her vision, a shape stood — tall, shoulders wrong, the suggestion of a head inclined toward her like a listener." | | 11 | "And her mouth — stupid, polite, English to its bones — began to shape the words no, thank you, and she caught them between her teeth and held them there, because that was the trap, she knew it was the trap, and the silence around the ring leaned in to listen for it." | | 12 | "The gap she'd chosen opened before her exactly wide enough, the brambles pulling aside like a curtain, and the grove let her go — let her go the way a hand opens, deliberately, having decided she could." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 146 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 4 | | adverbRatio | 0.0273972602739726 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 113 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 113 | | mean | 12.27 | | std | 10.04 | | cv | 0.818 | | sampleLengths | | 0 | 12 | | 1 | 35 | | 2 | 7 | | 3 | 4 | | 4 | 5 | | 5 | 4 | | 6 | 15 | | 7 | 15 | | 8 | 1 | | 9 | 13 | | 10 | 5 | | 11 | 7 | | 12 | 26 | | 13 | 7 | | 14 | 21 | | 15 | 22 | | 16 | 8 | | 17 | 8 | | 18 | 13 | | 19 | 4 | | 20 | 25 | | 21 | 24 | | 22 | 26 | | 23 | 3 | | 24 | 10 | | 25 | 17 | | 26 | 7 | | 27 | 20 | | 28 | 3 | | 29 | 9 | | 30 | 41 | | 31 | 9 | | 32 | 10 | | 33 | 10 | | 34 | 27 | | 35 | 2 | | 36 | 2 | | 37 | 12 | | 38 | 30 | | 39 | 5 | | 40 | 23 | | 41 | 1 | | 42 | 13 | | 43 | 9 | | 44 | 19 | | 45 | 15 | | 46 | 15 | | 47 | 8 | | 48 | 18 | | 49 | 19 |
| |
| 67.88% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.4727272727272727 | | totalSentences | 110 | | uniqueOpeners | 52 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 96 | | matches | | 0 | "Then she stepped between them," | | 1 | "Then, a half-second late, from" | | 2 | "Then, sliding underneath it, another" | | 3 | "Then it was frost, real" |
| | ratio | 0.042 | |
| 86.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 32 | | totalSentences | 96 | | matches | | 0 | "It was from Isolde." | | 1 | "She told herself it was" | | 2 | "She pedalled north through streets" | | 3 | "It was a thumbnail of" | | 4 | "She had learned its moods" | | 5 | "It had never once warmed" | | 6 | "She went through the gap" | | 7 | "Her torch beam slid over" | | 8 | "She could see its light" | | 9 | "Her voice went out and" | | 10 | "She set the delivery bag" | | 11 | "she said to the empty" | | 12 | "She turned to go and" | | 13 | "She chose the widest gap" | | 14 | "She checked her phone." | | 15 | "She walked what should have" | | 16 | "She stopped and watched the" | | 17 | "It blinked like it had" | | 18 | "She made herself look back" | | 19 | "It matched her stride exactly," |
| | ratio | 0.333 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 67 | | totalSentences | 96 | | matches | | 0 | "The order came through at" | | 1 | "The Golden Empress stopped taking" | | 2 | "It was from Isolde." | | 3 | "Honey, on the side." | | 4 | "The address field held no" | | 5 | "Rory packed the bag anyway." | | 6 | "She told herself it was" | | 7 | "The truth, which she examined" | | 8 | "The order had come through" | | 9 | "She pedalled north through streets" | | 10 | "It was a thumbnail of" | | 11 | "She had learned its moods" | | 12 | "It had never once warmed" | | 13 | "Body heat, she told herself," | | 14 | "Sheen Gate was locked." | | 15 | "She went through the gap" | | 16 | "Richmond at night was a" | | 17 | "Halfway along the track she" | | 18 | "Richmond deer were bold, half-tame," | | 19 | "These were statues with heartbeats," |
| | ratio | 0.698 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 96 | | matches | (empty) | | ratio | 0 | |
| 99.13% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 49 | | technicalSentenceCount | 3 | | matches | | 0 | "Wildflowers opened in the darkness, pale as peeled fruit, each one carrying a faint light of its own, as if the ground were running a low fever." | | 1 | "The standing stones were oaks — seven of them, so old they had gone grey and fluted and stone-hard, ringing the clearing like sentries that had forgotten how to…" | | 2 | "Behind her, in a grove that was suddenly only oaks and bracken and moonlight, very softly, porcelain clicked against porcelain." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 9 | | tagDensity | 0.222 | | leniency | 0.444 | | rawRatio | 0 | | effectiveRatio | 0 | |