Why a Good Resume Still Scores Badly Against a Job Description
On 6 September 2026 I ran a real data engineer’s resume against a matching job description through LastRound AI’s resume checker to see how the match resume to job description process actually plays out on a normal, competent resume. The score came back 67. Nine keywords matched. Sixteen did not. The resume itself was fine, with real pipeline work and a couple of solid numbers in it. It just did not say the words the job description was looking for, and that gap is most of what happens when a decent resume scores badly.
What matching actually means to an ATS, in plain terms
Forget the idea of a robot reading your resume like a hiring manager. Almost none of them do that. What most applicant tracking systems do is compare two lists of tokens: words and short phrases pulled from your resume, and words and short phrases pulled from the job description. Some tools count exact matches. Better ones weight a term by how often it shows up in the JD, or by whether it sits in the “requirements” section versus the “nice to have” one. A handful use embeddings to catch a synonym. Most don’t bother, because exact-match counting is cheap and good enough to sell, and roughly 99 percent of Fortune 500 companies now run one somewhere in the pipeline.
This is why the process is called matching and not reading. Nobody is judging whether your work was good. Something is counting whether your resume contains the same nouns as the posting, and a 2021 Harvard Business School and Accenture study found this exact-match habit was quietly screening out millions of qualified candidates who described real skills in slightly different words. The matching step also runs after parsing, not instead of it, so a term buried inside a scanned logo or a table cell may never reach the word list at all.
The 67 run: what 9 matched and 16 missing actually looked like
The resume in our test run had five years of pipeline and warehouse work, Python, SQL, Airflow, dbt. Solid. The JD wanted most of that plus a handful of terms that never appeared on the resume at all: a specific cloud certification, a data quality framework named twice in the requirements, and a scheduling tool that had been swapped out for a competitor at the candidate’s last two jobs. None of that missing work was fabricated or missing from the person’s actual skill set. It was just never written down in the JD’s exact words, so the matcher didn’t find it.

Nine matched, sixteen missing, a 67. Run your own resume through the checker and you will probably see the same shape: a chunk of real overlap, and a long tail of terms that are true of you but absent from the page. In this run the sixteen split roughly into two buckets: skills the candidate genuinely had but had described differently (a scheduling tool by a different name), and a couple of things, the cloud certification, that the candidate simply did not hold yet. Only the first bucket is fixable by rewriting. The second bucket is a decision about whether to study for the certification, not a wording problem.
Which JD terms are worth mirroring, and which are noise
Not every missing word deserves a fix. A job description is written by a mix of a hiring manager, a recruiter, and sometimes legal, and it carries a lot of filler along with the signal. Some rough rules that held up across the JDs I checked this week:
Worth mirroring: named tools, languages, platforms and certifications that appear in the “requirements” or “qualifications” section. Anything repeated two or more times anywhere in the posting. The exact job title, if it matches what you actually did. Domain nouns specific to the industry (claims processing, order-to-cash, telemetry) rather than generic ones.
Mostly noise: adjectives like collaborative, driven, or fast-paced. Boilerplate about benefits, equal opportunity language, and anything under a “perks” heading. A skill listed once under “nice to have” that shows up nowhere else in the posting. Chasing these wastes rewrite time for close to zero score movement.
A quick gut check
If a term shows up once, in a bullet point, near the bottom: skip it unless you genuinely have it. If it shows up in the job title, the first paragraph, and the requirements list: it is load-bearing, and your resume should say it somewhere, assuming it’s true.
How many times is enough
People overcorrect here. Once a term is missing, the instinct is to write it five times: in the summary, the skills list, and two bullets. Don’t. A term that appears once, in a real sentence describing real work, reads as authentic to both a matcher and a person. A term that appears four or five times across a one-page resume starts to look engineered, and a handful of newer, semantic-aware checkers actually penalize that pattern rather than reward it. Aim for the term to show up where the work happened, once, maybe twice if it genuinely spans two roles.
Match resume to job description without faking it
Here is the part people get wrong. The fix for a low match score is not to sprinkle the missing words into a skills list at the bottom. That raises the score a little and tells a human reader nothing, and a decent recruiter notices a skills list that reads like a copy of the JD. The fix is to find the bullet where that work actually happened and rewrite it to carry the term honestly.
Take a generic before-and-after. Say the JD wants “data quality monitoring” and your bullet currently reads: “Maintained pipelines feeding the analytics warehouse, catching and fixing broken jobs before they affected reporting.” That is true work, but it never uses the JD’s phrase. A more honest rewrite: “Built data quality monitoring into the analytics pipeline, catching broken jobs before they reached reporting.” Same work. Same numbers, if you have any to add. The term now sits inside a real sentence about something you did, not bolted onto the end of a list.
If the term genuinely is not something you have done, do not force it. A recruiter or a hiring manager will ask about it in the first five minutes of a call, and there is no version of that conversation that goes well when the honest answer is “no, I just needed it to pass the filter.”
A second example: the certification gap
Here is a second one, closer to the certification gap from the 67 run. Say the JD lists a specific cloud certification the candidate does not hold, but the candidate has done the actual work that certification covers. A weak fix adds the certification name to a skills list with nothing behind it, which is a flat lie. A better fix names the underlying work honestly: “Designed and managed cloud data pipelines on the platform the certification covers, without holding the certification itself.” That sentence still will not match the exact certification term, and it should not. It gives a truthful, specific answer to the gap instead of a fabricated credential, and a good recruiter will read the honesty as a plus, not a miss.
Where keyword matching breaks down
I don’t know exactly how much weight any single vendor’s ATS gives to an exact match versus something semantic. Vendors don’t publish that, and the honest answer changes by product and probably by version. What I do know from how these systems parse a resume before they ever get to matching is that formatting failures upstream (tables, headers stuffed into images, two-column layouts) can zero out a section before matching even starts. A perfect keyword match on a resume the parser mangled still scores badly, and no amount of rewording fixes that.
My honestly debatable opinion: past a certain point, chasing every missing keyword is a worse use of your evening than tailoring three or four bullets that actually carry the JD’s real requirements. A score of 85 built on four honest, specific rewrites beats a 95 built by pasting a word bank at the bottom of the page, because a human still reads the resume that clears the filter. We tested what an ATS resume checker measures and what it leaves out and the gap between “high score” and “actually hireable” was bigger than either of us expected going in.
What to check before you resend
Three things, quickly, in this order. First, open the JD’s requirements section and list the five terms that repeat most. Second, check each one against your resume: present and true, present and misleading, or genuinely missing. Third, for anything genuinely missing, ask whether it belongs in a real bullet or whether it’s a gap you should just be ready to explain in the interview. Not every gap needs a rewrite. Some just need an honest answer.
A resume gets roughly seven seconds of attention from a human once it clears the filter, so the keywords that get you through the door only matter if what’s underneath them holds up once someone reads it.
Written by
Uma Mahesh Bandaru
Writes about live interviews, sales calls and meetings, and how real-time AI assistance changes each of them.