NC Bench
Overview
About
Tests
Categories
Models
Vendors
Compare
Run: 2026-02-17-01KHMMFWFERRAYS1W1K6QSNHYE
Run Details
Model:
GPT-4o, May 13th (temp=0)
Test:
Bad Writing Habits
Scenario:
Romance: separated couple reunites
Duration:
15.5s
Cost:
$0.025700
Provider:
OpenAI
Evaluation summary
Score
Evaluator
Details Link
42.11%
Adverbs in dialogue tags
(details)
82.11%
AI-ism adverb frequency
(details)
100.00%
AI-ism character names
(details)
100.00%
AI-ism location names
(details)
28.44%
AI-ism word frequency
(details)
33.33%
Cliché density
(details)
80.56%
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)
83.33%
Name drop frequency
(details)
34.62%
Narrator intent-glossing
(details)
100.00%
"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)
46.55%
Em-dash & semicolon overuse
(details)
94.00%
Purple prose (modifier overload)
(details)
100.00%
Repeated phrase echo
(details)
100.00%
Sentence length variance
(details)
55.43%
Sentence opener variety
(details)
45.66%
Adverb-first sentence starts
(details)
0.00%
Pronoun-first sentence starts
(details)
28.49%
Subject-first sentence starts
(details)
0.00%
Subordinate conjunction sentence starts
(details)
76.41%
Technical jargon density
(details)
0.00%
Useless dialogue additions
(details)
0.00%
Dialogue tag variety (said vs. fancy)
(details)
67.7015%
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="4415" name="Lucien Moreau" aliases="Lucien, Luc, the Frenchman" pronouns="he/him" species="Half-Demon" storyRole="Ally"> <eyeColor>heterochromatic — one amber, one black</eyeColor> <hair>slicked-back platinum blond</hair> <height>5'11"</height> <age>32</age> <cane>ivory-handled cane that conceals a thin blade</cane> <dress>tailored charcoal suits</dress> <description>An impeccably dressed fixer and information broker in London's supernatural underworld. He speaks four languages fluently.</description> <backstory>Born in Marseille to a human mother and a demon father from the realm of Avaros.</backstory> </character> <location id="858" name="Eva's Flat" aliases="Eva's place, the flat on Brick Lane" realm="Earth"> <cat>tabby cat named Ptolemy</cat> <security>three deadbolts on the front door</security> <description>A cramped one-bedroom flat above a curry house on Brick Lane, East London. Every surface is covered with books, scrolls, and research notes.</description> </location> </codex> Write a fully fleshed out scene of at least 1000 words in the romance genre. Two people who parted on complicated terms are forced together again when one shows up unannounced at the other's flat. There's history between them — attraction, hurt, and things left unsaid. Write the scene from the moment the door opens. Use the codex entries above as your world reference for characters and setting. Only include the prose of the scene without any markdown or commentary.
Model response
Messages
Meta
AI
Aurora Carter stood in the
narrow hallway of Eva's flat, her fingers brushing the small crescent-shaped scar on her left wrist, a nervous habit she hadn't
quite shaken
.
The scent of curry wafted
up from the restaurant below, mingling with the musty aroma of old books and parchment.
She shifted her weight from
one foot to the other, her bright blue eyes fixed on the three deadbolts securing the door.
She had come here for
solace
, for the comfort of her childhood friend, but the universe had other plans. The first knock was tentative, almost hesitant. Rory's heart
skipped a beat
. She
wasn't expecting
anyone. Eva was out of town, attending some arcane symposium in Edinburgh. The second knock was firmer, more insistent.
Rory's hand hovered over the
top deadbolt, her mind
racing
through possibilities.
It couldn't be Evan; he
didn't know where she was. But who else would come unannounced? She took a deep breath, steeling herself, and unlocked the door. As it swung open, her breath caught in her throat. Standing there, impeccably dressed in a tailored charcoal suit, was Lucien Moreau.
His heterochromatic eyes—one amber, one
black—bore into her with an
intensity
that made her
pulse
quicken. "Lucien,"
she breathed, her voice barely
above a
whisper
. "Rory,"
he replied, his French accent
caressing her name like a lover's touch.
He leaned on his ivory-handled
cane, the one that concealed a thin blade, and offered her a small, almost apologetic smile. "May I come in?" She hesitated, memories flooding back.
The last time they had
seen each other, things had ended on a note of unresolved
tension
, a mix of attraction and
hurt that neither
had been willing to address. But something in his eyes—perhaps the vulnerability she saw there—made her step aside and gesture for him to enter.
Lucien walked in, his presence
filling the cramped space.
Ptolemy, Eva's tabby cat, darted
out from under the coffee table and wound around his legs, purring loudly. Lucien bent down to scratch the cat behind the ears, his movements graceful despite the cane. "To what do I owe the pleasure?" Rory asked, closing the door and leaning against it, her arms crossed over her chest. Lucien straightened, his eyes
scanning
the room, taking in the clutter of books and scrolls. "I needed to see you,"
he said simply, his gaze
finally settling on her. "There are things we left unsaid." Rory's heart ached at his words.
She had tried to bury
those feelings, to move on, but seeing him now brought everything rushing back. "You could have called,"
she said, her voice tinged
with bitterness. "I could have,"
he admitted, taking a step
closer. "But I needed to see you in person. To explain."
She raised an eyebrow, her
skepticism evident. "Explain what, exactly?" Lucien sighed, running a hand through his slicked-back platinum blond hair. "Everything. Why I left. Why I couldn't stay." Rory's
eyes narrowed
. "You think you can just waltz back into my life and make everything right with a few words?" "No,"
he said softly, his eyes
pleading. "But I have to try." She wanted to stay angry, to hold onto the hurt, but the sincerity in his voice made it difficult.
She pushed off the door
and walked over to the small kitchenette, busying herself with making tea. It was something to do, something to keep her hands occupied while her mind
raced
. Lucien followed her, leaning against the counter as she filled the kettle. "I never meant to hurt you, Rory,"
he said quietly
. "But there are things about my life, about who I am, that you don't know." She glanced at him, her eyes searching his face for any sign of deceit. "Then tell me,"
she said, her voice barely above a whisper
. He took a deep breath, his heterochromatic eyes locking onto hers. "I'm not just a man, Rory. I'm half-demon. My father is from the realm of Avaros." She blinked, the revelation taking a moment to sink in. "Half-demon?" she repeated, her mind struggling to process the information. He nodded. "It's why I had to leave. There are forces in this world, and others, that would use me for their own ends. I couldn't risk putting you in danger." Rory's hands
trembled
as she poured hot water into two mugs. She handed one to Lucien, their fingers brushing briefly, sending a jolt of electricity through her. "You should have told me,"
she said, her voice shaking
. "I had a right to know." "I know," he said, his voice
filled with regret
. "But I was scared. Scared of losing you. Scared of what you would think of me." She took a sip of her tea, the
warmth
spreading through her, grounding her. "And now?" she asked, meeting his gaze. "Now," he said, taking a step closer, "I can't stay away. I need you, Rory. More than I've ever needed anyone." Her
heart pounded in her chest
, the walls she had built around it beginning to crumble. She wanted to believe him, to let herself
feel
the love she had tried so hard to forget. But the fear of getting hurt again held her back. Lucien reached out, his hand
gently
cupping her cheek. "I know I don't deserve your forgiveness,"
he said, his voice raw with emotion
. "But I'm asking for it anyway. Please, give me another chance." Tears welled up in her eyes, and she blinked them away, not wanting to show weakness. But the sincerity in his eyes, the vulnerability, broke through her defenses. She placed her hand over his, leaning into his touch. "Okay,"
she whispered, her voice trembling
. "But this time, no more secrets." He nodded, his eyes
filled with relief
and gratitude. "No more secrets," he promised. They stood there, the
weight
of their past hanging between them, but for the first time in a long time, Rory felt
a glimmer of hope
.
Maybe, just maybe, they could
find a way to heal the wounds and build something new together. Lucien leaned in, his lips brushing against hers in a tentative kiss,
as if seeking permission
. She responded, her arms wrapping around his neck, pulling him closer. The kiss deepened, a promise of what could be, a chance to rewrite their story. When they finally pulled apart, both breathless, Lucien rested his forehead against hers. "I love you, Rory," he whispered, his voice filled with conviction. "I love you too," she replied, her heart full for the first time in what
felt like forever
. As they stood there, wrapped in each other's arms, the world outside faded away. For now, in this moment, they had each other, and that was enough.
created_at
"2026-02-17T01:47:44.742651+00:00"
2/17/2026, 1:47:44 AM
model
"openai/gpt-4o-2024-05-13"
app_id
182717
external_user
(null)
streamed
true
cancelled
false
latency
492
moderation_latency
(null)
generation_time
15417
tokens_prompt
808
tokens_completion
1659
native_tokens_prompt
754
native_tokens_completion
1462
native_tokens_completion_images
(null)
native_tokens_reasoning
0
native_tokens_cached
0
num_media_prompt
(null)
num_input_audio_prompt
(null)
num_media_completion
0
num_search_results
(null)
origin
"https://ncbench.com/"
is_byok
false
finish_reason
"stop"
native_finish_reason
"stop"
usage
0.0257
router
(null)
provider_responses
0
id
"chatcmpl-DA4TQdVHqK5QFskkoWw5gEdDepOaj"
status
200
is_byok
false
latency
466
endpoint_id
"3d6584e7-a2bb-48d6-903d-24e3d90e7e55"
provider_name
"OpenAI"
model_permaslug
"openai/gpt-4o-2024-05-13"
api_type
"completions"
id
"gen-1771292848-y1nSHkNExAxtqIVIIFhO"
upstream_id
"chatcmpl-DA4TQdVHqK5QFskkoWw5gEdDepOaj"
total_cost
0.0257
cache_discount
(null)
upstream_inference_cost
0
provider_name
"OpenAI"
Evaluation details
Result
Evaluator
Details
Meta Data
42.11%
Adverbs in dialogue tags
Target: ≤10% dialogue tags with adverbs
totalTags
19
adverbTagCount
3
adverbTags
0
"he said simply [simply]"
1
"he said softly [softly]"
2
"he said quietly [quietly]"
dialogueSentences
33
tagDensity
0.576
leniency
1
rawRatio
0.158
effectiveRatio
0.158
82.11%
AI-ism adverb frequency
Target: <2% AI-ism adverbs (58 tracked)
wordCount
1118
totalAiIsmAdverbs
4
found
0
adverb
"barely above a whisper"
count
2
1
adverb
"softly"
count
1
2
adverb
"gently"
count
1
highlights
0
"barely above a whisper"
1
"softly"
2
"gently"
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)
28.44%
AI-ism word frequency
Target: <2% AI-ism words (290 tracked)
wordCount
1118
totalAiIsms
16
found
0
word
"weight"
count
2
1
word
"solace"
count
1
2
word
"skipped a beat"
count
1
3
word
"racing"
count
1
4
word
"intensity"
count
1
5
word
"pulse"
count
1
6
word
"whisper"
count
2
7
word
"tension"
count
1
8
word
"scanning"
count
1
9
word
"tinged"
count
1
10
word
"eyebrow"
count
1
11
word
"raced"
count
1
12
word
"trembled"
count
1
13
word
"warmth"
count
1
highlights
0
"weight"
1
"solace"
2
"skipped a beat"
3
"racing"
4
"intensity"
5
"pulse"
6
"whisper"
7
"tension"
8
"scanning"
9
"tinged"
10
"eyebrow"
11
"raced"
12
"trembled"
13
"warmth"
33.33%
Cliché density
Target: ≤1 cliche(s) per 800-word window
totalCliches
3
maxInWindow
3
found
0
label
"heart pounded in chest"
count
1
1
label
"eyes widened/narrowed"
count
1
2
label
"flicker of emotion"
count
1
highlights
0
"heart pounded in her chest"
1
"eyes narrowed"
2
"a glimmer of hope"
80.56%
Emotion telling (show vs. tell)
Target: ≤3% sentences with emotion telling
emotionTells
4
narrationSentences
75
matches
0
"filled with regret"
1
"d with regret"
2
"filled with relief"
3
"d with relief"
100.00%
Filter word density
Target: ≤3% sentences with filter/hedge words
filterCount
1
hedgeCount
1
narrationSentences
75
filterMatches
0
"feel"
hedgeMatches
0
"tried to"
100.00%
Gibberish response detection
Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words)
analyzedSentences
89
gibberishSentences
0
adjustedGibberishSentences
0
longSentenceCount
0
runOnParagraphCount
0
giantParagraphCount
0
wordSaladCount
0
repetitionLoopCount
0
controlTokenCount
0
maxSentenceWordsSeen
30
ratio
0
matches
(empty)
100.00%
Markdown formatting overuse
Target: ≤5% words in markdown formatting
markdownSpans
0
markdownWords
0
totalWords
1114
ratio
0
matches
(empty)
100.00%
Missing dialogue indicators (quotation marks)
Target: ≤10% speech attributions without quotation marks
totalAttributions
21
unquotedAttributions
0
matches
(empty)
83.33%
Name drop frequency
Target: ≤1.0 per-name mentions per 100 words
totalMentions
26
wordCount
885
uniqueNames
9
maxNameDensity
1.13
worstName
"Lucien"
maxWindowNameDensity
2.5
worstWindowName
"Lucien"
discoveredNames
Carter
1
Eva
3
Edinburgh
1
Evan
1
Lucien
10
Moreau
1
French
1
Rory
7
Tears
1
persons
0
"Carter"
1
"Eva"
2
"Evan"
3
"Lucien"
4
"Moreau"
5
"Rory"
6
"Tears"
places
0
"Edinburgh"
globalScore
0.935
windowScore
0.833
34.62%
Narrator intent-glossing
Target: ≤2% narration sentences with intent-glossing patterns
analyzedSentences
65
glossingSentenceCount
3
matches
0
"quite shaken"
1
"as if seeking permission"
2
"felt like forever"
100.00%
"Not X but Y" pattern overuse
Target: ≤1 "not X but Y" per 1000 words
totalMatches
0
per1kWords
0
wordCount
1114
matches
(empty)
100.00%
Overuse of "that" (subordinate clause padding)
Target: ≤2% sentences with "that" clauses
thatCount
1
totalSentences
89
matches
0
"hurt that neither"
100.00%
Paragraph length variance
Target: CV ≥0.5 for paragraph word counts
totalParagraphs
35
mean
31.83
std
16.47
cv
0.518
sampleLengths
0
89
1
62
2
49
3
9
4
38
5
54
6
43
7
22
8
35
9
35
10
19
11
10
12
19
13
21
14
12
15
51
16
37
17
25
18
27
19
20
20
31
21
43
22
25
23
21
24
21
25
44
26
34
27
38
28
12
29
14
30
43
31
42
32
24
33
18
34
27
100.00%
Passive voice overuse
Target: ≤2% passive sentences
passiveCount
0
totalSentences
75
matches
(empty)
100.00%
Past progressive (was/were + -ing) overuse
Target: ≤2% past progressive verbs
pastProgressiveCount
1
totalVerbs
175
matches
0
"wasn't expecting"
46.55%
Em-dash & semicolon overuse
Target: ≤2% sentences with em-dashes/semicolons
emDashCount
4
semicolonCount
1
flaggedSentences
3
totalSentences
89
ratio
0.034
matches
0
"It couldn't be Evan; he didn't know where she was."
1
"His heterochromatic eyes—one amber, one black—bore into her with an intensity that made her pulse quicken."
2
"But something in his eyes—perhaps the vulnerability she saw there—made her step aside and gesture for him to enter."
94.00%
Purple prose (modifier overload)
Target: <4% adverbs, <2% -ly adverbs, no adj stacking
wordCount
892
adjectiveStacks
1
stackExamples
0
"small crescent-shaped scar"
adverbCount
30
adverbRatio
0.033632286995515695
lyAdverbCount
11
lyAdverbRatio
0.01233183856502242
100.00%
Repeated phrase echo
Target: ≤20% sentences with echoes (window: 2)
totalSentences
89
echoCount
0
echoWords
(empty)
100.00%
Sentence length variance
Target: CV ≥0.4 for sentence word counts
totalSentences
89
mean
12.52
std
5.88
cv
0.47
sampleLengths
0
28
1
20
2
22
3
19
4
7
5
5
6
4
7
11
8
7
9
12
10
10
11
6
12
11
13
10
14
12
15
16
16
9
17
13
18
21
19
4
20
5
21
30
22
19
23
9
24
18
25
16
26
22
27
15
28
14
29
6
30
6
31
18
32
11
33
9
34
10
35
7
36
3
37
11
38
8
39
3
40
18
41
7
42
5
43
19
44
17
45
15
46
12
47
10
48
15
49
14
55.43%
Sentence opener variety
Target: ≥60% unique sentence openers
consecutiveRepeats
4
diversityRatio
0.3595505617977528
totalSentences
89
uniqueOpeners
32
45.66%
Adverb-first sentence starts
Target: ≥3% sentences starting with an adverb
adverbCount
1
totalSentences
73
matches
0
"Maybe, just maybe, they could"
ratio
0.014
0.00%
Pronoun-first sentence starts
Target: ≤30% sentences starting with a pronoun
pronounCount
41
totalSentences
73
matches
0
"She shifted her weight from"
1
"She had come here for"
2
"She wasn't expecting anyone."
3
"It couldn't be Evan; he"
4
"She took a deep breath,"
5
"His heterochromatic eyes—one amber, one"
6
"she breathed, her voice barely"
7
"he replied, his French accent"
8
"He leaned on his ivory-handled"
9
"She hesitated, memories flooding back."
10
"he said simply, his gaze"
11
"She had tried to bury"
12
"she said, her voice tinged"
13
"he admitted, taking a step"
14
"She raised an eyebrow, her"
15
"he said softly, his eyes"
16
"She wanted to stay angry,"
17
"She pushed off the door"
18
"It was something to do,"
19
"he said quietly"
ratio
0.562
28.49%
Subject-first sentence starts
Target: ≤72% sentences starting with a subject
subjectCount
63
totalSentences
73
matches
0
"Aurora Carter stood in the"
1
"The scent of curry wafted"
2
"She shifted her weight from"
3
"She had come here for"
4
"The first knock was tentative,"
5
"Rory's heart skipped a beat."
6
"She wasn't expecting anyone."
7
"Eva was out of town,"
8
"The second knock was firmer,"
9
"Rory's hand hovered over the"
10
"It couldn't be Evan; he"
11
"She took a deep breath,"
12
"His heterochromatic eyes—one amber, one"
13
"she breathed, her voice barely"
14
"he replied, his French accent"
15
"He leaned on his ivory-handled"
16
"She hesitated, memories flooding back."
17
"The last time they had"
18
"Lucien walked in, his presence"
19
"Ptolemy, Eva's tabby cat, darted"
ratio
0.863
0.00%
Subordinate conjunction sentence starts
Target: ≥2% sentences starting with a subordinating conjunction
subConjCount
0
totalSentences
73
matches
(empty)
ratio
0
76.41%
Technical jargon density
Target: ≤6% sentences with technical-jargon patterns
analyzedSentences
43
technicalSentenceCount
4
matches
0
"His heterochromatic eyes—one amber, one black—bore into her with an intensity that made her pulse quicken."
1
"Lucien straightened, his eyes scanning the room, taking in the clutter of books and scrolls."
2
"She handed one to Lucien, their fingers brushing briefly, sending a jolt of electricity through her."
3
"Lucien leaned in, his lips brushing against hers in a tentative kiss, as if seeking permission."
0.00%
Useless dialogue additions
Target: ≤5% dialogue tags with trailing filler fragments
totalTags
19
uselessAdditionCount
8
matches
0
"she breathed, her voice barely above a whisper"
1
"he replied, his French accent caressing her name like a lover's touch"
2
"he said simply, his gaze finally settling on her"
3
"he said softly, his eyes pleading"
4
"she said, her voice barely above a whisper"
5
"she said, her voice shaking"
6
"he said, his voice raw with emotion"
7
"she whispered, her voice trembling"
0.00%
Dialogue tag variety (said vs. fancy)
Target: ≤10% fancy dialogue tags
totalTags
19
fancyCount
6
fancyTags
0
"she breathed (breathe)"
1
"he admitted (admit)"
2
"she repeated (repeat)"
3
"she whispered (whisper)"
4
"he promised (promise)"
5
"he whispered (whisper)"
dialogueSentences
33
tagDensity
0.576
leniency
1
rawRatio
0.316
effectiveRatio
0.316
67.7015%