| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 13 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 27 | | tagDensity | 0.481 | | leniency | 0.963 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 78.70% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1643 | | totalAiIsmAdverbs | 7 | | found | | | highlights | | 0 | "slightly" | | 1 | "lightly" | | 2 | "perfectly" | | 3 | "suddenly" |
| |
| 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) | |
| 81.74% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1643 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "measured" | | 1 | "stomach" | | 2 | "pulse" | | 3 | "porcelain" | | 4 | "treacherous" | | 5 | "tenderness" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 86 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 86 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 99 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 56 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1658 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 15 | | wordCount | 1474 | | uniqueNames | 9 | | maxNameDensity | 0.27 | | worstName | "Lucien" | | maxWindowNameDensity | 1 | | worstWindowName | "Laila" | | discoveredNames | | Silas | 1 | | Fridays | 1 | | Ptolemy | 2 | | Eva | 1 | | Rory | 2 | | Moreau | 1 | | Laila | 2 | | Lucien | 4 | | Recalibrated | 1 |
| | persons | | 0 | "Silas" | | 1 | "Ptolemy" | | 2 | "Eva" | | 3 | "Rory" | | 4 | "Moreau" | | 5 | "Laila" | | 6 | "Lucien" |
| | places | (empty) | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 68 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 79.37% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.206 | | wordCount | 1658 | | matches | | 0 | "not filling it but flavoring it, the way a single drop of bergamot could change" | | 1 | "not limp, but men sometimes did" |
| |
| 65.66% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 99 | | matches | | 0 | "knew that rhythm" | | 1 | "explained, that night, favored, that demons" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 35 | | mean | 47.37 | | std | 40.73 | | cv | 0.86 | | sampleLengths | | 0 | 90 | | 1 | 14 | | 2 | 69 | | 3 | 57 | | 4 | 98 | | 5 | 10 | | 6 | 124 | | 7 | 3 | | 8 | 57 | | 9 | 37 | | 10 | 101 | | 11 | 20 | | 12 | 48 | | 13 | 9 | | 14 | 137 | | 15 | 6 | | 16 | 3 | | 17 | 3 | | 18 | 28 | | 19 | 14 | | 20 | 25 | | 21 | 131 | | 22 | 12 | | 23 | 108 | | 24 | 44 | | 25 | 44 | | 26 | 72 | | 27 | 13 | | 28 | 25 | | 29 | 7 | | 30 | 100 | | 31 | 19 | | 32 | 82 | | 33 | 30 | | 34 | 18 |
| |
| 88.94% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 86 | | matches | | 0 | "was curled" | | 1 | "been cooked" | | 2 | "been clenched" | | 3 | "was struck" |
| |
| 66.67% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 250 | | matches | | 0 | "was not holding" | | 1 | "was doing" | | 2 | "was seeing" | | 3 | "was not flinching" | | 4 | "were trying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 15 | | semicolonCount | 3 | | flaggedSentences | 14 | | totalSentences | 99 | | ratio | 0.141 | | matches | | 0 | "She had been listening to the muffled bass of the bar downstairs — Silas always kept late hours on Fridays — and for a moment she thought the sound was in her head, some trick of exhaustion." | | 1 | "The cat — Ptolemy, Eva's tabby, currently in Rory's keeping for the weekend — lifted his head from the arm of the sofa, considered her with round green eyes, and went back to sleep." | | 2 | "Her reflection ghosted in the dark window of the bathroom door — black hair mussed, a threadbare jumper that had been her father's, the pale crescent of the scar on her left wrist catching the light as she reached for the deadbolts." | | 3 | "His cane — that ridiculous, beautiful cane with its ivory handle — hung at his side like an afterthought." | | 4 | "The amber eye found her first, warm and almost honeyed in the dim light; the black eye gave nothing away." | | 5 | "The sound of it in his mouth — that low, accented murmur — traveled the length of her spine and settled somewhere behind her ribs." | | 6 | "\"It is half past twelve, which in Marseille would not yet qualify as late.\" He offered the correction lightly, the way he offered everything — as though the world were a stage and he merely the best-mannered player on it." | | 7 | "Lucien smiled the way other people blinked — automatically, charmingly, as a kind of social grease." | | 8 | "Rory had imagined a great many versions of this meeting over the past seven months — in the early hours when she could not sleep, on the bus to a delivery, once, unforgivably, in the middle of a perfectly nice date with a perfectly nice man whose name she had already forgotten." | | 9 | "But this — this was new." | | 10 | "The black eye did something complicated; the amber one did not move at all." | | 11 | "She was struck, as she always was, by how he inhabited a space — not filling it but flavoring it, the way a single drop of bergamot could change a whole glass of water." | | 12 | "He moved with the cane, but the cane was theatre; the limp he affected was slight, ornamental, and she had once seen him cross a rain-slicked alley at a pace that would have left her running." | | 13 | "Lucien's expression did not change, but something behind it shifted, a ratchet turning somewhere deep, and he crossed to her in two unhurried strides, close enough that she could smell the cold night on his coat and the faint, dry-paper scent of whatever cologne he wore — vetiver, she thought, though she had never been certain." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1465 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 50 | | adverbRatio | 0.034129692832764506 | | lyAdverbCount | 19 | | lyAdverbRatio | 0.012969283276450512 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 99 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 99 | | mean | 16.75 | | std | 13.54 | | cv | 0.808 | | sampleLengths | | 0 | 21 | | 1 | 32 | | 2 | 37 | | 3 | 14 | | 4 | 4 | | 5 | 7 | | 6 | 8 | | 7 | 21 | | 8 | 29 | | 9 | 15 | | 10 | 34 | | 11 | 8 | | 12 | 19 | | 13 | 19 | | 14 | 42 | | 15 | 18 | | 16 | 10 | | 17 | 28 | | 18 | 21 | | 19 | 19 | | 20 | 20 | | 21 | 36 | | 22 | 3 | | 23 | 12 | | 24 | 8 | | 25 | 12 | | 26 | 25 | | 27 | 9 | | 28 | 17 | | 29 | 5 | | 30 | 6 | | 31 | 40 | | 32 | 6 | | 33 | 50 | | 34 | 5 | | 35 | 20 | | 36 | 4 | | 37 | 8 | | 38 | 16 | | 39 | 20 | | 40 | 9 | | 41 | 7 | | 42 | 12 | | 43 | 52 | | 44 | 13 | | 45 | 16 | | 46 | 13 | | 47 | 6 | | 48 | 18 | | 49 | 6 |
| |
| 38.38% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 17 | | diversityRatio | 0.3333333333333333 | | totalSentences | 99 | | uniqueOpeners | 33 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 77 | | matches | (empty) | | ratio | 0 | |
| 17.40% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 39 | | totalSentences | 77 | | matches | | 0 | "She had been listening to" | | 1 | "She knew that rhythm." | | 2 | "She had not heard it" | | 3 | "She had told herself she" | | 4 | "She set the mug down" | | 5 | "She passed the kitchenette, the" | | 6 | "Her reflection ghosted in the" | | 7 | "She tugged each one back," | | 8 | "She opened the door no" | | 9 | "His cane — that ridiculous," | | 10 | "She had not been Laila" | | 11 | "She had not been Laila" | | 12 | "Her voice came out steadier" | | 13 | "She leaned her shoulder against" | | 14 | "He offered the correction lightly," | | 15 | "His gaze was doing the" | | 16 | "He did not smile." | | 17 | "It rearranged the geometry of" | | 18 | "She exhaled a laugh that" | | 19 | "She did not want to" |
| | ratio | 0.506 | |
| 18.44% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 68 | | totalSentences | 77 | | matches | | 0 | "The knock came just after" | | 1 | "Aurora was curled on the" | | 2 | "She had been listening to" | | 3 | "She knew that rhythm." | | 4 | "She had not heard it" | | 5 | "She had told herself she" | | 6 | "She set the mug down" | | 7 | "The cat — Ptolemy, Eva's" | | 8 | "Traitor, she thought, and liked" | | 9 | "The hallway was narrow and" | | 10 | "She passed the kitchenette, the" | | 11 | "Her reflection ghosted in the" | | 12 | "She tugged each one back," | | 13 | "She opened the door no" | | 14 | "Lucien Moreau stood on the" | | 15 | "The charcoal suit was immaculate" | | 16 | "His cane — that ridiculous," | | 17 | "The amber eye found her" | | 18 | "The platinum of his hair" | | 19 | "The name was a key" |
| | ratio | 0.883 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 77 | | matches | (empty) | | ratio | 0 | |
| 55.39% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 49 | | technicalSentenceCount | 6 | | matches | | 0 | "Her reflection ghosted in the dark window of the bathroom door — black hair mussed, a threadbare jumper that had been her father's, the pale crescent of the sca…" | | 1 | "Lucien Moreau stood on the worn carpet of the landing as though he had stepped out of a different century, or a different country, or a different life." | | 2 | "This was a man who fixed things standing at her door asking her to fix something in return." | | 3 | "She did not want to feel the tenderness that rose in her chest at the admission, did not want to acknowledge the way the words softened something that had been …" | | 4 | "He moved with the cane, but the cane was theatre; the limp he affected was slight, ornamental, and she had once seen him cross a rain-slicked alley at a pace th…" | | 5 | "She reached up and adjusted the collar of his coat, a small domestic gesture that meant nothing and everything, and felt his breath catch beneath her fingers." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 13 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 27 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |