| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 25 | | adverbTagCount | 1 | | adverbTags | | 0 | "His fingers moved then [then]" |
| | dialogueSentences | 58 | | tagDensity | 0.431 | | leniency | 0.862 | | rawRatio | 0.04 | | effectiveRatio | 0.034 | |
| 95.05% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2019 | | 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) | |
| 67.81% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2019 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "weight" | | 1 | "familiar" | | 2 | "warmth" | | 3 | "eyebrow" | | 4 | "traced" | | 5 | "measured" | | 6 | "pulse" | | 7 | "desire" | | 8 | "dance" | | 9 | "aligned" | | 10 | "silence" |
| |
| 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 | 107 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 107 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 141 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2008 | | ratio | 0 | | matches | (empty) | |
| 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 | 35 | | wordCount | 1330 | | uniqueNames | 11 | | maxNameDensity | 0.83 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 10 | | Lucien | 11 | | Moreau | 1 | | French | 1 | | Ptolemy | 5 | | Eva | 2 | | Covent | 1 | | Garden | 1 | | Yu-Fei | 1 | | Mayfair | 1 | | Heat | 1 |
| | persons | | 0 | "Aurora" | | 1 | "Lucien" | | 2 | "Moreau" | | 3 | "Ptolemy" | | 4 | "Eva" | | 5 | "Yu-Fei" | | 6 | "Heat" |
| | places | | 0 | "Covent" | | 1 | "Garden" | | 2 | "Mayfair" |
| | globalScore | 1 | | windowScore | 1 | |
| 52.60% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 77 | | glossingSentenceCount | 3 | | matches | | 0 | "not quite holding" | | 1 | "something like resignation, something like f" | | 2 | "something like fondness" | | 3 | "felt like something she could almost na" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2008 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 141 | | matches | | 0 | "hated that he" | | 1 | "chose that moment" |
| |
| 98.25% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 46 | | mean | 43.65 | | std | 21.56 | | cv | 0.494 | | sampleLengths | | 0 | 71 | | 1 | 1 | | 2 | 64 | | 3 | 43 | | 4 | 70 | | 5 | 80 | | 6 | 13 | | 7 | 43 | | 8 | 39 | | 9 | 17 | | 10 | 44 | | 11 | 31 | | 12 | 58 | | 13 | 25 | | 14 | 73 | | 15 | 26 | | 16 | 38 | | 17 | 71 | | 18 | 66 | | 19 | 52 | | 20 | 16 | | 21 | 58 | | 22 | 69 | | 23 | 45 | | 24 | 41 | | 25 | 9 | | 26 | 64 | | 27 | 7 | | 28 | 50 | | 29 | 27 | | 30 | 55 | | 31 | 82 | | 32 | 41 | | 33 | 52 | | 34 | 32 | | 35 | 54 | | 36 | 42 | | 37 | 71 | | 38 | 23 | | 39 | 18 | | 40 | 33 | | 41 | 25 | | 42 | 57 | | 43 | 71 | | 44 | 7 | | 45 | 34 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 107 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 236 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 5 | | flaggedSentences | 13 | | totalSentences | 141 | | ratio | 0.092 | | matches | | 0 | "The door clicked open after a pause that stretched too long, and Aurora’s breath caught at the sight of him framed in the narrow hallway light—Lucien Moreau, all charcoal tailoring and that faint scent of cedar and something sharper she’d never pinned down." | | 1 | "French vowels still softened the consonants; she’d always liked the way he stretched her nickname." | | 2 | "The flat felt suddenly smaller than its already cramped one bedroom—every surface stacked with open texts and curling scrolls, the smell of damp paper and curry." | | 3 | "The three deadbolts stayed open; she didn’t move to secure them." | | 4 | "Lucien’s gaze traveled the room—Ptolemy leaping onto the arm of the faded armchair, the half-eaten tub of lo mein on the coffee table, her own jacket thrown over the back of the couch—and settled, finally, on the crescent scar just visible where her sleeve had ridden up." | | 5 | "Her hands were steady; they always were when something mattered." | | 6 | "The scar on her wrist itched; she pressed her thumb against it through the sleeve." | | 7 | "The black eye was a void; the amber one held storm-light." | | 8 | "She could put distance between them again, the way she had the morning after their last argument—when she had packed what little she kept at his flat, left the key on his desk, and caught the first number 8 bus that would take her away from Mayfair." | | 9 | "She hated that he could still do this—turn a conversation into a map of every weakness she’d ever shown him." | | 10 | "Instead a different sensation unfurled—anger, yes, but also the sharp edge of desire she’d kept banked for months." | | 11 | "She thought of the slow dance of information they’d traded—her courier routes for his underworld contacts—and how quickly it had tilted into something neither of them had names for." | | 12 | "In the amber eye she saw the exhaustion he rarely showed—late nights, old debts, the weight of two realms pulling at him." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 969 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 31 | | adverbRatio | 0.03199174406604747 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0030959752321981426 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 141 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 141 | | mean | 14.24 | | std | 10.59 | | cv | 0.744 | | sampleLengths | | 0 | 43 | | 1 | 28 | | 2 | 1 | | 3 | 13 | | 4 | 17 | | 5 | 21 | | 6 | 13 | | 7 | 14 | | 8 | 9 | | 9 | 15 | | 10 | 5 | | 11 | 12 | | 12 | 1 | | 13 | 6 | | 14 | 26 | | 15 | 16 | | 16 | 9 | | 17 | 15 | | 18 | 11 | | 19 | 47 | | 20 | 7 | | 21 | 8 | | 22 | 5 | | 23 | 11 | | 24 | 27 | | 25 | 3 | | 26 | 2 | | 27 | 16 | | 28 | 10 | | 29 | 11 | | 30 | 2 | | 31 | 12 | | 32 | 5 | | 33 | 11 | | 34 | 28 | | 35 | 5 | | 36 | 18 | | 37 | 13 | | 38 | 8 | | 39 | 33 | | 40 | 17 | | 41 | 5 | | 42 | 6 | | 43 | 14 | | 44 | 34 | | 45 | 25 | | 46 | 14 | | 47 | 17 | | 48 | 9 | | 49 | 10 |
| |
| 46.90% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.30714285714285716 | | totalSentences | 140 | | uniqueOpeners | 43 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 93 | | matches | | 0 | "Instead she stayed where she" | | 1 | "Instead a different sensation unfurled—anger," | | 2 | "Somewhere below, a bus hissed" |
| | ratio | 0.032 | |
| 35.05% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 43 | | totalSentences | 93 | | matches | | 0 | "She said his name like" | | 1 | "Her hand stayed on the" | | 2 | "he answered, voice low and" | | 3 | "She glanced at the clock" | | 4 | "He crossed the threshold with" | | 5 | "She tugged the cuff down" | | 6 | "He wore the tailored charcoal" | | 7 | "She moved to the kitchenette," | | 8 | "Her hands were steady; they" | | 9 | "She slid one mug across" | | 10 | "He took the mug, fingers" | | 11 | "She remembered the night in" | | 12 | "She took a sip of" | | 13 | "He set the mug down." | | 14 | "She felt the old hurt" | | 15 | "she said, because naming her" | | 16 | "His voice didn’t rise" | | 17 | "It never did." | | 18 | "She swiped it with her" | | 19 | "She looked up." |
| | ratio | 0.462 | |
| 8.39% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 84 | | totalSentences | 93 | | matches | | 0 | "The door clicked open after" | | 1 | "She said his name like" | | 2 | "Her hand stayed on the" | | 3 | "Ptolemy wound once around her" | | 4 | "Lucien leaned his weight into" | | 5 | "he answered, voice low and" | | 6 | "French vowels still softened the" | | 7 | "She glanced at the clock" | | 8 | "Eva wouldn’t be back until" | | 9 | "The flat felt suddenly smaller" | | 10 | "Aurora stepped aside because not" | | 11 | "He crossed the threshold with" | | 12 | "The three deadbolts stayed open;" | | 13 | "Lucien’s gaze traveled the room—Ptolemy" | | 14 | "She tugged the cuff down" | | 15 | "Lucien set the point of" | | 16 | "He wore the tailored charcoal" | | 17 | "She moved to the kitchenette," | | 18 | "Her hands were steady; they" | | 19 | "She slid one mug across" |
| | ratio | 0.903 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 93 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 53 | | technicalSentenceCount | 1 | | matches | | 0 | "The door clicked open after a pause that stretched too long, and Aurora’s breath caught at the sight of him framed in the narrow hallway light—Lucien Moreau, al…" |
| |
| 85.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 25 | | uselessAdditionCount | 2 | | matches | | 0 | "he answered, voice low and precise as ever" | | 1 | "He broke, the corner of his mouth twitching" |
| |
| 98.28% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 14 | | fancyCount | 3 | | fancyTags | | 0 | "he agreed (agree)" | | 1 | "he corrected (correct)" | | 2 | "he repeated (repeat)" |
| | dialogueSentences | 58 | | tagDensity | 0.241 | | leniency | 0.483 | | rawRatio | 0.214 | | effectiveRatio | 0.103 | |