<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kien Phan</title>
    <description>The latest articles on DEV Community by Kien Phan (@kienpt91).</description>
    <link>https://dev.to/kienpt91</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3966089%2F0f4dfb81-74d4-4372-8484-74e69985c36b.png</url>
      <title>DEV Community: Kien Phan</title>
      <link>https://dev.to/kienpt91</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kienpt91"/>
    <language>en</language>
    <item>
      <title>How ATS Software Actually Parses and Rejects Your Resume</title>
      <dc:creator>Kien Phan</dc:creator>
      <pubDate>Wed, 03 Jun 2026 09:07:35 +0000</pubDate>
      <link>https://dev.to/kienpt91/how-ats-software-actually-parses-and-rejects-your-resume-3ipi</link>
      <guid>https://dev.to/kienpt91/how-ats-software-actually-parses-and-rejects-your-resume-3ipi</guid>
      <description>&lt;p&gt;You applied. You heard nothing. You assumed you weren't qualified.&lt;/p&gt;

&lt;p&gt;You might have been perfectly qualified — and a parser threw your resume in the bin before any human laid eyes on it.&lt;/p&gt;

&lt;p&gt;Most ATS advice stays on the surface: "use keywords," "avoid tables." Useful, but it skips the more interesting question: &lt;em&gt;why&lt;/em&gt; do these things matter? What is actually happening inside the system when it reads your resume?&lt;/p&gt;

&lt;p&gt;This is that explanation. As someone who spent time building an ATS checker, I've seen the output from enough parsed resumes to know exactly where things go wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an ATS Parser Actually Does
&lt;/h2&gt;

&lt;p&gt;When you upload a resume to an applicant tracking system, the first thing that happens is not a keyword search. It's a text extraction step. The system converts your document — PDF, DOCX, or otherwise — into a flat, unformatted string of text. Then it tries to segment that string into structured fields: name, contact info, job titles, companies, dates, education, skills.&lt;/p&gt;

&lt;p&gt;Think of it like running OCR on a handwritten letter, then having a script guess where each paragraph begins and ends. More chaos in the original means worse output.&lt;/p&gt;

&lt;p&gt;The structured data it extracts gets stored in a database. When a recruiter searches "5 years Python" or "product manager fintech," they're querying that database — not your original document. Your formatting no longer exists at this point. Only the extracted fields do.&lt;/p&gt;

&lt;p&gt;This is the thing most candidates don't internalize: &lt;strong&gt;your resume is converted to data before it is ever evaluated.&lt;/strong&gt; If the conversion is wrong, the evaluation is wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Keyword Matching and Scoring Work
&lt;/h2&gt;

&lt;p&gt;Once parsed, most ATS platforms score your resume against the job description using keyword matching. Workday, Greenhouse, Lever, iCIMS, and Taleo all have different scoring logic, but the general mechanics are similar.&lt;/p&gt;

&lt;p&gt;The system identifies required and preferred keywords in the job description, then checks your parsed resume for those terms. The resulting score determines where you appear in the recruiter's queue.&lt;/p&gt;

&lt;p&gt;A few things worth knowing about how this actually works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exact phrasing often beats semantic equivalence.&lt;/strong&gt; "Stakeholder management" and "managing stakeholders" may be treated as different tokens in older systems. Mirror the job description's exact phrasing wherever it accurately describes your experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keyword placement affects score weight in some systems.&lt;/strong&gt; Terms in your summary or early in experience bullets tend to carry more weight than identical terms buried at the bottom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Newer platforms with NLP check context, not just presence.&lt;/strong&gt; "Managed a Python codebase" scores better than "familiar with Python" for a senior engineering role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your score is relative, not absolute.&lt;/strong&gt; You're ranked against other applicants for that posting. A 60% match against a niche role with 40 applicants might get you through. The same score against a viral posting with 800 applicants might put you on page 12.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "Parse Failure" Looks Like — And Why It Happens
&lt;/h2&gt;

&lt;p&gt;Parse failures are the silent killers. Your resume looks correct to you. After extraction, the data in the ATS is garbled, incomplete, or misattributed. You never find out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tables and Multi-Column Layouts
&lt;/h3&gt;

&lt;p&gt;This is the most widespread failure. When a parser hits a table, it reads across rows instead of down columns. Two parallel columns get merged into incoherent strings.&lt;/p&gt;

&lt;p&gt;A two-column resume with job history on the left and skills on the right extracts as alternating fragments of both. Your job title, company, location, and dates can collapse onto one line, and bullets stop being associated with the right role — so "5 years of engineering experience" may fail to map to any recognized work history record.&lt;/p&gt;

&lt;h3&gt;
  
  
  Headers and Footers
&lt;/h3&gt;

&lt;p&gt;Contact information in the document header is a classic mistake. Many ATS platforms extract the document body only, skipping headers and footers entirely. Your name and email may not exist in the system. The recruiter who wants to call you back literally cannot find your contact details.&lt;/p&gt;

&lt;p&gt;Put your name, email, phone, and LinkedIn URL in the body of the document, at the top, as plain text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Text Boxes and Sidebars
&lt;/h3&gt;

&lt;p&gt;Content in a text box is often ignored entirely, or extracted out of order. If your skills section or summary is in a sidebar text box because your template looks slick, it may be completely missing from the parsed output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Images and Icons
&lt;/h3&gt;

&lt;p&gt;Inline icons — a phone icon next to your number, a LinkedIn logo next to your URL — are invisible to text parsers. If your name or any section header is rendered as an image (common in design-heavy templates), the parser won't find it. Submitting a scanned resume as a JPEG produces the same problem at scale: the entire document is one large image with no extractable text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-Standard Section Headings
&lt;/h3&gt;

&lt;p&gt;ATS systems are trained to recognize section boundaries. They know "Work Experience," "Professional Experience," "Employment History." They are less reliable with creative alternatives. Headings like "Where I've Made an Impact," "My Story So Far," or "Toolkit" may fail to map to a recognized field — and content beneath them may be skipped or misattributed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Date Format Inconsistency
&lt;/h3&gt;

&lt;p&gt;Parsers need to extract date ranges to calculate years of experience. "Jan 2019 – Mar 2022" is fine. Problems arise with unusual formats, ambiguous year-only ranges, or dates embedded in sentences. If a parser can't extract your employment dates reliably, it may assign zero years of experience to a role — which collapses your seniority score against requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Plain-Text Test
&lt;/h2&gt;

&lt;p&gt;The simplest way to catch parse failures before you submit: select all text in your resume and paste it into a plain text editor. Look at the output.&lt;/p&gt;

&lt;p&gt;Contact details missing? They were in a header. Columns jumbled? You have a table or multi-column layout. Sections out of order? Non-linear structure. Whatever looks broken in plain text is exactly what the ATS will see.&lt;/p&gt;

&lt;p&gt;A well-formatted resume should paste as clean, readable, top-to-bottom text with clear section breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Your Format
&lt;/h2&gt;

&lt;p&gt;Given how parsers work, the formatting rules stop being arbitrary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single column.&lt;/strong&gt; Always. The visual appeal of a two-column template is not worth the parsing risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No tables.&lt;/strong&gt; Use bullet points and line breaks instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No text boxes.&lt;/strong&gt; If your template uses them, find a different template.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No images.&lt;/strong&gt; Not icons, not photos, not decorative elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contact info in the body.&lt;/strong&gt; First thing in the document, plain text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard section headings.&lt;/strong&gt; Work Experience, Education, Skills, Certifications. Boring is correct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent date formatting.&lt;/strong&gt; Pick one format and use it everywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A clean single-column resume with good typography and strong content looks more professional than most over-designed templates — and it parses cleanly.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Thing Worth Doing Before Every Application
&lt;/h2&gt;

&lt;p&gt;After fixing your formatting, the remaining variable is keyword alignment with each specific job description. No single resume scores well against every posting. The discipline is tailoring: checking which terms appear in the job description and making sure they appear in your resume where accurate.&lt;/p&gt;

&lt;p&gt;I built CVPosh's free ATS checker to automate exactly this — upload your resume, paste the job description, and get your match score plus which specific terms are present or missing. It takes about 90 seconds and removes the guesswork.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;ATS systems aren't trying to screen out qualified candidates. They're trying to help recruiters manage volume. "Beating" the system misframes the goal.&lt;/p&gt;

&lt;p&gt;The real goal is making sure your resume converts to accurate, complete data. If the parser reads your work history, skills, and dates correctly, the system can evaluate you fairly. The formatting rules above aren't tricks — they're the conditions under which automated parsing works correctly.&lt;/p&gt;

&lt;p&gt;Get the conversion right. Make sure the content is strong. That combination — clean parse, relevant content — is what actually moves your resume to the top of the queue.&lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
