JustHireMe
Local-first AI job intelligence for scraping better roles, ranking fit, and generating tailored application materials.
What It Does · Workflow · Architecture · Quick Start · Standard Procedure · Agent Skill + MCP · Contributing · Roadmap
Star History
The Short Version
JustHireMe is an AGPL-licensed, local-first desktop workbench for people who are tired of noisy job boards and black-box AI apply tools.
Maintainer
JustHireMe is built and maintained by Vasudev Siddh - full-stack AI engineer, open-source builder, and the person who got tired of bad job boards and built something better.
Sponsor the project - Sponsorship keeps JustHireMe actively maintained, funds source adapter coverage, and supports the local-first architecture that makes this different from every cloud-first alternative.
Current Status
JustHireMe's stable core is the local-first desktop workbench, Python sidecar API, lead ingestion, deterministic ranking, profile-aware matching, local CRM workflows, and document/outreach generation. Every release is built by GitHub Actions from a v* tag and now ships installers for Windows, macOS, and Linux.
| Area | Status |
|---|---|
| Frontend workbench | Stable |
| Python sidecar API | Stable |
| Scraper, ranking, vector matching, and customizer core | Supported open-source scope |
Windows installer (.exe) |
Released every version |
macOS installer (.dmg + .app) |
Released every version (ad-hoc signed, not yet notarized — Gatekeeper may need "Open Anyway") |
Linux packages (.deb + AppImage) |
Released every version |
| Auto-update | Built in; the app updates itself from the latest GitHub release |
| Thin installer + first-run runtime | Installer is ~100 MB; the heavy runtime (browser + vector libs + embedding model) downloads once on first run, then is cached |
| Dark mode | Light / Dark / System, system-aware, shipped |
| Local embeddings | Bundled ONNX model (all-MiniLM-L6-v2) with a deterministic hashing fallback — semantic matching works fully offline, no API key |
| Keyless by default | Discovery, ranking, and generation all run with zero API key — local Ollama or your existing Claude Code / Codex CLI subscription can power every LLM step; keyed providers (OpenAI, Gemini, Groq, and 15+ others) are optional, not required |
| Field-agnostic | Discovery, ranking, and tailoring work for any field (healthcare, trades, finance, law, education, hospitality, creative, software, ...) — scoring is relative to the candidate's own domain, not a fixed tech vocabulary |
| Location-agnostic | Targets any city/region worldwide; location is auto-detected from your résumé (or set explicitly), with remote / hybrid / onsite preference |
| Resume tailoring | Works for any field (engineering, design, finance, healthcare, education, trades, ...) |
| Résumé/profile ingestion | Tolerates real-world profile shapes (PDF/DOCX/TXT/MD, JSON Resume exports, LinkedIn zips, GitHub, portfolio URLs) and shows a transparent import report — what was pulled in, skipped, or capped |
| Explainable matching | Fit scores are backed by GraphRAG proof from your own Kùzu skill/project graph, not just a number |
| Browser automation / auto-apply | Experimental lab, disabled by default |
| API key storage | Local app settings; .env is for development overrides; OS keychain planned |
If you are new here, start with the frontend preview first. If you want to contribute backend behavior, source adapters, or packaging, use the full desktop setup below.
It helps you:
| Stage | What JustHireMe Does | Why It Matters |
|---|---|---|
| Scrape | Collect leads from ATS boards, feeds, communities, APIs, and configured sources | You are not locked into one job board |
| Quality Gate | Reject stale, thin, spammy, senior-only, or low-context leads before they pollute the pipeline | Better signal, less cleanup |
| Rank | Score lead quality and candidate fit with explainable deterministic rules, feedback learning, and optional LLM reasoning | You can see why a role is worth attention |
| Match | Use Kuzu graph data and LanceDB vectors to compare jobs against your profile context | Matching is profile-aware, not keyword-only |
| Customize | Generate tailored resume PDF, cover letter PDF, and outreach drafts | You get a useful package, not just a list of links |
Browser automation and auto-apply code exists in the repository, but it is experimental, opt-in, and unsupported as part of the stable core. The supported open-source core is scraper, ranker, vector matching, and customizer.
Visual Workflow
flowchart LR
A["Import Resume / Profile"] --> B["Profile Graph<br/>Kuzu"]
A --> C["Skill + Project Vectors<br/>LanceDB"]
D["Scraper Sources"] --> E["Normalized Leads"]
E --> F["Lead Quality Gate"]
F --> G["Ranker + Evaluator"]
B --> G
C --> G
G --> H["Lead Pipeline"]
H --> I["Customizer"]
I --> J["Resume PDF"]
I --> K["Cover Letter PDF"]
I --> L["Outreach Drafts"]
flowchart TD
S["Source Adapter"] --> N["Normalize Lead"]
N --> Q{"Quality Gate"}
Q -- "Reject" --> R["Filtered with reason"]
Q -- "Accept" --> C["Local CRM"]
C --> E["Fit Evaluation"]
E --> U["User Review"]
Q:::gate
R:::reject
C:::store
E:::score
classDef gate fill:#e0f2fe,stroke:#0284c7,color:#0f172a
classDef reject fill:#fee2e2,stroke:#dc2626,color:#0f172a
classDef store fill:#dcfce7,stroke:#16a34a,color:#0f172a
classDef score fill:#fef3c7,stroke:#d97706,color:#0f172a
What It Does
Scrape From Many SourcesCollect jobs from ATS/company boards, RSS feeds, Hacker News, GitHub-style sources, Reddit/community sources, APIs, and custom configured targets. |
Reject Low-Quality LeadsApply a deterministic quality gate before saving leads. Filter stale, thin, senior-only, unpaid, spammy, or missing-context postings. |
Rank Fit TransparentlyScore role alignment, stack coverage, project evidence, seniority fit, location constraints, red flags, source signal, and semantic profile similarity. |
Generate Tailored PackagesCreate a resume PDF, cover letter PDF, founder message, LinkedIn note, cold email, keyword coverage summary, an readme truncated — read the full docs on github Frequently asked questionsIs JustHireMe free to use?JustHireMe is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead. What does JustHireMe do?Local-first AI job intelligence workbench for scraping roles, ranking fit, and generating tailored application materials. What is JustHireMe written in?JustHireMe is primarily written in Python. Its source is publicly available at https://github.com/vasu-devs/JustHireMe, and it has 2,250 GitHub stars. |