The average job posting got 244 applications in 2025, according to Greenhouse’s hiring data from more than 6,000 companies. That’s more than double 2022, and over the same stretch the number of recruiters per company fell by more than half. Those are global numbers, but recruiters here describe the same thing: the chairman of TASC, a UAE recruitment agency, told Khaleej Times that a professional vacancy commonly draws several hundred applications within days. Nobody reads that many CVs properly, so most get a quick skim or go through a filter first.

A lot more of those CVs are irrelevant, too. In a Robert Walters survey of Middle East employers, 42% said they’re getting more irrelevant applications and 36% put it down to AI tools. Anyone can now have AI tailor their CV to every job ad in seconds, and in the same survey 18% of professionals in the region said they use AI to mass-apply.

Take a Senior Accountant CV. One candidate says they “helped with VAT.” Another says they “filed the VAT return.” One of them may have filed it. The other may only have watched someone else do it. A keyword filter sees VAT in both and passes both. An AI screener reads two similar sentences and gives two similar scores. Either way, the person who watched can end up on the shortlist next to the person who did it.

What I built

I started this the day after Jev, TypeSafe AI’s model, launched in September. Jev can answer a narrow, specific question about a document with a confidence number attached, and the obvious thing to build with that was resume in, Jev, score out. I didn’t want to ship that. A recruiter reading a CV does it in one pass and forms one impression, so asking one model to read a CV and decide feels like the natural thing to copy. The trouble is that one verdict mixes a dozen facts together, and you can’t see which one it leaned on. So instead I broke the job brief into requirements small enough to answer by reading one part of the CV. “Knows UAE tax” is too big a question. “Did they file the VAT return?” is small enough.

It’s called Harsift now. An LLM, a general-purpose language model of the kind behind ChatGPT, turns a role brief into those requirements. Then Jev reads each CV once and answers as many small questions as the role needs, all against that one reading, at the same time. TypeSafe says adding questions barely changes the response time, and an independent test measured it flat from 1 question to 20, where that test stopped. My own runs went up to 30 questions per CV and still finished 1,000 CVs in about 30 seconds. So a role gets exactly the questions it needs instead of a number picked to fit a budget.

Senior Accountant needs 23 questions across 7 requirements. Each requirement gets asked three ways: does the CV clearly show it, does it clearly show the person hasn’t done it, and is the evidence only vague.

Asking all three matters because a CV that says nothing about a requirement is different from a CV that says the person hasn’t done it, and a vague mention is different again. The answer is met, not met, or can’t tell, and a vague claim counts as can’t tell.

Plain code reads the objective facts, like months of experience or a stated salary, and fixed rules make the decision. The rules take a CV’s answers and turn them into Shortlist, Needs a look or Not a match. The same answers give the same decision every time, and if a recruiter asks why, the reason is a list of which requirements were met. Asking a model for the final call is easier to set up, but then the decision can’t be traced to a rule or a line.

If the tool can’t tell, it sends the CV to a person along with the exact question to ask. That includes the UAE specifics: visa status, notice period, an employer NOC (the current employer’s no-objection letter), or a salary above budget. A CV often doesn’t say these, and a model guessing a notice period is worse than a recruiter asking for it. The LLM only comes in to explain a decision when someone asks for one, and every decision links to the exact line in the CV it came from.

I didn’t want to build one more tab a recruiter has to remember to check. Most recruiters already live inside an ATS, an applicant tracking system like Workable or Zoho Recruit where applications land and move from stage to stage, plus a shared inbox and WhatsApp for the replies candidates actually send. So Harsift is built to work from inside those. It picks up applicants where they already arrive and knows the company’s own context, like a salary band or a visa rule, instead of asking the same questions on every role. It also has an MCP server, the standard way an AI agent plugs into an outside tool, and a CLI, a set of commands you type into a terminal, so an AI agent can run the same screening a person would. Right now the Workable and Zoho Recruit connections are built and run in test mode, and the MCP server already lets an agent read a role’s requirements, the piles its candidates were sorted into (Shortlist, Needs a look, Not a match) and the CV line behind a decision.

Screenshot of the Harsift role page for Senior Accountant, Dubai, showing seven requirement cards, Accounting or Finance Degree, Relevant Accounting Experience, Applied IFRS, UAE Tax, Enterprise ERP, Full Financial Close and Availability, each tagged must have or timing and visas, plus role facts and a list of things the system never infers.
The Senior Accountant brief split into seven requirement cards. Each card is one small question the tool asks of every CV.

What keyword filters and AI screeners do with a CV

Keyword matching searches the CV for the words in the job advert and counts how many show up. It’s fast, cheap and easy to explain, which is why it’s everywhere. But a word in the CV doesn’t mean the person did the work, so the two VAT candidates from the top of this piece score the same.

An AI-powered ATS hands the whole CV and the whole advert to one model and lets it decide how good a fit the person is. It reads meaning instead of counting words, and at least it can give a reason for its answer. But the reason is written after the verdict, and it can’t point to the line in the CV the verdict came from.

Neither breaks “UAE tax experience” into the smaller questions a good recruiter would ask before believing it.

The same CV, three ways. The difference in the third column is that no single model is asked to make the whole decision.

One line from one CV

One CV in the test set has this line under Professional Experience: “did revenue contract check and lease ROU/liability schedule (34 leases); ECL entry also prepared and post.” The word IFRS never appears. The line is describing IFRS 15, 16 and 9 in rough English without naming any of them.

A keyword search for IFRS finds nothing in that CV, so this candidate never reaches a recruiter. Harsift read that line as hands-on IFRS work, at 97% confidence, and that one sentence is the only evidence the score rests on. The panel next to it shows how the 97% is spread across four options: direct hands-on, indirect, mention only and absent. Click the requirement and it opens the candidate’s actual PDF, scrolled to that exact line, so a recruiter can check it in seconds instead of taking a score on trust.

Screenshot of a document viewer showing a candidate’s CV with the line "did revenue contract check and lease ROU/liability schedule (34 leases); ECL entry also prepared and post" highlighted in yellow, next to a panel reading Met, 97%, with a probability distribution across direct hands-on, indirect, mention only and absent.
The Applied IFRS check on one candidate’s CV, with the exact sentence it was decided from and a 97% confidence score.

“The average job posting got 244 applications in 2025, according to Greenhouse’s hiring data from more than 6,000 companies.”

How it did on the test

Once the whole pipeline ran, I tried to break it. I built 1,000 synthetic Senior Accountant CVs for Dubai, made deliberately difficult: edge cases, conflicting information, near-matches, misleading profiles and ambiguous candidates. I wrote down the right call for each one before any tool saw it, so I couldn’t bend the answer key toward whatever a tool said later. The calls are still my own judgement.

A hundred of those CVs make up 50 look-alike pairs: two near-identical CVs where only one person actually did the work. One pair has a candidate who wrote “Knowledge of IFRS 16” in a skills list, next to another who wrote “Calculated right-of-use assets and lease liabilities under IFRS 16.” A keyword filter can’t tell them apart, because both mention IFRS 16. Only one of them applied it.

I ran the same 1,000 CVs through four screeners, most recently on 29 September on the current version, and checked each one’s call against the answer key. Keyword matching got the right call 20.5% of the time and split none of the 50 look-alike pairs correctly. Next was an AI screener set up like the AI-powered ATS above: OpenAI’s gpt-5.4-mini got the whole CV and the job ad and decided on its own. It got 45.9% right, split 15 of the 50 pairs, and put 207 people on its shortlist who shouldn’t have been there. Jev, asked the same single “is this a fit?” question, got 49.4% right and split 9 of the 50 pairs. Harsift, the narrow questions with fixed rules deciding, got 96.9% right and split all 50 pairs correctly.

My answer key put 358 of the 1,000 on the shortlist. Harsift shortlisted 349 of them and sent the other nine to Needs a look, so none of them were rejected. And nobody on Harsift’s shortlist was someone the key had ruled out.

How often each approach got the call right, measured across all 1,000 test CVs, where the right call was written down before any tool saw them. Every approach run on the same documents and the same requirements.

What the recruiter sees

Not every CV gets a clean answer. If one requirement can’t be settled from what’s on the page, the tool holds the candidate for review. A single score feels decisive, but a recruiter handed a number with no reason has to open the CV and work out what’s missing anyway. So the tool says which requirement is still open and gives the one question that would settle it.

If a hiring manager changes a requirement, every candidate is re-sorted straight away instead of someone rereading the whole stack. The facts were already pulled out the first time, so nobody has to read a CV again. Screening all 1,000 CVs costs about $0.16, because the language model only runs when there’s language work to do. The one-model AI screener cost about $3.52 for the same 1,000, roughly 22 times as much.

Screenshot of a candidate list under the Needs a look tab, with a candidate open and a banner reading "one answer could move this candidate to shortlist, experience is the only unresolved requirement," above five requirement rows each marked Met or Can’t Tell.
A candidate held for review because one requirement, relevant experience, can’t be settled from the CV. The exact question that would settle it is shown.

Where it falls short

Harsift got 31 of the 1,000 calls wrong. None of them are on the shortlist, and none of the 358 people my answer key wanted were rejected. Nine of those 358 went to Needs a look instead of the shortlist, which costs a recruiter one quick check each. Seven CVs the key closed as Not a match also went to Needs a look. The misses that matter most are the other 15: CVs the key said a person should look at, which Harsift closed as Not a match, so a recruiter would only see them by opening that pile.

This covers one role in one market. The 1,000 CVs are synthetic, built by me, and they’re also the set I built it against. I wrote the answer key too, so the test only checks what I thought to check, and a hiring manager arguing over a real shortlist under a deadline could catch things I never wrote a question for. It also hasn’t screened a live role yet, with the Workable and Zoho Recruit connections still in test mode. A live role is the next test.

If you want to see it, it’s at harsift.byhars.com, with the demo video and a waitlist.