CodeRabbit logoCodeRabbit logo
AgentEnterpriseCustomersPricingBlog
Resources
  • Docs
  • Trust Center
  • Contact Us
  • FAQ
  • Reports & Guides
Log InGet a free trial
CodeRabbit logoCodeRabbit logo

Products

AgentPull Request ReviewsIDE ReviewsCLI ReviewsPlanOSS

Navigation

About UsFeaturesFAQSystem StatusCareersDPAStartup ProgramVulnerability Disclosure

Resources

BlogDocsChangelogCase StudiesTrust CenterBrand GuidelinesReports & Guides

Contact

SupportSalesPricingPartnerships

By signing up you agree to our Terms of Use and authorize CodeRabbit to provide occasional updates about products and solutions. You understand that you can opt out at any time and that your data will be handled in accordance with CodeRabbit Privacy Policy

discord iconx iconlinkedin iconrss icon
footer-logo shape
Terms of Service Privacy Policy

CodeRabbit, Inc. © 2026

CodeRabbit logoCodeRabbit logo

Products

AgentPull Request ReviewsIDE ReviewsCLI ReviewsPlanOSS

Navigation

About UsFeaturesFAQSystem StatusCareersDPAStartup ProgramVulnerability Disclosure

Resources

BlogDocsChangelogCase StudiesTrust CenterBrand GuidelinesReports & Guides

Contact

SupportSalesPricingPartnerships

By signing up you agree to our Terms of Use and authorize CodeRabbit to provide occasional updates about products and solutions. You understand that you can opt out at any time and that your data will be handled in accordance with CodeRabbit Privacy Policy

discord iconx iconlinkedin iconrss icon

How a hackathon project turned into my work at CodeRabbit

by
Ayush Sridhar

Ayush Sridhar

June 22, 2026

7 min read

June 22, 2026

7 min read

  • October: Hackathon chaos to hackathon WIN
  • What we built at CalHacks: merj, an AI-powered merge conflict resolver
    • The user experience
  • The part that mattered most (and it wasn’t the prize)
  • The follow-up: How a hackathon turned into an internship
  • Practical advice for junior devs (what I’d do again)
    • 1. Build things that force real engineering decisions
    • 2. Ask for help while you’re still building
    • 3. Make your ask easy to answer
    • 4. Follow up with proof, not desperation
    • 5. LeetCode can help you pass gates. Building creates doors.
  • The bottom line
Back to blog
Cover image

Share

https://victorious-bubble-f69a016683.media.strapiapp.com/Reddit_feecae8a6d.pnghttps://victorious-bubble-f69a016683.media.strapiapp.com/X_721afca608.pnghttps://victorious-bubble-f69a016683.media.strapiapp.com/Linked_In_a3d8c65f20.png

Cut code review time & bugs by 50%

Most installed AI app on GitHub and GitLab

Free 14-day trial

Get Started

Catch the latest, right in your inbox.

Add us your feed.RSS feed icon
newsletter decoration

Catch the latest, right in your inbox.

Add us your feed.RSS feed icon

Keep reading

Before, during, after: The three moments AI Agents earn your trust

Before, during, after: The three moments AI Agents earn your trust

As AI agents handle more code and longer tasks, "trusting the outcome" isn't enough. Learn why explainability at three critical moments is now the product itself.

Humans don’t have an API

Humans don’t have an API

As generative AI becomes embedded in daily work, the line between how we communicate with software and how we communicate with one another can feel less distinct than it once did.

The real bottleneck in code review isn't reviewing code, it is understanding it

The real bottleneck in code review isn't reviewing code, it is understanding it

The bottleneck in code review has always been understanding intent well enough to judge whether a change is right, whether it is safe, and whether it actually does what the team intended

Get
Started in
2 clicks.

No credit card needed

Your browser does not support the video.
Install in VS Code
Your browser does not support the video.

In late October, I visited CodeRabbit’s offices to collect my prize from the CalHacks Hackathon.

A few months later, I walked into the CodeRabbit office as a SWE intern.

That’s the headline. But the part that matters (especially if you’re a junior dev) isn’t “wow, lucky.” It’s the chain of events that made it possible:

A four-step process: Build something real, Ask for help, Iterate fast, Follow up with proof.

This post is for junior developers who are trying to land internships in a market that feels tougher than it should be. I want to share the “unofficial path” that worked for me.

The technical project that started it all was: merj, an AI-powered merge conflict resolver that used CodeRabbit to give an LLM the missing ingredient it needed to resolve conflicts correctly: semantic intent.

I’ll also share what I’m working on now as an intern. I’m taking the same core idea and turning it into something that can help teams resolve PR merge conflicts with a workflow that fits cleanly into GitHub.

October: Hackathon chaos to hackathon WIN

CalHacks is chaotic and energetic in the best way. There’s half-coded demos, half-asleep teams, and a constant stream of “that doesn’t work, gotta fix that.”

My friends and I did what a lot of teams do at the start. We brainstormed a bunch of ideas, then walked around talking to sponsors and attendees to see what’s feasible and what would actually be fun to build in a weekend.

That’s when we ran into CodeRabbit.

At the time, we weren’t thinking “we need a code review product.” We were thinking like hackers: “We want to ship something ambitious in 36 hours and how do we keep it from collapsing under rushed changes?”

We realized CodeRabbit could help. And that’s when we met Hendrik Krack, a developer advocate at CodeRabbit.

This is the moment that changed everything. Hendrik didn’t just tell us about the product. He helped us refine the actual project idea in a way that made CodeRabbit genuinely useful to the solution.

Our early thinking was pretty typical hackathon-thinking: “Throw some context into an LLM and hope it figures it out.”

Hendrik pushed us toward a much better approach:

“Don’t just give the model raw diffs. Give it semantic understanding of what each person was trying to do.”

That might sound obvious in hindsight. But in the middle of a hackathon, it’s easy to default to “LLM magic.” Hendrik helped us see what the LLM would actually need to succeed and that became the core of our architecture.

Over the course of the hackathon we stayed in contact with Hendrik and also met Erik Thorelli, the Dev Experience Lead at CodeRabbit. We attended their workshop, asked for input multiple times, and kept tightening our ideas based on what we learned.

Five men stand by a large window overlooking a body of water and the distant horizon.

By the time presentations came around, we were showing something that had been iterated on with real feedback, and we even got the chance to present directly to them because they were so interested in what we were building.

We ended up winning CodeRabbit’s track. The prizes were amazing: Meta AI glasses and a visit to the CodeRabbit office that afternoon.

But the part that stuck with me was the irony. I visited the office as a hackathon prize, and I had no idea I’d be working as an intern in that same office less than three months later.

What we built at CalHacks: merj, an AI-powered merge conflict resolver

Our project was called merj (pronounced like “merge,” but slightly wrong on purpose).

Problem: Merge conflicts are one of the most tedious, annoying parts of software development.

They show up at the worst times. They’re hard to reason about from conflict markers alone, and they’re a perfect example of “high friction, low reward” work. You’re not building something new. You’re just trying to get back to building.

So we asked: What if resolving a merge conflict could be as easy as running one command?

The user experience

The tool was a CLI, and the entry point was simple:

merge pull

Under the hood, it would attempt a normal git pull. If Git complained about a merge conflict, merj would trigger a conflict-resolution workflow.

We designed it that way intentionally. We didn’t want “another AI chat tool.” We wanted something that fit the existing workflow developers already use.

The part that mattered most (and it wasn’t the prize)

Over that weekend, Hendrik helped us refine our concept so we weren’t relying on “LLM magic.” He showed us how to use CodeRabbit’s semantic summaries as an intent layer, and he was generous with his time answering our questions about how CodeRabbit works and how it could integrate into our project.

Erik’s workshop helped us understand CodeRabbit more deeply so our integration became less hand-wavy and more real.

We kept coming back for feedback, and each time, the project got better.

This is one of the most important lessons I’ve taken away as a junior dev:

Asking for help is a skill. And when you do it well, with momentum and clarity, experienced engineers actually want to help.

A good “ask for help” looks like:

  • “Here’s the goal.”
  • “Here’s what we built so far.”
  • “Here’s what isn’t working.”
  • “Here are two options we’re debating.”
  • “What would you do next?”

That’s how you turn a sponsor booth conversation into a real connection.

The follow-up: How a hackathon turned into an internship

The week after CalHacks, I reached out to Hendrik and Erik asking about potential internship opportunities and whether they could help me navigate the process.

They connected me with David Loker, CodeRabbit’s VP of Applied AI, and we set up an interview, which felt like a continuation of the hackathon:

  • I thoroughly explained our project architecture.
  • We talked about follow-ups and how to improve the product.
  • We discussed how it might fit within CodeRabbit’s existing product.
  • We went deeper on technical choices and failure modes.

I received an offer the next day.

I’m not sharing this to flex. I’m sharing it because it highlights something that matters in today’s environment: It’s easier for people to believe in you when you’ve already shown proof of how you think, build, and iterate.

Practical advice for junior devs (what I’d do again)

I want to end with concrete advice, because I wish someone had told me this earlier.

1. Build things that force real engineering decisions

Tutorials are fine. But the projects that change your trajectory are the ones with:

  • Constraints
  • Tradeoffs
  • Failure modes
  • Real integration points

Those are the projects that make interviews feel like conversations instead of interrogations.

2. Ask for help while you’re still building

Don’t wait until it’s “perfect.”

Ask early enough that feedback can change the design.

3. Make your ask easy to answer

Respecting someone’s time isn’t about being silent; it’s about being clear.

Show:

  • What you tried
  • What broke
  • What you think is happening
  • What kind of feedback you want

4. Follow up with proof, not desperation

“Here’s what I built and what I learned” is memorable.

A generic “please give me a chance” message isn’t.

5. LeetCode can help you pass gates. Building creates doors.

Interview prep matters, but building impressive things is what gets attention and creates opportunities.

The bottom line

I landed an internship with CodeRabbit because I built something real, asked for help early, iterated fast, and followed up with proof.

And the wild part is that the loop is continuing. The hackathon project that started as a weekend experiment is now becoming a real product initiative I get to work on as an intern.

Don’t just apply harder in isolation if you’re a junior dev trying to stand out in a tough environment. Instead, build something you’re proud of and then get it in front of people who might be interested in it.