Most resume optimization tools show you two numbers: a score before, and a score after. The space between those numbers is treated as a black box. You are expected to trust that whatever happened in the middle was worthwhile. We thought it was worth opening that box.
So we did something that, as far as we can tell, no ATS optimization tool has done publicly: we tracked every single edit our engine made across a set of real production optimizations, measured what each type of change contributed to the final score, and mapped exactly where the improvements came from and where they stopped.
The results were not what we expected. Keywords improved quickly and reliably. Skills barely moved at all. And every optimized resume, no matter how many edits we applied, converged on the same narrow score band. There is a ceiling, and it is lower than you might think.
All figures in this article come from Ajusta's production pipeline. Each optimization cycle includes a before score, a set of algorithmically generated edits, and an after score. We also have component-level breakdowns (keywords, skills, experience, education, contextual fit) for every score artifact, plus the full list of protected and eligible resume sections the engine evaluated.
The resumes span multiple industries and roles: data science, manufacturing, legal, defense, healthcare, customer support, and research. This is not a single-profession sample.
What the engine actually sees when it opens a resume
Before making any changes, the optimization engine breaks a resume into atomic sections. Each bullet point, each job title, each education entry, each date range becomes a discrete unit. The engine then classifies every unit into one of two buckets: protected or eligible.
Protected sections are things the engine will not touch. Dates, names, degree titles, company names, certifications with specific nomenclature. These carry factual weight and altering them would compromise the resume's integrity. Eligible sections are the descriptive bullet points, summary statements, and skill descriptions where wording can be adjusted without changing the underlying facts.
Here is the first finding that surprised us: in every single resume we analyzed, protected sections outnumbered eligible ones. The engine is working within a narrow window from the start.
Protected vs. eligible sections per resume
Each row represents one optimization cycle. Gray bars are protected (untouchable) sections; blue bars are eligible (editable) sections.
Across the full dataset, the ratio averaged roughly 56% protected to 44% eligible. Some resumes had as little as 30% of their content available for editing. This constraint is deliberate. An optimization engine that rewrites everything would produce resumes that no longer represent the candidate. The tighter the constraint, the more honest the optimization. But it also means the engine has to be selective about where it spends its edits.
The keyword fix: fast, effective, and mostly solved
Of the five scoring components our engine evaluates (keywords, skills, experience, education, and contextual fit), keywords showed the most dramatic improvement after optimization. This was expected. Keywords are the most surface-level scoring dimension. They measure whether specific terms from the job description appear in the resume text. Adding a missing keyword to an eligible bullet point is mechanically straightforward.
What was less expected was the magnitude. In many cases, keyword scores went from single digits to near-perfect. Several optimized resumes achieved keyword scores at or approaching the maximum. The engine is quite good at identifying which terms are missing and weaving them into existing content naturally.
Keyword component scores: before vs. after optimization
Each pair shows the keyword sub-score (0-100) before and after the engine's edits.
In our keyword gap analysis, we found that soft skills and domain-specific terms are the most commonly missing keyword categories. This article confirms that finding from the optimization side: the edits that move keyword scores the most are exactly the ones that inject those missing categories into eligible bullet points.
But here is where the story gets more complicated. Keywords are only one of five scoring components, and they account for roughly 40% of the weighted total. Even a perfect keyword score cannot carry the overall score past a certain threshold if other components lag behind. That brings us to skills.
The skills wall: where optimization runs out of room
If keywords are the dimension where optimization works best, skills are the dimension where it works least. And the gap between the two is much larger than we anticipated.
Skills scoring evaluates whether a resume demonstrates proficiency in the competencies a job requires. Unlike keywords, which are essentially a text-matching problem, skills assessment considers depth of experience, breadth of related capabilities, and evidence of application. You can add the word "Python" to a bullet point and improve your keyword score. But the skills scorer wants to see evidence that you have actually used Python in a meaningful context, ideally across multiple roles or projects.
This distinction creates a fundamental asymmetry. Keywords can be addressed through careful wording. Skills require career history that either exists on the resume or does not.
Skills component scores in optimized resumes
Grouped distribution of skills scores across all optimized resumes with an overall score of 70+. Compare to keyword scores above, where many reached 90-100.
The highest skills score in any optimized resume was 77. None reached 80. Compare this to keyword scores, where multiple resumes reached or approached 100.
The pattern is stark. While keywords routinely hit the 90-100 range after optimization, skills in the same resumes stayed in the 25-77 range. Not a single optimized resume achieved a skills score above 77. The gap between keyword performance and skills performance widened as optimization pushed keywords higher, because skills had nowhere to go.
Keyword vs. skills scores in optimized resumes (sorted by gap)
Each row is one optimized resume. The gap between keyword and skills performance is consistent across industries and roles.
This is not a flaw in the optimization engine. It is an accurate reflection of what text editing can and cannot do. If a job description asks for expertise in machine learning and the candidate has one line about a Coursera certification, no amount of rewording will make the skills scorer interpret that as deep ML experience. The information simply is not there.
Skills are weighted at roughly a quarter of the total score. When keywords hit near-perfect marks but skills stay in the 30-60 range, the weighted average creates a hard mathematical ceiling on the overall score. No amount of keyword optimization can compensate.
The ceiling: every resume lands in the same band
We expected optimized scores to spread across a wide range. Stronger resumes would score higher; weaker ones would score lower. The optimization would push each resume up by varying amounts depending on how much room it had to improve.
That is not what happened. Instead, nearly every optimized resume clustered in a surprisingly tight band. The vast majority landed between 70 and 79. Not one broke past 80.
Distribution of post-optimization scores
Each block represents one optimized resume's final overall score.
Zero resumes scored above 80 after optimization. The highest overall score across all score artifacts in our entire production dataset is exactly 80.
This clustering effect has a straightforward mathematical explanation. The overall ATS score is a weighted average of five components. Keywords (weighted at 40%) can reach near-perfect levels through optimization. Experience (weighted at roughly 10-15%), education (10-15%), and contextual fit (10%) tend to stay relatively stable because they reflect structural facts about the resume that do not change through wording edits. And skills (weighted at 25%) acts as an anchor, pulling the weighted average down even when keywords are maxed out.
Consider a simplified example. If a resume achieves keyword: 95, skills: 50, experience: 80, education: 75, contextual: 80, the weighted score works out to roughly 77. To push that above 80, skills would need to improve significantly. But as we showed above, skills scores in optimized resumes rarely exceed 77 and often sit much lower. The math does not allow for a breakout.
Why the ceiling exists: a weighted average example
Even with a near-perfect keyword score, the weighted average lands at 78 because skills drags the total down. To reach 85, skills would need to jump from 50 to 78. In our data, that never happened through optimization alone.
In our earlier investigation of resume statistics, we found that the average improvement from optimization was around 35 points. That number now makes more sense in context. Starting scores clustered in the 25-45 range. After-optimization scores clustered in the 70-79 range. The improvement is real, but both the starting distribution and the ending distribution are narrower than you might expect.
Diminishing returns: when more edits stop helping
Not all edits contribute equally. When we measured the efficiency of each optimization cycle (points gained per edit applied), a clear pattern of diminishing returns emerged. The first few edits delivered the largest score improvements. Later edits still helped, but with progressively smaller marginal gains.
Some resumes achieved strong results with very few changes. Others required many more edits for a comparable outcome. The difference was not random. Resumes that started with better structural alignment to the target job (higher experience and education scores) needed fewer edits because the engine only had to close the keyword gap. Resumes with fundamental mismatches needed more edits and still could not overcome the skills and experience deficits.
Edit efficiency: points gained per edit (sorted by efficiency)
Roles with fewer edits and larger gains had strong baseline alignment. Roles with many edits and smaller per-edit gains had deeper structural mismatches.
The most efficient optimization in our dataset gained 37 points from just 6 edits, which works out to over 6 points per edit. The least efficient gained 27 points from 14 edits: under 2 points per edit. Both resumes ended up in the same 70-79 band. The difference was in how much work the engine had to do to get there.
This has a practical implication for anyone evaluating optimization tools. The number of edits applied is not a good proxy for quality. A tool that makes 30 changes is not necessarily better than one that makes 8. What matters is whether the edits target the right scoring dimensions and whether the overall score improves meaningfully. More edits can mean a harder optimization problem, not a better one.
The verification layer: why the engine says no
Not every edit the engine generates makes it into the final resume. The system includes a verification layer that checks each proposed change against evidence from the original resume content. Edits that cannot be grounded in the candidate's actual experience are rejected.
In our production data, the acceptance rate was 97.4%. The rejected edits were flagged for a single reason: missing evidence references. The system could not trace the new wording back to something the candidate actually stated in the original resume. This is a deliberate design constraint. The engine generates edits conservatively, proposing only changes that extend or rephrase existing content rather than fabricating new claims.
This matters because it connects directly to the ceiling we described above. A more aggressive engine could propose bolder edits, potentially closing the skills gap by adding claims the candidate did not make. Some tools do this. The result would be higher scores, but at the cost of producing resumes that misrepresent the candidate's actual qualifications.
A verification layer that rejects ungrounded edits limits the maximum achievable score. But it also means the optimized resume still accurately represents the candidate. The ceiling we described above is partly a consequence of this design choice.
When evaluating any optimization tool, it is worth asking: does it show you what changed and why? If the tool claims to push scores into the 90s, ask what evidence those edits are based on. If the answer is not clear, the tool may be manufacturing claims rather than optimizing presentation.
What this means for job seekers
If you take one thing from this analysis, let it be this: keyword optimization is table stakes. It is solvable, it is effective, and every resume targeting a specific job should do it. The gap between an unoptimized and optimized keyword score is large enough to make a material difference in whether your resume gets through initial screening.
But keyword optimization alone will not get you to the top of the score range. The ceiling exists because skills, experience, and education cannot be meaningfully changed through text edits. They reflect your actual career trajectory. Improving them requires building real skills, gaining relevant experience, or pursuing additional education. No optimization tool can substitute for that, and any tool that claims otherwise is either measuring something different or not being honest about what its scores mean.
Key takeaways
Keyword optimization produced the largest and most consistent score improvements. Missing keywords, especially soft skills and domain terms, are the primary reason resumes score poorly on initial screening.
No optimization engine can manufacture skills evidence that does not exist. Skills scores in optimized resumes stayed well below keyword scores, creating a mathematical ceiling on the overall score.
Post-optimization scores clustered tightly in the 70-79 range regardless of starting point. The weighted scoring formula means that strong keywords cannot compensate for average skills.
Resumes that needed fewer edits for large gains were not under-optimized. They were better aligned to the target role from the start. More edits is not always better.
The honest takeaway is that ATS optimization is necessary but not sufficient. It solves the keyword problem thoroughly. It helps with phrasing and structure. It can move a resume from being filtered out to being seen by a human reviewer. But it cannot overcome a fundamental mismatch between your background and the job requirements. If your skills score is low because you lack the relevant experience, the path forward is building that experience, not finding a better optimization tool. That is an uncomfortable truth, but the data leaves little room for a different conclusion.
This analysis is based on complete optimization cycles from Ajusta's production scoring engine. Each cycle includes a before-optimization score, the full set of proposed edits, a verification pass, and an after-optimization score. Component scores (keywords, skills, experience, education, contextual fit) were available for every score artifact. Protected and eligible section classifications were available for every optimization plan.
The resumes come from real users across multiple industries. Job descriptions span tech, manufacturing, finance, healthcare, defense, customer service, and legal roles. All data was anonymized before analysis. No synthetic or test data was included.
Related research
We traced widely-cited resume statistics back to their sources and tested each claim against production data.
Read articleWe extracted every keyword from real job descriptions and matched them against real resumes. The biggest gap was not technical skills.
Read article