A Claude Code plugin that applies to jobs for you.
Give it job URLs. It scrapes each posting, drops the ones you can't honestly apply to, tailors your LaTeX resume per job, has a recruiter subagent review it, compiles the PDF, fills the form, submits, and hands you a CSV of what happened.
It will not solve CAPTCHAs, create accounts, enter passwords, or lie on your behalf. Those jobs come back to you with the tab open.
/plugin marketplace add ashimsharma10/ai_agent_apply
/plugin install ai_agent_apply@ai-agent-applyNeeds Python 3.10+, pip install -r requirements.txt, playwright install chromium, pdflatex, and Node (npx). Playwright MCP starts automatically as part of the plugin.
Just ask. The skill creates user_profile/, copies templates in, and stops so you can fill them:
/ai_agent_apply set me up
Then fill user_profile/profile.json (contact info, work authorization, EEO answers), edit user_profile/tailor_prompt.txt (your resume rules), and drop your base resume in as a .tex.
Several resumes for different role types? Put them in subfolders and the skill picks per job:
user_profile/resume/data_scientist/base.tex
user_profile/resume/ai_engineer/base.tex
Everything in user_profile/, JD/, and output/ is gitignored. Your data never leaves your machine.
Copy any of these.
Apply to a list of jobs, end to end:
/ai_agent_apply apply to these jobs:
https://job-boards.greenhouse.io/acme/jobs/123456
https://jobs.lever.co/acme/abcd-efgh
https://jobs.ashbyhq.com/acme/uuid-here
Apply from a CSV (columns index,url — the index becomes the output folder number):
/ai_agent_apply fill everything in jobs.csv
Fill everything but stop before submitting, so you can check each one:
/ai_agent_apply apply to the jobs in jobs.csv, but review only — don't submit
Just make tailored resumes, don't touch any forms:
/ai_agent_tailor_resume tailor my resume for the jobs in jobs.csv
Redo one job's resume:
/ai_agent_tailor_resume redo job 14, use Palo Alto CA as my address, and rewrite the summary
output/2026-07-22/
5_acme_machine_learning_engineer/
jane_doe_resume.pdf ← uploaded to this job
jane_doe_resume.tex ← source, so you can edit and recompile
8_globex_data_analyst/
application_log.md ← per-job narrative, survives interruption
apply_report_2026-07-22.csv
Folder numbers come from your input CSV, gaps and all — skip job 23 as a duplicate and the next folder is still 24_.
The CSV:
| Date | Position | Company | Resume Tailored? | Status | Reviewed? |
|---|---|---|---|---|---|
| 2026-07-22 | Machine Learning Engineer | Acme | yes | SUBMITTED | yes |
| 2026-07-22 | Data Analyst | Globex | yes | MANUAL | yes |
Statuses: SUBMITTED (confirmation verified) · READY-FOR-REVIEW (filled, waiting for you) · MANUAL (CAPTCHA, account wall, or a question only you can answer — tab left open) · DISCARDED (with the quoted knockout sentence) · FAILED-SCRAPE / FAILED-COMPILE.
Reviewed? is yes only when the recruiter subagent actually ran and its edits were applied. It defaults to no — a review that didn't happen never reports as if it did.
Every run records what you applied to in data/applications.jsonl (gitignored), and the pipeline warns you before tailoring if you're about to re-apply to the same posting, role, or company. Seed it once from past runs with python -m scripts.backfill_tracker. Inspect anytime:
python scripts/tracker.py stats
python scripts/tracker.py list --status applied
python scripts/tracker.py check --url "<job-url>" --company "Acme" --role "Data Scientist"user_profile/config.json:
auto_submit—falseby default: fills everything, stops before submit. End-to-end runs submit anyway unless you say "review only".knockout.hard_knockout_phrases— postings requiring citizenship or clearance you don't have. Discarded, never applied to.knockout.sponsorship_policy— how the visa question gets answered. Postings that state outright they won't sponsor are always skipped before tailoring, regardless of this setting.save_user_overrides_to_profile— banks reusable screening answers ("notice period?") so they stay consistent. Never banks cover letters, EEO, or work-authorization attestations.
user_profile/tailor_prompt.txt holds your resume rules — years of experience to claim, how to frame past titles, which address to use for which state, skills to always keep.
This automates your applications with your data, and you're responsible for what goes out in your name. Read the tailored resumes — they're all saved with sources. Keep auto_submit off until you trust it. The knockout filter and recruiter-reviewer subagent exist so you send fewer, better applications.
MIT