| 66.67% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 1 | | adverbTags | | 0 | "The gatekeeper stepped aside [aside]" |
| | dialogueSentences | 15 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0.2 | | effectiveRatio | 0.133 | |
| 94.93% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 986 | | 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) | |
| 79.72% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 986 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "weight" | | 1 | "stomach" | | 2 | "pulse" | | 3 | "flicker" |
| |
| 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 | 62 | | matches | | 0 | "the flicker of surprise" |
| |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 62 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 71 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 57 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 2 | | totalWords | 991 | | ratio | 0.002 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 9 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 13 | | wordCount | 894 | | uniqueNames | 6 | | maxNameDensity | 0.67 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Quinn" | | discoveredNames | | Quinn | 6 | | Camden | 1 | | Tube | 1 | | Morris | 3 | | Market | 1 | | London | 1 |
| | persons | | | places | | | globalScore | 1 | | windowScore | 1 | |
| 33.72% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 43 | | glossingSentenceCount | 2 | | matches | | 0 | "smelled like wet stone and diesel and, und" | | 1 | "quite human, at the suspect who'd just handed over something small and pale to the herb-seller, at the exit behind her that led back up into rain and rules she understood" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 991 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 71 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 29 | | mean | 34.17 | | std | 23.18 | | cv | 0.678 | | sampleLengths | | 0 | 41 | | 1 | 2 | | 2 | 38 | | 3 | 43 | | 4 | 74 | | 5 | 38 | | 6 | 20 | | 7 | 82 | | 8 | 12 | | 9 | 68 | | 10 | 23 | | 11 | 20 | | 12 | 88 | | 13 | 39 | | 14 | 26 | | 15 | 18 | | 16 | 10 | | 17 | 70 | | 18 | 18 | | 19 | 9 | | 20 | 19 | | 21 | 12 | | 22 | 43 | | 23 | 35 | | 24 | 47 | | 25 | 25 | | 26 | 11 | | 27 | 11 | | 28 | 49 |
| |
| 99.60% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 62 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 152 | | matches | | 0 | "wasn't losing" | | 1 | "was beginning" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 71 | | ratio | 0.056 | | matches | | 0 | "Graffiti covered the walls down here, but not the kind she recognised — symbols, circular, layered over each other in different hands, different decades maybe." | | 1 | "People moved between them — if *people* was the word — wrapped in coats and shawls, faces obscured by hoods, though here and there she caught a glimpse of something that made her stomach turn cold." | | 2 | "Every rational fibre in her told her to take it, to go back up into the rain and the ordinary world and let this one go, chalk it up like she'd chalked up so many strange details over the past three years — details she'd stopped writing in reports because nobody believed her, not even herself, most days." | | 3 | "She stepped past him into the Market anyway, torch beam cutting through lantern-light and smoke, following the suspect deeper into a place that had no business existing under the ordinary streets of London — and no intention, she was beginning to realise, of letting her simply walk back out." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 892 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 34 | | adverbRatio | 0.03811659192825112 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0033632286995515697 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 71 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 71 | | mean | 13.96 | | std | 12.26 | | cv | 0.878 | | sampleLengths | | 0 | 17 | | 1 | 22 | | 2 | 2 | | 3 | 2 | | 4 | 3 | | 5 | 5 | | 6 | 30 | | 7 | 8 | | 8 | 30 | | 9 | 1 | | 10 | 4 | | 11 | 25 | | 12 | 6 | | 13 | 27 | | 14 | 5 | | 15 | 11 | | 16 | 6 | | 17 | 28 | | 18 | 4 | | 19 | 20 | | 20 | 17 | | 21 | 23 | | 22 | 42 | | 23 | 12 | | 24 | 15 | | 25 | 19 | | 26 | 25 | | 27 | 9 | | 28 | 5 | | 29 | 3 | | 30 | 1 | | 31 | 14 | | 32 | 20 | | 33 | 25 | | 34 | 36 | | 35 | 3 | | 36 | 9 | | 37 | 15 | | 38 | 16 | | 39 | 3 | | 40 | 15 | | 41 | 5 | | 42 | 6 | | 43 | 14 | | 44 | 6 | | 45 | 12 | | 46 | 6 | | 47 | 10 | | 48 | 7 | | 49 | 2 |
| |
| 78.87% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.5070422535211268 | | totalSentences | 71 | | uniqueOpeners | 36 | |
| 58.48% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 57 | | matches | | 0 | "Of course he didn't stop." |
| | ratio | 0.018 | |
| 72.63% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 21 | | totalSentences | 57 | | matches | | 0 | "He didn't stop." | | 1 | "Her radio clicked against her" | | 2 | "She'd called it in three" | | 3 | "She'd done alone before." | | 4 | "He vanished around the next" | | 5 | "She followed, breath tearing at" | | 6 | "She drew her torch, not" | | 7 | "Her torch beam caught a" | | 8 | "She kept the beam low" | | 9 | "She reached the bottom of" | | 10 | "Their eyes met." | | 11 | "He knew she'd followed him" | | 12 | "It was closer to pity." | | 13 | "She kept her voice flat," | | 14 | "She glanced past him at" | | 15 | "She was done pretending she" | | 16 | "she said, watching the man's" | | 17 | "It came, small but there." | | 18 | "She nodded past him, toward" | | 19 | "She thought of Morris." |
| | ratio | 0.368 | |
| 38.95% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 48 | | totalSentences | 57 | | matches | | 0 | "The suspect had forty yards" | | 1 | "He didn't stop." | | 2 | "Nobody ever stopped when Quinn" | | 3 | "Her radio clicked against her" | | 4 | "She'd called it in three" | | 5 | "She'd done alone before." | | 6 | "The man cut left down" | | 7 | "Steam curled up from a" | | 8 | "The city smelled like wet" | | 9 | "Cases that didn't add up." | | 10 | "Cases that ended with paperwork" | | 11 | "He vanished around the next" | | 12 | "She followed, breath tearing at" | | 13 | "The suspect was gone." | | 14 | "Quinn stood there a second," | | 15 | "Every instinct she'd built over" | | 16 | "She drew her torch, not" | | 17 | "The passage beyond smelled of" | | 18 | "Her torch beam caught a" | | 19 | "Graffiti covered the walls down" |
| | ratio | 0.842 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 57 | | matches | (empty) | | ratio | 0 | |
| 15.31% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 28 | | technicalSentenceCount | 5 | | matches | | 0 | "She'd called it in three streets back, and backup was still four minutes out according to dispatch, which meant six in reality, which meant this was hers alone …" | | 1 | "But the book didn't have a chapter for whatever DS Morris had walked into three years ago, the thing that had taken him and left nothing behind but a case file …" | | 2 | "People moved between them — if *people* was the word — wrapped in coats and shawls, faces obscured by hoods, though here and there she caught a glimpse of somet…" | | 3 | "Quinn looked at the amber-lit tunnel stretching ahead, at the shapes moving through it that weren't quite human, at the suspect who'd just handed over something…" | | 4 | "She stepped past him into the Market anyway, torch beam cutting through lantern-light and smoke, following the suspect deeper into a place that had no business …" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.133 | | leniency | 0.267 | | rawRatio | 0 | | effectiveRatio | 0 | |