| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 64 | | tagDensity | 0.297 | | leniency | 0.594 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 97.20% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1788 | | totalAiIsmAdverbs | 1 | | found | | | highlights | | |
| 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) | |
| 58.05% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1788 | | totalAiIsms | 15 | | found | | | highlights | | 0 | "flickered" | | 1 | "pulse" | | 2 | "silence" | | 3 | "tension" | | 4 | "impose" | | 5 | "navigated" | | 6 | "etched" | | 7 | "intricate" | | 8 | "familiar" | | 9 | "weight" |
| |
| 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 | 106 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 106 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 150 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1771 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 12 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 55 | | wordCount | 1283 | | uniqueNames | 21 | | maxNameDensity | 0.94 | | worstName | "Aurora" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Aurora" | | discoveredNames | | Golden | 1 | | Empress | 1 | | Eva | 3 | | Moreau | 2 | | Charing | 1 | | Cross | 1 | | Road | 1 | | Ptolemy | 6 | | Aurora | 12 | | Lucien | 11 | | Oxfords | 1 | | Avaros | 2 | | Islington | 1 | | Silas | 1 | | Brick | 2 | | Lane | 2 | | East | 1 | | London | 1 | | Yale | 1 | | European | 1 | | Three | 3 |
| | persons | | 0 | "Eva" | | 1 | "Moreau" | | 2 | "Ptolemy" | | 3 | "Aurora" | | 4 | "Lucien" | | 5 | "Silas" | | 6 | "Yale" |
| | places | | 0 | "Golden" | | 1 | "Charing" | | 2 | "Cross" | | 3 | "Road" | | 4 | "Avaros" | | 5 | "Islington" | | 6 | "Brick" | | 7 | "Lane" | | 8 | "East" | | 9 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 76 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like he'd forgotten the script" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1771 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 150 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 71 | | mean | 24.94 | | std | 23.64 | | cv | 0.948 | | sampleLengths | | 0 | 52 | | 1 | 11 | | 2 | 63 | | 3 | 16 | | 4 | 57 | | 5 | 6 | | 6 | 13 | | 7 | 1 | | 8 | 36 | | 9 | 3 | | 10 | 18 | | 11 | 2 | | 12 | 45 | | 13 | 21 | | 14 | 58 | | 15 | 7 | | 16 | 5 | | 17 | 21 | | 18 | 4 | | 19 | 26 | | 20 | 29 | | 21 | 103 | | 22 | 65 | | 23 | 4 | | 24 | 5 | | 25 | 12 | | 26 | 2 | | 27 | 5 | | 28 | 63 | | 29 | 5 | | 30 | 17 | | 31 | 2 | | 32 | 59 | | 33 | 54 | | 34 | 29 | | 35 | 2 | | 36 | 9 | | 37 | 6 | | 38 | 41 | | 39 | 2 | | 40 | 1 | | 41 | 33 | | 42 | 15 | | 43 | 50 | | 44 | 5 | | 45 | 78 | | 46 | 8 | | 47 | 4 | | 48 | 28 | | 49 | 34 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 106 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 221 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 1 | | flaggedSentences | 12 | | totalSentences | 150 | | ratio | 0.08 | | matches | | 0 | "His mismatched eyes—one amber, one black—tracked the movement of her hand as she reached instinctively for the umbrella propped beside the door frame." | | 1 | "The amber eye caught the hallway light; the black one swallowed it whole." | | 2 | "That was part of the problem—or all of it, depending on which 3 AM spiral she found herself in." | | 3 | "He stopped at the threshold, close enough now that she caught the scent of sandalwood and something else beneath it—smoke, the particular acrid bite of Avaros." | | 4 | "\"Which is precisely why I couldn't tell you where I was going. What I was doing.\" He exhaled, and she saw it then—the tension in his jaw, the slight tremor in the hand that gripped his cane." | | 5 | "The fury had carried her through the first weeks—through the unanswered calls, the checking of his flat in Islington, the conversation with Silas where she'd pieced together enough to know he'd gone back to Avaros." | | 6 | "He looked wrong like this—uncertain, off-balance." | | 7 | "Lucien navigated the obstacle course with practised ease, and Aurora wondered how many times he'd done this before—shown up unannounced, slipped into spaces she thought were hers alone." | | 8 | "The posture made him look younger somehow—or maybe just exhausted." | | 9 | "A keys—old iron, intricate, nothing like the modern Yale locks on Eva's door." | | 10 | "It sat cool in her palm, and something hummed through it—a distant vibration, like a heartbeat heard through water." | | 11 | "Outside, Brick Lane carried on its evening business—tourists hunting for street art, locals heading home from work, the eternal hum of the city that never quite slept." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1299 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 31 | | adverbRatio | 0.02386451116243264 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.005388760585065435 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 150 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 150 | | mean | 11.81 | | std | 9.14 | | cv | 0.774 | | sampleLengths | | 0 | 11 | | 1 | 14 | | 2 | 27 | | 3 | 11 | | 4 | 25 | | 5 | 15 | | 6 | 23 | | 7 | 16 | | 8 | 3 | | 9 | 12 | | 10 | 2 | | 11 | 27 | | 12 | 13 | | 13 | 6 | | 14 | 11 | | 15 | 2 | | 16 | 1 | | 17 | 17 | | 18 | 19 | | 19 | 3 | | 20 | 12 | | 21 | 6 | | 22 | 2 | | 23 | 7 | | 24 | 13 | | 25 | 4 | | 26 | 2 | | 27 | 19 | | 28 | 4 | | 29 | 17 | | 30 | 21 | | 31 | 26 | | 32 | 3 | | 33 | 8 | | 34 | 7 | | 35 | 5 | | 36 | 8 | | 37 | 13 | | 38 | 4 | | 39 | 8 | | 40 | 10 | | 41 | 8 | | 42 | 6 | | 43 | 23 | | 44 | 11 | | 45 | 37 | | 46 | 4 | | 47 | 3 | | 48 | 15 | | 49 | 33 |
| |
| 51.56% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.35333333333333333 | | totalSentences | 150 | | uniqueOpeners | 53 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 96 | | matches | (empty) | | ratio | 0 | |
| 53.33% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 40 | | totalSentences | 96 | | matches | | 0 | "She finally wrenched the bolt" | | 1 | "His mismatched eyes—one amber, one" | | 2 | "She didn't move." | | 3 | "Her pulse hammered against her" | | 4 | "He gestured to the threshold" | | 5 | "His gaze snapped back to" | | 6 | "She couldn't read him." | | 7 | "He stepped forward, and she" | | 8 | "He stopped at the threshold," | | 9 | "He'd been travelling." | | 10 | "She laughed, the sound scraping" | | 11 | "He exhaled, and she saw" | | 12 | "He'd hidden it well." | | 13 | "He always did." | | 14 | "She wanted to stay angry." | | 15 | "His silence answered for him." | | 16 | "He looked wrong like this—uncertain," | | 17 | "He stepped over the threshold," | | 18 | "He settled into the armchair" | | 19 | "She dropped the takeaway bag" |
| | ratio | 0.417 | |
| 17.29% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 85 | | totalSentences | 96 | | matches | | 0 | "The third deadbolt stuck, as" | | 1 | "Aurora wrestled with it, her" | | 2 | "The scent of sesame oil" | | 3 | "She finally wrenched the bolt" | | 4 | "Lucien Moreau stood in the" | | 5 | "The fluorescent strip light above" | | 6 | "His mismatched eyes—one amber, one" | | 7 | "She didn't move." | | 8 | "Her pulse hammered against her" | | 9 | "He gestured to the threshold" | | 10 | "Ptolemy chose that precise moment" | | 11 | "The tabby threaded himself between" | | 12 | "Lucien glanced down at the" | | 13 | "His gaze snapped back to" | | 14 | "The amber eye caught the" | | 15 | "She couldn't read him." | | 16 | "That was part of the" | | 17 | "He stepped forward, and she" | | 18 | "He stopped at the threshold," | | 19 | "He'd been travelling." |
| | ratio | 0.885 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 96 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 50 | | technicalSentenceCount | 2 | | matches | | 0 | "But he'd come back, and he'd brought her a key to his life, and right now, in this cramped flat full of books and research and the smell of cooling noodles, tha…" | | 1 | "And Lucien Moreau, demon-born fixer and impossible man, sat in her best friend's flat and looked at her as though she were the only fixed point in an uncertain …" |
| |
| 98.68% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 1 | | matches | | 0 | "She laughed, the sound scraping her throat" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 2 | | fancyTags | | 0 | "Aurora muttered (mutter)" | | 1 | "She laughed (laugh)" |
| | dialogueSentences | 64 | | tagDensity | 0.078 | | leniency | 0.156 | | rawRatio | 0.4 | | effectiveRatio | 0.063 | |