| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 6 | | tagDensity | 0.5 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1220 | | 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) | |
| 79.51% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1220 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "weight" | | 1 | "vibrated" | | 2 | "familiar" | | 3 | "traced" | | 4 | "glinting" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | |
| 98.96% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 1 | | narrationSentences | 32 | | matches | | |
| 8.93% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 3 | | narrationSentences | 32 | | filterMatches | (empty) | | hedgeMatches | | 0 | "tended to" | | 1 | "try to" | | 2 | "managed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 36 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 126 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1220 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 12 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 26 | | wordCount | 961 | | uniqueNames | 13 | | maxNameDensity | 0.62 | | worstName | "Eva" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Eva | 6 | | Moreau | 1 | | Ptolemy | 2 | | Lucien | 5 | | Evan | 3 | | Cardiff | 2 | | London | 1 | | Golden | 1 | | Empress | 1 | | Thames | 1 | | Marseille | 1 | | Doc | 1 | | Martens | 1 |
| | persons | | 0 | "Eva" | | 1 | "Moreau" | | 2 | "Ptolemy" | | 3 | "Lucien" | | 4 | "Evan" |
| | places | | 0 | "Cardiff" | | 1 | "London" | | 2 | "Golden" | | 3 | "Thames" | | 4 | "Marseille" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 30 | | 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 | 1220 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 36 | | matches | (empty) | |
| 86.41% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 11 | | mean | 110.91 | | std | 50.18 | | cv | 0.452 | | sampleLengths | | 0 | 73 | | 1 | 3 | | 2 | 156 | | 3 | 69 | | 4 | 113 | | 5 | 176 | | 6 | 85 | | 7 | 144 | | 8 | 177 | | 9 | 97 | | 10 | 127 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 32 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 149 | | matches | | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 36 | | ratio | 0 | | matches | (empty) | |
| 92.65% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 698 | | adjectiveStacks | 1 | | stackExamples | | | adverbCount | 29 | | adverbRatio | 0.04154727793696275 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.008595988538681949 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 36 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 36 | | mean | 33.89 | | std | 20.18 | | cv | 0.595 | | sampleLengths | | 0 | 29 | | 1 | 38 | | 2 | 6 | | 3 | 3 | | 4 | 29 | | 5 | 29 | | 6 | 46 | | 7 | 28 | | 8 | 24 | | 9 | 37 | | 10 | 32 | | 11 | 3 | | 12 | 44 | | 13 | 32 | | 14 | 34 | | 15 | 34 | | 16 | 32 | | 17 | 37 | | 18 | 30 | | 19 | 43 | | 20 | 33 | | 21 | 52 | | 22 | 29 | | 23 | 19 | | 24 | 32 | | 25 | 47 | | 26 | 17 | | 27 | 126 | | 28 | 51 | | 29 | 41 | | 30 | 56 | | 31 | 7 | | 32 | 21 | | 33 | 36 | | 34 | 39 | | 35 | 24 |
| |
| 53.70% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.3888888888888889 | | totalSentences | 36 | | uniqueOpeners | 14 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 32 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 32 | | matches | | 0 | "I yanked the door open" | | 1 | "I’d only undone the top" | | 2 | "It wasn’t Eva." | | 3 | "I’d spent four months telling" | | 4 | "My keys slipped from my" | | 5 | "He’d always hated strangers, especially" | | 6 | "He tapped the edge of" | | 7 | "He knew Eva’s wards, the" | | 8 | "I stumbled back, yanking the" | | 9 | "I set the coffee and" | | 10 | "I’d gotten a restraining order" | | 11 | "I wiped the coffee off" | | 12 | "I pulled the silver fleur" | | 13 | "It clinked against his suit" | | 14 | "I’d carried it with me" | | 15 | "I’d thought about him too" | | 16 | "He set his cane against" | | 17 | "I opened my mouth to" | | 18 | "They weren’t Eva’s scuffed black" | | 19 | "I froze, my blood turning" |
| | ratio | 0.625 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 31 | | totalSentences | 32 | | matches | | 0 | "I yanked the door open" | | 1 | "I’d only undone the top" | | 2 | "The words died in my" | | 3 | "It wasn’t Eva." | | 4 | "Lucien Moreau stood on the" | | 5 | "The ivory handle of his" | | 6 | "I’d spent four months telling" | | 7 | "My keys slipped from my" | | 8 | "He’d always hated strangers, especially" | | 9 | "The smell of garlic and" | | 10 | "Lucien’s jaw tightened." | | 11 | "He tapped the edge of" | | 12 | "He knew Eva’s wards, the" | | 13 | "The lattes sloshed over the" | | 14 | "I stumbled back, yanking the" | | 15 | "Ptolemy bolted for the sofa," | | 16 | "I set the coffee and" | | 17 | "I’d gotten a restraining order" | | 18 | "I wiped the coffee off" | | 19 | "I pulled the silver fleur" |
| | ratio | 0.969 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 32 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 25 | | technicalSentenceCount | 7 | | matches | | 0 | "Lucien Moreau stood on the threadbare stair landing, his platinum blond hair slicked back as sharp and neat as the charcoal tailored suit that clung to his broa…" | | 1 | "I’d spent four months telling myself I’d never see him again, that the half-demon information broker who’d walked out of my flat at 3am without a text, a call, …" | | 2 | "My keys slipped from my grasp, clattering loud against the linoleum, and Ptolemy, Eva’s chonky tabby, wound around my ankles before hissing so loud his whole bo…" | | 3 | "He’d always hated strangers, especially supernatural ones that reeked of sulphur and old money, the scent that clung to Lucien like a second skin." | | 4 | "He tapped the edge of the threshold with his cane, the sharp rap of ivory against wood a familiar sound that brought me straight back to that night in my flat, …" | | 5 | "I stumbled back, yanking the door open wider to keep from dropping the whole lot, and Lucien stepped inside before I could stop him, his boots thudding soft aga…" | | 6 | "The words hung in the air, thick with all the things we’d never said, all the hurt and the longing and the stupid, stupid attraction that had never gone away, n…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |