jobhunt-app.com · Mac App Store · Issues
Local-first job tracking. A Chrome extension captures job postings from any site; a native macOS app stores them in SwiftData, runs AI extraction, and shows a full tracking UI — all on your own machine, no cloud required.
JobHunt is a native macOS app for job hunters. Capture postings from any job board via the Chrome extension, let the AI extract structured fields and score your resume fit, and track your pipeline from application to offer — entirely offline.
See docs/workflow.md for the end-to-end workflow (capture → dedup → automatic AI processing → review → resolve).
Open any posting, click the JobHunt button, and it's captured. The extension shows you what it found — title, salary, location, remote status — before it saves anything.
Company, salary band and remote status are pulled out automatically. Then every requirement in the posting is judged against your resume separately, with the evidence it used — so you can see why a job scored what it did, not just the number.
Sort by fit and the postings you should spend an evening on come to the top.
Watch the 30-second walkthrough (captions) — capture, extraction, the per-requirement score, and the ranked list. Recorded from the running app against a real job posting. Extraction really does take about a minute; the video cuts that wait and says so.
There are two ways to install the Mac app:
- DMG — direct download from GitHub Releases; includes the MCP server integration.
- Mac App Store — sandboxed, so the MCP server isn't available.
Both are the same app and share nothing but the name — a DMG install and a MAS install keep separate local databases.
From GitHub Releases (recommended):
- Download the latest
Jobhunt-*.dmgfrom Releases. - Open the DMG and drag JobHunt to Applications.
From the Mac App Store:
- JobHunt — Find Your Next Job (sandboxed; MCP not available).
Requires macOS 15.0 (Sequoia) or later.
Install JobHunt Capture from the Chrome Web Store, open any job posting, and click the JobHunt button to capture it. The Mac app must be running; if it isn't, captures queue in the extension and sync once it's open.
Configure your AI provider in Settings → AI Provider. Everything can run locally — point
JobHunt at LM Studio on http://127.0.0.1:1234 and no job data ever leaves your Mac. For a cloud
model, see Which model? below.
Supported providers:
- LM Studio (default, local) · Ollama · any OpenAI-compatible endpoint
- OpenAI · Anthropic · Google · OpenRouter
- Apple Foundation Models (macOS 26+, DMG only)
Cloud providers require your consent before any data is sent, and you're billed by that provider directly.
google/gemini-3.7-flash via OpenRouter — ~$1.40 per 100 postings. It passed 25 of 25
fit-judgement checks and gave the same verdicts on every run. GPT-5.6 Sol scored identically against
the same tests for five times the price.
Avoid Gemini 3.1 Flash Lite — it credits résumé experience that isn't there, on 5 runs of 5.
OpenRouter isn't required — you can use a Google, OpenAI, Anthropic or DeepSeek key directly. Going direct means one fewer company handling your résumé; on price the two are a wash at list rates.
Which model should I use? has the full comparison and costs · benchmark method and caveats
The DMG build ships a jobhunt-mcp helper that bridges stdio JSON-RPC to the running app's HTTP
server, exposing your job database as tools for AI assistants. The app must be running, and the
Mac App Store build doesn't include it (sandbox restriction). The helper lives at
/Applications/Jobhunt.app/Contents/Helpers/jobhunt-mcp — every client below points at that path.
Claude Code —
claude mcp add jobhunt -- /Applications/Jobhunt.app/Contents/Helpers/jobhunt-mcpClaude Desktop — Settings → Developer → Edit Config (~/Library/Application Support/Claude/claude_desktop_config.json):
{ "mcpServers": { "jobhunt": { "command": "/Applications/Jobhunt.app/Contents/Helpers/jobhunt-mcp" } } }Codex CLI — add to ~/.codex/config.toml:
[mcp_servers.jobhunt]
command = "/Applications/Jobhunt.app/Contents/Helpers/jobhunt-mcp"or non-interactively:
codex mcp add jobhunt -- /Applications/Jobhunt.app/Contents/Helpers/jobhunt-mcpGemini CLI — add to ~/.gemini/settings.json (same shape as Claude Desktop):
{ "mcpServers": { "jobhunt": { "command": "/Applications/Jobhunt.app/Contents/Helpers/jobhunt-mcp" } } }Restart the client after editing so it re-reads its config. ChatGPT desktop and the Gemini web/desktop app currently support only remote MCP connectors (a server URL), not a local command, so JobHunt's on-device bridge can't be registered with them yet — any MCP client that accepts a local command works. (MCP client support changes fast; check each tool's MCP docs if a key differs.)
End-user setup is also covered in the help FAQ.
Marking a job applied from an assistant. mark_job_applied takes just the posting url: it
resolves an existing job by capture URL, canonical URL, normalized variants (trailing slash, utm_* /
gh_src tracking params) or the job's application URL, and creates a minimal job when the posting was
never captured. It's idempotent — repeating it never creates a second job, status event, or note — and
a job already at Interview/Offer is reported back rather than regressed.
Trust boundary: the MCP endpoint is local-only (127.0.0.1) and requires a per-device bearer token at ~/.jobhunt-mcp-token (owner-readable only). The job_get tool omits raw captured page text (selected_text, visible_text) by default; pass include_raw_text: true to include it. Do not expose the MCP port or token to remote systems.
- Capture from anywhere — works on LinkedIn, Greenhouse, Lever, Ashby, iCIMS, Workday, and most job boards
- AI extraction — pulls salary, requirements, work mode, and more from unstructured job descriptions
- Resume fit scoring — ranks each job against your resume with dimension-level explanations
- Duplicate detection — groups identical or near-identical postings across sources
- Availability checks — flags saved postings that have been taken down
- Referral tracking — track a referral per contact (requested → responded → submitted), with dashboard reminders to ask and follow up
- Application history — a date-stamped record of every job you marked applied, exportable to CSV for employment/benefit reporting
- Dashboard — daily accomplishments recap, pipeline funnel, follow-ups, and referral nudges
- CSV export — export the current filtered list (⌘⇧E). This is job-list fields only, not a full backup — use Settings → Back Up Data for a complete, restorable backup of your database.
- Offline queue — captures queue in the extension if the app isn't running
- MCP server — expose your job database as tools for Claude and other AI assistants (DMG only)
Contributions are welcome — including AI-assisted or AI-generated ones. There's no separate process for them; the same quality bar applies.
To request or discuss any change — a bug, a feature, or a design question — please open an issue or submit a pull request first, so direction stays visible and effort isn't wasted.
Build setup, the pinned toolchain, the test gates, and the PR checklist are all in CONTRIBUTING.md.
See LICENSE.


