Skip to content

thefulmination/ApplyPilot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

828 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ ApplyPilot is the original open-source project, created by Pickle-Pixel and first published on GitHub on February 17, 2026. We are not affiliated with applypilot.app, useapplypilot.com, or any other product using the "ApplyPilot" name. These sites are not associated with this project and may misrepresent what they offer. If you're looking for the autonomous, open-source job application agent — you're in the right place.

ApplyPilot

Applied to 1,000 jobs in 2 days. Fully autonomous. Open source.

PyPI version Python 3.11+ License: AGPL-3.0 GitHub stars ko-fi

0218.mp4

What It Does

ApplyPilot is a 6-stage autonomous job application pipeline. It discovers jobs across 5+ boards, scores them against your resume with AI, tailors your resume per job, writes cover letters, and submits applications for you. It navigates forms, uploads documents, answers screening questions, all hands-free.

Three commands. That's it.

pip install applypilot
pip install --no-deps python-jobspy && pip install "numpy==1.26.3" pydantic tls-client requests markdownify regex
applypilot init          # one-time setup: resume, profile, preferences, API keys
applypilot doctor        # verify your setup — shows what's installed and what's missing
applypilot run           # discover > enrich > score > tailor > cover letters
applypilot run -w 4      # same but parallel (4 threads for discovery/enrichment)
applypilot apply         # autonomous browser-driven submission
applypilot apply -w 3    # parallel apply (3 Chrome instances)
applypilot apply --dry-run  # fill forms without submitting

Why two install commands? python-jobspy pins an exact numpy version in its metadata. The --no-deps flag keeps pip's resolver from fighting the main install, and the second command installs JobSpy's import-time runtime dependencies, including numpy==1.26.3 and tls-client.


Two Paths

Full Pipeline (recommended)

Requires: Python 3.11+, Node.js (for npx), Gemini API key (free), Claude Code CLI or Codex CLI, Chrome

Runs all 6 stages, from job discovery to autonomous application submission. This is the full power of ApplyPilot.

Discovery + Tailoring Only

Requires: Python 3.11+, Gemini API key (free)

Runs stages 1-5: discovers jobs, scores them, tailors your resume, generates cover letters. You submit applications manually with the AI-prepared materials.


The Pipeline

Stage What Happens
1. Discover Scrapes 5 job boards (Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs) + 48 Workday employer portals + 30 direct career sites
2. Enrich Fetches full job descriptions via JSON-LD, CSS selectors, or AI-powered extraction
3. Score AI rates every job 1-10 based on your resume and preferences. Only high-fit jobs proceed
4. Tailor AI rewrites your resume per job: reorganizes, emphasizes relevant experience, adds keywords. Never fabricates
5. Cover Letter AI generates a targeted cover letter per job
6. Auto-Apply Claude Code or Codex navigates application forms, fills fields, uploads documents, answers questions, and submits

Each stage is independent. Run them all or pick what you need.


ApplyPilot vs The Alternatives

Feature ApplyPilot AIHawk Manual
Job discovery 5 boards + Workday + direct sites LinkedIn only One board at a time
AI scoring 1-10 fit score per job Basic filtering Your gut feeling
Resume tailoring Per-job AI rewrite Template-based Hours per application
Auto-apply Full form navigation + submission LinkedIn Easy Apply only Click, type, repeat
Supported sites Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs, 46 Workday portals, 28 direct sites LinkedIn Whatever you open
License AGPL-3.0 MIT N/A

Requirements

Component Required For Details
Python 3.11+ Everything Core runtime
Node.js 18+ Auto-apply Needed for npx to run Playwright MCP server
Gemini API key Scoring, tailoring, cover letters Free tier (15 RPM / 1M tokens/day) is enough
Chrome/Chromium Auto-apply Auto-detected on most systems
Claude Code CLI or Codex CLI Auto-apply Claude remains the default; use applypilot apply --agent codex to run Codex instead

Gemini API key is free. Get one at aistudio.google.com. OpenAI and local models (Ollama/llama.cpp) are also supported.

Optional

Component What It Does
CapSolver API key Solves CAPTCHAs during auto-apply (hCaptcha, reCAPTCHA, Turnstile, FunCaptcha). Without it, CAPTCHA-blocked applications just fail gracefully

Note: python-jobspy is installed separately with --no-deps; keep numpy==1.26.3 and tls-client installed so jobspy imports cleanly and pip check stays green.

Fleet Health

For the home/Tarpon/GGGTower/Paloma fleet, run the read-only status report from the repo root:

.\fleet-health.ps1

It prints local scheduled tasks/processes, Postgres fleet tables, and SSH probes for the remote workers.

Fleet SSH Access

Fleet repair scripts use one operator key at ~\.ssh\codex_fleet_ed25519 and connect over Tailscale names. Generate or print that public key from the home box:

.\setup-fleet-ssh-access.ps1 -GenerateKey

On each Windows worker, run the printed command from an elevated PowerShell in C:\ApplyPilot. For example:

.\setup-fleet-ssh-access.ps1 -InstallPublicKey -TargetUser rstal -PublicKey '<public key printed on home>'
.\setup-fleet-ssh-access.ps1 -InstallPublicKey -TargetUser backoffice -PublicKey '<public key printed on home>'

On Paloma, run the Mac bootstrap from the ApplyPilot checkout:

APPLYPILOT_FLEET_SSH_PUBLIC_KEY='<public key printed on home>' bash ./setup-fleet-ssh-access-mac.sh

Then verify all machines from home:

.\setup-fleet-ssh-access.ps1 -Check

The Windows bootstrap starts sshd, sets it to automatic, and creates a Windows Firewall rule limited to the Tailscale range (100.64.0.0/10).

Fleet Software Rollout

Normal fleet consistency is git release plus fleet-agent.ps1 -AutoUpdate, not manual SSH patching. Worker boxes should be clean clones; the agent fast-forwards between jobs, reinstalls the editable package when needed, and restarts workers through its normal reconcile loop.

Use this after publishing the branch you want live:

.\Invoke-FleetMakeCurrent.ps1

It pins the current tree version in fleet_config.pinned_worker_version, reconciles Tarpon/GGGTower, reconciles Paloma only when it is reachable over Tailscale SSH, and then runs fleet-health.ps1 -SkipRemote.

Use SSH over Tailscale for bootstrap/repair only:

.\Invoke-FleetReconcile.ps1              # CHECK-ONLY: inspect Tarpon, GGGTower, Paloma
.\Invoke-FleetReconcile.ps1 -Only m4     # CHECK-ONLY: inspect one machine
.\Invoke-FleetReconcile.ps1 -Only m4 -RunHealth
.\Invoke-FleetReconcile.ps1 -Apply -Branch codex/fleet-applier-hardening

The default check is intentionally quick and bounded; add -RunHealth when you want the slower remote fleet-health.ps1 -SkipRemote probe. The apply mode runs the same idempotent repair path on each target: branch-specific git fetch, optional branch checkout, git merge --ff-only, fleet-task/process stop, pip install -e ., and scheduled-task registration. Run health as a separate -RunHealth check after repair. Do not use SSH to hand-edit fleet files; fix the repo, publish the branch/tag, then let auto-update converge.

Fleet Queue Repair

Use the read-only repair report before changing queue state:

applypilot-fleet-repair-report --dsn $env:FLEET_PG_DSN
applypilot-fleet-repair-report --dsn $env:FLEET_PG_DSN --json

If the report finds outcome-email-confirmed crash_unconfirmed jobs, flip only the confirmed matches with a cap:

applypilot-fleet-reconcile-email --dsn $env:FLEET_PG_DSN --no-scan --apply --confirmed-only --max-flips 1

If the report finds approved rows blocked by an overbroad aggregator dedup key, dry-run first and apply only the proposed row-specific repair:

applypilot-fleet-dedup-repair --dsn $env:FLEET_PG_DSN --dedup-key <key> --json
applypilot-fleet-dedup-repair --dsn $env:FLEET_PG_DSN --dedup-key <key> --apply --max-rows 25

Configuration

All generated by applypilot init:

profile.json

Your personal data in one structured file: contact info, work authorization, compensation, experience, skills, resume facts (preserved during tailoring), and EEO defaults. Powers scoring, tailoring, and form auto-fill.

searches.yaml

Job search queries, target titles, locations, boards. Run multiple searches with different parameters.

.env

API keys and runtime config: GEMINI_API_KEY, LLM_MODEL, CAPSOLVER_API_KEY (optional).

Package configs (shipped with ApplyPilot)

  • config/employers.yaml - Workday employer registry (48 preconfigured)
  • config/sites.yaml - Direct career sites (30+), blocked sites, base URLs, manual ATS domains
  • config/searches.example.yaml - Example search configuration

How Stages Work

Discover

Queries Indeed, LinkedIn, Glassdoor, ZipRecruiter, Google Jobs via JobSpy. Scrapes 48 Workday employer portals (configurable in employers.yaml). Hits 30 direct career sites with custom extractors. Deduplicates by URL.

Enrich

Visits each job URL and extracts the full description. 3-tier cascade: JSON-LD structured data, then CSS selector patterns, then AI-powered extraction for unknown layouts.

Score

AI scores every job 1-10 against your profile. 9-10 = strong match, 7-8 = good, 5-6 = moderate, 1-4 = skip. Only jobs above your threshold proceed to tailoring.

Tailor

Generates a custom resume per job: reorders experience, emphasizes relevant skills, incorporates keywords from the job description. Your resume_facts (companies, projects, metrics) are preserved exactly. The AI reorganizes but never fabricates.

Cover Letter

Writes a targeted cover letter per job referencing the specific company, role, and how your experience maps to their requirements.

Auto-Apply

Claude Code or Codex launches a Chrome instance, navigates to each application page, detects the form type, fills personal information and work history, uploads the tailored resume and cover letter, answers screening questions with AI, and submits. A live dashboard shows progress in real-time.

The Playwright MCP server is configured automatically at runtime per worker. No manual MCP setup needed.

# Utility modes (no Chrome/apply-agent needed)
applypilot apply --mark-applied URL    # manually mark a job as applied
applypilot apply --mark-failed URL     # manually mark a job as failed
applypilot apply --reset-failed        # reset all failed jobs for retry
applypilot apply --gen --url URL       # generate prompt file for manual debugging
applypilot apply --agent codex         # use Codex instead of the default Claude agent

CLI Reference

applypilot init                         # First-time setup wizard
applypilot doctor                       # Verify setup, diagnose missing requirements
applypilot run [stages...]              # Run pipeline stages (or 'all')
applypilot run --workers 4              # Parallel discovery/enrichment
applypilot run --stream                 # Concurrent stages (streaming mode)
applypilot run --min-score 8            # Override score threshold
applypilot run --dry-run                # Preview without executing
applypilot run --validation lenient     # Relax validation (recommended for Gemini free tier)
applypilot run --validation strict      # Strictest validation (retries on any banned word)
applypilot apply                        # Launch auto-apply
applypilot apply --workers 3            # Parallel browser workers
applypilot apply --agent codex          # Launch auto-apply using Codex
applypilot apply --dry-run              # Fill forms without submitting
applypilot apply --continuous           # Run forever, polling for new jobs
applypilot apply --headless             # Headless browser mode
applypilot apply --url URL              # Apply to a specific job
applypilot status                       # Pipeline statistics
applypilot dashboard                    # Open HTML results dashboard

Contributing

See CONTRIBUTING.md for development setup, coding standards, and PR guidelines.


License

ApplyPilot is licensed under the GNU Affero General Public License v3.0.

You are free to use, modify, and distribute this software. If you deploy a modified version as a service, you must release your source code under the same license.

About

AI agent that applies to jobs for you. Any site. Any form.

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • Python 94.3%
  • PowerShell 5.1%
  • Other 0.6%