Run your resume through any of the free ATS checkers, and you get a number.
72. 84. 61 out of 100. Then some advice, then usually a paywall.
Here is the thing nobody says out loud: that number is meaningless, and not
because the tools are dishonest. It is meaningless because none of them
publish the scale. You cannot tell whether 70 is a pass, a warning, or a
disaster, because nothing anywhere states what 70 was supposed to mean.
A number without a scale is a vibe with a decimal point.
I built one of these tools, so this is a confession as much as a writeup. Here
is the entire scale, the ceiling, and the arithmetic.
The bands
88 to 98 Parses clean Should come through intact.
70 to 87 Minor issues Will parse, with some detail lost.
40 to 69 At risk Expect fields to go missing.
0 to 39 Breaks Most of this will not survive.
So 70 is the very bottom of "minor issues". One point lower and the same
document is "at risk". If a checker hands you 70 and a green tick, that is a
decision somebody made about presentation, not a fact about your file.
Notice the bands are uneven. "At risk" is thirty points wide and "parses
clean" is ten. That is deliberate. Once a document is broken, how broken stops
mattering much, and the interesting resolution is all at the top where small
things separate a clean parse from a nearly clean one.
The ceiling is 98, not 100
This is the part I expect people to argue with.
/**
* The ceiling is 98, not 100.
*
* No parser is guaranteed, none of them publish their rules, and a perfect
* score would be a claim about software we cannot see. Two points is the
* honest cost of that.
*/
export const CEILING = 98;
Workday, Taleo, Greenhouse, Lever, and iCIMS do not document how they parse. I
can test against real extractors and I do, but I cannot test against systems I
have no access to. A 100 would be a promise about closed software I have never
run. Two points is what that uncertainty costs, and it is the same two points
for everybody.
Nobody's resume gets a perfect score from this thing. That is not a bug.
The arithmetic used to be broken
The first version subtracted. Find a problem, subtract its cost, show what is
left. Obvious, and wrong.
The costs added up to 197 against a ceiling of 98. So any document with a few
real problems hit zero and stayed there. Fix a column layout on a resume that
also had a table and a missing work history, and the number did not move,
because it had already bottomed out. The top half of the range was doing
nothing at all.
It multiplies now:
const value = Math.round(
deductions.reduce((acc, d) => acc * (1 - d.cost / 100), CEILING),
);
Each finding takes a percentage of what is left rather than a flat slice of
the total. Multiplying cannot reach below zero, so nothing ever clips, and
every fix moves the number no matter how many problems the file has. A fatal
finding costs 100, which makes its factor zero, so a scanned image reaches
zero through the same arithmetic as everything else with no special case.
The side effect is that marginal gain scales with what is left to gain. Fixing
a table on a nearly clean resume is worth more than fixing the same table on a
wrecked one, which is also true in reality.
What the costs actually are
Not secret either:
noWorkHistory 26
undatedEntries 14
orphanEntries 10
unmappedHeadings 8
mixedDateFormats 6
ongoingWording 5
noWorkHistory sits at 26 because a resume whose career section a parser
cannot locate was landing in "minor issues" at a lower weight, and "will
parse, with some detail lost" is an absurd thing to say about a document whose
entire work history is unmapped.
That is the kind of judgement call every one of these tools makes constantly,
and none of them show you.
What to do with any ATS score
Ignore the number. Read the findings.
The number is a summary of a list, and the list is the useful part. "The first
text in your file is not your name" is actionable. "You scored 74" is not,
especially when you have no idea what 74 was measured against.
If a checker will not tell you its scale, its ceiling, or what each finding
costs, you are looking at a lead magnet, not a measurement.
Mine is at
atsresumereader.com with
the full band table and the weights. It runs in the browser, so nothing gets
uploaded, and there is no paid tier holding the rest of the report.
Argue with the weights. They are judgement calls, and I would rather defend
them in public than hide them.
Top comments (0)