| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 93.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1429 | | totalAiIsmAdverbs | 2 | | 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) | |
| 12.53% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1429 | | totalAiIsms | 25 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | | 7 | | | 8 | | | 9 | | | 10 | | | 11 | | | 12 | | | 13 | | | 14 | | | 15 | | | 16 | | | 17 | | | 18 | | | 19 | |
| | highlights | | 0 | "vibrated" | | 1 | "familiar" | | 2 | "rhythmic" | | 3 | "calculated" | | 4 | "predator" | | 5 | "echoing" | | 6 | "charged" | | 7 | "fractured" | | 8 | "silence" | | 9 | "palpable" | | 10 | "warmth" | | 11 | "velvet" | | 12 | "pulse" | | 13 | "flicker" | | 14 | "grave" | | 15 | "stomach" | | 16 | "intensity" | | 17 | "variable" | | 18 | "stark" | | 19 | "weight" |
| |
| 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 | 88 | | matches | (empty) | |
| 77.92% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 4 | | narrationSentences | 88 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 88 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1418 | | ratio | 0 | | matches | (empty) | |
| 28.85% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 5 | | matches | | 0 | "London is remarkably small when one knows exactly where to look for an evasive ghost, Lucien replied." | | 1 | "You are a great many things, Aurora, but simple is not among them, he murmured." | | 2 | "Because the city outside is shifting, he said, his tone turning grave." | | 3 | "I have spent an eternity—or what feels like it—wondering if you were safe, he said softly." | | 4 | "Perhaps, he conceded, his breath warming her skin, but I have never lied to you about what you are to me." |
| |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 36 | | wordCount | 1418 | | uniqueNames | 11 | | maxNameDensity | 0.71 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Lucien" | | discoveredNames | | Brick | 1 | | Lane | 1 | | London | 4 | | Lucien | 10 | | Rory | 3 | | Eva | 3 | | Marseille | 1 | | Aurora | 4 | | Evan | 1 | | Cardiff | 1 | | You | 7 |
| | persons | | 0 | "Lucien" | | 1 | "Rory" | | 2 | "Eva" | | 3 | "Aurora" | | 4 | "Evan" | | 5 | "You" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "London" | | 3 | "Marseille" | | 4 | "Cardiff" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 78 | | glossingSentenceCount | 1 | | matches | | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1418 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 88 | | matches | | |
| 68.55% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 29 | | mean | 48.9 | | std | 19.07 | | cv | 0.39 | | sampleLengths | | 0 | 70 | | 1 | 31 | | 2 | 65 | | 3 | 33 | | 4 | 58 | | 5 | 25 | | 6 | 42 | | 7 | 46 | | 8 | 65 | | 9 | 42 | | 10 | 72 | | 11 | 73 | | 12 | 33 | | 13 | 76 | | 14 | 54 | | 15 | 40 | | 16 | 40 | | 17 | 54 | | 18 | 5 | | 19 | 62 | | 20 | 44 | | 21 | 21 | | 22 | 51 | | 23 | 57 | | 24 | 85 | | 25 | 53 | | 26 | 12 | | 27 | 44 | | 28 | 65 |
| |
| 89.31% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 88 | | matches | | 0 | "was supposed" | | 1 | "was slicked" | | 2 | "are tied" | | 3 | "was gone" |
| |
| 38.06% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 247 | | matches | | 0 | "was standing" | | 1 | "was already suffocating" | | 2 | "wasn’t trying" | | 3 | "was trying" | | 4 | "was hiding" | | 5 | "were playing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 88 | | ratio | 0.08 | | matches | | 0 | "His platinum blond hair was slicked back with ruthless precision, and one of his mismatched eyes—the black one—seemed to swallow the meager light in the hallway, while the amber one assessed her with the clinical detachment of a jeweler inspecting a flawed stone." | | 1 | "The light caught the handle of his cane—a relic of his demon heritage, a thin blade masquerading as a gentleman’s accessory." | | 2 | "It makes my work—and my curiosity—exceedingly difficult to manage." | | 3 | "A flicker of something—regret, perhaps, though he hid it well—crossed his face." | | 4 | "She’d known for weeks that something was wrong—the way the shadows in the city seemed to lengthen, the way people whispered in the back of the restaurant about things that didn’t belong in the daylight." | | 5 | "I have spent an eternity—or what feels like it—wondering if you were safe, he said softly." | | 6 | "The bass from the bar below, the stack of books, the scent of the curry—everything vanished." |
| |
| 88.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1435 | | adjectiveStacks | 2 | | stackExamples | | 0 | "faint, crescent-shaped scar" | | 1 | "dim, amber-hued light" |
| | adverbCount | 47 | | adverbRatio | 0.032752613240418116 | | lyAdverbCount | 22 | | lyAdverbRatio | 0.015331010452961672 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 88 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 88 | | mean | 16.11 | | std | 8.51 | | cv | 0.528 | | sampleLengths | | 0 | 27 | | 1 | 6 | | 2 | 23 | | 3 | 14 | | 4 | 8 | | 5 | 18 | | 6 | 5 | | 7 | 8 | | 8 | 19 | | 9 | 16 | | 10 | 22 | | 11 | 16 | | 12 | 17 | | 13 | 15 | | 14 | 43 | | 15 | 10 | | 16 | 15 | | 17 | 20 | | 18 | 22 | | 19 | 10 | | 20 | 17 | | 21 | 19 | | 22 | 17 | | 23 | 24 | | 24 | 24 | | 25 | 24 | | 26 | 18 | | 27 | 5 | | 28 | 20 | | 29 | 32 | | 30 | 15 | | 31 | 15 | | 32 | 12 | | 33 | 21 | | 34 | 16 | | 35 | 9 | | 36 | 7 | | 37 | 8 | | 38 | 13 | | 39 | 5 | | 40 | 17 | | 41 | 25 | | 42 | 4 | | 43 | 10 | | 44 | 20 | | 45 | 7 | | 46 | 21 | | 47 | 26 | | 48 | 5 | | 49 | 1 |
| |
| 39.77% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.3409090909090909 | | totalSentences | 88 | | uniqueOpeners | 30 | |
| 77.52% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 86 | | matches | | 0 | "Then why are you here?" | | 1 | "Perhaps, he conceded, his breath" |
| | ratio | 0.023 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 52 | | totalSentences | 86 | | matches | | 0 | "It didn’t sound like the" | | 1 | "It sounded like a summons." | | 2 | "She didn’t need to look" | | 3 | "She slid the deadbolts back" | | 4 | "He stood perfectly still, his" | | 5 | "His platinum blond hair was" | | 6 | "He didn’t step inside, waiting" | | 7 | "You weren’t supposed to be" | | 8 | "She stepped back, giving him" | | 9 | "He didn’t look at the" | | 10 | "He looked at her, his" | | 11 | "His voice was smooth, carrying" | | 12 | "He came to a halt" | | 13 | "I’m not a ghost, Lucien." | | 14 | "I’m a delivery driver with" | | 15 | "She wanted to tell him" | | 16 | "You are a great many" | | 17 | "He straightened, ignoring the cat’s" | | 18 | "You have a talent for" | | 19 | "It makes my work—and my" |
| | ratio | 0.605 | |
| 29.77% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 74 | | totalSentences | 86 | | matches | | 0 | "The muffled thump of bass" | | 1 | "Tonight, it felt like a" | | 2 | "Aurora stood in the cramped" | | 3 | "The knock was sharp, rhythmic," | | 4 | "It didn’t sound like the" | | 5 | "It sounded like a summons." | | 6 | "Rory drew a breath, pushing" | | 7 | "The movement pulled at the" | | 8 | "She didn’t need to look" | | 9 | "She slid the deadbolts back" | | 10 | "He stood perfectly still, his" | | 11 | "His platinum blond hair was" | | 12 | "Lucien reached out, hooking his" | | 13 | "He didn’t step inside, waiting" | | 14 | "You weren’t supposed to be" | | 15 | "She stepped back, giving him" | | 16 | "Lucien moved past her, his" | | 17 | "He didn’t look at the" | | 18 | "He looked at her, his" | | 19 | "London is remarkably small when" |
| | ratio | 0.86 | |
| 58.14% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 86 | | matches | | 0 | "Because the city outside is" |
| | ratio | 0.012 | |
| 46.91% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 67 | | technicalSentenceCount | 9 | | matches | | 0 | "He looked at her, his gaze lingering on the hollow of her throat before flicking up to her eyes." | | 1 | "His voice was smooth, carrying the faint, melodic cadence of Marseille, polished by years of brokering secrets for people who preferred to remain invisible." | | 2 | "He didn’t touch her, but the heat radiating from him was palpable, a strange, unnatural warmth that hummed against her skin." | | 3 | "He kept his voice low, a velvet threat that made her pulse stutter." | | 4 | "You spend your life bartering in the secrets of others, pulling strings from the safety of your tailor-made world." | | 5 | "Because the city outside is shifting, he said, his tone turning grave." | | 6 | "The arrogance was gone, replaced by a raw, hungry intensity that mirrored the way he looked at her when he thought she wasn't paying attention." | | 7 | "She remembered the way he had kissed her, a desperate, frantic collision of two people who knew they were playing with fire." | | 8 | "He leaned in, the air between them shimmering with an intensity that defied the cramped, dingy reality of the flat." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |