How I Use AI to Apply to 100 Jobs Automatically
I built an AI pipeline that scans, scores, and tailors applications across hundreds of postings. The twist: the goal was never to apply to more jobs — it was to apply to far fewer, and mean it.
The pitch writes itself: a bot that fires off a hundred job applications while you sleep, and you wake up to a calendar full of interviews. I built most of that machine — and then deliberately disabled the part that fires.
Not because it couldn’t work mechanically. It could. The version that actually helped me was almost the opposite of the fantasy: the automation earned its keep when it was talking me out of applying, not into it. Here’s how the system works, why the headline number is a trap, and what I’d tell anyone tempted to build their own.
A job search is just a data pipeline
Strip away the anxiety and a job hunt is a pipeline with six boring stages: find the openings, read each one, decide whether it’s worth your time, tailor your materials, reach an actual human, and follow up. Then repeat a few hundred times. Every stage is mechanical, repetitive, and easy to check — which is precisely the profile of work software is good at, and precisely the profile of work people are terrible at doing at volume without burning out.
So I stopped treating it as an emotional ordeal and started treating it as a pipeline. Each stage became a step a script or a model could run, with the output of one feeding the next.
What the machine actually does
Most of the pipeline runs without me. It handles the parts that are pure mechanical toil:
- Scans company job boards straight through their APIs — Greenhouse, Ashby, Lever — instead of scraping. Pulling hundreds of fresh postings costs nothing and burns no model tokens.
- Scores every posting against my real profile on a fixed rubric: seniority fit, skills overlap, compensation, location, and whether the company is even the kind of place I’d say yes to.
- Confirms the posting is still live before spending another second on it. A dead listing is the most common way to waste effort in a job search.
- Tailors a CV per role for the ones that clear the bar — not keyword-stuffing, but reordering and rewriting so the most relevant experience is the first thing a recruiter sees.
- Finds a real person to contact and drafts an outreach note I can edit, instead of dropping the application into a black-box portal and hoping.
- Tracks every role, score, and status in one place, and tells me when a follow-up is due.
Notice what every one of those stages has in common: the output is cheap to check. A score I can sanity-test in five seconds. A tailored CV I can skim. A draft I can rewrite. The agent is never trusted because it’s clever — it’s trusted because I can catch it being wrong before anything leaves my machine.
The number that isn’t the point
“A hundred applications” is the part that makes the headline pop, and it’s the part I’d push back on hardest. The system reads hundreds of postings, yes. It is designed to kill almost all of them.
Only roles that clear a genuine fit threshold ever get a tailored CV. Everything below it is logged and dropped, on purpose. On a typical scan the large majority of postings never reach the application stage — and that filtering is the product, not a side effect. The expensive resource in a job search was never the writing. It was attention: working out which ten of three hundred openings actually deserved a serious, customized, human effort.
Automating the funnel was never about applying to more jobs. It was about earning the right to apply to fewer — and meaning it when I did.
Why I left a human in the loop
The system stops before it submits. Every application waits for me to read it and click the button myself. People ask why I don’t just let it rip, and there are two honest answers.
The first: it doesn’t work. Mass-applying with generic materials is the exact behavior every applicant-tracking system and every recruiter is now tuned to filter out. Automated submission also tramples the terms of service of most job platforms, and it’s a quick way to get your account flagged or banned. And every application a human eventually reads costs someone’s attention — firing off a hundred low-effort ones is rude in a way that scales.
The second answer is the one that matters more. The last five percent of the decision — is this actually a fit, is this somewhere I’d be glad to work, is this draft even true — is exactly the part a model fakes most convincingly and gets wrong. It will hand you a confident, polished application for a job you should never take. Generating is cheap; that’s precisely why the approval gate has to be expensive.
If you build your own
The pattern generalizes to any tedious, high-volume search, so here’s the version of the playbook I wish I’d had on day one.
- Score before you tailor. Spend your compute ranking ruthlessly first; only invest in customization for the roles that survive.
- Verify the posting is alive before anything else — half-dead listings are where effort goes to die.
- Tailor for real or don’t bother. Reordering truthful experience helps; keyword-stuffing is obvious and backfires.
- Keep exactly one human gate, right before submission, and never automate past it.
- Track everything. The follow-up you forgot to send sinks more candidacies than the application you never wrote.
Mechanically, the whole thing hinges on one cheap gate — don’t pay for the expensive step until the cheap one has earned it:
// The rule the whole pipeline is built around:
// ranking is cheap, tailoring is expensive, submitting is irreversible.
const FIT_THRESHOLD = 4.0; // out of 5
for (const job of await scanBoards()) { // free: hit the ATS APIs directly
if (!(await isStillOpen(job))) continue; // never tailor a dead posting
const score = rank(job, myProfile); // cheap: rubric only, no human
if (score < FIT_THRESHOLD) { // kill the other ~90%
log(job, score);
continue;
}
const cv = await tailorResume(job, myProfile); // expensive: survivors only
const note = await draftOutreach(job);
queueForReview({ job, cv, note }); // STOP — a human clicks submit
}What it actually changed
The outcome wasn’t “I applied to a hundred jobs. ” It was that I stopped pouring hours into the ninety that were never going to work, and showed up genuinely prepared for the ten that could — with a CV that fit, a real name in my inbox, and notes on why I wanted the role. The leverage was never in volume. It was in spending my limited, non-renewable attention on the right targets.
That’s the quiet truth under most “automate everything” stories. The win is rarely doing more of the thing. It’s building a machine ruthless enough to let you do far less of it, on purpose.
So yes — I use AI to apply to a hundred jobs automatically. It just spends almost all of that automation talking me out of ninety-nine of them, and saving everything I’ve got for the one that’s worth it.
Enjoyed this?
Get the next deep dive in your inbox. No spam — just the stories worth reading.
Subscribe to the newsletter