| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 24 | | tagDensity | 0.417 | | leniency | 0.833 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 759 | | 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) | |
| 86.82% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 759 | | totalAiIsms | 2 | | 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 | 37 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 37 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 52 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 59 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 767 | | ratio | 0 | | matches | (empty) | |
| 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 | 19 | | wordCount | 620 | | uniqueNames | 10 | | maxNameDensity | 0.65 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Rory | 4 | | Moreau | 1 | | Carter | 1 | | Cardiff | 1 | | French | 2 | | English | 1 | | Ptolemy | 2 | | Lucien | 3 | | Eva | 3 | | Soho | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Carter" | | 3 | "Ptolemy" | | 4 | "Lucien" | | 5 | "Eva" |
| | places | | 0 | "Cardiff" | | 1 | "French" | | 2 | "Soho" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 25 | | 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 | 767 | | matches | (empty) | |
| 38.46% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 52 | | matches | | 0 | "chose that moment" | | 1 | "caught, that she" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 29 | | mean | 26.45 | | std | 30.71 | | cv | 1.161 | | sampleLengths | | 0 | 19 | | 1 | 89 | | 2 | 2 | | 3 | 20 | | 4 | 6 | | 5 | 4 | | 6 | 50 | | 7 | 3 | | 8 | 70 | | 9 | 6 | | 10 | 1 | | 11 | 39 | | 12 | 8 | | 13 | 4 | | 14 | 80 | | 15 | 25 | | 16 | 78 | | 17 | 20 | | 18 | 4 | | 19 | 3 | | 20 | 70 | | 21 | 60 | | 22 | 1 | | 23 | 3 | | 24 | 4 | | 25 | 3 | | 26 | 88 | | 27 | 5 | | 28 | 2 |
| |
| 67.33% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 37 | | matches | | 0 | "were supposed" | | 1 | "been invited" | | 2 | "was occupied" | | 3 | "was ruined" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 98 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 1 | | flaggedSentences | 7 | | totalSentences | 52 | | ratio | 0.135 | | matches | | 0 | "And there was blood at his cuff, dark against white linen — a detail so wrong on him that her brain snagged on it before anything else." | | 1 | "\"A skip tracer came through my network three days ago. Asking questions in Cardiff first, then here. Good questions. Expensive ones.\" His voice was as she remembered — low, unhurried, French underneath the English like gravel under silk." | | 2 | "\"I'm burning this. Whatever this is.\" But she looked at the blood again, and at the way he held himself — that fractional guarding along his left side that no one else would have caught, that she caught because she had once spent three months learning him the way other people learn languages — and she stepped back from the door." | | 3 | "Rory had been sleeping here a fortnight — her own flat above Silas' bar was a swamp courtesy of a burst pipe — and she still couldn't find the kettle half the mornings." | | 4 | "She knew what lived inside that ivory handle; she'd seen it once, a thin bright sliver of it, in an alley behind a club in Soho, and the memory of that night threaded through everything that came after." | | 5 | "Under that, along his ribs, a gash — shallow, but long, the length of a forearm, still seeping." | | 6 | "She sat beside him and pressed gauze to it, and he hissed through his teeth — counted, she realized, in French, un, deux, trois, a habit she had forgotten until this exact moment, when it hit her behind the ribs like a fist." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 386 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 14 | | adverbRatio | 0.03626943005181347 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.0051813471502590676 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 52 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 52 | | mean | 14.75 | | std | 14.77 | | cv | 1.002 | | sampleLengths | | 0 | 19 | | 1 | 27 | | 2 | 15 | | 3 | 3 | | 4 | 17 | | 5 | 27 | | 6 | 2 | | 7 | 6 | | 8 | 14 | | 9 | 6 | | 10 | 4 | | 11 | 3 | | 12 | 47 | | 13 | 3 | | 14 | 38 | | 15 | 29 | | 16 | 3 | | 17 | 6 | | 18 | 1 | | 19 | 25 | | 20 | 1 | | 21 | 8 | | 22 | 5 | | 23 | 8 | | 24 | 4 | | 25 | 61 | | 26 | 19 | | 27 | 25 | | 28 | 28 | | 29 | 33 | | 30 | 17 | | 31 | 10 | | 32 | 3 | | 33 | 1 | | 34 | 6 | | 35 | 4 | | 36 | 3 | | 37 | 26 | | 38 | 6 | | 39 | 38 | | 40 | 37 | | 41 | 5 | | 42 | 18 | | 43 | 1 | | 44 | 3 | | 45 | 4 | | 46 | 3 | | 47 | 43 | | 48 | 2 | | 49 | 43 |
| |
| 81.41% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.5576923076923077 | | totalSentences | 52 | | uniqueOpeners | 29 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 30 | | matches | | 0 | "Somewhere below, the curry house's" |
| | ratio | 0.033 | |
| 60.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 12 | | totalSentences | 30 | | matches | | 0 | "He was hatless." | | 1 | "He was leaning on the" | | 2 | "She moved to close the" | | 3 | "His voice was as she" | | 4 | "He glanced down at his" | | 5 | "He crossed the threshold the" | | 6 | "She locked the door behind" | | 7 | "He sat, on the arm" | | 8 | "She set it within his" | | 9 | "She knew what lived inside" | | 10 | "She found Eva's first-aid kit" | | 11 | "She sat beside him and" |
| | ratio | 0.4 | |
| 60.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 24 | | totalSentences | 30 | | matches | | 0 | "The third deadbolt slid back," | | 1 | "Lucien Moreau stood on the" | | 2 | "The black eye caught the" | | 3 | "He was hatless." | | 4 | "He was leaning on the" | | 5 | "She moved to close the" | | 6 | "The cane's ivory head hooked" | | 7 | "The landing tilted." | | 8 | "His voice was as she" | | 9 | "He glanced down at his" | | 10 | "Ptolemy chose that moment to" | | 11 | "Cats were supposed to know" | | 12 | "Ptolemy had never once cared." | | 13 | "He crossed the threshold the" | | 14 | "The flat swallowed him the" | | 15 | "Rory had been sleeping here" | | 16 | "Lucien took it in with" | | 17 | "She locked the door behind" | | 18 | "He sat, on the arm" | | 19 | "She set it within his" |
| | ratio | 0.8 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 30 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 16 | | technicalSentenceCount | 4 | | matches | | 0 | "He was leaning on the ivory-handled cane in a way that had nothing to do with elegance." | | 1 | "Somewhere below, the curry house's extractor fan roared on, and the stairwell smelled of turmeric and rain, and Rory Carter, who did not freeze, who had not fro…" | | 2 | "He crossed the threshold the way he did everything, as if he'd been invited a long time ago and had simply been polite about waiting." | | 3 | "She knew what lived inside that ivory handle; she'd seen it once, a thin bright sliver of it, in an alley behind a club in Soho, and the memory of that night th…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 10 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 24 | | tagDensity | 0.167 | | leniency | 0.333 | | rawRatio | 0.25 | | effectiveRatio | 0.083 | |