Action-based CLI for tracking a job hunt
Project description
jobhound
Action-based CLI for tracking a personal job hunt. Status changes are a
consequence of recorded events (apply, log, withdraw, …), not direct
field edits.
Install
uv tool install jobhound # or: pipx install jobhound
Exposes the jh command.
Usage
jh new --company Acme --role "Senior Engineer"
jh apply acme
jh log acme --channel email --direction to --who recruiter \
--body draft.md --next-status screen
jh note acme --msg "Recruiter mentioned a hybrid setup"
jh withdraw acme
jh list
jh show acme # human-readable detail; --json for the envelope
jh export --active-only # bulk JSON envelope to stdout
Each command is a verb on a single opportunity. Run jh --help for the
full set: new, apply, log, withdraw, ghost, accept, decline,
note, priority, tag, link, contact, list, edit, archive,
delete, sync, show, export.
jh export filters: --status and --priority (comma-separated or
repeatable), --slug (substring), --active-only, --include-archived.
Managing opportunity files
jh file provides uniform access to files inside an opportunity (CVs,
research notes, correspondence, etc.). Available subcommands:
jh file list <slug>— list filesjh file show <slug> <name>— print to stdout; use--out <path>to exportjh file write <slug> <name> --content <str>(or--from <path>)jh file append <slug> <name> --content <str>(or--from <path>)jh file delete <slug> <name> --yes
Pass --base-revision <r> (the revision string from a prior jh file show
or jh file write) to enable optimistic-concurrency conflict detection.
For text files, a 3-way merge is attempted automatically; binary conflicts
surface the current file's metadata and suggest an alternate name.
Storage
Per-opportunity data is stored under $XDG_DATA_HOME/jh/ (defaults to
~/.local/share/jh/) as a TOML file plus markdown notes and
correspondence. The data root is a git repo with auto-commits on every
state change — your history is auditable and you can push it anywhere.
AI integration (MCP)
jh ships a Model Context Protocol server so AI clients (Claude
Desktop, Claude Code, Continue, Zed, …) can read and modify your job
hunt directly. 37 MCP tools cover read operations (list, show, stats,
files, file content), state transitions (apply, log, withdraw, ghost,
accept, decline), field setters, relation operations (tags, contacts,
links), opportunity ops (notes, archive, delete), and a uniform file
API (read, write, import, export, append, delete) with
optimistic-concurrency conflict detection and 3-way merge for text
files.
Install the optional extra:
uv tool install 'jobhound[mcp]'
Then point your MCP client at the server. For Claude Desktop, add to
claude_desktop_config.json:
{
"mcpServers": {
"jobhound": {
"command": "jh",
"args": ["mcp"]
}
}
}
For zero-install discovery (no uv tool install needed):
{
"mcpServers": {
"jobhound": {
"command": "uvx",
"args": ["--from", "jobhound[mcp]", "jh-mcp"]
}
}
}
The same pattern works for Claude Code (.mcp.json), Continue, Zed,
and any other MCP-spec-compliant client.
By default the AI gets full CLI parity — including writes. Most MCP
clients show each tool call to the user before executing it; that's
the consent layer. The one tool that requires explicit
double-confirmation is delete_opportunity, which needs confirm=true
in the call args (otherwise it returns a preview only, no side
effects).
Status
Pre-1.0. The CLI surface is stable; semantic-versioned releases via Conventional Commits.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jobhound-0.6.1.tar.gz.
File metadata
- Download URL: jobhound-0.6.1.tar.gz
- Upload date:
- Size: 39.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d811a142428b5d9a8c2a383f9a8377a9fb9d0b450220ecccec71d73347254ae9
|
|
| MD5 |
8a24c3610d7d1fae26db52e47acc3bf0
|
|
| BLAKE2b-256 |
ef5cc1e97137fe20f6eefe9c3029b5c6b6b45347d8814a7c5abacee5ee987e46
|
Provenance
The following attestation bundles were made for jobhound-0.6.1.tar.gz:
Publisher:
release.yml on yo61/jobhound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jobhound-0.6.1.tar.gz -
Subject digest:
d811a142428b5d9a8c2a383f9a8377a9fb9d0b450220ecccec71d73347254ae9 - Sigstore transparency entry: 1539622602
- Sigstore integration time:
-
Permalink:
yo61/jobhound@d79191b9d615511bc5bc45b69dcebffe7fe11cfd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/yo61
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d79191b9d615511bc5bc45b69dcebffe7fe11cfd -
Trigger Event:
push
-
Statement type:
File details
Details for the file jobhound-0.6.1-py3-none-any.whl.
File metadata
- Download URL: jobhound-0.6.1-py3-none-any.whl
- Upload date:
- Size: 66.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd5c0d7435b22bfe28b8f2633ea3223b5c87c72a207bdc81808c341fa784bafb
|
|
| MD5 |
84ead75fe66a7e44ed038ec4947be1cd
|
|
| BLAKE2b-256 |
490e6242c069ca4a92b36759383c3082a25109b0e42dc6925b6481b91e735290
|
Provenance
The following attestation bundles were made for jobhound-0.6.1-py3-none-any.whl:
Publisher:
release.yml on yo61/jobhound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jobhound-0.6.1-py3-none-any.whl -
Subject digest:
dd5c0d7435b22bfe28b8f2633ea3223b5c87c72a207bdc81808c341fa784bafb - Sigstore transparency entry: 1539622740
- Sigstore integration time:
-
Permalink:
yo61/jobhound@d79191b9d615511bc5bc45b69dcebffe7fe11cfd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/yo61
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d79191b9d615511bc5bc45b69dcebffe7fe11cfd -
Trigger Event:
push
-
Statement type: