| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 25 | | adverbTagCount | 3 | | adverbTags | | 0 | "The retort came automatically [automatically]" | | 1 | "she said finally [finally]" | | 2 | "she asked quietly [quietly]" |
| | dialogueSentences | 61 | | tagDensity | 0.41 | | leniency | 0.82 | | rawRatio | 0.12 | | effectiveRatio | 0.098 | |
| 69.08% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1617 | | totalAiIsmAdverbs | 10 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | adverb | "barely above a whisper" | | count | 1 |
| | 6 | |
| | highlights | | 0 | "carefully" | | 1 | "very" | | 2 | "suddenly" | | 3 | "intensely" | | 4 | "slightly" | | 5 | "barely above a whisper" | | 6 | "slowly" |
| |
| 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) | |
| 47.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1617 | | totalAiIsms | 17 | | found | | | highlights | | 0 | "lilt" | | 1 | "encounter" | | 2 | "weight" | | 3 | "chill" | | 4 | "imposing" | | 5 | "reminder" | | 6 | "tracing" | | 7 | "perfect" | | 8 | "ensure" | | 9 | "flickered" | | 10 | "streaming" | | 11 | "traced" | | 12 | "tenderness" | | 13 | "tension" | | 14 | "intensity" | | 15 | "whisper" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "couldn't help but" | | count | 1 |
|
| | highlights | | 0 | "couldn't help but smile" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 96 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 96 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 132 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 33 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1607 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 18 | | unquotedAttributions | 0 | | matches | (empty) | |
| 71.19% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 52 | | wordCount | 1142 | | uniqueNames | 12 | | maxNameDensity | 1.58 | | worstName | "Aurora" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 18 | | Eva | 6 | | French | 1 | | Edinburgh | 1 | | Lucien | 13 | | London | 2 | | Moreau | 2 | | Ptolemy | 3 | | Soho | 1 | | Cardiff | 1 | | University | 1 | | Evan | 3 |
| | persons | | 0 | "Aurora" | | 1 | "Eva" | | 2 | "Lucien" | | 3 | "Moreau" | | 4 | "Ptolemy" | | 5 | "Evan" |
| | places | | 0 | "Edinburgh" | | 1 | "London" | | 2 | "Soho" | | 3 | "Cardiff" |
| | globalScore | 0.712 | | windowScore | 0.833 | |
| 90.48% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 84 | | glossingSentenceCount | 2 | | matches | | 0 | "quite a smile" | | 1 | "something like amusement" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1607 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 132 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 74 | | mean | 21.72 | | std | 13.86 | | cv | 0.638 | | sampleLengths | | 0 | 11 | | 1 | 11 | | 2 | 51 | | 3 | 23 | | 4 | 61 | | 5 | 11 | | 6 | 20 | | 7 | 13 | | 8 | 17 | | 9 | 24 | | 10 | 26 | | 11 | 5 | | 12 | 40 | | 13 | 12 | | 14 | 13 | | 15 | 44 | | 16 | 21 | | 17 | 23 | | 18 | 69 | | 19 | 11 | | 20 | 47 | | 21 | 11 | | 22 | 20 | | 23 | 17 | | 24 | 21 | | 25 | 30 | | 26 | 19 | | 27 | 1 | | 28 | 2 | | 29 | 12 | | 30 | 27 | | 31 | 18 | | 32 | 13 | | 33 | 33 | | 34 | 50 | | 35 | 11 | | 36 | 38 | | 37 | 7 | | 38 | 17 | | 39 | 53 | | 40 | 11 | | 41 | 19 | | 42 | 8 | | 43 | 27 | | 44 | 21 | | 45 | 30 | | 46 | 9 | | 47 | 17 | | 48 | 32 | | 49 | 17 |
| |
| 94.30% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 96 | | matches | | 0 | "was piled" | | 1 | "was, sent" | | 2 | "was gone" |
| |
| 62.54% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 194 | | matches | | 0 | "was away investigating" | | 1 | "was wearing" | | 2 | "was beginning" | | 3 | "was facing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 132 | | ratio | 0.053 | | matches | | 0 | "His mismatched eyes—one amber, one black—regarded her with careful neutrality." | | 1 | "Eva herself was away investigating something in Edinburgh—something involving standing stones and astronomical alignments that Aurora had only half listened to." | | 2 | "\"It's late, Lucien.\" She glanced at her watch—nearly midnight." | | 3 | "Aurora's hand went unconsciously to her left wrist, thumb brushing over the small crescent-shaped scar—a souvenir from the last time Evan had lost his temper." | | 4 | "Something flickered in his mismatched eyes—pain, perhaps." | | 5 | "He turned to face her, suddenly close enough that she could smell his cologne—sandalwood and something deeper, more primal." | | 6 | "She wasn't sure which frightened her more—the prospect of Evan finding her, or spending time alone with the man who'd seen through her defenses so easily." |
| |
| 92.13% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 998 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 46 | | adverbRatio | 0.04609218436873747 | | lyAdverbCount | 23 | | lyAdverbRatio | 0.023046092184368736 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 132 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 132 | | mean | 12.17 | | std | 6.62 | | cv | 0.544 | | sampleLengths | | 0 | 11 | | 1 | 11 | | 2 | 24 | | 3 | 17 | | 4 | 10 | | 5 | 19 | | 6 | 4 | | 7 | 9 | | 8 | 13 | | 9 | 18 | | 10 | 21 | | 11 | 11 | | 12 | 15 | | 13 | 5 | | 14 | 6 | | 15 | 7 | | 16 | 12 | | 17 | 5 | | 18 | 2 | | 19 | 10 | | 20 | 12 | | 21 | 9 | | 22 | 17 | | 23 | 5 | | 24 | 7 | | 25 | 19 | | 26 | 14 | | 27 | 6 | | 28 | 6 | | 29 | 13 | | 30 | 13 | | 31 | 16 | | 32 | 15 | | 33 | 21 | | 34 | 23 | | 35 | 18 | | 36 | 8 | | 37 | 17 | | 38 | 26 | | 39 | 11 | | 40 | 18 | | 41 | 29 | | 42 | 11 | | 43 | 15 | | 44 | 5 | | 45 | 7 | | 46 | 10 | | 47 | 21 | | 48 | 25 | | 49 | 5 |
| |
| 64.90% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.4166666666666667 | | totalSentences | 132 | | uniqueOpeners | 55 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 92 | | matches | (empty) | | ratio | 0 | |
| 67.83% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 92 | | matches | | 0 | "His name escaped her lips" | | 1 | "He stood in Eva's doorway" | | 2 | "His mismatched eyes—one amber, one" | | 3 | "His voice carried the same" | | 4 | "She'd been crashing here for" | | 5 | "she said, as if that" | | 6 | "She'd been foolish to think" | | 7 | "She glanced at her watch—nearly" | | 8 | "She studied him more carefully," | | 9 | "he said, stepping past her" | | 10 | "he commented, carefully moving aside" | | 11 | "Her hair was piled messily" | | 12 | "He sat on the cleared" | | 13 | "she asked, though she already" | | 14 | "Their eyes locked, and Aurora" | | 15 | "He saw too much." | | 16 | "she said finally" | | 17 | "He leaned forward" | | 18 | "His office after hours, rain" | | 19 | "she asked quietly" |
| | ratio | 0.38 | |
| 19.78% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 81 | | totalSentences | 92 | | matches | | 0 | "The door swung open, and" | | 1 | "His name escaped her lips" | | 2 | "He stood in Eva's doorway" | | 3 | "The dim hallway light caught" | | 4 | "His mismatched eyes—one amber, one" | | 5 | "His voice carried the same" | | 6 | "Aurora's fingers tightened around the" | | 7 | "She'd been crashing here for" | | 8 | "Eva herself was away investigating" | | 9 | "she said, as if that" | | 10 | "Lucien shifted his weight, the" | | 11 | "A chill ran down Aurora's" | | 12 | "The corner of his mouth" | | 13 | "The half-demon missed nothing that" | | 14 | "She'd been foolish to think" | | 15 | "She glanced at her watch—nearly" | | 16 | "Something in his tone made" | | 17 | "She studied him more carefully," | | 18 | "he said, stepping past her" | | 19 | "Aurora closed the door, engaging" |
| | ratio | 0.88 | |
| 54.35% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 92 | | matches | | 0 | "If Evan had hired him," |
| | ratio | 0.011 | |
| 36.47% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 47 | | technicalSentenceCount | 7 | | matches | | 0 | "The half-demon missed nothing that happened in London's supernatural underbelly." | | 1 | "For a woman who'd spent years building walls, he was a wrecking ball with perfect manners." | | 2 | "Lucien paused, studying her face with an intensity that made her skin warm." | | 3 | "She was acutely aware of how close they stood, of the heat radiating from his body, of the subtle tilt of his head that had preceded their first and only kiss m…" | | 4 | "And then he was gone, leaving nothing but the lingering scent of his cologne and an envelope that promised both escape and complication." | | 5 | "She wasn't sure which frightened her more—the prospect of Evan finding her, or spending time alone with the man who'd seen through her defenses so easily." | | 6 | "Aurora's eyes drifted to the envelope on the coffee table, to the key that promised safety and complications in equal measure." |
| |
| 45.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 25 | | uselessAdditionCount | 4 | | matches | | 0 | "she said, as if that answered his question" | | 1 | "The retort came automatically, a reminder of easier times between them" | | 2 | "he said, a ghost of a smile playing on his lips" | | 3 | "she said, her voice barely above a whisper" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 12 | | fancyCount | 3 | | fancyTags | | 0 | "he commented (comment)" | | 1 | "Lucien agreed (agree)" | | 2 | "Aurora laughed (laugh)" |
| | dialogueSentences | 61 | | tagDensity | 0.197 | | leniency | 0.393 | | rawRatio | 0.25 | | effectiveRatio | 0.098 | |