| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 56 | | tagDensity | 0.268 | | leniency | 0.536 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1633 | | 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) | |
| 78.57% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1633 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "tension" | | 1 | "perfect" | | 2 | "tracing" | | 3 | "shattered" | | 4 | "magnetic" | | 5 | "traced" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "eyes widened/narrowed" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 70 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 70 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 112 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 52 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1630 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 23 | | unquotedAttributions | 0 | | matches | (empty) | |
| 80.97% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 49 | | wordCount | 1014 | | uniqueNames | 14 | | maxNameDensity | 1.38 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Eva | 5 | | Brick | 3 | | Lane | 3 | | Avaros | 1 | | Rory | 14 | | Ptolemy | 3 | | London | 5 | | Luc | 9 | | Welsh | 1 | | Evan | 1 | | Marseille | 1 | | Carter | 1 | | Yu-Fei | 1 | | Cheung | 1 |
| | persons | | 0 | "Eva" | | 1 | "Rory" | | 2 | "Luc" | | 3 | "Evan" | | 4 | "Carter" | | 5 | "Cheung" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Ptolemy" | | 3 | "London" | | 4 | "Marseille" |
| | globalScore | 0.81 | | windowScore | 1 | |
| 41.30% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 46 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite and set his cane against the bookcase where Eva’s notes on Avaros lay scattered" | | 1 | "seemed smaller the books leaning in like spectators" |
| |
| 0.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 6 | | per1kWords | 3.681 | | wordCount | 1630 | | matches | | 0 | "not touching her face, not claiming her, but close enough" | | 1 | "not claiming her, but close enough" | | 2 | "not for my notes, not for the flat, but for the hole" | | 3 | "not for the flat, but for the hole" | | 4 | "not to grab her, not to claim her, but to rest against her shoulder with the same precision he used" | | 5 | "not to claim her, but to rest against her shoulder with the same precision he used" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 112 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 66 | | mean | 24.7 | | std | 23.13 | | cv | 0.936 | | sampleLengths | | 0 | 56 | | 1 | 5 | | 2 | 36 | | 3 | 37 | | 4 | 56 | | 5 | 8 | | 6 | 8 | | 7 | 11 | | 8 | 27 | | 9 | 24 | | 10 | 7 | | 11 | 47 | | 12 | 3 | | 13 | 3 | | 14 | 24 | | 15 | 44 | | 16 | 74 | | 17 | 7 | | 18 | 15 | | 19 | 36 | | 20 | 10 | | 21 | 11 | | 22 | 19 | | 23 | 38 | | 24 | 7 | | 25 | 4 | | 26 | 4 | | 27 | 5 | | 28 | 28 | | 29 | 17 | | 30 | 9 | | 31 | 6 | | 32 | 13 | | 33 | 52 | | 34 | 5 | | 35 | 7 | | 36 | 66 | | 37 | 55 | | 38 | 55 | | 39 | 7 | | 40 | 8 | | 41 | 7 | | 42 | 2 | | 43 | 25 | | 44 | 35 | | 45 | 5 | | 46 | 4 | | 47 | 11 | | 48 | 52 | | 49 | 69 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 70 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 177 | | matches | (empty) | |
| 66.33% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 1 | | flaggedSentences | 3 | | totalSentences | 112 | | ratio | 0.027 | | matches | | 0 | "Every surface wore books, scrolls, coffee rings; the air smelled of ink and turmeric." | | 1 | "She looked at him—platinum hair, heterochromatic eyes, the tailored suit of a man who made his living in hidden things—and she knew that some doors stayed open because they had always been open, even when they pretended to be shut." | | 2 | "Rory felt the pull—the dangerous, magnetic draw that had pulled her to London, to the golden restaurant, to the flat above Silas’ bar, to the man who spoke in languages she did not know but understood every word of." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 920 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 21 | | adverbRatio | 0.02282608695652174 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.002173913043478261 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 112 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 112 | | mean | 14.55 | | std | 11.67 | | cv | 0.802 | | sampleLengths | | 0 | 20 | | 1 | 24 | | 2 | 12 | | 3 | 5 | | 4 | 22 | | 5 | 5 | | 6 | 9 | | 7 | 4 | | 8 | 24 | | 9 | 9 | | 10 | 20 | | 11 | 14 | | 12 | 22 | | 13 | 8 | | 14 | 4 | | 15 | 4 | | 16 | 11 | | 17 | 17 | | 18 | 10 | | 19 | 13 | | 20 | 11 | | 21 | 7 | | 22 | 3 | | 23 | 23 | | 24 | 21 | | 25 | 3 | | 26 | 3 | | 27 | 13 | | 28 | 11 | | 29 | 26 | | 30 | 18 | | 31 | 3 | | 32 | 20 | | 33 | 44 | | 34 | 7 | | 35 | 7 | | 36 | 15 | | 37 | 36 | | 38 | 3 | | 39 | 7 | | 40 | 11 | | 41 | 19 | | 42 | 4 | | 43 | 16 | | 44 | 18 | | 45 | 7 | | 46 | 4 | | 47 | 4 | | 48 | 5 | | 49 | 22 |
| |
| 41.07% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.24107142857142858 | | totalSentences | 112 | | uniqueOpeners | 27 | |
| 55.56% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 60 | | matches | | 0 | "Instead, she lowered her hand," |
| | ratio | 0.017 | |
| 46.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 26 | | totalSentences | 60 | | matches | | 0 | "He held his ivory-handled cane" | | 1 | "She kept her left hand" | | 2 | "He stepped inside, and the" | | 3 | "He moved past her, not" | | 4 | "She finally stood, five feet" | | 5 | "He turned, and the amber" | | 6 | "She stepped back, her shoulder" | | 7 | "He tilted the cane, and" | | 8 | "She crossed her arms, hiding" | | 9 | "She gestured at the flat," | | 10 | "His gaze dropped to her" | | 11 | "He reached out, not with" | | 12 | "She pulled back, but only" | | 13 | "His thumb pressed the scar," | | 14 | "Her voice dropped, soft as" | | 15 | "She should have moved away." | | 16 | "She should have unlocked the" | | 17 | "She looked at him—platinum hair," | | 18 | "His thumb moved from her" | | 19 | "He leaned in, his breath" |
| | ratio | 0.433 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 56 | | totalSentences | 60 | | matches | | 0 | "The door to Eva’s flat" | | 1 | "Rory sat at the narrow" | | 2 | "Ptolemy, Eva’s tabby, shifted on" | | 3 | "Luc filled the doorway, charcoal" | | 4 | "He held his ivory-handled cane" | | 5 | "Rory did not stand." | | 6 | "She kept her left hand" | | 7 | "He stepped inside, and the" | | 8 | "Every surface wore books, scrolls," | | 9 | "He moved past her, not" | | 10 | "Rory’s gaze snapped up." | | 11 | "She finally stood, five feet" | | 12 | "He turned, and the amber" | | 13 | "Luc moved closer." | | 14 | "The distance between them shrank" | | 15 | "She stepped back, her shoulder" | | 16 | "He tilted the cane, and" | | 17 | "Rory’s breath caught." | | 18 | "She crossed her arms, hiding" | | 19 | "She gestured at the flat," |
| | ratio | 0.933 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 35 | | technicalSentenceCount | 9 | | matches | | 0 | "He stepped inside, and the door shut with a heavy thud that swallowed the curry-house steam rising through the floorboards." | | 1 | "She stepped back, her shoulder hitting the shelf, a stack of scrolls trembling." | | 2 | "She crossed her arms, hiding the scar, hiding the lean muscle of her forearm she never used to defend anything." | | 3 | "The ivory handle of the cane pressed against her palm, cold and elegant, hiding the blade that could cut a man in half." | | 4 | "The words hung between them, heavier than the curry smell, heavier than the books that had witnessed every secret Eva and Rory ever wrote down." | | 5 | "Rory felt the history in her ribs: the attraction that had pulled them together in dark corners of London, the hurt that had shattered them at the edge of recog…" | | 6 | "Rory’s heart beat against her ribs like a bird that refused to learn the cage." | | 7 | "She looked at him—platinum hair, heterochromatic eyes, the tailored suit of a man who made his living in hidden things—and she knew that some doors stayed open …" | | 8 | "Outside, Brick Lane breathed with the noise of the city, and the curry-house steam rose through the floorboards, and the two people who had parted on terms too …" |
| |
| 91.67% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 1 | | matches | | 0 | "He leaned in, his breath warm against her hair" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 11 | | fancyCount | 2 | | fancyTags | | 0 | "he agreed (agree)" | | 1 | "he repeated (repeat)" |
| | dialogueSentences | 56 | | tagDensity | 0.196 | | leniency | 0.393 | | rawRatio | 0.182 | | effectiveRatio | 0.071 | |