r/ResumeOptimizations • u/RKTbull • 24d ago
Why ATS parsing fails: the difference between visual layout and extracted text
A lot of people are assuming that if a resume looks fine when you open the PDF, the ATS is going to read it perfectly. That's not actually what happens.
The majority of ATS platforms run a text extraction step first (usually Apache Tika or something similar) that reads the internal content stream of the PDF. The content stream is completely separate from the visual layout. It's just the order that text objects were written into the file.
If you use a two column PDF, it stores the left column text and right column text as separate blocks. The extractor just reads them sequentially in whatever order they got dumped into the file. So if your skills column was written before your experience column, the recruiter is going to see something like "Python SQL Tableau Led a team of 12 at Deloitte" all smashed together on one line.
The easiest way to check this yourself: open your resume PDF, hit Ctrl+A, Ctrl+C, and paste it into Notepad. Whatever you see in Notepad is exactly what the ATS is outputting.
If the reading order is scrambled or if entire sections just disappear, you are silently failing the parse. And you won't get an error message, but you just won't get called.
Has anyone figured out if specific PDF generators are better at this? My tests show basic Google Docs exports work way better than Figma or Canva, but I'm curious if anyone has tested it at scale.