| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 14 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 35 | | tagDensity | 0.4 | | leniency | 0.8 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 66.22% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1036 | | totalAiIsmAdverbs | 7 | | found | | 0 | | adverb | "deliberately" | | count | 1 |
| | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | |
| | highlights | | 0 | "deliberately" | | 1 | "gently" | | 2 | "suddenly" | | 3 | "very" | | 4 | "completely" | | 5 | "slowly" | | 6 | "slightly" |
| |
| 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) | |
| 75.87% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1036 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "flicked" | | 1 | "weight" | | 2 | "charm" | | 3 | "stomach" | | 4 | "wavered" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 36 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 36 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 57 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 60 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1044 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 15 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 13 | | wordCount | 703 | | uniqueNames | 7 | | maxNameDensity | 0.43 | | worstName | "Rory" | | maxWindowNameDensity | 1 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 3 | | Moreau | 1 | | Eva | 3 | | Lucien | 2 | | Ptolemy | 2 | | London | 1 | | Marseille | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Eva" | | 3 | "Lucien" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 30 | | glossingSentenceCount | 3 | | matches | | 0 | "e sat, because apparently even half-demon fix" | | 1 | "quite believe was real" | | 2 | "not quite a smile" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1044 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 57 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 34 | | mean | 30.71 | | std | 26.95 | | cv | 0.878 | | sampleLengths | | 0 | 42 | | 1 | 52 | | 2 | 20 | | 3 | 5 | | 4 | 61 | | 5 | 58 | | 6 | 4 | | 7 | 4 | | 8 | 5 | | 9 | 94 | | 10 | 60 | | 11 | 14 | | 12 | 2 | | 13 | 55 | | 14 | 43 | | 15 | 18 | | 16 | 5 | | 17 | 63 | | 18 | 84 | | 19 | 58 | | 20 | 21 | | 21 | 5 | | 22 | 2 | | 23 | 47 | | 24 | 46 | | 25 | 2 | | 26 | 6 | | 27 | 9 | | 28 | 41 | | 29 | 4 | | 30 | 2 | | 31 | 70 | | 32 | 15 | | 33 | 27 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 36 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 117 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 1 | | flaggedSentences | 5 | | totalSentences | 57 | | ratio | 0.088 | | matches | | 0 | "His amber eye caught the hallway light; the black one gave nothing back at all." | | 1 | "She'd promised herself, the last time — six weeks ago now, in the back room of his club with his hand still warm against her jaw and his voice low and careful as he told her it would be easier, safer, better, if they simply didn't — that she wouldn't let him talk his way back into a room with her." | | 2 | "Not his clothes — his clothes were always immaculate, a small tyranny he inflicted on the world — but something underneath them." | | 3 | "In the lamplight his face looked younger, unguarded in a way she'd only seen once or twice before — the night in Marseille when he'd talked about his mother, the morning after, when he thought she was still asleep and had looked at her like she was something he couldn't quite believe was real." | | 4 | "She found the kit under the bathroom sink, and when she came back he'd shrugged out of his jacket, and the shirt beneath was worse than she'd let herself imagine — a long, ugly gash along his ribs, already stiffening at the edges." |
| |
| 97.12% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 693 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 30 | | adverbRatio | 0.04329004329004329 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.015873015873015872 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 57 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 57 | | mean | 18.32 | | std | 16.22 | | cv | 0.885 | | sampleLengths | | 0 | 42 | | 1 | 30 | | 2 | 7 | | 3 | 15 | | 4 | 20 | | 5 | 5 | | 6 | 49 | | 7 | 12 | | 8 | 35 | | 9 | 17 | | 10 | 6 | | 11 | 4 | | 12 | 4 | | 13 | 5 | | 14 | 5 | | 15 | 61 | | 16 | 11 | | 17 | 10 | | 18 | 7 | | 19 | 6 | | 20 | 22 | | 21 | 5 | | 22 | 27 | | 23 | 14 | | 24 | 2 | | 25 | 48 | | 26 | 7 | | 27 | 27 | | 28 | 16 | | 29 | 18 | | 30 | 5 | | 31 | 27 | | 32 | 36 | | 33 | 34 | | 34 | 50 | | 35 | 4 | | 36 | 54 | | 37 | 21 | | 38 | 5 | | 39 | 2 | | 40 | 20 | | 41 | 27 | | 42 | 43 | | 43 | 3 | | 44 | 2 | | 45 | 6 | | 46 | 9 | | 47 | 37 | | 48 | 4 | | 49 | 4 |
| |
| 60.82% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.43859649122807015 | | totalSentences | 57 | | uniqueOpeners | 25 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 34 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 24 | | totalSentences | 34 | | matches | | 0 | "His cane was hooked over" | | 1 | "His amber eye caught the" | | 2 | "he said, which was such" | | 3 | "He glanced past her into" | | 4 | "She hated that some old" | | 5 | "She should have said no." | | 6 | "She'd promised herself, the last" | | 7 | "It had taken her three" | | 8 | "It had taken her three" | | 9 | "She wasn't sure which had" | | 10 | "she said, and stepped back" | | 11 | "She flicked the hall light" | | 12 | "He sat, because apparently even" | | 13 | "She set the kettle down" | | 14 | "It came out quieter than" | | 15 | "She turned around slowly." | | 16 | "she said, but there wasn't" | | 17 | "His mouth twitched, not quite" | | 18 | "She found the kit under" | | 19 | "Her stomach dropped." |
| | ratio | 0.706 | |
| 4.12% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 31 | | totalSentences | 34 | | matches | | 0 | "The three deadbolts took Rory" | | 1 | "Lucien Moreau stood on Eva's" | | 2 | "His cane was hooked over" | | 3 | "His amber eye caught the" | | 4 | "he said, which was such" | | 5 | "He glanced past her into" | | 6 | "Rory pulled her cardigan tighter" | | 7 | "She hated that some old" | | 8 | "She should have said no." | | 9 | "She'd promised herself, the last" | | 10 | "It had taken her three" | | 11 | "It had taken her three" | | 12 | "She wasn't sure which had" | | 13 | "A tightness around his mouth." | | 14 | "The way his good hand" | | 15 | "she said, and stepped back" | | 16 | "She flicked the hall light" | | 17 | "He sat, because apparently even" | | 18 | "Ptolemy abandoned the sofa arm" | | 19 | "Rory said, filling the kettle" |
| | ratio | 0.912 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 34 | | matches | (empty) | | ratio | 0 | |
| 40.82% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 14 | | technicalSentenceCount | 2 | | matches | | 0 | "Lucien Moreau stood on Eva's landing in a charcoal suit that looked absurdly, deliberately out of place against the peeling wallpaper and the smell of curry dri…" | | 1 | "He sat, because apparently even half-demon fixers who ran London's underworld information trade knew better than to argue with a woman holding a kettle like a w…" |
| |
| 89.29% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 1 | | matches | | 0 | "His mouth twitched, not quite a smile" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 35 | | tagDensity | 0.171 | | leniency | 0.343 | | rawRatio | 0.167 | | effectiveRatio | 0.057 | |