| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 13 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 107 | | tagDensity | 0.121 | | leniency | 0.243 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 97.05% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1694 | | 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) | |
| 88.19% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1694 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "sense of" | | 1 | "familiar" | | 2 | "warmth" |
| |
| 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 | 105 | | matches | (empty) | |
| 88.44% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 4 | | narrationSentences | 105 | | filterMatches | (empty) | | hedgeMatches | | 0 | "tended to" | | 1 | "seemed to" | | 2 | "began to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 199 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1693 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 37 | | unquotedAttributions | 0 | | matches | (empty) | |
| 28.42% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 45 | | wordCount | 987 | | uniqueNames | 6 | | maxNameDensity | 2.43 | | worstName | "Rory" | | maxWindowNameDensity | 3.5 | | worstWindowName | "Rory" | | discoveredNames | | Lucien | 13 | | Rory | 24 | | Eva | 2 | | Brick | 1 | | Lane | 1 | | Ptolemy | 4 |
| | persons | | 0 | "Lucien" | | 1 | "Rory" | | 2 | "Eva" | | 3 | "Ptolemy" |
| | places | | | globalScore | 0.284 | | windowScore | 0.5 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 69 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.591 | | wordCount | 1693 | | matches | | 0 | "not enough to touch him, but near enough to catch the clean scent of rain" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 199 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 132 | | mean | 12.83 | | std | 13.08 | | cv | 1.02 | | sampleLengths | | 0 | 6 | | 1 | 34 | | 2 | 34 | | 3 | 15 | | 4 | 18 | | 5 | 14 | | 6 | 8 | | 7 | 18 | | 8 | 7 | | 9 | 7 | | 10 | 7 | | 11 | 26 | | 12 | 5 | | 13 | 3 | | 14 | 53 | | 15 | 9 | | 16 | 34 | | 17 | 11 | | 18 | 6 | | 19 | 12 | | 20 | 19 | | 21 | 7 | | 22 | 6 | | 23 | 17 | | 24 | 21 | | 25 | 14 | | 26 | 7 | | 27 | 2 | | 28 | 6 | | 29 | 2 | | 30 | 13 | | 31 | 25 | | 32 | 7 | | 33 | 10 | | 34 | 37 | | 35 | 13 | | 36 | 1 | | 37 | 13 | | 38 | 1 | | 39 | 5 | | 40 | 9 | | 41 | 11 | | 42 | 3 | | 43 | 4 | | 44 | 1 | | 45 | 27 | | 46 | 12 | | 47 | 2 | | 48 | 7 | | 49 | 2 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 105 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 184 | | matches | (empty) | |
| 99.78% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 1 | | semicolonCount | 2 | | flaggedSentences | 3 | | totalSentences | 199 | | ratio | 0.015 | | matches | | 0 | "The contact lasted less than a second; Rory felt it in her wrist all the same, just above the small crescent scar." | | 1 | "His amber eye held hers; the other, black and glossy, seemed to catch no light at all." | | 2 | "She wanted to be furious without remembering the pressure of his hand at her waist, the pause he’d given her before his mouth touched hers, the way he had looked at her afterwards—as if he’d already begun saying goodbye." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 991 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 30 | | adverbRatio | 0.030272452068617558 | | lyAdverbCount | 1 | | lyAdverbRatio | 0.0010090817356205853 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 199 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 199 | | mean | 8.51 | | std | 6.56 | | cv | 0.771 | | sampleLengths | | 0 | 6 | | 1 | 8 | | 2 | 13 | | 3 | 13 | | 4 | 8 | | 5 | 9 | | 6 | 17 | | 7 | 15 | | 8 | 9 | | 9 | 9 | | 10 | 14 | | 11 | 8 | | 12 | 13 | | 13 | 5 | | 14 | 7 | | 15 | 7 | | 16 | 7 | | 17 | 4 | | 18 | 14 | | 19 | 8 | | 20 | 5 | | 21 | 3 | | 22 | 2 | | 23 | 27 | | 24 | 14 | | 25 | 10 | | 26 | 9 | | 27 | 5 | | 28 | 7 | | 29 | 22 | | 30 | 11 | | 31 | 6 | | 32 | 12 | | 33 | 11 | | 34 | 8 | | 35 | 7 | | 36 | 6 | | 37 | 17 | | 38 | 5 | | 39 | 16 | | 40 | 7 | | 41 | 7 | | 42 | 7 | | 43 | 2 | | 44 | 6 | | 45 | 2 | | 46 | 13 | | 47 | 17 | | 48 | 8 | | 49 | 7 |
| |
| 45.98% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.19095477386934673 | | totalSentences | 199 | | uniqueOpeners | 38 | |
| 72.46% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 92 | | matches | | 0 | "Instead, she stepped aside by" | | 1 | "Instead she watched his hands." |
| | ratio | 0.022 | |
| 72.17% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 34 | | totalSentences | 92 | | matches | | 0 | "His platinum hair still held" | | 1 | "She had intended to take" | | 2 | "His gaze moved across the" | | 3 | "Their fingers brushed when she" | | 4 | "His face remained composed, but" | | 5 | "His amber eye held hers;" | | 6 | "He drew a breath through" | | 7 | "She kept her back to" | | 8 | "He looked tired now, or" | | 9 | "She folded her arms." | | 10 | "His gaze dropped to her" | | 11 | "She wanted to be furious" | | 12 | "She found none." | | 13 | "It did mean she had" | | 14 | "She set the mug on" | | 15 | "It changed his expression." | | 16 | "She hated that she could" | | 17 | "She hated the part of" | | 18 | "His mouth softened." | | 19 | "He held still." |
| | ratio | 0.37 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 86 | | totalSentences | 92 | | matches | | 0 | "The door opened against Lucien’s" | | 1 | "Rory stopped with one hand" | | 2 | "The other held a chipped" | | 3 | "Lucien lowered his ivory-handled cane" | | 4 | "Rain shone on the shoulders" | | 5 | "His platinum hair still held" | | 6 | "Rory glanced at the book" | | 7 | "Ptolemy wound around Rory’s ankles" | | 8 | "Lucien looked down at him." | | 9 | "Ptolemy sniffed Lucien’s shoe, then" | | 10 | "Rory unclipped the chain." | | 11 | "She had intended to take" | | 12 | "His gaze moved across the" | | 13 | "The curry house below sent" | | 14 | "Eva’s flat always seemed to" | | 15 | "Rory shut the door and" | | 16 | "Lucien held out the book." | | 17 | "Their fingers brushed when she" | | 18 | "The contact lasted less than" | | 19 | "His face remained composed, but" |
| | ratio | 0.935 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 92 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 40 | | technicalSentenceCount | 2 | | matches | | 0 | "His gaze moved across the narrow hall, the stacked books, the scrolls spread over the kitchen table, and the pencilled notes that had colonised every clear surf…" | | 1 | "She wanted to be furious without remembering the pressure of his hand at her waist, the pause he’d given her before his mouth touched hers, the way he had looke…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 13 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 11 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 107 | | tagDensity | 0.103 | | leniency | 0.206 | | rawRatio | 0 | | effectiveRatio | 0 | |