Blog / ATS Fundamentals
How ATS Systems Actually Parse Your Resume
When you upload a resume to a job portal, no human reads the file you sent. A parser reads it first. The parser's job is to convert your carefully designed document into rows in a database: a name field, an email field, a list of jobs with titles and date ranges, a list of skills. Everything a recruiter later searches, filters, or ranks comes from that structured copy, not from your original file.
That means parsing is the single point of failure. If the parser extracts your data cleanly, your qualifications get a fair shot. If it doesn't, the database contains a scrambled version of you, and no amount of strong content fixes that. Here is what typically happens at each stage of the pipeline, and where each stage breaks.
Stage 1: Getting Text Out of the File
The first step is plain text extraction. For a .docx file this is straightforward because the format stores text as text. PDFs are trickier: a PDF is a drawing format, and the characters you see on screen are only machine-readable if the file includes a text layer mapping those drawings back to characters.
PDFs exported from Word or Google Docs almost always have a clean text layer. PDFs exported from design tools sometimes store text as vector outlines instead, which means a parser extracts nothing at all. The quick self-test: open your PDF and try to select and copy a sentence. If you can't select the text, a parser can't read it either.
Extraction has subtler failure modes too. Stylistic letter spacing is a good example: many resume templates render section headings with wide tracking, and the extracted text comes out as E X P E R I E N C E instead of EXPERIENCE. A robust parser normalizes those spaced-out headings back into words before going further; a naive one simply fails to recognize the section. You have no way to know which kind a given employer runs, which is why testing your exported file matters more than trusting the template.
Stage 2: Finding the Sections
Once the parser has raw text, it needs structure. It scans for section headings it recognizes, things like Experience, Education, Skills, and Summary, and uses them as boundaries: everything between the Experience heading and the next recognized heading gets treated as work history.
This is why two well-known rules exist:
- Use standard headings."Professional Experience" and "Work Experience" are recognized variants. "Where I've Made My Mark" is not a boundary the parser knows, so the section may be absorbed into whatever came before it.
- Keep a linear layout. Section detection assumes text arrives in reading order. Multi-column layouts and tables can interleave text from different sections during extraction, so the boundaries land in the wrong places.
Stage 3: Extracting Fields From Each Section
With sections identified, the parser extracts specific fields. This is mostly pattern matching, and you can reason about it concretely. PrismCV's own parse-readiness scoring runs the same kinds of checks an ATS parser performs, so here is what that layer actually looks for:
- Contact info. An email is matched with a format pattern (something@domain.tld), and a phone number with common digit groupings. This is why contact details rendered as icons or placed in the document header region often vanish: the pattern never sees them. Name and location are extracted from the top of the document body.
- Experience entries. Each position needs a recognizable job title and a date range. Entries missing either one parse as fragments, and the role may not count toward your years of experience.
- Dates.Parsers infer employment duration from date ranges, so format consistency matters. Mixing "Jan 2023" with "2022-03" in the same resume makes duration math unreliable and can produce phantom employment gaps. Pick one format, such as "Jan 2023", and use it everywhere.
- Skills.The skills section is matched against the recruiter's search terms later, so it should be plain, comma-separated text. PrismCV's checker looks for at least 5 distinct skills and recommends 8 to 15.
- Education. Each entry should carry both a degree name and a school. One without the other parses as an incomplete record.
- Summary. A short professional summary (a few sentences) gives parsers and recruiters a labeled overview block. Very short summaries often are not detected as a section at all.
Stage 4: Confidence Scoring
Good parsers know when they have failed. A common technique is to count how many of the key sections were successfully extracted: name, email, summary, experience with real content, skills, education. Extract most of them and confidence is high; extract only a couple and the parse is flagged as low confidence, which in practice means a human sees a mostly empty candidate profile.
The Most Honest Test: The Round-Trip
Here is the uncomfortable part: your resume can look perfect in your editor and still parse badly, because what matters is the exported file. The most reliable way to evaluate this is a round-trip test: export the resume to PDF, extract the text back out of that PDF, re-parse it from scratch, and compare the result against the original.
This is exactly what PrismCV's checker does under the hood. It renders your resume to a real PDF, extracts the text the way an ATS would, re-parses it, and then measures what survived: Did the name, email, phone, and location come back? Did every position come back as a separate entry? Did at least half of the skills survive? Did the summary and education make it through? Each loss becomes a specific warning instead of a vague score.
If you build resumes by role, it also helps to start from a structure that already parses cleanly. The layouts in our resume examples library follow the single-column, standard-heading conventions described above.
What To Do With All This
- Export to PDF from a word processor, not a design tool, and verify the text layer.
- Use standard section headings and a single-column layout.
- Keep contact info as plain text in the document body, near the top.
- Give every position a title and a consistently formatted date range.
- List 8 to 15 skills as plain text.
- Test the exported file, not the editor view.
You can run that test right now: PrismCV's free ATS checker parses your uploaded resume, shows you exactly which fields were extracted, and scores parse readiness alongside content quality and keyword match. It takes seconds and requires no signup. If you want to re-check every revision as you fix issues, unlimited checks are part of the Pro plan.