| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 7 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 109 | | tagDensity | 0.064 | | leniency | 0.128 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 95.78% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2369 | | 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) | |
| 89.45% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2369 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "unreadable" | | 1 | "silence" | | 2 | "stomach" | | 3 | "flicker" | | 4 | "tension" |
| |
| 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 | 192 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 192 | | filterMatches | (empty) | | hedgeMatches | | 0 | "started to" | | 1 | "seemed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 294 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 84 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2368 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 21 | | unquotedAttributions | 0 | | matches | (empty) | |
| 92.03% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 48 | | wordCount | 1725 | | uniqueNames | 5 | | maxNameDensity | 1.16 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 17 | | Eva | 6 | | Lucien | 20 | | Ptolemy | 4 | | London | 1 |
| | persons | | 0 | "Aurora" | | 1 | "Eva" | | 2 | "Lucien" | | 3 | "Ptolemy" |
| | places | | | globalScore | 0.92 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 117 | | glossingSentenceCount | 1 | | matches | | 0 | "felt like a blade laid to skin" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.422 | | wordCount | 2368 | | matches | | 0 | "not deep enough to spill panic into the room, but ugly" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 294 | | matches | | 0 | "hated that she" | | 1 | "Hated that some" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 184 | | mean | 12.87 | | std | 16.97 | | cv | 1.318 | | sampleLengths | | 0 | 40 | | 1 | 8 | | 2 | 80 | | 3 | 10 | | 4 | 7 | | 5 | 3 | | 6 | 9 | | 7 | 4 | | 8 | 4 | | 9 | 3 | | 10 | 2 | | 11 | 5 | | 12 | 2 | | 13 | 96 | | 14 | 14 | | 15 | 12 | | 16 | 5 | | 17 | 3 | | 18 | 6 | | 19 | 43 | | 20 | 1 | | 21 | 20 | | 22 | 16 | | 23 | 26 | | 24 | 2 | | 25 | 3 | | 26 | 4 | | 27 | 73 | | 28 | 6 | | 29 | 4 | | 30 | 4 | | 31 | 10 | | 32 | 41 | | 33 | 21 | | 34 | 5 | | 35 | 4 | | 36 | 1 | | 37 | 18 | | 38 | 3 | | 39 | 7 | | 40 | 8 | | 41 | 9 | | 42 | 3 | | 43 | 1 | | 44 | 6 | | 45 | 28 | | 46 | 10 | | 47 | 2 | | 48 | 13 | | 49 | 57 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 192 | | matches | | 0 | "been poured" | | 1 | "been arranged" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 303 | | matches | | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 1 | | semicolonCount | 2 | | flaggedSentences | 3 | | totalSentences | 294 | | ratio | 0.01 | | matches | | 0 | "He said it dry, and there it was again—that thin, dangerous line between them where old irritation and older attraction still knew each other by scent." | | 1 | "The black eye gave nothing away; the amber one did too much." | | 2 | "Her hands moved from habit; her mind did not." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1731 | | adjectiveStacks | 1 | | stackExamples | | 0 | "beneath long pale fingers" |
| | adverbCount | 69 | | adverbRatio | 0.03986135181975736 | | lyAdverbCount | 10 | | lyAdverbRatio | 0.005777007510109763 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 294 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 294 | | mean | 8.05 | | std | 8.24 | | cv | 1.023 | | sampleLengths | | 0 | 14 | | 1 | 8 | | 2 | 18 | | 3 | 8 | | 4 | 19 | | 5 | 5 | | 6 | 16 | | 7 | 13 | | 8 | 4 | | 9 | 6 | | 10 | 17 | | 11 | 10 | | 12 | 7 | | 13 | 3 | | 14 | 9 | | 15 | 4 | | 16 | 4 | | 17 | 3 | | 18 | 2 | | 19 | 5 | | 20 | 2 | | 21 | 25 | | 22 | 3 | | 23 | 7 | | 24 | 9 | | 25 | 7 | | 26 | 17 | | 27 | 10 | | 28 | 18 | | 29 | 8 | | 30 | 6 | | 31 | 12 | | 32 | 5 | | 33 | 3 | | 34 | 6 | | 35 | 3 | | 36 | 3 | | 37 | 37 | | 38 | 1 | | 39 | 8 | | 40 | 6 | | 41 | 6 | | 42 | 8 | | 43 | 8 | | 44 | 3 | | 45 | 17 | | 46 | 6 | | 47 | 2 | | 48 | 3 | | 49 | 4 |
| |
| 47.28% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.2891156462585034 | | totalSentences | 294 | | uniqueOpeners | 85 | |
| 96.90% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 172 | | matches | | 0 | "Soft enough to pass for" | | 1 | "Even injured, he carried himself" | | 2 | "Of course he did not." | | 3 | "Then she had burned it" | | 4 | "Even the pipes seemed to" |
| | ratio | 0.029 | |
| 73.49% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 63 | | totalSentences | 172 | | matches | | 0 | "His pale hair had come" | | 1 | "He looked as composed as" | | 2 | "She did not move." | | 3 | "Her straight black hair hung" | | 4 | "She started to close the" | | 5 | "His cane shifted." | | 6 | "He just rested both hands" | | 7 | "She kept the door open" | | 8 | "He looked tired." | | 9 | "She hated that she saw" | | 10 | "Her fingers tightened on the" | | 11 | "She gave a short laugh" | | 12 | "She stared at him another" | | 13 | "He closed the door with" | | 14 | "She tugged the cuff down." | | 15 | "He leaned the cane beside" | | 16 | "He said it dry, and" | | 17 | "She moved towards the kitchen" | | 18 | "He remained where he was." | | 19 | "She turned and pinned him" |
| | ratio | 0.366 | |
| 35.58% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 146 | | totalSentences | 172 | | matches | | 0 | "The first deadbolt slid back" | | 1 | "The door opened the width" | | 2 | "Aurora looked through the gap" | | 3 | "Lucien stood on the landing" | | 4 | "Rain clung to the shoulders." | | 5 | "His pale hair had come" | | 6 | "The ivory handle of his" | | 7 | "The other sat black and" | | 8 | "He looked as composed as" | | 9 | "Ptolemy wound around Aurora’s ankles" | | 10 | "Aurora kept one hand on" | | 11 | "Lucien’s mouth tilted, though it" | | 12 | "She did not move." | | 13 | "A throw blanket half-slid off" | | 14 | "Aurora had one of Eva’s" | | 15 | "Her straight black hair hung" | | 16 | "The blue of her eyes" | | 17 | "Lucien lowered his gaze to" | | 18 | "She started to close the" | | 19 | "His cane shifted." |
| | ratio | 0.849 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 172 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 59 | | technicalSentenceCount | 3 | | matches | | 0 | "He just rested both hands over the ivory head and stood there with that maddening restraint, as if he had all the time in the world and she was the only one in …" | | 1 | "Then she had burned it over the sink and hated him for making her cry over a sentence that sounded rehearsed." | | 2 | "They were eye-level now, close enough that she could see the faint shadow where he had missed a spot shaving, close enough that if she leaned in an inch she wou…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 7 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 1 | | fancyTags | | 0 | "Aurora muttered (mutter)" |
| | dialogueSentences | 109 | | tagDensity | 0.055 | | leniency | 0.11 | | rawRatio | 0.167 | | effectiveRatio | 0.018 | |