I had a resume I was proud of. Two columns. A skills sidebar with little proficiency bars. Icons next to my contact details. It looked like something a designer made.
It also went into a void about forty times.
The version that finally started getting replies was uglier, in a plain single column, and contained almost the same words. That gap bothered me enough to go find out what actually happens to the file after you hit upload.
Upload is not the same as reading
An applicant tracking system β Greenhouse, Lever, Workday, Taleo, whichever one the company bought β does not display your PDF to a recruiter first. It runs it through a parser.
The parser's job is to turn an unstructured document into structured database fields:
name: ?
email: ?
phone: ?
experience: [ {title, company, start_date, end_date, description}, ... ]
education: [ {degree, institution, year}, ... ]
skills: [ ... ]
Everything that follows β search, filtering, ranking, the recruiter's shortlist β runs on those fields, not on your document. If the parser fills a field with garbage, the garbage is what represents you.
What the parser sees
A PDF is not a page. It is a set of instructions for placing glyphs at coordinates. Extraction reads them back in an order that often has nothing to do with how they look.
That single fact explains almost every layout that fails:
- Two-column layouts. The parser can read straight across the page, splicing your sidebar into the middle of your job descriptions. Job title, then a stray "Python," then half a bullet.
- Tables used for layout. Cell contents get flattened in unpredictable order.
- Text boxes and graphics. Frequently skipped altogether.
- Headers and footers. Often ignored β which is why putting your phone number in the footer can mean it never gets captured.
- Text rendered as an image. Invisible. Zero characters extracted.
- Icons instead of labels. An envelope glyph does not tell the parser "email." None of this is a judgment on your taste. The parser is just less capable than your eyes.
The five-second test
You do not have to guess. Do this:
- Open your resume PDF.
- Select all. Copy.
- Paste into a plain text editor β Notepad, TextEdit in plain mode, anything without formatting. What you see is roughly what the parser sees. If the order is scrambled, if your sidebar is interleaved with your bullets, if entire sections are missing β that is the version being filtered, not the pretty one.
I did this and found my two-column layout had shuffled three jobs into one another. I had been sending a shredded document to every company for months.
Section headings are a lookup table
Parsers detect sections by matching headings against a list of expected labels. Experience, Work Experience, Education, Skills, Projects.
Creative headings break this:
| Creative | Safe |
|---|---|
| Where I've Been | Experience |
| My Toolkit | Skills |
| Learning Journey | Education |
| Things I've Built | Projects |
You lose nothing by using boring words here. The personality belongs in the bullets.
Dates deserve the same conservatism. Jan 2022 β Mar 2024 parses reliably. '22β'24 and Spring 2022 to present often do not β and a job with unparsed dates can silently fail a "3+ years experience" filter.
Keyword matching is dumber than you expect
After parsing comes matching, and matching is largely literal string comparison.
React.jsandReactmay not match each other.MLmay not matchMachine Learning.Postgresmay not matchPostgreSQL. The practical move: use the job description's exact spelling, and include the expansion once. Writing "Machine Learning (ML)" costs you three characters and covers both queries.
What does not work is white text stuffed with keywords. Parsers extract text regardless of colour, so the recruiter sees a resume that reads like spam. This gets people rejected, not shortlisted.
The resume I send now
- Single column. Always.
- Standard section headings, in the expected order.
- Contact details in the body, not the header or footer.
.docxwhen the form does not specify,.pdfwhen it says PDF is fine. Older parsers handle.docxmore reliably.- No icons, no charts, no skill bars. A bar filled to 70% conveys nothing anyway β 70% of what?
- Bullets that lead with a verb and end with a number. Humans read these after the machine passes you through. It is a plainer document than the one I was proud of. It is also the one that gets read.
Where this connects
The parser is only half the funnel. The other half is inbound β recruiters searching for you before you ever apply, which runs on completely different mechanics. I broke that down in what LinkedIn actually does to your resume.
And once a real person does open the file, everything shifts to what you say out loud. That starts here.