| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 2 | | adverbTags | | 0 | "he said quietly [quietly]" | | 1 | "he agreed softly [softly]" |
| | dialogueSentences | 40 | | tagDensity | 0.475 | | leniency | 0.95 | | rawRatio | 0.105 | | effectiveRatio | 0.1 | |
| 67.86% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1400 | | totalAiIsmAdverbs | 9 | | found | | 0 | | | 1 | | | 2 | | | 3 | | adverb | "deliberately" | | count | 1 |
| | 4 | |
| | highlights | | 0 | "very" | | 1 | "carefully" | | 2 | "slowly" | | 3 | "deliberately" | | 4 | "softly" |
| |
| 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) | |
| 85.71% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1400 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "unsettled" | | 1 | "comforting" | | 2 | "traced" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 0 | | maxInWindow | 0 | | found | (empty) | | highlights | (empty) | |
| 97.68% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 2 | | narrationSentences | 61 | | matches | | 0 | "was relieved" | | 1 | "was relieved" |
| |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 61 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 81 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 101 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 17 | | totalWords | 1414 | | ratio | 0.012 | | matches | | 0 | "Not tonight, Rory. Not ever, if I'm honest, which I am trying to be for once." | | 1 | "Yes?" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 25 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 913 | | uniqueNames | 11 | | maxNameDensity | 0.88 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Rory | 3 | | Lucien | 8 | | Moreau | 3 | | Eva | 3 | | Brick | 1 | | Lane | 1 | | One | 1 | | Marseille | 1 | | London | 1 | | French | 1 | | Cardiff | 1 |
| | persons | | 0 | "Rory" | | 1 | "Lucien" | | 2 | "Moreau" | | 3 | "Eva" | | 4 | "One" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Marseille" | | 3 | "London" | | 4 | "Cardiff" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 37 | | 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 | 1414 | | matches | (empty) | |
| 43.21% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 81 | | matches | | 0 | "saved that language noticed that months" | | 1 | "hated that he" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 42 | | mean | 33.67 | | std | 31.75 | | cv | 0.943 | | sampleLengths | | 0 | 48 | | 1 | 81 | | 2 | 5 | | 3 | 73 | | 4 | 13 | | 5 | 14 | | 6 | 47 | | 7 | 65 | | 8 | 93 | | 9 | 7 | | 10 | 45 | | 11 | 19 | | 12 | 4 | | 13 | 96 | | 14 | 7 | | 15 | 3 | | 16 | 55 | | 17 | 3 | | 18 | 53 | | 19 | 15 | | 20 | 12 | | 21 | 87 | | 22 | 42 | | 23 | 1 | | 24 | 3 | | 25 | 113 | | 26 | 20 | | 27 | 32 | | 28 | 6 | | 29 | 89 | | 30 | 33 | | 31 | 35 | | 32 | 7 | | 33 | 3 | | 34 | 22 | | 35 | 5 | | 36 | 21 | | 37 | 76 | | 38 | 13 | | 39 | 3 | | 40 | 6 | | 41 | 39 |
| |
| 99.51% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 61 | | matches | | 0 | "was relieved" | | 1 | "was relieved" |
| |
| 80.24% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 167 | | matches | | 0 | "was still cursing" | | 1 | "was holding" | | 2 | "was kneeling" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 2 | | flaggedSentences | 10 | | totalSentences | 81 | | ratio | 0.123 | | matches | | 0 | "The third deadbolt stuck, the way it always did, and Rory was still cursing it under her breath when she pulled the door open — and found Lucien Moreau standing in the hallway of Eva's flat, bleeding through a charcoal suit that had cost more than her rent." | | 1 | "The other — the black one, the one that had unsettled her from the first night she'd met him — caught the flat's lamplight and held it like a coin at the bottom of a well." | | 2 | "Behind her, Eva's flat waited in its usual chaos — books stacked on the armchair, scrolls weighted down with mugs, research notes fanned across the coffee table like a card trick gone wrong." | | 3 | "She watched him cross the room and lower himself onto the sofa the way a building settles — deliberately, and only once." | | 4 | "When she came back he had his jacket off and his shirt unbuttoned partway, and the gash along his ribs was worse than she'd guessed — long, shallow at the edges, deep in the middle, the kind of wound a thin blade makes when it's meant to be felt." | | 5 | "\"I know. That's not comforting, Lucien. That's the opposite of comforting.\" She pressed the antiseptic pad down and he hissed through his teeth — French, low and genuinely filthy." | | 6 | "He saved that language for pain and for poetry; she'd noticed that months ago, before she'd had any business noticing anything about him." | | 7 | "Just for a second, just long enough for him to notice, and she hated that he noticed, and she made herself keep working — butterfly strips now, laid along the wound's edge one by one." | | 8 | "Lucien raised one hand — slowly, carefully, the way you'd move near something you were afraid would startle — and tucked a strand of black hair behind her ear." | | 9 | "She laughed — a short, cracked sound — and he caught it, or he caught her, or she caught him; afterward she could never say who moved first, only that the first aid kit slid off the sofa and neither of them looked at it, and his mouth found hers the way it should have six weeks ago in the back room of Silas' bar: certain, and warm, and with no intention whatsoever of being noble." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 683 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 18 | | adverbRatio | 0.02635431918008785 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.004392386530014641 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 81 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 81 | | mean | 17.46 | | std | 17.77 | | cv | 1.018 | | sampleLengths | | 0 | 48 | | 1 | 8 | | 2 | 18 | | 3 | 34 | | 4 | 21 | | 5 | 5 | | 6 | 32 | | 7 | 5 | | 8 | 36 | | 9 | 13 | | 10 | 12 | | 11 | 2 | | 12 | 4 | | 13 | 28 | | 14 | 15 | | 15 | 33 | | 16 | 16 | | 17 | 16 | | 18 | 5 | | 19 | 3 | | 20 | 39 | | 21 | 46 | | 22 | 7 | | 23 | 4 | | 24 | 22 | | 25 | 7 | | 26 | 12 | | 27 | 8 | | 28 | 11 | | 29 | 4 | | 30 | 4 | | 31 | 49 | | 32 | 43 | | 33 | 7 | | 34 | 3 | | 35 | 29 | | 36 | 3 | | 37 | 23 | | 38 | 3 | | 39 | 22 | | 40 | 31 | | 41 | 15 | | 42 | 12 | | 43 | 3 | | 44 | 35 | | 45 | 30 | | 46 | 5 | | 47 | 14 | | 48 | 4 | | 49 | 7 |
| |
| 73.66% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.49382716049382713 | | totalSentences | 81 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 52 | | matches | | 0 | "Just her name" | | 1 | "Just for a second, just" |
| | ratio | 0.038 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 30 | | totalSentences | 52 | | matches | | 0 | "His voice was even, but" | | 1 | "He said it the way" | | 2 | "It was the last place" | | 3 | "She should shut the door." | | 4 | "She knew that." | | 5 | "she said, and stepped back" | | 6 | "He came in slowly." | | 7 | "She watched him cross the" | | 8 | "He set the cane against" | | 9 | "His fingers, when he pulled" | | 10 | "She fetched it anyway." | | 11 | "She knelt on the sofa" | | 12 | "She pressed the antiseptic pad" | | 13 | "She almost smiled." | | 14 | "He saved that language for" | | 15 | "His jaw was tight, but" | | 16 | "he said quietly" | | 17 | "Her hands stopped." | | 18 | "Her left wrist brushed his" | | 19 | "He'd asked about it once." |
| | ratio | 0.577 | |
| 46.54% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 43 | | totalSentences | 52 | | matches | | 0 | "The third deadbolt stuck, the" | | 1 | "Rainwater dripped from the ends" | | 2 | "Lucien did not stand in" | | 3 | "Lucien appeared in doorways like" | | 4 | "His voice was even, but" | | 5 | "The other — the black" | | 6 | "Ptolemy appeared at her ankles," | | 7 | "He said it the way" | | 8 | "The whole place smelled of" | | 9 | "It was the last place" | | 10 | "She should shut the door." | | 11 | "She knew that." | | 12 | "she said, and stepped back" | | 13 | "He came in slowly." | | 14 | "She watched him cross the" | | 15 | "He set the cane against" | | 16 | "His fingers, when he pulled" | | 17 | "She fetched it anyway." | | 18 | "She knelt on the sofa" | | 19 | "She pressed the antiseptic pad" |
| | ratio | 0.827 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 52 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 24 | | technicalSentenceCount | 1 | | matches | | 0 | "The third deadbolt stuck, the way it always did, and Rory was still cursing it under her breath when she pulled the door open — and found Lucien Moreau standing…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 25.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 16 | | fancyCount | 5 | | fancyTags | | 0 | "She pressed (press)" | | 1 | "he agreed softly (agree)" | | 2 | "She laughed — (laugh)" | | 3 | "she agreed (agree)" | | 4 | "Lucien repeated (repeat)" |
| | dialogueSentences | 40 | | tagDensity | 0.4 | | leniency | 0.8 | | rawRatio | 0.313 | | effectiveRatio | 0.25 | |