| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 38 | | tagDensity | 0.211 | | leniency | 0.421 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 93.07% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 721 | | totalAiIsmAdverbs | 1 | | 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) | |
| 100.00% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 721 | | totalAiIsms | 0 | | found | (empty) | | highlights | (empty) | |
| 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 | 51 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 51 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 80 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 715 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 64.22% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 20 | | wordCount | 408 | | uniqueNames | 7 | | maxNameDensity | 1.72 | | worstName | "Rory" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 7 | | Heat | 1 | | Lucien | 4 | | Brick | 2 | | Lane | 2 | | Eva | 1 | | Ptolemy | 3 |
| | persons | | 0 | "Rory" | | 1 | "Heat" | | 2 | "Lucien" | | 3 | "Eva" | | 4 | "Ptolemy" |
| | places | | | globalScore | 0.642 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 31 | | 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 | 715 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 80 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 46 | | mean | 15.54 | | std | 9.43 | | cv | 0.607 | | sampleLengths | | 0 | 18 | | 1 | 28 | | 2 | 3 | | 3 | 15 | | 4 | 13 | | 5 | 4 | | 6 | 9 | | 7 | 8 | | 8 | 11 | | 9 | 25 | | 10 | 9 | | 11 | 15 | | 12 | 16 | | 13 | 12 | | 14 | 20 | | 15 | 17 | | 16 | 33 | | 17 | 6 | | 18 | 28 | | 19 | 9 | | 20 | 2 | | 21 | 21 | | 22 | 18 | | 23 | 39 | | 24 | 4 | | 25 | 24 | | 26 | 12 | | 27 | 12 | | 28 | 13 | | 29 | 22 | | 30 | 26 | | 31 | 3 | | 32 | 15 | | 33 | 13 | | 34 | 16 | | 35 | 6 | | 36 | 4 | | 37 | 19 | | 38 | 23 | | 39 | 9 | | 40 | 8 | | 41 | 45 | | 42 | 15 | | 43 | 5 | | 44 | 21 | | 45 | 21 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 51 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 71 | | matches | (empty) | |
| 35.71% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 0 | | flaggedSentences | 3 | | totalSentences | 80 | | ratio | 0.038 | | matches | | 0 | "\"Rory.\" His heterochromatic gaze—amber, black—swept her face." | | 1 | "His heart hammered—two rhythms, one human, one not." | | 2 | "Outside, Brick Lane carried on with its spices and noise, but inside Eva's flat, the air bent around them—two people who had parted on complicated terms, forced together by the simple, terrible fact that one of them had knocked." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 414 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 8 | | adverbRatio | 0.01932367149758454 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.004830917874396135 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 80 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 80 | | mean | 8.94 | | std | 6.37 | | cv | 0.712 | | sampleLengths | | 0 | 13 | | 1 | 5 | | 2 | 11 | | 3 | 17 | | 4 | 3 | | 5 | 7 | | 6 | 8 | | 7 | 8 | | 8 | 5 | | 9 | 4 | | 10 | 9 | | 11 | 8 | | 12 | 3 | | 13 | 8 | | 14 | 6 | | 15 | 10 | | 16 | 9 | | 17 | 9 | | 18 | 8 | | 19 | 7 | | 20 | 16 | | 21 | 4 | | 22 | 8 | | 23 | 7 | | 24 | 13 | | 25 | 17 | | 26 | 20 | | 27 | 13 | | 28 | 4 | | 29 | 2 | | 30 | 28 | | 31 | 4 | | 32 | 5 | | 33 | 2 | | 34 | 10 | | 35 | 11 | | 36 | 9 | | 37 | 9 | | 38 | 22 | | 39 | 4 | | 40 | 13 | | 41 | 4 | | 42 | 12 | | 43 | 6 | | 44 | 6 | | 45 | 9 | | 46 | 3 | | 47 | 12 | | 48 | 13 | | 49 | 17 |
| |
| 47.92% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.325 | | totalSentences | 80 | | uniqueOpeners | 26 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 48 | | matches | (empty) | | ratio | 0 | |
| 53.33% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 48 | | matches | | 0 | "He leaned on his cane," | | 1 | "His heterochromatic gaze—amber, black—swept her" | | 2 | "She pressed her palm against" | | 3 | "She stepped aside." | | 4 | "Her spine went rigid." | | 5 | "He set the cane against" | | 6 | "His charcoal coat settled over" | | 7 | "He moved closer, the scent" | | 8 | "She circled him, her black" | | 9 | "His touch burned cold." | | 10 | "His amber eye held her" | | 11 | "She pulled back, but her" | | 12 | "He stepped closer." | | 13 | "His breath warmed her cheek." | | 14 | "His heart hammered—two rhythms, one" | | 15 | "She looked up." | | 16 | "His platinum hair caught the" | | 17 | "He lowered his mouth to" | | 18 | "She pulled back, breath ragged." | | 19 | "She leaned into him, her" |
| | ratio | 0.417 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 45 | | totalSentences | 48 | | matches | | 0 | "The deadbolts snapped back in" | | 1 | "Rory threw the door open." | | 2 | "Lucien stood in the corridor," | | 3 | "He leaned on his cane," | | 4 | "His heterochromatic gaze—amber, black—swept her" | | 5 | "She pressed her palm against" | | 6 | "She stepped aside." | | 7 | "The corridor smelled of cumin" | | 8 | "Ptolemy watched from a stack" | | 9 | "Rory shut the door" | | 10 | "The deadbolts clicked into place" | | 11 | "Her spine went rigid." | | 12 | "He set the cane against" | | 13 | "His charcoal coat settled over" | | 14 | "He moved closer, the scent" | | 15 | "Heat flooded her neck." | | 16 | "Rory laughed, brittle glass." | | 17 | "She circled him, her black" | | 18 | "The flat felt smaller, the" | | 19 | "Lucien reached out, his fingers" |
| | ratio | 0.938 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 48 | | matches | (empty) | | ratio | 0 | |
| 32.97% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 13 | | technicalSentenceCount | 2 | | matches | | 0 | "Outside, Brick Lane carried on with its spices and noise, but inside Eva's flat, the air bent around them—two people who had parted on complicated terms, forced…" | | 1 | "She leaned into him, her black hair brushing his jaw, the crescent scar on her wrist glowing faintly in the dark." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 2 | | matches | | 0 | "He moved, the scent of cedarwood and something older trailing him" | | 1 | "Lucien reached out, his fingers brushing the crescent scar on her wrist" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 1 | | fancyTags | | 0 | "she whispered (whisper)" |
| | dialogueSentences | 38 | | tagDensity | 0.079 | | leniency | 0.158 | | rawRatio | 0.333 | | effectiveRatio | 0.053 | |