Scoring a CV 0–100: The Problem With Making Judgement Reproducible

Why the same CV can get different scores — and how we made Cvaluate's scoring consistent and explainable.

MF

Marcus Feld

ML/Engineering · · 7 min read

Users want a number. Investors want a number. Product managers, reluctantly, also want a number. A single resume scoring algorithm from 0 to 100 is easy to display and easy to misunderstand. The engineering challenge is not calculating a score — it is making judgement reproducible when the underlying model is probabilistic, the input PDF might parse differently on Tuesday, and "good" means something different for a graduate nurse than for a staff engineer.

Why the same CV gets different scores

Large language models sample outputs. Without controls, two identical requests can yield different emphasis — one run flags weak bullets, another praises structure and docks keywords. Temperature settings, model version drift, and even prompt ordering affect results. That is unacceptable for a product where users compare scores over time ("I went from 58 to 71 after edits").

Parsing variance is the other culprit. Upload the same file exported twice with imperceptible layout shifts and extraction can change. Keywords move; dates attach to the wrong role. Any calibrating AI scores effort must stabilise inputs before stabilising outputs.

Rubric design beats vibes

We abandoned early attempts where the model produced "an overall impression". Instead, prompts require scores per dimension with short justifications tied to evidence:

  • Parseability — can software read your sections, dates, and contact details correctly?
  • Relevance — alignment with the target role or job description when provided.
  • Impact — quantified outcomes, scope, and progression signals in bullets.
  • Clarity — readable structure, appropriate length, consistent formatting.

The overall 0–100 score is a weighted composite — not an independent guess. Users see the breakdown in the product and in our explainer on what a good ATS score means.

Engineering for reproducible LLM scoring

Practical controls we use for CV score consistency:

  1. Structured numeric fields — each dimension is a bounded integer in JSON schema, not prose buried in a paragraph.
  2. Low temperature on scoring calls — creativity is for rewrites, not numbers.
  3. Deterministic preprocessing — normalised text hashes so we know if the input truly changed.
  4. Regression fixtures — golden CVs with expected score bands; CI fails if drift exceeds thresholds.
  5. Grounding checks — justifications must reference extracted spans, reducing arbitrary penalties.

Perfect bitwise reproducibility across model updates is unrealistic. We version the scoring rubric and note when changes ship so users are not chasing ghosts.

Explainability is a feature, not a disclaimer

A naked number triggers anxiety. "64" could mean missing keywords or a broken parse — wildly different fixes. The score breakdown and requirements matrix translate judgement into a to-do list: fix parsing first, then mirror must-have skills, then strengthen bullets.

Explainability also constrains the model. When it must justify a dimension score in one sentence with evidence, it is harder to hallucinate a dramatic weakness for drama.

Scoring with and without a job description

Without a JD, relevance scores against inferred role level and general employability signals — weaker signal, wider bands. With a JD, keyword and requirements matching dominate. Prompts treat missing must-haves as high leverage gaps. We warn users that comparing scores across different JDs is like comparing exam marks from different subjects.

What we will not claim

We do not promise that a score of 80 yields interviews. We do not tune rubrics to flatter users. We do not show false precision — "73.482" — when the underlying measurement is ordinal judgement compressed to integers. Honesty about limits builds more trust than fake science.

For how scores interact with prompts and hallucination risk, see our prompt design write-up and hallucination prevention. For the hiring context, our guide to AI in hiring explains how employers rank candidates differently.

How to use your score

Treat the 0–100 figure as a progress metric on your own CV, not a league table against strangers on Reddit. Re-run after substantive edits; ignore single-point noise. If parsing scores low, fix the file before optimising verbs.

Ready to see the breakdown on your document? Run your CV through Cvaluate's free analysis — scores come with reasons, not just a number.

Frequently asked questions

Why does my CV score change between runs?
All LLM-based tools have some variance. Cvaluate minimises it with fixed rubrics, structured scoring fields, and low randomness settings. Large swings usually mean parsing differences or content changes — not normal noise.
What does Cvaluate's 0–100 score measure?
A weighted combination of parsing quality, keyword and requirements fit (when a job description is provided), evidence of impact, and presentation clarity. The breakdown shows which dimension moved.
Is a CV score the same as an employer's ATS score?
No. Employers use proprietary configurations. Cvaluate's score approximates how well your CV survives automated screening — a diagnostic for you, not a universal grade.
Can you make judgement fully objective?
Not entirely. Recruitment involves taste and context machines do not fully capture. We aim for consistent, explainable scoring — not false precision.

See how your CV scores — free

See your score breakdown by dimension — know what to fix first with Cvaluate.

Analyse my CV

Free to try · Sign in in one click · No credit card