| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 2 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 2 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 96.03% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1260 | | totalAiIsmAdverbs | 1 | | 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) | |
| 92.06% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1260 | | totalAiIsms | 2 | | 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 | 0 | | narrationSentences | 112 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 112 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 112 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 80 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1260 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 4 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 25 | | wordCount | 1258 | | uniqueNames | 13 | | maxNameDensity | 0.64 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Quinn" | | discoveredNames | | Saint | 1 | | Christopher | 1 | | Harlow | 1 | | Quinn | 8 | | Inverness | 1 | | Street | 1 | | Habit | 1 | | Herrera | 3 | | London | 1 | | Tube | 1 | | Camden | 2 | | Morris | 1 | | Tick | 3 |
| | persons | | 0 | "Saint" | | 1 | "Christopher" | | 2 | "Harlow" | | 3 | "Quinn" | | 4 | "Herrera" | | 5 | "Morris" |
| | places | | 0 | "Inverness" | | 1 | "Street" | | 2 | "London" | | 3 | "Camden" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | 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 | 1260 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 112 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 37 | | mean | 34.05 | | std | 29.3 | | cv | 0.861 | | sampleLengths | | 0 | 19 | | 1 | 10 | | 2 | 3 | | 3 | 82 | | 4 | 21 | | 5 | 7 | | 6 | 81 | | 7 | 12 | | 8 | 36 | | 9 | 13 | | 10 | 66 | | 11 | 28 | | 12 | 6 | | 13 | 100 | | 14 | 50 | | 15 | 31 | | 16 | 27 | | 17 | 5 | | 18 | 98 | | 19 | 10 | | 20 | 19 | | 21 | 61 | | 22 | 47 | | 23 | 58 | | 24 | 3 | | 25 | 9 | | 26 | 67 | | 27 | 20 | | 28 | 73 | | 29 | 14 | | 30 | 16 | | 31 | 3 | | 32 | 85 | | 33 | 2 | | 34 | 21 | | 35 | 31 | | 36 | 26 |
| |
| 99.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 112 | | matches | | 0 | "was propped" | | 1 | "was gone" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 213 | | matches | | 0 | "was gaining" | | 1 | "wasn't stopping" | | 2 | "was carrying" |
| |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 112 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1258 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 36 | | adverbRatio | 0.028616852146263912 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.005564387917329093 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 112 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 112 | | mean | 11.25 | | std | 11.89 | | cv | 1.057 | | sampleLengths | | 0 | 19 | | 1 | 10 | | 2 | 3 | | 3 | 21 | | 4 | 26 | | 5 | 3 | | 6 | 3 | | 7 | 29 | | 8 | 3 | | 9 | 12 | | 10 | 3 | | 11 | 3 | | 12 | 3 | | 13 | 1 | | 14 | 3 | | 15 | 9 | | 16 | 17 | | 17 | 42 | | 18 | 13 | | 19 | 7 | | 20 | 5 | | 21 | 7 | | 22 | 19 | | 23 | 1 | | 24 | 1 | | 25 | 8 | | 26 | 13 | | 27 | 4 | | 28 | 11 | | 29 | 27 | | 30 | 13 | | 31 | 8 | | 32 | 1 | | 33 | 1 | | 34 | 1 | | 35 | 3 | | 36 | 21 | | 37 | 2 | | 38 | 2 | | 39 | 6 | | 40 | 4 | | 41 | 2 | | 42 | 22 | | 43 | 26 | | 44 | 17 | | 45 | 9 | | 46 | 20 | | 47 | 4 | | 48 | 19 | | 49 | 10 |
| |
| 72.92% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.49107142857142855 | | totalSentences | 112 | | uniqueOpeners | 55 | |
| 73.26% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 91 | | matches | | 0 | "Then it closed its fingers" | | 1 | "Then all around him, one" |
| | ratio | 0.022 | |
| 92.53% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 91 | | matches | | 0 | "She ran too." | | 1 | "He was fast, the little" | | 2 | "He took the corner of" | | 3 | "She went round." | | 4 | "Her left knee fired a" | | 5 | "He glanced back." | | 6 | "She was gaining." | | 7 | "He knew it." | | 8 | "He wasn't stopping." | | 9 | "She was eighteen years in" | | 10 | "She reached the door four" | | 11 | "It was propped open with" | | 12 | "Her torch, phone lamp only," | | 13 | "She kept going." | | 14 | "Her hand had gone for" | | 15 | "She keyed it now, out" | | 16 | "She clipped the radio away." | | 17 | "She had no bone." | | 18 | "She had a warrant card" | | 19 | "She caught the flash of" |
| | ratio | 0.319 | |
| 91.87% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 67 | | totalSentences | 91 | | matches | | 0 | "The Saint Christopher medallion swung" | | 1 | "She ran too." | | 2 | "He was fast, the little" | | 3 | "He took the corner of" | | 4 | "Quinn didn't vault." | | 5 | "She went round." | | 6 | "Her left knee fired a" | | 7 | "He glanced back." | | 8 | "She was gaining." | | 9 | "He knew it." | | 10 | "He wasn't stopping." | | 11 | "Camden at two in the" | | 12 | "Rain slicked the cobbles to" | | 13 | "She was eighteen years in" | | 14 | "Tomás Herrera cut through it" | | 15 | "She reached the door four" | | 16 | "It was propped open with" | | 17 | "The stairwell beyond dropped into" | | 18 | "Something underneath that her nose" | | 19 | "Quinn drew her baton, put" |
| | ratio | 0.736 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 91 | | matches | (empty) | | ratio | 0 | |
| 83.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 48 | | technicalSentenceCount | 4 | | matches | | 0 | "The wall beside her lost its tile and became brick, then bare earth, and then something that felt to the palm like the inside of a throat." | | 1 | "Lanterns hung on strings between them, throwing a low amber light that made everything slippered and close." | | 2 | "It had no eyes that she could find, only a smooth pale face like a thumbprint in dough, and yet she felt the weight of it land on her, patient, unbothered, as t…" | | 3 | "Sound rose to meet her, layered and wrong, and the crowd closed in on all sides, and she kept her eyes fixed on the grey hood and the dark curls forty feet away…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 2 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 2 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0.5 | | effectiveRatio | 0.5 | |