| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 45 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1245 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 91.97% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1245 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 53 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 53 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 83 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 72 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1250 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 19 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 10 | | wordCount | 813 | | uniqueNames | 6 | | maxNameDensity | 0.49 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Lucien" | | discoveredNames | | Moreau | 1 | | Lucien | 4 | | Ptolemy | 2 | | Eva | 1 | | Rain | 1 | | Bengali | 1 |
| | persons | | 0 | "Moreau" | | 1 | "Lucien" | | 2 | "Ptolemy" | | 3 | "Eva" | | 4 | "Rain" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 33 | | 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 | 1250 | | matches | (empty) | |
| 46.18% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 83 | | matches | | 0 | "chose that moment" | | 1 | "hated that her" | | 2 | "chose that over" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 56 | | mean | 22.32 | | std | 23.04 | | cv | 1.032 | | sampleLengths | | 0 | 20 | | 1 | 52 | | 2 | 2 | | 3 | 11 | | 4 | 4 | | 5 | 4 | | 6 | 26 | | 7 | 9 | | 8 | 40 | | 9 | 35 | | 10 | 27 | | 11 | 5 | | 12 | 4 | | 13 | 48 | | 14 | 47 | | 15 | 3 | | 16 | 13 | | 17 | 68 | | 18 | 7 | | 19 | 1 | | 20 | 8 | | 21 | 32 | | 22 | 14 | | 23 | 47 | | 24 | 6 | | 25 | 57 | | 26 | 12 | | 27 | 2 | | 28 | 25 | | 29 | 5 | | 30 | 11 | | 31 | 76 | | 32 | 13 | | 33 | 8 | | 34 | 28 | | 35 | 1 | | 36 | 10 | | 37 | 57 | | 38 | 12 | | 39 | 4 | | 40 | 104 | | 41 | 5 | | 42 | 1 | | 43 | 3 | | 44 | 1 | | 45 | 47 | | 46 | 6 | | 47 | 19 | | 48 | 7 | | 49 | 13 |
| |
| 98.64% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 53 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 135 | | matches | | |
| 5.16% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 1 | | flaggedSentences | 4 | | totalSentences | 83 | | ratio | 0.048 | | matches | | 0 | "Not an invitation — the cat was already out in the stairwell and the radiator behind her had given up an hour ago and the wet from his coat was pooling on her landing." | | 1 | "She knew what sat inside the ivory — a blade thin enough to pass a coin slot — and she knew the sound the blade made coming out, and she hated that her body remembered the sound better than it remembered his face." | | 2 | "He looked at her left wrist — bare, the sleeve of her jumper pushed up past the elbow — and the crescent scar sat there in the lamplight like something he had been studying for years and never learned the whole of." | | 3 | "The amber eye caught the lamp; the black one kept everything." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 808 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 16 | | adverbRatio | 0.019801980198019802 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 83 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 83 | | mean | 15.06 | | std | 15.64 | | cv | 1.038 | | sampleLengths | | 0 | 20 | | 1 | 16 | | 2 | 22 | | 3 | 14 | | 4 | 2 | | 5 | 7 | | 6 | 4 | | 7 | 4 | | 8 | 4 | | 9 | 26 | | 10 | 9 | | 11 | 21 | | 12 | 19 | | 13 | 35 | | 14 | 5 | | 15 | 22 | | 16 | 5 | | 17 | 4 | | 18 | 10 | | 19 | 4 | | 20 | 34 | | 21 | 4 | | 22 | 43 | | 23 | 3 | | 24 | 13 | | 25 | 5 | | 26 | 20 | | 27 | 43 | | 28 | 7 | | 29 | 1 | | 30 | 8 | | 31 | 27 | | 32 | 5 | | 33 | 14 | | 34 | 5 | | 35 | 42 | | 36 | 6 | | 37 | 7 | | 38 | 7 | | 39 | 43 | | 40 | 12 | | 41 | 2 | | 42 | 25 | | 43 | 5 | | 44 | 11 | | 45 | 15 | | 46 | 61 | | 47 | 9 | | 48 | 4 | | 49 | 8 |
| |
| 58.63% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.40963855421686746 | | totalSentences | 83 | | uniqueOpeners | 34 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 41 | | matches | | 0 | "Somewhere on the floor below," | | 1 | "Even the fan below seemed" |
| | ratio | 0.049 | |
| 54.15% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 17 | | totalSentences | 41 | | matches | | 0 | "His suit hung heavy with" | | 1 | "She kept the gap at" | | 2 | "She unhooked the chain." | | 3 | "He stepped past her." | | 4 | "He looked down at his" | | 5 | "He toed them off, set" | | 6 | "She knew what sat inside" | | 7 | "She set the mug down" | | 8 | "His hand closed around the" | | 9 | "He looked at her left" | | 10 | "He turned his face to" | | 11 | "It came out of her" | | 12 | "She considered that." | | 13 | "She considered the twelve minutes" | | 14 | "He worked one cuff loose," | | 15 | "She stood with her hip" | | 16 | "She picked the mug back" |
| | ratio | 0.415 | |
| 33.17% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 35 | | totalSentences | 41 | | matches | | 0 | "The third deadbolt caught the" | | 1 | "Lucien Moreau stood in the" | | 2 | "His suit hung heavy with" | | 3 | "Both eyes found her at" | | 4 | "She kept the gap at" | | 5 | "Lucien turned his head and" | | 6 | "Ptolemy chose that moment to" | | 7 | "Lucien looked down at him." | | 8 | "The tabby wound once around" | | 9 | "Something loosened in her chest" | | 10 | "She unhooked the chain." | | 11 | "He stepped past her." | | 12 | "Water came off him in" | | 13 | "He looked down at his" | | 14 | "He toed them off, set" | | 15 | "The mug of tea on" | | 16 | "Lucien set the cane against" | | 17 | "The handle rang once against" | | 18 | "She knew what sat inside" | | 19 | "She set the mug down" |
| | ratio | 0.854 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 41 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 21 | | technicalSentenceCount | 1 | | matches | | 0 | "She stood with her hip against the desk and her arms crossed and her jumper sleeve damp from the sill, and she did not say come here, and she did not say get ou…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 11 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 45 | | tagDensity | 0.244 | | leniency | 0.489 | | rawRatio | 0 | | effectiveRatio | 0 | |