| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 28 | | tagDensity | 0.607 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 89.61% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1444 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "softly" | | 1 | "slightly" | | 2 | "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) | |
| 13.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1444 | | totalAiIsms | 25 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | | 7 | | | 8 | | | 9 | | | 10 | | | 11 | | | 12 | | | 13 | | | 14 | | | 15 | | | 16 | | | 17 | | | 18 | | | 19 | | | 20 | |
| | highlights | | 0 | "pulse" | | 1 | "tension" | | 2 | "familiar" | | 3 | "lilt" | | 4 | "encounter" | | 5 | "fractured" | | 6 | "flicked" | | 7 | "long shadow" | | 8 | "reminder" | | 9 | "stomach" | | 10 | "shattered" | | 11 | "flicker" | | 12 | "navigating" | | 13 | "magnetic" | | 14 | "echoed" | | 15 | "electric" | | 16 | "tracing" | | 17 | "weight" | | 18 | "dancing" | | 19 | "racing" | | 20 | "whisper" |
| |
| 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 | 67 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 67 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 77 | | 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 | 1418 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 9 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 38 | | wordCount | 1040 | | uniqueNames | 19 | | maxNameDensity | 0.87 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Lucien" | | discoveredNames | | Eva | 6 | | Edinburgh | 1 | | Brick | 1 | | Lane | 1 | | Moreau | 1 | | French-accented | 1 | | English | 1 | | Attraction | 2 | | Ptolemy | 4 | | Evan | 2 | | Lucien | 9 | | Cardiff | 1 | | London | 1 | | Heat | 1 | | Yu-Fei | 1 | | Cheung | 1 | | Golden | 1 | | Empress | 1 | | French | 2 |
| | persons | | 0 | "Eva" | | 1 | "Moreau" | | 2 | "Attraction" | | 3 | "Ptolemy" | | 4 | "Evan" | | 5 | "Lucien" | | 6 | "Heat" | | 7 | "Yu-Fei" | | 8 | "Cheung" | | 9 | "Empress" |
| | places | | 0 | "Edinburgh" | | 1 | "Brick" | | 2 | "Lane" | | 3 | "Cardiff" | | 4 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.705 | | wordCount | 1418 | | matches | | 0 | "not really, but the implications had piled up like unpaid debts" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 77 | | matches | | |
| 68.50% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 23 | | mean | 61.65 | | std | 24.03 | | cv | 0.39 | | sampleLengths | | 0 | 98 | | 1 | 40 | | 2 | 69 | | 3 | 24 | | 4 | 87 | | 5 | 34 | | 6 | 68 | | 7 | 36 | | 8 | 70 | | 9 | 48 | | 10 | 81 | | 11 | 106 | | 12 | 96 | | 13 | 39 | | 14 | 85 | | 15 | 56 | | 16 | 63 | | 17 | 81 | | 18 | 66 | | 19 | 63 | | 20 | 44 | | 21 | 49 | | 22 | 15 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 67 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 182 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 15 | | semicolonCount | 1 | | flaggedSentences | 13 | | totalSentences | 77 | | ratio | 0.169 | | matches | | 0 | "She wiped her hands on her jeans, glancing at the clock—half past midnight." | | 1 | "She approached the door, fingers brushing the small crescent scar on her left wrist—a habit when tension coiled in her gut." | | 2 | "Lucien Moreau filled the frame, his heterochromatic eyes—one amber, one black—locking onto hers with that familiar, predatory gleam." | | 3 | "Three months since their last encounter—the one that ended with shouts in a rain-slicked alley behind Silas' bar, her accusations of secrets and lies, his cool deflection that cut deeper than any knife." | | 4 | "The scent of his cologne—sandalwood and something darker, like brimstone—wafted in, mingling with the curry spices drifting up from the shop below." | | 5 | "\"Not Eva.\" He set his cane against the wall and shrugged out of his suit jacket, draping it over the back of a chair piled with notes. His shirt sleeves rolled up, revealing forearms corded with muscle—a reminder that his polished exterior hid something far more dangerous. \"You.\"" | | 6 | "Her stomach twisted. She crossed her arms, leaning against the kitchen counter to put some distance between them. The last time they'd been this close, his hands had mapped her skin in a haze of whispered promises, right before she discovered the file on her abusive ex, Evan—the one Lucien had \"handled\" without telling her. Attraction, yes, but trust? Shattered. \"We said everything that needed saying." | | 7 | "Lucien's smirk faded, replaced by a flicker of something raw in his black eye—the demonic one, she always thought. He moved closer, navigating the clutter with ease, like he belonged here. \"Memos aren't my style, chérie." | | 8 | "You fled Cardiff because of him—your friend Eva dragged you here to London, to safety." | | 9 | "Lucien's hand rose, hesitating before his fingers grazed her arm—light, electric." | | 10 | "Scrolls scattered, one unfurling to reveal a diagram of demonic pacts—ironic timing." | | 11 | "\"Because complications don't erase attraction. Or regret.\" His cane remained against the wall, forgotten; instead, he reached for her hand, thumb tracing the scar on her wrist—the one from a childhood accident, a story she'd shared with him in a moment of vulnerability." | | 12 | "The unsaid hung between them—love, perhaps, or something darker, twisted by their worlds." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 735 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 26 | | adverbRatio | 0.03537414965986395 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.009523809523809525 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 77 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 77 | | mean | 18.42 | | std | 13.61 | | cv | 0.739 | | sampleLengths | | 0 | 14 | | 1 | 21 | | 2 | 20 | | 3 | 13 | | 4 | 19 | | 5 | 11 | | 6 | 21 | | 7 | 6 | | 8 | 4 | | 9 | 9 | | 10 | 18 | | 11 | 30 | | 12 | 21 | | 13 | 22 | | 14 | 2 | | 15 | 3 | | 16 | 12 | | 17 | 33 | | 18 | 25 | | 19 | 6 | | 20 | 8 | | 21 | 19 | | 22 | 15 | | 23 | 16 | | 24 | 30 | | 25 | 22 | | 26 | 15 | | 27 | 6 | | 28 | 15 | | 29 | 17 | | 30 | 38 | | 31 | 15 | | 32 | 48 | | 33 | 66 | | 34 | 15 | | 35 | 36 | | 36 | 70 | | 37 | 29 | | 38 | 67 | | 39 | 15 | | 40 | 4 | | 41 | 15 | | 42 | 5 | | 43 | 26 | | 44 | 10 | | 45 | 28 | | 46 | 21 | | 47 | 11 | | 48 | 6 | | 49 | 17 |
| |
| 82.25% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 0 | | diversityRatio | 0.4935064935064935 | | totalSentences | 77 | | uniqueOpeners | 38 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 67 | | matches | (empty) | | ratio | 0 | |
| 34.93% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 67 | | matches | | 0 | "She wiped her hands on" | | 1 | "She approached the door, fingers" | | 2 | "She yanked it free and" | | 3 | "His platinum blond hair gleamed" | | 4 | "He leaned on his ivory-handled" | | 5 | "he said, his voice a" | | 6 | "Her throat tightened." | | 7 | "She gripped the door edge," | | 8 | "She'd walked away, or tried" | | 9 | "She kept her tone even," | | 10 | "He didn't wait for an" | | 11 | "She closed the door behind" | | 12 | "He turned, his cane tapping" | | 13 | "He set his cane against" | | 14 | "Her stomach twisted. She crossed" | | 15 | "She snatched the scroll away," | | 16 | "He stilled, his amber eye" | | 17 | "You fled Cardiff because of" | | 18 | "I ensured he wouldn't" | | 19 | "She stepped forward, closing the" |
| | ratio | 0.463 | |
| 12.24% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 60 | | totalSentences | 67 | | matches | | 0 | "The knock came again, sharper" | | 1 | "Rory froze midway through stacking" | | 2 | "Ptolemy, the tabby cat, arched" | | 3 | "She wiped her hands on" | | 4 | "Eva had left for some" | | 5 | "She approached the door, fingers" | | 6 | "The third always stuck." | | 7 | "She yanked it free and" | | 8 | "Lucien Moreau filled the frame," | | 9 | "His platinum blond hair gleamed" | | 10 | "He leaned on his ivory-handled" | | 11 | "he said, his voice a" | | 12 | "Her throat tightened." | | 13 | "She gripped the door edge," | | 14 | "Attraction had burned between them" | | 15 | "She'd walked away, or tried" | | 16 | "She kept her tone even," | | 17 | "Ptolemy slunk forward, rubbing against" | | 18 | "Lucien's gaze flicked to the" | | 19 | "He didn't wait for an" |
| | ratio | 0.896 | |
| 74.63% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 67 | | matches | | 0 | "Now here he stood, unannounced," |
| | ratio | 0.015 | |
| 99.57% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 33 | | technicalSentenceCount | 2 | | matches | | 0 | "Rory froze midway through stacking another pile of ancient scrolls on the cluttered kitchen table, her pulse kicking up a notch." | | 1 | "Lucien's head snapped toward the sound, his body shifting to shield her, hand reaching for his cane." |
| |
| 53.57% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 2 | | matches | | 0 | "His voice dropped, the French lilt thickening with emotion he rarely showed" | | 1 | "he murmured, blade sliding free with a metallic whisper" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 28 | | tagDensity | 0.071 | | leniency | 0.143 | | rawRatio | 0.5 | | effectiveRatio | 0.071 | |