How we score
A resume "fails" an ATS in two ways: the parser fills the wrong fields, or the recruiter's search never surfaces it. A third, human way: nobody can skim it in seven seconds. The score measures those three things and nothing else. It is deterministic: the same file always gets the same number.
Rubric v1.0, live since 13 Sep 2026. A pass keeps all of a check's points, a warning keeps half, a fail keeps none. Checks that do not apply (no job description, a fresher with no dated roles) are removed from the denominator, not scored zero. Each category is scaled to its weight.
Parse fidelity
A scanned or image-only PDF gives a parser nothing to read. Textkernel: parsing is only as accurate as the text extracted; Greenhouse lists image uploads as a parse-failure cause.
Source: Textkernel developer FAQ; Greenhouse 'Unsuccessful resume parse'
A parser cannot extract text it is not allowed to copy.
Source: Extraction prerequisite
Greenhouse lists 'spacing between letters' as a cause of failed parses: J O H N is four words to a parser.
Source: Greenhouse 'Unsuccessful resume parse'
Icon fonts and broken ligatures come out as private-use characters or gaps ('of ce'), so the words around them are lost to search.
Source: Unicode private-use mechanism; Canva text-layer reports
Read left to right, two columns interleave. Textkernel's own study moved clean renders of column CVs from 62% to 90%, so one in ten still fails at the market leader.
Source: Textkernel 'Improving extraction from column resumes'; Greenhouse 'columned designs'
Tables are the most common cause of merged or split jobs and education entries in a parse.
Source: Greenhouse 'Unsuccessful resume parse' (tables, complex layouts)
Text boxes sit outside the main story in a Word file; many extractors skip them entirely.
Source: Greenhouse 'complex layouts'; DOCX extractor behaviour
Header and footer text is dropped or duplicated by several parsers; Greenhouse names contact info in the header as a parse-failure cause.
Source: Greenhouse 'Unsuccessful resume parse'; pdf.js header test (atsverification)
White-on-white keyword lists are indexed by the parser and visible to the recruiter in the parsed view. Several ATS flag it and recruiters blacklist for it.
Source: Recruiter reports on 'white fonting'; Cangrade, Hiration
Images are skipped. A photo also biases a human reader; skill bars carry no parseable proficiency.
Source: Greenhouse; Textkernel data model (profile pictures = additional info only)
Lever and Greenhouse map email and phone to core fields; without them the recruiter has no way to contact you.
Source: Lever/Greenhouse candidate field model
Parsers segment by heading dictionaries. RChilli treats 'no sections detected' as fatal.
Source: RChilli Resume Quality; OpenResume section detection
Missing dates make tenure incomputable, so experience filters cannot fire. RChilli treats missing dates as fatal.
Source: Lever/Greenhouse fields; Textkernel date model; RChilli Resume Quality
Findability
Recruiter search and match engines look for exact terms. A prose paragraph hides them.
Source: SmartRecruiters taxonomy normalisation; Naukri Resdex EZ Keywords
Lever stems words but does not expand abbreviations; Resdex Boolean is literal. 'AWS' will not match a search for 'Amazon Web Services'.
Source: Jobscan Lever guide; Naukri Recruiter Zone
Ashby and Greenhouse review criteria look for evidence in the work history, not a list. Recruiters do the same.
Source: Ashby AI-Assisted Application Review; Greenhouse Talent Matching
LinkedIn Recruiter retrieves by exact standardised title first. 'Ninja' and 'Rockstar' do not standardise.
Source: LinkedIn engineering blog on Recruiter search
Resdex and Workday filter on years of experience computed from your dates, not from your summary.
Source: Greenhouse extracts years of experience; Naukri Resdex filters
Resdex and Workday filter by location; a resume without a city falls out of city-scoped searches.
Source: Naukri Resdex filters
Parsers extract online profiles from visible URLs, not from icon-only hyperlinks.
Source: Lever/Greenhouse online-profile fields
Recruiters search the same handful of terms for each role. If two of the ten most searched terms for your role are missing, you are missing from those searches.
Source: Role skill profiles compiled from job descriptions; Flexiple skill registry (v1.1)
Naukri Resdex lets recruiters filter on current CTC and notice period. Stating them puts you inside those filters.
Source: Naukri Recruiter Zone (notice-period search, CTC on CV page)
Impact
72% of surveyed recruiters name short, active bullets as what they skim for.
Source: Enhancv 2025 recruiter survey (n=25)
Measurable achievements are a top-three signal for recruiters (52% in the 2025 survey).
Source: Enhancv 2025 recruiter survey
Long bullets are skipped in a seven-second skim; very short ones say nothing.
Source: Recruiter skim behaviour (survey)
'Responsible for' and 'Worked on' describe a job description, not what you did.
Source: Resume Worded / Jobscan content checks; recruiter interviews
'Team player', 'go-getter', 'seeking a challenging position' carry no information and mark a template.
Source: Recruiter surveys; Indian template analysis
The first thing a recruiter reads. A 40-word summary with your title, years and two proofs beats a paragraph of adjectives.
Source: Recruiter skim behaviour
The latest role is read first and longest.
Source: Recruiter skim behaviour
One page under 5 years, two pages otherwise; a 290-word resume for 4 years leaves proofs on the table.
Source: Textkernel long-CV caveat; recruiter survey (1–2 pages 64%)
Language
Typos read as carelessness. We ignore technical terms, company names and Indian names.
Source: Hunspell en_US with an allow-list of skills and names
Past roles in past tense, current role in present or past, never mixed inside one role.
Source: Style convention
Resumes are written without I, me, my.
Source: Style convention
Year-only ranges lower a parser's confidence in tenure; mixed formats read as careless.
Source: Textkernel date model; RChilli date handling
Long sentences are skipped.
Source: Readability convention
India and bias flags (never counted)
Private sector: Parsers skip images and a photo can bias a human reader. Remove it for private-sector roles. Govt / PSU: Government and PSU formats usually expect a passport photo.
Private sector: An age signal. MNC policies reject it; it adds nothing to your fit. Govt / PSU: Often required on government forms.
Private sector: Bias signals that parsers store (Textkernel even normalises gender and nationality). Remove for private-sector roles. Govt / PSU: Expected on many government formats.
Private sector: Never put government ID numbers on a resume you email around. Govt / PSU: Never put government ID numbers on a resume; provide them on the form when asked.
Private sector: Harmless to parsers, wastes two lines. Delete it. Govt / PSU: Some government formats want the signed declaration. Keep it for those only.
Private sector: The table is the parse hazard, not the marks. Three plain lines are fine; drop them after your first job. Govt / PSU: Keep the marks as plain lines; mass hirers and government forms may ask for them.
Private sector: Naukri Resdex filters on both. Keep them for Indian roles. Govt / PSU: Not used in government hiring; harmless to keep.
Private sector: Low value for private-sector roles; keep only if space allows. Govt / PSU: Often part of the expected format.
What the score is not
It is not a probability of rejection. No mainstream ATS rejects on resume content; the only automatic rejection is a knockout question on the form. It is not a keyword-match percentage; that lives in the Job match tab, separately, because it is about one job and the score is about your file. And it is not an AI opinion; the AI report explains findings the rules already made and never changes the number.