| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 14 | | tagDensity | 0.714 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 94.91% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 983 | | 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) | |
| 84.74% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 983 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "glint" | | 1 | "trembled" | | 2 | "echoed" |
| |
| 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 | 57 | | matches | (empty) | |
| 17.54% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 4 | | hedgeCount | 1 | | narrationSentences | 57 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 60 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 59 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 979 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 68.89% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 44 | | wordCount | 863 | | uniqueNames | 16 | | maxNameDensity | 1.62 | | worstName | "Quinn" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Quinn" | | discoveredNames | | Harlow | 1 | | Quinn | 14 | | Raven | 2 | | Nest | 2 | | Herrera | 1 | | Saint | 2 | | Christopher | 2 | | Soho | 1 | | Camden | 3 | | Veil | 1 | | Market | 1 | | Morris | 1 | | You | 3 | | Tube | 1 | | Tomás | 7 | | London | 2 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Raven" | | 3 | "Herrera" | | 4 | "Saint" | | 5 | "Christopher" | | 6 | "Morris" | | 7 | "You" | | 8 | "Tomás" |
| | places | | 0 | "Soho" | | 1 | "Camden" | | 2 | "Veil" | | 3 | "London" |
| | globalScore | 0.689 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 41 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 979 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 60 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 34 | | mean | 28.79 | | std | 24.39 | | cv | 0.847 | | sampleLengths | | 0 | 95 | | 1 | 4 | | 2 | 65 | | 3 | 14 | | 4 | 86 | | 5 | 11 | | 6 | 36 | | 7 | 11 | | 8 | 2 | | 9 | 60 | | 10 | 26 | | 11 | 13 | | 12 | 59 | | 13 | 37 | | 14 | 8 | | 15 | 59 | | 16 | 18 | | 17 | 5 | | 18 | 27 | | 19 | 52 | | 20 | 23 | | 21 | 19 | | 22 | 13 | | 23 | 13 | | 24 | 47 | | 25 | 14 | | 26 | 5 | | 27 | 31 | | 28 | 9 | | 29 | 10 | | 30 | 2 | | 31 | 42 | | 32 | 52 | | 33 | 11 |
| |
| 99.11% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 57 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 144 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 1 | | flaggedSentences | 3 | | totalSentences | 60 | | ratio | 0.05 | | matches | | 0 | "The rain did not fall; it struck." | | 1 | "She passed the sharp memories of The Raven’s Nest walls—old maps of cities that no longer existed—and tried to match the geometry of the chase to those paper ghosts." | | 2 | "The suspect reached the edge of Camden without looking back. No neon guided this part of the city—only rust, the smell of abandoned copper, and the hollow breath of a station that had stopped breathing decades ago." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 501 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 13 | | adverbRatio | 0.02594810379241517 | | lyAdverbCount | 1 | | lyAdverbRatio | 0.001996007984031936 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 60 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 60 | | mean | 16.32 | | std | 12.73 | | cv | 0.78 | | sampleLengths | | 0 | 7 | | 1 | 26 | | 2 | 27 | | 3 | 25 | | 4 | 10 | | 5 | 4 | | 6 | 27 | | 7 | 5 | | 8 | 20 | | 9 | 13 | | 10 | 14 | | 11 | 2 | | 12 | 23 | | 13 | 15 | | 14 | 19 | | 15 | 27 | | 16 | 6 | | 17 | 5 | | 18 | 9 | | 19 | 27 | | 20 | 11 | | 21 | 2 | | 22 | 17 | | 23 | 4 | | 24 | 29 | | 25 | 10 | | 26 | 26 | | 27 | 13 | | 28 | 4 | | 29 | 4 | | 30 | 20 | | 31 | 31 | | 32 | 37 | | 33 | 8 | | 34 | 59 | | 35 | 18 | | 36 | 5 | | 37 | 27 | | 38 | 52 | | 39 | 23 | | 40 | 9 | | 41 | 10 | | 42 | 13 | | 43 | 13 | | 44 | 7 | | 45 | 7 | | 46 | 17 | | 47 | 16 | | 48 | 14 | | 49 | 5 |
| |
| 48.33% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 1 | | diversityRatio | 0.3 | | totalSentences | 60 | | uniqueOpeners | 18 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 48 | | matches | (empty) | | ratio | 0 | |
| 78.33% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 17 | | totalSentences | 48 | | matches | | 0 | "She had spent three hours" | | 1 | "He wore a trench coat" | | 2 | "She adjusted her worn leather" | | 3 | "He held a cigarette between" | | 4 | "he said, smoke curling between" | | 5 | "She followed at a distance" | | 6 | "She passed the sharp memories" | | 7 | "She lost him under an" | | 8 | "Her sharp jaw tightened." | | 9 | "She pushed into the next" | | 10 | "You follow without it, you" | | 11 | "I moved to London for" | | 12 | "They asked me to treat" | | 13 | "I still do it, because" | | 14 | "You think he is a" | | 15 | "You don’t know the" | | 16 | "She took a breath that" |
| | ratio | 0.354 | |
| 1.67% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 44 | | totalSentences | 48 | | matches | | 0 | "The rain did not fall;" | | 1 | "Detective Harlow Quinn pressed herself" | | 2 | "She had spent three hours" | | 3 | "A man stepped through." | | 4 | "He wore a trench coat" | | 5 | "Quinn’s brown eyes tracked him." | | 6 | "She adjusted her worn leather" | | 7 | "Tomás Herrera leaned against the" | | 8 | "A Saint Christopher medallion hung" | | 9 | "The scar running along his" | | 10 | "He held a cigarette between" | | 11 | "Quinn did not turn her" | | 12 | "he said, smoke curling between" | | 13 | "The suspect turned north, away" | | 14 | "She followed at a distance" | | 15 | "The streets became rivers." | | 16 | "She passed the sharp memories" | | 17 | "The suspect’s boots struck the" | | 18 | "She lost him under an" | | 19 | "Tomás shouted from somewhere behind" |
| | ratio | 0.917 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 48 | | matches | | 0 | "Now the room had emptied," |
| | ratio | 0.021 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 31 | | technicalSentenceCount | 7 | | matches | | 0 | "Old maps and black-and-white photographs covered every inch of the bar’s interior, but she was outside now, watching the doorway that led to the hidden back roo…" | | 1 | "She had spent three hours wedged behind a bookshelf gap, counting figures, memorizing hands, noting which of them carried bone tokens that unlocked the forbidde…" | | 2 | "She followed at a distance that kept her invisible, weaving through umbrellas that failed against the deluge." | | 3 | "She lost him under an awning near a shuttered music shop, then found him again, his silhouette cutting through the steam rising from a subway grate." | | 4 | "The suspect reached the edge of Camden without looking back. No neon guided this part of the city—only rust, the smell of abandoned copper, and the hollow breat…" | | 5 | "A staircase descended into black, old tiles cracked like teeth. At the top, the air smelled of ozone and iron. The entrance to The Veil Market lay hidden beneat…" | | 6 | "Quinn stood at the top of the stairs. Her brown eyes adjusted to the black, finding only the glint of moisture on stone. She thought of DS Morris. She thought o…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 78.57% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 14 | | tagDensity | 0.357 | | leniency | 0.714 | | rawRatio | 0.2 | | effectiveRatio | 0.143 | |