| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 9 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 30 | | tagDensity | 0.3 | | leniency | 0.6 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1275 | | 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) | |
| 84.31% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1275 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "pulsed" | | 1 | "footsteps" | | 2 | "weight" | | 3 | "warmth" |
| |
| 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 | 87 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 87 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 107 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 51 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1286 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 46 | | wordCount | 1034 | | uniqueNames | 24 | | maxNameDensity | 0.77 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Quinn" | | discoveredNames | | Soho | 1 | | Raven | 1 | | Nest | 1 | | Tomás | 1 | | Herrera | 6 | | Brewer | 1 | | Street | 3 | | Wardour | 1 | | Chinese | 1 | | Charing | 1 | | Cross | 1 | | Road | 2 | | Tottenham | 1 | | Court | 1 | | Camden | 1 | | High | 1 | | Kentish | 1 | | Town | 1 | | Saint | 1 | | Christopher | 1 | | Quinn | 8 | | Morris | 4 | | Rain | 3 | | Procedure | 3 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Tomás" | | 3 | "Herrera" | | 4 | "Saint" | | 5 | "Christopher" | | 6 | "Quinn" | | 7 | "Morris" | | 8 | "Rain" | | 9 | "Procedure" |
| | places | | 0 | "Soho" | | 1 | "Brewer" | | 2 | "Street" | | 3 | "Wardour" | | 4 | "Charing" | | 5 | "Cross" | | 6 | "Road" | | 7 | "Tottenham" | | 8 | "Court" | | 9 | "Camden" | | 10 | "High" | | 11 | "Kentish" | | 12 | "Town" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 58 | | 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 | 1286 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 107 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 54 | | mean | 23.81 | | std | 18.05 | | cv | 0.758 | | sampleLengths | | 0 | 26 | | 1 | 37 | | 2 | 15 | | 3 | 55 | | 4 | 9 | | 5 | 12 | | 6 | 46 | | 7 | 3 | | 8 | 4 | | 9 | 50 | | 10 | 41 | | 11 | 10 | | 12 | 25 | | 13 | 9 | | 14 | 19 | | 15 | 9 | | 16 | 66 | | 17 | 46 | | 18 | 9 | | 19 | 84 | | 20 | 41 | | 21 | 25 | | 22 | 39 | | 23 | 20 | | 24 | 29 | | 25 | 22 | | 26 | 15 | | 27 | 3 | | 28 | 30 | | 29 | 11 | | 30 | 27 | | 31 | 7 | | 32 | 10 | | 33 | 11 | | 34 | 47 | | 35 | 11 | | 36 | 46 | | 37 | 6 | | 38 | 7 | | 39 | 14 | | 40 | 26 | | 41 | 36 | | 42 | 18 | | 43 | 9 | | 44 | 3 | | 45 | 17 | | 46 | 7 | | 47 | 48 | | 48 | 49 | | 49 | 12 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 87 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 154 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 107 | | ratio | 0.056 | | matches | | 0 | "He checked the street left, checked it right, then checked it above — fire escapes, rooflines." | | 1 | "He twisted out of it without losing a step, sleeve riding up — the old knife scar down his forearm, pale even under the streetlight." | | 2 | "They ran the drowned spine of the city — Charing Cross Road, Tottenham Court Road, buses hissing through standing water — until the shopfronts gave way to shutters and the shutters gave way to Camden High Street, where the market stalls stood dead under plastic sheeting and the neon animals glowed for nobody." | | 3 | "She tracked them in bursts of light — a ticket hall with booths furred in grime, posters bleached to white bones, a lift shaft that swallowed the beam whole." | | 4 | "The door swung open on lamplight and noise and a wall of warm air — incense, hot metal, orange peel, and underneath it all, faint, blood." | | 5 | "A thin man in a soaked overcoat came down humming, a paper parcel hugged to his chest, counting under his breath — \"rue, three vials of river-glass, don't haggle with the moth-seller\" — and stopped dead when the torch caught him." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1030 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 17 | | adverbRatio | 0.01650485436893204 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.001941747572815534 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 107 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 107 | | mean | 12.02 | | std | 9.43 | | cv | 0.785 | | sampleLengths | | 0 | 26 | | 1 | 19 | | 2 | 4 | | 3 | 14 | | 4 | 15 | | 5 | 6 | | 6 | 26 | | 7 | 16 | | 8 | 4 | | 9 | 3 | | 10 | 9 | | 11 | 12 | | 12 | 28 | | 13 | 5 | | 14 | 13 | | 15 | 3 | | 16 | 4 | | 17 | 17 | | 18 | 18 | | 19 | 15 | | 20 | 16 | | 21 | 25 | | 22 | 10 | | 23 | 12 | | 24 | 13 | | 25 | 9 | | 26 | 2 | | 27 | 5 | | 28 | 12 | | 29 | 9 | | 30 | 53 | | 31 | 2 | | 32 | 1 | | 33 | 10 | | 34 | 17 | | 35 | 3 | | 36 | 4 | | 37 | 22 | | 38 | 9 | | 39 | 19 | | 40 | 7 | | 41 | 29 | | 42 | 29 | | 43 | 18 | | 44 | 4 | | 45 | 19 | | 46 | 7 | | 47 | 18 | | 48 | 13 | | 49 | 26 |
| |
| 66.98% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.42990654205607476 | | totalSentences | 107 | | uniqueOpeners | 46 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 82 | | matches | | 0 | "Then he ran." | | 1 | "Then an emergency stair between" | | 2 | "Then he lifted the bar." |
| | ratio | 0.037 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 24 | | totalSentences | 82 | | matches | | 0 | "He checked the street left," | | 1 | "He crossed Brewer Street and" | | 2 | "She watched him see it." | | 3 | "He put his head down" | | 4 | "She closed the gap at" | | 5 | "He twisted out of it" | | 6 | "he threw back, and turned" | | 7 | "They ran the drowned spine" | | 8 | "His curls had gone flat" | | 9 | "He turned into a side" | | 10 | "His footfalls doubled down ahead" | | 11 | "She tracked them in bursts" | | 12 | "He touched the medallion at" | | 13 | "He stepped backwards over the" | | 14 | "His jaw worked" | | 15 | "Her radio crackled." | | 16 | "She keyed it." | | 17 | "She rolled the volume to" | | 18 | "She held out her palm" | | 19 | "He set a token in" |
| | ratio | 0.293 | |
| 69.76% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 64 | | totalSentences | 82 | | matches | | 0 | "Rain had worked over Soho" | | 1 | "Quinn sat across the street" | | 2 | "Patience was the only part" | | 3 | "A leather bag rode his" | | 4 | "He checked the street left," | | 5 | "Somebody had trained him." | | 6 | "He crossed Brewer Street and" | | 7 | "Quinn gave him twenty seconds," | | 8 | "She watched him see it." | | 9 | "He put his head down" | | 10 | "A cab swerved past the" | | 11 | "Quinn jinked around the tail" | | 12 | "She closed the gap at" | | 13 | "He twisted out of it" | | 14 | "That half stride told her" | | 15 | "he threw back, and turned" | | 16 | "They ran the drowned spine" | | 17 | "His curls had gone flat" | | 18 | "He turned into a side" | | 19 | "South Kentish Town." |
| | ratio | 0.78 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 82 | | matches | (empty) | | ratio | 0 | |
| 87.91% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 39 | | technicalSentenceCount | 3 | | matches | | 0 | "She tracked them in bursts of light — a ticket hall with booths furred in grime, posters bleached to white bones, a lift shaft that swallowed the beam whole." | | 1 | "Procedure said apply for a warrant on a door that would not exist by the time the paperwork cleared, for a market that would move with the next full moon to a h…" | | 2 | "Behind it the bass walked on and on, warmth breathing through the seam, and on the other side of it was Herrera, and so was the truth about a night by a canal t…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 9 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 30 | | tagDensity | 0.033 | | leniency | 0.067 | | rawRatio | 0 | | effectiveRatio | 0 | |