| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 21 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 56 | | tagDensity | 0.375 | | leniency | 0.75 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 84.57% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1620 | | totalAiIsmAdverbs | 5 | | found | | 0 | | | 1 | | adverb | "deliberately" | | count | 1 |
| | 2 | | | 3 | |
| | highlights | | 0 | "very" | | 1 | "deliberately" | | 2 | "slowly" | | 3 | "really" |
| |
| 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) | |
| 41.36% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1620 | | totalAiIsms | 19 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | word | "down her spine" | | count | 1 |
| | 6 | | | 7 | | | 8 | | | 9 | | | 10 | | | 11 | | | 12 | | | 13 | | | 14 | | | 15 | |
| | highlights | | 0 | "familiar" | | 1 | "silk" | | 2 | "silence" | | 3 | "clenching" | | 4 | "flicked" | | 5 | "down her spine" | | 6 | "weight" | | 7 | "stomach" | | 8 | "pulse" | | 9 | "tracing" | | 10 | "trembled" | | 11 | "charged" | | 12 | "intensity" | | 13 | "warmth" | | 14 | "vibrated" | | 15 | "velvet" |
| |
| 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 | 111 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 111 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 143 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 23 | | markdownWords | 29 | | totalWords | 1604 | | ratio | 0.018 | | matches | | 0 | "No. Impossible." | | 1 | "chérie" | | 2 | "weight" | | 3 | "am" | | 4 | "Damn him." | | 5 | "Shit." | | 6 | "Her" | | 7 | "petite souricette" | | 8 | "Little mouse." | | 9 | "Avaros." | | 10 | "Children’s teeth." | | 11 | "use" | | 12 | "Damn it." | | 13 | "what" | | 14 | "showed" | | 15 | "feed." | | 16 | "play" | | 17 | "human" | | 18 | "know" | | 19 | "know" | | 20 | "hate" | | 21 | "chérie" | | 22 | "really" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 12 | | unquotedAttributions | 0 | | matches | (empty) | |
| 99.32% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 27 | | wordCount | 1184 | | uniqueNames | 6 | | maxNameDensity | 1.01 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Ptolemy | 2 | | Eva | 2 | | Lucien | 9 | | Moreau | 1 | | Rory | 12 | | Yu-Fei | 1 |
| | persons | | 0 | "Ptolemy" | | 1 | "Eva" | | 2 | "Lucien" | | 3 | "Moreau" | | 4 | "Rory" | | 5 | "Yu-Fei" |
| | places | (empty) | | globalScore | 0.993 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 78 | | 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 | 1604 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 143 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 63 | | mean | 25.46 | | std | 18.27 | | cv | 0.718 | | sampleLengths | | 0 | 78 | | 1 | 20 | | 2 | 27 | | 3 | 14 | | 4 | 52 | | 5 | 4 | | 6 | 60 | | 7 | 7 | | 8 | 21 | | 9 | 18 | | 10 | 26 | | 11 | 27 | | 12 | 39 | | 13 | 57 | | 14 | 3 | | 15 | 12 | | 16 | 10 | | 17 | 17 | | 18 | 12 | | 19 | 30 | | 20 | 10 | | 21 | 35 | | 22 | 4 | | 23 | 25 | | 24 | 6 | | 25 | 36 | | 26 | 10 | | 27 | 6 | | 28 | 20 | | 29 | 36 | | 30 | 26 | | 31 | 31 | | 32 | 20 | | 33 | 11 | | 34 | 38 | | 35 | 23 | | 36 | 21 | | 37 | 27 | | 38 | 10 | | 39 | 17 | | 40 | 30 | | 41 | 40 | | 42 | 11 | | 43 | 21 | | 44 | 14 | | 45 | 47 | | 46 | 50 | | 47 | 62 | | 48 | 19 | | 49 | 21 |
| |
| 98.94% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 111 | | matches | | 0 | "was tangled" | | 1 | "was tousled" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 190 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 143 | | ratio | 0.056 | | matches | | 0 | "Impossible.* She hadn’t smelled that particular blend of arrogance and expensive cologne in three years, two months, and—if she were being precise—eighteen days." | | 1 | "He filled the frame—charcoal suit hugging shoulders that had once been her shelter, heterochromatic eyes locking onto hers with the precision of a blade finding its sheath." | | 2 | "Lucien’s gaze flicked to her wrist—the crescent scar peeking out from under her sleeve—and something dark and hungry passed behind his eyes." | | 3 | "Too much of him in too small a space—his presence pressing against the stacks of books, the scent of him mingling with Eva’s sandalwood incense, the sheer *weight* of him tilting the axis of the room." | | 4 | "That earned her a real smile—sharp and quick as a blade’s flash." | | 5 | "Photos spilled out—grainy, taken at night, but unmistakable: the same jagged symbols she’d spent the last week researching, now scored into brickwork behind Yu-Fei’s restaurant." | | 6 | "Rory gasped, her hands flying to his chest—whether to push him away or pull him closer, she didn’t know." | | 7 | "His tie hung loose around his neck, his hair—usually impeccable—was tousled where her fingers had gripped it." |
| |
| 95.59% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1199 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 54 | | adverbRatio | 0.045037531276063386 | | lyAdverbCount | 10 | | lyAdverbRatio | 0.008340283569641367 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 143 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 143 | | mean | 11.22 | | std | 7.81 | | cv | 0.696 | | sampleLengths | | 0 | 11 | | 1 | 22 | | 2 | 1 | | 3 | 23 | | 4 | 21 | | 5 | 2 | | 6 | 18 | | 7 | 14 | | 8 | 13 | | 9 | 14 | | 10 | 11 | | 11 | 7 | | 12 | 19 | | 13 | 15 | | 14 | 4 | | 15 | 27 | | 16 | 10 | | 17 | 8 | | 18 | 15 | | 19 | 3 | | 20 | 4 | | 21 | 16 | | 22 | 5 | | 23 | 3 | | 24 | 4 | | 25 | 6 | | 26 | 5 | | 27 | 13 | | 28 | 13 | | 29 | 22 | | 30 | 5 | | 31 | 13 | | 32 | 10 | | 33 | 6 | | 34 | 10 | | 35 | 5 | | 36 | 36 | | 37 | 16 | | 38 | 3 | | 39 | 8 | | 40 | 4 | | 41 | 10 | | 42 | 12 | | 43 | 5 | | 44 | 4 | | 45 | 8 | | 46 | 9 | | 47 | 21 | | 48 | 3 | | 49 | 7 |
| |
| 57.11% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.38461538461538464 | | totalSentences | 143 | | uniqueOpeners | 55 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 99 | | matches | | 0 | "Too much of him in" | | 1 | "Then, deliberately, he reached up" | | 2 | "Then she bit him." | | 3 | "Then, slowly, he bent and" |
| | ratio | 0.04 | |
| 62.42% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 39 | | totalSentences | 99 | | matches | | 0 | "His voice, low and rough-edged" | | 1 | "She should’ve known better than" | | 2 | "He filled the frame—charcoal suit" | | 3 | "His cane tapped once against" | | 4 | "His lips quirked." | | 5 | "She cut herself off, jaw" | | 6 | "She stepped back, forcing him" | | 7 | "He chose the former, of" | | 8 | "She crossed her arms." | | 9 | "He straightened, his cane resting" | | 10 | "His gaze roamed the room," | | 11 | "He reached into his jacket," | | 12 | "he said, not a question" | | 13 | "Her pulse jumped." | | 14 | "She snatched the photos, shuffling" | | 15 | "His cane tapped once." | | 16 | "He stepped closer, the heat" | | 17 | "She lifted her chin, meeting" | | 18 | "His jaw tightened." | | 19 | "Her voice cracked" |
| | ratio | 0.394 | |
| 50.91% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 81 | | totalSentences | 99 | | matches | | 0 | "The third deadbolt clicked like" | | 1 | "Rory’s fingers stilled on the" | | 2 | "His voice, low and rough-edged" | | 3 | "Ptolemy chose that moment to" | | 4 | "Rory exhaled through her nose," | | 5 | "She should’ve known better than" | | 6 | "The door swung open." | | 7 | "He filled the frame—charcoal suit" | | 8 | "The amber one gleamed with" | | 9 | "The black one, as always," | | 10 | "His cane tapped once against" | | 11 | "Rory’s hand flew to the" | | 12 | "His lips quirked." | | 13 | "She cut herself off, jaw" | | 14 | "The past was a landmine," | | 15 | "Lucien’s gaze flicked to her" | | 16 | "The endearment, soft as a" | | 17 | "She stepped back, forcing him" | | 18 | "He chose the former, of" | | 19 | "The man had never retreated" |
| | ratio | 0.818 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 99 | | matches | (empty) | | ratio | 0 | |
| 91.84% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 3 | | matches | | 0 | "He filled the frame—charcoal suit hugging shoulders that had once been her shelter, heterochromatic eyes locking onto hers with the precision of a blade finding…" | | 1 | "It was three years of hunger and anger and longing, poured into the crush of his mouth against hers, the bite of his teeth on her lower lip, the way his cane cl…" | | 2 | "His eyes burned, amber and black, his chest rising and falling like he’d run a marathon." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 21 | | uselessAdditionCount | 7 | | matches | | 0 | "She cut, jaw clenching" | | 1 | "He straightened, his cane resting against the armchair" | | 2 | "She cut, chest heaving" | | 3 | "he said, voice rough" | | 4 | "His hand slid, fingers tangling in her hair" | | 5 | "he said, his voice a blade wrapped in velvet" | | 6 | "He adjusted, the picture of composure once more" |
| |
| 96.43% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 3 | | fancyTags | | 0 | "he murmured (murmur)" | | 1 | "Rory muttered (mutter)" | | 2 | "he snarled (snarl)" |
| | dialogueSentences | 56 | | tagDensity | 0.107 | | leniency | 0.214 | | rawRatio | 0.5 | | effectiveRatio | 0.107 | |