Jamie knew something was wrong the second his phone buzzed at 3:17 a.m.
Not “drunk friend needs a ride” wrong.
Not even “thirst trap from a pair of hairy legs in stilettos and a MAGA thong sharing a suspicious link” wrong.
This was a very specific kind of gay existential dread.
He groaned, blindly pawed at his nightstand, and cracked one bleary eye at the screen.
RyIP has tapped you.
RyIP: Boo.
Jamie blinked.
Then blinked again.
That was Riley’s handle.
As in, his ex.
As in, took a one-way Lyft to the afterlife six months ago.
As in, dead.
Very unalive.
Extremely deceased.
The screen lit up again.
And again.
And again.
RyIP: Don’t you dare leave me on read.
RyIP: Or ghost me.
RyIP: I am the ghost.
RyIP: I’ll haunt your ass.
RyIP: Oh and by the way?
RyIP: That last guy you talked to? Had me rolling in my grave.
RyIP: You really thought moving on meant downloading Grindr and letting someone named DaddyzBoy87 send you feet pics?
RyIP: Dude. Babe. Come on. Seriously?
RyIP: I thought I raised you better than that.
RyIP: Truly, the bar is in Hell.
Jamie flinched.
Yeah. He had opened it.
Mostly out of boredom.
Partly out of morbid curiosity.
And also because, honestly, how bad could it be compared to the other cursed visuals burned into his soul and quietly gathering dust in a forcefully repressed memory?
He shivered.
Lesson learned.
Now, Jamie was silently hoping that ghosts, or whoever was trolling him, couldn’t read his browser history.
Because if so, he was about to be spiritually annihilated.
“That would be my luck,” he sighed, the weight of cosmic misfortune pressing down on him like a bad Grindr date.
In a desperate bid to salvage the last shred of dignity clinging to his soul, he launched Operation: Nosy Hoes Get No Shows, rapid firing tabs closed and clearing his browser history like it was a CIA cover up.
Which of course was the exact moment Jamie’s iPhone apparently upgraded to smackOS, slipping from his fingers and activating its all-new hit feature: bitch-slap facial recognition.
He shot upright.
Fully awake.
Mildly concussed.
Spiritually violated.
And definitely cursed.
RyIP: Damn. Your iPhone just slapped the gay back into you.
RyIP: That was Bluetooth cosmic karma.
RyIP: You didn’t just get wrecked.
RyIP: You got phowned.
"This is why I can’t have nice things," Jamie muttered, looking wildly around his bedroom like the IKEA lamp might offer to throw hands in his defense.
Or at least provide emotional support.
Maybe a protection spell?
Hell, he’d even settle for a safe word. Riley’s account had clearly been hacked by Satan, freshly divorced and proudly identifying as a petty bitch.
Could this really be Riley?
Ghost Riley?
Coming back from the Great Gay Beyond just to roast Jamie’s love life?
And doing it through Grindr, the cursed digital glory hole where dignity goes to die and dead exes apparently go to log in?
Honestly?
Yeah. That tracked.
JD0gg: Who is this?
RyIP: It’s Britney, bitch.
RyIP: Who do you think it is?
RyIP: It’s me. Riley. Duh.
JD0gg: Not possible. Riley’s dead.
RyIP: Wow, thanks for the update, Captain Obvious.
RyIP: I know I’m dead.
RyIP: DEAD SEXY.
RyIP: And, like, actual dead too.
Jamie stared.
He swallowed hard as he felt that familiar ache.
The one that would crawl through his chest until breathing felt impossible.
The one he’d been fighting off for six months.
RyIP: You’re quiet.
RyIP: Not surprised. You always sucked at confrontation.
RyIP: Especially when you knew I was right.
Jamie shook his head.
He just needed sleep.
That was all.
This was obviously stress related.
Some kind of sleep deprivation induced glitch in the matrix where his brain accidentally booted up the Riley archive.
Another buzz.
RyIP: You never wear the hoodie anymore.
RyIP: My old one, remember?
He winced.
That hoodie was hanging in his closet.
RyIP: You wore it all the time.
RyIP: Wouldn’t even let me wash it.
RyIP: Said it smelled like me. Like I was holding you.
RyIP: And you never wanted that to fade.
Jamie finally looked away.
He closed his eyes.
It had been months since he wore it.
Months since...
No.
No, no, no.
He stood up.
Then started pacing.
RyIP: Pacing again, huh?
RyIP: Clears throat in David Attenborough
RyIP: Here we can observe the elusive Overthinkachu in its natural habitat.
RyIP: This particular subspecies, known as the Spiraling Twink, is rarely spotted in the wild.
RyIP: It thrives in cluttered bedrooms, emotional playlists, and crippling self-doubt.
RyIP: Approach with caution.
RyIP: When startled, it may hiss or deflect with sarcasm.
RyIP: If you must engage, experts recommend snacks.
RyIP: Preferably salty.
RyIP: Like its personality.
Jamie deleted the app the next morning.
Re-downloaded it four hours later.
In his defense, Grindr was like smoking.
Terrible for your health, occasionally satisfying, and always easier to quit in theory.
He created a new account.
No sign of Riley.
Jamie messaged a guy with the handle NoahFromLA. He had nice arms and the emotional depth of a saltine.
A selling point, honestly.
Ojamie1: You’re cute.
NoahFromLA: Thx. Ur hot too.
RyIP: “You’re cute”? Really? Did your game die with me?
Jamie immediately blocked RyIP.
The result?
RyIP: WOW. I can’t believe you tried to block me.
RyIP: I show up with free, high-quality, 100% unsolicited commentary.
RyIP: Queer Eye for the Also Queer but Legally Blind and With Questionable Taste in Men Eye.
RyIP: And this is how you repay me?
RyIP: SMH.
RyIP: Rude.
Jamie ignored Riley and messaged Noah again anyway.
He was determined not to feed the ghost.
He was a grown man.
A rational adult.
He could outlast a snarky hallucination.
So when Noah suggested drinks, Jamie agreed.
He threw on a black shirt, spritzed cologne, and ignored the buzz from his phone as he grabbed his keys.
RyIP: You wore that same shirt on our first date.
RyIP: Bold move.
RyIP: Considering you pit-stained it within five minutes.
RyIP: Maybe Noah likes the scent of poor life choices.
Jamie turned off notifications.
Boom.
Problem solved.
... If he were being haunted by literally anyone else except his petty, shade-throwing ex.
His phone synced to the car radio. Spotify started playing.
The song?
“Somebody That I Used to Know”
Jamie rolled his eyes.
RyIP: Told you I’d haunt your ass if you ghosted me.
RyIP: Can’t out-ghost a ghost, boo.
When Jamie finally got to the bar, Noah was already there, sipping a beer.
This wouldn’t be so bad. Just small talk.
A welcome distraction.
There were no major red flags so far.
Okay.
Fine.
That was a lie.
“Yeah, I don’t really believe in mental health stuff,” Noah said. “Like, if you’re sad, just go for a run.”
Jamie just sipped his beer and nodded as Noah went on explaining how depression could be cured by “a solid gym routine and not being a little bitch.”
Experience had long ago taught Jamie that eye contact, no sudden movements, and polite feigned agreement were the safest survival tactics when navigating encounters with the confidently misinformed, or aggressively opinionated, out in the wild.
He cleared his throat. “What do you do for work?”
Noah launched into a ten-minute story about crypto.
Jamie’s phone buzzed in his pocket.
RyIP: I’m literally witnessing a Greek tragedy in real time.
RyIP: This is killing me. Seriously. And I’m already dead.
While Noah spiraled into vivid detail about how making eye contact with Elon Musk had triggered both an entrepreneurial awakening and the realization that he was gay, Jamie, bored out of his mind and questioning every life choice that led him here, pulled out his phone just as it buzzed again.
RyIP: God, I miss you.
RyIP: I miss us.
And just like that, the spell broke.
Not the haunting.
That was still very much happening.
But the illusion that ignoring Riley might make him go away?
That was gone.
Jamie ended the date early.
Outside, the air was thick and warm. Streetlights flickered intermittently. Jamie climbed into his car, shut the door, and gripped the wheel.
His phone buzzed again in the cup holder. He didn’t look.
The drive home was quiet.
No music.
No ghost.
Just the hum of tires and the gnawing feeling in his chest that maybe he wasn’t handling this whole being-haunted-by-your-dead-ex thing super well.
He was almost at his turn.
Home was five minutes away.
But instead of taking a left, Jamie drove straight through the intersection.
It wasn’t a conscious decision.
Just muscle memory.
Ten minutes later, he pulled into the parking lot of a plaza. He parked at the far end, headlights pointed toward the center of the buildings, where a single oak tree rose from a small, manicured patch of earth. It had been spared when the plaza was built. Protected by some ordinance. Beneath it sat a weathered wooden picnic table.
Everything looked just the same as it had when he used to come here all the time, back when Riley worked at the old ice cream shop. They would spend Riley’s lunch breaks together at that picnic table.
Jamie turned off the car.
He sat there, watching the ghost of a moment he’d been trying to forget. The silence wrapping around him like a blanket soaked in grief.
It wasn’t long before he felt the ache in his chest again.
He hated this.
Hated the way Riley’s voice still echoed in his mind, as if he were really speaking to him. Telling Jamie about his day at work.
Or about a new book he was reading.
Or what Madonna, the chihuahua, had chewed up with smug satisfaction that morning.
He didn’t hate it because he didn’t want to hear Riley’s voice.
He hated it because he knew Riley wasn’t really there.
Jamie closed his eyes.
God, I miss you.
I miss us.
He choked back the tide of memories rising in his throat. “I miss you, too,” he finally admitted. “Every day, Riley. I think about you all day, every day.”
The ache was spreading faster now.
He fought it. He always did. He’d win a lot of the time.
But not every time.
And not this time.
The memories leaked out in slow droplets, tracing his cheeks as he sat there watching the tree. The wind dancing with the branches and leaves. A couple of squirrels chasing each other on the picnic table.
Jamie wiped his eyes with the back of his hand. “I’m sorry. For everything,” he confessed. “I don’t think I’ll ever forgive myself.”
He looked down at his hands. “I was an asshole. Said stuff I can’t take back.”
The tears came faster now, blurring his vision. “I made you cry. Then I watched you get in your car and leave,” he said. “Not knowing that would be the last time I’d ever see you alive.”
The ache was unbearable now. It surged through him like a dam bursting.
He didn’t fight it this time.
He just let it flood.
Wind swept over the car in soft, gentle waves. Jamie clutched the steering wheel like a lifeline. He wasn’t sure how long he’d been sitting there. At some point, he had leaned his head against the cool glass.
Eventually, Jamie picked up his phone and tapped the screen.
Ojamie1: Why did you come back? Was it really to haunt me?
RyIP: No. I’m here to help you.
His brows knit as he squinted at the words.
Ojamie1: Help me? What are you talking about?
RyIP: I’m not the real Riley.
Jamie recoiled like the words had struck him.
Ojamie1: Then who the hell are you?
RyIP: I’m you.
RyIP: You made me. You needed something to hold onto.
RyIP: Something to keep you here.
He sat frozen, suddenly wondering if he'd somehow been red-pill roofied.
RyIP: Riley wasn’t in a car accident.
RyIP: You were.
RyIP: And you’ve been asleep ever since.
The weight of those words hit like a second car crash.
Air fled from Jamie’s lungs.
His mouth went dry.
Everything around him turned hazy.
Riley.
He’s alive.
Riley’s alive.
RyIP: Your story doesn’t have to have a sad ending.
RyIP: Not if you don’t want it to.
The phone slipped from Jamie’s hands as his body trembled.
He didn’t know whether to laugh, yell, or cry.
He squeezed his eyes shut.
There was only one thing he could see.
Riley.
The beeping was soft. Rhythmic. Familiar.
A monitor flickered in the corner, its glow casting pale blue light across the room. The hum of the fluorescent bulbs overhead mixed with the mechanical whisper of an oxygen machine.
Jamie was in the hospital bed. Beside him, Riley sat in a worn blue hoodie. His eyes were tired. His fingers were wrapped around Jamie’s. A half-empty water bottle sat on the rolling tray nearby. A paperback novel on the chair beside him.
Riley reached up and gently brushed Jamie’s hair back from his forehead.
“Your hair is getting long,” he said softly. “A haircut would probably be the second thing you’d ask for. Right after a chicken tender sub.”
He offered a lopsided smile that didn’t quite reach his eyes.
His gaze dropped to Jamie’s hand. “I’m not giving up on you, Jamie. Even if you are being an absolute drama queen about this whole coma thing.”
Silence filled the room again.
Riley’s thumb brushed over Jamie’s knuckles.
Then he stopped.
He studied Jamie’s hand cupped in his.
He could’ve sworn he felt something.
“Jamie?”
Riley reached out with his other hand.
His fingers rested lightly in Jamie’s palm.
Then, in what could only be described as a truly gay ending, Jamie’s fingers curled, slowly, achingly, around Riley’s.