| 33.33% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 1 | | adverbTags | | 0 | "she said again [again]" |
| | dialogueSentences | 12 | | tagDensity | 0.417 | | leniency | 0.833 | | rawRatio | 0.2 | | effectiveRatio | 0.167 | |
| 79.01% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1429 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | 0 | "very" | | 1 | "gently" | | 2 | "slowly" | | 3 | "really" |
| |
| 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) | |
| 89.50% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1429 | | totalAiIsms | 3 | | found | | | highlights | | |
| 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 | 79 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 79 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 85 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 93 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 3 | | totalWords | 1444 | | ratio | 0.002 | | matches | | 0 | "unexplained" | | 1 | "don't ask" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 31 | | wordCount | 1332 | | uniqueNames | 18 | | maxNameDensity | 0.75 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Quinn" | | discoveredNames | | Thames | 1 | | Harlow | 1 | | Quinn | 10 | | Shaftesbury | 1 | | Avenue | 1 | | Greek | 1 | | Street | 1 | | Soho | 1 | | Camden | 1 | | Town | 1 | | Tube | 1 | | Tomás | 2 | | Herrera | 4 | | Morris | 1 | | Twenty | 1 | | Spanish | 1 | | Saint | 1 | | Christopher | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Tomás" | | 3 | "Herrera" | | 4 | "Morris" | | 5 | "Saint" | | 6 | "Christopher" |
| | places | | 0 | "Thames" | | 1 | "Shaftesbury" | | 2 | "Avenue" | | 3 | "Greek" | | 4 | "Street" | | 5 | "Soho" | | 6 | "Camden" | | 7 | "Town" | | 8 | "Twenty" |
| | globalScore | 1 | | windowScore | 1 | |
| 65.25% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite a rattle and not quite a chime" | | 1 | "not quite a chime" | | 2 | "something like pity" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1444 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 85 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 35 | | mean | 41.26 | | std | 30.79 | | cv | 0.746 | | sampleLengths | | 0 | 59 | | 1 | 80 | | 2 | 50 | | 3 | 81 | | 4 | 25 | | 5 | 6 | | 6 | 69 | | 7 | 15 | | 8 | 105 | | 9 | 32 | | 10 | 70 | | 11 | 4 | | 12 | 88 | | 13 | 24 | | 14 | 20 | | 15 | 29 | | 16 | 10 | | 17 | 94 | | 18 | 6 | | 19 | 3 | | 20 | 79 | | 21 | 9 | | 22 | 93 | | 23 | 44 | | 24 | 52 | | 25 | 1 | | 26 | 35 | | 27 | 10 | | 28 | 68 | | 29 | 43 | | 30 | 43 | | 31 | 19 | | 32 | 52 | | 33 | 14 | | 34 | 12 |
| |
| 69.73% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 8 | | totalSentences | 79 | | matches | | 0 | "was headed" | | 1 | "was tagged" | | 2 | "been closed" | | 3 | "been pulled" | | 4 | "was gone" | | 5 | "been told" | | 6 | "been stripped" | | 7 | "was bound" |
| |
| 67.33% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 201 | | matches | | 0 | "was being" | | 1 | "were burning" | | 2 | "were looking" | | 3 | "was holding" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 15 | | semicolonCount | 1 | | flaggedSentences | 12 | | totalSentences | 85 | | ratio | 0.141 | | matches | | 0 | "Her boots struck the wet asphalt in a hard, even rhythm — a rhythm she'd learned at nineteen and never lost — and somewhere behind her a car horn blared uselessly into the dark." | | 1 | "She put her hand flat against the wall as she turned, using it for leverage, and her worn leather watch caught the light — the second hand sweeping past the nine, indifferent to all of it." | | 2 | "The hoarding on the far side was tagged with a spray of symbols she didn't recognise — a spiral, a pair of crossed lines, a mark like a keyhole." | | 3 | "The man — she had a name for him now, Tomás Herrera, from the file she'd read three days ago and shouldn't have had — ducked through the gap and was gone." | | 4 | "She thought of him more than she told anyone, and always at moments like this — the threshold moment, the point where a case stopped being a case and became something with teeth." | | 5 | "Quinn clipped the radio back to her belt and stood in the rain with her jaw set, and she was aware — with the clarity that came to her only in the worst moments — that she was forty-one years old, that her knees hurt, that she had made a promise to a widow in a hospital corridor three years ago that she would find out what happened, and that every promise she had ever kept had started exactly like this, at the top of some stairs she had been told not to descend." | | 6 | "The escalator had been stripped to its frame; the steps were wood, nailed across." | | 7 | "The air changed as she descended — warmer, thicker, carrying a smell of candle wax and iron and something sweet underneath, like overripe fruit." | | 8 | "People moved among them — and they were people, she was nearly sure, though some were too tall and some moved too smoothly, and none of them were looking at her the way people looked at a police officer." | | 9 | "He had his back to her, arguing in low Spanish with a woman whose hair was bound up in copper wire, and he was holding something small and pale in his hand — a token, a knuckle of bone with a hole drilled through it." | | 10 | "For a moment — she would swear to it later — the man looked at her with something like pity." | | 11 | "The beam found a wall of faces — not hostile, exactly." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1321 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 39 | | adverbRatio | 0.029523088569265707 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.008327024981074944 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 85 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 85 | | mean | 16.99 | | std | 14.83 | | cv | 0.873 | | sampleLengths | | 0 | 25 | | 1 | 34 | | 2 | 28 | | 3 | 3 | | 4 | 32 | | 5 | 17 | | 6 | 3 | | 7 | 12 | | 8 | 35 | | 9 | 3 | | 10 | 21 | | 11 | 21 | | 12 | 36 | | 13 | 24 | | 14 | 1 | | 15 | 3 | | 16 | 3 | | 17 | 25 | | 18 | 22 | | 19 | 17 | | 20 | 5 | | 21 | 15 | | 22 | 29 | | 23 | 34 | | 24 | 7 | | 25 | 35 | | 26 | 32 | | 27 | 5 | | 28 | 7 | | 29 | 15 | | 30 | 17 | | 31 | 26 | | 32 | 4 | | 33 | 33 | | 34 | 12 | | 35 | 6 | | 36 | 2 | | 37 | 35 | | 38 | 19 | | 39 | 5 | | 40 | 20 | | 41 | 3 | | 42 | 26 | | 43 | 2 | | 44 | 8 | | 45 | 94 | | 46 | 6 | | 47 | 3 | | 48 | 14 | | 49 | 20 |
| |
| 61.57% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.4470588235294118 | | totalSentences | 85 | | uniqueOpeners | 38 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 72 | | matches | | 0 | "Then she saw where he" | | 1 | "Then she keyed her radio." | | 2 | "Then the copper-haired woman said" |
| | ratio | 0.042 | |
| 86.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 24 | | totalSentences | 72 | | matches | | 0 | "Her boots struck the wet" | | 1 | "She'd clocked him on Greek" | | 2 | "He was fast." | | 3 | "She saw him at the" | | 4 | "She put her hand flat" | | 5 | "she shouted, because you shouted" | | 6 | "He didn't stop." | | 7 | "They never stopped." | | 8 | "They turned gently in a" | | 9 | "She thought of Morris." | | 10 | "She thought of him more" | | 11 | "She'd been two minutes behind" | | 12 | "They'd found his radio at" | | 13 | "Her hand went to her" | | 14 | "she said, to no one" | | 15 | "She went down." | | 16 | "She took them slowly, torch" | | 17 | "She was aware of herself" | | 18 | "She found Herrera at the" | | 19 | "He had his back to" |
| | ratio | 0.333 | |
| 85.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 54 | | totalSentences | 72 | | matches | | 0 | "The rain came sideways off" | | 1 | "Her boots struck the wet" | | 2 | "Quinn didn't slow." | | 3 | "She'd clocked him on Greek" | | 4 | "He was fast." | | 5 | "The lane narrowed." | | 6 | "Steam bled from a vent" | | 7 | "She saw him at the" | | 8 | "She put her hand flat" | | 9 | "she shouted, because you shouted" | | 10 | "He didn't stop." | | 11 | "They never stopped." | | 12 | "The back court opened onto" | | 13 | "Quinn went through the gap" | | 14 | "The beam sliced through the" | | 15 | "Mud sucked at her shoes." | | 16 | "The hoarding on the far" | | 17 | "The man — she had" | | 18 | "Quinn stopped at the threshold." | | 19 | "Rain drummed on the hoarding" |
| | ratio | 0.75 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 72 | | matches | (empty) | | ratio | 0 | |
| 15.87% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 45 | | technicalSentenceCount | 8 | | matches | | 0 | "She'd clocked him on Greek Street twenty minutes ago, moving with the furtive efficiency of someone who knew he was being watched, and she'd watched him anyway,…" | | 1 | "Except there was light down there, faint and yellow, and the smell of incense, and a low murmur of voices that had no business existing at two in the morning in…" | | 2 | "They'd found his radio at the bottom, still transmitting, and they'd found his coat, and they had never found him, and the report had used the word *unexplained…" | | 3 | "Quinn clipped the radio back to her belt and stood in the rain with her jaw set, and she was aware — with the clarity that came to her only in the worst moments…" | | 4 | "She took them slowly, torch off, letting her eyes adjust to the yellow light that leaked up from somewhere below." | | 5 | "The old tiles were still there, cracked and black with damp, but between the tracks and along the platform edge a market had grown up like fungus after rain: st…" | | 6 | "Quinn dropped into a crouch out of instinct, her hand going to her radio, and the radio was dead, and the air was full of the sound of a great many people movin…" | | 7 | "And somewhere behind them, somewhere in the tunnels that ran beneath the whole of her city, Tomás Herrera was already gone." |
| |
| 25.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 1 | | matches | | 0 | "Quinn kept, her hands loose at her sides" |
| |
| 66.67% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 12 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0.25 | | effectiveRatio | 0.167 | |