| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 26 | | adverbTagCount | 1 | | adverbTags | | 0 | "He hesitates then [then]" |
| | dialogueSentences | 59 | | tagDensity | 0.441 | | leniency | 0.881 | | rawRatio | 0.038 | | effectiveRatio | 0.034 | |
| 96.58% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1460 | | totalAiIsmAdverbs | 1 | | found | | | highlights | | |
| 80.00% | AI-ism character names | Target: 0 AI-default names (17 tracked, −20% each) | | codexExemptions | (empty) | | found | | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 79.45% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1460 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "familiar" | | 1 | "silence" | | 2 | "glinting" | | 3 | "perfect" | | 4 | "footsteps" |
| |
| 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 | 104 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 104 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 136 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 36 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 16 | | markdownWords | 26 | | totalWords | 1437 | | ratio | 0.018 | | matches | | 0 | "Eva would’ve texted." | | 1 | "click" | | 2 | "him" | | 3 | "Matters" | | 4 | "we" | | 5 | "Stay alive. Trust no one." | | 6 | "Evan." | | 7 | "help" | | 8 | "could" | | 9 | "associate" | | 10 | "more" | | 11 | "felt" | | 12 | "Felt" | | 13 | "Stay alive. Trust no one." | | 14 | "After" | | 15 | "click" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 27 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 22 | | wordCount | 937 | | uniqueNames | 12 | | maxNameDensity | 0.75 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Yu-Fei | 1 | | Golden | 1 | | Empress | 1 | | Eva | 3 | | Brick | 1 | | Lane | 1 | | Moreau | 1 | | Ptolemy | 1 | | Lucien | 7 | | Bloomsbury | 1 | | Unclasps | 1 | | Rory | 3 |
| | persons | | 0 | "Yu-Fei" | | 1 | "Empress" | | 2 | "Eva" | | 3 | "Brick" | | 4 | "Moreau" | | 5 | "Lucien" | | 6 | "Rory" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 61 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1437 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 136 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 60 | | mean | 23.95 | | std | 19.96 | | cv | 0.833 | | sampleLengths | | 0 | 3 | | 1 | 86 | | 2 | 43 | | 3 | 37 | | 4 | 11 | | 5 | 11 | | 6 | 95 | | 7 | 36 | | 8 | 33 | | 9 | 17 | | 10 | 16 | | 11 | 6 | | 12 | 2 | | 13 | 32 | | 14 | 29 | | 15 | 12 | | 16 | 2 | | 17 | 34 | | 18 | 18 | | 19 | 22 | | 20 | 18 | | 21 | 23 | | 22 | 11 | | 23 | 56 | | 24 | 11 | | 25 | 44 | | 26 | 47 | | 27 | 21 | | 28 | 66 | | 29 | 35 | | 30 | 59 | | 31 | 10 | | 32 | 13 | | 33 | 9 | | 34 | 6 | | 35 | 26 | | 36 | 5 | | 37 | 23 | | 38 | 19 | | 39 | 18 | | 40 | 11 | | 41 | 15 | | 42 | 30 | | 43 | 4 | | 44 | 55 | | 45 | 2 | | 46 | 32 | | 47 | 5 | | 48 | 19 | | 49 | 44 |
| |
| 95.14% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 104 | | matches | | 0 | "is curled" | | 1 | "been lined" | | 2 | "held" | | 3 | "touched" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 176 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 19 | | semicolonCount | 0 | | flaggedSentences | 17 | | totalSentences | 136 | | ratio | 0.125 | | matches | | 0 | "The knock is too deliberate—three sharp raps, not Eva’s lazy tap." | | 1 | "Her hand drifts to her left wrist, the crescent scar there throbbing under the fabric of her sleeve—a reflex, not fear." | | 2 | "The name is a blade—cold, familiar." | | 3 | "He hasn’t changed—tight charcoal suit, cufflinks that look like they belong on a king, eyes two colors, amber and black, sharp as they’ve ever been." | | 4 | "His scent hits her first—cinnamon, leather, something sharp and earthy that’s always been uniquely *him*." | | 5 | "For a second, he looks younger—thirty-two, not the man who’d walked out of her life three years ago, leaving only a note: *Stay alive." | | 6 | "“To protect you. Voss doesn’t like being ignored.” He steps closer, and she doesn’t move—can’t, not with the way his eyes are on her, like he’s trying to memorize the shape of her." | | 7 | "He’d said that once, in a moment when they were both drunk, in his flat in Bloomsbury—his hands on her waist, his mouth on hers, a promise that lingered in the air." | | 8 | "Inside: a silver chain with a locket—a locket she’d given him, the one with the photo of her and Eva at the beach." | | 9 | "“Because I thought I could keep you safe,” he says, and there’s a strip of metal glinting in his sleeve—a blade, she realizes." | | 10 | "He slams the jacket—no, it’s a bulletproof vest—over her shoulders." | | 11 | "A noise from the hallway—a boot on the stairs." | | 12 | "“Go,” he says, and there’s a *click*—the blade retracting." | | 13 | "The back door is unlocked—Lucien’s crew must have done it." | | 14 | "His hand—the same one that’s held her, that’s touched her in ways no one else ever has." | | 15 | "“Then don’t.” He smiles, and it’s the first time she’s seen it in three years—soft, almost warm." | | 16 | "The scene ends with their footsteps merging, the shadow growing closer, and the locket bouncing against Lucien’s chest—its chain tight enough to leave a mark, a promise that things will never be the same." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 957 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 24 | | adverbRatio | 0.025078369905956112 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.0041797283176593526 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 136 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 136 | | mean | 10.56 | | std | 8.32 | | cv | 0.788 | | sampleLengths | | 0 | 3 | | 1 | 20 | | 2 | 4 | | 3 | 11 | | 4 | 19 | | 5 | 8 | | 6 | 21 | | 7 | 3 | | 8 | 15 | | 9 | 5 | | 10 | 23 | | 11 | 7 | | 12 | 30 | | 13 | 11 | | 14 | 6 | | 15 | 5 | | 16 | 19 | | 17 | 12 | | 18 | 25 | | 19 | 3 | | 20 | 36 | | 21 | 19 | | 22 | 17 | | 23 | 7 | | 24 | 11 | | 25 | 15 | | 26 | 14 | | 27 | 3 | | 28 | 2 | | 29 | 14 | | 30 | 3 | | 31 | 3 | | 32 | 2 | | 33 | 17 | | 34 | 8 | | 35 | 7 | | 36 | 4 | | 37 | 25 | | 38 | 7 | | 39 | 5 | | 40 | 2 | | 41 | 7 | | 42 | 24 | | 43 | 3 | | 44 | 18 | | 45 | 3 | | 46 | 19 | | 47 | 9 | | 48 | 9 | | 49 | 2 |
| |
| 68.14% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.4264705882352941 | | totalSentences | 136 | | uniqueOpeners | 58 | |
| 37.45% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 89 | | matches | | 0 | "Then the next morning, the" |
| | ratio | 0.011 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 52 | | totalSentences | 89 | | matches | | 0 | "She doesn’t look up." | | 1 | "she calls, though the tabby" | | 2 | "Her hand drifts to her" | | 3 | "She crosses the cluttered room" | | 4 | "Her hand wraps around the" | | 5 | "he says, and her fingers" | | 6 | "She yanks the door open." | | 7 | "His cane leans against the" | | 8 | "He hasn’t changed—tight charcoal suit," | | 9 | "His jaw is set, the" | | 10 | "she says, voice steady even" | | 11 | "He pushes off the frame," | | 12 | "His scent hits her first—cinnamon," | | 13 | "he says, nodding at the" | | 14 | "He ignores it." | | 15 | "He turns, glancing at the" | | 16 | "His head tilts, one amber" | | 17 | "He opens his mouth, then" | | 18 | "Her hands flex." | | 19 | "she says, and it’s not" |
| | ratio | 0.584 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 83 | | totalSentences | 89 | | matches | | 0 | "The door creaks." | | 1 | "Rory’s pen skids across the" | | 2 | "She doesn’t look up." | | 3 | "The knock is too deliberate—three" | | 4 | "she calls, though the tabby" | | 5 | "The third rap lands, harder," | | 6 | "Her hand drifts to her" | | 7 | "*Eva would’ve texted.*" | | 8 | "She crosses the cluttered room" | | 9 | "The chain stays, of course." | | 10 | "Crime doesn’t skip Brick Lane," | | 11 | "Her hand wraps around the" | | 12 | "The peephole is smudged, but" | | 13 | "he says, and her fingers" | | 14 | "The name is a blade—cold," | | 15 | "She yanks the door open." | | 16 | "Lucien Moreau stands on her" | | 17 | "His cane leans against the" | | 18 | "He hasn’t changed—tight charcoal suit," | | 19 | "His jaw is set, the" |
| | ratio | 0.933 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 89 | | matches | (empty) | | ratio | 0 | |
| 40.82% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 28 | | technicalSentenceCount | 4 | | matches | | 0 | "The peephole is smudged, but she knows the outline before she squints: broad shoulders, a platinum blond hairline that’s too neat, a suit that costs more than h…" | | 1 | "He hasn’t changed—tight charcoal suit, cufflinks that look like they belong on a king, eyes two colors, amber and black, sharp as they’ve ever been." | | 2 | "He’d said that once, in a moment when they were both drunk, in his flat in Bloomsbury—his hands on her waist, his mouth on hers, a promise that lingered in the …" | | 3 | "The scene ends with their footsteps merging, the shadow growing closer, and the locket bouncing against Lucien’s chest—its chain tight enough to leave a mark, a…" |
| |
| 86.54% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 26 | | uselessAdditionCount | 2 | | matches | | 0 | "she says, voice breaking" | | 1 | "Lucien says, low" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 16 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 59 | | tagDensity | 0.271 | | leniency | 0.542 | | rawRatio | 0 | | effectiveRatio | 0 | |