Chapter 1 - River

ONE

RIVER

There’s a sign above the NovaPlay Studios office coffee maker that says PLEASE BE CONSIDERATE in Comic Sans, which tells you everything you need to know about the moral fiber of this place.

A hand gets there first.

“Don’t,” I say, even though it’s already happening.

Gage Dawson tilts the carafe like he’s hydrating a victory plant and watches the coffee arc into his mug in slow motion. The mug—because of course—is matte black with an embossed lightning bolt. He looks like every campus bad decision grown into a man in a Henley.

“You snooze, you lose, Quinn.” He doesn’t look at me when he says it. He inhales. “Mmm. Beans of triumph.”

“You don’t even like coffee.” I hear the defensive whine in my voice and want to go back in time and shove a cupcake in it.

“I like depriving you of joy,” he says, and winks. It’s an awful wink. Objectively effective, but morally bankrupt. And oh, of course, incredibly gorgeous.

I reach for the empty carafe and hold it up between us like exhibit A. “You know there’s a war crimes tribunal for people like you.”

He leans an elbow on the counter, easy and smug. He’s not tall-tall, just tall enough to loom when he wants to. Dark hair. Dark eyes. Dark soul. “Guilty. Go file it with HR.”

“I might,” I snap, which is ridiculous because I literally have a meeting with HR at 10:00 a.m. to “discuss my tone in Slack,” and I don’t need to give them extra ammo.

Gage tips his head toward the stack of paper cups. “There’s decaf.”

“I’d rather lick the fax machine.” I open the cabinet for a new bag of beans. Empty. Because of course.

“You mean the printer?” he asks, faux-innocent. “It’s not 2004.”

“Neither is your haircut, but here we are.”

He grins. It’s unfairly nice on his face. “Careful, River. Your tone is showing.”

“Let me see your tone then,” I say, and it comes out flirty even though I meant stabby.

I hate that my mouth does that around him—betrays the sharp thing I’m aiming for with a softer shape.

I hate that I notice the way he smells like honey and a bad idea.

I hate that the last cup is in his terrible, beautiful hand and my hands are empty.

“You okay?” he asks suddenly, the grin slipping, like he’s seen behind the curtain. My stupid stomach flops because his voice goes low in that way that makes ordinary questions sound like secrets.

“I’m great.” I shove the empty cabinet shut with my hip. “Thriving. Put it on LinkedIn.”

He studies me. Gage has this look he does where he’s still and quiet and you can feel his brain whirring like a server room behind his eyes. I hate that look the most.

Then he sips his coffee and the mask snaps back on. “Make a new pot, Quinn. Team player.”

“Choke on a scone,” I say sweetly, and squeeze past him to the sink. My shoulder bumps his bicep and I pretend I don’t feel it.

Back at my desk, I sit down too hard and my chair rolls back two inches.

My monitor blinks awake and immediately insists on showing me an avalanche of notifications: twelve new comments on last night’s thread, three emails from Legal, one calendar invite to an all-hands I can’t pretend to be sick for, and twenty-seven texts.

Twenty-seven.

My phone screen is a collection of bad vibes.

Unknown: u think we don’t know where u live

Unknown: curvy pig girl

Unknown: nice curtains lol

Unknown: tonight ;)

There’s a photo, too. Grainy. Taken through glass. My living room window, blinds half-closed. The angle is wrong, like someone held their phone against the pane and hoped for focus. I can make out the corner of my couch and the plant I keep forgetting to water.

My hands go cold and hot at the same time. I chew the inside of my cheek until it stings. I put the phone face down on the desk like that will make the messages go away.

“Everything good over here?” a voice trills, and I almost vault out of my skin. It’s Helena from People Ops, wearing a sweater the color of therapy and a smile I don’t trust.

“Peachy,” I say. “If peaches were allergic to sunlight.”

She laughs like I told a joke and not the truth. “Don’t forget about our ten o’clock. We value you. This is just a quick chat so we can all get on the same page tone-wise.”

“I look forward to aligning my vibe,” I say, and she air-guns me. I air-die.

Gage drops into his chair across the aisle with an unnecessary amount of leg.

He clacks his keyboard like it owes him money, then glances over the top of his monitor at me.

He does this thing sometimes where he watches me type like he’s trying to learn my muscle memory.

It’s creepy. It’s flattering. It’s both.

I open the repo, because I am here to do a job even if the internet is trying to push me out of my life. The build failed overnight, because of course it did. I roll my chair in, tug my cardigan around me like a hug from a wool ghost, and start fixing what the night broke.

Three commits later, HR pings me again: We’re excited to connect! The exclamation point is a hate crime.

I take a breath that tastes like printer toner and cinnamon gum and tell myself not to cry. I am not a crier. I am a fixer. I am a woman who gives bugs dumb names so the men on my team will stop acting like they’re wrestling dragons when it’s just a missing semicolon named Biscuit.

My phone buzzes against the desk. I don’t look.

It buzzes again. And again. I glance. Different numbers, all unknown.

One of them sends a link to a public thread where people are debating whether my chin is “too confident.” Another drops my neighborhood like a cursed Yelp review.

Another says see u in the lobby and my stomach falls through my shoes.

I stand without deciding to. Gage’s head tracks the movement like radar.

“HR meeting,” I say to the air, and he nods like I’m reporting in.

The hallway smells like lemon cleaner and stress. Our HR suite is down the hall, glass-walled, full of plants that are somehow thriving. I push the door open and the receptionist beams at me like a lighthouse.

“River!” she chirps. “Tea?”

“Do you have anything that tastes like a restraining order?” I ask.

She blinks. “We have chamomile.”

“Great.” I sit on a couch that was not built for humans with hips and fold my hands so they’ll stop performing Swan Lake at the ends of my arms. Helena appears, still therapy-colored.

I stand from the couch and head toward the office, noticing Mark, head of HR, and Doug, another HR team member, standing in the room as well.

“Hi River,” Mark says like this is all totally normal. “Please come in.”

“We value you,” Helena says again, ushering me into the office. “Let’s talk about tone.”

“I’d love to talk about safety,” I say, sitting in a chair across from the three of them, and pull my phone out of my pocket. “I’m being harassed again. Doxxed, nearly. Look.” I shove the screen toward her.

Helena does the HR face: concerned, neutral, legally noncommittal. “Oh no,” she says. “That must feel very… challenging.”

Doug shifts in his chair uncomfortably. “Yes, very challenging.”

“It feels dangerous.” I flip to the window photo, to the see u in the lobby, to the one that says tonight ;) “I need help. We need better security downstairs, and I need—” I stop, because what I need is a different world.

“We take online conduct seriously,” Helena says, which is not the same as taking my safety seriously. “Have you tried disengaging?” She gestures at the evil rectangle like it is both the problem and the solution. “Sometimes when we stop responding—”

“I haven’t responded,” I bite out. “I don’t even post under my full name anymore. They don’t need me to engage. They just need each other.”

“Well,” Doug says, smile tightening into company policy. “We can offer you time off to reset. And we’d love for you to attend our Digital Civility workshop. It’s really empowering.” He smiles at Mark like they’ve thought of the greatest idea since sliced bread.

Which sidenote: Is slice bread really such a great thing? Sometimes you want to slice your own bread, right? Thicker slices for French toast. Smaller slices for a quick healthy sandwich. Right? RIGHT??

I try to regain my focus as I give a polite smile. “Is there a segment on ‘what to do when someone sends you a photo taken from outside your window’?” I ask. “Or is that more of an advanced module?”

“We don’t want to escalate,” Mark says gently, which is wild because nothing about this feels gentle. “Looping in law enforcement can sometimes make things worse.”

“I’ve heard that,” I say. “Usually from law enforcement.”

Helena gives me a box of tissues like it’s a participation trophy. “We’re here for you.”

“Are you?” I ask softly. “Because I need you to be here for me. Not for the company. Not for optics. For me.”

Helena’s eyes do a tiny sympathetic wobble and then settle back into employee who has to make it to lunch. “We’ll schedule the workshop. And we’ll send a building-wide reminder about badge protocols.”

Badge protocols. Perfect. That’ll stop a swarm of bored men with Wi-Fi.

The meeting ends with a handout about mindfulness. I leave with a piece of paper that tells me to picture a calm place and breathe into it.

At my desk, Gage is gone. His chair is empty, his hoodie draped over the back like a body outline. I sit and try not to look around like prey.

My computer pings. A calendar update: all-hands moved to three. A DM from my boss…

Andrew: hey quick q—any updates on the 506?

A DM from a stranger: nice blue bike.

Another: wave at us ; )

My hands shake. I tuck them under my thighs.

“Hey.”

I jump so hard I knock a pen to the floor. Gage has materialized beside my desk, because of course he has. He holds out a small paper cup. “Decaf.”

“You think you’re funny,” I say, heart sprinting.

“No,” he says, as if he’s already bored of himself. “I think you’re shaky.”

My throat is tight. I take the cup because it’s something to hold and not because I want anything from him. The lid is on crooked. He did that on purpose, I decide, to annoy me.

“New pot’s brewing,” he adds. He leans on my desk, close enough that I can see one tiny white scar on his jaw, like a comma. “You look like you saw a ghost.”

“I saw HR,” I say. “Similar.”

“That bad?”

“They suggested tea.”

He snorts. “Thoughts and chamomiles.”

“Exactly.”

He studies me again with that too-quiet focus. “You should get back to work.”

“I am working,” I snap, then want to kick myself. “Besides, you’re the one who bothered me.”

Gage’s eyes flick to my computer, that’s technically turned off, and then back to me. “Right,” he says. “Well. Codes not going to code itself.”

“Tell me something useful,” I say, not sure what I’m asking for until it’s too late.

He opens his mouth like he might. Then his face shutters. “Get to work, Quinn.” He turns and walks away.

I watch him go and hate the way my chest goes tight, like I’m mad at him for not being the person I need and mad at myself for thinking he could be.

He heads out of the office, and I wish I could follow him. However, I’ve got work to do. I toss a stick of Misfit chewing gum into my mouth. Before I can even wake my computer, Ryan Carmine appears at my desk.

He’s alone.

Usually, he’s flanked by his two shadows, Alan and Benny, all three of them snickering like high schoolers behind a locker. But today, it’s just him.

“Did you find the error?” he asks casually, leaning a hand on the edge of my cubicle wall like we’re old friends. His tone is light, but there’s something slick about the way he says it. Like there’s a double meaning I’m missing.

I blink up at him. “Which error?”

He shrugs. “The one in the Rogueframe physics engine. You were in the build last night, right? Around 2 a.m.?”

My heart gives a little stutter. He knows I was working late? That’s not weird on its own—our system tracks log-ins—but something about the way he’s smiling makes my skin crawl.

I keep my voice neutral. “There’s a dozen small errors we’ve been tracking in that build. Be more specific.”

Ryan tilts his head and does this slow, theatrical blink like he’s so amused. “No worries. I just thought maybe you’d want a second pair of eyes on it. Some things can be… hard to catch. Especially when you’re multitasking.”

I squint, blow a quick bubble, then bite it back in.

What the hell is that supposed to mean?

“I’m good,” I say. My fingers move to the mouse, subtly waking up the screen like I’m about to get busy.

But Ryan doesn’t move. He just smirks, leans in a fraction closer, and lowers his voice.

“You’re really killing it lately, you know? Big boss man always nearby. New projects. Rapid promotions.” He lets out a low chuckle. “Almost like you’ve got cheat codes.”

I freeze.

That’s when I get it.

This isn’t about Rogueframe. This is about me.

“You got something to say, Ryan?” I ask, keeping my tone flat, icy.

He straightens and flashes me a toothy grin. “Nope. Just here to offer my help. We’re all on the same team, right?”

Then, with a wink that makes my stomach twist, he walks off—whistling a tune I don’t recognize. His shoulders bounce with a smug confidence that makes me want to throw something.

I stare at my screen, fists clenched in my lap. I can’t keep living like this. I open a browser tab and stare at the search bar.

I type how to hire a private security guard and delete it. I type online harassment help and get a wall of cheerful articles with stock photos of women laughing with laptops. I click one. It suggests taking a bath and journaling about my feelings.

I open a new tab. I think about how stupid this is, and how scared I am, and how HR gave me a worksheet about mindfulness.

“Don’t,” I tell myself, even as my fingers move. “Don’t be this girl.”

I’m this girl.

I go to an app store and buy the cheapest VPN with the most aggressive logo. I download it. A cartoon shield winks at me like we’re in on something together. I flip it on and the little key icon floats to the top of my screen like a halo.

It makes me feel safe for exactly half a second.

In the search bar, I type: how to hire a vigilante.

I stare at the words. They look like a joke I’m not brave enough to tell out loud.

I hit enter.

If ads affect your reading experience, click here to remove ads on this page.