NC Bench
Overview
About
Tests
Categories
Models
Vendors
Compare
Run: 2026-09-23-01M36R5FQ1K0MCFRCK1JQX85VW
Run Details
Model:
GPT-6 Luna (Reasoning, High)
Test:
Bad Writing Habits
Scenario:
Fantasy: entering an ancient ruin
Duration:
44.2s
Cost:
$0.001741
Provider:
OpenAI
Evaluation summary
Score
Evaluator
Details Link
100.00%
Adverbs in dialogue tags
(details)
95.21%
AI-ism adverb frequency
(details)
100.00%
AI-ism character names
(details)
100.00%
AI-ism location names
(details)
66.46%
AI-ism word frequency
(details)
100.00%
Cliché density
(details)
100.00%
Emotion telling (show vs. tell)
(details)
100.00%
Filter word density
(details)
100.00%
Gibberish response detection
(details)
100.00%
Markdown formatting overuse
(details)
100.00%
Missing dialogue indicators (quotation marks)
(details)
33.33%
Name drop frequency
(details)
100.00%
Narrator intent-glossing
(details)
56.12%
"Not X but Y" pattern overuse
(details)
100.00%
Overuse of "that" (subordinate clause padding)
(details)
100.00%
Paragraph length variance
(details)
100.00%
Passive voice overuse
(details)
100.00%
Past progressive (was/were + -ing) overuse
(details)
100.00%
Em-dash & semicolon overuse
(details)
94.00%
Purple prose (modifier overload)
(details)
100.00%
Repeated phrase echo
(details)
100.00%
Sentence length variance
(details)
47.52%
Sentence opener variety
(details)
100.00%
Adverb-first sentence starts
(details)
100.00%
Pronoun-first sentence starts
(details)
65.42%
Subject-first sentence starts
(details)
30.12%
Subordinate conjunction sentence starts
(details)
100.00%
Technical jargon density
(details)
100.00%
Useless dialogue additions
(details)
100.00%
Dialogue tag variety (said vs. fancy)
(details)
89.6060%
Overall
Model input
System
You are an expert novelist with a gift for vivid, immersive prose. You write in tight third-person limited point of view with a strong narrative voice. Your prose is clean, precise, and engaging — you favor strong verbs, concrete details, and natural-sounding dialogue. You will be given a story bible (codex) containing canonical details about characters, locations, items, and lore. Use these details to ground your writing in the established world. Stay consistent with the codex. Write only the prose of the scene. Do not include titles, chapter headings, markdown formatting, or any commentary before or after the scene.
User/Human
<codex> <character id="4412" name="Aurora Carter" aliases="Rory, Laila, Aurora, Carter, Malphora" pronouns="she/her" species="Human" storyRole="Protagonist"> <eyeColor>bright blue</eyeColor> <hair>straight shoulder-length black</hair> <height>5'6"</height> <age>25</age> <scar>small crescent-shaped scar on her left wrist from a childhood accident</scar> <description>Aurora, referred to by her friends as Rory, is cool-headed, intelligent, and known for quick out-of-the-box thinking.</description> <backstory>Born in Cardiff to an Irish barrister father (Brendan Carter) and Welsh teacher mother (Jennifer Carter née Ellis), Rory reluctantly pursued Pre-Law at Cardiff University. She fled to London at the behest of her childhood friend Eva after leaving an abusive ex named Evan. By day, Rory works part-time as a delivery person for Yu-Fei Cheung's Golden Empress restaurant. She lives in a flat above Silas' bar.</backstory> </character> <character id="4418" name="Nyx" aliases="Nyx, the Shadow, Nightwhisper" pronouns="they/them" species="Shade" storyRole="Wild Card"> <eyeColor>faintly glowing violet</eyeColor> <height>approximately 6'2" in solid form</height> <age>ageless</age> <form>humanoid silhouette of living shadow, can shift between solid and incorporeal</form> <voice>sounds like a whisper carried on the wind</voice> <description>A being of living shadow, existing between the mortal plane and the spaces between realms.</description> <backstory>Nyx was once a human sorcerer named Aldric who became trapped between realms during a failed summoning ritual in 1643. They now exist as a Shade, bound to the mortal plane but able to slip between shadows.</backstory> </character> <character id="4424" name="Isolde Varga" aliases="Isolde, the Seer" pronouns="she/her" species="Half-Fae" storyRole="Oracle"> <eyeColor>pale lavender</eyeColor> <hair>silver, reaching her waist</hair> <height>5'5"</height> <age>300 years old</age> <appearance>ethereal, ageless</appearance> <speech>speaks in riddles</speech> <footprints>leaves no footprints when she walks</footprints> <compulsion>cannot lie (Fae compulsion) but can mislead</compulsion> <description>A Half-Fae seer exiled from the Fae Courts for sharing visions with mortals.</description> <backstory>She now lives in a hidden grove in Richmond Park, offering cryptic prophecies to those who seek her out.</backstory> </character> <location id="853" name="Dymas (Gluttony)" aliases="Dymas, gluttony, Dymasian" realm="Hel" sin="Gluttony"> <ruler>Prince Belphegor</ruler> <skyColor>warm amber</skyColor> <description>A place of excess and indulgence. Sprawling vineyards, orchards, and gardens provide exotic ingredients for master chefs — often helbound souls contracted from Earth. Grand feasts and culinary competitions are common.</description> </location> <location id="861" name="The Fae Grove" aliases="Isolde's grove, Richmond grove, the Grove" realm="Earth (Fae-touched)"> <parkLocation>Richmond Park</parkLocation> <standingStones>ancient oak standing stones mark the boundary</standingStones> <timeBehavior>time moves differently — an hour inside can be minutes or days outside</timeBehavior> <flora>wildflowers bloom year-round</flora> <description>A hidden clearing that exists in a pocket between Earth and the Fae realm.</description> </location> <item id="2001" name="Heartstone Pendant" aliases="the pendant, Heartstone" type="Artifact" origin="Dymas"> <gemstoneColor>deep crimson</gemstoneColor> <chainMaterial>silver chain</chainMaterial> <size>roughly the size of a thumbnail</size> <behavior>pulses faintly with warmth when near a Hel portal</behavior> <glow>faint inner glow</glow> <description>Given to Aurora by an unknown benefactor.</description> </item> <item id="2006" name="Fae-Forged Blade" aliases="the Fae blade, Isolde's gift" type="Weapon" origin="The Fae Courts"> <material>moonsilver</material> <shape>slender, leaf-shaped dagger</shape> <temperature>always cold to the touch</temperature> <glow>faintly luminescent in moonlight</glow> <power>can cut through magical wards; particularly effective against demons</power> <givenTo>given to Aurora by Isolde as a gift</givenTo> <description>A weapon of the Fae Courts, rare and highly coveted.</description> </item> <lore id="7001" name="The Veil" aliases="the Veil, the Barrier, the Boundary" category="Cosmology"> <solsticeEffect>weakens during the winter solstice, strengthens during the summer solstice</solsticeEffect> <appearance>faint shimmering distortion visible only to those with supernatural sight</appearance> <monitoring>rift points (tears in the Veil) are monitored by the Wardens</monitoring> <description>The Veil is the metaphysical barrier separating Earth from Hel and the Fae Realms.</description> </lore> </codex> Write a fully fleshed out scene of at least 1000 words in the fantasy genre. A small group enters an ancient, otherworldly place for the first time. The environment is alien and wondrous. Describe their exploration — what they see, hear, and feel as they move deeper. Include moments of discovery, unease, and wonder. Let the world-building emerge through the characters' experience rather than exposition. Use the codex entries above as your world reference for characters, setting, and lore. Only include the prose of the scene without any markdown or commentary.
Model response
Messages
Meta
AI
The standing stones were easier
to miss than Rory expected.
She had passed through Richmond
Park twice before, once in driving rain and once under a hard blue sky, and neither time had seen anything but trees, deer, and the ordinary sprawled green of London’s largest park.
Now Isolde led them off
the path and between two ancient oaks whose roots knuckled up through the earth. Beyond them, the stones waited.
They stood in a loose
ring, taller than Rory by several feet, their surfaces furred with moss. Not stones, she thought at first. Too smooth, too dark.
Then she saw the pale
grain running through them, like the marks left by water in sand, and felt the mistake settle into her bones.
They had not been set
there. They had grown. Nyx halted behind her. In the thin daylight, their tall shape drank the color from the air.
Only their eyes shone, faint
violet and watchful. “This is the place?” Rory asked. “Places are where we stand,” Isolde said. “The place is what stands behind them.”
Isolde’s silver hair gleamed between
the trees, bright as a drawn thread.
She had not left so
much as a pressed leaf behind her on the walk over. Rory had checked.
She wasn’t sure why she’d
checked, exactly, except that it was hard not to look for evidence when the world kept withholding it.
The seer turned her pale-lavender
eyes on Rory. “If you would enter, do not ask the stones to remember you.” “What happens if they do?” “They will remember you.” Rory glanced at Nyx. “That’s helpful.” “It is true,” Isolde said.
Nyx’s whisper stirred the air
like wind finding a crack. “I will go first.” They slid ahead of Rory, a shadow peeling away from the shadows under the oaks. At the ring, they paused.
The space between two stones
looked no different from any other gap: dark soil, grass, a low veil of fern. Nyx reached through.
Their hand vanished at the
wrist. Rory’s own fingers went cold.
The gap shivered, not like
water or glass, but like the world had briefly forgotten how to hold its shape. Nyx withdrew their hand.
Their fingers were intact, though
the violet in their eyes had sharpened. “Not an opening,” they murmured. “A seam.” “Is that worse?” Rory asked. “Seams hold.” Isolde stepped forward.
She left no prints in
the soft ground. “A seam is where one cloth ends and another begins. The needle need not be gentle.” Rory looked at the stones. The air between them
wavered
, the faintest distortion.
She would never have noticed
it without Nyx’s demonstration.
It had the quality of
heat rising off pavement, only the day was cool and the shimmer ran downward, sinking into the earth. The crescent scar on her left wrist prickled beneath her sleeve.
She pressed a thumb to
it, more from habit than pain. “Together,” Isolde said. Nyx moved first this time, slipping through the gap as if the dark had folded around them. Isolde followed. Rory waited one beat, listening for a cry, a crash, some convincing proof of catastrophe. Nothing came. The birds beyond the ring went on calling. A deer moved in the distance with a soft, brief clatter of hooves.
Then the pendant against her
chest warmed. The Heartstone’s silver chain rested beneath her shirt, the crimson gem against her skin. She drew it out.
Its surface held a faint
inner glow, no brighter than an ember banked under ash.
It pulsed once, and then
again. Not a portal, Rory told herself. Not necessarily. She stepped between the stones. The air pressed in on her face, cool and damp. For half a second the world narrowed to the rasp of her own breath. Then the pressure let go.
She stood in a clearing
beneath a sky that was not the sky she had entered under. Amber light spread overhead, though there was no sun.
It lay across the clearing
in a soft, luminous haze, turning every blade of grass the color of old gold. Wildflowers crowded the ground in a profusion of white, violet, yellow, and impossible blue. They grew between the stones, in the cracks of a fallen trunk, out of the dark hollows of an ancient tree. Their scent was honey, rain, and something sharp enough to catch at the back of her throat. Behind her, the oak ring stood in a line of shadow. The gap between the stones had vanished. Beyond them she could see only more trees, their trunks twisted and silvered with moss. Rory turned
slowly
. “We’re still in Richmond Park?” “Your feet are,” said Isolde. “The rest of you has wandered.” Nyx stood several paces away, their outline less solid than before. The amber light
seemed to
reach them and then slide off, leaving their shape dark and whole. The clearing sloped toward a stream. It ran over pale stones without making a sound. Rory crouched and dipped a finger in. The water was cold, so cold it stung. She lifted her hand, and the droplets hanging from her skin caught tiny points of light. Above her, the water reflected a night sky full of stars. She looked up. Amber. No stars. “Which one is real?” she asked. “Both,” Isolde said. “One is above you. One is remembering you.” Rory stood. “I’d rather not have the water remember me.” “Then do not look into it too long.” Rory had already looked. She had seen nothing in the water that wasn’t there, unless the stars counted. Still, she stepped away. The
silence
here was not empty. It had
weight
. A small sound came and went at the edge of hearing: distant bells, perhaps, or the chime of glass struck underwater. When Rory turned toward it, the sound shifted behind her. The flowers nearest the stream dipped their heads as she passed, though there was no wind. Nyx went on ahead, testing the ground with each step. Their shadow stretched sideways across the grass, pointing in the wrong direction. “Do you
feel
that?” Rory asked. “The place is pulling,” Nyx said. “Not at us. Through us.” “Can it do that?” “Anything can do anything here.” “Comforting.” “I did not intend comfort.” Isolde walked without hurrying. Her long silver hair brushed the leaves, but nothing snagged it. As they moved deeper into the grove, the trees grew larger and stranger. Some leaned together overhead, their branches knit into arches. Others stood alone with roots coiled around themselves like sleeping animals. A tree with white bark bore a scatter of dark red fruit; one split open as they passed, revealing a shining black seed. The smell made Rory’s mouth water, then turned her
stomach
. “Don’t eat anything,” Isolde said. Rory looked at her. “Was I about to?” “No. But hunger is a small door.” That, at least, sounded practical. They came to a low hill threaded with roots. At its crown stood another circle of stones, smaller than the first and carved with thin spirals. Rory stepped closer. The marks were too regular for weathering. She
traced
one with her eyes, following it inward until it disappeared beneath a mat of lichen. The air around the ring hummed. Her ears clicked, as they did on an airplane. Under her shirt, the Heartstone gave a steady
warmth
. Not a
pulse
now. A warning. Nyx had gone still. The shadows at their feet gathered into dark, restless folds. “Is this another seam?” Rory asked. “A wall,” said Isolde. Rory looked through the stones. Beyond them, the grove continued: a narrow path under an arch of thorn, and farther off the pale shape of a well. “Why put a wall in the middle of a place that’s already hard to find?” “So that what is kept may remain kept.” “Is there something behind it?” “There is.” The answer made the hair rise on Rory’s arms. “Something you want us to see?” “I want you to decide whether you will.” Isolde drew a dagger from beneath her cloak. Its slender, leaf-shaped blade was so pale it
seemed made of moonlight hardened into metal
. She offered it hilt-first. Rory took it
carefully
. Cold struck through her fingers at once, clean and biting. The blade held a faint glow, though no moon hung above them. “Fae-forged,” Isolde said. “It can open a ward. It cannot make a wise choice for the hand that holds it.” Rory glanced at the ring. “You brought us here to test me?” “I brought you here because you asked what the stones remember.” Rory couldn’t recall asking that. Perhaps she had thought it. The grove’s
silence
made the distinction
feel
less reliable. She approached the stones. The hum thickened, pressing at her teeth. Between them, the air had the same downward shimmer she’d seen at the entrance, but this time it was almost visible: a curtain of pale threads stretched from ground to branches. The path beyond looked ordinary. Too ordinary. She could smell damp earth and crushed leaves, and beneath it something metallic. The Heartstone’s
warmth
spread through the silver chain. “Don’t touch the threads,” Nyx said. Rory lowered the dagger. “I wasn’t planning to.” “Then we agree.” She held the blade parallel to the ward and watched the shimmer shift. It ran strongest where two stones stood closest together. Not a seam, exactly. A knot. The threads crossed and crossed again at the narrowest point, cinched tight. Rory set the cold edge against the air. The ward resisted. Not physically, but with a pressure behind her eyes, a sudden sharp memory of every door she had ever
been told
not to open. Her hand tightened. She
could feel
the grove listening. “Rory,” Nyx whispered. She breathed out. The thought came clear as a line on a map: don’t push through the thickest part. Find where the threads meet. The dagger slid sideways. A faint, high note rang out, like a glass rim touched by a wet finger. The threads parted. No wind rushed through. No monster leapt from the path. The ward opened in a narrow, clean cut, and the air beyond smelled of rain. For a moment, Rory saw the well more clearly. Its stones were black with age, and green light moved at the bottom—
not reflected light, but something rising from deep below
. The path curled around it. At the far edge of the clearing, a shape stood beneath the trees. Rory blinked. The shape
was gone
. The cut in the ward
began to
close. She drew the blade back. The shimmer sealed itself without a mark, but the hum had changed. It sounded, now, almost pleased. “Did you see someone?” Nyx asked. “Yes.” “Who?” “I don’t know.” Isolde watched the distant trees. Her face gave nothing away. “Some doors open inward. Some open through.” Rory looked down at the dagger in her hand. “You’re giving me this?” “It was made for a hand that would not mistake fear for wisdom.” “That’s not an answer.” “It is the answer I have.” Rory turned the blade. The moon-silver caught amber light and returned it in a cold white gleam. “I don’t know if I’m wise.” “No,” Isolde said. “But you are paying attention.” A bell chimed somewhere beyond the trees. This time the sound did not move when Rory turned toward it. The Heartstone gave one slow
pulse
against her chest. The grove went quiet around them. Not empty—waiting. Rory looked once more at the sealed ward, at the path it hid, at the flowers brightening in the amber light. She had come expecting an old clearing, a trick of Fae magic, perhaps a story Isolde had dressed up to make a point.
Instead the world had taken
a step sideways and shown her that the dark between places had its own weather, its own roots, its own eyes. “Not today,” she said. Nyx tilted their head. “A wise choice?” “An informed one.” Isolde’s smile was small and difficult to read. “Then the door will remember you kindly.” Rory couldn’t tell whether that was a blessing or a threat. She tucked the dagger into the inner pocket of her coat, where the cold of it rested against her ribs, and followed Isolde back toward the standing stones. As they walked, the silent stream whispered behind them. The night sky in its waters brightened, though the amber heavens above remained unchanged.
Somewhere in the grove, a
fruit fell and struck the ground with a sound like a heartbeat.
created_at
"2026-09-23T09:04:52.972Z"
9/23/2026, 9:04:52 AM
model
"openai/gpt-6-luna-20260922"
app_id
182717
external_user
(null)
streamed
true
cancelled
false
latency
5167
moderation_latency
(null)
generation_time
44176
tokens_prompt
1547
tokens_completion
3666
native_tokens_prompt
1532
native_tokens_completion
3451
native_tokens_completion_images
0
native_tokens_reasoning
776
native_tokens_cached
1529
num_media_prompt
(null)
num_input_audio_prompt
(null)
num_media_completion
0
num_search_results
(null)
num_fetches
(null)
web_search_engine
(null)
origin
"https://ncbench.com/"
is_byok
false
finish_reason
"stop"
native_finish_reason
"completed"
service_tier
"default"
usage
0.00174109
router
(null)
user_agent
"langchainjs-openai/1.0.0 ((node/v24.21.0; linux; x64))"
http_referer
(null)
request_id
"req-1790154292-O8C3992qZLas72vqzhnu"
session_id
(null)
preset_id
(null)
api_type
"completions"
id
"gen-1790154292-Kt6aNTHR2WEFtJGHwJTF"
upstream_id
"resp_0e9d8f1491b267dd016ab39635199087d1b54b038049af0ab4"
provider_responses
0
endpoint_id
"05e94e02-b9c2-4bbb-ba55-4082ee9ad687"
id
"resp_0e9d8f1491b267dd016ab39635199087d1b54b038049af0ab4"
is_byok
false
latency
1774
model_permaslug
"openai/gpt-6-luna-20260922"
provider_name
"OpenAI"
status
200
total_cost
0.00174109
cache_discount
0.00013761
upstream_inference_cost
0
provider_name
"OpenAI"
response_cache_source_id
(null)
data_region
"global"
workspace_id
"97e315e5-d303-487d-83c1-83180e8a13d4"
Evaluation details
Result
Evaluator
Details
Meta Data
100.00%
Adverbs in dialogue tags
Target: ≤10% dialogue tags with adverbs
totalTags
18
adverbTagCount
0
adverbTags
(empty)
dialogueSentences
65
tagDensity
0.277
leniency
0.554
rawRatio
0
effectiveRatio
0
95.21%
AI-ism adverb frequency
Target: <2% AI-ism adverbs (58 tracked)
wordCount
2087
totalAiIsmAdverbs
2
found
0
adverb
"slowly"
count
1
1
adverb
"carefully"
count
1
highlights
0
"slowly"
1
"carefully"
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)
66.46%
AI-ism word frequency
Target: <2% AI-ism words (290 tracked)
wordCount
2087
totalAiIsms
14
found
0
word
"whisper"
count
1
1
word
"wavered"
count
1
2
word
"pulsed"
count
1
3
word
"silence"
count
2
4
word
"weight"
count
1
5
word
"comforting"
count
1
6
word
"stomach"
count
1
7
word
"traced"
count
1
8
word
"warmth"
count
2
9
word
"pulse"
count
2
10
word
"could feel"
count
1
highlights
0
"whisper"
1
"wavered"
2
"pulsed"
3
"silence"
4
"weight"
5
"comforting"
6
"stomach"
7
"traced"
8
"warmth"
9
"pulse"
10
"could feel"
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
197
matches
(empty)
100.00%
Filter word density
Target: ≤3% sentences with filter/hedge words
filterCount
1
hedgeCount
2
narrationSentences
197
filterMatches
0
"feel"
hedgeMatches
0
"seemed to"
1
"began to"
100.00%
Gibberish response detection
Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words)
analyzedSentences
242
gibberishSentences
0
adjustedGibberishSentences
0
longSentenceCount
0
runOnParagraphCount
0
giantParagraphCount
0
wordSaladCount
0
repetitionLoopCount
0
controlTokenCount
0
repeatedSegmentCount
0
maxSentenceWordsSeen
37
ratio
0
matches
(empty)
100.00%
Markdown formatting overuse
Target: ≤5% words in markdown formatting
markdownSpans
0
markdownWords
0
totalWords
2085
ratio
0
matches
(empty)
100.00%
Missing dialogue indicators (quotation marks)
Target: ≤10% speech attributions without quotation marks
totalAttributions
20
unquotedAttributions
1
matches
0
"Not a portal, Rory told herself."
33.33%
Name drop frequency
Target: ≤1.0 per-name mentions per 100 words
totalMentions
78
wordCount
1759
uniqueNames
8
maxNameDensity
2.05
worstName
"Rory"
maxWindowNameDensity
4
worstWindowName
"Rory"
discoveredNames
Rory
36
Richmond
1
Park
1
London
1
Isolde
19
Nyx
15
Heartstone
4
Fae
1
persons
0
"Rory"
1
"Isolde"
2
"Nyx"
3
"Heartstone"
places
0
"Richmond"
1
"Park"
2
"London"
globalScore
0.477
windowScore
0.333
100.00%
Narrator intent-glossing
Target: ≤2% narration sentences with intent-glossing patterns
analyzedSentences
115
glossingSentenceCount
1
matches
0
"seemed made of moonlight hardened into metal"
56.12%
"Not X but Y" pattern overuse
Target: ≤1 "not X but Y" per 1000 words
totalMatches
3
per1kWords
1.439
wordCount
2085
matches
0
"not like water or glass, but like the world had briefly forgotten how to hold its shape"
1
"Not physically, but with a pressure behind her eyes, a sudden sharp memory of ev"
2
"not reflected light, but something rising from deep below"
100.00%
Overuse of "that" (subordinate clause padding)
Target: ≤2% sentences with "that" clauses
thatCount
0
totalSentences
242
matches
(empty)
100.00%
Paragraph length variance
Target: CV ≥0.5 for paragraph word counts
totalParagraphs
108
mean
19.31
std
19.04
cv
0.986
sampleLengths
0
10
1
61
2
61
3
25
4
6
5
14
6
54
7
20
8
5
9
4
10
6
11
5
12
14
13
43
14
6
15
41
16
7
17
5
18
2
19
27
20
45
21
22
22
3
23
57
24
7
25
39
26
8
27
5
28
29
29
17
30
81
31
33
32
8
33
11
34
28
35
57
36
6
37
6
38
11
39
10
40
8
41
22
42
56
43
22
44
6
45
11
46
4
47
5
48
1
49
5
100.00%
Passive voice overuse
Target: ≤2% passive sentences
passiveCount
2
totalSentences
197
matches
0
"been told"
1
"was gone"
100.00%
Past progressive (was/were + -ing) overuse
Target: ≤2% past progressive verbs
pastProgressiveCount
0
totalVerbs
299
matches
(empty)
100.00%
Em-dash & semicolon overuse
Target: ≤2% sentences with em-dashes/semicolons
emDashCount
2
semicolonCount
1
flaggedSentences
3
totalSentences
242
ratio
0.012
matches
0
"A tree with white bark bore a scatter of dark red fruit; one split open as they passed, revealing a shining black seed."
1
"Its stones were black with age, and green light moved at the bottom—not reflected light, but something rising from deep below."
2
"Not empty—waiting."
94.00%
Purple prose (modifier overload)
Target: <4% adverbs, <2% -ly adverbs, no adj stacking
wordCount
1765
adjectiveStacks
1
stackExamples
0
"slender, leaf-shaped blade"
adverbCount
61
adverbRatio
0.03456090651558073
lyAdverbCount
11
lyAdverbRatio
0.006232294617563739
100.00%
Repeated phrase echo
Target: ≤20% sentences with echoes (window: 2)
totalSentences
242
echoCount
0
echoWords
(empty)
100.00%
Sentence length variance
Target: CV ≥0.4 for sentence word counts
totalSentences
242
mean
8.62
std
6.11
cv
0.709
sampleLengths
0
10
1
37
2
19
3
5
4
17
5
6
6
4
7
25
8
6
9
3
10
4
11
13
12
8
13
6
14
7
15
7
16
12
17
16
18
3
19
23
20
8
21
12
22
5
23
4
24
4
25
2
26
5
27
10
28
4
29
15
30
5
31
20
32
3
33
6
34
5
35
20
36
4
37
12
38
5
39
2
40
5
41
2
42
3
43
8
44
16
45
5
46
8
47
9
48
23
49
11
47.52%
Sentence opener variety
Target: ≥60% unique sentence openers
consecutiveRepeats
6
diversityRatio
0.28512396694214875
totalSentences
242
uniqueOpeners
69
100.00%
Adverb-first sentence starts
Target: ≥3% sentences starting with an adverb
adverbCount
8
totalSentences
166
matches
0
"Too smooth, too dark."
1
"Then she saw the pale"
2
"Only their eyes shone, faint"
3
"Then the pendant against her"
4
"Then the pressure let go."
5
"Perhaps she had thought it."
6
"Instead the world had taken"
7
"Somewhere in the grove, a"
ratio
0.048
100.00%
Pronoun-first sentence starts
Target: ≤30% sentences starting with a pronoun
pronounCount
46
totalSentences
166
matches
0
"She had passed through Richmond"
1
"They stood in a loose"
2
"They had not been set"
3
"They had grown."
4
"She had not left so"
5
"She wasn’t sure why she’d"
6
"They slid ahead of Rory,"
7
"Their hand vanished at the"
8
"Their fingers were intact, though"
9
"She left no prints in"
10
"She would never have noticed"
11
"It had the quality of"
12
"She pressed a thumb to"
13
"She drew it out."
14
"Its surface held a faint"
15
"It pulsed once, and then"
16
"She stepped between the stones."
17
"She stood in a clearing"
18
"It lay across the clearing"
19
"They grew between the stones,"
ratio
0.277
65.42%
Subject-first sentence starts
Target: ≤72% sentences starting with a subject
subjectCount
131
totalSentences
166
matches
0
"The standing stones were easier"
1
"She had passed through Richmond"
2
"They stood in a loose"
3
"They had not been set"
4
"They had grown."
5
"Nyx halted behind her."
6
"Isolde’s silver hair gleamed between"
7
"She had not left so"
8
"Rory had checked."
9
"She wasn’t sure why she’d"
10
"The seer turned her pale-lavender"
11
"Rory glanced at Nyx."
12
"Nyx’s whisper stirred the air"
13
"They slid ahead of Rory,"
14
"The space between two stones"
15
"Nyx reached through."
16
"Their hand vanished at the"
17
"Rory’s own fingers went cold."
18
"The gap shivered, not like"
19
"Nyx withdrew their hand."
ratio
0.789
30.12%
Subordinate conjunction sentence starts
Target: ≥2% sentences starting with a subordinating conjunction
subConjCount
1
totalSentences
166
matches
0
"Now Isolde led them off"
ratio
0.006
100.00%
Technical jargon density
Target: ≤6% sentences with technical-jargon patterns
analyzedSentences
73
technicalSentenceCount
0
matches
(empty)
100.00%
Useless dialogue additions
Target: ≤5% dialogue tags with trailing filler fragments
totalTags
18
uselessAdditionCount
0
matches
(empty)
100.00%
Dialogue tag variety (said vs. fancy)
Target: ≤10% fancy dialogue tags
totalTags
18
fancyCount
2
fancyTags
0
"they murmured (murmur)"
1
"Nyx whispered (whisper)"
dialogueSentences
65
tagDensity
0.277
leniency
0.554
rawRatio
0.111
effectiveRatio
0.062
89.6060%