Home/Case Studies/GPT Chatbot for ATS & CRM
HR Automation

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.

GPT-powered chatbot operating over an applicant tracking system and CRM
SectorRecruitment & HRPatternGrounded conversational agentSystemsATS and CRM, read and writeUsersRecruiters and candidatesGuardrailAnswers cite the recordEscalationHuman handover on ambiguity
The situation

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.

What we built

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.

Inside the system

What the agent does.

01

Natural-language search

Recruiter questions resolved into ATS and CRM queries, so the filter knowledge stops being a prerequisite.

02

Grounded answering

Every response assembled from a live record read, with the source shown, not implied.

03

Candidate engagement

Status, scheduling and document chasing handled conversationally, around the clock.

04

Screening support

Structured first-pass questions captured into the ATS as fields rather than as free text in a note.

05

Confirmed actions

Stage changes and outbound communication gated behind explicit confirmation and attributed to the person who approved them.

06

Escalation

Handover to a named recruiter whenever the record cannot support an answer, the behaviour that earns the trust.

Built with

Built with.

Model layer

GPT-class LLMStructured promptingFunction calling

Grounding

Live ATS and CRM readsRetrieval over role and candidate recordsSource attribution

Application

Conversational front endRole-based permissionsAudit log

Integration

ATS APIsCRM APIsCalendar and email
What changed

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.