| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1386 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 71.14% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1386 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "gloom" | | 1 | "flicked" | | 2 | "pumping" | | 3 | "lurched" | | 4 | "silence" | | 5 | "echoed" | | 6 | "etched" | | 7 | "flickered" |
| |
| 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 | 77 | | matches | (empty) | |
| 87.20% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 3 | | hedgeCount | 0 | | narrationSentences | 77 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 86 | | 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 | 1386 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 1 | | unquotedAttributions | 0 | | matches | (empty) | |
| 79.91% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 66 | | wordCount | 1284 | | uniqueNames | 26 | | maxNameDensity | 1.4 | | worstName | "Quinn" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Quinn" | | discoveredNames | | Raven | 1 | | Nest | 2 | | Dean | 1 | | Street | 4 | | Soho | 1 | | Quinn | 18 | | Met | 1 | | Morris | 2 | | Thames | 2 | | Limehouse | 1 | | Herrera | 15 | | Saint | 1 | | Christopher | 1 | | Berwick | 1 | | Oxford | 1 | | Tottenham | 1 | | Court | 1 | | Road | 1 | | Northern | 1 | | Euston | 1 | | Camden | 2 | | Town | 1 | | High | 1 | | Underground | 1 | | Tube | 1 | | Rain | 3 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Quinn" | | 3 | "Met" | | 4 | "Morris" | | 5 | "Herrera" | | 6 | "Saint" | | 7 | "Christopher" | | 8 | "Rain" |
| | places | | 0 | "Dean" | | 1 | "Street" | | 2 | "Soho" | | 3 | "Thames" | | 4 | "Limehouse" | | 5 | "Berwick" | | 6 | "Oxford" | | 7 | "Tottenham" | | 8 | "Court" | | 9 | "Road" | | 10 | "Euston" | | 11 | "Camden" | | 12 | "Town" | | 13 | "High" |
| | globalScore | 0.799 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 71 | | 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 | 1386 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 86 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 34 | | mean | 40.76 | | std | 36.32 | | cv | 0.891 | | sampleLengths | | 0 | 88 | | 1 | 129 | | 2 | 17 | | 3 | 88 | | 4 | 21 | | 5 | 7 | | 6 | 45 | | 7 | 4 | | 8 | 5 | | 9 | 102 | | 10 | 7 | | 11 | 13 | | 12 | 12 | | 13 | 49 | | 14 | 73 | | 15 | 16 | | 16 | 4 | | 17 | 89 | | 18 | 13 | | 19 | 20 | | 20 | 10 | | 21 | 22 | | 22 | 18 | | 23 | 21 | | 24 | 61 | | 25 | 87 | | 26 | 11 | | 27 | 4 | | 28 | 78 | | 29 | 54 | | 30 | 79 | | 31 | 102 | | 32 | 17 | | 33 | 20 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 77 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 191 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 86 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1289 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 15 | | adverbRatio | 0.011636927851047323 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 86 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 86 | | mean | 16.12 | | std | 10.21 | | cv | 0.633 | | sampleLengths | | 0 | 19 | | 1 | 31 | | 2 | 38 | | 3 | 23 | | 4 | 12 | | 5 | 19 | | 6 | 10 | | 7 | 14 | | 8 | 51 | | 9 | 17 | | 10 | 10 | | 11 | 8 | | 12 | 7 | | 13 | 10 | | 14 | 11 | | 15 | 14 | | 16 | 28 | | 17 | 21 | | 18 | 7 | | 19 | 11 | | 20 | 14 | | 21 | 20 | | 22 | 4 | | 23 | 5 | | 24 | 12 | | 25 | 10 | | 26 | 25 | | 27 | 31 | | 28 | 24 | | 29 | 7 | | 30 | 13 | | 31 | 12 | | 32 | 8 | | 33 | 41 | | 34 | 13 | | 35 | 2 | | 36 | 37 | | 37 | 10 | | 38 | 11 | | 39 | 16 | | 40 | 4 | | 41 | 22 | | 42 | 8 | | 43 | 18 | | 44 | 3 | | 45 | 8 | | 46 | 5 | | 47 | 25 | | 48 | 13 | | 49 | 20 |
| |
| 71.32% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 2 | | diversityRatio | 0.4418604651162791 | | totalSentences | 86 | | uniqueOpeners | 38 | |
| 43.86% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 76 | | matches | | | ratio | 0.013 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 7 | | totalSentences | 76 | | matches | | 0 | "She checked the worn leather" | | 1 | "Her warrant card sat warm" | | 2 | "He shoved his sleeves back" | | 3 | "His gaze locked on her" | | 4 | "She bared her teeth and" | | 5 | "They burst out at Camden" | | 6 | "Her breath fogged." |
| | ratio | 0.092 | |
| 52.11% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 62 | | totalSentences | 76 | | matches | | 0 | "The green neon of The" | | 1 | "Quinn held position in the" | | 2 | "Rain ran off her cropped" | | 3 | "Brown eyes tracked the door" | | 4 | "She checked the worn leather" | | 5 | "Her warrant card sat warm" | | 6 | "The door of the Nest" | | 7 | "Tomás Herrera stepped into the" | | 8 | "Quinn knew the face from" | | 9 | "Olive skin gone pale under" | | 10 | "A Saint Christopher medallion glinted" | | 11 | "He shoved his sleeves back" | | 12 | "Quinn pushed off the wall" | | 13 | "Herrera froze for half a" | | 14 | "His gaze locked on her" | | 15 | "Quinn went after him." | | 16 | "Market traders hauled their striped" | | 17 | "Herrera vaulted a stack of" | | 18 | "Quinn drove through the same" | | 19 | "A delivery bloke with a" |
| | ratio | 0.816 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 76 | | matches | (empty) | | ratio | 0 | |
| 96.02% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 61 | | technicalSentenceCount | 4 | | matches | | 0 | "Her warrant card sat warm in her inside pocket next to the folded photograph of DS Morris at the Thames on the last summer before the case three years back took…" | | 1 | "Quinn drove through the same water with her arms pumping and her breath tearing out of her chest and her shoes losing grip then finding it again on the slick st…" | | 2 | "The big man nodded once and stepped aside and let Herrera pass down into the throat of the abandoned Tube station beneath Camden where lantern light flickered o…" | | 3 | "Below her boots the stairwell fell away into noise and heat and smoke and a press of bodies moving between stalls piled with banned alchemical substances and ch…" |
| |
| 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 | |