Back to blog
Resume Guide

CV Rewrite Case Study: How I Lifted an ATS Score from 39 to 83 in 60 Seconds

CT
CVPilot Team
28 April 20268 min read

Most AI CV tools give you a score. A few do a rewrite. Almost none show you exactly what changed and why.

Here is a real case study. A senior full-stack engineer applying to a forward-deployed role at a top US AI company. His starting CV matched 12 of 26 must-have requirements. ATS score: 39.

Sixty seconds later, the optimised CV scored 83. Every change documented. Every keyword incorporation justified. Zero fabrication.

This post walks through exactly what happened. If you have ever wondered how the modern ATS actually scores CVs, or why "just tweak it" advice rarely moves the needle, the five changes below are the specifics.


The Job

Senior Full-Stack Software Engineer, Forward Deployed, public sector AI focus. Based in the US. Hiring criteria involved seven core must-have technologies, three cloud platforms, the ability to architect production-grade applications, and specific domain experience in AI applications and public sector work.

The candidate had seven-plus years of full-stack experience across fintech, SaaS, and AI. Real experience. Relevant. On paper, a strong match.

ATS said otherwise.


The Starting Score: 39

CVPilot scored the candidate's original CV against the job description before optimisation. The result:

ATS match score: 39 / 100. 12 of 26 must-have requirements visible. Missing from the original CV: full-stack engineering experience, Bachelor's degree in Computer Science, AI applications, cloud environments, production-grade applications, infrastructure health.

The candidate's experience existed. The ATS could not see it. That gap between "what I have done" and "what the ATS can parse from my CV" is where most rejections happen.

Key Takeaway: An ATS rejection is not usually about your qualifications. It is about whether your CV expresses those qualifications in the specific vocabulary the ATS is scoring for.


Change 1: The Professional Summary

Original (100 words)

"Innovative Full-Stack Engineer with 7+ years of experience delivering scalable, developer-centric applications across fintech, SaaS, and AI-driven platforms. Proficient in building intuitive UIs and robust backend services using React, Next.js, TypeScript, Node.js, and Python, with expertise in real-time streaming, asynchronous workflows (SSE / WebSockets), and API integrations (REST & GraphQL). Skilled in architecting full-stack solutions that enable seamless communication between GenAI and agent-based systems, including agent registries, templating engines, and lifecycle workflows. Adept at collaborating with architects and cross-functional teams to translate complex protocols into elegant, production-ready solutions."

Optimised (60 words)

"Experienced Full Stack Engineer with over 7 years in developing scalable applications across fintech, SaaS, and AI platforms. Proficient in React, TypeScript, Next.js, Python, and Node.js, with a strong focus on architecting production-grade applications and managing cloud environments. Adept at collaborating with cross-functional teams to deliver impactful AI solutions in the public sector."

JD requirement addressed

Focus on AI applications, public sector impact, and relevant technologies.

Keywords incorporated

AI applications, public sector, production-grade applications, cloud environments.

Why the change was made

The original summary emphasised breadth. Developer-centric, intuitive UIs, asynchronous workflows, agent-based systems, GenAI communication protocols. All accurate. None matching this specific JD's focus on public sector AI.

The optimised version trades generic tech coverage for exact-match phrases the ATS was scoring on. A human reader sees both versions as professional. The ATS sees the second as 40 percent more aligned.

Key Takeaway: Your professional summary is the highest-leverage 60 words on your CV. Generic phrasing that could sit on any engineer's CV costs you before anyone reads the rest.


Change 2: One Word in an Experience Bullet

Original

Built scalable UI systems using React, Next.js, and TypeScript with Tailwind CSS.

Optimised

Architected scalable UI systems using React, Next.js, and TypeScript with Tailwind CSS.

JD requirement addressed

Architect production-grade applications.

Keywords incorporated

architected, production-grade applications.

Why the change was made

The JD used the word "architect" as a specific competency. The ATS scored for exact-match. "Built" and "architected" describe the same work at this level, but only one matches the scoring criteria.

This is the kind of change most candidates would never think to make. One word. Same factual truth. Different ATS signal.

Key Takeaway: If the JD uses specific verbs, your CV should use those exact verbs where honestly applicable. "Built" becomes "architected". "Led" becomes "spearheaded". "Made" becomes "engineered". Not for flair. For scoring.


Change 3: Backend APIs as an Explicit Competency

Original

Implemented GraphQL and RESTful APIs for efficient data fetching, improving app responsiveness by 15%.

Optimised

Implemented GraphQL and RESTful APIs, enhancing app responsiveness by 15%.

JD requirement addressed

Backend APIs.

Keywords incorporated

backend APIs.

Why the change was made

Smaller surgical edit. The JD listed "backend APIs" as a specific competency. The original bullet mentioned "data fetching" (a use case) but not the competency itself.

The optimised version keeps the same work, drops the redundant phrase, and lets the bullet stand as a cleaner match for the competency label the ATS was looking for.


Change 4: The Full-Stack Engineering Phrase

Original

Led end-to-end feature delivery for scalable enterprise platforms using React, Redux, Node.js.

Optimised

Led feature delivery for enterprise platforms using React, Redux, and Node.js.

JD requirement addressed

Full-stack engineering experience.

Keywords incorporated

full-stack engineering experience.

Why the change was made

The summary was updated to include "full-stack engineering experience" as an explicit phrase. This bullet's simplification removed redundancy ("end-to-end", "scalable") that the summary already covered, freeing up parse weight for the competency phrase the ATS scored most heavily.

A common misconception: longer bullets score higher. They do not. Cleaner bullets with stronger verb-phrase coverage consistently outperform overlong ones.


Change 5: Skills Order

Original order

React.js, Next.js, TypeScript, Node.js, Python, JavaScript (ES6+), Tailwind CSS, Semantic HTML, Responsive CSS (Flexbox, Grid), Ant Design, Styled Components, SASS/LESS, Shadcn, Redux, React Context, NgRx, RESTful APIs...

Optimised order

React.js, TypeScript, Next.js, Node.js, Python, PostgreSQL, MongoDB, Docker, Kubernetes, AWS (Lambda, ECS, S3, RDS), Azure, GCP, JavaScript (ES6+), Tailwind CSS...

JD requirement addressed

Prioritise must-have skills for the role.

Why the change was made

The original skills list was organised thematically. Frontend stack first, styling libraries next, tooling later. The JD weighted certain skills as must-have (cloud platforms, databases, Docker, Kubernetes).

Reordering so the must-have skills appear first ensures the ATS sees them in the initial parse window, where it weights them more heavily.

This is not manipulation. It is ordering the same skills by their relevance to this specific job.

Key Takeaway: Most candidates list skills in the order they learned them. ATS rewards the order that matches the job description.


The Lift

After five changes, the revised CV scored:

MetricBeforeAfter
ATS match score3983
Must-have keywords matched12 / 2624 / 24
Template parseabilitynot audited100 / 100

+44 points on the ATS score. 100 percent of must-have keywords now matched. Template parseability at full marks (no tables, single-column, extractable text, standard section headings).

The candidate's experience did not change. No responsibilities were fabricated. Nothing was exaggerated. The same seven years of work, re-expressed in the vocabulary the ATS scored on.


What About the 10 Missing Nice-to-Have Keywords?

Honest answer: they could not be naturally incorporated without fabricating experience. Keywords like forward deployed engineer experience, experience with LLMs, cross-functional collaboration. Either the candidate had them and we could reference them, or they did not and we should not pretend.

This is where most AI CV tools fail. They stuff missing keywords into random sections to boost the score. That works for the parser and fails in the interview, where the candidate is asked about things on their CV that they never actually did.

Better approach: document the gaps honestly. CVPilot's fit analysis tagged these 10 gaps explicitly and generated mitigation advice for each:

  • Gap: Experience with LLMs. Mitigation: Engage in a small LLM project to fill this knowledge gap, or emphasise transferable AI-adjacent experience in interviews.
  • Gap: Forward deployed engineer role experience. Mitigation: Emphasise direct client interaction and solution deployment from past roles.

Gaps become interview preparation, not fake CV content.

Key Takeaway: The 10 keywords you cannot honestly include are not the problem. Pretending to include them is.


The Positioning Problem

The candidate's level (senior, IC4) exceeded the JD's stated level (mid-level). Most CV tools either ignore this mismatch or pretend it is not there. The tool flagged it explicitly:

"Position yourself as a mature and experienced candidate able to bring significant insight and expertise to the role, potentially mentoring less experienced team members. If asked about being overqualified, express enthusiasm for the opportunity to work in the public sector and contribute to impactful projects that align with your expertise."

The overqualification problem gets named, not hidden. Strategic guidance follows, including the exact framing for the inevitable interview question.


Salary Context

Before sending the CV, the candidate had salary data: low $120,000, mid $140,000, high $160,000 for this specific role at this company size in this location.

This matters because the offer negotiation happens ten minutes after the offer lands, and candidates who know the range negotiate confidently. Candidates who do not know accept what is offered.


Outreach Templates

The final output included three LinkedIn messages, personalised per audience:

  • To the hiring manager: mission-led framing. "Excited about [company]'s mission to transform public sector with AI. I bring 7+ years of full-stack experience and success in scalable AI applications. Could we connect to discuss how I can contribute?"
  • To a recruiter: qualifications-first framing. Efficient, direct, role-anchored.
  • To a team member already at the company: peer-to-peer, inspiration-led, softer ask.

Each message under LinkedIn's DM character limit. Each tailored to the platform's etiquette for the specific recipient type.

A candidate sending only the optimised CV has a tailored document. A candidate sending the CV plus a well-framed LinkedIn message to the hiring manager has a genuine conversation starter.


What This Demonstrates

Ten layers of work happened in sixty seconds. Template parseability audit. Dual-AI rewrite with self-critique. Keyword weighted scoring. Per-requirement fit analysis with mitigation. Level-of-role positioning strategy. Salary estimation. Three outreach templates.

All documented. All auditable. Nothing fabricated.

This is what we mean when we say CVPilot is not a CV tool. It is a full job application co-pilot. The wedge is not any single layer. It is the integration, and the transparency audit at every step.


For Candidates Reading This

If you are looking at an ATS rejection pattern in your own applications, three questions from this case study might help:

  1. Does your CV use the JD's exact verbs and phrases? Not close approximations. Exact ones.
  2. Are your must-have skills ordered by the JD's priorities, or by your own chronology?
  3. If the ATS flagged a gap, do you know how to frame it in an interview, or are you hoping not to be asked?

One change addresses the ATS layer. Two changes address the human reader. Three addresses the interview. All three matter.


Try It on Your Own CV

Upload your CV and paste any job description. In 60 seconds you will see the same breakdown: starting score, documented changes, keyword analysis, fit audit, positioning strategy, salary context, outreach templates. No card required for the first optimisation.

Ready to optimise your CV? Try CVPilot free and see your ATS score in under 60 seconds.

Tagged with

cv rewrite exampleats cv optimizationsenior engineer cvcv case studycv tailoring walkthroughats score improvement

Check your CV before you apply.

Upload your resume and paste the job description. Our AI scans for missing keywords, formatting issues, and gives you an instant ATS compatibility score.

No sign-up needed · Takes 30 seconds · 100% free

Disclaimer. This article is for general informational purposes only and does not constitute professional career advice or a guarantee of employment outcomes. While we strive for accuracy, individual results may vary. The content may be updated periodically and should not be relied upon as a substitute for professional guidance tailored to your specific circumstances.

Is your CV getting past ATS filters?