Home / Recruitment
Industry — Recruitment
Parsing, matching and screening for recruitment desks
Engineering for CV and specification parsing, shortlisting a hiring manager can defend, screening calls that collect declared facts, and ATS writes that do not create duplicate candidates.
Start with the desk and the decision boundary
A permanent desk works a requisition over weeks and searches the records already held before it advertises, so it needs a pool search as well as an inbound parsing path. A temp or shift desk fills tomorrow's shifts from a pool already registered and compliant, a filtered read over availability and document validity. A contract desk is requisition-driven like perm, but carries rate, worker status and end dates.
The system does not assess candidates and it does not reject them: a rejection, an offer and the decision not to progress someone belong to a person, and no path exists for the system to issue one. Automated scoring of ability or suitability is out of scope.
One posting can produce more applications in a day than the desk sees in a normal month, so the parsing path is sized for the burst, on volumes the sprint measures. A cheap filter ahead of an expensive step makes that affordable, and it is where candidates are dropped without being evidenced, so it is restricted to mandatory constraints, kept in the audit record, and scored for the shortlisted candidates it would discard.
Parsing CVs and job specifications into fields
A CV arrives as a layout rather than structured text, so reading order is reconstructed before extraction, and a two-column PDF flattens into interleaved lines. Dates appear as 2019-21, as Jan 19 to present and as three years, and gap length depends on resolving them. Titles map to a taxonomy, not a string match.
Client briefs blur mandatory and preferred requirements, and extraction separates them: a hard constraint scored as a preference produces a shortlist the hiring manager rejects in full. On a regulated desk the compliance fields are queried more often than the skills fields, so expiry dates on certifications, registrations, background checks and insurance are extracted as dates an availability filter can compare against a shift.
Ranking a hiring manager can defend
A ranking is assembled per requirement rather than from embedding similarity: each check returns met, not met or not evidenced, with the span that supports it. Hard constraints filter before scoring, so a candidate without a required registration is absent rather than ranked lower, and the result is an order within one requisition, since scores do not transfer.
Employment is high risk under the EU AI Act, so the pipeline assumes a shortlist will be challenged months later and must be reconstructable then by someone who did not run it: every check, its evidence span, and the model, prompt and taxonomy versions are stored with it. Re-running it is weaker, since hosted inference is not bit-identical across runs, so decoding is pinned, tie-breaks are deterministic, and drift from a stored ranking is measured.
Name, address, institution, graduation year and a career gap act as proxies, and a model given the whole document can use them even when instructed not to, so instruction is not the control. Name and address are withheld from the ranking step; institution and dates cannot be, because degree and experience requirements are checked against them, so they reach the ranker as derived values, years of relevant experience and a completion flag, not a raw institution name and graduation year. Stability is tested by varying the withheld fields, and institution prestige at a constant qualification.
Screening calls that collect declared facts
A screening call has a narrow job: availability, notice period, rate expectation, shift willingness and certification expiry dates. These are facts the candidate states, and spoken durations are normalised first, because a month and four weeks are not the same notice period.
Right to work is collected as a declared status only and written to the record flagged as unverified, because a statutory check needs a document or share-code examination a call cannot perform, and the record should not let a consultant mistake one for the other. Scoring a competency answer, or inferring suitability from fluency, hesitation or accent, makes the call an assessment instrument, so the scope lists the fields a call may collect and routes the rest to a person. Call behaviour is covered on our voice AI agents page.
One candidate, one record
A duplicate candidate record costs money: two consultants work the same person, and ownership of the introduction is disputed when a fee falls due.
Email is not stable enough to key on, because candidates reapply from a different address, so deterministic matching on normalised email and phone runs first, with probabilistic matching behind it on name, overlapping employers and date ranges, and address history. Date of birth is not a match field: most records do not hold one, and collecting it before offer stage creates the exposure the fairness work removes. Borderline pairs go to a review queue rather than being merged, and writes carry an idempotency key so a redelivered webhook does not duplicate a submittal.
Candidate data, consent and retention
A CV carries special category data nobody asked for: a health condition explaining a gap, a trade union role in employment history, an unspent conviction. The schema therefore decides what is stored, what is dropped at ingest and what never reaches the ranker.
A retention clock running from last contact is reset every time the system matches the candidate against a new job, so someone who applied once can be held indefinitely by the system's own activity; it runs from candidate-initiated contact instead. Bias auditing, where a jurisdiction requires it, is done by an independent auditor, not by us; we build the logging, held-out sets and counterfactual tests it reads. Lawful basis, residency and provider terms we scope with you, not advise on.
Evaluate against requisitions you have already filled
The evaluation set comes from filled requisitions and who was submitted, interviewed and placed. It records past human decisions, so a system tuned to agree with it reproduces whatever they contained.
No candidate missing a mandatory requirement may appear above the line, and every cited span must support the check that cites it. A brief with no suitable candidate must be allowed to return nothing, because a system that always fills ten slots will fill them from an unsuitable pool.
What a recruitment project costs
Every engagement starts with a fixed-price discovery sprint at USD 2,500 over two weeks, which produces the architecture, initial screen designs, acceptance criteria, a running-cost model and a fixed price for the build. The sprint fee is deducted from the build.
Parsing is charged per CV, including the majority never shortlisted. Ranking is charged per requisition per run, screening calls per minute of connected time, and the index for as long as the pool is kept. This work overlaps our AI automation services and RAG chatbot development pages.
Part of the AI Feature Implementation Sprint → · Explore our work → · Discuss an AI project →
Parsing into fields
Turn CVs and client briefs into typed fields, including employment dates, mapped titles and compliance expiry dates.
Explainable shortlisting
Rank candidates requirement by requirement, with the evidence span and version record stored against the shortlist.
Screening and ATS write-back
Collect declared availability, notice period and rate, then write them to the existing candidate record.
FAQ
Recruitment AI, answered.
Is it legal to use AI to screen job candidates?
Yes, under conditions. Employment uses are high risk under the EU AI Act, so ranking has to be explainable, the shortlist as produced is recorded, and a person decides. Lawfulness is for your counsel.
How much does it cost to build an AI recruitment system?
Every engagement starts with a fixed-price discovery sprint at USD 2,500 over two weeks, which produces the architecture, acceptance criteria, a running-cost model and a fixed price for the build. The sprint fee is deducted from the build.
What does it cost to run?
Parsing is charged per CV, ranking per requisition per run, screening calls per minute of connected time, and the index for as long as the pool is kept.
How accurate is CV parsing?
No percentage is promised here. Dates, job titles and expiry fields are harder than contact details. Criteria are agreed per field against your own CVs.
Will it connect to our applicant tracking system?
That depends on the API and your own instance: these platforms are configured per agency, so custom fields, candidate statuses and pipeline stages differ between instances of the same product.
Can a candidate ask why they were not shortlisted?
Each requirement check, its evidence span, and the model, prompt and taxonomy versions are stored with the shortlist, so it can be shown and explained from that record rather than by re-running the model.
Can an AI agent screen candidates by phone?
A call can collect declared facts such as availability, notice period and certification expiry. Right to work is stored as a declared status flagged as unverified, because a statutory check needs document or share-code examination. Scoring competency answers is out of scope.
How do you stop duplicate candidate records?
Normalised email and phone matching runs first, then name, employment history and address history. Date of birth is not used as a match field. Borderline pairs go to a review queue, not an automatic merge.
Describe the desk, the requisitions and the ATS your consultants work with today.
Share the requirements. Kartik reviews your brief and follows up by email to discuss fit, dependencies and next steps.
Discuss an AI Project →