Job Search OS.
An agentic AI system I run on myself. Apollo + Apify + n8n + LLMs orchestrating verified contact discovery, resume tailoring, and personalized outreach. End-to-end, from job discovery to email draft, in two minutes.
The problem.
Most job applications die in ATS systems before a human ever reads them. The numbers are bleak: industry data puts portal-only application response rates at 2–4%. Recruiters at large companies receive hundreds of applications per role and rely entirely on keyword filtering. Highly qualified candidates get rejected by software they never see.
The fix isn't writing a better resume. The fix is bypassing the ATS entirely — finding the actual decision-maker and reaching them directly with a tailored, specific message that proves you understand their problem.
Doing this manually for every role takes 90 minutes: read the JD carefully, hunt for the hiring manager on LinkedIn, find their email, tailor a resume, write a custom email, send. I wanted that workflow to take 2 minutes. So I built an agent system that does the heavy lifting and leaves me to review and send.
The architecture.
The system is built around n8n as the orchestrator, with eight stages running in sequence. Each stage has a specific tool responsibility, with an LLM step at three points handling the reasoning that can't be coded deterministically.
What's hard.
Contact resolution accuracy
The Apollo step has to find the right person, not just any person. A senior data analyst hire reports to a Director of Analytics, not the VP of Engineering. Got this wrong early on — emails went to people who could not actually hire me. Fixed by stacking title + seniority + domain filters and validating the email before send.
Personalization vs. template detection
The first version produced templated outreach that recruiters flagged immediately. Fixed by giving the LLM the contact's full LinkedIn context — recent posts, prior companies, specific projects — and instructing it to anchor the opening on a specific detail. Reply rate jumped from ~3% to ~14%.
Resume rule enforcement
LLMs love to break formatting rules. The resume must be Calibri, bold underlined headers, exactly one page, three-line summary, no em dashes, XYZ bullets. I run a post-generation validator that re-reads the resume, checks each rule, and asks the LLM to retry if any fail. Adds 20 seconds; eliminates manual fixing.
Knowing when to stop
The system can run autonomously, but I deliberately keep a human gate. Sending 30 cold emails a day in my voice without me reviewing them would degrade quality fast and risk burning bridges. Augmented > autonomous for high-stakes outreach.
The outcomes.
The stack.
What's next.
The version running today is v3.2. The current focus is improving the fit-scoring step — early versions over-indexed on keyword overlap and passed roles that were technically aligned but practically wrong (different industry vertical, mismatched seniority). v3.2 added explicit dealbreaker detection, but there's still ~12% false-positive rate on fit calls.
The bigger architectural question is whether to extend the system beyond my own search. The pattern — agent-orchestrated outbound with specific contact enrichment and tailored deliverables — generalizes to any B2B sales motion. I've been thinking about whether this becomes a productized version focused on sales teams at small companies who can't afford a full-time SDR.