| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 3 | | adverbTags | | 0 | "he agreed quietly [quietly]" | | 1 | "she said finally [finally]" | | 2 | "he said instead [instead]" |
| | dialogueSentences | 60 | | tagDensity | 0.317 | | leniency | 0.633 | | rawRatio | 0.158 | | effectiveRatio | 0.1 | |
| 91.04% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1675 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "suddenly" | | 1 | "completely" | | 2 | "softly" |
| |
| 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.10% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1675 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "pulse" | | 1 | "gleaming" | | 2 | "silence" | | 3 | "weight" | | 4 | "flicker" |
| |
| 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 | 88 | | matches | (empty) | |
| 77.92% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 3 | | narrationSentences | 88 | | filterMatches | | | hedgeMatches | | 0 | "started to" | | 1 | "began to" | | 2 | "seemed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 124 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 61 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1688 | | ratio | 0 | | matches | (empty) | |
| 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 | 31 | | wordCount | 1067 | | uniqueNames | 13 | | maxNameDensity | 0.56 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Eva | 4 | | Prague | 1 | | March | 1 | | Moreau | 1 | | Ptolemy | 4 | | Lucien | 6 | | Cardiff | 1 | | London | 1 | | Bengali | 1 | | Yu-Fei | 1 | | Three | 4 | | Rory | 3 | | One | 3 |
| | persons | | 0 | "Eva" | | 1 | "Moreau" | | 2 | "Ptolemy" | | 3 | "Lucien" | | 4 | "Yu-Fei" | | 5 | "Rory" | | 6 | "One" |
| | places | | 0 | "Prague" | | 1 | "Cardiff" | | 2 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 54 | | 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 | 1688 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 124 | | matches | | 0 | "chose that moment" | | 1 | "let that land" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 59 | | mean | 28.61 | | std | 24.54 | | cv | 0.858 | | sampleLengths | | 0 | 45 | | 1 | 33 | | 2 | 59 | | 3 | 32 | | 4 | 26 | | 5 | 1 | | 6 | 5 | | 7 | 15 | | 8 | 31 | | 9 | 22 | | 10 | 26 | | 11 | 7 | | 12 | 23 | | 13 | 9 | | 14 | 59 | | 15 | 5 | | 16 | 41 | | 17 | 3 | | 18 | 5 | | 19 | 74 | | 20 | 7 | | 21 | 53 | | 22 | 11 | | 23 | 78 | | 24 | 65 | | 25 | 42 | | 26 | 9 | | 27 | 46 | | 28 | 77 | | 29 | 19 | | 30 | 54 | | 31 | 30 | | 32 | 31 | | 33 | 3 | | 34 | 2 | | 35 | 10 | | 36 | 60 | | 37 | 56 | | 38 | 2 | | 39 | 4 | | 40 | 1 | | 41 | 29 | | 42 | 61 | | 43 | 101 | | 44 | 18 | | 45 | 6 | | 46 | 3 | | 47 | 18 | | 48 | 11 | | 49 | 68 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 88 | | matches | | |
| 19.82% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 185 | | matches | | 0 | "was doing" | | 1 | "was weeping" | | 2 | "was driving" | | 3 | "was purring" | | 4 | "were burning" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 1 | | flaggedSentences | 11 | | totalSentences | 124 | | ratio | 0.089 | | matches | | 0 | "Not Eva — Eva was in Prague and had keys besides." | | 1 | "Information was currency, and cool heads collected it — even when their pulse was doing something distinctly uncool against the backs of their ribs." | | 2 | "His cane didn't move to stop it — he was too practiced for that — but his voice was." | | 3 | "He stood in the middle of Eva's flat and turned a slow half-circle, taking in the paper landscape — books buttressing the sofa, scrolls wedged vertical between the bookcase and the radiator, notes pinned to the curtains." | | 4 | "He watched her instead, and she made herself meet it — the amber eye catching the lamp, the black one drinking the light whole." | | 5 | "\"No.\" The word had edges; he'd carried it a while." | | 6 | "She almost laughed — would have, if her throat had allowed it." | | 7 | "\"Lucien.\" She used the flat tone she'd learned from watching him bargain, and she saw it land — the flicker in the amber eye, recognition and something rawer beneath." | | 8 | "\"Your repairs come with ledgers of their own. Not this time.\" She stepped closer — close enough now to catch the cold-rain smell of him under the cologne, close enough that she had to angle her chin and he had to lower his gaze and the whole room narrowed to the space between two people pretending it was about logistics." | | 9 | "Something moved through his face — there and gone, like a fish under ice." | | 10 | "He pressed the cane into her hands — the ivory warm where he'd gripped it, heavier than it looked, something thin and patient inside the shaft." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1061 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 37 | | adverbRatio | 0.034872761545711596 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.008482563619227144 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 124 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 124 | | mean | 13.61 | | std | 12.73 | | cv | 0.935 | | sampleLengths | | 0 | 28 | | 1 | 2 | | 2 | 2 | | 3 | 2 | | 4 | 3 | | 5 | 8 | | 6 | 5 | | 7 | 11 | | 8 | 17 | | 9 | 11 | | 10 | 27 | | 11 | 10 | | 12 | 4 | | 13 | 7 | | 14 | 5 | | 15 | 1 | | 16 | 1 | | 17 | 1 | | 18 | 24 | | 19 | 26 | | 20 | 1 | | 21 | 5 | | 22 | 8 | | 23 | 7 | | 24 | 12 | | 25 | 19 | | 26 | 22 | | 27 | 9 | | 28 | 2 | | 29 | 15 | | 30 | 4 | | 31 | 3 | | 32 | 9 | | 33 | 14 | | 34 | 4 | | 35 | 5 | | 36 | 22 | | 37 | 24 | | 38 | 13 | | 39 | 5 | | 40 | 41 | | 41 | 3 | | 42 | 5 | | 43 | 6 | | 44 | 31 | | 45 | 37 | | 46 | 7 | | 47 | 37 | | 48 | 6 | | 49 | 10 |
| |
| 68.82% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.4274193548387097 | | totalSentences | 124 | | uniqueOpeners | 53 | |
| 93.90% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 71 | | matches | | 0 | "Somewhere below, a pan clattered," | | 1 | "Only after the third did" |
| | ratio | 0.028 | |
| 17.18% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 36 | | totalSentences | 71 | | matches | | 0 | "She crossed the room and" | | 1 | "She didn't need to see" | | 2 | "She undid the deadbolts anyway." | | 3 | "She started to close the" | | 4 | "His cane didn't move to" | | 5 | "She stopped the door an" | | 6 | "he agreed quietly" | | 7 | "She should have shut the" | | 8 | "She had run from Cardiff" | | 9 | "She stepped back and let" | | 10 | "He stood in the middle" | | 11 | "She folded her arms" | | 12 | "He did not sit." | | 13 | "He watched her instead, and" | | 14 | "She kept her voice level" | | 15 | "His father's realm." | | 16 | "She let that land, then" | | 17 | "His gloved hand shifted on" | | 18 | "She had built a whole" | | 19 | "she said finally" |
| | ratio | 0.507 | |
| 37.46% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 60 | | totalSentences | 71 | | matches | | 0 | "The knock came at nine," | | 1 | "A knock that knew it" | | 2 | "Rory set down Eva's notes." | | 3 | "Ptolemy lifted his head from" | | 4 | "She crossed the room and" | | 5 | "The fish-eyed landing, the bulb" | | 6 | "She didn't need to see" | | 7 | "The knock had already told" | | 8 | "She undid the deadbolts anyway." | | 9 | "Information was currency, and cool" | | 10 | "Lucien Moreau filled the doorframe," | | 11 | "She started to close the" | | 12 | "His cane didn't move to" | | 13 | "She stopped the door an" | | 14 | "The amber eye warmed." | | 15 | "The word came out lower" | | 16 | "he agreed quietly" | | 17 | "Ptolemy chose that moment to" | | 18 | "Lucien caught him one-handed against" | | 19 | "The animal began to purr" |
| | ratio | 0.845 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 71 | | matches | (empty) | | ratio | 0 | |
| 98.21% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 32 | | technicalSentenceCount | 2 | | matches | | 0 | "The fish-eyed landing, the bulb that had been dead since March, and beneath it a man in a charcoal suit, platinum hair slicked back like a signature." | | 1 | "Lucien Moreau filled the doorframe, dry in a city that was weeping on everyone else, the ivory handle of his cane gleaming at his gloved fist." |
| |
| 98.68% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 1 | | matches | | 0 | "she understood, a confession of ruin" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 1 | | fancyTags | | 0 | "he agreed quietly (agree)" |
| | dialogueSentences | 60 | | tagDensity | 0.167 | | leniency | 0.333 | | rawRatio | 0.1 | | effectiveRatio | 0.033 | |