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.