They Reassigned My Project To An Intern Friday. I Migrated The Repo Sunday. Monday’s Sprint Review Was Fifteen Minutes Of Stunned Silence…
Part 1
The last message I sent before it all unraveled was a pull request comment: Please review the updated fraud trigger logic. It finally catches synthetic IP trails without overfitting. Should reduce false positives by 19%.
It was the kind of comment you leave when you’re tired but proud. Not proud in the LinkedIn way, where people are proud to “circle back” and “drive alignment.” Proud in the quiet, private way, where your shoulders unclench because the math finally behaves and the edge cases stop screaming at you in red.
The next morning, the pull request was gone.
So was the entire repo.
I noticed it in the breakroom while eating stale pretzels from a vending machine that charged like it was a luxury boutique. I was scrolling through notifications on my phone the way I always did when I wanted to avoid Trent from sales. Trent had a permanent sheen, like he moisturized with Axe body spray and questionable tax deductions. He waved at me once, and I pretended not to see him by staring harder at my screen.
I refreshed GitHub. Then I refreshed again. The page blinked into a polite error: 404. Not found.
No fork. No archive. No warning. Just the digital equivalent of someone looking you in the eyes and saying, I don’t remember you.
A second later, an email arrived.
No greeting. No sign-off. Just:
hi camila. for transparency. the predictive risk engine has been reassigned to kyle (intern summer rotation). please provide a knowledge transfer doc by EOD.
I laughed so loudly a junior dev dropped her LaCroix. The can hit the counter and hissed like it was judging all of us.
Kyle.
The same Kyle who once asked me if the backend was “the place where the emails go.” Kyle whose crowning achievement last sprint was changing a button color to what he described as “Bitcoin blue,” then accidentally breaking half the CSS in dark mode. Kyle whose pull request descriptions read like fortune cookies written by someone with a mild concussion.
That Kyle.
They didn’t even call it a demotion. They called it a learning opportunity, which is corporate for: you built something valuable, so we’re going to hand it to a golden retriever in a startup hoodie and then call you “collaborative” when you smile about it.
My first instinct was to march into Aaron’s office and ask him what kind of mind-altering wellness tincture he’d started microdosing.
My second instinct was to do something quieter, sharper, and more permanent.
Because here’s what they forgot about me: I didn’t build things like sandcastles. I built them like vaults.
The predictive risk engine, the one they liked to call “the fraud filter” as if it was a cute little plug-in you grabbed off a shelf, wasn’t a filter. It was a system. A web. A living set of assumptions and counter-assumptions that learned patterns the way good investigators learned lies.
And I didn’t build it in isolation. I built it in a company where access was political, credit was currency, and “agile” meant the loudest person in the meeting got to rewrite reality.
I stood up, tossed my pretzels, and walked back to my desk. People did that thing they do when trouble walks past: their eyes looked busy while their attention snapped to you like static.
At my monitor, I opened the company wiki page for the engine. I already knew it would be there: my name, in tiny letters at the bottom, like an ingredient list.
Primary Owner: Camila Reyes.
And now, apparently, Primary Owner: Kyle, Intern Summer Rotation.
I clicked our internal repo mirror. Access denied.

Not even the courtesy of read-only.
I could feel my face get warm, not with shame, but with the heat of a decision crystallizing. The kind of heat that comes when you realize you don’t have to beg for respect from people who confuse proximity to power with competence.
Slack pinged.
Aaron: quick sync today? just want to make sure we’re aligned
Aligned. Like a tire that’s about to fly off.
I didn’t respond.
Instead, I opened my laptop bag, pulled out my personal machine, and slid it onto my desk like I was setting down a chessboard. I didn’t even bother to angle my screen away. Let them see. Let them wonder.
At 4:58 p.m., Kyle sent me a calendar invite titled: KT Session – Risk Engine! with a smiling emoji I hated on principle.
I declined.
At 5:03 p.m., Linda from HR sent a follow-up email. Linda wrote emails the way candles smelled: sweet on the surface, suffocating up close.
Camila, we’re encouraging cross-functional growth. Kyle will benefit from your foundational knowledge. Please support him with documentation. It’s important we maintain a collaborative culture.
Collaborative culture. The phrase people used when they wanted you to quietly accept being erased.
I shut down my workstation, walked out without saying goodnight, and drove home with my jaw clenched so tight it felt like my teeth were trying to file a complaint.
My apartment was small, quiet, and blessedly honest. No motivational posters. No “we’re a family” signs. Just a couch, a stubborn radiator, and my second monitor set up like a confession booth.
I changed into the same hoodie I always wore when I needed to think, poured myself a flat Coke Zero, and sat down.
My local clone was still there. They could lock me out of their remote, but they couldn’t reach into my hard drive and delete what I had already built.
I opened the repo and stared at the tree like it was a city map.
There were pieces of this engine that belonged to Northbridge. The scaffolding. The data connectors. The deployment pipeline. I didn’t pretend otherwise.
But the part that made it smart, the behavior profiler, the part I’d designed on my own machine using sandbox datasets that had never touched company servers, the part I’d iterated on late nights because Aaron said it was “cool but not a Q2 deliverable”?
That part was mine.
I scrolled to a commit from Friday. A hash I’d memorized the way people memorized birthdays when they cared: 89F3E7B.
The commit message was simple: Stingray Beta v3 integration.
Stingray wasn’t in the architecture doc. It wasn’t in Jira. It wasn’t in the flashy slide deck Aaron used to impress executives with charts that meant nothing.
Stingray was the engine’s conscience. The silent observer. The difference between guessing and knowing.
I’d written it like you write a song you don’t want anyone else to sing.
My cursor hovered over the terminal.
I wasn’t thinking about revenge. Not exactly.
I was thinking about ownership. About what happens when you let people believe your work is just labor, not craft. About how quickly they start treating you like a disposable tool.
I cracked my knuckles and started drafting a migration script. Not to transfer ownership to Kyle, not to “align,” but to separate what was theirs from what was mine.
Cleanly. Legally. Irrefutably.
Before I ran anything, I did what I always did when I smelled trouble: I made backups.
Not just of code.
Of timestamps. Of Slack messages. Of merge histories. Of email threads. Of the tiny humiliations that, lined up in a row, formed a pattern so obvious even HR couldn’t perfume it away.
Sunday was coming.
And Monday was sprint review.
If they wanted Kyle to wear my project like a costume, fine.
But I was going to make sure the mask didn’t fit.