| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 18 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 39 | | tagDensity | 0.462 | | leniency | 0.923 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 96.02% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1255 | | 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) | |
| 56.18% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1255 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "silk" | | 1 | "etched" | | 2 | "standard" | | 3 | "weight" | | 4 | "calculated" | | 5 | "pulsed" | | 6 | "measured" | | 7 | "silence" | | 8 | "pulse" | | 9 | "footsteps" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 66 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 66 | | filterMatches | (empty) | | hedgeMatches | | |
| 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 | | maxSentenceWordsSeen | 44 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1243 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 20 | | unquotedAttributions | 0 | | matches | (empty) | |
| 63.09% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 55 | | wordCount | 863 | | uniqueNames | 19 | | maxNameDensity | 1.74 | | worstName | "Daniel" | | maxWindowNameDensity | 3 | | worstWindowName | "Daniel" | | discoveredNames | | Rory | 12 | | Cardiff | 2 | | Welsh | 2 | | Valleys | 1 | | Oxford | 1 | | London | 1 | | Silas | 9 | | Blackwood | 1 | | Prague | 2 | | Daniel | 15 | | Royal | 1 | | Infirmary | 1 | | Evan | 1 | | Irish | 1 | | Thames | 1 | | Morse | 1 | | Cartier | 1 | | Bar | 1 | | Soho | 1 |
| | persons | | 0 | "Rory" | | 1 | "Valleys" | | 2 | "Silas" | | 3 | "Blackwood" | | 4 | "Daniel" | | 5 | "Evan" |
| | places | | 0 | "Cardiff" | | 1 | "Oxford" | | 2 | "London" | | 3 | "Prague" | | 4 | "Thames" | | 5 | "Bar" | | 6 | "Soho" |
| | globalScore | 0.631 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 44 | | 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 | 1243 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 86 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 39 | | mean | 31.87 | | std | 22.26 | | cv | 0.698 | | sampleLengths | | 0 | 3 | | 1 | 43 | | 2 | 37 | | 3 | 15 | | 4 | 75 | | 5 | 30 | | 6 | 74 | | 7 | 23 | | 8 | 75 | | 9 | 22 | | 10 | 51 | | 11 | 2 | | 12 | 29 | | 13 | 7 | | 14 | 60 | | 15 | 19 | | 16 | 5 | | 17 | 44 | | 18 | 41 | | 19 | 5 | | 20 | 39 | | 21 | 14 | | 22 | 6 | | 23 | 72 | | 24 | 7 | | 25 | 47 | | 26 | 2 | | 27 | 28 | | 28 | 40 | | 29 | 30 | | 30 | 29 | | 31 | 7 | | 32 | 16 | | 33 | 46 | | 34 | 67 | | 35 | 10 | | 36 | 53 | | 37 | 27 | | 38 | 43 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 66 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 137 | | matches | (empty) | |
| 76.41% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 0 | | flaggedSentences | 2 | | totalSentences | 86 | | ratio | 0.023 | | matches | | 0 | "The black-and-white photographs covering the walls—anonymous faces from operations past—seemed to lean forward as he passed." | | 1 | "Not Welsh, not Irish—the identity she had forged in the flat above this bar, the name she used when shadows moved wrong in the alleyways, when the deliveries took her past addresses that smelled of copper and threat." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 872 | | adjectiveStacks | 1 | | stackExamples | | 0 | "heavy, cream-coloured paper." |
| | adverbCount | 22 | | adverbRatio | 0.02522935779816514 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.006880733944954129 | |
| 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 | 14.45 | | std | 11.18 | | cv | 0.773 | | sampleLengths | | 0 | 3 | | 1 | 12 | | 2 | 31 | | 3 | 6 | | 4 | 31 | | 5 | 8 | | 6 | 7 | | 7 | 28 | | 8 | 21 | | 9 | 26 | | 10 | 21 | | 11 | 9 | | 12 | 7 | | 13 | 20 | | 14 | 20 | | 15 | 1 | | 16 | 26 | | 17 | 2 | | 18 | 10 | | 19 | 11 | | 20 | 12 | | 21 | 25 | | 22 | 38 | | 23 | 6 | | 24 | 16 | | 25 | 8 | | 26 | 7 | | 27 | 6 | | 28 | 30 | | 29 | 2 | | 30 | 12 | | 31 | 13 | | 32 | 4 | | 33 | 3 | | 34 | 4 | | 35 | 18 | | 36 | 16 | | 37 | 26 | | 38 | 7 | | 39 | 12 | | 40 | 5 | | 41 | 11 | | 42 | 33 | | 43 | 3 | | 44 | 4 | | 45 | 34 | | 46 | 5 | | 47 | 14 | | 48 | 25 | | 49 | 4 |
| |
| 65.89% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.43023255813953487 | | totalSentences | 86 | | uniqueOpeners | 37 | |
| 62.89% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 53 | | matches | | 0 | "Then he turned, moving with" |
| | ratio | 0.019 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 13 | | totalSentences | 53 | | matches | | 0 | "She did not look up" | | 1 | "He occupied the corner booth" | | 2 | "His right hand, heavy with" | | 3 | "He placed the envelope on" | | 4 | "It sat there, fat and" | | 5 | "He limped, the left knee" | | 6 | "She remembered those nights, the" | | 7 | "He looked at her, really" | | 8 | "His limp was barely perceptible," | | 9 | "He reached the table in" | | 10 | "He did not touch Daniel," | | 11 | "He adjusted his cuffs, and" | | 12 | "He paused at the door," |
| | ratio | 0.245 | |
| 54.34% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 43 | | totalSentences | 53 | | matches | | 0 | "The cloth snagged on a" | | 1 | "Pain shot up from the" | | 2 | "She did not look up" | | 3 | "The voice carried the clipped" | | 4 | "Rory dislodged the fabric from" | | 5 | "He occupied the corner booth" | | 6 | "The hands of a man" | | 7 | "Daniel gestured with his whisky" | | 8 | "The distinctive green neon from" | | 9 | "His right hand, heavy with" | | 10 | "Rory caught the shift in" | | 11 | "The scar on her left" | | 12 | "Daniel reached into his breast" | | 13 | "Daniel's voice dropped" | | 14 | "He placed the envelope on" | | 15 | "It sat there, fat and" | | 16 | "Daniel leaned forward" | | 17 | "The booth's leather creaked, releasing" | | 18 | "The black-and-white photographs covering the" | | 19 | "He limped, the left knee" |
| | ratio | 0.811 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 53 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 29 | | technicalSentenceCount | 7 | | matches | | 0 | "The voice carried the clipped precision of the Welsh Valleys polished by Oxford elocution, a particular cadence that conjured libraries at midnight and the smel…" | | 1 | "He occupied the corner booth as though he'd grown there, a three-piece charcoal pinstripe suit tailored to his slender frame, a silk tie the colour of dried blo…" | | 2 | "Behind them, Silas moved along the back of the bar, near the bookshelf that concealed the meeting room." | | 3 | "She remembered those nights, the fluorescent glare of Cardiff Royal Infirmary, the doctors who accepted Evan's explanations because he wore a solicitor's smile …" | | 4 | "Not Welsh, not Irish—the identity she had forged in the flat above this bar, the name she used when shadows moved wrong in the alleyways, when the deliveries to…" | | 5 | "Then he turned, moving with purpose toward the bookshelf that concealed the secret room." | | 6 | "But Rory was already moving toward the stairs, toward the name that wasn't her name, toward the man who thought he owned her, her straight black hair swinging a…" |
| |
| 97.22% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 18 | | uselessAdditionCount | 1 | | matches | | 0 | "Daniel gestured, not drinking, merely positioning" |
| |
| 98.72% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 2 | | fancyTags | | 0 | "Daniel continued (continue)" | | 1 | "Daniel agreed (agree)" |
| | dialogueSentences | 39 | | tagDensity | 0.231 | | leniency | 0.462 | | rawRatio | 0.222 | | effectiveRatio | 0.103 | |