| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 1 | | adverbTags | | | dialogueSentences | 28 | | tagDensity | 0.786 | | leniency | 1 | | rawRatio | 0.045 | | effectiveRatio | 0.045 | |
| 96.55% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1450 | | totalAiIsmAdverbs | 1 | | found | | | highlights | | |
| 100.00% | AI-ism character names | Target: 0 AI-default names (16 tracked, −20% each) | | codexExemptions | | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 55.17% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1450 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "silence" | | 1 | "flicker" | | 2 | "weight" | | 3 | "coded" | | 4 | "scanning" | | 5 | "glinting" | | 6 | "reminder" |
| |
| 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) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 57 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 69 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 71 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1417 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 25 | | unquotedAttributions | 0 | | matches | (empty) | |
| 86.51% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 39 | | wordCount | 945 | | uniqueNames | 14 | | maxNameDensity | 1.27 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Soho | 1 | | Raven | 1 | | Nest | 1 | | Rory | 12 | | Today | 1 | | Golden | 1 | | Prague | 4 | | Silas | 10 | | Ulysses | 1 | | Hackney | 2 | | Evan | 2 | | London | 1 | | Vltava | 1 | | River | 1 |
| | persons | | 0 | "Raven" | | 1 | "Rory" | | 2 | "Silas" | | 3 | "Ulysses" | | 4 | "Evan" |
| | places | | 0 | "Soho" | | 1 | "Prague" | | 2 | "Hackney" | | 3 | "London" | | 4 | "Vltava" | | 5 | "River" |
| | globalScore | 0.865 | | windowScore | 1 | |
| 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 | 1417 | | matches | (empty) | |
| 70.05% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 69 | | matches | | 0 | "hated that she’d" | | 1 | "used that skill" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 23 | | mean | 61.61 | | std | 31.64 | | cv | 0.514 | | sampleLengths | | 0 | 134 | | 1 | 73 | | 2 | 1 | | 3 | 96 | | 4 | 54 | | 5 | 73 | | 6 | 67 | | 7 | 94 | | 8 | 90 | | 9 | 30 | | 10 | 96 | | 11 | 74 | | 12 | 80 | | 13 | 33 | | 14 | 65 | | 15 | 47 | | 16 | 42 | | 17 | 41 | | 18 | 25 | | 19 | 84 | | 20 | 15 | | 21 | 20 | | 22 | 83 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 57 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 182 | | matches | | 0 | "was moving" | | 1 | "was lying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 17 | | semicolonCount | 0 | | flaggedSentences | 13 | | totalSentences | 69 | | ratio | 0.188 | | matches | | 0 | "She’s been avoiding this block for three years—avoided the creak of the flat’s fire escape, the smell of Silas’ burnt coffee drifting through her former window, the way his slight left limp would tap against the floorboards when he checked on her after Evan’s first threatening letter." | | 1 | "The air reeks of bourbon and burnt cedar, and a black-and-white photo of a Prague street corner hangs above the whiskey bottles—its cobblestones cracked, a shadowed figure darting into an alley." | | 2 | "His right hand rests on the counter, the silver signet ring catching the flicker of a tiki torch in the corner, and when he shifts his weight, his left leg gives a barely perceptible hitch—his Prague limp, the one he never talked about but Rory researched after he’d passed out on the bar one night, muttering about a botched extraction." | | 3 | "She freezes, bright blue eyes darting to the bookshelf in the back—the one that swings open to the secret room Silas showed her once, when she’d caught him hiding a coded letter in a copy of Ulysses." | | 4 | "Silas turns then, his hazel eyes scanning her—her sodden uniform, the delivery bag slung over her shoulder, the way she’s shifted her weight to keep the door within reach." | | 5 | "She’d planned to leave a note—scrawled one on a napkin, telling him she was moving to a friend’s flat in Hackney, that she couldn’t risk staying after Evan’s text about finding her in London—but she’d heard a car door slam outside her window and fled before she could tape it to his bar’s door." | | 6 | "Silas nods, but his fingers curl around the signet ring—a tell she’d learned when he was lying or nervous." | | 7 | "She’d thought Silas had betrayed her—his spy connections making him careless, his quiet authority a mask for indifference." | | 8 | "Rory stares at the map, suddenly aware of the black-and-white photos framed above the whiskey bottles—photos of men and women in trench coats, of a woman with a scar across her cheek who Silas had once called his partner in Prague." | | 9 | "Rory’s eyes fill with tears, but she blinks them back—cool-headed, always cool-headed." | | 10 | "Rory looks at him—grey-streaked auburn hair and beard, hazel eyes tired but kind, signet ring catching the light—and realizes he’s older, lonelier, his network shrinking as his contacts retire or die." | | 11 | "She’s older too—no longer a pre-law student running from her past, but a delivery person who’s learned to survive, who still carries the crescent scar on her left wrist like a reminder of all she’s lost." | | 12 | "She doesn’t answer, but she doesn’t close the door all the way—leaving a crack, a hint of hope that maybe, after three years of silence and regret, they can find their way back to the friend they once were." |
| |
| 89.35% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 345 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 18 | | adverbRatio | 0.05217391304347826 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.011594202898550725 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 69 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 69 | | mean | 20.54 | | std | 14.97 | | cv | 0.729 | | sampleLengths | | 0 | 22 | | 1 | 47 | | 2 | 36 | | 3 | 29 | | 4 | 31 | | 5 | 31 | | 6 | 11 | | 7 | 1 | | 8 | 17 | | 9 | 19 | | 10 | 60 | | 11 | 37 | | 12 | 14 | | 13 | 3 | | 14 | 29 | | 15 | 22 | | 16 | 22 | | 17 | 3 | | 18 | 54 | | 19 | 10 | | 20 | 19 | | 21 | 18 | | 22 | 57 | | 23 | 3 | | 24 | 30 | | 25 | 18 | | 26 | 39 | | 27 | 11 | | 28 | 19 | | 29 | 3 | | 30 | 18 | | 31 | 11 | | 32 | 29 | | 33 | 35 | | 34 | 41 | | 35 | 25 | | 36 | 8 | | 37 | 4 | | 38 | 6 | | 39 | 70 | | 40 | 6 | | 41 | 15 | | 42 | 8 | | 43 | 4 | | 44 | 13 | | 45 | 21 | | 46 | 13 | | 47 | 18 | | 48 | 5 | | 49 | 35 |
| |
| 44.20% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.2753623188405797 | | totalSentences | 69 | | uniqueOpeners | 19 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 50 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 50 | | matches | | 0 | "She’s been avoiding this block" | | 1 | "She yanks the bar’s door" | | 2 | "She’s halfway to the door" | | 3 | "His voice is deeper than" | | 4 | "His right hand rests on" | | 5 | "She freezes, bright blue eyes" | | 6 | "she says, her cool-headed tone" | | 7 | "he says, and there’s no" | | 8 | "He leans on the bar" | | 9 | "She’d planned to leave a" | | 10 | "she says, lying through her" | | 11 | "he says, his voice dropping" | | 12 | "She’d seen the note, crumpled" | | 13 | "She’d thought Silas had betrayed" | | 14 | "She’d hated him for three" | | 15 | "she admits, rubbing her wrist" | | 16 | "He gestures to the Prague" | | 17 | "he says, pointing to the" | | 18 | "He taps his left knee," | | 19 | "She’d thought they were just" |
| | ratio | 0.62 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 49 | | totalSentences | 50 | | matches | | 0 | "The green neon sign bleeds" | | 1 | "She’s been avoiding this block" | | 2 | "She yanks the bar’s door" | | 3 | "The air reeks of bourbon" | | 4 | "Rory’s straight shoulder-length black hair" | | 5 | "She’s halfway to the door" | | 6 | "His voice is deeper than" | | 7 | "Silas is leaning against the" | | 8 | "His right hand rests on" | | 9 | "She freezes, bright blue eyes" | | 10 | "she says, her cool-headed tone" | | 11 | "Silas turns then, his hazel" | | 12 | "he says, and there’s no" | | 13 | "He leans on the bar" | | 14 | "Rory’s throat tightens." | | 15 | "She’d planned to leave a" | | 16 | "she says, lying through her" | | 17 | "Silas nods, but his fingers" | | 18 | "he says, his voice dropping" | | 19 | "Rory’s breath catches." |
| | ratio | 0.98 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 50 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 28 | | technicalSentenceCount | 1 | | matches | | 0 | "Rory looks at him—grey-streaked auburn hair and beard, hazel eyes tired but kind, signet ring catching the light—and realizes he’s older, lonelier, his network …" |
| |
| 79.55% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 22 | | uselessAdditionCount | 2 | | matches | | 0 | "he says, his voice dropping" | | 1 | "she says, her voice softening" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 15 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 28 | | tagDensity | 0.536 | | leniency | 1 | | rawRatio | 0.067 | | effectiveRatio | 0.067 | |