At Geniuses Recruiting we’re always looking for ways to use more automation. While our current ATSs (Manatal & BreezyHR) are good at tracking, we felt there was room for improvement in their search. So, we decided to experiment with building our own internal search engine using LLM, and wanted to share our setup in case it’s helpful for others.
The stack (self-hosted):
ActivePieces: An open-source automation tool for managing our backend flows.
AnythingLLM: This open-source tool is at the core, providing a vector database and a UI to chat with our documents (resumes).
Gemini or Ollama: The LLM we use to process queries. We’re currently using Gemini but plan to transition to a local Ollama setup.
The flow: candidate applies through our site → resume is sent to ATS for standard process → simultaneously, our backend (ActivePieces) parses the resume and stores it in the vector database that comes with AnythingLLM.
The search: This is the part that saves a bit on API costs. When we want to search, we don’t send our entire candidate database to LLM. Instead, when we type a query, the system first searches the vector database to find the most relevant resumes. Then, it sends only those matching resumes to LLM as context.
This allows us to perform “fuzzy” language searches on our database, such as “show me all Golang developers in Georgia with 5 years of experience” or “show me Node.js developers in Eastern Europe with 5+ years with Angular.”
Since it’s mostly self-hosted, the costs are pretty manageable. Our dedicated server runs about ~$40/month, and our Gemini bill last month was around $100.
