| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 7 | | tagDensity | 0.571 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 88.15% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1266 | | totalAiIsmAdverbs | 3 | | 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) | |
| 64.45% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1266 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "weight" | | 1 | "whimsical" | | 2 | "pulse" | | 3 | "navigate" | | 4 | "flickered" | | 5 | "familiar" | | 6 | "rhythmic" | | 7 | "footsteps" | | 8 | "silence" |
| |
| 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 | 0 | | narrationSentences | 125 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 125 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 128 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 53 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1266 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 10 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 37 | | wordCount | 1232 | | uniqueNames | 20 | | maxNameDensity | 0.81 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Knock-knock" | | discoveredNames | | Rory | 10 | | Tuesday | 1 | | Isolde | 2 | | Richmond | 1 | | Gate | 1 | | Evan | 1 | | Cardiff | 2 | | Golden | 1 | | Empress | 1 | | Wardour | 1 | | Street | 1 | | November | 1 | | Carter | 1 | | Fae | 1 | | London | 2 | | Bute | 1 | | Park | 1 | | Eva | 1 | | Knock-knock | 4 | | Gap | 3 |
| | persons | | 0 | "Rory" | | 1 | "Isolde" | | 2 | "Evan" | | 3 | "Carter" | | 4 | "Eva" |
| | places | | 0 | "Richmond" | | 1 | "Cardiff" | | 2 | "Wardour" | | 3 | "Street" | | 4 | "Fae" | | 5 | "London" | | 6 | "Bute" | | 7 | "Park" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 65 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1266 | | matches | (empty) | |
| 62.50% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 128 | | matches | | 0 | "let that fact" | | 1 | "know that iron" | | 2 | "up that she" | | 3 | "plans, that she" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 49 | | mean | 25.84 | | std | 21.35 | | cv | 0.827 | | sampleLengths | | 0 | 9 | | 1 | 54 | | 2 | 22 | | 3 | 26 | | 4 | 56 | | 5 | 26 | | 6 | 72 | | 7 | 4 | | 8 | 56 | | 9 | 17 | | 10 | 5 | | 11 | 52 | | 12 | 41 | | 13 | 2 | | 14 | 57 | | 15 | 17 | | 16 | 18 | | 17 | 8 | | 18 | 54 | | 19 | 8 | | 20 | 15 | | 21 | 4 | | 22 | 46 | | 23 | 3 | | 24 | 32 | | 25 | 11 | | 26 | 3 | | 27 | 27 | | 28 | 8 | | 29 | 67 | | 30 | 3 | | 31 | 6 | | 32 | 29 | | 33 | 35 | | 34 | 69 | | 35 | 33 | | 36 | 36 | | 37 | 8 | | 38 | 60 | | 39 | 1 | | 40 | 20 | | 41 | 8 | | 42 | 3 | | 43 | 4 | | 44 | 36 | | 45 | 2 | | 46 | 23 | | 47 | 17 | | 48 | 53 |
| |
| 99.65% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 125 | | matches | | 0 | "been open" | | 1 | "being invited" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 198 | | matches | | 0 | "were pushing" | | 1 | "was breathing" |
| |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 128 | | ratio | 0 | | matches | (empty) | |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1241 | | adjectiveStacks | 1 | | stackExamples | | | adverbCount | 31 | | adverbRatio | 0.0249798549556809 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.0064464141821112 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 128 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 128 | | mean | 9.89 | | std | 9.74 | | cv | 0.984 | | sampleLengths | | 0 | 9 | | 1 | 10 | | 2 | 14 | | 3 | 6 | | 4 | 24 | | 5 | 2 | | 6 | 20 | | 7 | 17 | | 8 | 9 | | 9 | 7 | | 10 | 8 | | 11 | 25 | | 12 | 11 | | 13 | 2 | | 14 | 3 | | 15 | 8 | | 16 | 10 | | 17 | 3 | | 18 | 5 | | 19 | 4 | | 20 | 30 | | 21 | 4 | | 22 | 12 | | 23 | 22 | | 24 | 4 | | 25 | 33 | | 26 | 4 | | 27 | 19 | | 28 | 1 | | 29 | 3 | | 30 | 13 | | 31 | 5 | | 32 | 18 | | 33 | 9 | | 34 | 9 | | 35 | 16 | | 36 | 12 | | 37 | 2 | | 38 | 5 | | 39 | 22 | | 40 | 2 | | 41 | 11 | | 42 | 31 | | 43 | 15 | | 44 | 6 | | 45 | 2 | | 46 | 9 | | 47 | 9 | | 48 | 9 | | 49 | 3 |
| |
| 86.46% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 1 | | diversityRatio | 0.5234375 | | totalSentences | 128 | | uniqueOpeners | 67 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 97 | | matches | | 0 | "Then the sound started." | | 1 | "All closed except a narrow" | | 2 | "Then a voice used her" |
| | ratio | 0.031 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 16 | | totalSentences | 97 | | matches | | 0 | "She counted again, torch beam" | | 1 | "She'd counted them twice while" | | 2 | "she said, out loud, because" | | 3 | "It had warmed the entire" | | 4 | "She'd come for answers." | | 5 | "She was certain of it," | | 6 | "Her voice came out flatter" | | 7 | "It passed within two metres" | | 8 | "She didn't move." | | 9 | "It came from the treeline" | | 10 | "Her shoulder blades met stone" | | 11 | "She catalogued what she had." | | 12 | "They came in from outside" | | 13 | "She'd been alone." | | 14 | "She had listened the whole" | | 15 | "It was breathing along with" |
| | ratio | 0.165 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 64 | | totalSentences | 97 | | matches | | 0 | "The standing stones weren't where" | | 1 | "She counted again, torch beam" | | 2 | "She'd counted them twice while" | | 3 | "The gap between the fourth" | | 4 | "she said, out loud, because" | | 5 | "The pendant lay cold against" | | 6 | "That was the first thing" | | 7 | "It had warmed the entire" | | 8 | "The moment she'd stepped past" | | 9 | "Less than that." | | 10 | "Rory pulled it out and" | | 11 | "The crimson stone caught her" | | 12 | "A pebble on a chain." | | 13 | "She'd come for answers." | | 14 | "Isolde had promised three of" | | 15 | "The grove was empty." | | 16 | "Wildflowers pressed against her shins," | | 17 | "That was new too." | | 18 | "Every single one." | | 19 | "Rory turned off the torch." |
| | ratio | 0.66 | |
| 51.55% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 97 | | matches | | 0 | "Now the orange sat behind" |
| | ratio | 0.01 | |
| 49.69% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 46 | | technicalSentenceCount | 6 | | matches | | 0 | "A slow ripple crossing the clearing from the eastern stones towards the western, exactly as if something long and low were pushing through them." | | 1 | "Her shoulder blades met stone and she pressed into it, grateful for something solid, something that would tell her if it moved." | | 2 | "Or one thing that had learned to sound like two, which was worse, and she recognised the thought as unhelpful even as it lodged." | | 3 | "She had listened the whole way in, she always listened, she had built her entire adult life on listening for footsteps that weren't hers." | | 4 | "Enormous, unhurried breathing, the kind that came from lungs the size of rooms." | | 5 | "And the torch, which was off, which she was gripping so hard the plastic had begun to creak, switched itself on and pointed at the trees, and the beam found for…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 2 | | fancyTags | | 0 | "she breathed (breathe)" | | 1 | "a voice used (use)" |
| | dialogueSentences | 7 | | tagDensity | 0.429 | | leniency | 0.857 | | rawRatio | 0.667 | | effectiveRatio | 0.571 | |