Sortinghat

Natural Language Candidate Search: Five Real Queries, and Why Vague Ones Fail

Real searches run against a live staffing database, the results they returned, and the single reason most natural language queries disappoint the person typing them.

By , Founder9 min read

Natural language candidate search means describing the person you want in a sentence and getting a ranked result, with no operators and no filter builder. It works. It also fails in one specific and predictable way, and the failure is entirely the fault of the person typing.

Below are five real queries our customers run, the results two of them returned, and the query that disappoints people most often, shown alongside the version that works.

Key takeaways

  • Compound constraints are where it earns its keep. Skill, seniority, location, institution and domain in one sentence is trivial to say and painful to write as a Boolean string.
  • Vague queries return vague results, in any system. "Backend engineer in Bangalore with four years" is not a specification. It is a category.
  • The search runs on your own database, not the open web. That is a deliberate limit, and it changes what the tool is for.
  • The sourcer skill shifts from syntax to specification. Describing a good profile precisely is now the scarce skill, and it is far easier to teach than Boolean.
71
Candidates returned for "engineering with two to four years of experience in Bangalore"
Live search
75
Candidates returned for "software engineer with 2 to 4 years of experience in Bangalore"
Live search
Own DB
Search scope. Your records only, not external sources
By design

Five natural language candidate search queries recruiters run

These are typed as sentences. No operators, no nesting, no field selection.

engineer in Bangalore with three to five years of experience and from a tier one college
business development executive with five years of experience, based in Mumbai, must have inside sales and B2B SaaS sales experience
recruiter who has worked in the fintech space and has good experience hiring for fintech
criminal lawyer who has worked with top law firms in Mumbai, minimum 15 years experience, strong litigation background, NLU graduate
researchers with experience in voice AI and good experience working around ASR, TTS and LLM models, graduated from IITs only

Look at the fourth and fifth. Each contains five separate conditions, two of which are not keywords at all. "Top law firms in Mumbai" requires knowing which firms those are. "Good experience of litigation" is a judgement about depth, not a term that appears in a document.

Writing that as a Boolean string means enumerating the firms by hand, guessing at the phrasing lawyers use to describe litigation work, and accepting that anyone who phrased it differently is invisible to you. The fifth query has the same problem with "voice AI", which is a field rather than a keyword, and which people on the ground describe as speech, ASR, TTS, or by naming the specific models they worked on.

Sortinghat search: a natural language query for engineers in Bangalore returning 71 ranked candidates
Fig 1One sentence in the search bar, 71 ranked candidates out. The filter panel on the left fills itself in from the query.

What each query is actually asking for

QueryThe hard partWhy Boolean struggles
Engineer, tier one college"Tier one"Requires a list of institutions that nobody maintains and everyone disagrees on
BD executive, B2B SaaSTwo sales motions at onceInside sales and B2B SaaS rarely both appear as stated terms
Recruiter, fintechHiring for fintechThe domain is in who they placed, not in their own job title
Criminal lawyer, Mumbai"Top law firms"An entity judgement, not a string match
Voice AI researcherASR, TTS, LLM togetherThe field has four vocabularies and candidates use different ones

The candidate search query that disappoints people

Here is the one that comes up constantly.

backend engineer in Bangalore with four years of experience

Three conditions, all reasonable, and the results are underwhelming. Not because the search failed, but because the query described a category rather than a person. There are a great many backend engineers in Bangalore with four years of experience, and nothing in that sentence says which of them you want.

Now the same intent, specified properly:

backend engineer in Bangalore with four to five years of experience in a MEAN stack and solid AI stack work, should know databases and AWS, from NITs, IITs or IIITs, with fintech company experience

Same role. Completely different result set, because now the system has something to rank against. The second query has seven conditions and three of them are the ones you would actually reject someone for.

The search did not get better. The question did.

This is the single most useful thing to teach a new sourcer, and it takes one session rather than a quarter. It is also the reason the scorecard matters: a recruiter who has already defined the criteria has, in effect, already written the query.

Four elements every candidate search query needs

Every query that works contains these. Every query that disappoints is missing at least two.

ElementWeak versionVersion that works
Capabilitybackend engineerMEAN stack, AI stack, AWS, databases
Levelfour yearsfour to five years
Constraintin BangaloreBangalore, from NITs, IITs or IIITs
Contextfintech company experience

The fourth row is the one people leave out, and it is usually the one that decides the shortlist. A backend engineer from a fintech and one from a services company are different hires for most roles, and the query has to say so.

Level is worth a note too. A range beats a number. "Four years" excludes the person with three years and eleven months who is exactly right, and includes nobody you were not already going to see.

Where natural language search does not help

Stating this plainly is what makes the rest of the post credible.

  • Exact-match requirements. A specific certification number or a named employer is a filter, not a description. Use the filter.
  • Hard numeric cutoffs. "Exactly 5 to 7 years" is a range filter. "Experienced" is a description. Do not use the second when you mean the first.
  • Negation. "Not from a services background" is interpreted inconsistently. State the positive instead.
  • Very long queries. Past a certain length, extra clauses dilute rather than sharpen. Two precise sentences beat one paragraph.
Sortinghat search returning 75 candidates, with the Move to Job panel open listing six open roles
Fig 2A near-identical query returning 75 rather than 71. Selected candidates move straight onto an open role from the result set.

Searching your own database, not the open web

Worth being explicit, because it sets expectations correctly.

This search runs across your own records. Candidates you have sourced, screened, submitted, placed or rejected over the years. It does not search the open web and it is not a substitute for a sourcing licence when you genuinely need someone your firm has never encountered.

That constraint is a feature more often than it is a limitation. Searching your own database costs nothing per search, the people in it have usually dealt with you before, and every search makes the pool more current. External sourcing carries a per-seat licence cost and starts cold every time.

The right sequence is to exhaust the first before paying for the second. In one firm's data, that shift took job portal spend from roughly $100 per role to $60, which we cover in the talent pool audit.

What changes for the sourcer

The scarce skill moves.

A sourcer who could write a five-level nested Boolean string had something genuinely rare. A sourcer who can describe exactly what a good profile looks like, including the things that never appear on a CV, now has the rare skill. The second is more useful, transfers across tools, and can be taught to a new joiner in a session rather than a quarter.

The practical training is one sentence: name the capability, the level, the constraint and the context, every time. Everything else is refinement.

Semantic search versus Boolean, side by side

Worth understanding the difference in mechanism, because it explains both the strengths and the failure cases above.

Boolean search matches strings. You give it terms and logic, it returns documents containing those terms in that arrangement. It is exact, it is predictable, and it is blind to anything phrased differently from how you phrased it.

Semantic search matches meaning. It represents both the query and each profile as positions in a space where related concepts sit near each other, then ranks by proximity. "Voice AI" lands near "speech recognition" and "ASR" without anyone maintaining a synonym list, which is why the fifth query above works at all.

DimensionBooleanSemantic
Matches onExact strings and logicMeaning and proximity
SynonymsYou maintain the listHandled without a list
Judgement conditionsCannot express them"Tier one", "top firms", "early-stage"
PredictabilityTotal. Same string, same resultRanked, so the cut-off is a judgement
Exact requirementsPreciseUse a filter instead
Learning curveWeeks to monthsOne session

The practical answer for most desks is both, used for different jobs. Describe the person in a sentence, then apply hard filters for the things that are genuinely binary: notice period, location, work authorisation, rate band.

Common natural language search mistakes

Five patterns that account for most of the disappointment we see.

Writing the job title instead of the person

"Senior software engineer" is what the requisition says. It is not what you are looking for, and it is the single most common weak query.

Stacking too many clauses

Past roughly twenty-five words, additional conditions dilute the ranking rather than sharpening it. If the requirement genuinely has ten conditions, split it into two searches and compare the overlap.

Using a number where a range belongs

"Six years" excludes the person with five years and ten months. Ranges are almost always what you actually mean.

Describing the company instead of the candidate

"Someone for a Series B fintech" tells the search nothing about the person. Convert it: what does someone who succeeds at a Series B fintech look like on paper?

Forgetting availability entirely

A perfect profile on a six-month notice is not a candidate for a role closing in four weeks. Availability belongs in the query, not in the disappointment afterwards.

Frequently asked questions

What is natural language candidate search?

Search that takes a plain-language description of the person you want and returns ranked matches, without Boolean operators or manually built filters. It interprets meaning rather than matching keywords, which lets it handle conditions like company stage or institution tier that never appear as literal terms on a CV.

Is natural language search better than Boolean search for recruiting?

For compound queries and conditions that are judgements rather than keywords, yes. For exact-match requirements such as a specific certification number or a named employer, a filter remains more precise. Most real recruiting searches are the first kind.

Why is my natural language candidate search returning poor results?

Almost always because the query describes a category rather than a person. A query like 'backend engineer in Bangalore with four years of experience' has three conditions and thousands of matches. Add the specific stack, the institution tier and the domain context, and the result set changes completely.

Does natural language search cover LinkedIn and job boards?

In our case it searches your own database only. External sourcing is a separate motion with a separate licence cost, and the sensible order is to exhaust what you already own before paying to search elsewhere.

Do recruiters still need to learn Boolean search?

It remains useful on platforms that only support it, so it has not disappeared. It is no longer a sensible criterion for hiring a sourcer, because describing a profile precisely is now the scarce skill and it is far quicker to teach.

How do you write a good candidate search query?

Include four elements every time: the capability in detail, the level as a range, the hard constraints such as location and institution, and the context you would actually reject someone over, such as industry or company stage. Queries missing two of these are the ones that disappoint.

How to test this on your own data

Take your last ten filled roles. For each, write one sentence describing the person you actually placed, using all four elements. Run it.

Then check whether the person you placed appears near the top. It is the only benchmark worth anything, because you already know the right answer, and it takes an afternoon rather than a pilot.

Run five of your own queries

Bring five roles you are working now. We will run them as sentences against your own database and show you what comes back.

Book a demo

Founder of Sortinghat, an AI-native ATS and CRM for staffing, search and RPO firms. Writes about recruiter capacity, sourcing economics and what actually changes when AI reaches a delivery desk. More about the author