Free AI Agent That Applies to Jobs Automatically – ApplyPilot

A free, open-source AI agent that scrapes job boards, tailors your resume per role, and submits applications autonomously.

ApplyPilot is a free, open-source AI job application agent that automates the entire job search process from discovery to form submission.

It scrapes five major job boards, 48 Workday employer portals, and 30+ direct company career sites, scores each listing against your resume with AI, rewrites your resume per job, generates cover letters, and submits applications autonomously through a browser agent.

Most job seekers run the same loop: open multiple boards, copy-paste contact info into ATS forms, adjust resume bullets per listing, and still miss opportunities spread across platforms they don’t regularly check. ApplyPilot addresses this at the pipeline level.

The project’s creator documented submitting 1,000 applications in two days using it. The tool runs as a Python CLI, uses Google’s free Gemini API for scoring and tailoring, and uses the Claude Code CLI for browser automation. It targets any job site, any form, not just LinkedIn Easy Apply.

Features

  • Scrapes job listings from Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs, and Workday employer portals.
  • Extracts complete job descriptions using a three-tier cascade of structured data, CSS selectors, and AI.
  • Rates every job on a ten-point scale against your personal profile and preferences.
  • Rewrites your resume for each specific role to emphasize relevant experience.
  • Generates custom cover letters that map your background directly to company requirements.
  • Fills application forms autonomously using Claude Code to upload documents and answer screening questions.

See It In Action

Official Demo

Use Cases

  • Apply to highly specific roles across forty-eight preconfigured Workday portals automatically.
  • Generate customized resumes for hundreds of listings concurrently using multithreaded workers.
  • Filter out low-quality job postings using strict AI scoring thresholds.
  • Submit applications continuously in the background using the headless browser mode.

How to Use It

1. Start with the base package:

pip install applypilot

2. python-jobspy requires a separate install. It pins a specific numpy version in its package metadata that conflicts with pip’s resolver, so the install uses --no-deps to skip that metadata check:

pip install --no-deps python-jobspy

3. Install the runtime dependencies that --no-deps skipped:

pip install pydantic tls-client requests markdownify regex

4. The auto-apply stage requires Node.js 18+ because the Playwright MCP server runs via npx. Get Node.js at nodejs.org, then install the Claude Code CLI from claude.ai/code.

5. Get your Gemini key at aistudio.google.com. The Gemini API free tier supports 15 requests per minute and 1 million tokens per day.

6. Run the Setup Wizard. The wizard generates three configuration files: profile.json (your contact info, work authorization, compensation details, experience, skills, resume_facts, and EEO defaults), searches.yaml (target job titles, locations, and boards), and .env (API keys and model settings).

applypilot init

Pay close attention to the resume_facts section of profile.json. This is where you lock in the specific companies, project names, metrics, and credentials that the AI must preserve verbatim during resume tailoring. The AI rewrites structure and emphasis — it does not modify anything listed in resume_facts.

7. Verify Your Setup. This checks that all required components are present and flags anything missing before you start the pipeline.

applypilot doctor

8. Run the Pipeline:

applypilot run

This executes stages 1 through 5: discover, enrich, score, tailor, and cover letter generation. Add --workers for parallel processing:

applypilot run --workers 4

9. Launch Auto-Apply. Claude Code launches a Chrome instance, navigates to each queued application, fills the form, uploads the tailored resume and cover letter, answers screening questions, and submits.

applypilot apply

You can also run multiple Chrome instances in parallel:

applypilot apply --workers 3

Confirm form-filling behavior before going live:

applypilot apply --dry-run

CLI Command Reference

CommandWhat It Does
applypilot initFirst-time setup wizard
applypilot doctorVerify setup and diagnose missing requirements
applypilot runRun all pipeline stages
applypilot run [stages...]Run specific named stages only
applypilot run --workers 4Parallel discovery and enrichment (4 threads)
applypilot run --streamRun stages concurrently in streaming mode
applypilot run --min-score 8Override the default fit score threshold
applypilot run --dry-runPreview pipeline steps without executing
applypilot run --validation lenientRelax output validation (recommended for Gemini free tier)
applypilot run --validation strictStrictest validation with retries on banned words
applypilot applyLaunch autonomous form submission
applypilot apply --workers 3Run 3 Chrome instances in parallel
applypilot apply --dry-runFill forms and skip final submission
applypilot apply --continuousPoll for new jobs and apply continuously
applypilot apply --headlessRun Chrome in headless mode
applypilot apply --url URLApply to one specific job URL
applypilot apply --mark-applied URLManually mark a job as applied
applypilot apply --mark-failed URLManually mark a job as failed
applypilot apply --reset-failedReset all failed jobs for retry
applypilot apply --gen --url URLGenerate a prompt file for manual debugging
applypilot statusView pipeline statistics
applypilot dashboardOpen the HTML results dashboard

Configuration File Reference

FilePurpose
profile.jsonContact info, work authorization, compensation, experience, skills, resume_facts, EEO defaults
searches.yamlJob search queries, target titles, locations, and boards
.envGEMINI_API_KEY, LLM_MODEL, CAPSOLVER_API_KEY
config/employers.yamlWorkday employer registry (48 preconfigured entries)
config/sites.yamlDirect career sites (30+), blocked sites, base URLs, manual ATS domains
config/searches.example.yamlExample search configuration template

Pros

  • The Gemini free tier covers all AI scoring, resume tailoring, and cover letter generation at zero cost.
  • Each pipeline stage runs independently, so you can stop after tailoring and apply manually with the prepared materials.
  • The resume_facts system in profile.json protects actual employer names, credentials, and metrics from AI modification during tailoring.
  • The Playwright MCP server configures itself automatically at runtime per worker.
  • OpenAI models and local models via Ollama or llama.cpp work as drop-in alternatives to Gemini.

Cons

  • The system requires Node.js and the Claude Code CLI for the auto-apply stage.
  • You need a paid CapSolver key to process applications blocked by complex CAPTCHAs.
  • Auto-apply accuracy depends on Chrome’s ability to parse varied ATS form layouts.

Related Resources

  • Google AI Studio: Get your free Gemini API key to power ApplyPilot’s scoring, tailoring, and cover letter generation.
  • Claude Code CLI: Install the browser automation agent that ApplyPilot uses for its auto-apply stage.
  • python-jobspy on GitHub: The job scraping library that powers ApplyPilot’s multi-board discovery stage.
  • CapSolver: Optional CAPTCHA-solving service for unblocking form submissions during auto-apply.
  • Playwright: The browser automation framework underlying ApplyPilot’s form navigation.

FAQs

Q: Does ApplyPilot cost anything to run?
A: The core tool is free and open-source. The Gemini API key is free at the usage tier ApplyPilot requires (15 RPM, 1M tokens per day). The Claude Code CLI is free to install and use. The only optional paid component is a CapSolver API key for CAPTCHA solving.

Q: Can ApplyPilot submit applications to any job website?
A: The discovery stage covers five major boards (Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs), 48 preconfigured Workday employer portals, and 30+ direct company career sites. The auto-apply stage works on any site that presents a standard HTML application form. You can extend both the Workday list and the direct sites list through employers.yaml and sites.yaml respectively.

Q: Does ApplyPilot actually submit applications, or does it only prepare materials?
A: The applypilot apply command submits. It navigates the form, fills all fields, uploads the tailored resume and cover letter, handles screening questions, and clicks submit. Run applypilot apply --dry-run to watch the full form-filling sequence and skip the final submission step.

Q: Does the AI invent job history or fabricate credentials during resume tailoring?
A: No. The resume_facts field in profile.json locks in your actual employer names, titles, project names, and quantitative metrics. The tailoring stage rewrites structure, order, and keyword emphasis.

Q: Can I use a different AI model in place of Gemini?
A: Yes. Set your preferred model in the LLM_MODEL environment variable inside .env.

Q: What happens when an application fails during auto-apply?
A: Failed applications get flagged automatically. Review the full run summary with applypilot status, mark individual jobs manually with applypilot apply --mark-failed URL, and re-queue the entire failed batch with applypilot apply --reset-failed.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get the latest & top AI tools sent directly to your email.

Subscribe now to explore the latest & top AI tools and resources, all in one convenient newsletter. No spam, we promise!