| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 49 | | tagDensity | 0.347 | | leniency | 0.694 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 91.45% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1754 | | totalAiIsmAdverbs | 3 | | 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) | |
| 77.19% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1754 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "pulse" | | 1 | "perfect" | | 2 | "flickered" | | 3 | "stomach" | | 4 | "flicked" | | 5 | "traced" | | 6 | "intensity" | | 7 | "could feel" |
| |
| 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 | 127 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 127 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 157 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 52 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1752 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 15 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 35 | | wordCount | 1335 | | uniqueNames | 17 | | maxNameDensity | 0.67 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Brick | 2 | | Lane | 2 | | Moreau | 1 | | East | 1 | | End | 1 | | Marseille | 1 | | London | 1 | | Eva | 3 | | English | 1 | | French | 1 | | Rory | 9 | | Avaros | 1 | | Five-eleven | 1 | | Evan | 1 | | Limehouse | 2 | | Lucien | 4 | | Ptolemy | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Eva" | | 2 | "Rory" | | 3 | "Evan" | | 4 | "Lucien" | | 5 | "Ptolemy" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "East" | | 3 | "End" | | 4 | "Marseille" | | 5 | "London" | | 6 | "Limehouse" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 82 | | glossingSentenceCount | 1 | | matches | | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1752 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 157 | | matches | | 0 | "carried that Marseille" | | 1 | "had that night" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 59 | | mean | 29.69 | | std | 22.38 | | cv | 0.754 | | sampleLengths | | 0 | 30 | | 1 | 59 | | 2 | 26 | | 3 | 13 | | 4 | 7 | | 5 | 39 | | 6 | 56 | | 7 | 52 | | 8 | 42 | | 9 | 27 | | 10 | 41 | | 11 | 2 | | 12 | 29 | | 13 | 39 | | 14 | 51 | | 15 | 28 | | 16 | 44 | | 17 | 23 | | 18 | 68 | | 19 | 36 | | 20 | 20 | | 21 | 36 | | 22 | 68 | | 23 | 28 | | 24 | 6 | | 25 | 2 | | 26 | 7 | | 27 | 39 | | 28 | 32 | | 29 | 2 | | 30 | 27 | | 31 | 54 | | 32 | 30 | | 33 | 19 | | 34 | 56 | | 35 | 1 | | 36 | 1 | | 37 | 78 | | 38 | 5 | | 39 | 2 | | 40 | 3 | | 41 | 26 | | 42 | 83 | | 43 | 73 | | 44 | 28 | | 45 | 7 | | 46 | 1 | | 47 | 4 | | 48 | 1 | | 49 | 23 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 127 | | matches | | |
| 31.22% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 237 | | matches | | 0 | "was letting" | | 1 | "was already looking" | | 2 | "was remembering" | | 3 | "was startling" | | 4 | "was breathing" | | 5 | "was coming" |
| |
| 88.26% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 1 | | flaggedSentences | 3 | | totalSentences | 157 | | ratio | 0.019 | | matches | | 0 | "She could smell him now—something expensive and resinous, cedar and smoke, the same scent that had been on her sheets the last time she had let him stay." | | 1 | "The heterochromia was startling this near—amber like old whiskey, black like the space between stars." | | 2 | "She bit his lower lip; he answered by backing her into the wall beside the fridge, notes crinkling under her shoulder." |
| |
| 94.14% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1349 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 63 | | adverbRatio | 0.04670126019273536 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.005189028910303929 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 157 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 157 | | mean | 11.16 | | std | 9.3 | | cv | 0.833 | | sampleLengths | | 0 | 8 | | 1 | 22 | | 2 | 21 | | 3 | 14 | | 4 | 14 | | 5 | 5 | | 6 | 5 | | 7 | 10 | | 8 | 5 | | 9 | 11 | | 10 | 13 | | 11 | 7 | | 12 | 13 | | 13 | 5 | | 14 | 21 | | 15 | 14 | | 16 | 1 | | 17 | 15 | | 18 | 13 | | 19 | 13 | | 20 | 29 | | 21 | 10 | | 22 | 13 | | 23 | 6 | | 24 | 3 | | 25 | 1 | | 26 | 32 | | 27 | 4 | | 28 | 23 | | 29 | 19 | | 30 | 11 | | 31 | 5 | | 32 | 6 | | 33 | 2 | | 34 | 25 | | 35 | 4 | | 36 | 7 | | 37 | 32 | | 38 | 6 | | 39 | 5 | | 40 | 5 | | 41 | 7 | | 42 | 28 | | 43 | 7 | | 44 | 21 | | 45 | 9 | | 46 | 5 | | 47 | 6 | | 48 | 9 | | 49 | 15 |
| |
| 48.83% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.3503184713375796 | | totalSentences | 157 | | uniqueOpeners | 55 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 114 | | matches | | 0 | "Instead her fingers stayed wrapped" | | 1 | "Then he had walked out" | | 2 | "Somewhere below, someone laughed too" | | 3 | "Perhaps it was." |
| | ratio | 0.035 | |
| 41.05% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 51 | | totalSentences | 114 | | matches | | 0 | "Her pulse kicked once, hard," | | 1 | "She should have slammed it." | | 2 | "His voice carried that Marseille" | | 3 | "He didn’t smile" | | 4 | "He never wasted the expression." | | 5 | "He was already looking at" | | 6 | "He set the cane against" | | 7 | "She had seen it once." | | 8 | "His English was perfect, the" | | 9 | "He took a step closer." | | 10 | "She could smell him now—something" | | 11 | "His voice dropped" | | 12 | "She had known he was" | | 13 | "She had known Avaros was" | | 14 | "She had not known his" | | 15 | "she said, because deflection was" | | 16 | "He was close enough now" | | 17 | "She thought of Evan, of" | | 18 | "They still filled the room." | | 19 | "She should have been furious." |
| | ratio | 0.447 | |
| 34.56% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 97 | | totalSentences | 114 | | matches | | 0 | "The third deadbolt gave with" | | 1 | "Rory pulled the door open" | | 2 | "Lucien Moreau stood on the" | | 3 | "Charcoal wool, knife-sharp creases, platinum" | | 4 | "The ivory handle of his" | | 5 | "Both of them on her." | | 6 | "Her pulse kicked once, hard," | | 7 | "She should have slammed it." | | 8 | "His voice carried that Marseille" | | 9 | "He didn’t smile" | | 10 | "He never wasted the expression." | | 11 | "Ptolemy appeared at her ankle," | | 12 | "Rory stepped back because the" | | 13 | "Lucien crossed the threshold with" | | 14 | "The flat was exactly as" | | 15 | "The air smelled of old" | | 16 | "Rory shut the door, threw" | | 17 | "He was already looking at" | | 18 | "Shoulder-length black hair still damp" | | 19 | "He set the cane against" |
| | ratio | 0.851 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 114 | | matches | (empty) | | ratio | 0 | |
| 45.45% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 44 | | technicalSentenceCount | 6 | | matches | | 0 | "She could smell him now—something expensive and resinous, cedar and smoke, the same scent that had been on her sheets the last time she had let him stay." | | 1 | "The larger part was remembering the warehouse in Limehouse, the way he had put himself between her and the thing that had come through the circle, the way his h…" | | 2 | "She thought of the last night, the argument in his rented rooms near the river, her accusing him of using the job as an excuse to leave, him saying she had no i…" | | 3 | "His other hand found her waist, fingers spreading against the fabric of her shirt, pulling her in until there was no space left for the six months or the alley …" | | 4 | "She could feel the demon in him now, a low vibration just under the skin, the thing that made his eyes two different colours and his blood run hotter than it sh…" | | 5 | "She locked the third deadbolt again, more for the ritual than the steel, and when she turned back he was still there, rain-dark at the edges, filling Eva’s ridi…" |
| |
| 66.18% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 17 | | uselessAdditionCount | 2 | | matches | | 0 | "He set, never letting it far from reach" | | 1 | "His hand slid, not gripping, just there" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 49 | | tagDensity | 0.184 | | leniency | 0.367 | | rawRatio | 0 | | effectiveRatio | 0 | |