| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 39 | | tagDensity | 0.385 | | leniency | 0.769 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1463 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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.15% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1463 | | totalAiIsms | 14 | | found | | | highlights | | 0 | "weight" | | 1 | "flicker" | | 2 | "glint" | | 3 | "resolved" | | 4 | "etched" | | 5 | "footsteps" | | 6 | "echoed" | | 7 | "traced" | | 8 | "perfect" |
| |
| 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 | 91 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 91 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 115 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1463 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 1121 | | uniqueNames | 6 | | maxNameDensity | 1.07 | | worstName | "Reeves" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Reeves" | | discoveredNames | | Camden | 2 | | Underground | 1 | | London | 2 | | Callum | 1 | | Reeves | 12 | | Quinn | 6 |
| | persons | | | places | | | globalScore | 0.965 | | windowScore | 0.833 | |
| 62.28% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 57 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite a hum and not quite a voice, a frequency that pressed against the inside of her skull" | | 1 | "not quite a voice, a frequency that pressed against the inside of her skull" | | 2 | "seemed wider than before, as though whatever arrangement someone had made, whatever welcome they'd prepared in this place beneath the city, hadn't been meant for the man on the platform at all" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1463 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 115 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 52 | | mean | 28.13 | | std | 21.52 | | cv | 0.765 | | sampleLengths | | 0 | 5 | | 1 | 51 | | 2 | 60 | | 3 | 60 | | 4 | 37 | | 5 | 14 | | 6 | 9 | | 7 | 36 | | 8 | 20 | | 9 | 24 | | 10 | 6 | | 11 | 6 | | 12 | 34 | | 13 | 12 | | 14 | 4 | | 15 | 27 | | 16 | 48 | | 17 | 75 | | 18 | 11 | | 19 | 22 | | 20 | 8 | | 21 | 34 | | 22 | 38 | | 23 | 66 | | 24 | 6 | | 25 | 4 | | 26 | 14 | | 27 | 3 | | 28 | 62 | | 29 | 26 | | 30 | 42 | | 31 | 27 | | 32 | 62 | | 33 | 24 | | 34 | 72 | | 35 | 3 | | 36 | 38 | | 37 | 7 | | 38 | 13 | | 39 | 20 | | 40 | 22 | | 41 | 12 | | 42 | 6 | | 43 | 75 | | 44 | 40 | | 45 | 29 | | 46 | 19 | | 47 | 1 | | 48 | 52 | | 49 | 12 |
| |
| 93.70% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 91 | | matches | | 0 | "being asked" | | 1 | "been stripped" | | 2 | "been meant" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 179 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 115 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1123 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 28 | | adverbRatio | 0.024933214603739984 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.004452359750667854 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 115 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 115 | | mean | 12.72 | | std | 9.17 | | cv | 0.721 | | sampleLengths | | 0 | 5 | | 1 | 26 | | 2 | 19 | | 3 | 3 | | 4 | 3 | | 5 | 25 | | 6 | 5 | | 7 | 30 | | 8 | 19 | | 9 | 17 | | 10 | 2 | | 11 | 2 | | 12 | 20 | | 13 | 37 | | 14 | 5 | | 15 | 9 | | 16 | 5 | | 17 | 4 | | 18 | 19 | | 19 | 17 | | 20 | 20 | | 21 | 9 | | 22 | 15 | | 23 | 6 | | 24 | 6 | | 25 | 20 | | 26 | 14 | | 27 | 4 | | 28 | 8 | | 29 | 4 | | 30 | 22 | | 31 | 5 | | 32 | 11 | | 33 | 17 | | 34 | 4 | | 35 | 1 | | 36 | 15 | | 37 | 16 | | 38 | 12 | | 39 | 29 | | 40 | 3 | | 41 | 10 | | 42 | 5 | | 43 | 11 | | 44 | 14 | | 45 | 8 | | 46 | 8 | | 47 | 29 | | 48 | 5 | | 49 | 10 |
| |
| 66.96% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.4434782608695652 | | totalSentences | 115 | | uniqueOpeners | 51 | |
| 39.22% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 85 | | matches | | 0 | "Somewhere deep in the northern" |
| | ratio | 0.012 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 23 | | totalSentences | 85 | | matches | | 0 | "She pressed two fingers against" | | 1 | "He wore a charcoal suit," | | 2 | "She gestured at the suit" | | 3 | "He returned to his notebook." | | 4 | "She pulled a penlight from" | | 5 | "He delivered this with the" | | 6 | "She walked toward it." | | 7 | "He crouched beside her and" | | 8 | "She traced one of the" | | 9 | "She stood and faced him" | | 10 | "He opened his mouth, closed" | | 11 | "She leaned closer." | | 12 | "It traced a perfect circle," | | 13 | "She gestured without touching" | | 14 | "She reached into her jacket" | | 15 | "She pulled it out, more" | | 16 | "She'd forgotten she carried it." | | 17 | "It snapped hard to the" | | 18 | "She closed her hand around" | | 19 | "She crossed back to the" |
| | ratio | 0.271 | |
| 36.47% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 72 | | totalSentences | 85 | | matches | | 0 | "The dead man was smiling." | | 1 | "Quinn crouched at the edge" | | 2 | "The grin stretched wide and" | | 3 | "Nobody died smiling." | | 4 | "She pressed two fingers against" | | 5 | "The body lay between two" | | 6 | "He wore a charcoal suit," | | 7 | "The sole of his left" | | 8 | "Quinn didn't look up" | | 9 | "Reeves stepped forward and squinted." | | 10 | "She gestured at the suit" | | 11 | "A pause stretched between them," | | 12 | "Reeves jotted something in his" | | 13 | "Quinn rose and circled the" | | 14 | "Reeves rubbed his jaw." | | 15 | "The torchlight caught Reeves's expression," | | 16 | "He returned to his notebook." | | 17 | "Quinn lowered herself again and" | | 18 | "The concentric circles showed no" | | 19 | "The wound was clean." |
| | ratio | 0.847 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 85 | | matches | (empty) | | ratio | 0 | |
| 74.83% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 4 | | matches | | 0 | "The tunnel air changed as she moved deeper, growing cooler and carrying a faint odour that reminded her of ozone after a lightning strike, sharp and electrical." | | 1 | "It traced a perfect circle, from collarbone to collarbone, as though someone had drawn it with a compass point." | | 2 | "The small brass compass sat in her palm, its verdigris patina dark against her skin, the face etched with sigils she'd bought from a dealer in a market that did…" | | 3 | "The name scratched into the bone stared up at her, and the smile on the dead man's face seemed wider than before, as though whatever arrangement someone had mad…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 39 | | tagDensity | 0.026 | | leniency | 0.051 | | rawRatio | 0 | | effectiveRatio | 0 | |