Why we ditched Bullhorn for Salesforce

This wasn’t a knee-jerk decision.
And it definitely wasn’t because Bullhorn is “bad”.

For years, we ran our recruitment business on Bullhorn for Salesforce — the managed package that sits on top of Salesforce and promises the best of both worlds: recruitment-ready functionality, with the power of Salesforce underneath.

On paper, it made perfect sense.

Salesforce is an enterprise-grade platform. Bullhorn understands recruitment. Put the two together and you get speed, structure, and best practice without needing to reinvent the wheel.

And for a long time, it worked.

But gradually, almost imperceptibly at first, a gap opened up between what Salesforce could do… and what we were actually allowed to do.

The problems weren’t dramatic — they were structural

Nothing “broke” overnight. There was no single incident that forced our hand. Instead, it was a slow accumulation of friction.

Things like:

  • New Salesforce features being released… but not available to us yet

  • Customisation that technically should have been possible, but wasn’t because of the managed package

  • Meaningful changes requiring tickets, approvals, and workarounds

  • Workflows that didn’t quite fit the Bullhorn mould feeling awkward or compromised

  • Support conversations that circled back to “that’s just how the package works”

Individually, these were tolerable.

Collectively, they became limiting.

As Salesforce evolved rapidly — flows, Experience Cloud, automation, UI flexibility — we found ourselves watching capability grow on the platform while our own system stood still.

Our business stopped fitting the template

A big part of the issue was that we don’t run a simple, perm-only recruitment agency.

Our reality includes:

  • locum recruitment

  • heavy compliance workflows

  • document management and expiry logic

  • timesheets

  • client approvals

  • candidate payments

  • invoicing

  • financial controls

  • and lots of messy edge cases that don’t exist in “standard” recruitment demos

These aren’t edge cases for us — they’re core to how we operate.

But most ATS platforms (even good ones) are built around an “average” recruitment business. The further you move away from that average, the more you’re bending yourself around the software instead of the other way around.

Over time, we realised something uncomfortable:

We weren’t really using Salesforce.
We were using someone else’s version of Salesforce.

Asking a different question

Eventually, the question shifted.

Not “How do we make Bullhorn do this?”
But:

What if we stopped working around a managed package… and started building directly on Salesforce itself?

What if Salesforce wasn’t just the database underneath the ATS, but the actual product?

That was the moment everything changed.

What “going direct” actually meant

Going direct to Salesforce didn’t mean ripping everything out overnight or pretending it would be easy.

It meant:

  • owning our entire data model

  • deciding what objects should exist (and why)

  • building workflows that matched how we actually work

  • accessing Salesforce features the moment they’re released

  • designing Experience Cloud portals for candidates and clients

  • automating compliance properly, not approximately

  • connecting timesheets to invoicing with real financial logic

  • handling exceptions instead of ignoring them

  • and making changes ourselves instead of logging tickets and waiting

In short: we stopped fitting the business to the software and started fitting the software to the business.

It hasn’t been easy — and that’s important to say

This isn’t a “look how clever we are” story.

We’ve broken things.
We’ve rebuilt things.
We’ve redesigned objects we thought were “final”.
We’ve refactored flows.
We’ve learned the hard way where complexity hides.

Building directly on Salesforce is powerful — but it’s also unforgiving if you don’t think things through.

There’s no vendor roadmap to hide behind.
No one else to blame when something doesn’t quite work.
And no illusion that “the system” will solve problems for you.

But that’s also the upside.

Now, when something doesn’t work, we can fix it.
When the business evolves, the platform evolves with it.
When we spot inefficiency, we don’t ask permission to remove it.

The platform finally works with the business — not against it.

Why I’m writing this

I’m not anti-Bullhorn.
And I’m not suggesting everyone should rip out their ATS tomorrow.

For many agencies, managed platforms are the right choice.

But if you:

  • feel constrained by your system

  • know Salesforce can do more than you’re allowed to access

  • run workflows that don’t fit the “standard” recruitment model

  • or feel like your tech is holding you back rather than enabling you

…it’s worth at least asking the question we eventually asked.

Over the next few posts, I’ll share:

  • what we actually replaced

  • what surprised me most about building directly on Salesforce

  • where we over-engineered things

  • what I’d do differently if I started again

  • and where managed platforms still make sense

But before that, I’m curious:

If you’re using Bullhorn — or any ATS layered on Salesforce — what’s the one thing you wish you could change but can’t?

That frustration is usually the real starting point.

Next
Next

The Experience Cloud portal I wish recruitment systems actually had