Blog

June 24, 2026 · Fedor Erashev, Founder, Gemsift

Why keyword filters keep rejecting good candidates

Why keyword filters keep rejecting good candidates

A recruiter told me something a few weeks ago that I keep thinking about. She spent two weeks sourcing for a role. The person she eventually hired had applied through the job post on day one. Her system had ranked them near the bottom of the pile, and she only found them because one evening she got bored and scrolled past the first page of results.

That gap, the good candidate who was there the whole time and almost never got seen, is the reason I started building Gemsift. So I want to walk through why it happens, because once you see the mechanism it is hard to unsee.

What a keyword filter is actually doing

When you search a pile of applicants by keyword, or let an ATS rank them, the tool is matching text on the page. That sounds reasonable until you look at what it rewards.

It rewards exact words. Search for "React" and the candidate who wrote "React Native", or buried the library inside a project description, drops down the list. It rewards job titles, so the person who did the work under a different title, or at a small company where everyone did a bit of everything, looks weaker than they are. And it rewards resumes that are written to be searched, which means a strong operator with a plain, honest resume scores worse than someone who stuffed the right words in.

None of that measures whether the person can do the job. It measures whether they described themselves in the words the filter expected. Those are not the same thing, and the difference is where good hires get lost.

The people who slip through

It is always the same kinds of candidates. Career changers, whose real skills carry over but are not labeled the way the job is. People with non-linear paths, contractors, startup generalists, whose titles undersell what they actually did. And the quiet ones who are just bad at writing resumes, which, in my experience, is a lot of genuinely good people.

These are often the candidates you would be glad you called. They are also exactly the ones a keyword match is built to push down.

Why nobody notices

Here is the part that makes it expensive. You never get told. There is no alert that says you just passed on someone great. They simply do not appear, so the miss never lands in any report you look at. You close the role, or reopen it and pay for more sourcing, and the person who could have filled it is still sitting in the pile you stopped reading on page one.

What I think screening should do instead

The fix is not a smarter filter. It is to stop filtering people out and start ranking them, then actually look at who got surfaced.

That is the bet behind Gemsift, and it is why it ended up being an ATS rather than a filter bolted onto one. Instead of cutting everyone below a keyword line, it re-reads your whole candidate base against each new role and tells you who is worth a call, including the people who look weak on the surface. A few things matter for that to be useful:

It has to read meaning, not words. It should know that "React Native" implies React, and that leading a team of six at a startup means you managed people.

It has to surface the gems on purpose. A low keyword match but a high actual fit should get flagged, not buried.

It has to explain itself. Every candidate comes with the reasons: what matched, what is missing, what carries over. A score with no reasoning is just a different black box, and you should not trust it.

And it has to check the whole roster. Someone who is a so-so fit for the job they applied to might be excellent for another role you have open. If your tool only looks at one job at a time, you lose them again.

The recruiter still decides everything. I am not trying to take judgment out of hiring. I am trying to make sure the good people actually reach your judgment before you run out of time.

If you want to lose fewer of them

A few things you can do today, tool or no tool. Rank your pile instead of hard-rejecting on keywords, and read the middle, not just the top. Read for what someone did, not what their title was. Go back through the rejected pile before you reopen a role. And if you do use software, use the kind that shows its work, so you can overrule it when it is wrong.

If you are getting more applicants than you can read by hand, that is the moment this stops being a nice-to-have. The first pass is where the good candidates quietly disappear, and it is the one part of screening worth handing to something that reads the whole pile instead of the first page.

A few questions I get

Do keyword filters and ATS really reject good candidates? Yes, all the time. They match on exact keywords, titles, and formatting, not on whether someone can do the job, so career changers and people who undersell on paper get cut even when they are strong.

What is resume triage? It is ranking the whole pile by fit and surfacing who is worth a call, with the reasoning shown, instead of rejecting everyone below a keyword line.

How is this different from an ATS? An ATS tracks applicants. Triage reads and ranks them, including the strong ones a keyword search misses, and tells you why.


I built Gemsift to do exactly this: the AI-native ATS for agencies whose current ATS has become a filing cabinet. Move in with one file and it re-reads your whole candidate base against each new role, returning a client-ready shortlist with a plain-English reason per pick, including the gems a keyword filter would bury. Start free, no card.