| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 56 | | tagDensity | 0.393 | | leniency | 0.786 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 96.65% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1494 | | 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) | |
| 79.92% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1494 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "measured" | | 1 | "silence" | | 2 | "traced" | | 3 | "unreadable" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "room fell silent" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 91 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 91 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 125 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 42 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 11 | | totalWords | 1512 | | ratio | 0.007 | | matches | | 0 | "Avaros, second ring, binding language unconfirmed" | | 1 | "Second ring, binding language unconfirmed" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 20 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 34 | | wordCount | 1112 | | uniqueNames | 11 | | maxNameDensity | 0.99 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 11 | | Eva | 4 | | Moreau | 1 | | November | 1 | | Ptolemy | 5 | | Brick | 1 | | Lane | 1 | | Cardiff | 1 | | London | 1 | | Evan | 1 | | Lucien | 7 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Ptolemy" | | 4 | "Evan" | | 5 | "Lucien" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Cardiff" | | 3 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 54 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 67.72% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.323 | | wordCount | 1512 | | matches | | 0 | "not softened, exactly, but loosened, the way a knot gives" | | 1 | "not a smile, but the memory of one" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 125 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 69 | | mean | 21.91 | | std | 18.24 | | cv | 0.832 | | sampleLengths | | 0 | 53 | | 1 | 5 | | 2 | 8 | | 3 | 64 | | 4 | 12 | | 5 | 29 | | 6 | 16 | | 7 | 58 | | 8 | 1 | | 9 | 7 | | 10 | 6 | | 11 | 47 | | 12 | 19 | | 13 | 7 | | 14 | 52 | | 15 | 32 | | 16 | 4 | | 17 | 5 | | 18 | 32 | | 19 | 3 | | 20 | 22 | | 21 | 47 | | 22 | 6 | | 23 | 54 | | 24 | 32 | | 25 | 6 | | 26 | 17 | | 27 | 4 | | 28 | 31 | | 29 | 9 | | 30 | 28 | | 31 | 25 | | 32 | 7 | | 33 | 1 | | 34 | 8 | | 35 | 38 | | 36 | 32 | | 37 | 6 | | 38 | 34 | | 39 | 55 | | 40 | 43 | | 41 | 46 | | 42 | 27 | | 43 | 51 | | 44 | 14 | | 45 | 38 | | 46 | 3 | | 47 | 23 | | 48 | 5 | | 49 | 19 |
| |
| 97.55% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 91 | | matches | | 0 | "was slicked" | | 1 | "was gone" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 181 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 18 | | semicolonCount | 0 | | flaggedSentences | 12 | | totalSentences | 125 | | ratio | 0.096 | | matches | | 0 | "She caught the top sheet, read the same line she'd read six times that afternoon — *Avaros, second ring, binding language unconfirmed* — and dropped it back." | | 1 | "His amber eye moved past her shoulder, cataloguing the flat — the books stacked in knee-high columns along the skirting, the open laptop casting blue light over Eva's desk, the open container of lo mein on the windowsill." | | 2 | "He moved through the clutter without touching anything, which took a kind of calculation she recognized — the same way he'd moved through the back rooms of clubs, through negotiations, through her life eight months ago, always one step short of contact." | | 3 | "He rested his hands on the cane between his knees, fingers laced, and the picture he made — the tailored wool, the heterochromatic stare, the way the lamplight carved his cheekbones — was almost aggressively composed." | | 4 | "He turned the cane slightly, the ivory grip catching light, and something in his expression shifted — not softened, exactly, but loosened, the way a knot gives when you stop pulling the wrong direction." | | 5 | "Not close enough to touch — he never came close enough — but close enough that she caught the cedar and tobacco under the rain." | | 6 | "She looked at his mouth, then away, at the wall of books behind him, at the photograph Eva had pinned to the corkboard — the two of them at seventeen, squinting into the Cardiff sun, before London, before Evan, before any of this." | | 7 | "The corner of his mouth moved — not a smile, but the memory of one." | | 8 | "Then he crossed the space, took the chopsticks from her hand — his fingers grazed hers and neither of them pulled away — and sat down." | | 9 | "Rory picked up her own chopsticks and watched him eat — watched the precise way he lifted noodles, the slight furrow between his brows, the amber eye catching lamplight while the black one stayed flat and unreadable." | | 10 | "Something crossed his face — quick, like a fish under dark water — and was gone." | | 11 | "He met her eyes — amber and black, side by side — and nodded once." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1095 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 30 | | adverbRatio | 0.0273972602739726 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.0036529680365296802 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 125 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 125 | | mean | 12.1 | | std | 10.14 | | cv | 0.839 | | sampleLengths | | 0 | 31 | | 1 | 22 | | 2 | 5 | | 3 | 8 | | 4 | 31 | | 5 | 6 | | 6 | 27 | | 7 | 12 | | 8 | 11 | | 9 | 3 | | 10 | 1 | | 11 | 14 | | 12 | 16 | | 13 | 19 | | 14 | 16 | | 15 | 23 | | 16 | 1 | | 17 | 4 | | 18 | 3 | | 19 | 6 | | 20 | 3 | | 21 | 38 | | 22 | 6 | | 23 | 19 | | 24 | 3 | | 25 | 2 | | 26 | 2 | | 27 | 10 | | 28 | 42 | | 29 | 6 | | 30 | 13 | | 31 | 13 | | 32 | 4 | | 33 | 5 | | 34 | 6 | | 35 | 26 | | 36 | 3 | | 37 | 15 | | 38 | 7 | | 39 | 7 | | 40 | 14 | | 41 | 26 | | 42 | 6 | | 43 | 18 | | 44 | 36 | | 45 | 6 | | 46 | 26 | | 47 | 6 | | 48 | 11 | | 49 | 6 |
| |
| 57.07% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.376 | | totalSentences | 125 | | uniqueOpeners | 47 | |
| 43.86% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 76 | | matches | | 0 | "Then he crossed the space," |
| | ratio | 0.013 | |
| 35.79% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 76 | | matches | | 0 | "she called after him" | | 1 | "He was already halfway up" | | 2 | "She kicked the door shut" | | 3 | "She caught the top sheet," | | 4 | "She wiped her palms on" | | 5 | "His platinum hair was slicked" | | 6 | "He didn't answer." | | 7 | "His amber eye moved past" | | 8 | "His black eye stayed on" | | 9 | "He crossed the threshold and" | | 10 | "He moved through the clutter" | | 11 | "His coat dripped onto Eva's" | | 12 | "She fetched a dish towel" | | 13 | "He caught it, folded it" | | 14 | "She looked at the laptop" | | 15 | "He set his cane against" | | 16 | "He rested his hands on" | | 17 | "He tilted his head" | | 18 | "He said it flat, the" | | 19 | "His amber eye held hers" |
| | ratio | 0.461 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 70 | | totalSentences | 76 | | matches | | 0 | "The three deadbolts gave way" | | 1 | "Ptolemy darted past her ankles" | | 2 | "she called after him" | | 3 | "He was already halfway up" | | 4 | "She kicked the door shut" | | 5 | "A stack of notes slid" | | 6 | "She caught the top sheet," | | 7 | "The knock came through the" | | 8 | "Rory's hand went to the" | | 9 | "She wiped her palms on" | | 10 | "Lucien Moreau filled the narrow" | | 11 | "Water collected at the shoulders" | | 12 | "His platinum hair was slicked" | | 13 | "Nobody called her that." | | 14 | "Nobody but him." | | 15 | "He didn't answer." | | 16 | "His amber eye moved past" | | 17 | "His black eye stayed on" | | 18 | "Rory stepped back." | | 19 | "He crossed the threshold and" |
| | ratio | 0.921 | |
| 65.79% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 76 | | matches | | 0 | "Whoever stood on the other" |
| | ratio | 0.013 | |
| 71.43% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 40 | | technicalSentenceCount | 4 | | matches | | 0 | "The three deadbolts gave way one by one, and Rory pushed the door open with her hip, both hands full of brown paper bags that smelled of cumin and fried onion." | | 1 | "Lucien Moreau filled the narrow doorway in a charcoal suit that hadn't lost a crease despite the November rain." | | 2 | "His amber eye moved past her shoulder, cataloguing the flat — the books stacked in knee-high columns along the skirting, the open laptop casting blue light over…" | | 3 | "He moved through the clutter without touching anything, which took a kind of calculation she recognized — the same way he'd moved through the back rooms of club…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 22 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 1 | | fancyTags | | 0 | "he corrected (correct)" |
| | dialogueSentences | 56 | | tagDensity | 0.161 | | leniency | 0.321 | | rawRatio | 0.111 | | effectiveRatio | 0.036 | |