| 36.07% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 23 | | adverbTagCount | 5 | | adverbTags | | 0 | "His accent wrapped around [around]" | | 1 | "he said quietly [quietly]" | | 2 | "He exhaled slowly [slowly]" | | 3 | "she said quietly [quietly]" | | 4 | "He moved again [again]" |
| | dialogueSentences | 61 | | tagDensity | 0.377 | | leniency | 0.754 | | rawRatio | 0.217 | | effectiveRatio | 0.164 | |
| 93.10% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1450 | | totalAiIsmAdverbs | 2 | | 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) | |
| 68.97% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1450 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "silence" | | 1 | "otherworldly" | | 2 | "stomach" | | 3 | "flickered" | | 4 | "measured" | | 5 | "warmth" | | 6 | "weight" | | 7 | "pulse" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 90 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 90 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 127 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 52 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1441 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 20 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 22 | | wordCount | 856 | | uniqueNames | 12 | | maxNameDensity | 0.58 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Rory | 5 | | Moreau | 1 | | French | 1 | | English | 1 | | Cardiff | 1 | | Liability | 1 | | London | 1 | | Silas | 1 | | Avaros | 1 | | Lucien | 5 | | Swallowed | 1 | | Ptolemy | 3 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Silas" | | 3 | "Lucien" | | 4 | "Ptolemy" |
| | places | | 0 | "Cardiff" | | 1 | "London" | | 2 | "Avaros" |
| | globalScore | 1 | | windowScore | 1 | |
| 2.94% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 51 | | glossingSentenceCount | 3 | | matches | | 0 | "the stairwell, apparently deciding the outsid" | | 1 | "smelled like old books and sandalwood" | | 2 | "tasted like poison" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1441 | | matches | (empty) | |
| 61.68% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 127 | | matches | | 0 | "unsettling that gaze" | | 1 | "meant that his carried that realm" | | 2 | "chose that moment" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 64 | | mean | 22.52 | | std | 19.79 | | cv | 0.879 | | sampleLengths | | 0 | 55 | | 1 | 8 | | 2 | 6 | | 3 | 35 | | 4 | 7 | | 5 | 64 | | 6 | 16 | | 7 | 21 | | 8 | 14 | | 9 | 14 | | 10 | 8 | | 11 | 3 | | 12 | 35 | | 13 | 5 | | 14 | 6 | | 15 | 39 | | 16 | 26 | | 17 | 11 | | 18 | 5 | | 19 | 13 | | 20 | 58 | | 21 | 10 | | 22 | 3 | | 23 | 54 | | 24 | 20 | | 25 | 33 | | 26 | 20 | | 27 | 5 | | 28 | 1 | | 29 | 4 | | 30 | 13 | | 31 | 54 | | 32 | 6 | | 33 | 22 | | 34 | 16 | | 35 | 7 | | 36 | 57 | | 37 | 58 | | 38 | 2 | | 39 | 2 | | 40 | 62 | | 41 | 31 | | 42 | 7 | | 43 | 1 | | 44 | 18 | | 45 | 25 | | 46 | 33 | | 47 | 67 | | 48 | 33 | | 49 | 55 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 90 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 166 | | matches | | |
| 30.37% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 127 | | ratio | 0.039 | | matches | | 0 | "She'd just gotten off shift—smelling like sesame oil and motorbike exhaust—and all she wanted was a shower and twelve hours of sleep." | | 1 | "Something flickered across his face—guilt, maybe, or the shadow of it." | | 2 | "He entered like he entered every space—measured, deliberate, taking inventory." | | 3 | "She thought of the things she'd learned since he left—the shadowed corners of London she'd glimpsed, the creatures that moved through Silas's bar after midnight, the vast and terrible world that existed just beneath the surface of the ordinary." | | 4 | "He stopped a foot away from her, close enough that she could smell his cologne—something dark and expensive, unchanged from before." |
| |
| 95.50% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 864 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 39 | | adverbRatio | 0.04513888888888889 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.006944444444444444 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 127 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 127 | | mean | 11.35 | | std | 9.22 | | cv | 0.813 | | sampleLengths | | 0 | 19 | | 1 | 14 | | 2 | 22 | | 3 | 3 | | 4 | 5 | | 5 | 6 | | 6 | 7 | | 7 | 28 | | 8 | 7 | | 9 | 6 | | 10 | 26 | | 11 | 25 | | 12 | 7 | | 13 | 16 | | 14 | 5 | | 15 | 16 | | 16 | 14 | | 17 | 10 | | 18 | 4 | | 19 | 8 | | 20 | 3 | | 21 | 3 | | 22 | 27 | | 23 | 5 | | 24 | 5 | | 25 | 6 | | 26 | 21 | | 27 | 4 | | 28 | 7 | | 29 | 7 | | 30 | 11 | | 31 | 1 | | 32 | 14 | | 33 | 6 | | 34 | 5 | | 35 | 5 | | 36 | 13 | | 37 | 5 | | 38 | 21 | | 39 | 6 | | 40 | 2 | | 41 | 24 | | 42 | 10 | | 43 | 3 | | 44 | 10 | | 45 | 30 | | 46 | 10 | | 47 | 4 | | 48 | 20 | | 49 | 10 |
| |
| 59.58% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.4094488188976378 | | totalSentences | 127 | | uniqueOpeners | 52 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 77 | | matches | | 0 | "Just the flat admission of" | | 1 | "Somehow that made it worse." | | 2 | "Just enough to see through." |
| | ratio | 0.039 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 44 | | totalSentences | 77 | | matches | | 0 | "She'd just gotten off shift—smelling" | | 1 | "She pushed the door open." | | 2 | "He looked exactly as she" | | 3 | "His accent wrapped around the" | | 4 | "She gripped the doorframe" | | 5 | "She laughed, but there was" | | 6 | "His jaw tightened." | | 7 | "She watched the muscle jump" | | 8 | "She shoved the memory down." | | 9 | "She'd earned her anger." | | 10 | "She'd earned every sharp edge" | | 11 | "She hoped it ate at" | | 12 | "he said quietly" | | 13 | "She should slam the door." | | 14 | "She should throw the deadbolts" | | 15 | "She stepped back." | | 16 | "He entered like he entered" | | 17 | "His gaze swept over the" | | 18 | "His expression gave nothing away," | | 19 | "He always noticed everything." |
| | ratio | 0.571 | |
| 18.44% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 68 | | totalSentences | 77 | | matches | | 0 | "The third deadbolt stuck, as" | | 1 | "Ptolemy wound between her ankles," | | 2 | "She'd just gotten off shift—smelling" | | 3 | "The bolt gave." | | 4 | "She pushed the door open." | | 5 | "Lucien Moreau stood in the" | | 6 | "Ptolemy broke the silence first," | | 7 | "He looked exactly as she" | | 8 | "Charcoal suit tailored to within" | | 9 | "The amber eye and the" | | 10 | "His accent wrapped around the" | | 11 | "She gripped the doorframe" | | 12 | "She laughed, but there was" | | 13 | "His jaw tightened." | | 14 | "She watched the muscle jump" | | 15 | "She shoved the memory down." | | 16 | "The words came out harder" | | 17 | "She'd earned her anger." | | 18 | "She'd earned every sharp edge" | | 19 | "Something flickered across his face—guilt," |
| | ratio | 0.883 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 77 | | matches | | 0 | "Now it just made her" | | 1 | "As if she were a" |
| | ratio | 0.026 | |
| 93.60% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 29 | | technicalSentenceCount | 2 | | matches | | 0 | "She watched the muscle jump beneath the skin, remembered pressing her lips there once, in another life, in a room that smelled like old books and sandalwood." | | 1 | "She thought of the things she'd learned since he left—the shadowed corners of London she'd glimpsed, the creatures that moved through Silas's bar after midnight…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 23 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 2 | | fancyTags | | 0 | "She laughed (laugh)" | | 1 | "Rory muttered (mutter)" |
| | dialogueSentences | 61 | | tagDensity | 0.164 | | leniency | 0.328 | | rawRatio | 0.2 | | effectiveRatio | 0.066 | |