DEV Community

Marin Pesa
Marin Pesa

Posted on

Automation for Applications

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)       │
└──────────────────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)