Job Tracker

io.github.adamwardeckiPublished by GitHub account adamwardeckiv0.4.0Updated Nov 7, 2026

Local job-search tracker: roles, a status machine with evidence, rules, interviews, daily reports.

Overview

AI-generated overview

A local job-search tracker that finds fitting roles, verifies them, tracks status, interviews and replies, and drafts applications for your approval.

What you can do
  • Run a daily sweep that finds roles matching your hard filters, verifies each on the employer's posting and dedupes against roles already touched
  • Track roles through a status machine with evidence, rules, interviews and a kanban board, plus pipeline summaries and open items
  • Prepare applications: verify, write, fill the form, read it back, then wait for your explicit approval before one submit attempt
  • Draft cover letters, optionally as a one-page PDF, and interview prep from your own stories
  • Turn your overrides into reusable rules, and write one short daily report
When to use it
Use it if you are running a focused, low-volume job search and want an assistant to keep a local pipeline, verify postings, prepare tailored applications and report daily, rather than mass-applying.
Requirements
Runs locally as a stdio server; needs Claude Code 2.1.295 or newer (Desktop or CLI) or Hermes Agent, and Node.js 22.18 or newer. The database lives in the folder set by JOB_TRACKER_HOME (default ~/.job-tracker). Gmail and Google Calendar connectors, a browser, and an optional read-only LinkedIn MCP server are recommended.
Before you install
It fills and can submit job applications, though submission requires your approve command in the same session and a passing gate check. It reads job postings and forms through a browser and may use Gmail, Calendar and LinkedIn connectors, so those accounts' data is involved. It is early-stage and source adapters may break when job sites change. It will not create accounts, enter passwords, solve CAPTCHAs or fill sensitive personal fields.

Installation

In SourceWeft

  1. Open Job Tracker in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Job Tracker

A Claude Code (and Hermes Agent) plugin that runs a disciplined job search for one person. Every weekday it finds roles that fit your hard filters, verifies each one on the employer's own posting, dedupes against everything you have touched, and prepares tailored applications. It submits only through the employer's official apply flow, and only after you approve. It tracks replies and interviews and writes one short daily report.

The design follows one principle: fewer, better applications.

Website: jobtrackermcp.com

Setup and usage docs: jobtrackermcp.com/docs.html

Status: early, and in active development. Expect rough edges, and expect the source adapters to break when job sites change. Issues and pull requests are welcome.

What it won't do

  • Send email or LinkedIn messages. It writes drafts only, and a hook blocks every send tool.
  • Submit an application without your /job-tracker:approve <role_id> in the same session.
  • Create accounts, enter passwords, solve visible CAPTCHAs, tick consent boxes, or fill personal-data fields (passport, nationality, age, gender, marital status, ID numbers).
  • Auto-apply at volume.

Requirements

  • Claude Code 2.1.295 or newer (the Desktop app or the CLI), or Hermes Agent.
  • Node.js 22.18 or newer. If it is missing, /job-tracker:setup offers to install it on macOS and Windows. The tracker uses the built-in node:sqlite, and Node runs the plugin's TypeScript directly. There are no runtime npm dependencies.
  • Recommended connectors: Gmail and Google Calendar.
  • Recommended browser: Claude in Chrome or the host's built-in browser.
  • Optional: a LinkedIn MCP server (read-only use: job search and inbox).

Full setup and usage instructions: jobtrackermcp.com/docs.html

Install

Claude Code:

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

Hermes Agent:

bash
git clone https://github.com/adamwardecki/job-tracker-mcp.gitcd job-tracker-mcpplugin/scripts/hermes-install.sh

Restart Hermes and type /job-tracker:setup. Details: docs/hermes.md.

The tracker is also in the MCP Registry as io.github.adamwardecki/job-tracker, packaged as an MCPB bundle attached to each GitHub release.

Commands

CommandWhat it does
/job-tracker:setupGuided setup; resumable.
/job-tracker:sweep [--limit N]The daily run. 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.
/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:statusPipeline summary and open items.
/job-tracker:boardKanban board in your browser.
/job-tracker:cover-letter <role-id>Cover letter, optionally as a one-page PDF.
/job-tracker:correctTurn your override into a rule with a reason and example.

Your data

The tracker runs locally. A stdio server on ~/.job-tracker/tracker.db. No network listener, no token. The directory is owner-only (0700), database is 0600. Nothing is sent to the plugin's author.

Privacy policy (source).

Hooks (hard gates)

GateRule
SendEmail/LinkedIn sends blocked in every session.
SubmitNeeds /job-tracker:approve and a passing gate_check.
Board deleteNeeds a fresh JOBHUNT_TRIAGE_GUARD with ok: true.
Personal data and consentPassport, nationality, age, DOB, gender, marital, ID fields denied; consent boxes stay unticked unless you allow them.
StopA sweep session cannot end until every role has an event and the report was rendered.

Development

npm run setup   # dev only: TypeScript, the Node types and Biome, installed into dev/npm test        # tsc, then the Node and Python tests

The code is TypeScript that Node runs directly (type stripping), so there is no build step and nothing to install at runtime.

See CONTRIBUTING.md before opening a pull request.

Design choices

  1. Local only. The tracker is SQLite behind a stdio server in ~/.job-tracker.
  2. The daily run is a local scheduled task.
  3. LinkedIn is read-only and optional. Send and connect tools are blocked by a hook.
  4. Voice. write-note uses an installed humanizer or writing-style skill when present, else its own rules.
  5. Templates ship neutral. Your own values go in through setup.

License

MIT

Source: README.md at commit 72d1307

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v0.4.0LatestNov 7, 2026
  2. v0.3.3Oct 21, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts