| 75.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 24 | | adverbTagCount | 3 | | adverbTags | | 0 | "he said quietly [quietly]" | | 1 | "she said carefully [carefully]" | | 2 | "he said finally [finally]" |
| | dialogueSentences | 48 | | tagDensity | 0.5 | | leniency | 1 | | rawRatio | 0.125 | | effectiveRatio | 0.125 | |
| 87.91% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2067 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "slightly" | | 1 | "carefully" | | 2 | "quickly" | | 3 | "completely" |
| |
| 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) | |
| 75.81% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2067 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "flickered" | | 1 | "comfortable" | | 2 | "silence" | | 3 | "calculated" | | 4 | "desire" | | 5 | "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 | 1 | | narrationSentences | 131 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 131 | | filterMatches | | | hedgeMatches | | 0 | "happened to" | | 1 | "began to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 156 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 62 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2090 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 26 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 77 | | wordCount | 1750 | | uniqueNames | 19 | | maxNameDensity | 1.2 | | worstName | "Lucien" | | maxWindowNameDensity | 3 | | worstWindowName | "Lucien" | | discoveredNames | | Deliveroo | 1 | | Eva | 7 | | Bodleian | 1 | | Lucien | 21 | | Moreau | 5 | | Rory | 17 | | French | 2 | | Ptolemy | 8 | | London | 1 | | Occitan | 1 | | Frenchman | 1 | | Brick | 2 | | Lane | 2 | | Golden | 1 | | Empress | 1 | | Evan | 1 | | Cardiff | 1 | | Aurora | 1 | | Looked | 3 |
| | persons | | 0 | "Eva" | | 1 | "Lucien" | | 2 | "Moreau" | | 3 | "Rory" | | 4 | "Ptolemy" | | 5 | "Evan" | | 6 | "Looked" |
| | places | | 0 | "Bodleian" | | 1 | "London" | | 2 | "Brick" | | 3 | "Lane" | | 4 | "Golden" | | 5 | "Cardiff" |
| | globalScore | 0.9 | | windowScore | 0.667 | |
| 90.48% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 84 | | glossingSentenceCount | 2 | | matches | | 0 | "as if absorbing a physical blow" | | 1 | "not quite a smile, not yet — pulled at the corner of his mouth" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 0.957 | | wordCount | 2090 | | matches | | 0 | "not the details, but the shape of it" | | 1 | "not the calculated empathy of a man who trades in information, but something raw" |
| |
| 81.20% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 156 | | matches | | 0 | "counted, that he'd" | | 1 | "clean that she" | | 2 | "hated that she" | | 3 | "stay, that Rory" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 73 | | mean | 28.63 | | std | 28.45 | | cv | 0.994 | | sampleLengths | | 0 | 17 | | 1 | 41 | | 2 | 6 | | 3 | 98 | | 4 | 31 | | 5 | 3 | | 6 | 5 | | 7 | 7 | | 8 | 46 | | 9 | 29 | | 10 | 46 | | 11 | 10 | | 12 | 4 | | 13 | 8 | | 14 | 40 | | 15 | 5 | | 16 | 86 | | 17 | 6 | | 18 | 13 | | 19 | 2 | | 20 | 23 | | 21 | 101 | | 22 | 5 | | 23 | 52 | | 24 | 9 | | 25 | 51 | | 26 | 5 | | 27 | 7 | | 28 | 4 | | 29 | 6 | | 30 | 126 | | 31 | 7 | | 32 | 9 | | 33 | 17 | | 34 | 11 | | 35 | 5 | | 36 | 81 | | 37 | 6 | | 38 | 31 | | 39 | 24 | | 40 | 57 | | 41 | 6 | | 42 | 7 | | 43 | 1 | | 44 | 6 | | 45 | 44 | | 46 | 35 | | 47 | 34 | | 48 | 97 | | 49 | 7 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 131 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 296 | | matches | | 0 | "was betraying" | | 1 | "was anchoring" | | 2 | "was still hunting" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 22 | | semicolonCount | 0 | | flaggedSentences | 16 | | totalSentences | 156 | | ratio | 0.103 | | matches | | 0 | "He stood in the narrow hallway with the fluorescent tube buzzing its sick yellow light above him, and he looked — wrong." | | 1 | "His mismatched eyes found hers — amber and black, warm and void — and something behind them flickered." | | 2 | "Just there, the way Lucien was always just there — arriving at the precise point between intention and action, filling the space before you realized it was empty." | | 3 | "Something about the precision of it — that he'd counted, that he'd kept the number like a coin in his pocket — cracked her composure just enough to hurt." | | 4 | "She could smell his cologne from here — something smoky and clean that she had once pressed her face against the collar of his jacket to breathe in, back when she'd been stupid enough to think that wanting someone meant you could trust them." | | 5 | "Lucien set his cane against the arm of the sofa — carefully, the way you handle something that conceals a blade, which she was not supposed to know about but did — and turned to face her fully." | | 6 | "She knew about his father — not the details, but the shape of it." | | 7 | "\"Cowardice.\" The word came out clean and sharp, and she meant it, but she also watched the way it hit him — the micro-flinch at the corner of his mouth, the slight shift in his shoulders, as if absorbing a physical blow." | | 8 | "Looked everywhere in that cramped, cluttered flat except at her, and Rory realized with a start that Lucien Moreau — the Frenchman, the fixer, the man who could read a room the way other people read street signs — was afraid." | | 9 | "The sounds of Brick Lane filtered up through the floor — a bass line from somewhere, distant laughter, the clatter of the curry house kitchen below." | | 10 | "Rory felt it move through her like a wave — anger and grief and something incandescent underneath both, something she'd spent four months and nine days trying to suffocate." | | 11 | "His expression shifted — not the calculated empathy of a man who trades in information, but something raw and furious and turned entirely inward, a self-directed anger that darkened both his eyes to the same shade." | | 12 | "The space between them was still six feet of cluttered floor — scrolls and stacked books and Ptolemy's abandoned toy mouse." | | 13 | "A ghost of something — not quite a smile, not yet — pulled at the corner of his mouth." | | 14 | "There were still things to say — logistics of whatever had driven him underground, the nature of whatever was still hunting him, the practical architecture of keeping each other alive in a city where the supernatural underworld ran on secrets and favors and blood." | | 15 | "Lucien picked up his cane and hung it on the coat hook by the door — the one Eva never used, the one that had been empty for months — and the gesture was so deliberate, so quiet, so much like someone deciding to stay, that Rory had to turn away toward the kitchen before her face betrayed her completely." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 930 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 34 | | adverbRatio | 0.03655913978494624 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.007526881720430108 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 156 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 156 | | mean | 13.4 | | std | 12.61 | | cv | 0.941 | | sampleLengths | | 0 | 11 | | 1 | 3 | | 2 | 3 | | 3 | 41 | | 4 | 6 | | 5 | 22 | | 6 | 9 | | 7 | 7 | | 8 | 28 | | 9 | 12 | | 10 | 20 | | 11 | 18 | | 12 | 2 | | 13 | 2 | | 14 | 9 | | 15 | 3 | | 16 | 5 | | 17 | 7 | | 18 | 16 | | 19 | 2 | | 20 | 28 | | 21 | 27 | | 22 | 2 | | 23 | 44 | | 24 | 2 | | 25 | 4 | | 26 | 4 | | 27 | 2 | | 28 | 4 | | 29 | 8 | | 30 | 29 | | 31 | 6 | | 32 | 3 | | 33 | 2 | | 34 | 5 | | 35 | 11 | | 36 | 29 | | 37 | 27 | | 38 | 19 | | 39 | 6 | | 40 | 13 | | 41 | 2 | | 42 | 23 | | 43 | 20 | | 44 | 7 | | 45 | 30 | | 46 | 44 | | 47 | 3 | | 48 | 2 | | 49 | 38 |
| |
| 48.93% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 17 | | diversityRatio | 0.358974358974359 | | totalSentences | 156 | | uniqueOpeners | 56 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 108 | | matches | | 0 | "Then the second." | | 1 | "Then the third." | | 2 | "Just there, the way Lucien" | | 3 | "Then his eyes landed on" | | 4 | "Just a man standing in" |
| | ratio | 0.046 | |
| 75.56% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 39 | | totalSentences | 108 | | matches | | 0 | "She did not expect Lucien" | | 1 | "He stood in the narrow" | | 2 | "His charcoal suit was immaculate" | | 3 | "His mismatched eyes found hers" | | 4 | "She moved to shut the" | | 5 | "His ivory-handled cane came up" | | 6 | "He said her full name" | | 7 | "She stopped herself, jaw tightening," | | 8 | "She took a breath." | | 9 | "he said quietly" | | 10 | "She stepped back from the" | | 11 | "He entered Eva's flat the" | | 12 | "His gaze swept the towers" | | 13 | "She saw him register the" | | 14 | "She could smell his cologne" | | 15 | "It didn't come." | | 16 | "He just stood there with" | | 17 | "she said carefully" | | 18 | "She knew about his father" | | 19 | "She knew the way you" |
| | ratio | 0.361 | |
| 89.63% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 80 | | totalSentences | 108 | | matches | | 0 | "The first deadbolt turned with" | | 1 | "Rory pulled the door open" | | 2 | "She did not expect Lucien" | | 3 | "He stood in the narrow" | | 4 | "His charcoal suit was immaculate" | | 5 | "A strand fell across his" | | 6 | "His mismatched eyes found hers" | | 7 | "She moved to shut the" | | 8 | "His ivory-handled cane came up" | | 9 | "He said her full name" | | 10 | "She stopped herself, jaw tightening," | | 11 | "She took a breath." | | 12 | "he said quietly" | | 13 | "Something about the precision of" | | 14 | "She stepped back from the" | | 15 | "Lucien took it as both." | | 16 | "He entered Eva's flat the" | | 17 | "His gaze swept the towers" | | 18 | "She saw him register the" | | 19 | "Ptolemy opened one eye, assessed" |
| | ratio | 0.741 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 108 | | matches | (empty) | | ratio | 0 | |
| 48.52% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 53 | | technicalSentenceCount | 7 | | matches | | 0 | "The elegant Lucien Moreau redirection that would transform an apology into a negotiation." | | 1 | "Lucien, who brokered information for creatures that could pull the marrow from your bones." | | 2 | "Looked everywhere in that cramped, cluttered flat except at her, and Rory realized with a start that Lucien Moreau — the Frenchman, the fixer, the man who could…" | | 3 | "Just a man standing in a room that was too small, saying something that was too large." | | 4 | "His expression shifted — not the calculated empathy of a man who trades in information, but something raw and furious and turned entirely inward, a self-directe…" | | 5 | "Ptolemy stretched, yawned enormously, and dropped from the sofa to wind between Lucien's ankles with the proprietary air of a creature who has decided something…" | | 6 | "She filled the kettle and set it on the burner and stood there with her hands braced against the counter, breathing in curry spice and old paper and, underneath…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 24 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 48 | | tagDensity | 0.271 | | leniency | 0.542 | | rawRatio | 0.077 | | effectiveRatio | 0.042 | |