| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 9 | | adverbTagCount | 2 | | adverbTags | | 0 | "he said quietly [quietly]" | | 1 | "she said instead [instead]" |
| | dialogueSentences | 41 | | tagDensity | 0.22 | | leniency | 0.439 | | rawRatio | 0.222 | | effectiveRatio | 0.098 | |
| 93.42% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1520 | | 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) | |
| 53.95% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1520 | | totalAiIsms | 14 | | found | | | highlights | | 0 | "glint" | | 1 | "stomach" | | 2 | "weight" | | 3 | "silence" | | 4 | "flicked" | | 5 | "pulsed" | | 6 | "shattered" | | 7 | "flickered" | | 8 | "pulse" | | 9 | "warmth" | | 10 | "footsteps" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 1 | | found | | 0 | | label | "let out a breath" | | count | 1 |
| | 1 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | 0 | "let out a breath" | | 1 | "stomach dropped" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 74 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 74 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 106 | | 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 | 1 | | markdownWords | 16 | | totalWords | 1512 | | ratio | 0.011 | | matches | | 0 | "You knew what I was from the start, chérie. The monster didn’t sneak up on you." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 17 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 1050 | | uniqueNames | 12 | | maxNameDensity | 0.48 | | worstName | "Aurora" | | maxWindowNameDensity | 1 | | worstWindowName | "Aurora" | | discoveredNames | | Silas | 1 | | Moreau | 1 | | Mayfair | 1 | | Eva | 3 | | Yu-Fei | 1 | | Aurora | 5 | | Lucien | 4 | | Brick | 1 | | Lane | 1 | | Golden | 1 | | Empress | 1 | | Six | 4 |
| | persons | | 0 | "Silas" | | 1 | "Moreau" | | 2 | "Eva" | | 3 | "Yu-Fei" | | 4 | "Aurora" | | 5 | "Lucien" |
| | places | | 0 | "Mayfair" | | 1 | "Brick" | | 2 | "Lane" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 58 | | glossingSentenceCount | 1 | | matches | | 0 | "not quite a smile, but the ghost of one" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.661 | | wordCount | 1512 | | matches | | 0 | "not quite a smile, but the ghost of one" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 106 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 54 | | mean | 28 | | std | 22.44 | | cv | 0.801 | | sampleLengths | | 0 | 20 | | 1 | 51 | | 2 | 38 | | 3 | 3 | | 4 | 28 | | 5 | 61 | | 6 | 1 | | 7 | 24 | | 8 | 17 | | 9 | 7 | | 10 | 2 | | 11 | 21 | | 12 | 82 | | 13 | 11 | | 14 | 49 | | 15 | 37 | | 16 | 78 | | 17 | 17 | | 18 | 34 | | 19 | 43 | | 20 | 5 | | 21 | 53 | | 22 | 5 | | 23 | 14 | | 24 | 37 | | 25 | 50 | | 26 | 22 | | 27 | 45 | | 28 | 36 | | 29 | 72 | | 30 | 5 | | 31 | 65 | | 32 | 41 | | 33 | 4 | | 34 | 4 | | 35 | 35 | | 36 | 23 | | 37 | 61 | | 38 | 9 | | 39 | 3 | | 40 | 61 | | 41 | 58 | | 42 | 8 | | 43 | 1 | | 44 | 18 | | 45 | 1 | | 46 | 10 | | 47 | 35 | | 48 | 4 | | 49 | 5 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 74 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 183 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 106 | | ratio | 0.066 | | matches | | 0 | "Rain had darkened the shoulders of his jacket and scattered droplets across the lenses of his absent spectacles—he must have pocketed them." | | 1 | "Six weeks since she’d walked out of his townhouse in Mayfair with his parting words still ringing in her ears—*You knew what I was from the start, chérie." | | 2 | "His shirtsleeves were rolled once at the cuff, and she noticed the skin of his left forearm, where the demonic script pulsed faintly beneath the surface—a detail he usually kept covered." | | 3 | "The memory jolted her—smoke, shattered glass, Lucien hauling her to her feet while she coughed out a lungful of sulphur." | | 4 | "He turned from the window, and for the briefest second, the amber eye flickered—just a pulse of deeper light, like a coal catching air." | | 5 | "Lucien’s mouth curved—not quite a smile, but the ghost of one." | | 6 | "“I’m informing you. The choice is entirely yours.” He retrieved his cane from the chair and slid the concealed blade a half-inch free, then clicked it home—a small, nervous gesture she’d seen him use only twice before." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1061 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 35 | | adverbRatio | 0.03298774740810556 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.005655042412818096 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 106 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 106 | | mean | 14.26 | | std | 10.28 | | cv | 0.721 | | sampleLengths | | 0 | 20 | | 1 | 13 | | 2 | 2 | | 3 | 17 | | 4 | 19 | | 5 | 13 | | 6 | 25 | | 7 | 3 | | 8 | 28 | | 9 | 21 | | 10 | 22 | | 11 | 18 | | 12 | 1 | | 13 | 10 | | 14 | 10 | | 15 | 4 | | 16 | 7 | | 17 | 10 | | 18 | 7 | | 19 | 2 | | 20 | 12 | | 21 | 9 | | 22 | 14 | | 23 | 2 | | 24 | 28 | | 25 | 30 | | 26 | 8 | | 27 | 7 | | 28 | 4 | | 29 | 36 | | 30 | 13 | | 31 | 24 | | 32 | 13 | | 33 | 27 | | 34 | 20 | | 35 | 31 | | 36 | 4 | | 37 | 13 | | 38 | 21 | | 39 | 13 | | 40 | 20 | | 41 | 14 | | 42 | 9 | | 43 | 5 | | 44 | 14 | | 45 | 39 | | 46 | 5 | | 47 | 14 | | 48 | 8 | | 49 | 29 |
| |
| 49.37% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.3584905660377358 | | totalSentences | 106 | | uniqueOpeners | 38 | |
| 48.31% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 69 | | matches | | 0 | "Just her name, weighted." |
| | ratio | 0.014 | |
| 17.10% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 69 | | matches | | 0 | "She crossed the narrow living" | | 1 | "Her stomach dropped." | | 2 | "She undid the chain with" | | 3 | "His mismatched eyes, one amber" | | 4 | "He gave no smile, no" | | 5 | "She tightened her grip on" | | 6 | "He shifted his weight, the" | | 7 | "she said, voice flat" | | 8 | "He tilted his head, the" | | 9 | "She flicked a hand toward" | | 10 | "He entered with the same" | | 11 | "His shirtsleeves were rolled once" | | 12 | "She crossed her arms." | | 13 | "He gestured at the cord" | | 14 | "She’d unplugged a kettle then" | | 15 | "He moved to the window," | | 16 | "He turned from the window," | | 17 | "She hadn’t meant to ask" | | 18 | "He glanced down at the" | | 19 | "he said quietly" |
| | ratio | 0.507 | |
| 32.46% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 59 | | totalSentences | 69 | | matches | | 0 | "The knock came at half" | | 1 | "Aurora set her paperback on" | | 2 | "Eva always texted first, Silas" | | 3 | "Another three beats, harder this" | | 4 | "She crossed the narrow living" | | 5 | "The peephole showed a distorted" | | 6 | "Her stomach dropped." | | 7 | "She undid the chain with" | | 8 | "Lucien Moreau stood under the" | | 9 | "Rain had darkened the shoulders" | | 10 | "His mismatched eyes, one amber" | | 11 | "The single syllable carried the" | | 12 | "He gave no smile, no" | | 13 | "She tightened her grip on" | | 14 | "He shifted his weight, the" | | 15 | "Aurora let the silence stretch" | | 16 | "The monster didn’t sneak up" | | 17 | "she said, voice flat" | | 18 | "He tilted his head, the" | | 19 | "Aurora stepped back, not because" |
| | ratio | 0.855 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 69 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 44 | | technicalSentenceCount | 1 | | matches | | 0 | "The knock came at half past ten, three sharp raps that cut through the low hum of the bar downstairs." |
| |
| 69.44% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 9 | | uselessAdditionCount | 1 | | matches | | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 41 | | tagDensity | 0.073 | | leniency | 0.146 | | rawRatio | 0 | | effectiveRatio | 0 | |