Why keyword stuffing works on legacy ATS
Every legacy applicant tracking system on the market today uses some form of token-level matching as its ranking layer. Even when the marketing says "AI," the implementation is usually one of three things: Boolean keyword extraction, TF-IDF weighted matching, or semantic similarity using sentence embeddings. All three have the same structural vulnerability: they are deterministic. A candidate who knows the rules can reliably produce the output they want, regardless of actual fit.
Jobscan's research documents how widespread the practice is, and the Harvard Business School study on hidden workers estimated 27 million qualified Americans get rejected by automated screening for reasons unrelated to ability.
The four ways candidates game the system
- Hidden white text. A block of keywords typed in white at the bottom of the page, invisible to a human reader but fully visible to a parser.
- Repeated skills sections. The skills section appears two or three times with minor variations.
- JD copy-paste in the summary. The candidate copies the first paragraph of the job description verbatim into the resume summary.
- Bullet rewriting to match keywords. A real bullet gets rewritten to mirror the job description with more technical terms.
Why "smarter keyword matching" is not the fix
Vendors who notice the keyword-stuffing problem usually try to fix it with a smarter keyword model. They add stop-word filters, semantic similarity, BERT-based matching, GPT-4 summaries. The problem is that all of those models are still reading tokens.
The fix is not a smarter keyword model. The fix is to stop ranking by keywords altogether. The ranker has to read for outcomes, things the candidate would have to invent fictional accomplishments to fake, not for tokens.
What we learned at Amazon about adversarial inputs
Before CurriculoATS, the founder spent years at Amazon working on search and recommendations. Adversarial inputs are an old problem in those systems. The pattern that worked was to rank on signals the seller could not directly fabricate—real purchase data, real return rates, verified review patterns.
Hiring works the same way. The candidate can write whatever keywords they want; the ranker should be reading something else. Specifically, the system reads resumes for four categories of outcome: revenue, teams, systems, and problems. The model produces a 0–100 composite score with written reasoning that cites specific outcomes found.
The data we see on stuffing rates by role and seniority
Keyword-stuffing rates vary sharply by role and seniority. Senior engineers and senior product managers stuff most often, because they have applied to the most jobs and learned the patterns. The stuffing rate for senior backend engineering candidates sampled was around 38%, with the most common pattern being a duplicated skills section combined with job-description-mirrored bullets. For senior PMs, the rate was about 31%.
Legacy keyword screening systematically promotes the most-applied candidates rather than the most-qualified ones, and the rate of mismatch is highest in exactly the seniority bands where founders most need accurate signal.
What a founder does this week
If you suspect keyword stuffing has been polluting your shortlist, three quick checks will tell you:
- Open the top-five resumes in your current ATS and select all the text. If hidden white text shows up, the candidate is stuffing.
- Read the resume's experience section against the skills section. If the skills list claims many technologies but experience only mentions a few, the rest are stuffing.
- Check whether the resume summary mirrors the job description too closely.