Setup and usage

Job Tracker is a Claude Code and Hermes Agent plugin for a disciplined, low-volume job search. It finds roles that fit your hard filters, verifies each one on the employer's own posting, and prepares tailored applications. It submits only through the employer's official apply flow, and only after you approve.

Requirements

  • Claude Code 2.1.295+ (Desktop app or CLI) or Hermes Agent
  • Node.js 22.18+. If it is missing, /job-tracker:setup offers to install it on macOS and Windows. The tracker uses built-in node:sqlite and runs TypeScript directly with no runtime npm dependencies.
  • Recommended: Gmail and Google Calendar connectors for recruiter replies, interview invites and reply drafts.
  • Recommended browser: Claude in Chrome or the host's built-in browser for logged-in job boards, employer pages and application forms.
  • Optional: a LinkedIn MCP server (read-only: job search and inbox).

Install

Claude Desktop

  1. Open the Claude desktop app ↗ and sign in. Choose Code, select Local, then choose a folder for your job search.
  2. Next to the message box, open + → Plugins → Add plugin. Add the repository as a marketplace, then install job-tracker for your user account.
    https://github.com/adamwardecki/job-tracker-mcp
  3. Start a fresh local session and type /job-tracker:setup to begin.

Added the marketplace back when it was called job-hunt-mcp? Run /plugin marketplace remove job-hunt-mcp inside Claude Code, then repeat the steps above. Your tracker data in ~/.job-tracker stays.

Claude Code (CLI)

/plugin marketplace add adamwardecki/job-tracker-mcp
/plugin install job-tracker@job-tracker-mcp

Then run /job-tracker:setup inside Claude Code.

Hermes Agent

git clone https://github.com/adamwardecki/job-tracker-mcp.git
cd job-tracker-mcp
plugin/scripts/hermes-install.sh

Restart Hermes and type /job-tracker:setup. Details and differences from Claude Code are in the Hermes guide on GitHub ↗.

Setup walkthrough

/job-tracker:setup walks through CV import, hard filters, preferences, writing rules, accounts (including which calendar your invites land on), connectors, browser check, sources, autonomy and the daily schedule, then runs a 5-result calibration sweep.

  • Every "no, because..." becomes a rule.
  • You can stop at any point and run /job-tracker:setup again to resume.
  • Already tracking in a markdown table? /job-tracker:import <folder> brings in an applied-log.md, preferences, queue notes, and your profile.

Commands

Command What it does
/job-tracker:setup Guided setup; resumable.
/job-tracker:sweep [--limit N] The daily run. Inbox, sourcing, verify, score, prepare, report, audit. Never submits.
/job-tracker:apply [role-id] Interactive apply: verify, write, fill, read back, then wait for your approval.
/job-tracker:approve <role-id> You type this on the filled form to allow one submit attempt for that role and page.
/job-tracker:triage <source> Reconcile and clean a tracker board with the delete guard.
/job-tracker:prep <company> Interview prep from your stories.
/job-tracker:status Pipeline summary and open items.
/job-tracker:board Kanban board in your browser. Drag a card to any lane to move a role.
/job-tracker:cover-letter <role-id> Cover letter, optionally as a one-page PDF.
/job-tracker:correct Turn your override into a rule with a reason and example.
/job-tracker:allow-consent Approve consent boxes for a specific application form.

Your data

The tracker runs locally, always. .mcp.json starts a stdio server on ~/.job-tracker/tracker.db. There is no network listener and no token. The directory is created owner-only (0700) and the database is 0600, because it holds your CV summary, pay floor and application history.

The board (/job-tracker:board) is the one exception: when you start it, it listens on 127.0.0.1 only, with a new token in each link, and stops after 30 idle minutes.

Nothing is sent to the plugin's author. There is no telemetry, analytics or crash reporting.

Privacy policy ↗: what is stored, what leaves your machine and how to delete it.

Developer docs

Development instructions, contributing guidelines, and the full specification are on GitHub: