| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 24 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 72 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 79.32% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1451 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | 0 | "lightly" | | 1 | "very" | | 2 | "slowly" |
| |
| 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) | |
| 93.11% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1451 | | 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 | 67 | | matches | (empty) | |
| 57.57% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 2 | | narrationSentences | 67 | | filterMatches | | | hedgeMatches | | 0 | "began to" | | 1 | "happened to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 114 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 99 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 1461 | | ratio | 0.001 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 23 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 25 | | wordCount | 928 | | uniqueNames | 8 | | maxNameDensity | 0.97 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Eva | 4 | | London | 1 | | Lucien | 5 | | Moreau | 2 | | Rory | 9 | | Ptolemy | 2 | | Silas | 1 | | Cardiff | 1 |
| | persons | | 0 | "Eva" | | 1 | "Lucien" | | 2 | "Moreau" | | 3 | "Rory" | | 4 | "Ptolemy" | | 5 | "Silas" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 31 | | 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 | 1461 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 114 | | matches | | 0 | "was that a" | | 1 | "kept, that she" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 77 | | mean | 18.97 | | std | 24.42 | | cv | 1.287 | | sampleLengths | | 0 | 86 | | 1 | 24 | | 2 | 3 | | 3 | 5 | | 4 | 91 | | 5 | 6 | | 6 | 31 | | 7 | 1 | | 8 | 4 | | 9 | 4 | | 10 | 59 | | 11 | 49 | | 12 | 3 | | 13 | 57 | | 14 | 5 | | 15 | 5 | | 16 | 36 | | 17 | 6 | | 18 | 13 | | 19 | 35 | | 20 | 3 | | 21 | 4 | | 22 | 7 | | 23 | 63 | | 24 | 9 | | 25 | 2 | | 26 | 5 | | 27 | 7 | | 28 | 58 | | 29 | 65 | | 30 | 8 | | 31 | 2 | | 32 | 6 | | 33 | 1 | | 34 | 25 | | 35 | 2 | | 36 | 13 | | 37 | 4 | | 38 | 1 | | 39 | 4 | | 40 | 62 | | 41 | 4 | | 42 | 1 | | 43 | 3 | | 44 | 33 | | 45 | 2 | | 46 | 3 | | 47 | 33 | | 48 | 19 | | 49 | 1 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 67 | | matches | | |
| 73.42% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 158 | | matches | | 0 | "was thinking" | | 1 | "was standing" | | 2 | "was already looking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 1 | | flaggedSentences | 9 | | totalSentences | 114 | | ratio | 0.079 | | matches | | 0 | "Rory had to lift the door on its hinges with her hip while she turned it, a trick Eva had taught her the first night she'd arrived in London with a duffel bag and a split lip, and she was thinking about that — about how strange it was that a flat could teach you things — when the door came open and the smell of rain and cardamom rolled in off the landing, and Lucien Moreau was standing in it." | | 1 | "That was the first thing that registered, because Lucien Moreau did not get soaked; he arrived from weather the way other men arrived from a car, untouched, faintly amused by the elements." | | 2 | "Now his platinum hair had come loose from its slick and hung over one eyebrow, and the shoulders of his charcoal suit had gone black with water, and the ivory handle of his cane was slippery in a hand that — she noticed, because she always noticed, that was the trouble — was not quite steady." | | 3 | "Rory looked past him at the stairwell — narrow, yellow-lit, the runner worn through to the boards, the smell of the curry house downstairs baked permanently into the plaster." | | 4 | "She said it lightly and then heard herself say it, and the room got very quiet, and Lucien looked at her with that face he had — one eye amber, warm as whisky held to a lamp, the other black all the way through, no iris, no shine, a hole punched in a man — and she saw him decide not to lie." | | 5 | "She got the first-aid tin from under the sink, and the whisky Silas had given her for her birthday, and a tea towel, and she knelt on the floorboards in front of him amid the drifts of Eva's research — photocopied grimoires, sticky notes in three alphabets, a ring-bound thesis on binding sigils with a coffee cup standing on it — and she said, \"Where.\"" | | 6 | "\"—economical.\"" | | 7 | "\"In the car park. You said: tell me one true thing, Lucien, and I will stay. And I stood there and I could not think of a single one that would not frighten you away, and so I said nothing, and you walked to your bike, and I let you. That is the whole of it. That is the entire crime.\" His hand moved, and stopped, hovering an inch from her wrist — from the small crescent scar there, the one she'd got at seven falling off a wall in Cardiff, the one he'd asked about once and never forgotten." | | 8 | "And he laughed — one soft breath of it, and then winced, and the wince made her hand flatten instinctively against his side, over the closing wound, warm and terrible, and neither of them moved." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 847 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 20 | | adverbRatio | 0.023612750885478158 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.009445100354191263 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 114 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 114 | | mean | 12.82 | | std | 17.13 | | cv | 1.337 | | sampleLengths | | 0 | 5 | | 1 | 81 | | 2 | 5 | | 3 | 19 | | 4 | 3 | | 5 | 5 | | 6 | 3 | | 7 | 32 | | 8 | 56 | | 9 | 6 | | 10 | 18 | | 11 | 13 | | 12 | 1 | | 13 | 4 | | 14 | 4 | | 15 | 5 | | 16 | 3 | | 17 | 9 | | 18 | 7 | | 19 | 35 | | 20 | 29 | | 21 | 4 | | 22 | 3 | | 23 | 13 | | 24 | 3 | | 25 | 9 | | 26 | 37 | | 27 | 4 | | 28 | 2 | | 29 | 1 | | 30 | 4 | | 31 | 5 | | 32 | 5 | | 33 | 30 | | 34 | 6 | | 35 | 6 | | 36 | 13 | | 37 | 29 | | 38 | 6 | | 39 | 3 | | 40 | 4 | | 41 | 7 | | 42 | 63 | | 43 | 6 | | 44 | 3 | | 45 | 2 | | 46 | 5 | | 47 | 7 | | 48 | 2 | | 49 | 8 |
| |
| 72.51% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.45614035087719296 | | totalSentences | 114 | | uniqueOpeners | 52 | |
| 70.92% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 47 | | matches | | 0 | "Somewhere under the floor, the" |
| | ratio | 0.021 | |
| 32.77% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 22 | | totalSentences | 47 | | matches | | 0 | "She didn't slam the door." | | 1 | "She wanted it on record," | | 2 | "He was soaked." | | 3 | "He glanced at nothing, as" | | 4 | "His mouth did something complicated." | | 5 | "She had learned, over eleven" | | 6 | "She stepped back." | | 7 | "He came in the way" | | 8 | "He set the cane against" | | 9 | "She said it lightly and" | | 10 | "He took the armchair, the" | | 11 | "She got the first-aid tin" | | 12 | "He opened the amber eye." | | 13 | "He took off the jacket." | | 14 | "He watched her hands" | | 15 | "She swabbed the edges of" | | 16 | "He didn't flinch, which was" | | 17 | "He was silent for long" | | 18 | "Her voice did something and" | | 19 | "He said it quietly" |
| | ratio | 0.468 | |
| 23.83% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 41 | | totalSentences | 47 | | matches | | 0 | "The third deadbolt always stuck." | | 1 | "Rory had to lift the" | | 2 | "She didn't slam the door." | | 3 | "She wanted it on record," | | 4 | "He was soaked." | | 5 | "That was the first thing" | | 6 | "He glanced at nothing, as" | | 7 | "His mouth did something complicated." | | 8 | "The ghost of one, a" | | 9 | "Rory looked past him at" | | 10 | "Nothing on the stairs." | | 11 | "That meant nothing." | | 12 | "She had learned, over eleven" | | 13 | "She stepped back." | | 14 | "He came in the way" | | 15 | "Cane first, then a scan" | | 16 | "Rory shut the door." | | 17 | "He set the cane against" | | 18 | "Ptolemy came out from under" | | 19 | "Rory watched this betrayal in" |
| | ratio | 0.872 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 47 | | matches | | 0 | "Now his platinum hair had" |
| | ratio | 0.021 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 17 | | technicalSentenceCount | 0 | | matches | (empty) | |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 24 | | uselessAdditionCount | 1 | | matches | | 0 | "He glanced, as though a clock might have been hovering politely at his elbow" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 17 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 72 | | tagDensity | 0.236 | | leniency | 0.472 | | rawRatio | 0.059 | | effectiveRatio | 0.028 | |