CVLoom

The complete rubric

The 30 ATS Resume Rules

Why applicant tracking systems reject resumes — as 30 specific, testable rules. This is the exact rule set CVLoom's free checker runs on every resume: not generic advice, but checks derived from how real ATS parsers read, and misread, PDF files. Each rule says what we test, why parsers fail on it, and how to fix it.

New: we tested reading order across five layouts

One identical resume, five geometries, measured extraction. Single-column kept 79–88% of its reading order; two-column kept as little as 43% — read the tables and columns study.

How the 100-point score works

  • Four weighted categories. Parseability 40 · Contact info 10 · Structure 30 · Content quality 20 points. The weights reflect what actually gets resumes filtered, not what is easiest to fix.
  • Pass, warn, or fail. Every rule returns one of three results; a warn earns half of the rule's points.
  • The 49 cap. Any hard fail in Parseability caps the total score at 49 — if the file cannot be read, nothing else on it matters.
  • Bands. 85+ interview-ready · 70–84 good, fix the flagged items · 50–69 at risk · below 50 likely filtered out.

All 30 rules

  1. 1Your resume must have a selectable text layer
  2. 2Keep a single reading order
  3. 3No letter-spacing corruption
  4. 4Text must decode to real characters
  5. 5Stick to A4 or US Letter
  6. 6Keep the page count sane
  7. 7Enough real text on the page
  8. 8No emojis or decorative glyphs
  9. 9A parseable email address
  10. 10A parseable phone number
  11. 11A LinkedIn or portfolio link
  12. 12Contact details at the top of page 1
  13. 13No photo on the resume
  14. 14Recognizable section headings
  15. 15Every role carries a date range
  16. 16No unexplained gaps
  17. 17An education section exists
  18. 18A skills section with real keywords
  19. 19Achievements in bullets, not paragraphs
  20. 20Length matches your experience
  21. 21Word count in the 300–900 range
  22. 22A short summary up top
  23. 23Bullets open with action verbs
  24. 24Impact is quantified
  25. 25No first-person pronouns
  26. 26No empty buzzwords
  27. 27Past roles in past tense
  28. 28Bullets stay under two lines
  29. 29No personal data that invites bias
  30. 30A professional file name

Parseability

40 of 100 points · Rules 18 · 5 points each

Can an applicant tracking system read the file at all? These eight rules catch the failures that happen before your content is even considered — the file-level problems behind most silent rejections. Because nothing downstream matters if the parser receives garbage, a hard failure in this category caps the total score at 49.

Rule 1. Your resume must have a selectable text layer

Caps score at 49

We extract the PDF's text layer and count what comes back; fewer than 300 characters of real text means the file is a picture of a resume, not a resume. This is the single most fatal ATS failure: tracking systems read the embedded text stream, so a scanned or photographed page hands the parser an empty document and the application dies silently no matter how strong the content is.

The fix: Export a text PDF directly from your editor — never print-and-scan, never a screenshot — and confirm you can select and copy text in any PDF viewer.

Rule 2. Keep a single reading order

We cluster where each line starts on page 1; when two or more x-positions each anchor a meaningful share of the lines, the page is running multiple columns. A PDF stores text as positioned fragments with no column markers, so many ATS parsers read straight across the page and interleave your sidebar into your work history mid-sentence — dates attach to the wrong jobs and skill lists dissolve into noise. CVLoom's own importer reconstructs columns before checking anything else; plenty of production ATS parsers do not.

The fix: Use a single-column layout for anything you upload to a job portal — in CVLoom, switching to a single-column template is one click.

Rule 3. No letter-spacing corruption

Stylish letter-spacing ("A L E X M O R G A N") destroys word boundaries in the text layer: extraction tools receive every character as its own token, so the line reads as gibberish and matches no keyword search. We only flag spaced-out lines that are not standard section headings, because heading keywords are recoverable — our parser collapses "S U M M A R Y" back to "Summary" and even resolves two spaced headings that a two-column layout fused into one row. A letter-spaced name, job title, or employer has no such safety net.

The fix: Reserve tracking effects for standard section headings at most; emphasize everything else with bold or size instead.

Rule 4. Text must decode to real characters

Caps score at 49

We measure the share of unreadable replacement characters in the extracted text; more than 1% fails. Decorative display fonts, missing character maps, and text converted to outlines produce a PDF that looks perfect on screen but decodes to boxes and junk — the ATS indexes garbage where your job titles should be.

The fix: Re-export with standard, properly embedded fonts for body text, then copy-paste a paragraph out of the final PDF to confirm real characters come through.

Rule 5. Stick to A4 or US Letter

We read the page dimensions and expect A4 (595 × 842 points) or US Letter (612 × 792 points). Anything else usually means the file came off a design-tool artboard at a custom pixel size — a signal strongly correlated with image-heavy, parser-hostile exports, and a nuisance for the preview and printing pipelines on the hiring side.

The fix: Set the document to A4 or US Letter before exporting; every resume editor and word processor offers both.

Rule 6. Keep the page count sane

Caps score at 49

More than four pages fails outright. Recruiters give a resume one to three minutes, extra pages dilute every keyword's relevance in ranking, and some parsing pipelines simply truncate what they read after the first few pages.

The fix: Cut to two pages at most — one if you have under about eight years of experience — by trimming the oldest roles to a single line.

Rule 7. Enough real text on the page

Fewer than 120 extractable words on a full resume means most of the page is graphics: skill meters, timelines, icons, charts. Every one of those elements is invisible to a parser, so the profile the ATS builds is nearly empty even though the design looks rich to a human.

The fix: Keep every substantive fact — skills, dates, achievements — as plain text; treat graphics as decoration, never as data.

Rule 8. No emojis or decorative glyphs

We scan the text layer for emoji and decorative symbol ranges. Older ATS builds run on limited text encodings and turn these glyphs into mojibake that can corrupt neighboring words in the index — and even where they survive, symbols carry zero keyword value while making the resume read informal.

The fix: Use plain round or hyphen bullets and ordinary words; save the emojis for LinkedIn posts.

Contact info

10 of 100 points · Rules 913 · 2 points each

The five-second question: can a recruiter reach you, and does the parser file your details into the right fields of the candidate record? The point weight is small, but failures here are uniquely expensive — a perfect resume with an unparseable email address wins an interview for nobody.

Rule 9. A parseable email address

We look for a plain-text email address the parser can lift into the ATS contact record. The most common failure is decorative: the address lives inside a designed header image or icon graphic, so it extracts as nothing — and an application the system cannot attach an email to is a dead record no recruiter will chase.

The fix: Write your email as plain text near the top of page 1, next to — not inside — any icon or graphic.

Rule 10. A parseable phone number

We check that a phone number with at least seven digits parses out of your contact block. Numbers styled with unusual separators, split across lines, or embedded in graphics fail extraction, leaving the ATS phone field blank — and many recruiters treat an unreachable candidate as a skip rather than a research project.

The fix: Write the number plainly with country code, like +1 (415) 555-0142, on one line in the header.

Rule 12. Contact details at the top of page 1

We check that your email appears within the first few lines of the first page. Parsers map the top of the document to the candidate-record header zone and expect identity and contact fields there; details pushed into a footer, sidebar, or page 2 routinely land in the wrong field or vanish from the record entirely.

The fix: Keep name, email, and phone together in the top block of page 1, as plain text.

Rule 13. No photo on the resume

We detect raster images painted on page 1. A photo cannot be parsed into any field and inflates the file — but the real problem is bias compliance: to avoid discrimination exposure, some ATS pipelines strip photos and others penalize or reject the resume outright, which is why photo-free resumes are the norm across the US and UK.

The fix: Remove photos and decorative images before applying through any portal; keep the headshot for LinkedIn and design portfolios.

Structure

30 of 100 points · Rules 1422 · 3.3 points each

Parsers and skimming humans share the same expectations: standard section names, dated roles, listed skills, scannable bullets, sane length. These nine rules measure whether your resume's skeleton matches what both audiences are trained to find.

Rule 14. Recognizable section headings

We count how many conventional headings — Experience, Education, Skills, and their standard synonyms — the parser recognizes; three or more passes. Parsers map your content into database fields by heading keyword, so a creative label like "My Journey" dumps everything under it into an unclassified bucket that field-based filters never search. Our matcher is deliberately forgiving — it recognizes headings that a two-column layout fused side by side into one row, and headings run inline with their own content ("SKILLS Languages: Java…") — but it still needs the conventional words.

The fix: Label sections with the boring standard names: Experience, Education, Skills, Projects, Certifications.

Rule 15. Every role carries a date range

We check that each experience entry has a machine-readable range such as "May 2024 – Jul 2025" or "05/2024 – Present". Dates are how an ATS computes tenure, orders your history, and answers years-of-experience filters — a role without a parseable range is unverifiable, and gets sorted wrong or dropped from the profile.

The fix: Give every role an explicit start and end (or "Present"), in one consistent format throughout the resume.

Rule 16. No unexplained gaps

We line your dated roles up chronologically and flag any gap longer than six months. Modern ATS dashboards compute employment gaps automatically and surface them to recruiters, and an unexplained one invites the least charitable guess at exactly the moment a screener is looking for reasons to move on.

The fix: Keep the gap, add the explanation: one line for study, freelancing, caregiving, or a career break beats a suspicious silence.

Rule 17. An education section exists

We check that at least one education entry parses out of the document. Degree fields are hard requirements in many ATS filter queries — "Bachelor's or higher" is one of the most common screens — and when no education section is detected, that filter treats you as a non-match rather than an unknown.

The fix: Add an Education section even if it is one line — and if you are self-taught, list certifications and courses under that standard heading.

Rule 18. A skills section with real keywords

We count discrete skills across your skill groups; five or more passes. The skills section is the densest keyword surface on a resume — it is where ATS keyword matching and recruiter boolean searches look first, and a resume that buries its stack in prose loses matches to one that lists it plainly.

The fix: List concrete, searchable names — languages, frameworks, tools, methods — not adjectives like "hardworking".

Rule 19. Achievements in bullets, not paragraphs

We count bullet points across your experience; fewer than three means the history reads as paragraph walls. Bullets give parsers clean units to segment into individual achievements and give skimming recruiters an entry point — dense paragraphs are where good accomplishments go to be un-read.

The fix: Break every role into two to five single-idea bullets, each leading with the achievement.

Rule 20. Length matches your experience

We compare page count to the total span of your dated experience: under about eight years, one page; over it, two. Extra pages do not buy extra consideration — they spread the same one to three minutes of recruiter attention across more paper and dilute keyword density in ranking.

The fix: Cut the oldest roles to one line each and delete anything that does not support the job you want next.

Rule 21. Word count in the 300–900 range

We count extracted words and expect between 300 and 900. Under 300 there is too little signal for keyword matching or for a recruiter to evaluate; over 900 the resume reads as unedited, and relevance ranking suffers because the terms that matter are swimming among ones that do not.

The fix: Too thin: add quantified achievements, tools, and outcomes. Too thick: cut filler and compress the oldest roles.

Rule 22. A short summary up top

We look for a summary or profile of at least a couple of lines near the top. Recruiters decide in under 30 seconds, and the summary is the one part of the resume whose reading order you fully control — it frames everything below it, and ATS profile views often surface it as your preview snippet.

The fix: Open with two or three lines: who you are, your strongest evidence, and what you are aiming at — no adjectives you cannot prove.

Content quality

20 of 100 points · Rules 2330 · 2.5 points each

The file parses and the structure holds — now does each line actually sell? Eight rules for the writing itself: verbs, numbers, tense, and the filler phrases that cost you credibility with every screener who has read ten thousand resumes.

Rule 23. Bullets open with action verbs

We check each bullet's first word against a dictionary of roughly 200 strong verbs; 60% or more passes. "Responsible for maintaining" describes a duty, while "Maintained", "Rebuilt", or "Automated" claims an act — verb-led bullets are how both screeners and resume-scoring tools tell an achievement list from a job description.

The fix: Start every bullet with the verb — Built, Reduced, Led, Shipped — and delete "Responsible for" everywhere it appears.

Rule 24. Impact is quantified

We measure the share of bullets containing a number, percentage, or currency amount; 30% or more passes. Numbers are what survive the skim — "Cut API latency 35%" is evidence while "Improved performance" is a claim — and recruiters reliably recall the quantified lines after the rest blur together.

The fix: Attach a magnitude to each strong bullet: users served, revenue moved, percent improved, hours saved — honest estimates and ranges count.

Rule 25. No first-person pronouns

We scan bullets and the summary for "I", "me", and "my". Resumes are written in implied first person — "Led a team of four", not "I led a team of four" — and pronouns both waste the line's most valuable position (the verb slot) and read as unfamiliarity with professional convention.

The fix: Delete the pronoun and start at the verb; the sentence still works.

Rule 26. No empty buzzwords

We match against the cliché list every screener has learned to skip: "team player", "results-driven", "go-getter", "guru", "passionate about", "responsible for". These phrases carry zero keyword value in matching and negative signal with humans, because they occupy space where evidence should be.

The fix: Replace each claim with its proof — instead of "team player", the cross-team project you shipped; instead of "detail-oriented", the error rate you cut.

Rule 27. Past roles in past tense

We check that bullets under previous roles read as past tense ("Built", "Managed", "Shipped") while the current role stays in present. Mixed tense is one of the fastest sloppiness tells for a human reader, and consistent tense helps parsers and reviewers separate your current responsibilities from your history.

The fix: Sweep once before export: previous roles in past tense, current role in present, no exceptions.

Rule 28. Bullets stay under two lines

We flag bullets longer than about 220 characters — past two rendered lines. A bullet is a headline, not a paragraph: multi-line bullets bury the achievement in the middle where a skimmer never arrives, and usually contain two accomplishments competing for one line's worth of attention.

The fix: One idea per bullet, two lines maximum; split anything longer or cut the setup.

Rule 29. No personal data that invites bias

We scan for date of birth, marital status, parents' names, religion, nationality, and ID numbers such as passport, Aadhaar, or PAN. These fields are holdovers from older resume formats — still common in India — that modern hiring treats as bias and compliance liabilities: they can trigger redaction pipelines, and no ATS field wants them.

The fix: Remove them all — name, city, phone, email, and links are the complete list of personal data a resume needs.

Rule 30. A professional file name

We check the file's name for the patterns that undermine a first impression: "final", "copy", version numbers, "(3)", "WhatsApp", "scan", or anything over 60 characters. Recruiters see the file name in their inbox and in the ATS document list before they see the resume — resume_final_v7 (3).pdf tells its own story.

The fix: Name the file Firstname-Lastname-Resume.pdf before you upload it.

See which of the 30 rules your resume breaks

The free checker runs every rule on this page in seconds — no signup, and your PDF is analyzed in memory, never stored.

Check my resume — free

Frequently asked questions

Why do ATS systems reject resumes?

The most common cause is not missing keywords — it is parsing failure. Scanned or image-heavy PDFs extract as almost no text, multi-column layouts scramble reading order, and styled text corrupts into gibberish, so the system builds an empty or garbled candidate profile from a resume that looked fine on screen. That is why parseability carries 40 of the 100 points here, and any hard failure in it caps the score at 49.

Are these rules the same for every ATS?

Vendors like Workday, Greenhouse, Lever, Taleo, and iCIMS differ in ranking and recruiter UI, but they share the same foundation: extract the text, find the sections, fill the fields. These 30 rules target that shared parsing-and-structure layer, so a resume that passes them is robust across systems instead of tuned to one.

What is a good score — do I need 100?

85 or higher is interview-ready; 70–84 means the file is sound but the flagged items are costing you; below 50 usually means parsers are misreading the file itself. Warn-level findings earn half credit, so a strong resume with a couple of advisories still scores in the 90s. Fix parse-category failures first, always.

How do I test my resume against these rules?

Run the free CVLoom ATS checker: it applies all 30 rules to your PDF in seconds, no signup. The file is analyzed in memory and never stored, and the report shows the fix for every flagged rule.

Build a resume that passes by default

Every CVLoom template is tested against these 30 rules before it ships — single reading order, real text layer, standard headings. Start free, or import your current resume and fix it in place.

These rules are also published as an open CC BY 4.0 repository — cvloom-ats-rules on GitHub. Quote them, build with them, or open an issue if you think one is wrong.