An internal tool we built to improve our ATS search

As agency owners, we all invest heavily in building our candidate databases. But like many, we’ve always felt our ATS search was a bit clunky. It’s great for tracking, but we worried we were missing qualified people we already had just because we didn’t type in the exact right keyword.

We’re always tinkering with automation, so we decided to experiment with building our own internal “smart search” layer that sits on top of our database.

How it works

The goal was simple: let our recruiters search using plain English, not just rigid keywords.

Now, instead of trying multiple combinations, our team can just type things like:

  • “Show me all Golang developers in Georgia with 5 years of experience.”
  • “Find Node.js developers in Eastern Europe with 5+ years with Angular.”
  • “Who do we have with fintech or payments experience in Armenia?”

The system understands the intent behind the query and searches our entire resume database to find the most relevant matches, even if the resume says “Go” instead of “Golang” or lists “Team Lead” instead of “Senior.”

The result?

It’s not a magic wand, but it’s been surprisingly helpful.

It saves our team time and, more importantly, it’s surfacing great candidates that our standard search was completely missing. It’s helping us get more value from the database we’ve already spent years building.

How we built it (and how you could, too)

For those curious about the tech, we didn’t buy another expensive SaaS subscription. We built this on a flexible, self-hosted, open-source stack (primarily using ActivePieces for the workflow and AnythingLLM for the search and chat). This keeps our costs down and gives us full control.

We’re sharing this because we’re sure we’re not the only agency with this frustration.

If you’re interested in seeing how it works, or if you’re thinking about building something similar for your own agency, we’d be happy to show you our setup.