| 96.55% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 3 | | adverbTags | | 0 | "he said finally [finally]" | | 1 | "she said quietly [quietly]" | | 2 | "she asked finally [finally]" |
| | dialogueSentences | 58 | | tagDensity | 0.328 | | leniency | 0.655 | | rawRatio | 0.158 | | effectiveRatio | 0.103 | |
| 83.07% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1477 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "softly" | | 1 | "very" | | 2 | "suddenly" | | 3 | "slightly" | | 4 | "lightly" |
| |
| 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) | |
| 32.30% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1477 | | totalAiIsms | 20 | | found | | 0 | | | 1 | | | 2 | | word | "down her spine" | | count | 1 |
| | 3 | | | 4 | | | 5 | | | 6 | | | 7 | | | 8 | | | 9 | | | 10 | | | 11 | | | 12 | | | 13 | | | 14 | | | 15 | |
| | highlights | | 0 | "could feel" | | 1 | "familiar" | | 2 | "down her spine" | | 3 | "pulse" | | 4 | "traced" | | 5 | "stomach" | | 6 | "flicked" | | 7 | "charged" | | 8 | "weight" | | 9 | "pounding" | | 10 | "silence" | | 11 | "trembled" | | 12 | "tension" | | 13 | "eyebrow" | | 14 | "implication" | | 15 | "unravel" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "shiver down spine" | | count | 1 |
|
| | highlights | | 0 | "A shiver ran down her spine" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 1 | | narrationSentences | 116 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 116 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 153 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 11 | | markdownWords | 19 | | totalWords | 1457 | | ratio | 0.013 | | matches | | 0 | "mon ange" | | 1 | "Rory" | | 2 | "my" | | 3 | "chérie" | | 4 | "Evan." | | 5 | "spy" | | 6 | "use it if she ever needed to" | | 7 | "hurt" | | 8 | "us" | | 9 | "mon cœur" | | 10 | "my" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 21 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 34 | | wordCount | 1086 | | uniqueNames | 11 | | maxNameDensity | 1.01 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Lucien" | | discoveredNames | | Moreau | 2 | | London | 1 | | Evan | 5 | | Ptolemy | 1 | | Lucien | 11 | | Soho | 1 | | Rory | 5 | | Marseille | 1 | | Eva | 1 | | Like | 3 | | Should | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Evan" | | 2 | "Ptolemy" | | 3 | "Lucien" | | 4 | "Rory" | | 5 | "Eva" | | 6 | "Should" |
| | places | | 0 | "London" | | 1 | "Soho" | | 2 | "Marseille" |
| | globalScore | 0.994 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 65 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.686 | | wordCount | 1457 | | matches | | 0 | "not a strand out of place, but the heterochromatic gaze" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 153 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 67 | | mean | 21.75 | | std | 21.1 | | cv | 0.97 | | sampleLengths | | 0 | 11 | | 1 | 59 | | 2 | 47 | | 3 | 19 | | 4 | 53 | | 5 | 5 | | 6 | 67 | | 7 | 2 | | 8 | 5 | | 9 | 26 | | 10 | 20 | | 11 | 45 | | 12 | 1 | | 13 | 1 | | 14 | 34 | | 15 | 11 | | 16 | 11 | | 17 | 73 | | 18 | 7 | | 19 | 34 | | 20 | 104 | | 21 | 3 | | 22 | 14 | | 23 | 24 | | 24 | 11 | | 25 | 6 | | 26 | 50 | | 27 | 4 | | 28 | 41 | | 29 | 3 | | 30 | 45 | | 31 | 1 | | 32 | 22 | | 33 | 4 | | 34 | 4 | | 35 | 9 | | 36 | 33 | | 37 | 17 | | 38 | 26 | | 39 | 13 | | 40 | 40 | | 41 | 33 | | 42 | 17 | | 43 | 4 | | 44 | 10 | | 45 | 13 | | 46 | 52 | | 47 | 14 | | 48 | 42 | | 49 | 3 |
| |
| 99.21% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 116 | | matches | | 0 | "was slicked" | | 1 | "been drawn" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 199 | | matches | | 0 | "wasn’t joking" | | 1 | "was coming" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 14 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 153 | | ratio | 0.059 | | matches | | 0 | "Knew the precise rhythm of it—two sharp raps, a pause, then three more." | | 1 | "The man had always arrived like a storm—unannounced, inevitable, leaving wreckage in his wake." | | 2 | "But her traitorous pulse thrummed in her wrists, and the memory of his hands—how they’d once traced the scar on her left wrist like it was something sacred—made her stomach twist." | | 3 | "His platinum hair was slicked back, not a strand out of place, but the heterochromatic gaze—amber and black—burned with something far less composed." | | 4 | "Instead, his gaze flicked over her—lingering on the dark circles beneath her eyes, the way her black hair had been hastily tied back, the thin strap of her tank top slipping off one shoulder." | | 5 | "Lucien had cleaned her up, stitched her wrist where the glass had cut too deep, and then—nothing." | | 6 | "The scent of him—spice and something darker, like gunpowder after the rain—filled her lungs." | | 7 | "She studied him—the way his fingers flexed around the cane, the tension in his shoulders beneath the impeccable charcoal suit." | | 8 | "The image showed a woman—mid-twenties, dark hair, sharp features—standing outside a café in Soho." |
| |
| 95.44% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1106 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 50 | | adverbRatio | 0.045207956600361664 | | lyAdverbCount | 13 | | lyAdverbRatio | 0.011754068716094032 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 153 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 153 | | mean | 9.52 | | std | 7.86 | | cv | 0.826 | | sampleLengths | | 0 | 11 | | 1 | 18 | | 2 | 4 | | 3 | 13 | | 4 | 3 | | 5 | 3 | | 6 | 13 | | 7 | 5 | | 8 | 19 | | 9 | 14 | | 10 | 14 | | 11 | 14 | | 12 | 5 | | 13 | 6 | | 14 | 4 | | 15 | 12 | | 16 | 31 | | 17 | 5 | | 18 | 22 | | 19 | 23 | | 20 | 15 | | 21 | 2 | | 22 | 2 | | 23 | 3 | | 24 | 2 | | 25 | 5 | | 26 | 14 | | 27 | 12 | | 28 | 6 | | 29 | 9 | | 30 | 5 | | 31 | 4 | | 32 | 34 | | 33 | 3 | | 34 | 4 | | 35 | 1 | | 36 | 1 | | 37 | 8 | | 38 | 20 | | 39 | 5 | | 40 | 1 | | 41 | 3 | | 42 | 4 | | 43 | 4 | | 44 | 5 | | 45 | 6 | | 46 | 12 | | 47 | 22 | | 48 | 17 | | 49 | 3 |
| |
| 46.84% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.3202614379084967 | | totalSentences | 153 | | uniqueOpeners | 49 | |
| 66.01% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 101 | | matches | | 0 | "Instead, his gaze flicked over" | | 1 | "Just silence, as if she’d" |
| | ratio | 0.02 | |
| 69.50% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 38 | | totalSentences | 101 | | matches | | 0 | "She knew that knock." | | 1 | "She pressed her palm against" | | 2 | "She should ignore him." | | 3 | "She yanked the door open." | | 4 | "His platinum hair was slicked" | | 5 | "He was nervous." | | 6 | "She gripped the doorframe, nails" | | 7 | "He didn’t answer immediately." | | 8 | "His throat worked." | | 9 | "He’d been the only one" | | 10 | "His jaw tightened." | | 11 | "She laughed, sharp and humourless." | | 12 | "he said finally" | | 13 | "He traded in secrets and" | | 14 | "She stepped back, just enough" | | 15 | "He moved with the precision" | | 16 | "She folded her arms" | | 17 | "He turned to face her," | | 18 | "She studied him—the way his" | | 19 | "His mouth twisted." |
| | ratio | 0.376 | |
| 83.76% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 76 | | totalSentences | 101 | | matches | | 0 | "The third deadbolt clicked like" | | 1 | "Aurora froze, fingers still wrapped" | | 2 | "She knew that knock." | | 3 | "A signature she hadn’t heard" | | 4 | "She pressed her palm against" | | 5 | "The scent of rain and" | | 6 | "The man had always arrived" | | 7 | "Lucien’s voice murmured, low and" | | 8 | "A shiver ran down her" | | 9 | "She should ignore him." | | 10 | "She yanked the door open." | | 11 | "Lucien Moreau leaned against the" | | 12 | "His platinum hair was slicked" | | 13 | "The ivory-handled cane rested against" | | 14 | "He was nervous." | | 15 | "A slow smile curved his" | | 16 | "The words hit like a" | | 17 | "She gripped the doorframe, nails" | | 18 | "He didn’t answer immediately." | | 19 | "His throat worked." |
| | ratio | 0.752 | |
| 49.50% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 101 | | matches | | | ratio | 0.01 | |
| 90.59% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 41 | | technicalSentenceCount | 3 | | matches | | 0 | "She pressed her palm against the door, as if she could feel the heat of him through the wood." | | 1 | "But Lucien was a half-demon fixer who trafficked in the kind of deals that got people knifed in alleys." | | 2 | "But it wasn’t the woman who made Rory’s pulse spike." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 81.03% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 4 | | fancyTags | | 0 | "Lucien’s voice murmured (murmur)" | | 1 | "Lucien murmured (murmur)" | | 2 | "she whispered (whisper)" | | 3 | "she demanded (demand)" |
| | dialogueSentences | 58 | | tagDensity | 0.172 | | leniency | 0.345 | | rawRatio | 0.4 | | effectiveRatio | 0.138 | |