CONTENT:
I got tired of spending 45 minutes per job application — tailoring my CV, writing a cover letter, uploading the same PDFs over and over. So I'm building AutoApply: an AI-powered system that does it all autonomously through browser automation.
The Idea
You give it a natural language prompt:
"Go to LinkedIn, search for Junior Python Developer jobs near Augsburg, and apply to all of them."
The system takes over your browser, finds matching jobs, tailors your CV per job, generates a personalized cover letter, and submits the application — all through the actual web portal.
The Stack
- Paperclip — Open-source multi-agent orchestrator. Manages all agents like a company: CEO delegates, specialists execute, you approve from a dashboard.
- Browser Use — Python framework for AI-driven browser automation. 89% success rate on the WebVoyager benchmark, 86k+ GitHub stars. This is the "muscle" that controls the browser.
- Claude API (Anthropic) — Powers the cover letter generation, CV tailoring, and quality checks. Sonnet for writing, Haiku for cheap filtering.
- FastAPI — Each agent runs as a Python HTTP service that Paperclip calls via its HTTP adapter.
- WeasyPrint — Renders tailored CVs and cover letters as clean PDFs.
Architecture
┌──────────────────────────────────────────────┐
│ PAPERCLIP ORCHESTRATOR │
│ │
│ You (Board) ──approves──▶ CEO Agent │
│ │ │
│ ┌──────┬──────┬──────┬────┴────┐ │
│ ▼ ▼ ▼ ▼ ▼ │
│ Scout Filter Tailor Letter Applicant │
│ (Browser (Haiku) (Sonnet)(Sonnet)(Browser │
│ Use) Use) │
└──────────────────────────────────────────────┘
The 7 Agents
| Agent | Model | What it does |
|---|---|---|
| CEO | Sonnet | Breaks down your prompt, delegates tasks |
| Job Scout | No LLM | Browser Use searches LinkedIn, extracts job data |
| Pre-Filter | Haiku | Checks if the job matches your profile (~$0.001/job) |
| CV Tailor | Sonnet | Reweights skills, injects keywords, generates PDF |
| Cover Letter | Sonnet | Writes a personalized letter using the tailored CV |
| QA | Haiku | Checks CV ↔ letter consistency, no hallucinations |
| Applicant | No LLM | Browser Use fills forms, uploads docs, submits |
Only 3 out of 7 agents need Claude tokens. Total cost: ~$1/day for 10 applications.
Key Design Decisions
CV Tailoring ≠ CV Fabrication
The CV Tailor works from a structured master_cv.json. It reweights, reorders, and rephrases — but never invents skills or experience. The QA agent compares the tailored version against the master and flags any deviation.
Human-in-the-Loop
Two operating modes:
- Supervised — Browser is visible. Agent pauses on CAPTCHAs, unknown form fields, or external portals. You step in, solve it, agent continues.
- Autonomous — Headless browser. Problems get logged as FAILED and skipped. For when you trust the system.
Fail Gracefully
Not every job can be applied to automatically. The system recognizes:
- No apply button → FAILED
- External portal redirect → FAILED
- CAPTCHA → WAITING_HUMAN (supervised) or FAILED (autonomous)
- Page 404 → FAILED
Failed jobs get logged with a reason. No silent failures.
Status Model
Every job goes through a clear pipeline:
FOUND → CV_READY → LETTER_READY → QA_PASSED → APPROVED → IN_PROGRESS → APPLIED
→ WAITING_HUMAN
→ FAILED
What's Next
Currently in Sprint 0 — setting up Paperclip, building the FastAPI skeleton, and wiring the HTTP adapters. Planning 6 one-week sprints to MVP.
The repo will be public once we have a working prototype. If you're interested in the project or want to contribute, drop a comment.
Built with Python, Paperclip, Browser Use, and Claude API. Two developers, 6 weeks, one mission: never write another cover letter by hand.
GitHub: github.com/marinpesa15
Top comments (0)