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:setupoffers to install it on macOS and Windows. The tracker uses built-innode:sqliteand 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
- Open the Claude desktop app ↗ and sign in. Choose Code, select Local, then choose a folder for your job search.
-
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 -
Start a fresh local session and type
/job-tracker:setupto 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:setupagain to resume. -
Already tracking in a markdown table?
/job-tracker:import <folder>brings in anapplied-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: