Last year I was laid off. Like a lot of people, I sent out hundreds of applications. Unlike most people, I saved every rejection email and tried to figure out what was actually happening.
The result was a rabbit hole that ended with me building a resume analyzer. Here's what I found.
The Real Problem Isn't Your Resume
After reading 200+ rejections (yes, I kept a spreadsheet), I noticed a pattern. The companies that actually interviewed me didn't have better resumes — they had resumes that matched their specific job description better.
Most resume advice is generic: "use action verbs," "keep it to one page," "quantify your impact." That advice is fine, but it misses the point. The goal isn't a good resume. The goal is a resume that passes the specific filter of a specific job at a specific company.
How the Analyzer Works
The approach is simple: compare a resume against a job description and measure the overlap across four dimensions:
function scoreResume(resumeText, jobDescription) {
const keywords = extractKeywords(jobDescription)
const matched = keywords.filter(k =>
resumeText.toLowerCase().includes(k.toLowerCase())
)
return {
matchRate: (matched.length / keywords.length) * 100,
missingKeywords: keywords.filter(k =>
!resumeText.toLowerCase().includes(k.toLowerCase())
),
keywordDensity: keywords.length / resumeText.split('').length,
}
}
The keyword extraction strips common words and pulls out the meaningful terms: technologies, certifications, industry-specific phrases. If the JD mentions "Kubernetes" three times and your resume doesn't mention it once, that's a problem — regardless of whether you think you can learn it on the job.
What Surprised Me
Two things:
- Soft skills are invisible to filters. "Great communicator" and "team player" mean nothing to an ATS parser. The system is looking for concrete terms.
- The same resume can score 20% against one JD and 80% against another. The difference isn't you — it's how well your wording overlaps with what they're asking for.
Run Your Own Resume Check
The tool I built is at resumeaiopt.com. Paste your resume and a job description, and it'll show you where the gaps are. No account needed, no data stored — just analysis.