How ATS Resume Scanners Work (Parsing, Keyword Matching and Scoring)
A technical but plain-English guide to how a resume scanner works — how your file is parsed into structured data, how keyword matching and scoring actually run, and what a score can and cannot tell you.
Nakul Ilawe · Founder & Chief AI Architect, DexterCV
Founder of Latinum HR Solutions. 10+ years in executive recruitment and hands-on AI engineering.
September 1, 2026 · 5 min read
Short answer: A resume scanner does three things in order. It extracts text from your file, structures that text into fields (name, employers, dates, titles, skills), and then scores what it found — usually keyword coverage against a role, plus formatting and completeness checks. Every "ATS score" you've seen is a score of that third step. If step one or two goes wrong, the score is meaningless, because the tool is grading a mangled copy of your resume.
Below is what actually happens at each stage, and how to use that knowledge instead of guessing.
Stage 1 — Text extraction
Your PDF or DOCX is not text. It's a set of drawing instructions that happen to look like text. A parser has to reconstruct the reading order.
| File type | How it's read | Where it breaks |
|---|---|---|
| PDF with a text layer | Glyphs plus coordinates are re-assembled into lines | Two-column layouts interleave the columns into nonsense |
| Scanned or image PDF | Nothing extractable without OCR | Usually returns an empty or near-empty resume |
| DOCX | XML with real paragraph structure — the cleanest input | Text boxes and SmartArt are often skipped entirely |
| Pages / ODT / RTF | Converted first, with losses | Bullets, dates and special characters get scrambled |
Two things matter more than anything else at this stage: your file must contain a real text layer, and your layout must be single-column. A visually beautiful two-column CV can lose a third of its content before any scoring begins — and neither you nor the recruiter sees it happen.
Test it yourself: open your PDF, select all, copy, and paste into a plain text editor. What you see is roughly what the parser sees. If the order is jumbled or content is missing, fix the layout before you worry about keywords.
Stage 2 — Structuring the text into fields
Extracted text is still a wall of characters. The parser now has to decide which parts are your job titles, which are employers, and which are dates.
It does this with a mix of:
- Section header matching — it looks for conventional labels: Experience, Work Experience, Education, Skills, Certifications. Creative headings like "My Journey" or "What I'm Good At" often map to nothing, and the content underneath is discarded or dumped into a generic bucket.
- Date pattern recognition —
Jan 2021 – Mar 2024is parseable.2021-24,'21 to '24, or a date sitting in a sidebar column often is not. Broken dates knock you out of "5+ years of experience" filters even when you have eight. - Positional heuristics — the line above a date range is probably a title or employer. This is why an inconsistent job block format hurts: change the order between roles and the parser assigns the wrong field.
- Contact extraction — regex for email and phone. Contact details placed in the document header or footer are the single most common cause of a resume with no reachable contact info, because several parsers ignore those regions.
At the end of this stage the system holds a structured record. That record — not your PDF — is what gets searched, filtered and scored.
Stage 3 — Keyword matching
Recruiters rarely browse. They search the structured records with filters and keywords taken from the job description.
Matching is usually some combination of:
- Exact and stemmed matching — "manage", "managed", "managing" collapse to one root. "Kubernetes" and "K8s" usually do not, unless someone configured a synonym list.
- Acronym pairs — write both forms once: Search Engine Optimization (SEO). This costs you nothing and doubles your match surface.
- Section weighting — a skill named inside a real experience bullet carries more weight in most scoring models than the same word listed in a skills block, because it is evidenced.
- Frequency with diminishing returns — the second mention adds a little, the tenth adds nothing. Keyword stuffing is detectable and penalised by modern scoring, and it reads badly to the human who eventually opens the file.
The honest limitation: no scanner knows the exact keyword list a specific employer configured. Any tool claiming a guaranteed "pass rate" for a named ATS is guessing. What a good scanner can do is measure coverage against the job description you paste in, which is a real and useful proxy.
Stage 4 — Scoring
A score is a model, not a verdict. Reasonable models weight roughly four things:
| Pillar | What it measures | Typical weight |
|---|---|---|
| Parsing and structure | Can the file be read and mapped to fields at all | Highest — it gates everything else |
| Keyword and role fit | Coverage of the terminology for the target role | High when a job description is supplied |
| Impact | Quantified outcomes rather than duty lists | Medium |
| Clarity | Bullet length, tense consistency, date hygiene | Medium |
Two rules make scores useful instead of anxiety-inducing:
- A critical parsing issue should cap the score. A resume with unreadable structure cannot be an 85 because the prose is elegant. DexterCV's scanner caps resumes carrying unresolved critical or warning issues, so a high score means genuinely clean, not merely wordy.
- Compare against yourself, not others. The value is the delta between your first scan and your scan after fixing findings — not a leaderboard.
What a resume scanner cannot tell you
- Whether a specific employer's ATS will reject you. Configuration varies per company.
- Whether you're qualified. Scoring reads structure and language, not capability.
- Whether a human will like your resume. That's the interview-rate signal, and it needs a real recruiter's read.
Treat the score as a pre-flight check: it catches the mechanical failures that silently cost you interviews, then hands the judgement back to you.
A practical 15-minute pass
- Copy-paste your PDF into a plain text editor and confirm nothing is missing or out of order.
- Move contact details out of the page header into the body.
- Rename every section to a conventional label.
- Make every date
Mon YYYY – Mon YYYY, consistently. - Spell out each important acronym once alongside its short form.
- Add a number to at least half your bullets.
- Re-scan and compare the two reports.
Try it on your own resume
Run a free scan — upload a PDF or DOCX and you'll get the parsed structure, the findings ranked by severity, and a score broken into the pillars above. If you want coverage against a specific role, paste the job description into the Resume Customizer instead, which scores match against that exact posting.
Related reading: what an ATS resume checker actually checks, single-column vs two-column resumes, and ATS keywords by industry.
