[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74278":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":15,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},74278,"JustHireMe","vasu-devs\u002FJustHireMe","vasu-devs","Local-first AI job intelligence workbench for scraping roles, ranking fit, and generating tailored application materials.","https:\u002F\u002Fwww.JustHireMe.ai",null,"Python",1968,319,5,12,0,33,111,36,20.52,"Other",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36],"agents","ai","hireme","hiring","job","jobs","mulytiagent","rag","scrape","semantic-search","vector-database","2026-06-12 02:03:24","\u003Ch1 align=\"center\">JustHireMe\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Local-first AI job intelligence for scraping better roles, ranking fit, and generating tailored application materials.\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: AGPL-3.0\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-AGPL--3.0-2ea44f?style=for-the-badge\">\u003C\u002Fa>\n  \u003Cimg alt=\"Status: Alpha\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-alpha-f59e0b?style=for-the-badge\">\n  \u003Cimg alt=\"Local First\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flocal--first-yes-0ea5e9?style=for-the-badge\">\n  \u003Cimg alt=\"Desktop: Tauri\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdesktop-Tauri-24c8db?style=for-the-badge\">\n  \u003Cimg alt=\"Backend: Python\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbackend-Python_3.13-3776ab?style=for-the-badge\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fvasu-devs\">\u003Cimg alt=\"GitHub Sponsors\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fsponsors\u002Fvasu-devs?style=for-the-badge&logo=githubsponsors&label=Sponsor&color=EA4AAA\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#what-it-does\">What It Does\u003C\u002Fa>\n  &middot;\n  \u003Ca href=\"#visual-workflow\">Workflow\u003C\u002Fa>\n  &middot;\n  \u003Ca href=\"#architecture\">Architecture\u003C\u002Fa>\n  &middot;\n  \u003Ca href=\"#quick-start\">Quick Start\u003C\u002Fa>\n  &middot;\n  \u003Ca href=\"#agent-skill-and-mcp\">Agent Skill + MCP\u003C\u002Fa>\n  &middot;\n  \u003Ca href=\"#contributing\">Contributing\u003C\u002Fa>\n  &middot;\n  \u003Ca href=\"#roadmap\">Roadmap\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=vasu-devs%2FJustHireMe&type=timeline&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=vasu-devs\u002FJustHireMe&type=timeline&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=vasu-devs\u002FJustHireMe&type=timeline&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=vasu-devs\u002FJustHireMe&type=timeline&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n---\n\n## The Short Version\n\nJustHireMe is an AGPL-licensed, local-first desktop workbench for people who are tired of noisy job boards and black-box AI apply tools.\n\n## Maintainer\n\nJustHireMe 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.\n\n**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.\n\n## Current Status\n\nJustHireMe is in alpha. The repository is public, hackable, and ready for source-adapter, ranking, docs, and Windows packaging contributions, but it is not a polished one-click consumer product yet.\n\n| Area | Status |\n| --- | --- |\n| Frontend workbench | Active |\n| Python sidecar API | Active |\n| Scraper, ranking, vector matching, and customizer core | Supported open-source scope |\n| Windows desktop packaging | First release target |\n| Browser automation \u002F auto-apply | Experimental lab, disabled by default |\n| API key storage | Local app settings for now; OS keychain planned |\n\nIf 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.\n\nIt helps you:\n\n| Stage | What JustHireMe Does | Why It Matters |\n| --- | --- | --- |\n| Scrape | Collect leads from ATS boards, feeds, communities, APIs, and configured sources | You are not locked into one job board |\n| Quality Gate | Reject stale, thin, spammy, senior-only, or low-context leads before they pollute the pipeline | Better signal, less cleanup |\n| 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 |\n| Match | Use Kuzu graph data and LanceDB vectors to compare jobs against your profile context | Matching is profile-aware, not keyword-only |\n| Customize | Generate tailored resume PDF, cover letter PDF, and outreach drafts | You get a useful package, not just a list of links |\n\n> Browser automation and auto-apply code exists in the repository, but it is experimental and unsupported. The supported open-source core is scraper, ranker, vector matching, and customizer.\n\n---\n\n## Visual Workflow\n\n```mermaid\nflowchart LR\n    A[\"Import Resume \u002F Profile\"] --> B[\"Profile Graph\u003Cbr\u002F>Kuzu\"]\n    A --> C[\"Skill + Project Vectors\u003Cbr\u002F>LanceDB\"]\n    D[\"Scraper Sources\"] --> E[\"Normalized Leads\"]\n    E --> F[\"Lead Quality Gate\"]\n    F --> G[\"Ranker + Evaluator\"]\n    B --> G\n    C --> G\n    G --> H[\"Lead Pipeline\"]\n    H --> I[\"Customizer\"]\n    I --> J[\"Resume PDF\"]\n    I --> K[\"Cover Letter PDF\"]\n    I --> L[\"Outreach Drafts\"]\n```\n\n```mermaid\nflowchart TD\n    S[\"Source Adapter\"] --> N[\"Normalize Lead\"]\n    N --> Q{\"Quality Gate\"}\n    Q -- \"Reject\" --> R[\"Filtered with reason\"]\n    Q -- \"Accept\" --> C[\"Local CRM\"]\n    C --> E[\"Fit Evaluation\"]\n    E --> U[\"User Review\"]\n\n    Q:::gate\n    R:::reject\n    C:::store\n    E:::score\n\n    classDef gate fill:#e0f2fe,stroke:#0284c7,color:#0f172a\n    classDef reject fill:#fee2e2,stroke:#dc2626,color:#0f172a\n    classDef store fill:#dcfce7,stroke:#16a34a,color:#0f172a\n    classDef score fill:#fef3c7,stroke:#d97706,color:#0f172a\n```\n\n---\n\n## What It Does\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"50%\">\n      \u003Ch3>Scrape From Many Sources\u003C\u002Fh3>\n      \u003Cp>Collect jobs from ATS\u002Fcompany boards, RSS feeds, Hacker News, GitHub-style sources, Reddit\u002Fcommunity sources, APIs, and custom configured targets.\u003C\u002Fp>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\">\n      \u003Ch3>Reject Low-Quality Leads\u003C\u002Fh3>\n      \u003Cp>Apply a deterministic quality gate before saving leads. Filter stale, thin, senior-only, unpaid, spammy, or missing-context postings.\u003C\u002Fp>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"50%\">\n      \u003Ch3>Rank Fit Transparently\u003C\u002Fh3>\n      \u003Cp>Score role alignment, stack coverage, project evidence, seniority fit, location constraints, red flags, source signal, and semantic profile similarity.\u003C\u002Fp>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"50%\">\n      \u003Ch3>Generate Tailored Packages\u003C\u002Fh3>\n      \u003Cp>Create a resume PDF, cover letter PDF, founder message, LinkedIn note, cold email, keyword coverage summary, and selected-project rationale.\u003C\u002Fp>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## Why This Exists\n\nMost job search tools make one of two mistakes:\n\n| Problem | Result |\n| --- | --- |\n| They scrape too broadly | Users drown in stale, irrelevant, senior-only, or spammy jobs |\n| They automate too aggressively | Users lose control and trust |\n| They rank opaquely | Nobody knows why a job was recommended |\n| They are cloud-first | Sensitive profile\u002Fjob data leaves the user's machine |\n| They are hard to extend | Contributors cannot easily add new sources or improve ranking |\n\nJustHireMe takes a different path:\n\n```text\nMore signal.\nMore explanation.\nMore local control.\nMore contributor-friendly source adapters.\nLess blind automation.\n```\n\n---\n\n## Product Principles\n\n| Principle | Meaning |\n| --- | --- |\n| Local-first | Profile data, lead history, generated docs, graph data, vectors, and settings live locally by default |\n| Explainable | Every important ranking and filtering decision should have a visible reason |\n| Contributor-friendly | Adding a source adapter should be approachable and testable |\n| Human-controlled | Generated materials are drafts for review, not magic submissions |\n| Honest fallback | If vectors, models, or source data fail, the app should say so |\n| Automation is experimental | Browser automation is a lab area, not the core open-source promise |\n\n---\n\n## Architecture\n\n```mermaid\nflowchart TB\n    subgraph Desktop[\"Tauri Desktop Shell\"]\n        UI[\"React + TypeScript UI\"]\n        Bridge[\"Tauri Commands\u003Cbr\u002F>Port + API Token\"]\n    end\n\n    subgraph Backend[\"Python Backend Sidecar\"]\n        API[\"FastAPI + WebSockets\"]\n        Scrapers[\"Scraper Agents\"]\n        Gate[\"Lead Quality Gate\"]\n        Ranker[\"Ranker \u002F Evaluator\"]\n        Customizer[\"Document + Outreach Generator\"]\n    end\n\n    subgraph LocalData[\"Local Data Layer\"]\n        SQLite[\"SQLite CRM\"]\n        Kuzu[\"Kuzu Profile Graph\"]\n        LanceDB[\"LanceDB Vectors\"]\n        Files[\"Generated PDFs\"]\n    end\n\n    UI --> Bridge --> API\n    API --> Scrapers --> Gate --> SQLite\n    API --> Ranker\n    Ranker --> Kuzu\n    Ranker --> LanceDB\n    API --> Customizer --> Files\n    API --> SQLite\n```\n\n| Area | Technology |\n| --- | --- |\n| Desktop shell | Tauri 2 |\n| Frontend | React 19, TypeScript, Vite, Tailwind CSS |\n| Backend API | Python 3.13, FastAPI, WebSockets |\n| Local CRM | SQLite |\n| Profile graph | Kuzu |\n| Vector store | LanceDB |\n| Matching | Deterministic scoring, semantic search, optional LLM evaluation |\n| Documents | Markdown\u002FPDF rendering |\n| Experimental lab | Playwright browser automation |\n| Packaging | Tauri bundle + Python sidecar |\n\nMore detail: [docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md)\n\n---\n\n## Repository Map\n\n```text\nJustHireMe\u002F\n|-- src\u002F                         React frontend\n|   |-- components\u002F              Shared UI components\n|   |-- hooks\u002F                   Data and websocket hooks\n|   |-- settings\u002F                Settings panels\n|   `-- views\u002F                   Main screens\n|-- backend\u002F                     Python API and agents\n|   |-- agents\u002F                  Scrapers, rankers, evaluator, generator\n|   |-- db\u002F                      SQLite, Kuzu, LanceDB helpers\n|   |-- graph\u002F                   Evaluation graph flow\n|   `-- tests\u002F                   Backend tests\n|-- src-tauri\u002F                   Tauri Rust shell\n|-- docs\u002F                        Architecture, source adapter, release docs\n|-- scripts\u002F                     Build scripts\n`-- .github\u002F                    CI, issue templates, PR template\n```\n\n---\n\n## Quick Start\n\n### Install On Windows\n\nUse this path if you are not a developer and just want to run JustHireMe.\n\n1. Open the latest [GitHub Release](https:\u002F\u002Fgithub.com\u002Fvasu-devs\u002FJustHireMe\u002Freleases\u002Flatest).\n2. Download the `JustHireMe_*_x64-setup.exe` installer.\n3. Run the installer.\n4. If Windows SmartScreen appears, click **More info**, then **Run anyway**.\n5. Launch JustHireMe from the Start Menu and follow the setup wizard.\n\nRelease notes include SHA256 checksums for the installer assets. The Windows installer is built by GitHub Actions from the release tag so the published binary matches the repository source.\n\n### Requirements\n\n| Tool | Version |\n| --- | --- |\n| Node.js | 20+ |\n| Python | 3.13+ |\n| Rust | stable |\n| uv | latest stable |\n| Git | any modern version |\n\nOptional:\n\n- Ollama for local model experiments\n- Playwright browser dependencies only for experimental automation work\n\n### Fast Frontend Preview\n\nUse this path if you just want to inspect the UI, design direction, or frontend code.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvasu-devs\u002FJustHireMe.git\ncd JustHireMe\nnpm install\nnpm run dev\n```\n\nThis starts the Vite frontend only. Backend-backed workflows may show empty, mocked, or unavailable states depending on the screen.\n\n### Full Desktop Setup\n\nUse this path if you want the Tauri shell and Python backend sidecar.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvasu-devs\u002FJustHireMe.git\ncd JustHireMe\nnpm install\ncd backend\nuv sync --dev\ncd ..\n```\n\nThen run:\n\n```bash\nnpm run tauri dev\n```\n\nThe Tauri shell starts the frontend and launches the Python backend sidecar\u002Fdev process.\n\n### Before Opening An Issue\n\n- Check whether the bug is in supported core behavior or experimental automation.\n- Remove API keys, cookies, resumes, local databases, and generated private documents from logs or screenshots.\n- For source requests, include a public example URL and expected normalized fields.\n- For ranking bugs, include the expected score behavior and sanitized job\u002Fprofile snippets.\n\n---\n\n## Development Commands\n\n| Task | Command |\n| --- | --- |\n| Frontend dev server | `npm run dev` |\n| Desktop dev app | `npm run tauri dev` |\n| TypeScript check | `npm run typecheck` |\n| Frontend tests | `npm test` |\n| Frontend build | `npm run build` |\n| Backend tests on Windows | `backend\u002F.venv\u002FScripts\u002Fpython.exe -m pytest backend\u002Ftests` |\n| Backend tests on macOS\u002FLinux | `backend\u002F.venv\u002Fbin\u002Fpython -m pytest backend\u002Ftests` |\n| MCP server on Windows | `backend\u002F.venv\u002FScripts\u002Fpython.exe backend\u002Fmcp_server.py` |\n| MCP server on macOS\u002FLinux | `backend\u002F.venv\u002Fbin\u002Fpython backend\u002Fmcp_server.py` |\n| Rust check | `cd src-tauri && cargo check` |\n\n---\n\n## Agent Skill And MCP\n\nJustHireMe includes two reusable agent surfaces:\n\n- An agent-neutral skill at `skills\u002Fjusthireme\u002FSKILL.md`\n- A lightweight stdio MCP server at `backend\u002Fmcp_server.py`\n\nThe skill is plain Markdown with YAML frontmatter. It is written to be useful in any AI coding assistant that can load local instructions, including Claude, Codex, IDE agents, and custom agent runners. It tells an agent how to work safely inside this repository: preserve local-first behavior, keep ranking explainable, treat browser automation as experimental, and use the existing backend\u002Ffrontend patterns.\n\n### Use The Skill\n\nPoint your agent or assistant at:\n\n```text\nskills\u002Fjusthireme\u002FSKILL.md\n```\n\nIf your agent expects skills in a separate directory, copy or symlink the `skills\u002Fjusthireme` folder into that tool's skill\u002Finstruction location. The skill has no runtime dependency on Codex-specific APIs.\n\n### Use The MCP Server\n\nInstall backend dependencies first:\n\n```bash\ncd backend\nuv sync --dev\ncd ..\n```\n\nStart the MCP server from the repository root on Windows:\n\n```powershell\nbackend\\.venv\\Scripts\\python.exe backend\\mcp_server.py\n```\n\nStart it on macOS\u002FLinux:\n\n```bash\nbackend\u002F.venv\u002Fbin\u002Fpython backend\u002Fmcp_server.py\n```\n\nThe MCP server exposes:\n\n| Tool | Purpose |\n| --- | --- |\n| `score_job_fit` | Score a raw job posting against a candidate JSON profile |\n| `evaluate_lead_quality` | Run the deterministic quality gate for a normalized lead |\n| `extract_lead_intel` | Extract company, location, budget, urgency, stack, and signal quality from lead text |\n\nExample MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"justhireme\": {\n      \"command\": \"\u002Fabsolute\u002Fpath\u002Fto\u002FJustHireMe\u002Fbackend\u002F.venv\u002Fbin\u002Fpython\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002FJustHireMe\u002Fbackend\u002Fmcp_server.py\"],\n      \"cwd\": \"\u002Fabsolute\u002Fpath\u002Fto\u002FJustHireMe\"\n    }\n  }\n}\n```\n\nOn Windows, use the venv interpreter at `backend\\\\.venv\\\\Scripts\\\\python.exe`. More detail: [docs\u002FMCP.md](docs\u002FMCP.md)\n\n---\n\n## Core Concepts\n\n### Source Adapters\n\nSource adapters turn external job sources into normalized lead dictionaries.\n\n```mermaid\nflowchart LR\n    A[\"Raw Source\"] --> B[\"Adapter\"]\n    B --> C[\"Normalized Lead\"]\n    C --> D[\"Quality Gate\"]\n    D --> E[\"Local CRM\"]\n```\n\nRead: [docs\u002Fsource-adapters.md](docs\u002Fsource-adapters.md)\n\n### Quality Gate\n\nThe gate lives in `backend\u002Fagents\u002Fquality_gate.py`.\n\nIt checks:\n\n| Signal | Example |\n| --- | --- |\n| URL exists | Reject rows with no source\u002Fapply URL |\n| Posting depth | Penalize thin scraped snippets |\n| Freshness | Penalize stale jobs |\n| Seniority | Reject senior-only roles in beginner-focused feeds |\n| Red flags | Penalize unpaid, commission-only, no-budget, homework, or exposure posts |\n| Company\u002Fcontext | Penalize missing company or unclear source context |\n\n### Ranking\n\nRanking combines:\n\n- source signal\n- lead quality score\n- deterministic fit rubric\n- seniority caps\n- project and stack evidence\n- optional LLM-assisted evaluation\n- semantic fit when vectors are available\n- feedback learning\n\n### Vector Matching\n\n```mermaid\nflowchart LR\n    Resume[\"Resume \u002F Profile\"] --> Graph[\"Kuzu Graph\"]\n    Resume --> Embed[\"Embeddings\"]\n    Embed --> Vectors[\"LanceDB\"]\n    Job[\"Job Description\"] --> Query[\"Semantic Query\"]\n    Query --> Vectors\n    Vectors --> Fit[\"Semantic Fit Signal\"]\n    Graph --> Fit\n```\n\n### Customizer\n\nFor a strong lead, the customizer produces:\n\n| Output | Purpose |\n| --- | --- |\n| Tailored resume PDF | Role-specific resume package |\n| Cover letter PDF | Focused application narrative |\n| Founder message | Short direct outreach |\n| LinkedIn note | Concise connection\u002Fmessage draft |\n| Cold email | Longer outreach draft |\n| Keyword coverage | Shows what the generated package covers |\n| Selected projects | Explains which profile evidence was used |\n\n---\n\n## Configuration And Privacy\n\nSettings are configured inside the desktop app. For v1, API keys are stored in local app settings.\n\nLocal data may include:\n\n| Data | Stored Locally |\n| --- | --- |\n| Profile graph | yes |\n| Vector tables | yes |\n| Lead CRM | yes |\n| Generated PDFs | yes |\n| Settings | yes |\n| Activity history | yes |\n\nDo not share screenshots, logs, local app data, issue attachments, or database files that contain API keys, cookies, private resumes, or personal data.\n\nPlanned improvement:\n\n- OS keychain-backed API key storage\n\n---\n\n## Windows Release Build\n\nThe first public packaging target is Windows. Public installers are built and published by GitHub Actions when a `v*` tag is pushed.\n\n```powershell\nnpm run release:windows\n```\n\nFor local smoke tests without installer bundling, use `npm run release:smoke`.\n\nRelease smoke test and packaging details: [docs\u002Fwindows-release.md](docs\u002Fwindows-release.md)\n\n---\n\n## Contributing\n\nThe best first contribution path is scraper\u002Fsource quality.\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd width=\"33%\">\n      \u003Ch3>Good First Issues\u003C\u002Fh3>\n      \u003Cp>Add parser fixtures, improve docs, polish UI copy, or add a small source rule.\u003C\u002Fp>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ch3>Source Contributors\u003C\u002Fh3>\n      \u003Cp>Add ATS\u002Fcompany-board adapters with normalized lead fields and quality-gate tests.\u003C\u002Fp>\n    \u003C\u002Ftd>\n    \u003Ctd width=\"33%\">\n      \u003Ch3>Ranking Contributors\u003C\u002Fh3>\n      \u003Cp>Improve score bands, seniority handling, semantic fallback, and feedback learning.\u003C\u002Fp>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\nStart here:\n\n| Document | Purpose |\n| --- | --- |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | Contribution rules and development workflow |\n| [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) | Community standards |\n| [docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md) | System design |\n| [docs\u002Fsource-adapters.md](docs\u002Fsource-adapters.md) | Scraper adapter contract |\n| [docs\u002FMAINTAINER_RELEASE_CHECKLIST.md](docs\u002FMAINTAINER_RELEASE_CHECKLIST.md) | Release and safety checklist |\n| [ROADMAP.md](ROADMAP.md) | Project direction |\n| [SECURITY.md](SECURITY.md) | Privacy and responsible reporting |\n\nPlease do not open public issues with API keys, resumes, cookies, bearer tokens, or database files.\n\n---\n\n## Experimental Automation\n\nThe repository contains browser automation and auto-apply code for experimentation and future plugin work.\n\n| Status | Meaning |\n| --- | --- |\n| Disabled by default | Not part of the supported job workflow |\n| Unsupported lab | Useful for contributors, not normal users |\n| Not marketed as core | The product works without it |\n| Potential future plugin | May be separated later |\n\n---\n\n## Roadmap\n\n```mermaid\ntimeline\n    title JustHireMe Open-Source Roadmap\n    v0.1 : Open-source readiness\n         : Quality gate\n         : Source adapter docs\n    v0.2 : More ATS adapters\n         : Parser fixtures\n         : Better source quality dashboards\n    v0.3 : Ranking evaluation dataset\n         : Semantic matching visibility\n         : Feedback learning improvements\n    Future : OS keychain support\n           : Cross-platform installers\n           : Optional automation plugin\n```\n\nNear-term priorities:\n\n- more high-quality ATS\u002Fcompany source adapters\n- stronger quality gate tests\n- clearer vector matching state in the UI\n- Windows installer polish\n- contributor-friendly source plugin boundaries\n- OS keychain support for API keys\n\n---\n\n## License\n\nJustHireMe is open source under the [GNU Affero General Public License v3.0 only](LICENSE).\n\nYou may self-host, modify, and use JustHireMe, including with your own API\nkeys, under the terms of the AGPL-3.0 license. If you modify JustHireMe and\nmake it available over a network, the AGPL requires you to provide the\ncorresponding source code for that modified version to users of the network\nservice.\n\nCommercial licenses are available for organizations that want to use\nJustHireMe outside the AGPL terms, including private forks, proprietary\nmodifications, embedding, white-labeling, or managed deployments. See\n[COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md) for the commercial path.\n\n---\n\n## Maintainer Note\n\nThis project is being built in the open because one person cannot cover every job source, every market, every ranking edge case, and every packaging path alone.\n\nThe goal is a useful local tool and a welcoming codebase where contributors can add sources, improve ranking, and help job seekers get better signal with less noise.\n","JustHireMe 是一个本地优先的AI求职智能工作台，用于抓取职位信息、评估匹配度以及生成定制化的申请材料。项目采用Python开发，核心功能包括角色抓取、匹配度排名和基于向量数据库的语义搜索，能够帮助用户更高效地找到合适的职位并准备相关申请文档。其本地优先的设计理念保证了数据的安全性和隐私性，适合那些对现有求职平台不满，寻求更加个性化和透明求职体验的用户使用。目前该项目处于Alpha阶段，正积极接受社区贡献以进一步完善功能。",2,"2026-06-11 03:49:47","high_star"]