| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 12 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 42 | | tagDensity | 0.286 | | leniency | 0.571 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 96.05% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1265 | | 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) | |
| 32.81% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1265 | | totalAiIsms | 17 | | found | | | highlights | | 0 | "echoing" | | 1 | "perfect" | | 2 | "echo" | | 3 | "velvet" | | 4 | "flicker" | | 5 | "measured" | | 6 | "eyebrow" | | 7 | "traced" | | 8 | "etching" | | 9 | "fractured" | | 10 | "scanned" | | 11 | "pounding" | | 12 | "pulse" | | 13 | "glint" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 2 | | found | | 0 | | label | "eyes widened/narrowed" | | count | 1 |
| | 1 | | label | "jaw/fists clenched" | | count | 1 |
|
| | highlights | | 0 | "eyes narrowed" | | 1 | "fist clenched" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 89 | | matches | (empty) | |
| 94.70% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 3 | | narrationSentences | 89 | | filterMatches | (empty) | | hedgeMatches | | 0 | "managed to" | | 1 | "seemed to" | | 2 | "began to" |
| |
| 97.65% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 119 | | gibberishSentences | 1 | | adjustedGibberishSentences | 1 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 38 | | ratio | 0.008 | | matches | | 0 | "“Out. Probably neck-deep in a folktale or translating another demon shopping list for some sod at the V&A.”" |
| |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1252 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 9 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 29 | | wordCount | 849 | | uniqueNames | 12 | | maxNameDensity | 0.94 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Eva | 3 | | Marseille | 1 | | Lucien | 8 | | St | 1 | | Pancras | 1 | | Avaros | 1 | | London | 3 | | Rage | 1 | | French | 1 | | Ptolemy | 3 | | East | 1 | | Aurora | 5 |
| | persons | | 0 | "Eva" | | 1 | "Lucien" | | 2 | "Ptolemy" | | 3 | "Aurora" |
| | places | | 0 | "Marseille" | | 1 | "St" | | 2 | "Pancras" | | 3 | "London" | | 4 | "East" |
| | globalScore | 1 | | windowScore | 1 | |
| 34.62% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 65 | | glossingSentenceCount | 3 | | matches | | 0 | "as if cataloguing the changes, new and old" | | 1 | "not quite apology" | | 2 | "tasted like burnt black tea" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1252 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 119 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 66 | | mean | 18.97 | | std | 13.4 | | cv | 0.707 | | sampleLengths | | 0 | 11 | | 1 | 44 | | 2 | 36 | | 3 | 2 | | 4 | 27 | | 5 | 16 | | 6 | 26 | | 7 | 17 | | 8 | 6 | | 9 | 58 | | 10 | 18 | | 11 | 9 | | 12 | 18 | | 13 | 40 | | 14 | 6 | | 15 | 4 | | 16 | 30 | | 17 | 40 | | 18 | 5 | | 19 | 36 | | 20 | 10 | | 21 | 17 | | 22 | 18 | | 23 | 6 | | 24 | 5 | | 25 | 40 | | 26 | 21 | | 27 | 16 | | 28 | 36 | | 29 | 5 | | 30 | 7 | | 31 | 23 | | 32 | 14 | | 33 | 13 | | 34 | 39 | | 35 | 7 | | 36 | 27 | | 37 | 4 | | 38 | 6 | | 39 | 25 | | 40 | 6 | | 41 | 33 | | 42 | 21 | | 43 | 3 | | 44 | 32 | | 45 | 11 | | 46 | 2 | | 47 | 38 | | 48 | 22 | | 49 | 8 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 89 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 162 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 1 | | flaggedSentences | 11 | | totalSentences | 119 | | ratio | 0.092 | | matches | | 0 | "Nothing here—no blanket, no half-finished mug, nothing to soften the angles." | | 1 | "A flicker passed through him—a wry admission, not quite apology." | | 2 | "The night Lucien disappeared played elastic in her memory—his hand on her shoulder at St Pancras, warm breath against her ear, promise strung tight and then snipped in one unclean motion." | | 3 | "Lucien’s features shifted—something pained, honest." | | 4 | "Demon sigil, Avaros—brutal, angular, unmistakable even in the low light." | | 5 | "She recognised the family crest; had traced it years ago with her tongue." | | 6 | "The paper felt old, smooth—luxurious, like nothing London ever produced." | | 7 | "She stared at the fractured wax in her hand, then at his face—French bones, demon blood, London bitterness." | | 8 | "Someone rattled the glass, then knocked—once, deliberate, like a summons." | | 9 | "Aurora jammed the letter in her pocket, body against his—old muscle memory, old comfort, old burning hurt and a spiral of longing." | | 10 | "He whispered —" |
| |
| 88.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 861 | | adjectiveStacks | 2 | | stackExamples | | 0 | "raw over old wound." | | 1 | "old, smooth—luxurious, like" |
| | adverbCount | 21 | | adverbRatio | 0.024390243902439025 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.009291521486643438 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 119 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 119 | | mean | 10.52 | | std | 6.98 | | cv | 0.664 | | sampleLengths | | 0 | 11 | | 1 | 25 | | 2 | 19 | | 3 | 4 | | 4 | 14 | | 5 | 9 | | 6 | 9 | | 7 | 2 | | 8 | 5 | | 9 | 2 | | 10 | 20 | | 11 | 16 | | 12 | 10 | | 13 | 9 | | 14 | 7 | | 15 | 17 | | 16 | 6 | | 17 | 5 | | 18 | 30 | | 19 | 3 | | 20 | 20 | | 21 | 18 | | 22 | 9 | | 23 | 18 | | 24 | 24 | | 25 | 6 | | 26 | 10 | | 27 | 6 | | 28 | 4 | | 29 | 12 | | 30 | 18 | | 31 | 18 | | 32 | 11 | | 33 | 11 | | 34 | 5 | | 35 | 13 | | 36 | 23 | | 37 | 10 | | 38 | 17 | | 39 | 8 | | 40 | 10 | | 41 | 6 | | 42 | 5 | | 43 | 9 | | 44 | 31 | | 45 | 12 | | 46 | 2 | | 47 | 7 | | 48 | 13 | | 49 | 3 |
| |
| 73.39% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 1 | | diversityRatio | 0.44537815126050423 | | totalSentences | 119 | | uniqueOpeners | 53 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 83 | | matches | (empty) | | ratio | 0 | |
| 32.05% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 39 | | totalSentences | 83 | | matches | | 0 | "She’d barely managed to tug" | | 1 | "She almost slammed the door." | | 2 | "Her body blocked the entrance," | | 3 | "He stepped close, danger and" | | 4 | "He laughed, brief and bitter." | | 5 | "He nudged the threshold, ignored" | | 6 | "His accent wrapped the name" | | 7 | "He paused beside the sofa," | | 8 | "He let the words settle," | | 9 | "She kept her stance wide," | | 10 | "She felt ridiculous, bracing herself" | | 11 | "His eyes never left her." | | 12 | "She pressed a crumpled receipt" | | 13 | "She stared at him, thumbing" | | 14 | "He eased onto the edge" | | 15 | "He made no apology for" | | 16 | "He rolled one cuff, gaze" | | 17 | "Her mouth tasted like burnt" | | 18 | "he said at last" | | 19 | "He cut her off, voice" |
| | ratio | 0.47 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 77 | | totalSentences | 83 | | matches | | 0 | "The second deadbolt slid free," | | 1 | "Aurora braced herself, left fist" | | 2 | "She’d barely managed to tug" | | 3 | "The door swung back." | | 4 | "Silhouette in the hall, face" | | 5 | "The strange burn of amber" | | 6 | "Lucien’s mouth curled slow, half" | | 7 | "She almost slammed the door." | | 8 | "Her body blocked the entrance," | | 9 | "He stepped close, danger and" | | 10 | "He laughed, brief and bitter." | | 11 | "The scent of rain-wet stones," | | 12 | "He nudged the threshold, ignored" | | 13 | "Aurora let the door thud" | | 14 | "His accent wrapped the name" | | 15 | "He paused beside the sofa," | | 16 | "Ptolemy lifted his head, tail" | | 17 | "Lucien met the cat’s eyes," | | 18 | "He let the words settle," | | 19 | "She kept her stance wide," |
| | ratio | 0.928 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 83 | | matches | (empty) | | ratio | 0 | |
| 96.77% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 31 | | technicalSentenceCount | 2 | | matches | | 0 | "The scent of rain-wet stones, the echo of old Marseille alleys in the way he leaned near, eyes flickering over her face as if cataloguing the changes, new and o…" | | 1 | "He shielded her just as the door buckled, wards hissing, Eva’s defences flaring neutral blue." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 12 | | uselessAdditionCount | 4 | | matches | | 0 | "He let, gaze softening on the edges" | | 1 | "He rolled, gaze fixing on her" | | 2 | "He cut, voice lower" | | 3 | "she said, voice flat" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 42 | | tagDensity | 0.071 | | leniency | 0.143 | | rawRatio | 0.333 | | effectiveRatio | 0.048 | |