| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 81.29% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1603 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | 0 | "softly" | | 1 | "lightly" | | 2 | "really" | | 3 | "slightly" | | 4 | "perfectly" | | 5 | "utterly" |
| |
| 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) | |
| 34.50% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1603 | | totalAiIsms | 21 | | found | | | highlights | | 0 | "unravel" | | 1 | "silence" | | 2 | "flicked" | | 3 | "chill" | | 4 | "weight" | | 5 | "sanctuary" | | 6 | "pulse" | | 7 | "absolutely" | | 8 | "footsteps" | | 9 | "tension" | | 10 | "tracing" | | 11 | "familiar" | | 12 | "traced" |
| |
| 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 | 167 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 4 | | hedgeCount | 1 | | narrationSentences | 167 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 167 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 39 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1603 | | ratio | 0 | | matches | (empty) | |
| 0.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 7 | | matches | | 0 | "Rory, he said." | | 1 | "Six months and four days, he corrected softly." | | 2 | "You hurt me, she said finally." | | 3 | "Ask now, she whispered." | | 4 | "Stay, he murmured." | | 5 | "I am not going anywhere, she said." | | 6 | "Next time, he murmured against her pulse, I chase you." |
| |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 56 | | wordCount | 1603 | | uniqueNames | 21 | | maxNameDensity | 0.69 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "You" | | discoveredNames | | Moreau | 1 | | Marseille | 1 | | Lucien | 11 | | London | 2 | | Eva | 3 | | Oxfords | 1 | | Rory | 11 | | Edinburgh | 1 | | Brick | 2 | | Lane | 2 | | Tuesday | 1 | | Evan | 1 | | Wardour | 1 | | Street | 1 | | French | 1 | | Avaros | 1 | | Docks | 1 | | Thames | 1 | | Silas | 1 | | You | 9 | | Ptolemy | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Lucien" | | 2 | "Eva" | | 3 | "Rory" | | 4 | "Evan" | | 5 | "Silas" | | 6 | "You" | | 7 | "Ptolemy" |
| | places | | 0 | "Marseille" | | 1 | "London" | | 2 | "Edinburgh" | | 3 | "Brick" | | 4 | "Lane" | | 5 | "Wardour" | | 6 | "Street" | | 7 | "French" | | 8 | "Docks" | | 9 | "Thames" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 80.56% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 108 | | glossingSentenceCount | 3 | | matches | | 0 | "felt like breathing" | | 1 | "felt like pulling glass from her chest" | | 2 | "as if memorizing the shape of her all over again" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1603 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 167 | | matches | | 0 | "hated that he" | | 1 | "Hated that her" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 41 | | mean | 39.1 | | std | 27.91 | | cv | 0.714 | | sampleLengths | | 0 | 44 | | 1 | 5 | | 2 | 87 | | 3 | 26 | | 4 | 53 | | 5 | 19 | | 6 | 3 | | 7 | 20 | | 8 | 95 | | 9 | 16 | | 10 | 58 | | 11 | 34 | | 12 | 37 | | 13 | 26 | | 14 | 34 | | 15 | 21 | | 16 | 107 | | 17 | 64 | | 18 | 8 | | 19 | 29 | | 20 | 10 | | 21 | 59 | | 22 | 92 | | 23 | 16 | | 24 | 67 | | 25 | 2 | | 26 | 48 | | 27 | 42 | | 28 | 36 | | 29 | 60 | | 30 | 55 | | 31 | 4 | | 32 | 48 | | 33 | 29 | | 34 | 81 | | 35 | 31 | | 36 | 7 | | 37 | 80 | | 38 | 28 | | 39 | 10 | | 40 | 12 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 167 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 284 | | matches | | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 167 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1609 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 62 | | adverbRatio | 0.03853325046612803 | | lyAdverbCount | 19 | | lyAdverbRatio | 0.011808576755748913 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 167 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 167 | | mean | 9.6 | | std | 7.22 | | cv | 0.752 | | sampleLengths | | 0 | 12 | | 1 | 32 | | 2 | 5 | | 3 | 21 | | 4 | 10 | | 5 | 18 | | 6 | 15 | | 7 | 20 | | 8 | 3 | | 9 | 3 | | 10 | 19 | | 11 | 4 | | 12 | 6 | | 13 | 12 | | 14 | 20 | | 15 | 6 | | 16 | 3 | | 17 | 6 | | 18 | 8 | | 19 | 10 | | 20 | 1 | | 21 | 3 | | 22 | 2 | | 23 | 16 | | 24 | 2 | | 25 | 3 | | 26 | 4 | | 27 | 27 | | 28 | 5 | | 29 | 12 | | 30 | 8 | | 31 | 12 | | 32 | 24 | | 33 | 10 | | 34 | 6 | | 35 | 4 | | 36 | 5 | | 37 | 26 | | 38 | 17 | | 39 | 6 | | 40 | 7 | | 41 | 15 | | 42 | 9 | | 43 | 3 | | 44 | 7 | | 45 | 6 | | 46 | 18 | | 47 | 6 | | 48 | 3 | | 49 | 5 |
| |
| 47.50% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 19 | | diversityRatio | 0.3532934131736527 | | totalSentences | 167 | | uniqueOpeners | 59 | |
| 21.65% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 154 | | matches | | 0 | "Instead, her fingers tightened on" |
| | ratio | 0.006 | |
| 45.97% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 67 | | totalSentences | 154 | | matches | | 0 | "He wore a charcoal suit" | | 1 | "He smelled of rain, expensive" | | 2 | "His voice was low, edged" | | 3 | "She should have shut the" | | 4 | "She should have thrown the" | | 5 | "You have got some nerve," | | 6 | "I had reasons." | | 7 | "His gaze dropped to her" | | 8 | "She stepped aside." | | 9 | "It was a mistake." | | 10 | "She knew it the moment" | | 11 | "She is in Edinburgh." | | 12 | "I am watching the place." | | 13 | "I thought fixers kept office" | | 14 | "I do, when the work" | | 15 | "He rested his weight lightly" | | 16 | "She kept her face blank," | | 17 | "He took a step forward." | | 18 | "We never had an arrangement," | | 19 | "We had a collision." |
| | ratio | 0.435 | |
| 83.38% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 116 | | totalSentences | 154 | | matches | | 0 | "The third deadbolt clicked back" | | 1 | "Rory pulled the door open," | | 2 | "Lucien Moreau filled the frame." | | 3 | "He wore a charcoal suit" | | 4 | "Platinum hair was slicked back" | | 5 | "The ivory head of his" | | 6 | "He smelled of rain, expensive" | | 7 | "Rory, he said." | | 8 | "His voice was low, edged" | | 9 | "She should have shut the" | | 10 | "She should have thrown the" | | 11 | "You have got some nerve," | | 12 | "I had reasons." | | 13 | "His gaze dropped to her" | | 14 | "She stepped aside." | | 15 | "It was a mistake." | | 16 | "She knew it the moment" | | 17 | "The flat swallowed him whole." | | 18 | "Stacks of books and unrolled" | | 19 | "The air hung thick with" |
| | ratio | 0.753 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 5 | | totalSentences | 154 | | matches | | 0 | "Because I spent half a" | | 1 | "Because I miss you." | | 2 | "Because the flat above Silas's" | | 3 | "Because I catch myself listening" | | 4 | "Because when you left, you" |
| | ratio | 0.032 | |
| 89.55% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 67 | | technicalSentenceCount | 5 | | matches | | 0 | "Rory crossed her arms, her straight black hair brushing her shoulders as she leaned against a bookshelf that groaned under the weight of centuries-old demonolog…" | | 1 | "The way she had wanted him to chase her, to grab her wrist, to say anything that would make staying feel less like surrender." | | 2 | "His thumbs brushed her cheekbones, tracing the line of her jaw with a reverence that made her knees weak." | | 3 | "She saw the man who had memorized the way she took her tea, who had bandaged her wrist without asking questions, who had let her go because he thought it was me…" | | 4 | "She reached up, her fingers finding the lapel of his coat, then sliding up to rest against his chest." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |