Candidate Withdrawal Reason Coding
When a candidate withdraws mid-process, a recruiter jots a free-text note — 'took another offer,' 'went cold,' 'comp mismatch' — into the ATS, if they note anything at all, and those notes never get rolled up into anything a hiring team can act on. A pattern like 'candidates keep withdrawing after the third interview round because the process is too slow' is genuinely visible in the data, but it's buried across dozens of inconsistent free-text entries that nobody has time to read through and categorize, so the same process problem keeps costing hires quarter after quarter.
STARTING PRICE
From €99
Starter tier · Single-workflow automation, one core integration, fast turnaround.
Get a quote →Saves roughly 1-2 hrs/week for recruiting ops, plus earlier detection of process problems that would otherwise cost multiple quarters of lost hires before anyone notices.
How the automation works
We take the free-text withdrawal notes recruiters already enter and code them into a consistent reason taxonomy — compensation, timeline/speed, competing offer, role fit, process experience, went unresponsive — rather than requiring recruiters to change how they capture the note in the first place. Reason codes roll up by requisition, role family and hiring manager, so a pattern like a specific team's loop consistently losing candidates to timeline concerns is visible in a report instead of scattered across individual candidate records nobody cross-references. Ambiguous or vague notes that don't clearly map to a reason get flagged rather than force-coded into a bucket that might misrepresent what actually happened.
Process flow
- 01
Withdrawal note entered trigger
A recruiter's existing free-text withdrawal note in the ATS triggers coding, without requiring any change to how the note is captured in the first place.
- 02
Classify against reason taxonomy ai
The free-text note is mapped to a consistent reason category — compensation, timeline, competing offer, role fit, process experience, unresponsive — rather than left as an uncategorized string only readable one candidate at a time.
- 03
Flag ambiguous notes for review ai
Notes too vague or ambiguous to confidently classify are flagged for a recruiter to clarify rather than force-coded into a category that might not reflect what actually happened.
- 04
Roll up by req, role family and hiring manager output
Coded reasons aggregate into a recurring report broken out by requisition, role family and hiring manager, surfacing patterns that are invisible when notes stay scattered in individual candidate records.
- 05
Alert on emerging patterns output
A specific reason recurring above its normal baseline for a given team or role — timeline complaints spiking for one hiring manager's reqs, for instance — triggers an alert rather than waiting for a quarterly review to notice.
Inputs
- Existing free-text withdrawal notes from recruiters
- Requisition, role family and hiring manager attribution
- Withdrawal reason taxonomy definitions
- Historical baseline reason distribution
Outputs
- Coded withdrawal reasons per candidate
- Recurring withdrawal-reason report by req/role/manager
- Ambiguous-note review queue
- Emerging-pattern alerts above baseline
Works with
Prefer a fully custom build instead of an off-the-shelf integration? We scope both options during your free consultation — most jobs like this one work fine on standard connectors, but higher-volume or non-standard systems sometimes need bespoke API work, reflected in the complex tier.
Where this goes wrong if you get it wrong
- Free-text withdrawal notes vary enormously in specificity and phrasing between recruiters — 'comp' and 'they wanted more money' and 'salary too low' should all code to the same reason, and a coding approach that misses that consistency defeats the entire point of building a taxonomy in the first place.
- Force-coding an ambiguous or vague note into the nearest-fitting category, rather than flagging it, risks quietly distorting the aggregate report with reasons that don't actually reflect what happened — better to have a visible 'unclear' bucket than a confidently wrong one.
- A withdrawal reason report that isn't broken out by hiring manager or team hides exactly the pattern most worth catching — a specific loop that's chronically too slow, or a specific manager whose reqs lose an unusual share of candidates to comp mismatch, disappears into a company-wide average.
- Coding withdrawal reasons without comparing against a historical baseline turns every number into noise — a report needs to distinguish 'this is a normal rate of comp-related withdrawals for this role type' from 'this is a spike worth investigating,' and a raw count alone can't make that distinction.
Frequently asked questions
Do recruiters need to change how they write withdrawal notes?
No — the coding works from the free-text notes recruiters already enter; it doesn't require adopting a new structured form at the point of capture.
What happens if a note is too vague to categorize confidently?
It's flagged for review rather than force-coded into an approximate category, since a wrong code is worse for the aggregate report than a visible 'unclear' entry.
Can we see if a specific hiring manager's process is losing candidates for a particular reason?
Yes — coded reasons roll up by requisition, role family and hiring manager, so a pattern specific to one team or loop is visible rather than buried in a company-wide average.
Does it flag when something changes, not just report totals?
Yes, reason distributions are compared against historical baselines, and a spike above normal for a given category or team triggers an alert rather than waiting for a periodic review to catch it.