No black box

How our ATS score is actually calculated

Most resume checkers hand you a number and ask you to trust it. Ours is a weighted match rate between two documents — your resume and the job ad — and the whole method is on this page. You can recompute any part of it by hand.

Free — building your resume and your first PDF export are free too.

What is an ATS?

An Applicant Tracking System is the software an employer uses to receive and filter applications. It pulls the text out of your resume and matches it against what the job ad asks for. On a popular vacancy, a recruiter may only ever open the applications the ATS puts in front of them.

So a resume can be rejected for two quite different reasons: the software could not read it properly, or it could read it and did not find what the ad was asking for. Both are fixable, and neither has much to do with how good you are at the job.

What most resume checkers do

Broadly, two things. Some count keywords: they extract words from the ad, look for them in your resume, and return the percentage found. Simple and checkable, but it treats a required certification and an incidental adjective as worth the same, and it misses anything you wrote in different words.

Others ask an AI to grade your resume. That reads more intelligently — and it is an opinion. Ask twice and you can get two numbers. A model asked whether a resume is a good match tends to be encouraging, and an encouraging score is worse than no score, because you act on it.

We use AI for the part it is genuinely good at, and arithmetic for the part that has to be right.

How we do it

  1. 1. AI proposes the keywords — and gets no further say

    A model reads the job ad and proposes the phrases that look important, tagging each as a hard skill, qualification, title or soft skill, and as required or preferred. That is a judgement call and models are good at it.

  2. 2. Every proposal is verified against the ad

    Each phrase is then checked against the job ad itself. If it does not literally appear there, it is thrown away — whatever the model claimed. A keyword that is not in the ad is not an ATS keyword, and cannot be allowed to move your score.

  3. 3. Matching is done in code

    Surviving keywords are matched against your resume text — exactly, or in different wording. No model is asked whether you “have” a skill.

  4. 4. The score is arithmetic

    Weights are applied and the match rate is computed. The same two documents always produce the same number.

Which models we use, and for what

Two models are involved in an ATS check, and neither of them decides your score.

GPT-5.6 (Luna)

Reads the job ad and proposes the keywords

It tags each phrase as a hard skill, qualification, title or soft skill, and as required or preferred. Every proposal is then verified against the ad itself before it can count — so the model’s judgement shapes what gets looked at, never what the number turns out to be. GPT-5.2 stands in if it is unavailable.

Claude Sonnet 4.6

Writes the “Should I apply?” read

It sees your resume, the job ad and the finished ATS report, and gives you a verdict with its reasoning. This one is a judgement, and we say so — it is advice you can argue with, not a measurement.

The matching and the arithmetic in between run in ordinary code, which is why the same resume and the same ad always produce the same score.

The calculation, in full

Every keyword carries a weight

Because a required certification is not worth the same as the word “collaborative”.

Kind of keywordWeightExample
Hard skill3Kubernetes, SQL, Anaplan
Qualification3CPA, PMP, MSc
Job title2Product Manager
Soft skill1stakeholder management
Everything else1hybrid, Amsterdam

Then two adjustments

  • Required counts double. If the ad marks something as a requirement rather than a preference, its weight is multiplied by two.
  • Different wording earns half. If you demonstrably have it but not in the ad’s words, you earn 0.5 of the weight. A human recruiter would see it; a literal ATS might not — so it is worth real credit, but not full credit.

The formula

score = 100 × ( weight of exact matches + 0.5 × weight of different-wording matches ) ÷ weight of all job-ad keywords

A worked example

An ad requires SQL (hard skill, required → 3 × 2 = 6) and asks for Power BI (hard skill, preferred → 3) and stakeholder management (soft skill, preferred → 1). Total weight available: 10.

Your resume says SQL outright (earns 6), says “Power BI dashboards” (exact, earns 3), and describes presenting to the board without ever using the phrase stakeholder management (different wording, earns 0.5).

Score = 100 × (9 + 0.5) ÷ 10 = 95.

What the number means

  • 80+ — strong match
  • 60–79 — good match
  • 40–59 — partial match
  • Below 40 — weak match

A perfect 100 is rarely worth chasing. It usually means the resume has been packed with the ad’s exact words at the cost of reading like a person wrote it — and a person is who decides next.

What you get when you run an ATS check

The score is the smallest part of it.

Your score, and the arithmetic behind it

A weighted match rate with the working shown — every keyword, its weight, whether it was required, and the points it did or did not earn.

Exact match, different wording, missing

Three lists, not one. "Different wording" matters: a human recruiter will see it, a literal ATS may not — so it earns half credit rather than none.

What to fix first

Each gap carries the points it returns and the effort to close it — reword, expand or acquire — sorted so ten minutes of work is visible above six months of it.

How your bullets read to a human

Keywords get you past the software. We also flag bullets that describe duties rather than achievements, and roles that never say what actually changed.

Should I apply?

An honest read from your side: strong fit, worth a stretch, or not a fit — with the reasoning, so you can disagree with it.

The decisions behind the numbers

Three deliberate choices shape every report. They are all arguable, so they are worth stating rather than burying.

Verify, don’t trust

AI is used where judgement helps and checked everywhere it could invent. A keyword that is not in the job ad is discarded. A skill suggestion that is not supported by something you wrote is discarded. It is better to say less than to say something you would have to defend in an interview.

Effort belongs next to impact

A gap you can close by rewording a line and a gap that needs a qualification are not the same problem. Every gap is labelled reword, expand or acquire, and gaps are split into high and low impact at the average points-per-gap for that ad — so the scale fits the job in front of you rather than a fixed rule that suits some ads and not others.

The candidate sizes up the job

Most tools ask whether you are good enough for the job. Should I apply? asks whether the job is worth your application — your time, your energy, the hour it takes to tailor a resume properly. The three verdicts are strong fit, worth a stretch and not a fit, and a “not a fit” is a verdict on the role, not on you.

The decision models behind it

None of this is invented. Each part of the report applies an established decision-making model — we have simply pointed them at a resume and a job ad.

Weighted scoring model → your ATS score

The classic method for comparing options against criteria of unequal importance: give each criterion a weight, score each option against it, sum, and divide by the total available. Here the criteria are the job ad’s keywords and the option being scored is your resume. It is the same arithmetic a procurement team uses to choose a supplier.

Impact/effort matrix → what to fix first

Also called an action priority matrix: plot each task by the value it returns against the work it costs, and do the high-value, low-effort ones first. Your gaps are placed on exactly that grid — points returned against reword, expand or acquire — with the split between high and low impact set at the average points-per-gap for that particular ad, rather than a fixed threshold that would suit some jobs and not others.

SOAR → how your bullets read

Situation, Opportunity, Achievement, Result — a rule recruiters use. Only the last two belong on the page: what you did, and what changed because of it. The first two are what you say in the interview. We flag bullets that describe a duty instead of an achievement, and roles where nothing measurable is claimed at all.

Go / no-go triage → “Should I apply?”

A three-way call rather than a yes or no, because “probably not, but it would stretch you” is a real and useful answer. Applying properly costs you an hour; the model exists to help you spend that hour where it pays.

“Should I apply?”

It started as a way to spot fake job ads. Users told us the more useful question was whether the job was worth their time at all — so that is what it answers now.

It reads your resume, the ad and the ATS report together, and gives you one of three answers with the reasoning attached:

  • Strong fit — you would clear their bar, and the role suits your level and the direction you are heading.
  • Worth a stretch — you have the core of it, and the job would move you into new territory.
  • Not a fit — the gap is real, or the role sits below your level, or it points away from where you are going.

You are free to disagree with it. That is rather the point of writing the reasoning down.

Frequently asked questions

What is an ATS?

An ATS (Applicant Tracking System) is the software most employers use to receive and filter job applications. It reads your resume, extracts the text, and matches it against the requirements in the job ad. On a popular vacancy a recruiter may only ever look at the applications the ATS surfaces, so a resume that parses badly or misses the ad's language can be filtered out before a person sees it.

How is the CopilotResume ATS score calculated?

It is a weighted match rate, not an opinion. Every keyword taken from the job ad carries a weight: hard skills and qualifications count 3, job titles count 2, soft skills and everything else count 1. Anything the ad marks as required counts double. An exact match earns full weight; a match in different wording earns half. The score is then: 100 × (weight of exact matches + 0.5 × weight of different-wording matches) ÷ weight of all job-ad keywords. Because it is arithmetic on two texts, you can recompute any part of it by hand.

Does an AI decide my ATS score?

No. AI proposes which phrases in the job ad look important, but it never decides the score. Every proposed keyword is then verified against the job ad itself: if the phrase does not literally appear there, it is discarded, whatever the model claimed. Matching against your resume and the arithmetic that produces the number are done in code. That means the score cannot be inflated by a model being agreeable.

What is a good ATS score?

On CopilotResume, 80 and above is a strong match, 60 to 79 is a good match, 40 to 59 is partial and below 40 is weak. A perfect 100 is rarely the goal: it usually means the resume has been stuffed with the ad's exact words rather than written for a human. Aim to close the high-impact gaps and leave the rest.

Why does the report tell me the effort as well as the score?

Because a list of fifteen missing keywords does not tell you what to do first. Each gap is labelled by what it would actually cost to close: reword (all the words are already on your resume, just not in the ad's order — a one-line edit), expand (some of it is there and needs spelling out) or acquire (none of it is there; a genuine gap you would have to go and learn). Gaps are then sorted by the points they return against that effort, so "four rewordings, ten minutes, +18 points" sits visibly above "one certification, six months, +6".

What does "Should I apply?" do?

It answers the question from your side rather than the employer's. Using your resume, the job ad and the ATS report, it gives one of three verdicts: strong fit (you would clear their bar and the role suits your level and direction), worth a stretch (you have the core of it and the job would move you into new territory), or not a fit (the gap is real, or the role is below your level or pointed away from where you are heading). A "not a fit" is a judgement about the job, not about you.

Do I need to pay to run an ATS check?

No. The ATS check is free, and so is building your resume. Your first PDF export is free as well.

Ready to land your dream job?

Join all the job seekers who have successfully built their resumes and advanced their careers with CopilotResume.

Transparent and cost-effective pricing plans.