| 50.75% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 14 | | adverbTagCount | 5 | | adverbTags | | 0 | "he said softly [softly]" | | 1 | "he said softly [softly]" | | 2 | "he said quietly [quietly]" | | 3 | "he asked softly [softly]" | | 4 | "he said quietly [quietly]" |
| | dialogueSentences | 67 | | tagDensity | 0.209 | | leniency | 0.418 | | rawRatio | 0.357 | | effectiveRatio | 0.149 | |
| 81.66% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2181 | | totalAiIsmAdverbs | 8 | | found | | | highlights | | 0 | "lightly" | | 1 | "slowly" | | 2 | "very" | | 3 | "softly" | | 4 | "slightly" |
| |
| 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) | |
| 58.73% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2181 | | totalAiIsms | 18 | | found | | | highlights | | 0 | "silence" | | 1 | "marble" | | 2 | "flicked" | | 3 | "weight" | | 4 | "traced" | | 5 | "pristine" | | 6 | "echoed" | | 7 | "silk" | | 8 | "sentinel" | | 9 | "pulse" | | 10 | "aftermath" | | 11 | "could feel" | | 12 | "tracing" | | 13 | "trembled" |
| |
| 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 | 200 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 200 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 252 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 12 | | markdownWords | 43 | | totalWords | 2165 | | ratio | 0.02 | | matches | | 0 | "The Art of Peking Duck" | | 1 | "snik" | | 2 | "belonged" | | 3 | "all of it his fault" | | 4 | "Finally" | | 5 | "Go to hell in English" | | 6 | "I changed my number" | | 7 | "World’s Okayest Barista" | | 8 | "Memories." | | 9 | "the" | | 10 | "feel" | | 11 | "I won’t be the death of you. But I might be the end of me." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 22 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 59 | | wordCount | 1747 | | uniqueNames | 22 | | maxNameDensity | 0.74 | | worstName | "Rory" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Lucien" | | discoveredNames | | Rory | 13 | | Art | 1 | | Peking | 1 | | Yu-Fei | 1 | | London | 2 | | Eva | 6 | | Cardiff | 2 | | Londoner | 1 | | Moreau | 2 | | Frenchman | 1 | | Savile | 1 | | Row | 1 | | Lucien | 13 | | Heat | 1 | | Welsh | 1 | | Silence | 1 | | Okayest | 1 | | Evan | 1 | | Brick | 1 | | Lane | 1 | | Ptolemy | 3 | | Didn | 4 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Lucien" | | 4 | "Heat" | | 5 | "Evan" | | 6 | "Ptolemy" |
| | places | | 0 | "Peking" | | 1 | "London" | | 2 | "Cardiff" | | 3 | "Welsh" | | 4 | "Brick" | | 5 | "Lane" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 23.74% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 99 | | glossingSentenceCount | 5 | | matches | | 0 | "felt like stripping off armor, layer by" | | 1 | "looked like it had just stepped out of a" | | 2 | "not quite" | | 3 | "felt like victories" | | 4 | "not quite" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.462 | | wordCount | 2165 | | matches | | 0 | "Not just because he was six inches taller than the average Londoner, but because he *belonged* in a space this shabby the same way a" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 252 | | matches | | 0 | "chose that moment" | | 1 | "chose that instant" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 112 | | mean | 19.33 | | std | 20.67 | | cv | 1.07 | | sampleLengths | | 0 | 97 | | 1 | 105 | | 2 | 87 | | 3 | 101 | | 4 | 79 | | 5 | 36 | | 6 | 6 | | 7 | 29 | | 8 | 9 | | 9 | 41 | | 10 | 6 | | 11 | 1 | | 12 | 18 | | 13 | 9 | | 14 | 26 | | 15 | 3 | | 16 | 7 | | 17 | 35 | | 18 | 27 | | 19 | 17 | | 20 | 18 | | 21 | 23 | | 22 | 5 | | 23 | 53 | | 24 | 29 | | 25 | 16 | | 26 | 5 | | 27 | 19 | | 28 | 30 | | 29 | 44 | | 30 | 22 | | 31 | 50 | | 32 | 4 | | 33 | 14 | | 34 | 16 | | 35 | 50 | | 36 | 11 | | 37 | 13 | | 38 | 5 | | 39 | 5 | | 40 | 3 | | 41 | 10 | | 42 | 6 | | 43 | 6 | | 44 | 16 | | 45 | 2 | | 46 | 31 | | 47 | 6 | | 48 | 8 | | 49 | 3 |
| |
| 98.25% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 200 | | matches | | 0 | "was slicked" | | 1 | "was amused" | | 2 | "was told" | | 3 | "was gone" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 307 | | matches | | 0 | "wasn’t learning" | | 1 | "was avoiding" | | 2 | "was concentrating" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 21 | | semicolonCount | 0 | | flaggedSentences | 16 | | totalSentences | 252 | | ratio | 0.063 | | matches | | 0 | "Her fingers tightened around the spine of the used cookbook she’d been flipping through—*The Art of Peking Duck*, loaned to her by Yu-Fei himself, its edges softened by grease stains and careful handling." | | 1 | "It was a fever dream of research—maps of London’s occult ley lines taped to the windowsill, half-burned candles in mismatched holders, and a floor littered with spiral notebooks, their pages bristling with spiky handwriting and circled sigils." | | 2 | "But the locks—three deadbolts, slick and heavy—were Rory’s addition." | | 3 | "Not just because he was six inches taller than the average Londoner, but because he *belonged* in a space this shabby the same way a knife belonged in a sheath—unnatural in its absence." | | 4 | "It coiled around the deadbolts, the cat hair on the carpet, the half-eaten bag of crisps on the coffee table—*all of it his fault*." | | 5 | "He exhaled—a sound almost like a laugh, but not quite." | | 6 | "And she’d debated texting back—*Finally*, or *Go to hell in English*, or *I changed my number*, but none of those felt like victories." | | 7 | "That earned her the barest lift of his lips—almost a smile, but not quite." | | 8 | "But when he was close enough that she could see the faintest scar along his jawline—something he’d never mentioned, something that hadn’t been there the last time she’d traced fingertips over his skin—she said, “One wrong move, Moreau. And I’ll introduce your cane to the blade inside it.”" | | 9 | "But his right hand—protected in a pristine glove, as always—flexed once, just barely, against his thigh." | | 10 | "The scent of leather, bergamot, and something faintly sulfurous—like distant smoke—rolled into the flat behind him." | | 11 | "His lips parted—whether to comment or critique, she didn’t care." | | 12 | "Rory scooped instant coffee into a chipped mug—*World’s Okayest Barista*, in Eva’s handwriting." | | 13 | "The one who had pulled her from Cardiff after the Evan incident—pulled her, stitched her wounds, and never asked for the full story." | | 14 | "In the aftermath of a fight—no, in the aftermath of *the* fight—she’d thrown a letter opener at him." | | 15 | "Just a finger, tracing the air near her wrist—close, but not touching." |
| |
| 93.50% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1771 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 84 | | adverbRatio | 0.04743083003952569 | | lyAdverbCount | 20 | | lyAdverbRatio | 0.01129305477131564 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 252 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 252 | | mean | 8.59 | | std | 7.61 | | cv | 0.885 | | sampleLengths | | 0 | 26 | | 1 | 19 | | 2 | 33 | | 3 | 10 | | 4 | 5 | | 5 | 4 | | 6 | 16 | | 7 | 31 | | 8 | 5 | | 9 | 37 | | 10 | 12 | | 11 | 4 | | 12 | 14 | | 13 | 7 | | 14 | 6 | | 15 | 9 | | 16 | 18 | | 17 | 10 | | 18 | 3 | | 19 | 3 | | 20 | 17 | | 21 | 27 | | 22 | 6 | | 23 | 33 | | 24 | 35 | | 25 | 21 | | 26 | 12 | | 27 | 26 | | 28 | 20 | | 29 | 5 | | 30 | 4 | | 31 | 3 | | 32 | 24 | | 33 | 6 | | 34 | 4 | | 35 | 19 | | 36 | 6 | | 37 | 3 | | 38 | 2 | | 39 | 4 | | 40 | 27 | | 41 | 2 | | 42 | 5 | | 43 | 2 | | 44 | 5 | | 45 | 6 | | 46 | 1 | | 47 | 2 | | 48 | 12 | | 49 | 4 |
| |
| 42.86% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 18 | | diversityRatio | 0.25396825396825395 | | totalSentences | 252 | | uniqueOpeners | 64 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 10 | | totalSentences | 170 | | matches | | 0 | "Then the second." | | 1 | "Then the third." | | 2 | "Then, slowly, he straightened up." | | 3 | "Of course he did." | | 4 | "Just to make him flinch." | | 5 | "Just a finger, tracing the" | | 6 | "Maybe even love." | | 7 | "Finally, he inclined his head." | | 8 | "Just to rest his palm" | | 9 | "Then he was gone, the" |
| | ratio | 0.059 | |
| 67.06% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 65 | | totalSentences | 170 | | matches | | 0 | "Her fingers tightened around the" | | 1 | "She wasn’t learning to cook." | | 2 | "She was avoiding remembering." | | 3 | "She set the book down" | | 4 | "It was a fever dream" | | 5 | "She didn’t step straight to" | | 6 | "She slid the first one" | | 7 | "He was leaning against the" | | 8 | "His tailored charcoal suit looked" | | 9 | "His platinum hair was slicked" | | 10 | "It was alive." | | 11 | "It coiled around the deadbolts," | | 12 | "She didn’t laugh." | | 13 | "He wouldn’t be that careless." | | 14 | "His eyes flicked to the" | | 15 | "He exhaled—a sound almost like" | | 16 | "He shifted his weight, the" | | 17 | "She exhaled through her nose." | | 18 | "He held her gaze." | | 19 | "He took one step forward." |
| | ratio | 0.382 | |
| 92.35% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 125 | | totalSentences | 170 | | matches | | 0 | "The knock came at nine-twenty-seven," | | 1 | "Her fingers tightened around the" | | 2 | "The book was more decoration" | | 3 | "She wasn’t learning to cook." | | 4 | "She was avoiding remembering." | | 5 | "She set the book down" | | 6 | "The flat exhaled around her," | | 7 | "Eva’s flat wasn’t just livable." | | 8 | "It was a fever dream" | | 9 | "The only clear path to" | | 10 | "Everything else was terrain." | | 11 | "Rory exhaled through her nose" | | 12 | "She didn’t step straight to" | | 13 | "That was Eva’s paranoia, not" | | 14 | "Brendan had drilled them in" | | 15 | "She slid the first one" | | 16 | "The process felt like stripping" | | 17 | "Lucien Moreau, the Frenchman, the" | | 18 | "He was leaning against the" | | 19 | "The ivory handle gleamed under" |
| | ratio | 0.735 | |
| 29.41% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 170 | | matches | | | ratio | 0.006 | |
| 63.49% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 63 | | technicalSentenceCount | 7 | | matches | | 0 | "The knock came at nine-twenty-seven, precise as a metronome, and Rory froze mid-step between the kitchenette and the sagging armchair that doubled as her second…" | | 1 | "The flat exhaled around her, thick with the scent of old paper, reheated lamb bhuna from downstairs, and the faint musk of the radiator that had just started it…" | | 2 | "Brendan had drilled them in during his last visit from Cardiff, muttering about doors that didn’t stay shut." | | 3 | "Lucien Moreau, the Frenchman, the man with one amber eye and one black, the man who spoke four languages and had once spoken only to her in the one that had no …" | | 4 | "After a beat, he pushed off the wall, the cane tapping once against the floor in that way that made her imagine the blade inside snicking free." | | 5 | "His golden eyes fixed on Lucien with the impartial disdain of a creature who had seen better days and people." | | 6 | "Eva, who ran a small occult bookstore on Brick Lane, who had a habit of collecting dangerous curiosities like others collected stamps." |
| |
| 89.29% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 1 | | matches | | 0 | "He shifted, the suit whispering against itself" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 2 | | fancyTags | | 0 | "that she could (could)" | | 1 | "he observed (observe)" |
| | dialogueSentences | 67 | | tagDensity | 0.194 | | leniency | 0.388 | | rawRatio | 0.154 | | effectiveRatio | 0.06 | |