Why does it say I'm missing a skill that's already on my resume?
The real reasons a skill on your resume shows as missing, in the order they are most likely to be the cause, and the fix for each.
Almost always the scan is matching a different string than the one you are looking at. We search your resume for the exact wording the job description used, which is why "NodeJS" on your resume does not match "Node.js" in the posting.
Letter case is never the cause, so python, Python, and PYTHON all match each other. Everything else about the wording does have to line up.
The causes below are in the order they are most likely to be yours.
First check: is it missing, or under-used?
Missing means your resume mentions the keyword zero times, and zero mentions is the only thing that earns no credit at all.
So a keyword showing as needing review with a count of 1 against the job's 4 is not missing. It is already earning most of its weight, because any keyword you mention at least once earns at least half of what it is worth. Fix a genuinely missing row before you touch that one.
You wrote a different form of the word
This is the most common cause by a distance. The scan looks for the specific term the posting used, plus a set of known alternatives for that term, and when the alternative you happened to write is not one of them the match fails even though a human would read the two as the same thing.
The classic examples are Postgres against PostgreSQL, K8s against Kubernetes, NodeJS against Node.js, and JS against JavaScript.
The fix: open the Job tab, find how the posting writes it, and write it that way on your resume at least once. On the Smart Report beta, Find in job description on the row jumps you straight to it.
Writing both forms is fine and often better, since "Kubernetes (K8s)" matches whichever one the next posting happens to use.
Punctuation is stuck to the word
A match has to start and end at a word boundary, and letters, digits, and underscores all count as part of a word. That is why a term wedged into React/Redux or written as Node. at the end of a line does not always come back as the term you meant.
The fix: list your skills as separate terms, separated by commas or bullets, rather than run together with slashes.
The report is showing you a slightly different word
The row shows the wording from the job description, which is not always the exact term being counted underneath. A row can read Dashboard while the string the scan is matching is Dashboarding, so searching your own resume for the word on screen turns up nothing and the row looks wrong.
The fix: use Copy keyword on the row rather than retyping what you see, then put that exact string on your resume.
The posting asked for a longer phrase
When a job description says "Programming Languages", that whole phrase is what gets counted rather than "Programming" on its own. A resume carrying only the shorter word does not satisfy a row reading "Programming Languages".
The fix: match the full phrase as the posting wrote it.
The scanner never saw that part of your resume
The scan reads a text version of your resume rather than the file you are looking at, and the two are not always the same thing.
- On a Smart Scan, that text is built from the parsed sections of your SkillSyncer resume. Anything that did not land in a section when you uploaded is invisible to the scan, even though you can still see it in your original file.
- On a Classic Scan, the resume text is whatever came out of the box you pasted or uploaded into.
The fix: open your resume and check that the section containing the skill actually has content in it. An empty Skills or Projects section is the usual culprit, and it doubles as the clearest sign that your original file was not ATS compliant, because an applicant tracking system will lose the same content we did.
You excluded it
An excluded keyword is removed from scoring completely, so it never shows as missing. It disappears from the report altogether, which is why the row looks like it went somewhere rather than turning red.
If a keyword you expected has vanished, open Excluded Keywords in Settings and press Remove on it. Removing an exclusion does not re-run any scan, so create a fresh scan to see that keyword back in scoring.
It is not in the report at all
Only keywords the job description contains ever reach the report. A skill on your resume that this posting never mentions is not missing, it is out of scope for this scan, and it costs you nothing.
After you fix it
Edit your resume from inside the scan and the score updates as you type, at no extra cost. A credit is spent only when you create a new scan.
Why keyword matching works this way
The resume keyword scanner page explains why applicant tracking systems match on exact terms, which is the reason a skill worded differently reads as missing.