| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 309 | | tagDensity | 0.016 | | leniency | 0.032 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 98.66% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 3728 | | 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) | |
| 86.59% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 3728 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "silence" | | 1 | "pulse" | | 2 | "flicked" | | 3 | "stomach" | | 4 | "lurched" | | 5 | "affection" | | 6 | "traced" | | 7 | "fractured" | | 8 | "trembled" |
| |
| 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 | 226 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 226 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 530 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 60 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 3728 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 31 | | unquotedAttributions | 0 | | matches | (empty) | |
| 33.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 98 | | wordCount | 1850 | | uniqueNames | 13 | | maxNameDensity | 2.16 | | worstName | "Aurora" | | maxWindowNameDensity | 4 | | worstWindowName | "Lucien" | | discoveredNames | | Moreau | 1 | | Aurora | 40 | | Ptolemy | 8 | | Eva | 6 | | Brick | 1 | | Lane | 1 | | Lucien | 35 | | Soho | 1 | | Bethnal | 1 | | Green | 1 | | Prague | 1 | | Rory | 1 | | Paris | 1 |
| | persons | | 0 | "Moreau" | | 1 | "Aurora" | | 2 | "Ptolemy" | | 3 | "Eva" | | 4 | "Lucien" | | 5 | "Rory" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Soho" | | 3 | "Prague" | | 4 | "Paris" |
| | globalScore | 0.419 | | windowScore | 0.333 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 135 | | 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 | 3728 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 530 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 448 | | mean | 8.32 | | std | 9.98 | | cv | 1.199 | | sampleLengths | | 0 | 16 | | 1 | 5 | | 2 | 49 | | 3 | 13 | | 4 | 10 | | 5 | 6 | | 6 | 7 | | 7 | 4 | | 8 | 12 | | 9 | 3 | | 10 | 10 | | 11 | 3 | | 12 | 8 | | 13 | 4 | | 14 | 13 | | 15 | 5 | | 16 | 17 | | 17 | 5 | | 18 | 1 | | 19 | 1 | | 20 | 13 | | 21 | 38 | | 22 | 8 | | 23 | 2 | | 24 | 15 | | 25 | 3 | | 26 | 5 | | 27 | 1 | | 28 | 32 | | 29 | 3 | | 30 | 13 | | 31 | 34 | | 32 | 19 | | 33 | 2 | | 34 | 2 | | 35 | 2 | | 36 | 6 | | 37 | 10 | | 38 | 4 | | 39 | 10 | | 40 | 25 | | 41 | 3 | | 42 | 7 | | 43 | 2 | | 44 | 17 | | 45 | 4 | | 46 | 5 | | 47 | 15 | | 48 | 4 | | 49 | 8 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 226 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 334 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 2 | | flaggedSentences | 1 | | totalSentences | 530 | | ratio | 0.002 | | matches | | 0 | "Books leaned from every shelf; scrolls crowded the mantel; notes climbed the wallpaper in Eva’s tiny, violent handwriting." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1858 | | adjectiveStacks | 1 | | stackExamples | | 0 | "faint ember-coloured lines" |
| | adverbCount | 46 | | adverbRatio | 0.024757804090419805 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.002152852529601722 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 530 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 530 | | mean | 7.03 | | std | 6.93 | | cv | 0.985 | | sampleLengths | | 0 | 16 | | 1 | 5 | | 2 | 30 | | 3 | 12 | | 4 | 7 | | 5 | 13 | | 6 | 10 | | 7 | 6 | | 8 | 7 | | 9 | 4 | | 10 | 2 | | 11 | 10 | | 12 | 3 | | 13 | 10 | | 14 | 3 | | 15 | 8 | | 16 | 4 | | 17 | 2 | | 18 | 11 | | 19 | 5 | | 20 | 17 | | 21 | 5 | | 22 | 1 | | 23 | 1 | | 24 | 13 | | 25 | 5 | | 26 | 4 | | 27 | 12 | | 28 | 17 | | 29 | 8 | | 30 | 2 | | 31 | 6 | | 32 | 9 | | 33 | 3 | | 34 | 5 | | 35 | 1 | | 36 | 32 | | 37 | 3 | | 38 | 13 | | 39 | 4 | | 40 | 8 | | 41 | 16 | | 42 | 6 | | 43 | 6 | | 44 | 13 | | 45 | 2 | | 46 | 2 | | 47 | 2 | | 48 | 6 | | 49 | 10 |
| |
| 46.23% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 20 | | diversityRatio | 0.2037735849056604 | | totalSentences | 530 | | uniqueOpeners | 108 | |
| 46.73% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 214 | | matches | | 0 | "Just the blunt edge." | | 1 | "Instead, her thumb moved over" | | 2 | "Only Eva’s scrawl: Prague is" |
| | ratio | 0.014 | |
| 74.21% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 78 | | totalSentences | 214 | | matches | | 0 | "His ivory-handled cane rested against" | | 1 | "His shoe slid into the" | | 2 | "She looked through the spyhole." | | 3 | "He held himself straight, though" | | 4 | "His attention flicked over her" | | 5 | "It paused at the bruise" | | 6 | "She stepped aside." | | 7 | "His cane struck the floorboards" | | 8 | "He caught himself on the" | | 9 | "Her eyes dropped to his" | | 10 | "He lowered himself onto the" | | 11 | "His white shirt had fused" | | 12 | "She crossed to the kitchen" | | 13 | "She returned with the tin" | | 14 | "His fingers missed the last" | | 15 | "His gaze caught hers." | | 16 | "She reached for the button." | | 17 | "She opened the waistcoat and" | | 18 | "His amber eye sharpened." | | 19 | "She pressed the cloth to" |
| | ratio | 0.364 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 197 | | totalSentences | 214 | | matches | | 0 | "The third deadbolt scraped back," | | 1 | "Aurora stared through the gap." | | 2 | "Lucien Moreau stood on the" | | 3 | "The weak bulb above him" | | 4 | "His ivory-handled cane rested against" | | 5 | "Lucien’s gaze dipped to the" | | 6 | "Aurora tightened her grip on" | | 7 | "His shoe slid into the" | | 8 | "Aurora shut the door and" | | 9 | "Ptolemy sat beside her and" | | 10 | "She looked through the spyhole." | | 11 | "Lucien had not moved." | | 12 | "Water marked the sharp line" | | 13 | "He held himself straight, though" | | 14 | "Aurora unhooked the chain and" | | 15 | "His attention flicked over her" | | 16 | "It paused at the bruise" | | 17 | "The sound of her name" | | 18 | "She stepped aside." | | 19 | "Lucien crossed the threshold." |
| | ratio | 0.921 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 214 | | matches | (empty) | | ratio | 0 | |
| 99.57% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 66 | | technicalSentenceCount | 4 | | matches | | 0 | "Aurora could smell wet wool, iron, and his cologne, the same dry cedar scent that had haunted a scarf she had refused to wash until anger beat sentiment by one …" | | 1 | "His shirt hung open, exposing the pale plane of his chest and the old, thin scars that crossed it like abandoned roads." | | 2 | "He had kissed her once afterwards, fierce and brief, then stared at her as if she had opened a door inside him." | | 3 | "Without his coat buttoned and his cane in hand, he looked less like the broker who traded secrets under chandeliers and more like the man who had once held her …" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 3 | | fancyTags | | 0 | "Aurora murmured (murmur)" | | 1 | "he murmured (murmur)" | | 2 | "she murmured (murmur)" |
| | dialogueSentences | 309 | | tagDensity | 0.013 | | leniency | 0.026 | | rawRatio | 0.75 | | effectiveRatio | 0.019 | |