| 62.07% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 2 | | adverbTags | | 0 | "She walked back [back]" | | 1 | "he said instead [instead]" |
| | dialogueSentences | 29 | | tagDensity | 0.276 | | leniency | 0.552 | | rawRatio | 0.25 | | effectiveRatio | 0.138 | |
| 84.57% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 972 | | 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) | |
| 84.57% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 972 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "efficient" | | 1 | "weight" | | 2 | "traced" |
| |
| 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 | 43 | | matches | (empty) | |
| 76.41% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 43 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 64 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 984 | | ratio | 0.001 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 12 | | unquotedAttributions | 0 | | matches | (empty) | |
| 97.76% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 670 | | uniqueNames | 12 | | maxNameDensity | 1.04 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Quinn" | | discoveredNames | | Camden | 1 | | Lock | 1 | | Detective | 1 | | Harlow | 1 | | Quinn | 7 | | Whitfield | 6 | | Morris | 2 | | Underneath | 1 | | Faint | 1 | | Eva | 1 | | British | 1 | | Museum | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Whitfield" | | 3 | "Morris" | | 4 | "Eva" |
| | places | (empty) | | globalScore | 0.978 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 36 | | 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 | 984 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 64 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 36 | | mean | 27.33 | | std | 20.21 | | cv | 0.739 | | sampleLengths | | 0 | 39 | | 1 | 4 | | 2 | 14 | | 3 | 50 | | 4 | 20 | | 5 | 26 | | 6 | 6 | | 7 | 5 | | 8 | 69 | | 9 | 18 | | 10 | 5 | | 11 | 3 | | 12 | 28 | | 13 | 14 | | 14 | 60 | | 15 | 37 | | 16 | 56 | | 17 | 29 | | 18 | 55 | | 19 | 11 | | 20 | 22 | | 21 | 2 | | 22 | 46 | | 23 | 6 | | 24 | 6 | | 25 | 26 | | 26 | 8 | | 27 | 61 | | 28 | 33 | | 29 | 8 | | 30 | 14 | | 31 | 39 | | 32 | 61 | | 33 | 12 | | 34 | 49 | | 35 | 42 |
| |
| 88.94% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 43 | | matches | | 0 | "been seared" | | 1 | "been carved" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 116 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 9 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 64 | | ratio | 0.109 | | matches | | 0 | "The Camden Lock warehouse smelled of river damp and something else Detective Harlow Quinn couldn't name — copper, maybe, gone sour." | | 1 | "A man didn't die like that — collapsed, limbs arranged almost peacefully — without leaving something behind." | | 2 | "Late fifties, decent coat, hands soft — not a manual labourer, not the type to be scoping warehouses for scrap metal." | | 3 | "Underneath, at the base of his throat, a mark had been seared into the skin — a spiral, precise, deliberate." | | 4 | "Faint scuff marks radiated outward from where he lay, as if something had circled him before he fell — or after." | | 5 | "He knew the story, or thought he did — everyone in the department had heard some version of what happened to DS Morris, filtered through rumour until it became almost comedy, the detective who lost her partner to nothing at all." | | 6 | "She thought of Eva, hunched over restricted texts in some dim corner of the British Museum, and wondered — not for the first time — whether it was finally time to ask her old excuse of a source a very direct question." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 664 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 24 | | adverbRatio | 0.03614457831325301 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.006024096385542169 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 64 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 64 | | mean | 15.38 | | std | 10.76 | | cv | 0.7 | | sampleLengths | | 0 | 21 | | 1 | 18 | | 2 | 4 | | 3 | 14 | | 4 | 22 | | 5 | 5 | | 6 | 6 | | 7 | 17 | | 8 | 11 | | 9 | 9 | | 10 | 26 | | 11 | 6 | | 12 | 5 | | 13 | 12 | | 14 | 21 | | 15 | 36 | | 16 | 7 | | 17 | 11 | | 18 | 5 | | 19 | 3 | | 20 | 28 | | 21 | 3 | | 22 | 11 | | 23 | 31 | | 24 | 20 | | 25 | 9 | | 26 | 37 | | 27 | 19 | | 28 | 16 | | 29 | 21 | | 30 | 29 | | 31 | 3 | | 32 | 30 | | 33 | 15 | | 34 | 7 | | 35 | 11 | | 36 | 8 | | 37 | 14 | | 38 | 2 | | 39 | 39 | | 40 | 7 | | 41 | 6 | | 42 | 6 | | 43 | 26 | | 44 | 6 | | 45 | 2 | | 46 | 20 | | 47 | 21 | | 48 | 20 | | 49 | 13 |
| |
| 95.31% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.625 | | totalSentences | 64 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 42 | | matches | | 0 | "Right before he'd vanished from" | | 1 | "Somewhere in this city, someone" |
| | ratio | 0.048 | |
| 86.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 14 | | totalSentences | 42 | | matches | | 0 | "She ducked under the tape," | | 1 | "He glanced up when her" | | 2 | "His eyes were open, fixed" | | 3 | "She'd learned, over eighteen years," | | 4 | "She crossed to the loading" | | 5 | "He shifted his weight, arms" | | 6 | "She walked back toward the" | | 7 | "She traced one line with" | | 8 | "She looked up at him," | | 9 | "He didn't ask." | | 10 | "He knew the story, or" | | 11 | "She watched Whitfield's jaw tighten," | | 12 | "he said instead" | | 13 | "She thought of Eva, hunched" |
| | ratio | 0.333 | |
| 67.14% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 33 | | totalSentences | 42 | | matches | | 0 | "The Camden Lock warehouse smelled" | | 1 | "She ducked under the tape," | | 2 | "The warehouse floor stretched out" | | 3 | "That was the first thing" | | 4 | "A man didn't die like" | | 5 | "DS Whitfield crouched beside the" | | 6 | "He glanced up when her" | | 7 | "Quinn knelt, keeping her knees" | | 8 | "His eyes were open, fixed" | | 9 | "DS Morris had worn that" | | 10 | "Whitfield squinted, unconvinced." | | 11 | "Quinn pulled a pen from" | | 12 | "Whitfield said, and there was" | | 13 | "Quinn stood, turning in a" | | 14 | "The warehouse was cavernous, empty" | | 15 | "Quinn didn't answer." | | 16 | "She'd learned, over eighteen years," | | 17 | "She crossed to the loading" | | 18 | "Whitfield straightened, tucking his notebook" | | 19 | "The window in question sat" |
| | ratio | 0.786 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 42 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 22 | | technicalSentenceCount | 0 | | matches | (empty) | |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 29 | | tagDensity | 0.103 | | leniency | 0.207 | | rawRatio | 0 | | effectiveRatio | 0 | |