| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 11 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 40 | | tagDensity | 0.275 | | leniency | 0.55 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 88.49% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1303 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | |
| 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) | |
| 65.46% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1303 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "unreadable" | | 1 | "flickered" | | 2 | "silence" | | 3 | "charged" | | 4 | "tension" | | 5 | "pulse" | | 6 | "trembled" | | 7 | "grave" | | 8 | "gleaming" |
| |
| 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 | 1 | | narrationSentences | 85 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 85 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 113 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 37 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 20 | | markdownWords | 26 | | totalWords | 1291 | | ratio | 0.02 | | matches | | 0 | "hello" | | 1 | "almost" | | 2 | "him" | | 3 | "imbécile" | | 4 | "this" | | 5 | "not" | | 6 | "library" | | 7 | "right" | | 8 | "had" | | 9 | "months" | | 10 | "exactly" | | 11 | "left" | | 12 | "This isn’t forever. But neither is this." | | 13 | "wanted" | | 14 | "my" | | 15 | "chérie" | | 16 | "trust" | | 17 | "you" | | 18 | "together" | | 19 | "Laila" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 81.51% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 36 | | wordCount | 1022 | | uniqueNames | 11 | | maxNameDensity | 1.37 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Lucien" | | discoveredNames | | Lucien | 14 | | Moreau | 2 | | Eva | 1 | | Rory | 12 | | Earl | 1 | | Grey | 1 | | French | 1 | | Close | 1 | | Marseille | 1 | | Evan | 1 | | Earth | 1 |
| | persons | | 0 | "Lucien" | | 1 | "Moreau" | | 2 | "Eva" | | 3 | "Rory" | | 4 | "Earl" | | 5 | "Grey" | | 6 | "Evan" |
| | places | | | globalScore | 0.815 | | windowScore | 0.833 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 58 | | glossingSentenceCount | 4 | | matches | | 0 | "as if assessing whether to step inside or bolt" | | 1 | "something like ozone and old leather—drifted" | | 2 | "as if committing the chaos to memory" | | 3 | "looked like it had been dug up from a gra" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1291 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 113 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 53 | | mean | 24.36 | | std | 22.04 | | cv | 0.905 | | sampleLengths | | 0 | 65 | | 1 | 84 | | 2 | 8 | | 3 | 6 | | 4 | 63 | | 5 | 31 | | 6 | 65 | | 7 | 5 | | 8 | 73 | | 9 | 24 | | 10 | 13 | | 11 | 31 | | 12 | 40 | | 13 | 18 | | 14 | 18 | | 15 | 1 | | 16 | 44 | | 17 | 11 | | 18 | 46 | | 19 | 10 | | 20 | 36 | | 21 | 15 | | 22 | 2 | | 23 | 72 | | 24 | 26 | | 25 | 69 | | 26 | 17 | | 27 | 23 | | 28 | 23 | | 29 | 37 | | 30 | 16 | | 31 | 15 | | 32 | 58 | | 33 | 11 | | 34 | 11 | | 35 | 7 | | 36 | 11 | | 37 | 6 | | 38 | 4 | | 39 | 22 | | 40 | 22 | | 41 | 5 | | 42 | 3 | | 43 | 8 | | 44 | 6 | | 45 | 43 | | 46 | 12 | | 47 | 3 | | 48 | 3 | | 49 | 22 |
| |
| 92.88% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 85 | | matches | | 0 | "was slicked" | | 1 | "been served" | | 2 | "been dug" |
| |
| 98.48% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 197 | | matches | | 0 | "wasn’t cutting" | | 1 | "was counting" | | 2 | "was burning" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 113 | | ratio | 0.071 | | matches | | 0 | "For a heartbeat, she just stared—because there, framed in the doorway like some kind of cruel joke, was Lucien Moreau." | | 1 | "The scent of rain and something darker—something like ozone and old leather—drifted toward her." | | 2 | "Not since she’d walked away from the last job they’d done together—from *him*." | | 3 | "She wanted to snap back, to throw something—preferably him—out the door." | | 4 | "Close enough to remember the way his hands had felt on her waist, the way his mouth—" | | 5 | "She remembered the way he’d looked at her in that safe house in Marseille, the way his hands had trembled when he’d kissed her—like he was afraid she’d disappear if he let go." | | 6 | "It was exactly the kind of job she’d been waiting for—high stakes, high risk, the kind that could finally get her name off the radar of the people who’d been hunting her since Evan." | | 7 | "Then, slowly, he reached into his pocket and pulled out a key—old, tarnished, the kind that looked like it had been dug up from a grave." |
| |
| 94.34% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1033 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 48 | | adverbRatio | 0.046466602129719266 | | lyAdverbCount | 14 | | lyAdverbRatio | 0.013552758954501452 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 113 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 113 | | mean | 11.42 | | std | 9 | | cv | 0.788 | | sampleLengths | | 0 | 21 | | 1 | 24 | | 2 | 20 | | 3 | 26 | | 4 | 23 | | 5 | 21 | | 6 | 14 | | 7 | 8 | | 8 | 5 | | 9 | 1 | | 10 | 12 | | 11 | 22 | | 12 | 29 | | 13 | 9 | | 14 | 7 | | 15 | 2 | | 16 | 13 | | 17 | 37 | | 18 | 11 | | 19 | 17 | | 20 | 5 | | 21 | 21 | | 22 | 17 | | 23 | 35 | | 24 | 9 | | 25 | 15 | | 26 | 2 | | 27 | 11 | | 28 | 22 | | 29 | 9 | | 30 | 11 | | 31 | 13 | | 32 | 5 | | 33 | 11 | | 34 | 14 | | 35 | 4 | | 36 | 7 | | 37 | 10 | | 38 | 1 | | 39 | 1 | | 40 | 8 | | 41 | 36 | | 42 | 3 | | 43 | 8 | | 44 | 29 | | 45 | 17 | | 46 | 10 | | 47 | 14 | | 48 | 22 | | 49 | 5 |
| |
| 50.74% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.336283185840708 | | totalSentences | 113 | | uniqueOpeners | 38 | |
| 43.86% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 76 | | matches | | 0 | "Then, slowly, he reached into" |
| | ratio | 0.013 | |
| 56.84% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 76 | | matches | | 0 | "He leaned against the jamb," | | 1 | "His platinum hair was slicked" | | 2 | "She stepped back instinctively, breaking" | | 3 | "His expression didn’t change, but" | | 4 | "he said, voice smooth as" | | 5 | "He tapped his cane against" | | 6 | "She wanted to snap back," | | 7 | "She *had* always been dramatic." | | 8 | "She said it again, firmer" | | 9 | "His jaw tightened." | | 10 | "She pushed off the wall," | | 11 | "She cut the thought off" | | 12 | "She opened her mouth to" | | 13 | "She’d been scraping by on" | | 14 | "She was *exactly* the kind" | | 15 | "She remembered the way he’d" | | 16 | "She remembered the way he’d" | | 17 | "His voice was low, rough" | | 18 | "She ignored the way her" | | 19 | "It was exactly the kind" |
| | ratio | 0.408 | |
| 65.26% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 60 | | totalSentences | 76 | | matches | | 0 | "The door swung open before" | | 1 | "Rory stood there, her fingers" | | 2 | "He leaned against the jamb," | | 3 | "The amber eye tracked her," | | 4 | "His platinum hair was slicked" | | 5 | "The scent of rain and" | | 6 | "Rory said, because *hello* wasn’t" | | 7 | "Lucien’s mouth quirked, just barely." | | 8 | "The silence stretched, thick and" | | 9 | "Ptolemy, Eva’s tabby, chose that" | | 10 | "She stepped back instinctively, breaking" | | 11 | "Lucien followed, gliding inside like" | | 12 | "The flat was exactly as" | | 13 | "The only difference was the" | | 14 | "Lucien paused in the middle" | | 15 | "Rory crossed her arms, the" | | 16 | "His expression didn’t change, but" | | 17 | "he said, voice smooth as" | | 18 | "He tapped his cane against" | | 19 | "She wanted to snap back," |
| | ratio | 0.789 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 76 | | matches | (empty) | | ratio | 0 | |
| 74.83% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 4 | | matches | | 0 | "The amber eye tracked her, unreadable, while the black one flickered over the threshold, as if assessing whether to step inside or bolt." | | 1 | "She stepped back instinctively, breaking the eye-lock, and the cat slunk past her, circling Lucien’s polished shoes with the wariness of a man who’d just been s…" | | 2 | "Remembered the night she’d cut herself open trying to bind a demon’s mark, remembered the way he’d held her hand and hissed in French about *imbécile* women who…" | | 3 | "She’d been scraping by on restaurant deliveries and the occasional black-market favor, living in a flat above a bar that smelled perpetually of spilled beer and…" |
| |
| 79.55% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 11 | | uselessAdditionCount | 1 | | matches | | 0 | "he said, voice smooth as aged whiskey" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 7 | | fancyCount | 2 | | fancyTags | | 0 | "he observed (observe)" | | 1 | "he murmured (murmur)" |
| | dialogueSentences | 40 | | tagDensity | 0.175 | | leniency | 0.35 | | rawRatio | 0.286 | | effectiveRatio | 0.1 | |