Most resume scoring tools give you a number out of 100 and a cheerful "improve your score" button. We give you the list. These 22 keywords came out of the JD. Your resume matches 18 of them. These are the 4 it does not. What you do next is up to you.
3 steps. Each one runs in seconds. Scroll in order.
The parser already pulls key_skills and ats_keywords from the posting. Both lists feed the match step.
The tailored resume (or your master, if you just want a quick read) is tokenized and compared against the JD keyword set. Variants are normalized so "React" and "ReactJS" count as the same match.
The breakdown lists every keyword by name, bucketed matched or missing, with the frequency each appeared in the JD. You decide whether a missing skill is a real gap or something to leave off.
One real example, same input reshaped two ways.
Your resume matches this job 82%. Improve your score: add more keywords.
Matched (18 of 22): React · Next.js · TypeScript · Jest · Playwright Figma · Core Web Vitals · WCAG 2.1 AA · design system ... Missing (4): GraphQL (mentioned 3x in JD) Storybook (mentioned 2x) micro-frontends (mentioned 1x) A/B testing (mentioned 1x)
The mechanics nobody should have to guess at.
We do literal string matching because that is how most ATS parsers work. On top of that we normalize a small controlled set of variants (React/ReactJS, JavaScript/JS, k8s/Kubernetes) so you do not get dinged for casing or abbreviation.
A keyword mentioned six times in the JD carries more weight than one mentioned once. The breakdown shows frequency so you can prioritize.
Free accounts see the top three missing keywords. Pro accounts see the full list plus frequency counts and a per-role trend line across your tracked jobs.
Every time you regenerate a tailored resume, the breakdown recomputes. Watch the number climb as you add real skills. If it does not move, the gap is real.
Honest limits read as trust signals. Hiding them does the opposite.
We can report a match percent if you want it. The list is what actually tells you what to do, and a percent alone does not. The point is fixing the resume, not improving the score.
Jobscan scores a resume against a JD. We do that plus generate a tailored resume, track the application, and analyze rejections when they come in. See the full comparison at /compare/jobscan.
No. Keyword match gets your resume past the first filter. After that a human reads it. The breakdown handles the part of the funnel you can measure. The rest is story, timing, and luck.
Yes. You can run a keyword match on a master resume against any pasted JD. You will see what is already there and what is missing before you decide whether to tailor.
Every saved job gets its own resume, rewritten to mirror the posting. ATS-safe, zero fabrication.
Mark a job as denied. Get an AI read on the likely gap, what the resume missed, and what to do differently next time.
Drop a raw job posting. Get structured company, role, skills, and ATS keywords back in under two seconds.
Create a free account in under a minute. First job tracked, first tailored resume, and first keyword breakdown all happen inside the onboarding flow.