← Back to Main Page
How I Stopped Babysitting Pull Requests with n8n - Article by Deepan Kumar

How I Stopped Babysitting Pull Requests with n8n

n8n <> PR monitor

Pull Requests are like house plants 🌱.

Some thrive with attention.

Some are left unattended until they wilt.

And some just sit approved, waiting forever to be merged.

That’s when I thought: why not automate this babysitting?

The Spark

Our team spends way too much time bouncing between GitHub tabs, Slack reminders, and mental checklists just to figure out:

  • Which PRs are still in review
  • Which ones are approved but gathering dust
  • Which ones are about to blow past our SLA 🚨

I was already tinkering with n8n, an open-source workflow automation tool and it clicked: this is a perfect fit.

First Steps

I started small:

  • A cron job that triggers at 10 AM on weekdays
  • Fetch open PRs from GitHub
  • Print them out in console (yes, very glamorous 🙃)

Not exactly life-changing, but it proved the concept.

Adding More Brains 🧠

Pretty soon, the “list PRs” version wasn’t enough. I began layering checks:

  • Review state → How long has this been waiting?
  • Approval status → Approved but not merged = red flag.
  • SLA breach warnings → Shout loudly when deadlines are in danger.

And instead of console logs, I wired it into team notifications (Slack, email, whatever the squad preferred). Suddenly, the workflow became less of a side project and more of a team tool.

Challenges (aka, Where the Fun Began)

Like every good automation story, the devil was in the details:

  • GitHub node limitations: Sure, n8n has a GitHub node, but no native way to fetch PR comments. So I had to break out the HTTP Request node and wrestle directly with GitHub’s REST API. And — Hello, pagination, my old friend.
  • Approvals without comments: Fun fact: some PRs get approved without a single comment. If I treated “comment = review,” those would slip through. So I had to explicitly check the review status instead.
  • Bot noise: CI bots love leaving comments. “✅ Tests passed!” “❌ Lint failed!” If I counted those, it looked like bots were my most diligent reviewers 🤖. Had to filter them out to avoid false positives.
  • Multiple PRs per teammate: One teammate with three open PRs? Needed loops to handle that gracefully.
  • Readable outputs: Raw JSON dumps are great for debugging but terrible for morning Slack messages. I had to transform data into clean, human-friendly summaries.

Each hiccup forced me to think less like a “workflow clicker” and more like a workflow designer.

Where It’s At Today

Now, every morning at 10 AM, my team gets a neat digest of:

  • Who has open PRs
  • Which PRs need reviews
  • Which ones are approved but still hanging around
  • Which ones are about to miss SLAs

It’s not perfect, but it’s already saving us manual effort (and some arguments 😅).

What’s Next

I want to make it more plug-and-play so anyone can configure their own notification channel (Slack, email, Teams, etc.) and just drop it into their setup.

Here’s the sneak peak of current state

https://medium.com/media/5907aed5ef14a3d50422106609bd9fec/href

Final Thoughts

This wasn’t about “look what I built” but more like:

Here’s something I tried, broke, fixed and iterated on. Maybe it sparks ideas for you too.

Because at the end of the day, babysitting PRs manually is so last season. Let the bots do the boring work and let humans focus on reviews that matter.