She Canceled Our Anniversary for Her Ex—So I Sent Flowers to His Apartment
Chapter 2: Receipts With Roses
For the first two days after the flower delivery, Jessica behaved like someone trying every key on a locked door. Calls. Texts. Voicemails. Emails. Messages through friends. Then longer texts that began with apologies and ended with accusations. “I know I should have told you, but you made it hard.” “I was scared of how you’d react.” “Brandon was in a dark place and I couldn’t abandon him.” “You humiliated me.” “You don’t understand emotional history.” “You’re throwing away eighteen months because of one bad night.”
One bad night.
That was the phrase that told me she still thought the story could be compressed. People caught in patterns always try to shrink them into moments. One mistake. One misunderstanding. One bad night. But I had six canceled dates, one anniversary dinner, a location dot, a flower delivery confirmation, and Brandon’s Instagram story. It was not a moment. It was a route she had taken repeatedly, and I had finally looked at the map.
I saved everything.
Screenshots of the cancellation texts. Screenshots of her location at Riverside. Screenshots of Brandon’s roses story. Screenshots of her “wrong place” lie. Screenshots of her friends calling it a misunderstanding. I made a folder on my laptop and named it Jessica Timeline. Not because I planned to destroy her, but because I had learned very quickly that when someone starts controlling the narrative, facts need a safe place to live.
By Monday, Jessica escalated to showing up at my office.
Security would not let her past the lobby because our building required employee badges for the elevators, but that did not stop her from sitting there for four hours with a paper coffee cup and puffy eyes while my coworkers pretended not to watch through the glass. Office drama has its own gravitational pull. Even people with urgent deadlines suddenly need to refill water bottles near the lobby.
My colleague Rob leaned into my cubicle around eleven. “Dude.”
I did not look up from my monitor. “No.”
“She looks destroyed.”
“She looked pretty comfortable at Brandon’s place two nights ago.”
“Maybe there’s an explanation?”
I turned my chair toward him. “What explanation makes this okay? I’m genuinely asking.”
Rob opened his mouth, then closed it.
“Exactly.”
By lunch, my manager gave me the kind of look managers give when your personal life becomes visible enough to affect building security. I sighed, closed my laptop, and went downstairs.
Jessica jumped up the second she saw me. “Grant. Thank God. Please, just listen.”
I stopped several feet away from her. The receptionist suddenly became very interested in her keyboard. Two guys from accounting slowed near the exit. Rob was absolutely watching from behind a pillar.
“You have two minutes,” I said. “And we’re talking right here.”
Jessica glanced around, humiliated. “Can we at least go outside?”
“One minute fifty seconds.”
Her face tightened. She had expected pain to make me softer. Instead, pain had made me efficient.
“Okay,” she said quickly. “Brandon texted me last month. His dad died, and he was spiraling. He was drinking. He was saying things that scared me.”
I stared at her. “So call 911.”
“It wasn’t like that.”
“Call his mother.”
“He doesn’t have a good relationship with her.”
“Call one of his friends.”
“He reached out to me.”
“And that required you to cancel six dates and lie about your location?”
“I knew you’d react like this.”
I actually laughed. Not loudly. Just enough that she flinched.
“You knew I’d react badly to you sneaking around with your ex,” I said, “so your solution was to sneak around with your ex.”
“I was trying to help.”
“You were lying.”
“Nothing happened.”
“That stopped mattering the second you lied.”
Her eyes filled. “We were just talking.”
“Jessica, I don’t care if you were talking, playing Scrabble, or conducting a candlelit séance for his dead father. You chose to cancel our anniversary and spend it at Brandon’s apartment after lying to me. That is the relationship-ending part.”
She looked around again, desperate to escape the public nature of the conversation she had caused by bringing it to my workplace.
“I love you,” she whispered.
“No,” I said. “You loved having me available while you figured out whether Brandon was still an option.”
“That’s not fair.”
“Neither was sitting alone at dinner waiting for someone who was with her ex.”
The two minutes were over, but I gave her one last sentence because I needed it clean.
“We’re done. Do not come to my apartment. Do not come to my work. If you need to say something, text it. I want a record.”
She recoiled slightly at that word.
Record.
It changes the temperature of any conversation with someone who prefers fog.
That evening, Brandon called me.
The audacity of that man deserves its own monument.
“Bro, you need to chill,” he said when I answered.
“Bro, we’re not bros.”
He scoffed. “Jessica’s falling apart.”
“That sounds like a Jessica problem.”
“She was being a good friend.”
“A good friend who lies to her boyfriend to spend nights at her ex’s apartment?”
“You broke up with her, didn’t you?”
“After she chose you six times in one month.”
“It wasn’t like that.”
“Then what was it like, Brandon?”
He went quiet for a beat. “Jessica and I have history. Sometimes people need closure.”
“Closure takes six secret meetings? What are you closing, a mortgage?”
“You’re being a dick.”
“I’m being accurate.”
“She chose you, man.”
I opened Find My iPhone while he was talking. I almost could not believe it. The dot loaded.
Riverside Apartments.
Again.
“Funny thing,” I said. “I can see her location right now. Guess where she is.”
Silence.
“That’s right. Your apartment. Again. Tell me more about how she chose me.”
He hung up.
I stared at the map for a while, not because I needed more proof, but because sometimes the final confirmation is so insulting you have to let it fully enter your system before you can move on. She had spent the entire day begging me, crying in my office lobby, telling me she loved me, and by evening she was back at Brandon’s apartment. Not even subtle. Not even patient. It was almost freeing.
The next day, Jessica’s mother called.
Diane had always liked me. Or at least I thought she did. She was warm, talkative, the kind of woman who offered leftovers in containers and asked whether I was eating enough. I answered because I had no reason to be rude to her.
“Grant, sweetheart,” she began, which was never a good sign. “Jessica explained everything. This is all a big misunderstanding.”
I closed my eyes.
“Diane, I respect you. But there is no misunderstanding. She lied to me multiple times.”
“She was trying to help that boy.”
“That boy is her ex-boyfriend.”
“His father died.”
There it was again.
I sat up straighter. “When?”
Diane paused. “What?”
“When did his father die?”
“She said recently.”
I opened my laptop while she spoke, searched Brandon Tillman father obituary, and found it in less than thirty seconds.
Joseph Tillman. August 2019.
Five years earlier.
“Diane,” I said slowly, “Brandon’s father died five years ago.”
“That can’t be right.”
“Joseph Tillman. August 2019. It’s public. Look it up.”
Silence.
Then a much quieter voice. “Are you sure?”
“Yes. So either Brandon lied to Jessica, Jessica lied to you, or both.”
She said nothing for several seconds.
“I have to go,” she whispered.
That call was the first time I sensed Jessica’s cover story beginning to collapse outside my relationship with her. Lies work best when they travel faster than evidence. Once evidence catches up, people start looking backward and noticing all the places the story had seams.
Then came Cabo.
Jessica and I had planned a vacation for the next month. Five nights in Cabo. Flights, hotel, excursions, airport transfer. About $3,800 total. I had paid for everything upfront because my credit card had better travel protections, and she was supposed to pay me back her half later. Money was tight for her at the time, so I had said no rush.
That was back when I thought we had a future.
She texted me Thursday afternoon.
“I know we’re not together right now, but the Cabo trip is non-refundable. We should still go as friends.”
As friends.
I stared at the message, wondering if entitlement produces its own oxygen supply.
I replied, “Already changed the reservation to single occupancy. Thanks for reminding me to cancel your ticket.”
Her response came instantly.
“You can’t do that.”
“I paid for it.”
“I was going to pay you back.”
“When? After your next secret meeting with Brandon?”
“That’s my vacation too.”
“No. It was a couple’s vacation. We are not a couple.”
“I need this trip.”
“Then book one. Cabo’s still there.”
“I can’t afford it right now.”
“Sounds like a you problem.”
She sent eighteen more texts. Some angry. Some pleading. Some insisting I was stealing from her. Some saying I was punishing her. I did not respond. If there is one skill heartbreak teaches quickly, it is the ability to let a phone buzz without obeying it.
But Jessica was not done.
Her friend Megan decided to post vague social media nonsense about “supporting women leaving toxic relationships” and “how controlling men punish women for having emotional needs.” Jessica reacted with a crying emoji. Another friend commented, “So proud of you for choosing yourself.” Someone else wrote, “Abuse isn’t always obvious.”
That was the moment the high road ran out of pavement.
I had not posted anything. I had not dragged her publicly. I had ended the relationship and kept my evidence mostly private. But now the story being sold was not “Jessica lied and got caught.” It was “Grant was controlling and abusive, and Jessica sought comfort elsewhere.” That was not embarrassment. That was character assassination.
So I posted one screenshot.
Find My iPhone. Jessica’s location pinned at Riverside Apartments. Timestamp visible. Same time as our anniversary dinner reservation.
Caption: “When you think she’s at work, but Find My helps you find out where she really is. PSA: If you’re going to cheat, turn off location sharing.”
The comments exploded.
Mutual friends who had clearly heard Jessica’s version started asking questions.
“Wait, she said she was at her mom’s that night.”
“Riverside? Doesn’t Brandon live there?”
“The ex Brandon?”
“Didn’t his dad die years ago?”
Jessica called me screaming.
“You posted our private business?”
“You made it public when your friends started calling me abusive.”
“Take it down.”
“Turn off your location sharing first. Oh wait, you finally did? Only took three days.”
“You’re ruining my reputation.”
“No, Jessica. You ruined your reputation. I provided receipts.”
She cursed at me, called me cruel, called me petty, called me obsessed. I let her talk until she ran out of steam.
Then I said, “Do not contact me unless it’s about money you owe or property exchange.”
“Go to hell,” she said.
Two mornings later, I walked outside and found a deep scratch running from the front of my car to the back driver’s side door. Keyed. Deliberate. Ugly. The kind of damage that says someone wanted not just to hurt your property, but to make sure you saw the line they carved.
For about five seconds, I just stared.
Then I smiled.
Because above my parking spot, mounted under the balcony, was my security camera.
