| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 26 | | adverbTagCount | 2 | | adverbTags | | 0 | "His French accent curled around [around]" | | 1 | "She pulled back [back]" |
| | dialogueSentences | 46 | | tagDensity | 0.565 | | leniency | 1 | | rawRatio | 0.077 | | effectiveRatio | 0.077 | |
| 97.66% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2141 | | 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) | |
| 55.63% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2141 | | totalAiIsms | 19 | | found | | | highlights | | 0 | "pumping" | | 1 | "familiar" | | 2 | "reminder" | | 3 | "stomach" | | 4 | "echoed" | | 5 | "pulse" | | 6 | "measured" | | 7 | "whisper" | | 8 | "perfect" | | 9 | "vibrated" | | 10 | "traced" | | 11 | "tension" | | 12 | "flickered" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 2 | | narrationSentences | 142 | | matches | | 0 | "g with fury" | | 1 | "d with regret" |
| |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 142 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 164 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 2134 | | ratio | 0 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 29 | | unquotedAttributions | 0 | | matches | (empty) | |
| 96.34% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 59 | | wordCount | 1584 | | uniqueNames | 15 | | maxNameDensity | 1.07 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Golden | 1 | | Empress | 1 | | Eva | 3 | | Moreau | 1 | | French | 1 | | Heat | 2 | | Rory | 17 | | Lucien | 16 | | One | 1 | | Frenchman | 1 | | Ptolemy | 7 | | Brick | 2 | | Lane | 2 | | Aurora | 1 | | Rain | 3 |
| | persons | | 0 | "Eva" | | 1 | "Moreau" | | 2 | "Heat" | | 3 | "Rory" | | 4 | "Lucien" | | 5 | "Frenchman" | | 6 | "Ptolemy" | | 7 | "Rain" |
| | places | | 0 | "Golden" | | 1 | "One" | | 2 | "Brick" | | 3 | "Lane" |
| | globalScore | 0.963 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 112 | | glossingSentenceCount | 2 | | matches | | 0 | "tasted like spice and smoke, like every l" | | 1 | "felt like both apology and promise" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2134 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 164 | | matches | | 0 | "seen that face" | | 1 | "chose that moment" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 54 | | mean | 39.52 | | std | 19.9 | | cv | 0.504 | | sampleLengths | | 0 | 77 | | 1 | 58 | | 2 | 7 | | 3 | 49 | | 4 | 11 | | 5 | 5 | | 6 | 29 | | 7 | 42 | | 8 | 52 | | 9 | 67 | | 10 | 25 | | 11 | 54 | | 12 | 13 | | 13 | 45 | | 14 | 41 | | 15 | 39 | | 16 | 48 | | 17 | 40 | | 18 | 76 | | 19 | 66 | | 20 | 25 | | 21 | 51 | | 22 | 16 | | 23 | 56 | | 24 | 32 | | 25 | 70 | | 26 | 20 | | 27 | 13 | | 28 | 68 | | 29 | 32 | | 30 | 62 | | 31 | 58 | | 32 | 46 | | 33 | 33 | | 34 | 3 | | 35 | 67 | | 36 | 42 | | 37 | 18 | | 38 | 39 | | 39 | 37 | | 40 | 23 | | 41 | 36 | | 42 | 39 | | 43 | 53 | | 44 | 12 | | 45 | 8 | | 46 | 64 | | 47 | 45 | | 48 | 32 | | 49 | 23 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 142 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 275 | | matches | (empty) | |
| 73.17% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 164 | | ratio | 0.024 | | matches | | 0 | "That mismatched gaze—one amber, one black—locked onto her immediately." | | 1 | "He closed the remaining distance in two strides, close enough that she caught the scent of his cologne—sandalwood and something sharper, like smoldering embers." | | 2 | "And Rory kept her grip on the man she’d tried—and failed—to forget." | | 3 | "Lucien whispered her name—her real name, Aurora—like a prayer and a curse all at once." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 720 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 21 | | adverbRatio | 0.029166666666666667 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.009722222222222222 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 164 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 164 | | mean | 13.01 | | std | 8.65 | | cv | 0.665 | | sampleLengths | | 0 | 20 | | 1 | 28 | | 2 | 11 | | 3 | 18 | | 4 | 9 | | 5 | 14 | | 6 | 7 | | 7 | 28 | | 8 | 7 | | 9 | 25 | | 10 | 12 | | 11 | 9 | | 12 | 3 | | 13 | 3 | | 14 | 8 | | 15 | 5 | | 16 | 12 | | 17 | 6 | | 18 | 11 | | 19 | 5 | | 20 | 12 | | 21 | 4 | | 22 | 8 | | 23 | 13 | | 24 | 21 | | 25 | 31 | | 26 | 21 | | 27 | 7 | | 28 | 2 | | 29 | 37 | | 30 | 4 | | 31 | 21 | | 32 | 20 | | 33 | 3 | | 34 | 17 | | 35 | 14 | | 36 | 12 | | 37 | 1 | | 38 | 22 | | 39 | 23 | | 40 | 3 | | 41 | 7 | | 42 | 2 | | 43 | 19 | | 44 | 10 | | 45 | 16 | | 46 | 23 | | 47 | 10 | | 48 | 8 | | 49 | 30 |
| |
| 44.51% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.2865853658536585 | | totalSentences | 164 | | uniqueOpeners | 47 | |
| 49.75% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 134 | | matches | | 0 | "Nowhere left to run in" | | 1 | "Somewhere downstairs a customer laughed" |
| | ratio | 0.015 | |
| 70.75% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 50 | | totalSentences | 134 | | matches | | 0 | "Her shoulder-length black hair stuck" | | 1 | "She finally slid the key" | | 2 | "She pushed the door with" | | 3 | "His platinum hair gleamed under" | | 4 | "she said, voice flat" | | 5 | "His French accent curled around" | | 6 | "He inclined his head a" | | 7 | "She kicked the door shut" | | 8 | "Her bright blue eyes never" | | 9 | "She crossed her arms." | | 10 | "His jaw flexed." | | 11 | "He took one measured step" | | 12 | "His voice dropped, the way" | | 13 | "She hated how easily he" | | 14 | "she said, words sharp enough" | | 15 | "She laughed, bitter and low." | | 16 | "She cut herself off, cheeks" | | 17 | "His eyes darkened, the black" | | 18 | "He closed the remaining distance" | | 19 | "His voice roughened" |
| | ratio | 0.373 | |
| 1.04% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 123 | | totalSentences | 134 | | matches | | 0 | "Rory balanced a takeaway bag" | | 1 | "Rain drummed against the narrow" | | 2 | "Her shoulder-length black hair stuck" | | 3 | "The small crescent scar on" | | 4 | "She finally slid the key" | | 5 | "The second and third clicked" | | 6 | "Ptolemy’s muffled meow greeted her" | | 7 | "She pushed the door with" | | 8 | "The door swung wider than" | | 9 | "Lucien Moreau stood in the" | | 10 | "His platinum hair gleamed under" | | 11 | "That mismatched gaze—one amber, one" | | 12 | "The air thickened." | | 13 | "Rory’s stomach dropped." | | 14 | "The takeaway bag crinkled in" | | 15 | "she said, voice flat" | | 16 | "His French accent curled around" | | 17 | "He inclined his head a" | | 18 | "She kicked the door shut" | | 19 | "The three deadbolts rattled." |
| | ratio | 0.918 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 134 | | matches | (empty) | | ratio | 0 | |
| 59.52% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 60 | | technicalSentenceCount | 7 | | matches | | 0 | "Rain drummed against the narrow staircase that led to Eva’s flat, the curry house below pumping out clouds of cardamom and chilli that clung to her damp jacket." | | 1 | "The attraction that had always crackled between them surged up, hot and immediate, tangled with six months of hurt." | | 2 | "Ptolemy chose that moment to dart between their legs, brushing against Lucien’s trousers and leaving a trail of orange fur." | | 3 | "Rory nipped at his bottom lip, drawing another growl from him that vibrated through her chest." | | 4 | "Right now the only thing that mattered was the way Lucien’s heartbeat matched her own frantic rhythm, the way his mouth found hers again like they’d never been …" | | 5 | "The mismatched eyes that had haunted her dreams for six months stared up at her with open hunger and something softer underneath." | | 6 | "And in the cramped space above the curry house, two people who had parted on the worst of terms began, carefully and fiercely, to find their way back to each ot…" |
| |
| 9.62% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 26 | | uselessAdditionCount | 6 | | matches | | 0 | "she said, voice flat" | | 1 | "He took, cane tapping once against the worn floorboards" | | 2 | "She cut, cheeks burning" | | 3 | "she said, voice trembling with fury and want" | | 4 | "he admitted, lips brushing her temple" | | 5 | "Lucien agreed, voice rough with need" |
| |
| 19.57% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 11 | | fancyCount | 6 | | fancyTags | | 0 | "she whispered (whisper)" | | 1 | "he murmured (murmur)" | | 2 | "he admitted (admit)" | | 3 | "she murmured (murmur)" | | 4 | "she warned (warn)" | | 5 | "Lucien agreed (agree)" |
| | dialogueSentences | 46 | | tagDensity | 0.239 | | leniency | 0.478 | | rawRatio | 0.545 | | effectiveRatio | 0.261 | |