| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 95.72% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1167 | | 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) | |
| 74.29% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1167 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "clandestine" | | 1 | "beacon" | | 2 | "glistening" | | 3 | "calculated" | | 4 | "thundered" | | 5 | "weight" |
| |
| 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 | 52 | | matches | (empty) | |
| 32.97% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 3 | | hedgeCount | 1 | | narrationSentences | 52 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 65 | | 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 | 1164 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 3 | | unquotedAttributions | 0 | | matches | (empty) | |
| 71.26% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 49 | | wordCount | 889 | | uniqueNames | 19 | | maxNameDensity | 1.57 | | worstName | "Tomás" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Tomás" | | discoveredNames | | Raven | 2 | | Nest | 2 | | London | 1 | | Harlow | 12 | | Quinn | 2 | | Metropolitan | 1 | | Police | 1 | | Tomás | 14 | | Herrera | 1 | | Saint | 2 | | Christopher | 2 | | Soho | 1 | | Tube | 1 | | Camden | 2 | | Veil | 1 | | Market | 1 | | Town | 1 | | Detective | 1 | | Morris | 1 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Harlow" | | 3 | "Quinn" | | 4 | "Police" | | 5 | "Tomás" | | 6 | "Herrera" | | 7 | "Saint" | | 8 | "Christopher" | | 9 | "Market" | | 10 | "Morris" |
| | places | | 0 | "London" | | 1 | "Metropolitan" | | 2 | "Soho" | | 3 | "Camden" | | 4 | "Town" |
| | globalScore | 0.713 | | windowScore | 0.833 | |
| 94.44% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 45 | | glossingSentenceCount | 1 | | matches | | 0 | "darkness that seemed to drink the sound" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1164 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 65 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 36 | | mean | 32.33 | | std | 33.33 | | cv | 1.031 | | sampleLengths | | 0 | 156 | | 1 | 81 | | 2 | 7 | | 3 | 15 | | 4 | 33 | | 5 | 13 | | 6 | 6 | | 7 | 50 | | 8 | 2 | | 9 | 77 | | 10 | 2 | | 11 | 6 | | 12 | 2 | | 13 | 14 | | 14 | 93 | | 15 | 46 | | 16 | 54 | | 17 | 55 | | 18 | 2 | | 19 | 6 | | 20 | 11 | | 21 | 18 | | 22 | 19 | | 23 | 21 | | 24 | 34 | | 25 | 16 | | 26 | 25 | | 27 | 78 | | 28 | 29 | | 29 | 4 | | 30 | 10 | | 31 | 42 | | 32 | 76 | | 33 | 16 | | 34 | 5 | | 35 | 40 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 52 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 142 | | matches | | |
| 98.90% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 0 | | flaggedSentences | 1 | | totalSentences | 65 | | ratio | 0.015 | | matches | | 0 | "Neon signs from other establishments bled into the darkness—red, blue, sick yellow—reflecting in the puddles as Tomás’s silhouette cut through them." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 277 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 3 | | adverbRatio | 0.010830324909747292 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.007220216606498195 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 65 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 65 | | mean | 17.91 | | std | 12.83 | | cv | 0.717 | | sampleLengths | | 0 | 46 | | 1 | 25 | | 2 | 50 | | 3 | 7 | | 4 | 28 | | 5 | 21 | | 6 | 19 | | 7 | 26 | | 8 | 15 | | 9 | 7 | | 10 | 15 | | 11 | 33 | | 12 | 13 | | 13 | 6 | | 14 | 50 | | 15 | 2 | | 16 | 7 | | 17 | 26 | | 18 | 24 | | 19 | 20 | | 20 | 2 | | 21 | 6 | | 22 | 2 | | 23 | 14 | | 24 | 20 | | 25 | 21 | | 26 | 52 | | 27 | 4 | | 28 | 26 | | 29 | 5 | | 30 | 11 | | 31 | 24 | | 32 | 4 | | 33 | 12 | | 34 | 14 | | 35 | 8 | | 36 | 13 | | 37 | 13 | | 38 | 21 | | 39 | 2 | | 40 | 6 | | 41 | 11 | | 42 | 18 | | 43 | 19 | | 44 | 21 | | 45 | 34 | | 46 | 16 | | 47 | 17 | | 48 | 8 | | 49 | 6 |
| |
| 43.85% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.26153846153846155 | | totalSentences | 65 | | uniqueOpeners | 17 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 51 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 12 | | totalSentences | 51 | | matches | | 0 | "She had spent eighteen years" | | 1 | "She had come because Tomás" | | 2 | "He looked at her with" | | 3 | "His left forearm, marked by" | | 4 | "They turned onto a wider" | | 5 | "He moved with the frantic" | | 6 | "She had heard whispers in" | | 7 | "It was a black market" | | 8 | "He turned and faced her," | | 9 | "She looked at the hidden" | | 10 | "She was Detective Harlow Quinn." | | 11 | "She had burned eighteen years" |
| | ratio | 0.235 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 49 | | totalSentences | 51 | | matches | | 0 | "The green neon sign above" | | 1 | "She had spent eighteen years" | | 2 | "The walls inside" | | 3 | "Harlow had not entered for" | | 4 | "She had come because Tomás" | | 5 | "Tomás stepped out onto the" | | 6 | "He looked at her with" | | 7 | "His left forearm, marked by" | | 8 | "The rain hammered his shoulders" | | 9 | "Harlow stepped forward, military precision" | | 10 | "Tomás laughed, but the sound" | | 11 | "The chase exploded into the" | | 12 | "Tomás cut north through the" | | 13 | "Harlow followed, her boots finding" | | 14 | "The smell of old beer" | | 15 | "Tomás’s voice cracked by the" | | 16 | "Harlow’s breath came sharp behind" | | 17 | "They turned onto a wider" | | 18 | "Neon signs from other establishments" | | 19 | "He moved with the frantic" |
| | ratio | 0.961 | |
| 98.04% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 51 | | matches | | 0 | "Before her, the abandoned station" |
| | ratio | 0.02 | |
| 27.03% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 6 | | matches | | 0 | "The green neon sign above The Raven’s Nest buzzed against the black London sky, painting the wet cobblestones in a sickly emerald glow that matched the bruise b…" | | 1 | "His left forearm, marked by the old knife scar he had carried since the attack that ended his NHS license, stayed tucked tight against his ribs." | | 2 | "He moved with the frantic economy of a man who had already decided that the only safe place was the one he had memorized: the abandoned Tube station beneath Cam…" | | 3 | "Tomás ducked into a narrow stairwell behind a shuttered pub, the stairs descending past a rusted sign that read Camden Town in faded white." | | 4 | "Stalls lined the rusted tracks like vendors at a medieval fair, but their goods glowed with an impossible light: vials of silver liquid that moved on their own,…" | | 5 | "She looked at the hidden back room of The Raven’s Nest, at the old maps that had shown her this exact doorway, at the green neon sign that had guided her throug…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |