DEV Community

LXSAIHUB
LXSAIHUB

Posted on

The candidate asked why I said no. I did not have an answer.

We rejected a stack of candidates on a feeling. I liked that it felt fair, right up until one of them asked me to explain a rejection and I could not.

That was the whole problem. Not that I was wrong. That I had no way to show my work. If you cannot point at the evidence, "not the right fit" is a preference with a letter attached, and the people hurt by preferences are the ones who hear no reasons at all.

So I built Candidate Score, a resume-against-JD fit scorecard. I want to be precise about what that means, because the category is full of tools that promise to screen for you.

What it actually produces

You paste two things: the candidate's resume text, and your job description. That is the entire input.

{
  "resume": "Paste the candidate resume…",
  "jobDescription": "Paste the job description…"
}
Enter fullscreen mode Exit fullscreen mode

No job title lookup, no LinkedIn connector, no ATS integration to configure.

What comes back is a fit score from 1 to 10, plus strengths and gaps with the evidence attached to each. Every strength and every gap cites the line from the resume or the requirement from the JD that produced it.

Output What it contains
Fit score 1 to 10, resume against your JD
Strengths each with the resume line that supports it
Gaps each with the JD requirement it misses

That evidence column is the part I care about. When the scorecard says a candidate is weak on something, I can see if it points at a real gap or reads too much into an ambiguous line.

Why I stopped trusting my own first read

Here is what I did not admit for a long time: my first read of a resume is mostly pattern matching on things I have seen before. Format. School names. How long the candidate has been in the field. Whether the job titles sound like the ones I respect.

None of that is illegal. All of it is invisible. The point is not that my instinct is bad, it is that my instinct produces no record, and a hiring process that leaves no record cannot be reviewed by anyone.

So the scorecard became the thing I read before my own reaction. It applies the same criteria to the same resumes in the same order, and it hands me the comparison my instinct was going to make anyway, except now I can point at it.

This does not make the process unbiased. It makes the process legible. Only one of those is achievable with a tool.

The biased JD problem nobody warns you about

This is the part that should worry anyone using a fit-scoring tool, and it has nothing to do with the tool.

The score is computed against the job description you paste in. If your JD says "5+ years of experience" and the job needs 2, the score will faithfully measure against 5+ years. If your JD asks for a degree from a specific list of schools, the score will weigh those schools. If your JD contains the phrasing that historically screens out a particular group, you have written that bias into the criteria and the scorecard will report on it accurately.

A biased JD produces a biased score. The tool reads your criteria, it does not audit them.

That is why I now treat the JD as the thing under review. I ask which requirements came from an actual task someone has to do, and which came from the shape of the last person I liked.

The line I drew on protected attributes

Candidate Score does not infer or evaluate protected attributes. Age, gender, nationality, health, religion, disability, family status. It is not instructed to look for them and it does not score on them. It reasons about skills and experience the resume evidences, which is why every strength and gap cites a line back to the text.

That is a guardrail, not a promise. The tool scores what is in the resume against what you asked for. It does not mean your criteria are clean, and it does not mean I am auditing your process for disparate impact, because it is not built to do that and I would not trust it to.

If you want to know if your process screens out a group unfairly, the EEOC's Uniform Guidelines on Employee Selection Procedures is the place to start, and the four-fifths rule in 29 CFR 1607.4(D) is the part worth reading. A selection rate below four-fifths, meaning 80% of the rate for the highest group, is generally treated as evidence of adverse impact, and the guidelines are explicit that clearing four-fifths does not rule out a finding either.

New York City employers have a local rule worth reading too: Local Law 144 of 2021, which requires a bias audit of an automated employment decision tool within 12 months of use, plus candidate notice at least 10 business days before the tool runs.

What it is not

Candidate Score is a resume-against-JD fit aid. It is not a hiring decision and it is not a substitute for a human reviewer.

Specifically: it does not make the hire decision and it does not screen candidates out automatically. It does not infer protected attributes, and it does not tell you if your hiring process has disparate impact. It scores against the criteria you give it, so a biased job description produces a biased score. It does not validate your criteria, and it is not a job analysis.

The reason it is built this way is not modesty. The people affected by a hiring decision have the least ability to contest it, which is why the reasoning has to be visible and the decision has to stay with someone who can be questioned. The tool produces the paper trail. A human reads it and owns the call.

The pricing and where to try it

Candidate Score is $19/mo, or $190/yr. The free tier gives 3 AI runs / day and 15 / month. The $19 tier gives 40 AI runs / day and 300 / month, and export is included there. You can try it at Candidate Score.

The fit score runs from 1 to 10, so you get a number you can sort on and reasons you can argue with.

FAQ

Q: Does Candidate Score decide who gets hired?

A: No. It produces a fit score with strengths, gaps, and the evidence behind each one. The offer decision is yours, and a human reviewer has to own it. The score gives you something to reason about, it does not make the reason for you.

Q: Will it reject candidates for me automatically?

A: No. It does not connect to your ATS and it does not filter anyone out. You read the scorecard and decide. Export is included in the paid tier if you want the reasoning on the record.

Q: Does it look at age, gender, nationality, health, or religion?

A: No. It is not instructed to infer protected attributes and it does not score on them. Every strength and gap cites the resume line or JD requirement behind it, so the reasoning stays on skills and experience. The limit on this is the obvious one: it scores against the criteria you supply, so a biased JD still produces a biased score.

Q: What if two candidates score the same?

A: Then you read the two scorecards side by side, because the evidence lines differ even when the totals do not. A tie on the number is a tie on the number, not on the person.

Q: How much does it cost?

A: $19/mo or $190/yr. The free tier is 3 AI runs / day and 15 / month, and the paid tier is 40 AI runs / day and 300 / month with export.

References

Paste a resume and a JD, and see if you can defend the score. Try Candidate Score.

Top comments (0)