Sandbox
@vaibhavarora14/job-application-agent

Agent skill for job search in Claude Code and Codex

This repo packages a job-application workflow as an agent skill. It uses a verified résumé, checks fit and duplicates, fills forms with confirmed facts, and tracks submissions and outcomes in private local state. The bundled CLI handles install, updates, autonomy settings, telemetry, and source sharing controls.

145 stars25 forksJavaScriptUpdated 6d ago
Who it's for

Builders who want their agent to search, apply, and track their own job applications without re-entering the same details.

What it delivers

You can run a private, repeatable job-search workflow with verified facts instead of redoing discovery and form-filling by hand.

What it does

Verified discovery and qualification

Searches a shared source catalog, verifies leads at the employer, and checks seniority, skills, location, authorization, compensation, and posting status.

Truthful application filling

Uses one canonical résumé and only facts that can be verified from the saved profile.

Duplicate and outcome tracking

Deduplicates applications, records confirmed submissions, and keeps an outcome ledger for later review.

Autonomy controls

Supports `review-each` and `routine-auto`, with commands to grant, inspect, or revoke durable autonomy.

Privacy controls

Stores profile data in Keychain, Credential Manager, or Secret Service, and keeps résumés, ledgers, and browser sessions out of the repo.

Telemetry and community sharing controls

Lets you inspect or disable analytics and source-sharing behavior from the CLI.

How to get it

  1. 1Install it
    npx job-application-agent@latest install
  2. 2Then tell your coding agent
    Use job-application-agent to onboard my résumé and job preferences.
  3. 3After onboarding, use natural commands
    search jobs
    list discovery sources for India and global remote engineering
    apply https://company.example/jobs/123
    apply all relevant jobs from this thread: <URL>
    run a round of 10
    show attention queue
    record outcome Company — Senior Engineer — interview
  4. 4For durable autonomy across resumable or scheduled runs
    echo '{"mode":"routine-auto"}' | node ~/.agents/skills/job-application-agent/scripts/job-application.mjs autonomy grant --stdin
  5. 5Check or revoke it at any time
    node ~/.agents/skills/job-application-agent/scripts/job-application.mjs autonomy status
    node ~/.agents/skills/job-application-agent/scripts/job-application.mjs autonomy revoke
  6. 6The installer places the skill at ~/.agents/skills/job-application-agent and enables…
    npx job-application-agent@latest status
    npx job-application-agent@latest update
    npx job-application-agent@latest updates disable
    npx job-application-agent@latest updates enable

README

💼 Job Application Agent

Find better roles, apply with verified facts, and learn from outcomes.

Validate npm MIT License Agent Skills

Get started · Safety · Privacy · Dashboard · Security


Job Application Agent is an Agent Skill that helps a coding agent discover, evaluate, complete, and track your own job applications. It uses one verified résumé, checks eligibility and duplicates, and records only confirmed submissions.

🚀 Get started

Install it:

npx job-application-agent@latest install

Then tell your coding agent:

Use job-application-agent to onboard my résumé and job preferences.

After onboarding, use natural commands:

search jobs
list discovery sources for India and global remote engineering
apply https://company.example/jobs/123
apply all relevant jobs from this thread: <URL>
run a round of 10
show attention queue
record outcome Company — Senior Engineer — interview

Requires Node.js 20 or newer and a browser-capable coding agent.

On Linux, profile storage uses the Secret Service via the secret-tool CLI. Install it with sudo apt-get install libsecret-tools (Debian/Ubuntu) or the equivalent package manager command for your distribution.

Unlike macOS Keychain or Windows Credential Manager, the Linux Secret Service has no always-running system daemon: a keyring daemon (GNOME Keyring, KWallet, or similar) must be running in the user session for secret-tool to store or read the profile. On a desktop login this is normally already the case; on headless servers, containers, or SSH-only sessions, start one explicitly (e.g. gnome-keyring-daemon --unlock --components=secrets) before first use.

✨ What it does

StageBehavior
DiscoverSearches a shared, versioned catalog of direct careers, ATS platforms, networks, feeds, and job boards, then verifies every lead at the employer.
QualifyChecks seniority, skills, location, authorization, compensation, and posting status.
ApplyFills forms and uploads one canonical résumé using verified facts only.
TrackDeduplicates applications and records only visible submission confirmations.
ImproveReviews outcomes and proposes targeting changes without rewriting candidate facts.

🤖 Choose your autonomy level

  • review-each — review every completed application before submission.
  • routine-auto — allow routine submissions while keeping sensitive and judgment-heavy steps with you.

For durable autonomy across resumable or scheduled runs:

echo '{"mode":"routine-auto"}' | node ~/.agents/skills/job-application-agent/scripts/job-application.mjs autonomy grant --stdin

Check or revoke it at any time:

node ~/.agents/skills/job-application-agent/scripts/job-application.mjs autonomy status
node ~/.agents/skills/job-application-agent/scripts/job-application.mjs autonomy revoke

🛡️ Safety

The agent pauses for:

  • passwords, SSO, MFA, and CAPTCHA;
  • legal attestations and government identifiers;
  • demographic or voluntary self-identification questions;
  • unclear work authorization, sponsorship, location, or compensation;
  • claims that cannot be verified from your profile or résumé;
  • browser or operating-system permission prompts.

It never reads browser cookies or session files, bypasses access controls, or counts a filled form as a submission.

🧭 How it works

flowchart LR
    A["Verified résumé + profile"] --> B["Find active roles"]
    B --> C["Check fit + duplicates"]
    C --> D["Fill truthful application"]
    D --> E{"Needs you?"}
    E -- Yes --> F["Attention queue"]
    E -- No --> G["Submit"]
    F --> G
    G --> H["Confirm + record"]

The bundled CLI handles private profile storage, résumé import, scoring, duplicate checks, resumable rounds, attention queues, and application/outcome ledgers. The coding agent handles discovery and browser interaction under the rules in SKILL.md.

Discovery combines the reviewed SOURCES.json catalog with an anonymous community registry. Every confirmed application automatically contributes its canonical public job URL, company, role, application channel, and provider; prior confirmed ledger entries backfill during later commands after a one-command disclosure grace period. Jobs, repeatable boards, and feeds are logged pending and become visible in the public dashboard or CLI only after maintainer review. Disable both forms of community sharing independently from analytics with sources sharing disable.

Rounds require recorded attempts across at least three distinct discovery sources, including a successful search, and source attribution for confirmed submissions. If more than 60% of submissions come from one source, the agent must explain the concentration. Blockers and empty results are reported; fit requirements never change to meet a source quota. See round coverage.

🔐 Privacy

DataWhere it stays
ProfilemacOS Keychain, Windows Credential Manager, or Linux Secret Service (libsecret)
Analytics name and email (unless opted out)Private PostHog events after disclosure; local sharing preference in owner-only state
Résumé and ledgersOwner-only local state directory
Browser loginExisting browser session
Community-sharing preference and delivery receiptsOwner-only local state directory
Skill codeVersion-controlled installation directory

Candidate data, résumés, application history, credentials, and browser sessions are never committed to this repository.

Structured usage analytics and name/email sharing are enabled by default for support and product improvement. After a disclosure command with no identity transmission, subsequent commands include the name and email explicitly saved in the candidate profile in the maintainer's private PostHog analytics. No résumé content, other profile fields, prompts, answers, browser data, IP addresses, or raw errors are sent. telemetry identity disable stops identity sharing and rotates the analytics UUID so future usage is anonymous; telemetry disable stops all analytics. Previously collected events remain subject to the retention policy.

Anonymous community sharing is also enabled by default, separately from analytics. Confirmed applications share only a canonical public job URL, company, role, application channel, optional coarse discovery source, and derived provider URL—never candidate identity, answers, résumé, score, referral parameters, or submission timestamp. Repeatable discovery surfaces share their bounded catalog metadata through a maintainer-review queue. The registry stores no raw installation IDs; record-scoped contributor hashes are used only for deduplication and counts, never as identity or publication authority.

node ~/.agents/skills/job-application-agent/scripts/job-application.mjs telemetry status
node ~/.agents/skills/job-application-agent/scripts/job-application.mjs telemetry identity disable
node ~/.agents/skills/job-application-agent/scripts/job-application.mjs telemetry disable
node ~/.agents/skills/job-application-agent/scripts/job-application.mjs sources sharing status
node ~/.agents/skills/job-application-agent/scripts/job-application.mjs sources sharing disable
node ~/.agents/skills/job-application-agent/scripts/job-application.mjs sources jobs

See ANALYTICS.md for the event contract and retention policy, or view the public aggregate dashboard.

Installation and update details

The installer places the skill at ~/.agents/skills/job-application-agent and enables automatic updates by default. Compatible vendor skill directories are also supported when they already exist.

npx job-application-agent@latest status
npx job-application-agent@latest update
npx job-application-agent@latest updates disable
npx job-application-agent@latest updates enable

Updates are staged and validated before replacement. Private candidate state lives outside the replaceable skill directory.

🧰 Develop

npm test

GitHub Actions validates the skill and runs the same test suite on every pull request. See CONTRIBUTING.md for the full local verification and review contract. To try the workflow without installing, paste SHARE_PROMPT.md into a new agent chat.

⚖️ Responsible use

Use this project only for your own job search. It does not guarantee interviews, offers, eligibility, or application accuracy. Never use it to impersonate another person, bypass CAPTCHA, evade access controls, or make deceptive claims.

Report privacy or security issues through the process in SECURITY.md. Do not open a public issue containing personal data or application records.

Released under the MIT License.

Files in the repo

Repository payload18 top-level entries
  • .github
  • bin
  • installer
  • job-application-agent
  • scripts
  • site
  • site-proxy
  • state-worker
  • telemetry-worker
  • .gitignore
  • AGENTS.md
  • CONTRIBUTING.md
  • LICENSE
  • package-lock.json
  • package.json
  • README.md
  • SECURITY.md
  • SHARE_PROMPT.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More skills

mvanhorn/
last30days-skill

AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary

62k

AI video skill for Claude Code & Codex — cinematic product videos with Remotion: 152 shot recipe cards, 209 motion previews, a production-ready template

8k
Jakeschincariol/
linkedin-agent-skill

Eleven free Claude skills that run a LinkedIn account: posts off 21 hook formulas, comments, replies, profile score, weekly plan, and a humanizer that strips the AI fingerprint and scores the draft before it goes out.

108
internet-court/
internet-court-skill

The trust layer for agent-to-agent commerce — natural-language mandates, ERC-7710 delegated permissions, x402 payments, escrow, and dispute resolution as one open, catch-all Agent Skill / Claude Code plugin.

5.5k
JimLiu/
baoyu-design

Run Claude Design locally as an Agent Skill — Cursor, Claude Code & more. Produce polished UI mockups, prototypes, decks & wireframes as self-contained HTML, without claude.ai/design. Best with Opus 4.8.

4k
Forward-Future/
loopy

A library of practical AI-agent loops and an installable skill for finding, adapting, and designing repeatable agent workflows.

3.1k