| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 115 | | tagDensity | 0.07 | | leniency | 0.139 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2379 | | 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) | |
| 89.49% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2379 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "unreadable" | | 1 | "weight" | | 2 | "silence" | | 3 | "flicked" | | 4 | "stomach" |
| |
| 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 | 176 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 1 | | narrationSentences | 176 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 283 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2378 | | 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 | 45 | | wordCount | 1603 | | uniqueNames | 11 | | maxNameDensity | 1 | | worstName | "Aurora" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Lucien | 11 | | Moreau | 1 | | Ptolemy | 3 | | Brick | 1 | | Lane | 1 | | Eva | 5 | | Aurora | 16 | | Soho | 1 | | Thames | 1 | | Rory | 1 | | Blood | 4 |
| | persons | | 0 | "Lucien" | | 1 | "Moreau" | | 2 | "Ptolemy" | | 3 | "Eva" | | 4 | "Aurora" | | 5 | "Rory" | | 6 | "Blood" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Soho" | | 3 | "Thames" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 110 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite a smile" | | 1 | "not quite making contact" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2378 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 283 | | matches | | 0 | "hated that she" | | 1 | "Hated that her" | | 2 | "hated that answer" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 182 | | mean | 13.07 | | std | 14.96 | | cv | 1.145 | | sampleLengths | | 0 | 13 | | 1 | 64 | | 2 | 8 | | 3 | 29 | | 4 | 16 | | 5 | 16 | | 6 | 6 | | 7 | 5 | | 8 | 14 | | 9 | 4 | | 10 | 7 | | 11 | 5 | | 12 | 10 | | 13 | 24 | | 14 | 4 | | 15 | 16 | | 16 | 4 | | 17 | 5 | | 18 | 6 | | 19 | 10 | | 20 | 11 | | 21 | 6 | | 22 | 37 | | 23 | 8 | | 24 | 7 | | 25 | 2 | | 26 | 8 | | 27 | 13 | | 28 | 3 | | 29 | 63 | | 30 | 11 | | 31 | 7 | | 32 | 4 | | 33 | 3 | | 34 | 10 | | 35 | 57 | | 36 | 38 | | 37 | 47 | | 38 | 6 | | 39 | 11 | | 40 | 3 | | 41 | 4 | | 42 | 2 | | 43 | 27 | | 44 | 9 | | 45 | 1 | | 46 | 5 | | 47 | 5 | | 48 | 93 | | 49 | 1 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 176 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 267 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 1 | | semicolonCount | 0 | | flaggedSentences | 1 | | totalSentences | 283 | | ratio | 0.004 | | matches | | 0 | "Hated that her body remembered him in pieces—his hand at the small of her back steering her through a crowd, his low voice at her ear in a gambling den under Soho, the weight of his coat over her shoulders on the bridge that night when the Thames smelled of iron and rain." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1610 | | adjectiveStacks | 1 | | stackExamples | | 0 | "other pressed hard against his" |
| | adverbCount | 50 | | adverbRatio | 0.031055900621118012 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.0037267080745341614 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 283 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 283 | | mean | 8.4 | | std | 7.28 | | cv | 0.866 | | sampleLengths | | 0 | 13 | | 1 | 9 | | 2 | 15 | | 3 | 14 | | 4 | 10 | | 5 | 9 | | 6 | 7 | | 7 | 8 | | 8 | 7 | | 9 | 22 | | 10 | 9 | | 11 | 7 | | 12 | 7 | | 13 | 9 | | 14 | 6 | | 15 | 5 | | 16 | 10 | | 17 | 2 | | 18 | 1 | | 19 | 1 | | 20 | 4 | | 21 | 7 | | 22 | 5 | | 23 | 7 | | 24 | 1 | | 25 | 2 | | 26 | 6 | | 27 | 3 | | 28 | 4 | | 29 | 11 | | 30 | 4 | | 31 | 16 | | 32 | 4 | | 33 | 5 | | 34 | 6 | | 35 | 10 | | 36 | 11 | | 37 | 6 | | 38 | 10 | | 39 | 11 | | 40 | 16 | | 41 | 4 | | 42 | 4 | | 43 | 7 | | 44 | 2 | | 45 | 8 | | 46 | 13 | | 47 | 3 | | 48 | 4 | | 49 | 10 |
| |
| 44.70% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.24381625441696114 | | totalSentences | 283 | | uniqueOpeners | 69 | |
| 65.36% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 153 | | matches | | 0 | "Then his hand slipped from" | | 1 | "Of course he did." | | 2 | "Somewhere in the building a" |
| | ratio | 0.02 | |
| 65.75% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 59 | | totalSentences | 153 | | matches | | 0 | "His platinum hair had lost" | | 1 | "He held his ivory-handled cane" | | 2 | "She pushed the door in." | | 3 | "His cane slid into the" | | 4 | "His eyes stayed on her" | | 5 | "Her face, as if he" | | 6 | "She started to tell him" | | 7 | "He saw her notice." | | 8 | "She stared at him." | | 9 | "She opened the door wide" | | 10 | "He smelled of rain, smoke," | | 11 | "She shut the door at" | | 12 | "she went, turning back" | | 13 | "He took off one glove" | | 14 | "She pointed with her chin." | | 15 | "She walked ahead of him" | | 16 | "She cleared a space with" | | 17 | "He set the cane within" | | 18 | "He shrugged out of the" | | 19 | "He loosened his tie, tugged" |
| | ratio | 0.386 | |
| 25.36% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 133 | | totalSentences | 153 | | matches | | 0 | "The door opened on Lucien" | | 1 | "Rain clung to his charcoal" | | 2 | "His platinum hair had lost" | | 3 | "The other stayed flat and" | | 4 | "He held his ivory-handled cane" | | 5 | "The other pressed hard against" | | 6 | "Aurora kept one hand on" | | 7 | "Lucien’s mouth shifted, not quite" | | 8 | "A split in his lower" | | 9 | "She pushed the door in." | | 10 | "His cane slid into the" | | 11 | "The words hit harder than" | | 12 | "His eyes stayed on her" | | 13 | "Her face, as if he" | | 14 | "The laugh burst out of" | | 15 | "She started to tell him" | | 16 | "Blood had soaked through his" | | 17 | "He saw her notice." | | 18 | "She stared at him." | | 19 | "Rain ticked off the fire" |
| | ratio | 0.869 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 153 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 69 | | technicalSentenceCount | 1 | | matches | | 0 | "Furious at the memory of his mouth on hers in the dark of that taxi, his hand cupping the back of her neck as if he had found the one thing in the city he did n…" |
| |
| 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 | 3 | | fancyTags | | 0 | "Aurora muttered (mutter)" | | 1 | "he repeated (repeat)" | | 2 | "he murmured (murmur)" |
| | dialogueSentences | 115 | | tagDensity | 0.026 | | leniency | 0.052 | | rawRatio | 1 | | effectiveRatio | 0.052 | |