← All posts
·7 min read·Chris

How a CV match score should actually work.

Keyword matching is 2015 thinking. A real job score breaks down across six dimensions, weighted by what actually predicts an interview. Here's the model behind Flint and why each weight is where it is.

If a job tool tells you "this role is an 85% match", your next question should be: 85% of what?

Most tools won't say. The matching algorithm is a black box, the score is a vibe, and the actual computation is a keyword overlap between your CV and the JD. You hit reload, a new role appears with an 82%, and you can't tell whether the 3-point difference means anything or nothing.

This is the single most common complaint about LinkedIn Premium's "Top Applicant" ranking, Teal's matching score, JobScan's ATS grade, and half the other scoring tools on the market. The number without the breakdown is a party trick, not a tool.

I spent the last few months building Flint's scoring model. Here's how it's broken down, why the weights are where they are, and how to read a score in practice.

The six dimensions

Every job you see on Flint gets six sub-scores that roll up into a total. Each dimension answers a specific question.

Title Match (30%) How closely does the job title match the roles you're aiming for?

Gets the highest weight because title is the single strongest predictor that a role is worth your time. A "Senior Product Manager" role against a candidate targeting "Product Manager" and "Senior PM" should score near-100%. The same candidate against a "Product Marketing Manager" scores lower. Title is not a keyword match; it's a semantic match against your declared target roles and the seniority band they imply.

Skills Overlap (25%) How many of your skills appear in the listing?

Not just keyword count. The skill has to be surface-able in the job description as something genuinely required, not just mentioned. A JD that says "React experience a plus" gives less credit than one that says "3+ years React" for a React developer. The weight at 25% reflects that skills are the strongest second signal after title. Employers hire on title + skills, roughly in that order.

Salary (15%) Does the advertised salary meet your minimum?

Capped at 15% because salary is binary for many candidates (yes, it meets my floor; no, it doesn't) and unclear for many postings (no range listed). When the salary isn't listed, the dimension scores at 50%. A "we don't know" rather than a penalty. When it is listed and falls below your minimum, the dimension scores low. When it's above your maximum, the dimension still scores high (you'll take more money). Salary is rarely the make-or-break for interest the way title is.

Location (15%) Is this job where you can actually be?

Home city scores 100%. Major cities in your home country score 85%. Same-continent remote scores 90%. Another-continent remote scores 60%. In-office in a city you don't live in scores low. The weight matches salary at 15% because for remote candidates this matters less, and for city-locked candidates it matters much more. The dimension's importance varies by profile but the model's weight is an average.

Seniority (10%) Does the level match yours?

Lower weight because seniority is mostly encoded in the title (and the skills list implies years of experience). A "Staff Engineer" posting applied against a junior candidate scores low on title and seniority together. The reason seniority gets its own dimension rather than folding into title: sometimes the title is ambiguous ("Engineer" could be anything), and the JD specifies "5+ years of experience" that the title doesn't. Seniority catches those cases.

Industry (5%) Does the industry match your stated preferences?

The lowest weight because in 2026 most knowledge-worker roles transfer across industries. A Senior PM who's built fintech products will usually score well on ecommerce roles too, because the product skills dominate the industry context. Industry still matters (you don't want a gambling job if you've said you'd prefer not to work in gambling), but it's a tie-breaker, not a primary signal.

Why these weights, not others

The weights aren't arbitrary. They come from two places:

Recruiter eye-tracking data. The Ladders 2018 study (re-confirmed in several follow-ups through 2024) mapped exactly where a recruiter's eyes go in the 7-11 seconds they spend on a CV: current title, current company, dates, previous title, previous company, dates, education. Title dominates. Skills comes second because the JD calls out specific requirements. Everything else is qualifier.

Interview rate data from recent applications. Most "why didn't they pick me?" answers we can see in industry surveys point to a title gap or a skill gap. Salary mismatches show up as a small fraction. Location is material only for in-office roles in specific cities. Industry rarely lands in the top three reasons.

Weighting something higher than its actual predictive strength doesn't make you score jobs better. It distorts the ranking toward false positives. Title 30% is where the data sits.

The freshness multiplier

On top of the six dimensions, there's one more thing: freshness. A job posted three days ago with a 78% match sorts higher than a job posted 60 days ago with an 82% match, because the stale-score-after-freshness-penalty tells you which one is more worth applying to.

Freshness decay starts at 14 days and floors at 80% for anything older than 45 days. A 100% match on a 60-day-old posting is treated as an 80% effective match for ranking purposes. It's deliberately gentle (you can still see old roles), but it stops the ranked list being flooded by ghost-posting evergreens.

How to actually read a score

The specific numbers mean something concrete once you know the model.

  • 85%+ = title and skills are both strong, salary/location either match or are irrelevant, no major miss. Apply.
  • 70-85% = good fit on the primary dimensions, one thing is weak (probably salary, location, or seniority). Worth applying if you can tolerate the weak dimension. Open the breakdown and look at the bars.
  • 60-70% = one primary dimension (title or skills) is off. Only worth applying if you can see a specific reason to pivot there. The breakdown tells you which one.
  • Below 60% = don't apply. The keyword-match tools will sometimes still show you these roles. The scoring tells you not to waste the cover letter.

The point of the breakdown is that you never get surprised by a score. You see a 76% and the breakdown says "title 90, skills 85, salary 50, location 100, seniority 80, industry 40." Right, the salary is half of what I want and the industry is wrong. Skip.

The case against a single match number

A lot of tools show one number. Jobscan's "ATS match" percentage. Teal's fit grade. LinkedIn's Top Applicant badge. The problem with a single number is it hides the why. Two jobs with the same 78% score can mean very different things. One's a title-skill sweet spot in a weaker salary market, another is a salary/location match with a title gap. You should apply to them differently, tailor differently, and reject them differently.

Flint shows the overall score plus the six bars on every match. Pro users see the exact sub-scores. Free users see the bars but not the numbers. The pattern is: always show the why, then show the how-much. Anyone selling you a match score without the breakdown is selling a party trick.

Where the model is still soft

Honestly, a few places.

Company quality isn't a dimension. It should be. A 75% match at a great company is often worth more than an 85% match at a poor one. This is a 2026 roadmap item.

Culture fit isn't a dimension either. It's hard to signal from a CV and a JD. We could add explicit "preferred industries" and "avoid industries" signals and up the industry dimension's weight, but that's gated on better data.

Custom weights on Pro already let you adjust the defaults. If you care more about salary than the average candidate, move salary from 15% to 25% and something else drops. Most people use the defaults; the feature exists for edge cases.

The model isn't perfect. It's transparent, which is the part that matters. You can see the dimensions, adjust the weights, argue with the score. Keyword-based matchers don't give you that option.


Try Flint free. Every job you see is scored and broken down. No black box.

Stop scrolling. Start scoring.

Flint covers every UK professional sector and scores every role against your CV. Upload once and see what actually fits.

Try Flint free