Build an AI Job Search Agent That Applies While You Sleep
A developer doubled his salary in 3 days by letting his AI agent apply to 100+ jobs. Here's how to build the same system.
What You'll Build
An AI agent that searches job boards, matches listings to your profile, customizes your resume for each role, drafts cover letters, and applies. You review a daily report of what it sent.
Why It Works
Job searching is 90% repetitive grunt work: scrolling listings, tweaking resumes, writing cover letters, filling forms. An AI agent can do this 24/7 with zero burnout. A human applying to 5 jobs per day competes against an agent applying to 50.
Results: 100+ applications in 3 days. 6 interviews. 2 offers. Salary doubled from $2,500 to $5,000/month.
Prerequisites
- OpenClaw installed and running
- Claude API key
- LinkedIn account (logged in via browser or API)
- Your work history (will be converted to structured format)
- Browser automation capability (for form filling)
Architecture
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β Job Scanner ββββββΆβ Match Filter ββββββΆβ Resume Tailorer β
β β β β β β
β - LinkedIn β β - Role fit β β - .md to PDF β
β - Indeed β β - Salary β β - Custom summary β
β - Remote.co β β - Location β β - Highlight β
β - AngelList β β - Tech stack β β relevant exp β
βββββββββββββββ ββββββββββββββββ ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Applicator β
β β
β - Cover letter β
β - Form fill β
β - Email apply β
β - Track status β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Daily Report β
β β
β - Applied: 47 β
β - Matched: 12 β
β - Responses: 3 β
β - Interviews: 1 β
βββββββββββββββββββ
Step-by-Step Setup
Step 1: Structure Your Work History
Create markdown files the agent can reference and remix:
resume/base-resume.md
# Your Name
**Title** | email@domain.com | LinkedIn | GitHub
## Summary
[2-3 sentences about your core value prop β the agent will customize this per job]
## Experience
### Senior Developer β Company Name (2023-Present)
- Built X that resulted in Y
- Led team of Z people
- Technologies: React, Node.js, PostgreSQL
### Developer β Previous Company (2021-2023)
- [accomplishments with numbers]
## Skills
- Languages: Python, JavaScript, TypeScript
- Frameworks: React, Next.js, Node.js
- Tools: Docker, AWS, PostgreSQL
- Soft: Team leadership, client communication
resume/projects.md β detailed project descriptions the agent can pull from
resume/achievements.md β quantified wins (saved $X, improved Y by Z%)
Step 2: Define Your Job Search Criteria
Create a job-search-config.md:
## Target Roles
- Software Engineer (Senior/Staff)
- Full-Stack Developer
- Backend Engineer
## Requirements
- Salary: $100K+ (or equivalent remote)
- Remote: preferred, open to hybrid in [city]
- Company size: 10-500 employees
- Industry: SaaS, fintech, dev tools (preferred)
## Deal Breakers
- No crypto/web3
- No agencies
- Must have health insurance
## Tech Stack Preferences
- Strong match: React, Node.js, PostgreSQL, AWS
- Good match: Python, Go, TypeScript
- Weak match: Java, C#, Angular
## Application Strategy
- Prioritize: roles posted in last 48 hours
- Skip: roles with 500+ applicants on LinkedIn
- Always apply if: company is in my target list (see below)
## Target Companies
- Stripe, Vercel, Linear, Notion, Figma, Supabase
Step 3: Build the Job Scanner
The agent needs to find jobs. Several approaches:
LinkedIn (browser automation): Give your agent browser access with LinkedIn logged in. It searches using your criteria, scrolls through results, and extracts job details.
Job board APIs:
- LinkedIn doesn't have a public job API, but you can scrape RSS feeds
- Indeed has an affiliate API
- Remote.co, AngelList, and WeWorkRemotely have feeds
- Hacker News "Who is Hiring" monthly threads
Google Jobs:
Search site:linkedin.com/jobs "[your title]" "[your city]" or use Google Jobs API.
Step 4: Match and Rank
The agent reads each job description and scores it against your config:
Score = (role_match * 3) + (salary_match * 2) + (tech_match * 2) + (company_size * 1) + (recency * 1)
Only jobs scoring above your threshold get applications.
Step 5: Customize and Apply
For each matched job, the agent:
- Reads the full job description
- Customizes your resume summary to highlight relevant experience
- Reorders skills to match what the job asks for
- Writes a cover letter (if required) that references specific things from the job post
- Converts resume to PDF (use
pandocor a markdown-to-PDF tool) - Applies via the platform's easy-apply, email, or form fill
Step 6: Track Everything
Create an applications.md or SQLite database:
| Date | Company | Role | Status | Link | Notes |
|------|---------|------|--------|------|-------|
| 3/3 | Linear | Senior FE | Applied | [link] | Strong match, used React |
| 3/3 | Vercel | Staff Eng | Applied | [link] | Dream company |
| 3/4 | Notion | Backend | Interview | [link] | Phone screen 3/7 |
Daily report to your Telegram/email: what was applied, any responses, upcoming interviews.
Customization Ideas
- Freelancers: Monitor Upwork, Fiverr, Toptal for matching gigs instead of full-time roles
- Sales roles: Focus on company research + personalized outreach rather than form applications
- Recruiters: Run this for multiple candidates simultaneously
- Career changers: Weight transferable skills and write cover letters that bridge the gap
Gotchas & Tips
- Don't apply to your current employer. Add them to the exclusion list.
- Review before dream companies. Let the agent handle bulk applications, but personally review anything going to your top-5 target companies.
- The flood is real. The original builder had to shut it down because of overwhelming responses. Set a daily cap (20-30 applications/day is plenty).
- LinkedIn has rate limits. Space out actions. Don't apply to 50 jobs in 10 minutes or you'll get flagged.
- Quality over quantity for senior roles. For junior/mid roles, volume wins. For senior/staff, customize heavily and apply to fewer.
- Track what works. After a week, check which resume versions and cover letter styles got responses. Feed that back to the agent.