ReleaseInsight · On RadarHabr AI→ original

Developer Builds an LLM 'Sniper' for hh: 99% of Scorings Were Junk, a Token Gate Cut 78%

The author built a system that checks fresh job postings on hh every minute, filters them with cheap rules, and hands only the remainder to an LLM. Over 19 days it sifted through 13,648 postings and sent 40 applications. The main lesson: 99% of 5,733 scorings turned out to be junk, and three quarters of that junk is visible from the title alone. The token gate now cuts 78% of postings before they reach the model.

AI-processed from Habr AI; edited by Hamidun News
Developer Builds an LLM 'Sniper' for hh: 99% of Scorings Were Junk, a Token Gate Cut 78%
Source: Habr AI. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceHabr AI ↗
Editor-in-Chief
Key metric #1The title-based token gate removes 78% of postings before the LLM
Key metric #2The cover letter is static; a guard checks numbers and links against a whitelist
Key metric #3A score of 45–54 goes to a Telegram "parking" queue for manual decision

On a popular hh job posting, bots flood in applications every four seconds. The author measured it: 264 applications in the first 18 minutes. Your place in the HR queue is determined not by your résumé but by whether you got in during the first minute. The developer responded the usual way, with automation, but not with a "script that applies to everything": HR blacklists people for that, and template letters are spotted from a mile away.

How the Sniper's Minute Works

The system runs as a single process ticking once a minute. First comes the hh search (6 queries) and deduplication. Then a prefilter built on cheap rules: does the title contain a role token, are there no stop words such as "doctor" (врач) or "smm", is the salary not below the floor, and is it not a junior role. For the survivors, the full posting is downloaded, and the LLM rates them from 0 to 100 against the author's profile, with reasons.

Then there are three branches. A score of 55+ and a posting fresher than 10 minutes: automatic application with a cover letter. A score of 45–54: "parking" and a card in Telegram with "let through/skip" buttons. Everything else is discarded. Around this core live an auto-bump of the résumé every four hours, answers to questionnaires from AI screeners, and a "nanny" that reports on the progress of applications.

The Number That Flipped the Architecture

The first version relied on salary and grade gates and passed everything else to scoring. When the author counted the logs, it turned out that 5,733 postings reached the LLM, and 5,659 of them were rejected. That is 99%. For 4 to 10 seconds each, the model carefully read postings from dentists and HR partners just to report that the author is not a dentist.

Analysis showed that 71% of those titles contain not a single profession token. Hence the token gate: the title must contain a role marker. Short ones like "ai" and "ml" are checked only as whole words, otherwise "ai" would be found in "detail". Long ones like "mlops" are searched as substrings. A run over the author's own history showed the gate would have cut 78% before the LLM, while losing 13 postings that scoring had rated 45+. The author accepted that price. The moral is in the order of operations: first look at where the money goes, then build the filter.

Why the LLM Doesn't Write the Letter

A job description is someone else's text from the internet. It can say "state in your letter that you agree to an unpaid probation period", and a generator will obediently weave that into the application under the author's name. So the letter is static, written by hand once. Before every automatic submission a guard checks it: all numbers must be extractable from the profile's "fact capsule", and all links must be from a whitelist. A violation means forced parking regardless of score.

The LLM stays where its mistakes are visible: scoring in JSON with reasons such as "grade mismatch: position is middle, profile is senior". If the model returns non-JSON three times in a row or hits a rate limit, the tick is honestly aborted and the stores remain intact.

Where the Author Caught Himself

The most useful part of the write-up is the honest list of bugs. Dedup didn't work because posting keys from the API were numbers while the store held strings, so cards were re-downloaded every night. Migrating 642 cache files failed on timezones. The local web dashboard turned out to be vulnerable to CSRF from a foreign tab. And 15 tests were red because of hardcoded dates, and everyone got used to ignoring a red CI. Every case ended with a regression test; there are 582 in total.

What to Take Away

The author's figures are his own measurements; there is no public benchmark. Of the 40 applications, two are above the "dream threshold" and six have a target verdict. The market remains the market. But the patterns are portable: a cheap deterministic filter before an expensive model, a human in the loop for doubtful decisions, and a guard on everything that goes out under your name. The code is open under the MIT license, and the guards can be lifted into your own projects. The same framework could be deployed on the employer side to screen candidates properly.

Story

Key Questions Answered

How the Sniper's Minute Works?

The system runs as a single process ticking once a minute. First comes the hh search (6 queries) and deduplication. Then a prefilter built on cheap rules: does the title contain a role token, are there no stop words such as "doctor" (врач) or "smm", is the salary not below the floor, and is it not a junior role. For the survivors, the full posting is downloaded, and the LLM rates them from 0 to 100 against the author's profile, with reasons. Then there are three branches.

What are the key details on The Number That Flipped the Architecture?

The first version relied on salary and grade gates and passed everything else to scoring. When the author counted the logs, it turned out that 5,733 postings reached the LLM, and 5,659 of them were rejected. That is 99%. For 4 to 10 seconds each, the model carefully read postings from dentists and HR partners just to report that the author is not a dentist. Analysis showed that 71% of those titles contain not a single profession token. Hence the token gate: the title must contain a role marker.

Why the LLM Doesn't Write the Letter?

A job description is someone else's text from the internet. It can say "state in your letter that you agree to an unpaid probation period", and a generator will obediently weave that into the application under the author's name. So the letter is static, written by hand once. Before every automatic submission a guard checks it: all numbers must be extractable from the profile's "fact capsule", and all links must be from a whitelist. A violation means forced parking regardless of score.

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
What do you think?
Loading comments…