JustHireMe: A Local-First Job Search Workbench with an AGPL Catch
Local-first AI job intelligence workbench for scraping roles, ranking fit, and generating tailored application materials.
At a glance
- What is it?
- JustHireMe bundles scraping, deterministic ranking, graph-backed matching and document generation into a Tauri desktop app with a Python 3.13 sidecar. The design is genuinely offline-first, but the AGPL-3.0 licence and the ad-hoc signed macOS build are the two facts that decide most adoption questions.
- Who is it for?
- Adopt JustHireMe if you want job discovery and tailoring to run on your own machine, you are comfortable with a Tauri frontend plus a Python 3.13 sidecar, and AGPL-3.0 does not conflict with how you intend to use or redistribute it. Do not adopt it if you need a notarized macOS install, a stable auto-apply pipeline, or an OS keychain for stored API keys, because the README lists all three as unfinished or experimental.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The Problem JustHireMe Targets: Job Boards You Do Not Control
The README opens with a blunt framing: the project is for people who are tired of noisy job boards and black-box AI apply tools. That sentence is the whole product thesis. The complaint has two halves. The first is signal quality. Job boards mix stale postings, thin listings and senior-only roles into the same feed, and the user pays the cleanup cost. The second is opacity. Cloud apply tools submit applications and generate documents through a pipeline the candidate cannot inspect, which makes it hard to know why a role was surfaced or what text was sent on your behalf. JustHireMe answers both by moving the pipeline onto the desktop and making the ranking step explainable. The stated audience is broad rather than software-specific. The README claims discovery, ranking and tailoring work for any field, including healthcare, trades, finance, law, education, hospitality and creative work, and that scoring is relative to the candidate's own domain rather than a fixed technology vocabulary. Location handling follows the same pattern: any city or region worldwide, auto-detected from the résumé or set explicitly, with remote, hybrid and onsite preferences. That is a wider claim than most job-search tools make, and it is the claim worth probing first if your field is not software.
Architecture: Tauri Shell, Python Sidecar, Kuzu Graph and LanceDB Vectors
The repository describes a split stack. The desktop shell is Tauri, the backend is a Python 3.13 sidecar API, and the data layer combines Kuzu graph data with LanceDB vectors. The README calls the matching path GraphRAG: fit scores are backed by proof drawn from a Kuzu skill and project graph rather than returned as a bare number. Semantic matching runs on a bundled ONNX model, all-MiniLM-L6-v2, with a deterministic hashing fallback when the model is unavailable. That fallback matters more than it looks. It means semantic matching degrades to something reproducible rather than failing outright, which is the right shape for an offline tool. The pipeline itself is staged and named in the README: scrape, quality gate, rank, match, customize. The quality gate rejects stale, thin, spammy, senior-only or low-context leads before they enter the pipeline. Ranking combines deterministic rules, feedback learning and optional LLM reasoning. Matching compares jobs against profile context using the graph and vector stores. Customization emits a tailored résumé PDF, a cover letter PDF and outreach drafts. Ingestion is deliberately tolerant: PDF, DOCX, TXT and MD files, JSON Resume exports, LinkedIn zips, GitHub and portfolio URLs, with an import report that states what was pulled in, skipped or capped. That report is the most interesting design choice in the README, because it turns silent parsing failure into something the user can see.
Running It: Installers, First-Run Download and the Keyless Default
The README states that every release is built by GitHub Actions from a v* tag and ships installers for Windows, macOS and Linux. Windows gets an .exe, macOS gets a .dmg plus .app, and Linux gets .deb and AppImage packages. The installer is described as roughly 100 MB, with the heavy runtime (browser, vector libraries and the embedding model) downloaded once on first run and then cached. This is the detail that decides whether a first install succeeds on a restricted network: the app is thin, but it is not self-contained until that download finishes. Auto-update is built in and pulls from the latest GitHub release. The keyless claim is the other operational fact. Discovery, ranking and generation are said to run with zero API key, using local Ollama or an existing Claude Code or Codex CLI subscription for every LLM step. Keyed providers such as OpenAI, Gemini and Groq, plus more than fifteen others, are optional. API keys live in local app settings, with .env reserved for development overrides, and the README states an OS keychain is planned rather than shipped. Repository materials do not include the exact CLI invocation for the sidecar, so the reliable entry point is the packaged installer for your platform. Setup is therefore a download-and-run path, not a pip install, and anyone expecting a server deployment should read that as a boundary rather than a gap.
Where JustHireMe Is the Wrong Tool
Three limitations are stated outright, and each one disqualifies a specific kind of user. First, browser automation and auto-apply exist in the repository but are experimental, opt-in, disabled by default and unsupported as part of the stable core. If your goal is unattended mass application, this project is not that, and the README does not pretend otherwise. Second, the macOS build is ad-hoc signed and not yet notarized, so Gatekeeper may require an Open Anyway step. That is a real friction point for anyone distributing the app inside an organization with managed Macs. Third, API keys are stored in local app settings rather than an OS keychain, which the README lists as planned. Anyone treating the desktop as a shared or semi-trusted machine should weigh that. There is also a structural limitation that follows from the architecture: the app is a desktop workbench, so there is no documented headless or server mode for running the pipeline on a schedule. And because the whole product rests on source adapters, coverage is the practical ceiling. The README says sponsorship funds source adapter coverage, which implies breadth is a moving target rather than a finished surface. If your target employers post somewhere no adapter reaches, the pipeline has nothing to rank.
How It Differs from Cloud Apply Tools and Plain ATS Alerts
The obvious comparison is a cloud apply service, and the difference is architectural rather than cosmetic. A cloud tool holds your profile and documents on someone else's infrastructure and runs ranking where you cannot inspect it. JustHireMe keeps the workbench local, runs the embedding model on-device, and exposes the ranking reason through the Kuzu graph. The trade is convenience for control: you manage the install, the first-run runtime download and your own model backend. A second comparison is the plain ATS alert or job board email digest. Those deliver a list and stop. JustHireMe adds a quality gate before ranking, then produces tailored résumé and cover letter PDFs plus outreach drafts. Whether that output beats a careful manual application is a judgement each user makes, but the pipeline stages are at least visible. A third comparison is a general-purpose agent framework pointed at job boards. That route gives you flexibility and no opinionated pipeline. JustHireMe ships the opinion: a fixed sequence of scrape, gate, rank, match, customize, with a local CRM layer and feedback learning built around it. If you want to assemble your own flow, the fixed sequence is a constraint. If you want the sequence decided for you, it is the product.
Maintenance, Release Cadence and the AGPL-3.0 Obligation
The release history in the repository shows a steady cadence: v1.6.1 and v1.6.2 in late August 2026, then v1.7.0 on 2026-09-01, with the last push to main on 2026-09-09. Installers are rebuilt every version by GitHub Actions from a v* tag, and auto-update means users receive those builds without manual reinstalls. That is a low per-user upgrade cost. The maintenance cost sits on the other side: the project is built and maintained by a single maintainer, Vasudev Siddh, and the README states that sponsorship funds source adapter coverage and the local-first architecture. Adapter coverage is the part most likely to need ongoing work, because job sources change. The licence is AGPL-3.0. That is a copyleft licence with a network-use clause, and it is the single fact most likely to block adoption inside a company. Anyone planning to modify JustHireMe and expose it to users over a network should read the licence text and, where the stakes are high, take qualified legal advice rather than rely on a summary. For an individual running the desktop app locally, the licence is unlikely to change day-to-day use, but it does shape what you can do with a fork.
Who Should Install It, and What to Check First
The fit is narrow but clear. You should consider JustHireMe if you want job discovery, ranking and document generation to run on your own hardware, you are comfortable with a Tauri frontend and a Python 3.13 sidecar, and you are willing to keep a model backend running locally through Ollama or an existing Claude Code or Codex CLI subscription. It suits people who would rather inspect a ranking reason than trust a score. You should not adopt it if you need a notarized macOS installer for managed fleets, if you want unattended auto-apply as a supported feature, if you require an OS keychain for stored keys today, or if AGPL-3.0 conflicts with your redistribution plans. Before committing, verify three things in order. Confirm the first-run runtime download completes on your network, because the installer alone is not the full application. Confirm the bundled all-MiniLM-L6-v2 ONNX model loads and that a keyless run produces a ranked result. Then check whether the source adapters cover the employers you actually target, since that coverage, not the ranking logic, sets the ceiling on what the tool can find for you.
Editorial conclusion
Adopt JustHireMe if you want job discovery and tailoring to run on your own machine, you are comfortable with a Tauri frontend plus a Python 3.13 sidecar, and AGPL-3.0 does not conflict with how you intend to use or redistribute it. Do not adopt it if you need a notarized macOS install, a stable auto-apply pipeline, or an OS keychain for stored API keys, because the README lists all three as unfinished or experimental. Before installing, verify that the first-run runtime download completes on your network, that the bundled all-MiniLM-L6-v2 ONNX model loads without a key, and that your source adapters actually cover the boards you care about.
Community notes