A recruiter asks a question. The agent reads the ATS and answers it.
Recruitment runs on two systems and a great deal of copying between them. We put a conversational layer over both, grounded in live records so the answers are current, not plausible.

The data was there. Getting to it was the job.
Recruiters spend a surprising share of the day on retrieval: which candidates match this role, what stage is this person at, what did we agree with this client, who has not been contacted this week. All of it exists in the ATS or the CRM, and all of it requires knowing which screen and which filter.
Candidates generate the other half. Status questions, scheduling, role details and document chasing arrive continuously and are individually trivial, which is exactly why they are expensive: each one interrupts something that was not trivial.
The obvious fix (a chatbot) usually fails here for a specific reason. A model answering from training data will confidently describe a candidate's status without having looked, and in recruitment a confidently wrong answer about somebody's application is worse than no answer.
Retrieval first, generation second, and never the other way round.
The agent does not answer from the model. Every response is assembled from a live read of the ATS or CRM, with the model used to interpret the question and to phrase the answer, not to supply the facts.
Where the underlying record is ambiguous or missing, the agent says so and offers handover, not filling the gap. That behaviour was specified before anything was built, because it is the single property that determines whether recruiters trust it.
Actions are separated from answers. Reading is open; writing (updating a stage, scheduling, sending a candidate communication) runs through explicit confirmation and is recorded against the user who authorised it.
The candidate-facing side handles the repetitive traffic on the same grounding rules, with escalation to a named recruiter whenever the conversation moves outside what the record can support.
What the agent does.
Natural-language search
Recruiter questions resolved into ATS and CRM queries, so the filter knowledge stops being a prerequisite.
Grounded answering
Every response assembled from a live record read, with the source shown, not implied.
Candidate engagement
Status, scheduling and document chasing handled conversationally, around the clock.
Screening support
Structured first-pass questions captured into the ATS as fields rather than as free text in a note.
Confirmed actions
Stage changes and outbound communication gated behind explicit confirmation and attributed to the person who approved them.
Escalation
Handover to a named recruiter whenever the record cannot support an answer, the behaviour that earns the trust.
Built with.
Model layer
Grounding
Application
Integration
What changed.
- Retrieval stopped interrupting the work. Questions that previously required knowing the right screen and filter are answered conversationally, by anyone on the team.
- Candidate traffic handled outside working hours. Status and scheduling questions no longer queue overnight waiting for a recruiter.
- Screening arrives as structured data. First-pass answers land in ATS fields, not as prose in a note, which is what makes them usable in a later search.
- Trust held because the agent admits ignorance. Grounded answers with visible sources, and explicit handover when the record is silent, instead of fluent guesses.



