| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 12 | | adverbTagCount | 1 | | adverbTags | | 0 | "he said finally [finally]" |
| | dialogueSentences | 53 | | tagDensity | 0.226 | | leniency | 0.453 | | rawRatio | 0.083 | | effectiveRatio | 0.038 | |
| 75.94% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1039 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "suddenly" | | 1 | "very" | | 2 | "slightly" |
| |
| 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.56% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1039 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "weight" | | 1 | "tension" | | 2 | "absolutely" |
| |
| 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 | 31 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 31 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 72 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 49 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1032 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 11 | | wordCount | 452 | | uniqueNames | 4 | | maxNameDensity | 0.88 | | worstName | "Rory" | | maxWindowNameDensity | 1 | | worstWindowName | "Rory" | | discoveredNames | | | persons | | 0 | "Rory" | | 1 | "Ptolemy" | | 2 | "Eva" | | 3 | "Lucien" |
| | places | (empty) | | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 23 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite human" | | 1 | "not quite sitting, not quite standing, poised like she might still throw him out" | | 2 | "not quite standing, poised like she might still throw him out" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.969 | | wordCount | 1032 | | matches | | 0 | "not entirely, but something in the mortar gave" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 72 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 51 | | mean | 20.24 | | std | 18.96 | | cv | 0.937 | | sampleLengths | | 0 | 45 | | 1 | 21 | | 2 | 7 | | 3 | 29 | | 4 | 3 | | 5 | 5 | | 6 | 28 | | 7 | 16 | | 8 | 16 | | 9 | 64 | | 10 | 11 | | 11 | 5 | | 12 | 5 | | 13 | 39 | | 14 | 14 | | 15 | 4 | | 16 | 8 | | 17 | 76 | | 18 | 4 | | 19 | 4 | | 20 | 36 | | 21 | 9 | | 22 | 2 | | 23 | 50 | | 24 | 3 | | 25 | 5 | | 26 | 9 | | 27 | 33 | | 28 | 18 | | 29 | 5 | | 30 | 23 | | 31 | 40 | | 32 | 2 | | 33 | 35 | | 34 | 28 | | 35 | 3 | | 36 | 1 | | 37 | 1 | | 38 | 37 | | 39 | 51 | | 40 | 28 | | 41 | 14 | | 42 | 6 | | 43 | 7 | | 44 | 59 | | 45 | 7 | | 46 | 4 | | 47 | 55 | | 48 | 29 | | 49 | 3 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 31 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 83 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 72 | | ratio | 0.056 | | matches | | 0 | "The three deadbolts took Rory longer than they should have, her fingers fumbling over the last one when she heard the knock again—soft, unhurried, like whoever stood there had all the time in the world." | | 1 | "She stepped back and let him pass, close enough that his shoulder brushed hers, close enough that she caught the scent of him—cedar and something underneath it she'd never been able to name, something not quite human." | | 2 | "She almost laughed—caught it before it fully surfaced, turned it into something closer to a scowl." | | 3 | "Whatever she'd built in his absence—the careful walls, the deleted number, the practiced indifference—none of it collapsed, not entirely, but something in the mortar gave." |
| |
| 87.34% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 459 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 25 | | adverbRatio | 0.054466230936819175 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.010893246187363835 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 72 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 72 | | mean | 14.33 | | std | 11.13 | | cv | 0.776 | | sampleLengths | | 0 | 35 | | 1 | 10 | | 2 | 21 | | 3 | 7 | | 4 | 29 | | 5 | 3 | | 6 | 5 | | 7 | 25 | | 8 | 3 | | 9 | 16 | | 10 | 16 | | 11 | 27 | | 12 | 37 | | 13 | 11 | | 14 | 5 | | 15 | 5 | | 16 | 19 | | 17 | 20 | | 18 | 14 | | 19 | 4 | | 20 | 8 | | 21 | 27 | | 22 | 49 | | 23 | 4 | | 24 | 4 | | 25 | 5 | | 26 | 22 | | 27 | 9 | | 28 | 5 | | 29 | 4 | | 30 | 2 | | 31 | 32 | | 32 | 18 | | 33 | 3 | | 34 | 5 | | 35 | 9 | | 36 | 5 | | 37 | 19 | | 38 | 9 | | 39 | 18 | | 40 | 5 | | 41 | 10 | | 42 | 13 | | 43 | 6 | | 44 | 34 | | 45 | 2 | | 46 | 35 | | 47 | 13 | | 48 | 15 | | 49 | 3 |
| |
| 58.80% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.4027777777777778 | | totalSentences | 72 | | uniqueOpeners | 29 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 27 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 17 | | totalSentences | 27 | | matches | | 0 | "She yanked the door open" | | 1 | "He looked past her into" | | 2 | "She stepped back and let" | | 3 | "he said, setting the cane" | | 4 | "She crossed her arms, put" | | 5 | "She sat on the arm" | | 6 | "He didn't answer right away." | | 7 | "He walked to the window" | | 8 | "he said finally" | | 9 | "He stopped, exhaled through his" | | 10 | "He turned from the window." | | 11 | "She stood, the sofa arm" | | 12 | "She almost laughed—caught it before" | | 13 | "His voice lost its polish" | | 14 | "He took a step closer," | | 15 | "She looked at him a" | | 16 | "She moved past him toward" |
| | ratio | 0.63 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 26 | | totalSentences | 27 | | matches | | 0 | "The three deadbolts took Rory" | | 1 | "She yanked the door open" | | 2 | "Lucien stood in the hallway," | | 3 | "He looked past her into" | | 4 | "Rory held the door another" | | 5 | "She stepped back and let" | | 6 | "he said, setting the cane" | | 7 | "She crossed her arms, put" | | 8 | "She sat on the arm" | | 9 | "He didn't answer right away." | | 10 | "He walked to the window" | | 11 | "Ptolemy uncurled and padded over" | | 12 | "he said finally" | | 13 | "He stopped, exhaled through his" | | 14 | "He turned from the window." | | 15 | "The pause told her everything." | | 16 | "She stood, the sofa arm" | | 17 | "Rory studied him, arms still" | | 18 | "She almost laughed—caught it before" | | 19 | "His voice lost its polish" |
| | ratio | 0.963 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 27 | | matches | (empty) | | ratio | 0 | |
| 95.24% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 15 | | technicalSentenceCount | 1 | | matches | | 0 | "She looked at him a long moment, at the rain-damp hair falling slightly out of its slick, at the tightness around his mouth that hadn't been there three months …" |
| |
| 83.33% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 12 | | uselessAdditionCount | 1 | | matches | | 0 | "She stood, the sofa arm creaking under released weight" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 53 | | tagDensity | 0.113 | | leniency | 0.226 | | rawRatio | 0.167 | | effectiveRatio | 0.038 | |