
Fighting Fire with Fire
Or: How I Taught LLMs to Tell Me I'm Underqualified (So I Don't Have To)
A follow-up to Taming LinkedIn Job Alerts
Be Careful What You Automate
Remember that automated job tracker I built? The one that elegantly sorted LinkedIn alerts into a tidy spreadsheet, eliminating duplicates and bringing order to chaos?
It worked. Too well.
Instead of drowning in emails, I was now drowning in spreadsheet rows. Each one silently judging me: "Are you going to apply, or just stare?"
The cognitive load hadn't disappeared. It had simply moved apartments.
The Daily Ritual of Self-Doubt
Every morning, I'd open the sheet and begin the ritual:
Row 1: "Senior Engineering Manager at TechCorp" — Do I have enough years? What's their stack? Let me check... ah, they want someone who's "passionate about microservices." Am I passionate about microservices? What does passion for microservices even look like?
Row 2: “Engineering Director at XYZ" — Ooh, interesting. But wait, they want 5 years of Kubernetes. I have about 1. Does "extensive Docker experience" count? Should I round up?
Row 3-47: Repeat existential crisis.
By the time I finished mentally evaluating a dozen jobs, I was exhausted and had applied to exactly zero.
"You're a Top Candidate!" (No You're Not)
Before going full mad scientist, I tried the obvious solution: LinkedIn Premium.
You know that "Show match details" button? The one that's supposed to tell you how well you fit a job? I clicked it religiously. And LinkedIn was very encouraging:
- "Your skills match this job"
- "You're a top applicant"
- "Your experience aligns with this role"
Great! I must be crushing it! Let me apply to all these "high match" jobs and wait for the interviews to roll in.
[Three weeks and about 10 applications later]
Silence. Absolute silence. Bar a few courtesy rejections.
Turns out "You're a top candidate!" from LinkedIn is the job search equivalent of "You have a great personality." Technically positive, practically meaningless. When too many jobs are "high match," none of them are.
I needed a second opinion. A harsher second opinion.
The Actual Epiphany
Then it hit me. Two realizations, back to back:
One: Every recruiter and their dog is using AI to screen resumes now. My carefully crafted application gets fed into some algorithm that decides in milliseconds whether I'm worthy of human eyeballs. If they're using robots to judge me, why am I not using robots to judge them?
Two: A friend in recruiting casually mentioned that submitting too many applications can actually hurt you. Apparently, some systems flag "spray and pray" candidates. Great. So not only am I wasting time on long-shot applications, I might be actively sabotaging myself.
The conclusion was obvious: I needed to pick my battles. And I needed help picking them.
Enter Gemini and Claude: My Personal Career Pessimists
I decided to integrate Google's Gemini and Anthropic's Claude into my job pipeline. The goal? For every job alert, have both AIs read the full job posting, compare it against my resume, and give me a brutally honest probability score.
Not "will I get this job?" — that's unknowable. But rather: "will a recruiter even bother calling me back?"
Here's the thing about AI: left to its own devices, it's annoyingly optimistic. My first attempts produced scores like:
- "78% match — you have transferable skills!"
- "72% — your experience in adjacent domains could be valuable!"
- "81% — while you lack the specific requirement, your enthusiasm shines through!"
Enthusiasm? Shines through? This is a PDF, not a first date.
I needed LLMs to channel their inner cynical recruiter. So I gave it explicit instructions:
"You are screening 500 resumes and need to get to lunch. Be ruthless. Missing a required skill? Penalty. Less experience than asked? Penalty. Start at 50 and work your way down. Most real candidates score 35-65. A 70+ means they're actually qualified, not just 'could potentially pivot into the role with enough optimism.'"
Suddenly, the scores got real:
- "42% — lacks required cloud certification"
- "38% — 3 years experience vs. 5 required"
- "61% — strong match on 4 of 6 requirements, gap in system design"
Now we're talking.
How It Works
The pipeline is straightforward:
- LinkedIn email arrives
- Job details get extracted and deduplicated
- Gemini fetches the full job description from LinkedIn (not just the email snippet)
- My resume gets compared against requirements — by two AIs
- Gemini and Claude independently score the match
- Their scores are averaged into a consensus probability
- The final score determines the verdict:
- 70% or higher → Worth my time. Status:
NEW - Below 70% → Probably not. Status:
LOW MATCH
- 70% or higher → Worth my time. Status:
Why two AIs? Because even with careful prompting, each model has its own biases. Gemini might be slightly more optimistic about "transferable skills." Claude might weigh missing certifications more heavily. By averaging their assessments, the outliers cancel out and you get a more stable, reliable score.
Think of it like asking two cynical recruiters instead of one. If they both say "maybe," it's probably worth a shot. If they both say "no," save your energy.
The low-match jobs don't disappear — they just get quietly shuffled to the back of the line. If I'm feeling ambitious (or desperate), they're still there.
The Moment of Truth
After two weeks of letting the robot judge my career prospects:
| Metric | Result |
|---|---|
| Jobs auto-flagged as "LOW MATCH" | 62% |
| Average probability score | 48% |
| Time saved per week | ~2 hours |
The average score of 48% might seem depressing, but it's actually validating. It means the scoring is calibrated. If everything scored 75+, the system would be useless.
What I Actually Learned
AI is Aggressively Positive (Until You Tell It Not To Be)
Out of the box, language models want to encourage you. They're trained on helpful, supportive text. You have to explicitly instruct them to be realistic, or you'll get the career counselor version instead of the recruiter version.
The Full Job Description Matters
The job title and company name tell you almost nothing. "Senior Engineer at Google" could be anything. Gemini uses Google Search to fetch the actual posting — requirements, preferred qualifications, the whole thing. That's where the signal is.
Graceful Failure is Underrated
Jobs get filled. Postings get taken down. Sometimes by the time my pipeline runs, the job is already gone. Instead of crashing, the system just marks it as NOT AVAILABLE and moves on. If I can't even read the posting, there's definitely no point applying.
Fighting Fire with Fire Actually Works
This isn't about gaming the system. It's about acknowledging reality: if companies are using automation to filter candidates, candidates can use automation to filter opportunities. It's just efficient allocation of limited time and energy.
What's Next?
The current system only looks at job description vs. resume. Future versions could get spicier:
- Company intel: Are they actually hiring, or is this a ghost job?
- Salary reality check: Does this role typically pay what I'm looking for?
- Competition gauge: How many people have already applied?
But honestly? For now, the simple "should I bother?" score has transformed job hunting from an anxiety-inducing chore into something almost manageable.
The spreadsheet still fills up. But now I know which rows actually deserve my attention — and which ones are just there to remind me that yes, I probably should dig further into Kubernetes.
Sometimes the best automation isn't about doing more. It's about confidently doing less.
Code available on GitHub if you want to build your own career pessimist.