The CV looks immaculate, but the parser is blind
If you used ChatGPT, Claude, or Gemini to build your CV, there is a technical defect you might be overlooking. You cannot see it by opening the PDF, and it is silently hurting candidates applying for internships, graduate schemes, and engineering roles.
Generative AI has made it effortless to generate clean, modern resume markup. But human eyes and automated document parsers do not read files the same way. A resume can look completely professional to you, yet arrive completely fragmented in an enterprise Applicant Tracking System (ATS) like Greenhouse, Ashby, Lever, or Workday.
The letter-spacing pitfall: how 'EDUCATION' becomes 'E D U C A T I O N'
While developing the deterministic ATS diagnostics engine for Ravina, we ran automated extraction benchmarks on hundreds of AI-generated HTML/CSS resume templates. A recurring pattern appeared in styling section headers:
In the rendered PDF viewer, the heading looks crisp and balanced. But underneath, the HTML-to-PDF print engine (whether headless Chromium, WeasyPrint, or wkhtmltopdf) translates that CSS letter-spacing into individual character offsets in the PDF content stream.
When an ATS parser extracts text from that stream without advanced kerning reassembly, it records every glyph as an isolated character separated by whitespace. Instead of recognizing the string EDUCATION, the parser indexes:
- E D U C A T I O N instead of EDUCATION
- E X P E R I E N C E instead of EXPERIENCE
- P R O J E C T S instead of PROJECTS
- S K I L L S instead of SKILLS
Why this breaks section segmentation
Applicant tracking systems do not simply read text from start to finish. They segment your document into structured semantic buckets: contact information, work experience, education, certifications, and skills.
This segmentation relies on standard section headings and regex patterns. When the parser encounters 'E D U C A T I O N', its heading recognition dictionary fails to trigger. As a result:
- Your degree, university, and GPA are either dumped into an unclassified block or appended to the preceding job entry.
- Core coursework and qualifications fail to map to recruiter search filters.
- Automated keyword scanners looking for required degrees return zero matches, even though the text is clearly visible on your screen.
- Your application is marked as incomplete or filtered out before a human recruiter opens the PDF.
Other hidden CSS and layout hazards from AI prompts
Letter-spacing is not the only layout issue that corrupts parsing. AI models asked to design a 'modern' resume frequently introduce other print artifacts that look great on screen but degrade extraction reliability:
| Design pattern | Why it breaks in ATS | Safe alternative |
|---|---|---|
| letter-spacing: 2px | Extracts as spaced-out single letters | Normal font kerning (letter-spacing: normal) |
| Two-column CSS grid/flex | Interleaves left and right column lines | Clean, single-column top-to-bottom layout |
| Sidebars for contact info | Contact block moves to the end of stream | Contact header directly at top of page |
| Icons for email and phone | Omits plain text labels in parsers | Clear text labels (Email:, Phone:, GitHub:) |
| Skills inside styled table cells | Table cells emitted out of reading order | Comma-separated bullet points under SKILLS |
The copy-paste test: see what the ATS actually sees
You can verify your existing resume in less than ten seconds without uploading it to third-party tools. Open your resume PDF in any standard browser or PDF viewer, press Ctrl+A (or Cmd+A) to select everything, copy it, and paste it into a plain text editor like Notepad or a code editor.
Review the pasted text carefully. If your headings read as spaced-out letters, if columns are scrambled together, or if your contact info is missing, that is exactly what the ATS database has stored for recruiter searches.
The exact prompt to fix AI resume generation
When asking ChatGPT, Claude, or Gemini to format or code your resume, include explicit constraints against typography and layout tricks. Copy and paste this prompt snippet into your instructions:
How Ravina guarantees ATS formatting natively
In Ravina, our 13 ATS resume templates enforce this deterministically in code. We verify font metrics, zero-out artificial kerning splits, and guarantee single-page rendering so you never have to wonder whether an automated parser extracted your credentials.
Frequently asked questions
Does this affect resumes exported from Google Docs or Word?
Standard Google Docs and Microsoft Word templates generally do not inject letter-spacing or kerning gaps into PDF export streams. The issue primarily happens when AI tools write custom HTML/CSS, LaTeX with microtype letterspacing, or design canvas tools (like Figma or Canva) that position each letter as an independent coordinate.
Will modern AI-powered ATS systems handle spaced headings better?
Some modern platforms (such as Ashby) use OCR and LLM-assisted reassembly that can reconstruct spaced headings. However, hundreds of thousands of companies still rely on legacy rule-based parsers like Sovren, RChilli, or standard Greenhouse/Workday text scrapers. Designing for strict compatibility guarantees your resume parses correctly everywhere.
Can I use ALL CAPS for my resume section headings?
Yes. All-caps headings like 'EDUCATION' and 'EXPERIENCE' are completely standard and parsed accurately by every major ATS. The issue is purely artificial spacing between the letters ('E D U C A T I O N'), not capitalization.
Builds and maintains RYUN (Study Hush, Nativra, Ravina) as a solo developer. Writes about applicant tracking systems, behavioral interview preparation, and comprehensible-input language learning from the perspective of someone shipping the tools.