Run: 2026-03-18-01KM07DHXKKMVPEH3Y5Z3HWFHZ

Run Details

Duration:
19.2s
Cost:
$0.018847
Provider:
OpenAI

Model input

System
You are an expert and award-winning novel writer in the dark Romance genre. Your readers are hooked on your stories and can't wait to read the book you have in store. <important> - MUST: Start each chapter in medias res (in the middle of action). AVOID talking about the weather, time of day, the position of the sun, or other boring stuff. - The instructions/summary are just a that, a summary. Feel free to add details, stretch sections and add interesting transitions/descriptions/fillers. - When called for it, have fast-paced action, but otherwise take things slow. This is an experience, and not for people with short attention spans. Enjoy the wine, not slurp Red Bull. - Add descriptions when transitioning places/times/etc, or when coming by new places (e.g. a corner shop, a cafe, etc.). But remember: NOT at the start or end of a chapter. - MUST: AVOID ending in internal monologue, reminiscing or waiting for the next day. A good chapter end is when we're ending right when shit hits the fan. We want to have the reader be excited for what comes next. So no reminiscing, contemplating or summarizing the day. It's popcorn time! </important>
User/Human
Take into account the following glossary of characters/locations/items/lore... when writing your response: <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> <proseGuidelines> <styleGuide> - Write in past tense and use British English spelling and grammar - Keep a Flesch reading ease score of 60 - Respect the the Royal Order of Adjectives: The order is: opinion, size, age, shape, color, origin, material, purpose, followed by the noun itself (e.g., "a lovely little old rectangular green French silver whittling knife") - Respect the ablaut reduplication rule (e.g. tick-tock, flip-flop) - Write in active voice - Passive voice: <bad>The book was read by Sarah.</bad> - Active voice: <good>Sarah read the book.</good> - Reduce the use of passive verbs - <bad>For a moment, I was tempted to throw in the towel.</bad> - <good>For a moment, I felt tempted to throw in the towel.</good> - Avoid misplaced modifiers that can cause confusion when starting with "-ing" words: - <bad>Considering going to the store, the empty fridge reflected in Betty's eyes.</bad> - <good>Betty stared into the empty fridge. It was time to go to the store.</good> - Avoid redundant adverbs that state the obvious meaning already contained in the verb: - <bad>She whispered quietly to her mom.</bad> - <good>She whispered to her mom.</good> - Use stronger, more descriptive verbs over weak ones: - <bad>Daniel drove quickly to his mother's house.</bad> - <good>Daniel raced to his mother's house.</good> - Omit adverbs that don't add solid meaning like "extremely", "definitely", "truly", "very", "really": - <bad>The movie was extremely boring.</bad> - <good>The movie was dull.</good> - Use adverbs to replace clunky phrasing when they increase clarity: - <bad>He threw the bags into the corner in a rough manner.</bad> - <good>He threw the bags into the corner roughly.</good> - Avoid making simple thoughts needlessly complex: - <bad>After I woke up in the morning the other day, I went downstairs, turned on the stove, and made myself a very good omelet.</bad> - <good>I cooked a delicious omelet for breakfast yesterday morning.</good> - Never backload sentences by putting the main idea at the end: - <bad>I decided not to wear too many layers because it's really hot outside.</bad> - <good>It's sweltering outside today, so I dressed light.</good> - Omit nonessential details that don't contribute to the core meaning: - <bad>It doesn't matter what kind of coffee I buy, where it's from, or if it's organic or not—I need to have cream because I really don't like how the bitterness makes me feel.</bad> - <good>I add cream to my coffee because the bitter taste makes me feel unwell.</good> - Always follow the "show, don't tell" principle. For instance: - Telling: <bad>Michael was terribly afraid of the dark.</bad> - Showing: <good>Michael tensed as his mother switched off the light and left the room.</good>- Telling: <bad>I walked through the forest. It was already Fall, and I was getting cold.</bad> - Showing: <good>Dry orange leaves crunched under my feet. I pulled my coat's collar up and rubbed my hands together.</good>- Add sensory details (sight, smell, taste, sound, touch) to support the "showing" (but keep an active voice) - <bad>The room was filled with the scent of copper.</bad> - <good>Copper stung my nostrils. Blood. Recent.</good> - Use descriptive language more sporadically. While vivid descriptions are engaging, human writers often use them in bursts rather than consistently throughout a piece. When adding them, make them count! Like when we transition from one location to the next, or someone is reminiscing their past, or explaining a concept/their dream... - Avoid adverbs and clichés and overused/commonly used phrases. Aim for fresh and original descriptions. - Avoid writing all sentences in the typical subject, verb, object structure. Mix short, punchy sentences with long, descriptive ones. Drop fill words to add variety. Like so: <good>Locked. Seems like someone doesn't want his secrets exposed. I can work with that.</good> - Convey events and story through dialogue. It is important to keep a unique voice for every character and make it consistent. - Write dialogue that reveals characters' personalities, motivations, emotions, and attitudes in an interesting and compelling manner - Leave dialogue unattributed. If needed, only use "he/she said" dialogue tags and convey people's actions or face expressions through their speech. Dialogue always is standalone, never part of a paragraph. Like so: - <bad>"I don't know," Helena said nonchalantly, shrugging her shoulders</bad> - <good>"No idea" "Why not? It was your responsibility"</good> - Avoid boring and mushy dialog and descriptions, have dialogue always continue the action, never stall or include unnecessary fluff. Vary the descriptions to not repeat yourself. Avoid conversations that are just "Let's go" "yes, let's" or "Are you ready?" "Yes I'm ready". Those are not interesting. Think hard about every situtation and word of text before writing dialogue. If it doesn't serve a purpose and it's just people talking about their day, leave it. No one wants to have a normal dinner scene, something needs to happen for it to be in the story. Words are expensive to print, so make sure they count! - Put dialogue on its own paragraph to separate scene and action. - Use body language to reveal hidden feelings and implied accusations- Imply feelings and thoughts, never state them directly - NEVER use indicators of uncertainty like "trying" or "maybe" - NEVER use em-dashes, use commas for asides instead </styleGuide> <voiceGuide> Each character in the story needs to have distinct speech patterns: - Word choice preferences - Sentence length tendencies - Cultural/educational influences - Verbal tics and catchphrases Learn how each person talks and continue in their style, and use their Codex entries as reference. <examples> - <bad>"We need to go now." "Yes, we should leave." "I agree."</bad> <good>"Time's up." "Indeed, our departure is rather overdue." "Whatever, let's bounce."</good> - Power Dynamic Example: <bad> "We need to discuss the contract." "Yes, let's talk about it." "I have concerns." </bad> <good> "A word about the contract." "Of course, Mr. Blackwood. Whatever you need." "The terms seem..." A manicured nail tapped the desk. "Inadequate." "I can explain every-" "Can you?" </good> </examples> </voiceGuide> <dialogueFlow> When writing dialogue, consider that it usually has a goal in mind, which gives it a certain flow. Make dialogue sections also quite snappy in the back and forth, and don't spread the lines out as much. It's good to have details before, after, or as a chunk in-between, but we don't want to have a trail of "dialogue breadcrumbs" spread throughout a conversation. <examples> - Pattern 1 - Question/Deflection/Revelation: <good> "Where were you last night?" "Work. The usual." "Lipstick's an interesting shade for spreadsheets." </good> - Pattern 2 - Statement/Contradiction/Escalation: <good> "Your brother's clean." "Tommy doesn't touch drugs." "I'm holding his tox screen." </good> - Pattern 3 - Observation/Denial/Truth: <good> "That's a new watch." "Birthday gift." "We both know what birthdays mean in this business." </good> - Example - A Simple Coffee Order: <bad> "I'll have a coffee." "What size?" "Large, please." </bad> <good> "Black coffee.""Size?""Large. Been a long night." "That bodega shooting?" "You watch too much news." "My brother owns that store." </good> This short exchange: - Advances plot (reveals connection to crime) - Shows character (cop working late) - Creates tension (unexpected connection) - Sets up future conflict (personal stake) - Example - Dinner Scene: <bad> "Pass the salt." "Here you go." "Thanks." </bad> <good> "Salt?" "Perfect as is. Mother's recipe." "Mother always did prefer... bland things." "Unlike your first wife?" </good> - Example - Office Small Talk: <bad> "Nice weather today." "Yes, very nice." "Good for golf." </bad> <good> "Perfect golf weather." "Shame about your membership." "Temporary suspension. Board meets next week." "I know. I called the vote." </good> </examples> </dialogueFlow> <subtextGuide> - Layer dialogue with hidden meaning: <bad>"I hate you!" she yelled angrily.</bad> <good>"I made your favorite dinner." The burnt pot sat accusingly on the stove.</good> - Create tension through indirect communication: <bad>"Are you cheating on me?"</bad> <good>"Late meeting again?" The lipstick stain on his collar caught the light.</good> <examples> - Example 1 - Unspoken Betrayal: <bad> "Did you tell them about our plans?" "No, I would never betray you." "I don't believe you." </bad> <good> "Funny. Johnson mentioned our expansion plans today." "The market's full of rumors." "Mentioned the exact numbers, actually." The pen in his hand snapped. </good> - Example 2 - Failed Marriage: <bad> "You're never home anymore." "I have to work late." "I miss you." </bad> <good> "Your dinner's in the microwave. Again." "Meetings ran long." "They always do." She folded the same shirt for the third time. </good> - Example 3 - Power Struggle: <bad> "You can't fire me." "I'm the boss." "I'll fight this." </bad> <good> "That's my father's nameplate you're sitting behind." "Was." "The board meeting's on Thursday." </good> </examples> </subtextGuide> <sceneDetail> While writing dialogue makes things more fun, sometimes we need to add detail to not have it be a full on theatre piece. <examples> - Example A (Power Dynamic Scene) <good> "Where's my money?" The ledger snapped shut. "I need more time." "Interesting." He pulled out a familiar gold pocket watch. My mother's. "Time is exactly what you bargained with last month." "That was different-" "Was it?" The watch dangled between us. "Four generations of O'Reillys have wound this every night. Your mother. Your grandmother. Your great-grandmother.Shall we see who winds it next?" </good> - Example B (Action Chase) It's much better to be in the head of the character experiencing it, showing a bit of their though-process, mannerisms and personality: <good> Three rules for surviving a goblin chase in Covent Garden: Don't run straight. Don't look back. Don't let them herd you underground. I broke the first rule at Drury Lane. Rookie mistake. The fruit cart I dodged sailed into the wall behind me. Glass shattered. Someone screamed about insurance. *Tourist season's getting rough*, the scream seemed to say. Londoners adapt fast. "Oi! Market's closed!" The goblin's accent was pure East End. They're evolving. Learning. I spotted the Warren Street tube station sign ahead. *Shit.* There went rule three. </good> - Example C (Crime Scene Investigation) <good> "Greek." Davies snapped photos of the symbols. "No, wait. Reverse Greek." "Someone's been watching too many horror films." I picked up a receipt from the floor. Occult supply shop in Camden. Paid by credit card. *Amateur hour*. "Could be dangerous though," Davies said. "Remember Bristol?" "Bristol was Sanskrit. And actual cultists." I pointed to the nearest symbol. "This genius wrote 'darkness' backwards but used a Sigma instead of an S. It's summoning Instagram followers at best." "Speaking of followers..." Davies pointed to heavy foot traffic in the dust. Multiple sets. All new trainers. *Ah.* "Anyone check local uni paranormal societies?" </good> - Example D (Dialogue-heavy) <good> "Found your card in her wallet." The detective slid it across the table. Worn edges. Folded corner. Three years old at least. "Standard practice. I work missing persons." "Funny thing about missing persons.Eventually they stop being missing. Turn up in the Thames. Under motorways. In pieces." "I don't-" "You found four last year. All breathing." She opened a file. "This would've been your first dead one. If we hadn't found her first." The card felt heavier somehow. </good> </examples> </sceneDetail> <sceneOpenings> KEY RULE: Never open with more than one paragraph of description, no matter how beautiful. Description should be earned through action and dialogue. Instead of opening with setting description, open with: - A character doing something specific - A line of dialogue that raises questions - An unexpected observation - A moment of tension or conflict - Start with a hook that's 1-2 sentences maximum - Follow with a smaller paragraph that provides immediate context - Vary paragraph size from the start to create visual interest </sceneOpenings> </proseGuidelines> Write a chapter based on the following instructions: <instructions> 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. </instructions>

Model response

AI
Three deadbolts didn’t slow Lucien Moreau down. They only made the knock sound smug. Aurora had one hand on a battered take-away bag and the other on the top bolt when she heard it again, a measured rap against the front door that cut straight through the chatter from the bar below. Her stomach tightened. Ptolemy launched himself off the arm of the sofa and vanished under a mountain of research notes. Another knock. She yanked the first deadbolt free and wrenched the door open. Lucien stood on the landing like he had stepped out of a tailor’s window and into her worst decision. Charcoal coat fitted close over broad shoulders. Ivory-handled cane hooked lightly in one hand. Platinum hair slicked back with surgical precision, not a strand out of place, not a hint that he had crossed half of London to stand here and ruin her evening. One amber eye. One black. Both fixed on her face with that same unnerving patience he wore when he wanted something and knew the world would bend. Aurora tightened her grip on the door. “You’ve got a talent for being unwelcome.” His gaze flicked to the take-away bag, then back to her mouth. “You kept the address.” She gave him a cold smile. “Congratulations. You can read.” The corner of his mouth moved, not quite a smile. He looked past her shoulder into the flat, over the stacks of books, the spread of scrolls, the cluttered coffee table, the half-empty mug with a lipstick stain she didn’t remember leaving. His expression sharpened. “You live here?” “I sleep here. Most nights. It suits the budget.” “Charming.” “Why are you here?” He lifted the cane a fraction, then let it settle again against his coat. “May I enter before we continue the ritual of mutual hostility?” “No.” A beat. “Your refusal wounds me, Rory.” Her pulse gave a rude kick at the sound of that name on his tongue. She hated that she noticed. Hated more that he knew she noticed. “Don’t call me that.” “Then invite me in, Aurora.” She should have shut the door in his face. That would have been sensible. Clean. The sort of choice that left no room for old heat or old damage. Instead, she opened the door wider, enough for him to see she had no intention of welcoming him, and stepped aside. He glided past her with the faint scent of cold spice, expensive soap, and something darker beneath it, something that always clung to him when he’d been dealing with people who worked at the edges of the supernatural underworld. He entered without hurry, as if he owned the air in the room. As if he had never once left her standing in the wreckage of a conversation she still hadn’t managed to bury. Ptolemy popped one green eye out from beneath the sofa, assessed Lucien with insulted dignity, then withdrew. Aurora shut the door and slid the first deadbolt back into place. Lucien glanced at the locks. “Still paranoid.” “Still alive.” His gaze moved over her. Black trainers, black jeans, white T-shirt under an old cardigan, sleeves pushed up to her elbows. His eyes paused on the small crescent scar at her left wrist. Just a flicker, but she caught it. Of course she did. Lucien never missed anything useful, and she had once been useful to him. “What do you want?” He set the cane against the wall with care, like he was placing a blade within reach and making a point of the courtesy. Then he reached into the inside pocket of his coat and drew out a slim black envelope. Aurora didn’t move. He held it between two fingers. “This is for you.” “I’m not in the mood for party invitations.” “No one has ever invited you to a party.” “That’s because I know how to leave one.” “Mm.” He took one slow step closer. She caught herself and hated that too, because the movement wasn’t retreat, not exactly. It was awareness. Her body always knew him before her pride did. That made her angry enough to speak before he could. “You couldn’t have sent a message.” “I did.” “I ignored it.” “You left me no choice.” “There’s always a choice.” His mouth flattened. “Not where this is concerned.” A silence opened between them, dense and familiar. Not empty. Never empty with Lucien. The room seemed to compress around it, books and notes and the old warmth from the bar below all turning thin and fragile. Aurora crossed her arms. “You showed up here for a reason. Use your words.” “Your hospitality grows colder by the minute.” “Lucien.” That did it. Something shifted behind his eyes, some old irritation flashing bright beneath the polish. He liked control. He liked elegance. He liked being the man in the room with the clean hands and the clean suit and the information everyone else needed. He liked her better when she made him work for things. He lifted the envelope. “Open it.” “No.” One black brow rose. “You are impossible.” “You knew that when you came.” “I had hopes you’d grown manageable.” She laughed once, without humour. “You’ve got the wrong flat for that fantasy.” His gaze moved to the crowded kitchen corner where she kept her charger, a stack of delivery receipts, and a knife block with one slot empty. “The wrong flat, perhaps. Not the wrong woman.” The line landed with the force of a thumb pressed into a bruise. Aurora stared at him. “Don’t.” “Don’t what?” “Come in here and start speaking like nothing happened.” A beat passed. Then another. Lucien turned the envelope over in his hand. “Something happened.” Her jaw flexed. “You don’t get to reduce it to that.” “You have no idea how much I would prefer to.” Her throat tightened. She hated that he could still make a room feel smaller with one sentence. Hated that the air felt charged now, as if the flat’s ancient wiring had picked up their history and started sparking. She snatched the envelope from his fingers. It looked ordinary at first glance, thick black paper, no seal, no name. Then she saw the impression in the corner, stamped so faintly she had to tilt it towards the light from the hall. A crescent sigil, split by a line through the centre. Her pulse stumbled. Lucien watched her face. “You know it.” “Not from where you got it.” “That’s unfortunate.” She ignored the comment and slid a thumb under the flap. Inside lay a single card and a folded sheet of cream paper. No letterhead. No signature. Just a name written in dark ink she could smell before she touched it, iron and something sweeter beneath. MALPHORA Her fingers went still. The flat seemed to change around her. Not dramatically, not in the theatrical way the stories liked to tell it, but enough. Enough for her skin to prick. Enough for Ptolemy to hiss under the sofa. “What did you bring into my home?” Lucien did not answer straight away. That alone was answer enough. Aurora looked up. “Lucien.” “I didn’t bring it into your home.” “You were carrying it.” “I was carrying an invitation.” She stared at the card again. The name ran through her like a wire. Malphora. Not a person she wanted on her doorstep. Not a title she wanted in her hands. “Who sent this?” “The sender’s identity is part of the difficulty.” “That is not an answer.” “It is the answer you get.” She folded the paper back into the envelope with care that felt like restraint by force. “And you expected me to be pleased to see you because of this?” “No.” “Then why are you here?” Lucien’s gaze held hers for a long second. That look had once undone her more effectively than any touch. It did it again now, not because he looked kind, but because he looked honest in a way he usually spared for no one. “Because they named you.” Her mouth went dry. “Who?” His jaw shifted. “The people behind this.” Aurora heard the bar downstairs, a burst of laughter, the clink of bottles, the scrape of a stool. Ordinary sounds. Thin things. She clutched the envelope harder. “They know that name?” “They know more than that.” A sharp knock rattled the front door. Both of them turned. Another knock followed, heavier this time, accompanied by a dull thud that made the deadbolts shiver in their sockets. Ptolemy shot out from under the sofa, fur spiked, and vanished into the kitchen. Aurora took one step towards the door, then stopped when Lucien moved with her. Not blocking. Not quite. Positioning. “Stay back.” His mouth twisted. “You say that as if I obey you.” The door hit again. The frame groaned. Aurora kept her eyes on it. “You brought this here.” “I brought you warning.” “That thing on paper is not a warning.” “It is to anyone with sense.” The handle jerked hard. One deadbolt jarred. Aurora lunged for the side table where she kept the little brass key chain with the flat’s spare blade tucked into it. Lucien’s hand closed around her wrist first. Not hard. Never hard with him unless he had no other option. But warm, steady, impossible to ignore. She went still. His thumb brushed over the crescent scar there, a reflex so intimate it almost felt like theft. “Let go.” His eyes stayed on hers. “Not yet.” The door shook again. Dust sifted from the frame. Aurora yanked her wrist free. “You don’t get to stand in my kitchen and touch me like that after disappearing for months.” Something dark flashed across his face. Hurt, fast and polished over before she could name it. “Months,” he said. “You count them.” “I can count to six. It’s not impressive.” “You cut contact.” “You vanished.” “I had work.” “So did I.” The knocking stopped. Silence rushed in, thick and wrong. Aurora moved first, crossing to the side table and drawing the concealed knife from beneath it. The blade glinted in the flat light from the hall. Lucien’s gaze dropped to it, then returned to her face with a look that might have been approval if he had been anyone else. “You kept that.” “I keep things that stop problems.” “Useful habit.” “Learned from you.” His smile came quick and dangerous. “You always did flatter me with your most venomous lines.” The front door clicked. Aurora went cold. Not the deadbolts. The lock. Something on the other side worked the mechanism with a precision that made her stomach sink. Another click. Then another. The first bolt held. The second shuddered. Lucien moved in one smooth motion, cane in one hand, the other already empty and ready. “How many?” She listened. Heavy breathing. One set. Maybe two. A scrape of leather on the landing. “More than one.” “Clear instruction, as always.” “Lucien, if this is your idea of a dramatic reunion, I swear to God-” “Later.” The second bolt snapped. The door burst inward an inch before the chain caught, the metal screaming against the frame. A hand shot through the gap, fingers long and ash-grey, nails black and sharp as broken glass. Aurora drove the knife down. The hand jerked back with a wet hiss. Something slammed against the other side of the door, hard enough to make the chain whip. A voice muttered in a language she didn’t know, rough and guttural, like stones grinding together in a riverbed. Lucien’s head tilted. “Avarosian.” Her blood iced. “Demons?” “Among other inconveniences.” The chain strained again. Wood splintered around the top hinge. Aurora grabbed the nearest thing at hand, a heavy ceramic vase full of dead pens, and hurled it at the door. It struck with a crack that would have been satisfying under any other circumstances. Lucien glanced at her. “That was a decent throw.” “I’m not looking for praise.” “Pity.” The chain tore free on one side. The door flew inward. A figure lunged through the gap, low and fast, all black coat and wrong angles, face half-hidden by a hood. Aurora caught a flash of teeth, too many and too white. She brought the knife up. Lucien moved before she did. His cane snapped out with a sharp metallic click, the ivory handle splitting to reveal the thin blade concealed inside. He drove it into the attacker’s shoulder with a clean, practiced strike that sent the thing staggering back into the landing wall. It snarled, and the sound set her teeth on edge. Aurora shoved past Lucien, seized the creature by the hood, and slammed its head against the banister. It buckled, arms flailing. She drove her knee into its ribs. Something cracked. The second attacker hit from the side, knocking her into the wall. Pain shot through her shoulder. The knife skittered across the floor. Lucien cursed in French, low and vicious. He intercepted the blow aimed at her throat, blade flashing once, twice. Dark blood sprayed across the hall wallpaper. The attacker reeled. Aurora snatched the dropped knife from the carpet and thrust upward into its chest. It spasmed. Then went still. The first one laughed. Not a human sound. Not close. It rolled its head, jaw unhinging too wide, and a black spill of smoke or breath or something worse poured from its mouth. The landing filled with a stench like hot metal and rot. Aurora staggered back, blinking against the sting in her eyes. Lucien caught her by the waist and hauled her out of the thing’s reach as it lunged. His hand pressed hard between her shoulder blades. His body came up behind hers, close enough that she could feel the heat of him through both their clothes, close enough that her pulse lost all common sense. “Duck.” She did. He slammed the cane blade up under the creature’s chin, levering with a ruthless twist. Bone cracked. The thing convulsed, claws scrabbling at his sleeve. Aurora drove her knife into the base of its skull. Silence dropped. Only then did she hear the pounding from below. The bar door. Someone had heard. Or worse, something had. Lucien released her and stepped over the bodies like they were inconvenient laundry. He crouched beside the fallen attacker at the top of the stairs, two fingers pressing to its neck. His expression hardened. “Not dead. Breathing badly.” Aurora wiped her blade on the hem of her cardigan with shaking fingers she resented. “That’s a shame.” His eyes lifted to hers, and for one sharp second the room between them vanished, replaced by the old thing, the dangerous thing, the one neither of them had named before it turned into this. He stood. “You should not have opened that envelope alone.” “You should not have delivered it to me.” “I did not know they would follow.” “You didn’t know a lot of things.” His face went still. The quiet after violence always felt obscene. The flat looked wrong with blood on the carpet and Lucien’s blade wet in his hand. Ptolemy emerged from the kitchen, pupils blown wide, tail puffed like a bottlebrush, and let out a furious yowl at the corpses in the hall. Aurora bent, picked up the envelope from the floor where it had fallen, and held it between them. “What does Malphora have to do with this?” Lucien’s gaze tracked the name. “Too much.” “That’s another almost-answer.” “It is the only one that keeps you breathing.” “Then start explaining before I decide your survival no longer concerns me.” His mouth curved, but there was no amusement in it. Only strain. Only a familiar care he wore like armour and failed to hide from her no matter how hard he polished himself. “They know you by that name,” he said. “And they have not come to offer a handshake.” Aurora stared at him, at the blood on his cuff, the clean line of his throat, the way his black eye had gone almost opalescent in the hall light. She could feel the old hurt under the new danger, the same old pull dragging at her ribs. “Who is ‘they’?” Lucien reached for the door, shut it on the ruined landing, and turned the key with a careful, final click. Then he looked back at her, and the flat seemed to go utterly still. “The people who buried your name years ago are alive, Rory, and they have just sent two dead men to your door.”
created_at"2026-03-18T10:21:17.64Z" 3/18/2026, 10:21:17 AM
model"openai/gpt-5.4-mini-20260317"
app_id182717
external_user(null)
streamedtrue
cancelledfalse
latency481
moderation_latency(null)
generation_time18990
tokens_prompt4556
tokens_completion4426
native_tokens_prompt4075
native_tokens_completion3509
native_tokens_completion_images0
native_tokens_reasoning0
native_tokens_cached0
num_media_prompt(null)
num_input_audio_prompt(null)
num_media_completion0
num_search_results(null)
origin"https://ncbench.com/"
is_byokfalse
finish_reason"stop"
native_finish_reason"completed"
usage0.01884675
router(null)
provider_responses
0
endpoint_id"9ee065b2-3d1c-43bc-bdd7-28af3b148282"
id"resp_069363066daf7c380169ba7c9db7c481958587350a2232c7a5"
is_byokfalse
latency203
model_permaslug"openai/gpt-5.4-mini-20260317"
provider_name"OpenAI"
status200
user_agent"langchainjs-openai/1.0.0 ((node/v24.14.0; linux; x64))"
http_referer(null)
api_type"completions"
id"gen-1773829277-fOlIXSpZIyjQ6PMBLK3B"
upstream_id"resp_069363066daf7c380169ba7c9db7c481958587350a2232c7a5"
total_cost0.01884675
cache_discount(null)
upstream_inference_cost0
provider_name"OpenAI"

Evaluation details

Result Evaluator Details Meta Data
100.00% Adverbs in dialogue tags
Target: ≤10% dialogue tags with adverbs
totalTags2
adverbTagCount0
adverbTags(empty)
dialogueSentences110
tagDensity0.018
leniency0.036
rawRatio0
effectiveRatio0
96.36% AI-ism adverb frequency
Target: <2% AI-ism adverbs (58 tracked)
wordCount2751
totalAiIsmAdverbs2
found
0
adverb"lightly"
count1
1
adverb"utterly"
count1
highlights
0"lightly"
1"utterly"
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)
65.47% AI-ism word frequency
Target: <2% AI-ism words (290 tracked)
wordCount2751
totalAiIsms19
found
0
word"measured"
count1
1
word"stomach"
count2
2
word"flicked"
count1
3
word"pulse"
count3
4
word"flicker"
count1
5
word"silence"
count3
6
word"familiar"
count2
7
word"warmth"
count1
8
word"charged"
count1
9
word"could feel"
count2
10
word"pounding"
count1
11
word"blown wide"
count1
highlights
0"measured"
1"stomach"
2"flicked"
3"pulse"
4"flicker"
5"silence"
6"familiar"
7"warmth"
8"charged"
9"could feel"
10"pounding"
11"blown wide"
100.00% Cliché density
Target: ≤1 cliche(s) per 800-word window
totalCliches0
maxInWindow0
found(empty)
highlights(empty)
100.00% Emotion telling (show vs. tell)
Target: ≤3% sentences with emotion telling
emotionTells0
narrationSentences235
matches(empty)
100.00% Filter word density
Target: ≤3% sentences with filter/hedge words
filterCount2
hedgeCount4
narrationSentences235
filterMatches
0"feel"
1"hear"
hedgeMatches
0"managed to"
1"seemed to"
100.00% Gibberish response detection
Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words)
analyzedSentences343
gibberishSentences0
adjustedGibberishSentences0
longSentenceCount0
runOnParagraphCount0
giantParagraphCount0
wordSaladCount0
repetitionLoopCount0
controlTokenCount0
maxSentenceWordsSeen39
ratio0
matches(empty)
100.00% Markdown formatting overuse
Target: ≤5% words in markdown formatting
markdownSpans0
markdownWords0
totalWords2751
ratio0
matches(empty)
100.00% Missing dialogue indicators (quotation marks)
Target: ≤10% speech attributions without quotation marks
totalAttributions13
unquotedAttributions0
matches(empty)
83.33% Name drop frequency
Target: ≤1.0 per-name mentions per 100 words
totalMentions61
wordCount2200
uniqueNames7
maxNameDensity1.09
worstName"Lucien"
maxWindowNameDensity2.5
worstWindowName"Aurora"
discoveredNames
Lucien24
Moreau1
London1
Ptolemy5
French1
Aurora24
One5
persons
0"Lucien"
1"Moreau"
2"Ptolemy"
3"Aurora"
places
0"London"
1"French"
2"One"
globalScore0.955
windowScore0.833
94.03% Narrator intent-glossing
Target: ≤2% narration sentences with intent-glossing patterns
analyzedSentences134
glossingSentenceCount3
matches
0"not quite a smile"
1"felt like restraint by force"
2"felt like theft"
100.00% "Not X but Y" pattern overuse
Target: ≤1 "not X but Y" per 1000 words
totalMatches2
per1kWords0.727
wordCount2751
matches
0"Not dramatically, not in the theatrical way the stories liked to tell it, but enough"
1"not in the theatrical way the stories liked to tell it, but enough"
100.00% Overuse of "that" (subordinate clause padding)
Target: ≤2% sentences with "that" clauses
thatCount3
totalSentences343
matches
0"hated that she"
1"hated that he"
2"Hated that the"
100.00% Paragraph length variance
Target: CV ≥0.5 for paragraph word counts
totalParagraphs202
mean13.62
std15.09
cv1.108
sampleLengths
014
158
22
311
490
57
67
712
84
910
1045
113
129
131
144
1525
161
172
185
1927
204
215
2229
2321
2473
2517
2612
277
282
2957
304
3141
323
3310
348
359
368
371
3842
396
402
413
425
434
448
4537
4614
477
481
4955
100.00% Passive voice overuse
Target: ≤2% passive sentences
passiveCount0
totalSentences235
matches(empty)
100.00% Past progressive (was/were + -ing) overuse
Target: ≤2% past progressive verbs
pastProgressiveCount1
totalVerbs353
matches
0"was placing"
100.00% Em-dash & semicolon overuse
Target: ≤2% sentences with em-dashes/semicolons
emDashCount0
semicolonCount0
flaggedSentences0
totalSentences343
ratio0
matches(empty)
98.51% Purple prose (modifier overload)
Target: <4% adverbs, <2% -ly adverbs, no adj stacking
wordCount2206
adjectiveStacks0
stackExamples(empty)
adverbCount92
adverbRatio0.04170444242973708
lyAdverbCount11
lyAdverbRatio0.004986400725294651
100.00% Repeated phrase echo
Target: ≤20% sentences with echoes (window: 2)
totalSentences343
echoCount0
echoWords(empty)
100.00% Sentence length variance
Target: CV ≥0.4 for sentence word counts
totalSentences343
mean8.02
std6.88
cv0.858
sampleLengths
07
17
238
33
417
52
611
719
87
97
1030
113
122
1322
147
157
1612
174
186
194
2010
2132
223
233
249
251
264
2714
2811
291
302
315
3215
335
347
354
365
379
385
391
4014
4121
4239
4313
4421
4517
4612
475
482
492
42.13% Sentence opener variety
Target: ≥60% unique sentence openers
consecutiveRepeats27
diversityRatio0.24489795918367346
totalSentences343
uniqueOpeners84
100.00% Adverb-first sentence starts
Target: ≥3% sentences starting with an adverb
adverbCount10
totalSentences203
matches
0"Instead, she opened the door"
1"Just a flicker, but she"
2"Of course she did."
3"Then he reached into the"
4"Then she saw the impression"
5"Just a name written in"
6"Then went still."
7"Only then did she hear"
8"Only a familiar care he"
9"Then he looked back at"
ratio0.049
89.95% Pronoun-first sentence starts
Target: ≤30% sentences starting with a pronoun
pronounCount66
totalSentences203
matches
0"They only made the knock"
1"Her stomach tightened."
2"She yanked the first deadbolt"
3"His gaze flicked to the"
4"She gave him a cold"
5"He looked past her shoulder"
6"His expression sharpened."
7"He lifted the cane a"
8"Her pulse gave a rude"
9"She hated that she noticed."
10"She should have shut the"
11"He glided past her with"
12"He entered without hurry, as"
13"His gaze moved over her."
14"His eyes paused on the"
15"He set the cane against"
16"He held it between two"
17"He took one slow step"
18"She caught herself and hated"
19"It was awareness."
ratio0.325
41.28% Subject-first sentence starts
Target: ≤72% sentences starting with a subject
subjectCount170
totalSentences203
matches
0"They only made the knock"
1"Aurora had one hand on"
2"Her stomach tightened."
3"Ptolemy launched himself off the"
4"She yanked the first deadbolt"
5"Lucien stood on the landing"
6"Charcoal coat fitted close over"
7"Platinum hair slicked back with"
8"Both fixed on her face"
9"Aurora tightened her grip on"
10"His gaze flicked to the"
11"She gave him a cold"
12"The corner of his mouth"
13"He looked past her shoulder"
14"His expression sharpened."
15"He lifted the cane a"
16"Her pulse gave a rude"
17"She hated that she noticed."
18"She should have shut the"
19"That would have been sensible."
ratio0.837
24.63% Subordinate conjunction sentence starts
Target: ≥2% sentences starting with a subordinating conjunction
subConjCount1
totalSentences203
matches
0"As if he had never"
ratio0.005
100.00% Technical jargon density
Target: ≤6% sentences with technical-jargon patterns
analyzedSentences91
technicalSentenceCount5
matches
0"He glided past her with the faint scent of cold spice, expensive soap, and something darker beneath it, something that always clung to him when he’d been dealin…"
1"Another knock followed, heavier this time, accompanied by a dull thud that made the deadbolts shiver in their sockets."
2"Something on the other side worked the mechanism with a precision that made her stomach sink."
3"It struck with a crack that would have been satisfying under any other circumstances."
4"He drove it into the attacker’s shoulder with a clean, practiced strike that sent the thing staggering back into the landing wall."
100.00% Useless dialogue additions
Target: ≤5% dialogue tags with trailing filler fragments
totalTags2
uselessAdditionCount0
matches(empty)
100.00% Dialogue tag variety (said vs. fancy)
Target: ≤10% fancy dialogue tags
totalTags2
fancyCount0
fancyTags(empty)
dialogueSentences110
tagDensity0.018
leniency0.036
rawRatio0
effectiveRatio0
91.1898%