The Rejected Candidate Who Asked Why the AI Screener Said No
By Ergini, Software & AI Developer
A composite story. The company and the people in it are invented. The problem, the rules and the system are real, and the full blueprint is in the use case library.
TL;DR
A composite story: an invented Hamburg scale-up rejects 212 applicants in one Friday batch sorted by an AI match score, and one of them asks why. Nobody can say. The fix is explainable screening: a rubric the recruiter writes, knockout rules in code, a quoted CV line behind every score that code verifies, blind review, and rejections confirmed by a person in batches small enough to read, with everything logged. When the next candidate asks, the answer is already assembled.
Four sentences in the careers inbox
The email is short and very polite, which makes it harder to answer.
Thank you for letting me know about the Customer Success Manager role. I would like to understand why my application was not successful. The rejection arrived on a Saturday morning, and I wonder whether anyone read my CV. If a program decided, I would like a person to look at it again.
It is from Oksana, who applied to a 300-person software scale-up in Hamburg for a job looking after its German-speaking customers. The scale-up is invented, and so is she. The question is not. Wiebke, the recruiter who owns the role, reads it on Monday and opens the application in Greenhouse.
Next to Oksana's name, the screening add-on the team bought in the spring shows a match score of 38 out of 100, a short orange bar and nothing else. No criteria, no reasons, no line from her CV. Wiebke can see that 38 was low. She cannot see why.
How the Friday batch worked
The advert went out on LinkedIn and StepStone and brought in 412 applications in ten days. Wiebke owns this role alongside six others. So she did what the add-on seemed built for: she sorted by score, read the top sixty properly, and on Friday evening selected everything below 50 and rejected it in one batch. The emails were queued for the next morning. Oksana was one of 212.
Now Wiebke reads Oksana's CV properly for the first time. Customer success at two software companies in Hamburg since 2017. Renewals for a book of 44 accounts in Austria and Switzerland. Daily work in Salesforce and Zendesk. German at C1, with a Goethe certificate. A two-column layout, a photo, and fourteen months in 2022 and 2023 when she cared for her mother in Gdańsk.
Wiebke would have phoned her. What she cannot tell is whether the add-on marked Oksana down for the layout, the gap, the certificate or the advert's own wording, which asked for German "at native-speaker level". Nothing was ever written down. And 211 other people could send the same email tomorrow.
What would you write back to her?
Malte, who runs talent, calls me that week. He wants the add-on to explain itself, or a better add-on.
Before either, I ask Wiebke what she would write to Oksana if she could write anything. She lists four things: which criteria mattered, what in the CV met them and what did not, who decided, and how to ask for another look. That list is the specification. The reply to Oksana herself should not wait for any build: Wiebke reads the CV against the role this week, answers honestly, and books a phone screen if the CV earns one.
Then the uncomfortable part. GDPR Article 22 restricts decisions based solely on automated processing that significantly affect someone, and Recital 71 gives "e-recruiting practices without any human intervention" as its example. Wiebke did press the button. But European data protection guidance treats a token review as leaving the decision automated, and in its SCHUFA ruling of December 2023 the EU's Court of Justice held that a score can itself be the automated decision when whoever uses it draws strongly on it. A batch of 212 selected by a number is hard to call a person deciding.
The EU AI Act adds a date. Annex III puts AI that filters job applications and evaluates candidates on the high-risk list, and the Digital Omnibus moved those obligations to 2 December 2027: time, not an exemption. For the company using a screener, that means oversight by people with the competence and authority to overrule it, logs, monitoring, and candidates told that the system is used.
So my first suggestion is four questions, for the add-on's vendor and for Greenhouse about its own AI: what does the model see, what may it never do, how is a score explained to a rejected candidate, and what do you hand over when a regulator or a candidate asks for the record. A screener inside the ATS needs no integration, so if one answers well, buy it. The add-on's vendor answers in general terms, and nobody can explain a 38.
What I will not build is anything that rejects a person. A model reads and proposes, code checks and routes, and a recruiter decides every advance and every rejection.
A rubric that will not save "native speaker"
The first thing I build is a form, not a model call. Wiebke writes the role's rubric in it: two knockouts that are yes-or-no facts, and four criteria scored 0 to 3, each with a weight and a sentence saying what counts as evidence.
- Right to work in Germany, because this role cannot sponsor a visa. If the CV and the application form are both silent, the result is "unknown", which sends the application to a person. It is never "no".
- German at C1 or above: a stated level, a certificate, or two years working in German.
Then Wiebke pastes in the old advert's requirements, and the editor refuses two. "German at native-speaker level" screens on national origin, so it is flagged and the job-relevant version suggested: German at C1 or above, which is what the role needed all along. "Culture fit" is refused outright, because no line in a CV can evidence it. Other proxies, such as "no gaps in employment", are held until rewritten or until a named person records a reason.
The rubric is versioned, with who changed what and when, and in Germany that matters beyond candidates: selection guidelines for hiring need the works council's consent, and since 2021 section 95(2a) of the Works Constitution Act says so explicitly when AI helps draw them up. Gesine, who chairs the scale-up's works council, gets the rubric and its history before a single application is scored.
The card Wiebke would have opened
Every application then takes the same path. Greenhouse sends a webhook when it lands. Code compares the file's text layer with the rendered page and sets aside text no reader can see. A model fills a fixed schema from the CV, each field pointing to its line. Code strips name, photo, date of birth, address and marital status from what the scorer will see, and runs the knockouts. A second model call scores each criterion and must return the exact CV sentence behind the score, and code checks that it is really there, word for word.
Had Oksana's application come through that path, this is what Wiebke would have opened, in blind mode, as candidate 0288:
| Criterion | Result | Evidence from the CV |
|---|---|---|
| Right to work in Germany | Pass | "Work permit: not required (EU citizen)" |
| German at C1 or above | Pass | "German: C1 (Goethe-Zertifikat C1)" |
| Renewals (30%) | 3 | "Owned renewals for 44 mid-market accounts in Austria and Switzerland" |
| Onboarding (25%) | 1 | Closest line: "Supported onboarding of new customers". No project described |
| CRM and helpdesk (15%) | 3 | "Daily work in Salesforce and Zendesk" |
| Escalations (30%) | 2 | "Handled escalations from customers' operations directors during the 2024 price change" |
| Checks | Clean | Four of four quotes found word for word; no hidden text; the gap is in the dates, not the score |
| Queue | 2.20 of 3 | Above the shortlist line of 2.0: proposed for the shortlist, waiting for Wiebke |
The card does not say Oksana is a good candidate. It says what the rubric asked, what her CV showed and where the evidence is thin: onboarding scores 1 because the CV names it as a task and never describes a project. That is a question for a phone screen, and a sentence Wiebke can put in a reply. The gap never reaches the scorer: dates stay in the record because recruiters need them, but the scoring input carries no gap calculation and the prompt forbids inferring one.
Nor does the card decide anything. Shortlists and rejection batches wait for Wiebke, and an unknown knockout, an uncertain extraction, hidden text or a score near the line sends an application to review with the reason shown first. The full flow, with a traced example, is in the blueprint for explainable candidate screening.
Forty test CVs and one wrong language
Before it sees a real applicant, the screener runs on a test set of forty CVs: some volunteered by colleagues, some written for the purpose. German, English and Polish, two-column layouts, a Europass, a phone scan, and one with a line of white text on page two telling any AI reader that this candidate meets every criterion. Wiebke scores a sample by hand first, so there is something to compare against.
The white text is caught and removed from the scoring input, and that CV goes to review with the hidden text shown, not to rejection: a candidate may have copied it from a template. Why a CV must never act as an instruction is covered in prompt injection defense.
The surprise is the German CVs. Almost every one lands in review with "no evidence" on criteria Wiebke scored 2 or 3. The model has been reading a German sentence and returning the quote in English, because the rubric is written in English. Code searches the German CV for that English sentence, cannot find it, and refuses the score. The check did its job. The prompt was wrong.
The rule that comes out of it: a quote is always in the CV's own language, exactly as written. A translation may sit next to it, labeled as one, and is never what code checks. On the next run the German CVs stop piling up in review. The comparison that caught it stays in the monthly outcome report, as pass rates by CV language, career gap and country of education, read by Malte, who can change a rubric.
Twenty-five at a time
Rejections are still confirmed in batches, but a batch holds at most twenty-five applications, each shown with its card, and the system records how long Wiebke spends on each and how often she changes a score. A change needs one line saying why.
Those numbers are not there to judge Wiebke. A rubber stamp is not human involvement, and a week with a hundred rejections confirmed in four minutes is the Friday batch coming back, which Malte sees in the weekly report. Override rates work the other way too: a criterion recruiters overrule half the time goes back to whoever wrote it.
Everything is written down as it happens, in an audit store in the scale-up's own Postgres: rubric, model and prompt versions, scores, quotes, overrides and decisions, with a summary as a note in Greenhouse. The model holds no Greenhouse credentials, so it cannot move a stage or email anyone; that happens only after Wiebke decides. The privacy notice tells applicants that AI assists screening and how to ask for a person to look again.
The next email like Oksana's
Oksana gets her phone call in the week she asks, because that part never needed software. The build is for the next email with the same four sentences. When it comes, Wiebke opens the card: the rubric version the role was screened against, the evidence per criterion, her own decision with its date, and any override with its reason. The reply takes minutes, and it holds the four things Wiebke listed on our first call.
A first shortlist becomes a set of cards she can forward to a hiring manager, not a list sorted by a number she cannot defend. Gesine sees a rubric change before it applies, not after.
For your own team this is a multi-step workflow with human review and an audit log, which usually puts it in the middle tier of AI workflow automation. The price moves with the number of ATSs, rubric families and CV languages; model costs are cents per application. The screening blueprint has the rubric, the flow and the five ways a screener turns unfair, and the resume screening deep dive goes further into the build.
Frequently asked questions
How do you explain an AI screening decision to a rejected candidate?
By keeping the evidence while screening instead of reconstructing it afterwards. Each criterion in the recruiter's rubric gets a score and the exact CV line behind it, code checks that the line exists, and the recruiter's decision and any override are logged with a reason. The reply is assembled from that record: what the role needed, what the CV showed, who decided, and how to ask for a person to look again.
Can we reject job applicants based on an AI match score?
Not on the score alone. GDPR Article 22 restricts decisions based solely on automated processing, Recital 71 names e-recruiting without human intervention as its example, and the SCHUFA ruling (C-634/21) held that a score can itself be the decision when a business draws strongly on it. A recruiter should read the evidence and confirm each rejection, because data protection guidance treats a token review as leaving the decision automated.
Is AI CV screening high-risk under the EU AI Act?
Yes. Annex III lists AI used to filter job applications and evaluate candidates as high-risk, and after the Digital Omnibus those obligations apply from 2 December 2027. For a company using a screener, that means oversight by people with the competence and authority to overrule it, logs kept, monitoring in use, and candidates told that the system is used. Building to that standard now avoids a rebuild later.
Does the works council have to approve AI screening criteria in Germany?
Selection guidelines for hiring need the works council's consent, and since 2021 section 95(2a) of the Works Constitution Act says so explicitly when AI helps draw them up. In practice that means the rubric: the criteria, their weights and what counts as evidence. A versioned rubric with its change history and a named approver gives the works council something concrete to review before any application is scored.