Thought Leadership2026-07-07·14 min read

I Applied to 840 Jobs with AI — Here's What I Learned

840 applications. 6 months. One AI agent. I built JobApplier.site to automate my own job search, and then I used it — extensively. Here's every number, every insight, and every mistake I made along the way.

The Setup

I'm a senior software engineer with 8 years of experience. Backend-heavy: Python, TypeScript, PostgreSQL, AWS. I was looking for remote senior or staff roles at Series A–D startups and mid-size tech companies. My target compensation was $180–220K base.

The agent I built (which became JobApplier.site) scanned LinkedIn, company career pages, and ATS portals. For every job matching my criteria, it:

  1. Extracted the job description
  2. Calculated a semantic match score (0-100) against my resume
  3. If score ≥ 65: tailored my resume, generated a cover letter, and applied
  4. If score < 65: logged it and moved on

The Raw Numbers

Total applications840
Average match score78.4
Callback rate (phone screen)14.6% (123 callbacks)
Technical interview rate7.1% (60 interviews)
Final round rate2.6% (22 final rounds)
Offers6
Cost (API + compute)$127.40 total (~$0.15/application)
Time saved (estimated)280+ hours

What Worked

1. Per-JD Tailoring Was the Biggest Factor

In my first 100 applications, I ran an A/B test: 50 with generic resume, 50 with per-JD tailored resume. Results:

  • Generic: 3 callbacks (6%)
  • Tailored: 9 callbacks (18%)

3x improvement. After that, I never sent a generic resume again. Every single application got a tailored resume with JD-specific keyword injection, reordered bullets, and an adjusted title line.

2. Match Score Threshold Was Crucial

Early on, I set the threshold at 50 — basically "apply to anything remotely relevant." My callback rate was 8%. When I raised it to 65, callbacks jumped to 14.6% while total applications dropped by only 15%.

The insight: a higher threshold doesn't mean fewer interviews. It means fewer wasted applications and a higher signal-to-noise ratio.

3. Cover Letters Moved the Needle

I tested applications with and without cover letters for 200 applications:

  • Without cover letter: 11.2% callback
  • With tailored cover letter: 15.8% callback

The key word is "tailored." The cover letter had to reference specific things from the JD — a product the company shipped, a technical challenge they mentioned, anything specific. Generic cover letters performed the same as no cover letter.

4. Stealth Automation Mattered

Around application #200, I got a LinkedIn rate limit warning. I had been applying too fast — 30+ applications in a day with consistent timing intervals. After implementing warmup ramps, Gaussian-distributed delays, and daily caps (max 12 applications/day), I never got flagged again.

What Failed

1. Applying to Jobs Below My Level

I applied to some mid-level roles thinking I'd be a shoo-in. Callback rate on mid-level roles: 8%. On senior roles: 16%. Recruiters are pattern-matching level, and an overqualified candidate is a flight risk. I stopped applying below-level at application #300.

2. Custom Question Hallucinations

In 12 applications, GPT answered a custom question about visa sponsorship differently than my configured answer. This is why I rebuilt the form handler to use deterministic answers for all critical questions (authorization, sponsorship, salary, availability) and only GPT for genuinely freeform questions.

3. Weekend Applications Underperformed

Applications submitted Saturday-Sunday had a 9% callback rate vs. 16% for Tuesday-Thursday. Either recruiters buried in Monday email triage skip weekend submissions, or ATS sorting pushes recent applications to the top and Monday/Tuesday applications leapfrog weekend ones.

I configured the agent to only apply Tuesday through Thursday.

4. Some ATS Portals Were Brittle

Workday and iCIMS forms broke regularly — login flows changed, form fields moved, CAPTCHA challenges appeared. Greenhouse, Lever, and Ashby were far more stable. I ended up deprioritizing Workday companies and focusing on Greenhouse/Lever shops.

The Money Math

Let me put this in perspective:

  • 840 applications × 20 minutes each = 280 hours of manual work saved
  • Total cost: $127.40 in API calls (GPT-5.4 for tailoring + cover letters)
  • Cost per callback: $1.04
  • Cost per offer: $21.23

I spent $127 and saved 280 hours. If I value my time at $100/hour (conservative for a senior engineer), that's a 220x ROI.

The Unexpected Lessons

  1. The job search is a funnel, not a lottery. Optimize conversion rates at each stage, not volume at the top.
  2. Timing matters more than you'd think. Tuesday morning applications outperform Friday afternoon by 2x.
  3. Deterministic > probabilistic for critical fields. Never let AI guess on visa sponsorship, work authorization, or salary requirements.
  4. Match score thresholds save you from yourself. Without a floor, you'll apply to everything. The floor forces quality.
  5. Six offers from 840 applications is actually a great output. Industry averages suggest 200+ applications per offer for senior roles. I was at 140 per offer — and I wasn't manually doing any of the work.

What I'd Do Differently

If I were starting over:

  • Start with a match threshold of 70, not 50
  • Only apply Tuesday through Thursday from the beginning
  • Spend more time on my master resume YAML before starting the agent
  • Set up interview prep documents from day 1 (I added this feature at application #400)

Try It Yourself

Everything I described is now available as JobApplier.site. The free tier gives you 3 AI-tailored applications per month — enough to see if the tailoring approach works for your profile before committing.

Or if you're technically inclined, the full agent is open-source. Fork it, audit it, run it yourself.

Either way: stop copy-pasting. Start tailoring. The data speaks for itself.

← Back to all posts

Ready to automate your job search?

3 AI-tailored applications per month. Free forever.

Get Started Free