JustHireMe

vasu-devsAGPL-3.0活跃维护

本地优先的求职智能工作台,自动抓取招聘岗位、按匹配度排序,并生成定制化的申请材料。

Local-first AI job intelligence workbench for scraping roles, ranking fit, and generating tailored application materials.

v1.7.0发布于 2026-09-01 07:37 UTC2,273star +1 / 7 天366fork同步于 2026-11-08 17:41 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/vasu-devs/JustHireMe.git
cd JustHireMe
npm ci
cd backend
uv sync --dev
cd ..
npm run tauri dev
硬件要求按 README 说明

README 未说明显存或 GPU 要求;本地嵌入使用内置 ONNX 模型 all-MiniLM-L6-v2,可完全离线运行,无需 API key。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

本地优先的 AI 求职工作台,抓取职位、按匹配度排序并生成定制申请材料

本地优先的求职智能工作台,自动抓取招聘岗位、按匹配度排序,并生成定制化的申请材料。

核心能力

  • 从 ATS 看板、订阅源、社区和 API 多源抓取职位线索
  • 用确定性规则加反馈学习对职位质量与匹配度打分
  • 基于 Kuzu 技能图谱与 LanceDB 向量做画像感知匹配
  • 生成定制简历 PDF、求职信 PDF 和外联草稿
  • 内置 ONNX 本地嵌入模型,离线也能做语义匹配

容易踩的坑

首次启动需联网下载约 100MB 安装包之外的运行时包(浏览器、向量库、嵌入模型),之后才可离线使用;macOS 安装包仅 ad-hoc 签名未公证,可能需在系统设置里选「仍要打开」;浏览器自动化与自动投递属实验功能,默认关闭且不在稳定支持范围内。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.7.0
  1. v1.7.0JustHireMe v1.7.0最新正式版2026-09-01 · 2026-09-01 07:37 UTC

    JustHireMe v1.7.0

    Installation

    • Windows: download JustHireMe_1.7.0_x64-setup.exe, run it, and use More info -> Run anyway if SmartScreen appears.
    • Linux: download the .AppImage, run chmod a+x on it, then launch it; or install the .deb on Debian/Ubuntu-based systems.
    • macOS: download the .dmg and drag JustHireMe into Applications. If the build is not notarized, macOS may require Privacy & Security -> Open Anyway.

    Your data stays on your machine. JustHireMe is local-first: no hosted backend, no tracking, and no app data leaves your computer by default.

    SHA256 checksums

    88940d5fe2bda475e7e5466e9408a3883371a4438d27740a2cd95d762fb0f5cc  JustHireMe-browser-runtime-linux.zip
    b2c5eb31195f50783278a3795c87c752eae19774ccae1b6734d0500f8ca90a93  JustHireMe-browser-runtime-macos.zip
    3bbbcf2150eb032fd4fd924bc1f4c21b5b8cd77f0e257babd93e5a31e467a9b8  JustHireMe-browser-runtime-windows.zip
    8000a0468b34c2f162ca34f69016f940f16e3fbd398b00d9401255f6aca6aa4d  JustHireMe-runtime-pack-linux.zip
    ba3c381fee678fe7baceb0fabd0b89fbf72fed33bc298cc49de8801aa339dde9  JustHireMe-runtime-pack-macos.zip
    b036b77dd2a21681fd66a036197d8e7f3ceaeeb870d18b1ab62671ed92070ec6  JustHireMe-runtime-pack-windows.zip
    ead394b985741173e58c00ea11e4da2fad83b4f00054c1dfcc35d578122419a0  JustHireMe-vector-runtime-linux.zip
    084f89dcc347d4b91c0d9b2b68cc3028fbf47ad7f3120df8d3d9048e13abb39b  JustHireMe-vector-runtime-macos.zip
    614d1db154aa4f0488a16c5f9c531fcfe8a5a3e989fd9e3a0f0b9c4f7fbed62a  JustHireMe-vector-runtime-windows.zip
    0dff3b40a765a68581f9a79c88342d8c3ed40bc721a2e55b3678d7e6bbd04048  JustHireMe.app.tar.gz
    22a4744949f9ca6031e3c47ac3fd87df0cc367f4513482b2313769cc7eb20420  JustHireMe.app.tar.gz.sig
    42adc040bf90d3195192d727bb546ea350ab171995a7ae60288491e94012e4dd  JustHireMe_1.7.0_aarch64.dmg
    395d6cd9244f5cc376f446e9347f2c5d4bf05875b374053d23ce410464069413  JustHireMe_1.7.0_amd64.AppImage
    d6e1ab1d714c7187fd56e486cdba41e402aab5aaa26ccd831d2531870860f60e  JustHireMe_1.7.0_amd64.AppImage.sig
    9ba129c40c341f3e127cf977d4a363f94c4460937e87a34e4871f8dff866641d  JustHireMe_1.7.0_amd64.deb
    0676055f55406096a8b5aa2edd14b01180c0d0681db809a35b3a74c8acd01e89  JustHireMe_1.7.0_amd64.deb.sig
    9b12e8b3e78baab9827965f451b3f6bfe149a974d2e2e945d68a9f71fd5c623d  JustHireMe_1.7.0_x64-setup.exe
    041488780d17dcd148220f4e54537495ac5d57840c19792a3af9113ccf0719d4  JustHireMe_1.7.0_x64-setup.exe.sig
    

    Asset sizes

       268.6 MB  JustHireMe-browser-runtime-linux.zip
       563.0 MB  JustHireMe-browser-runtime-macos.zip
       298.7 MB  JustHireMe-browser-runtime-windows.zip
       363.5 MB  JustHireMe-runtime-pack-linux.zip
       644.4 MB  JustHireMe-runtime-pack-macos.zip
       362.8 MB  JustHireMe-runtime-pack-windows.zip
       121.4 MB  JustHireMe-vector-runtime-linux.zip
        90.6 MB  JustHireMe-vector-runtime-macos.zip
        99.9 MB  JustHireMe-vector-runtime-windows.zip
       108.7 MB  JustHireMe.app.tar.gz
         0.0 MB  JustHireMe.app.tar.gz.sig
       109.0 MB  JustHireMe_1.7.0_aarch64.dmg
       223.6 MB  JustHireMe_1.7.0_amd64.AppImage
         0.0 MB  JustHireMe_1.7.0_amd64.AppImage.sig
       152.5 MB  JustHireMe_1.7.0_amd64.deb
         0.0 MB  JustHireMe_1.7.0_amd64.deb.sig
       106.5 MB  JustHireMe_1.7.0_x64-setup.exe
         0.0 MB  JustHireMe_1.7.0_x64-setup.exe.sig
    

    What's inside

    • Local-first job intelligence workbench
    • Internship and early-career opportunity workspace for CSE, software, data, and AI candidates
    • One-click Elite AI Internship campaign for paid India and worldwide-remote opportunities
    • Configurable INR and USD compensation floors and targets with truthful range handling
    • Broad first-party source adapters, canonical deduplication, liveness checks, and India/remote applicability gates
    • Transparent apply, stretch, review, and skip decisions with source provenance and rejection reasons
    • Built-in CRM for your job pipeline
    • Profile-aware graph and vector matc
  2. v1.6.2JustHireMe v1.6.22026-08-27 · 2026-08-27 00:57 UTC
    查看更新说明

    JustHireMe v1.6.2

    Installation

    • Windows: download JustHireMe_1.6.2_x64-setup.exe, run it, and use More info -> Run anyway if SmartScreen appears.
    • Linux: download the .AppImage, run chmod a+x on it, then launch it; or install the .deb on Debian/Ubuntu-based systems.
    • macOS: download the .dmg and drag JustHireMe into Applications. If the build is not notarized, macOS may require Privacy & Security -> Open Anyway.

    Your data stays on your machine. JustHireMe is local-first: no hosted backend, no tracking, and no app data leaves your computer by default.

    SHA256 checksums

    9d84fceb5f0ea7fb0e07e267e22dc86b833e900aba0c054e75372114d7cc06ee  JustHireMe-browser-runtime-linux.zip
    eb668d7fd554f2b3ef6cc6ea741a4125314b678e13c45aa6de563cdc568eb002  JustHireMe-browser-runtime-macos.zip
    5ceb197bb97592d826dc54ed4687769dd7bd3c42902e34c4a43add94b9594804  JustHireMe-browser-runtime-windows.zip
    95dfe2b74922ffa33b7b58a2a522203a2b87a13b8e7c95614a904ff19a3cd28b  JustHireMe-runtime-pack-linux.zip
    e2932b920ec7c3a2df9dc1a5af579e514cc9d9b9c8bab64a6a3bf363a9bfc888  JustHireMe-runtime-pack-macos.zip
    6f72072ebfd91ff3484a7f75e6f541889afe4f1d0309857e3a2da495a1ddae0c  JustHireMe-runtime-pack-windows.zip
    c9e2a09ec68bcd7c9480a02a5cbe66524cf1ca639b00c114dd523fb0150c79b2  JustHireMe-vector-runtime-linux.zip
    2b84b12d8d3eea81504b339ccf3596516d7e6ecc2aeccae6befa47a5602fb1c3  JustHireMe-vector-runtime-macos.zip
    7651ecb4ab27ce2cad7ea2042e2df39a34febd428bf7e4a31ca91009116c841e  JustHireMe-vector-runtime-windows.zip
    5dd8eb3f7294989047898fcadb7bd6945aceba8993088a29ada3e4be00b3e552  JustHireMe.app.tar.gz
    2b7139c9fdf627b27ef65f7335c67eca4e559a28ea4184f4d6f2445fe85dce04  JustHireMe.app.tar.gz.sig
    912ec158efaf5bfa31824bb8bba89c81e9f59f17bea5806e3f0780e2dee02ebe  JustHireMe_1.6.2_aarch64.dmg
    b9dd3bd6d053e224411b700b12e22b8670eba361fe0fe2ca2b48fc0ffd995eb4  JustHireMe_1.6.2_amd64.AppImage
    999e95408229ee8b5d8f78f832ec480f4198e55c645783d2740689610e692d69  JustHireMe_1.6.2_amd64.AppImage.sig
    812cc4e37575d4f5deac0786184569d56a08dda969d02fd2164ddbadbac20c69  JustHireMe_1.6.2_amd64.deb
    98c94a25d55ac26a0da84c54f851b0d1bbd2e7ac40cb582ccc1e5a2e6054c9c7  JustHireMe_1.6.2_amd64.deb.sig
    cdf9f39c736d72e808bea4a0f1bf1b11f0f7ecc16a79a6930027067a826089c1  JustHireMe_1.6.2_x64-setup.exe
    b2738181dd396c0342b61cfa94a52243484f36a88a0cacc4d9762bc8f306ac55  JustHireMe_1.6.2_x64-setup.exe.sig
    

    Asset sizes

       268.6 MB  JustHireMe-browser-runtime-linux.zip
       563.0 MB  JustHireMe-browser-runtime-macos.zip
       298.7 MB  JustHireMe-browser-runtime-windows.zip
       363.5 MB  JustHireMe-runtime-pack-linux.zip
       644.4 MB  JustHireMe-runtime-pack-macos.zip
       362.8 MB  JustHireMe-runtime-pack-windows.zip
       121.4 MB  JustHireMe-vector-runtime-linux.zip
        90.6 MB  JustHireMe-vector-runtime-macos.zip
        99.9 MB  JustHireMe-vector-runtime-windows.zip
       108.7 MB  JustHireMe.app.tar.gz
         0.0 MB  JustHireMe.app.tar.gz.sig
       108.9 MB  JustHireMe_1.6.2_aarch64.dmg
       223.2 MB  JustHireMe_1.6.2_amd64.AppImage
         0.0 MB  JustHireMe_1.6.2_amd64.AppImage.sig
       152.5 MB  JustHireMe_1.6.2_amd64.deb
         0.0 MB  JustHireMe_1.6.2_amd64.deb.sig
       106.4 MB  JustHireMe_1.6.2_x64-setup.exe
         0.0 MB  JustHireMe_1.6.2_x64-setup.exe.sig
    

    What's inside

    • Local-first job intelligence workbench
    • Internship and early-career opportunity workspace for CSE, software, data, and AI candidates
    • One-click Elite AI Internship campaign for paid India and worldwide-remote opportunities
    • Configurable INR and USD compensation floors and targets with truthful range handling
    • Broad first-party source adapters, canonical deduplication, liveness checks, and India/remote applicability gates
    • Transparent apply, stretch, review, and skip decisions with source provenance and rejection reasons
    • Built-in CRM for your job pipeline
    • Profile-aware graph and vector matc
  3. v1.6.1JustHireMe v1.6.12026-08-26 · 2026-08-26 18:01 UTC
    查看更新说明

    JustHireMe v1.6.1

    Installation

    • Windows: download JustHireMe_1.6.1_x64-setup.exe, run it, and use More info -> Run anyway if SmartScreen appears.
    • Linux: download the .AppImage, run chmod a+x on it, then launch it; or install the .deb on Debian/Ubuntu-based systems.
    • macOS: download the .dmg and drag JustHireMe into Applications. If the build is not notarized, macOS may require Privacy & Security -> Open Anyway.

    Your data stays on your machine. JustHireMe is local-first: no hosted backend, no tracking, and no app data leaves your computer by default.

    SHA256 checksums

    3703cddae36cbb1acaa618e9276390adbafa9e552d5e06000b31eccaf67c1099  JustHireMe-browser-runtime-linux.zip
    076a6bd141cd622f775b6384de25715217787e586b2d958aa23fcf272b449f83  JustHireMe-browser-runtime-macos.zip
    1d1c177a6cbd295a357d24e17a4984f7327b047edcbce00f21dc4626ade9cf4c  JustHireMe-browser-runtime-windows.zip
    fcfbac4470ee584ac9e3ed6d85c760d2ef58d365621bfa6f349c5621968f8d6a  JustHireMe-runtime-pack-linux.zip
    2c76054c08a8bd24ef74555b7e4e712a742f566df57d0c931335cac44f7001ce  JustHireMe-runtime-pack-macos.zip
    31a56d7d9bfa2b947759dfe0730f88edef1f7a184c425a08e00def9eb422c226  JustHireMe-runtime-pack-windows.zip
    7476b66126b862928d09a5a4c2d7ade6f027b75781ca997b2729d4bf0894d454  JustHireMe-vector-runtime-linux.zip
    326898135dbc69657f2da04d38e0d6caa328e22c0f34143554d4a0727fa59ca6  JustHireMe-vector-runtime-macos.zip
    af366b12809bc3cb353a23213bfdf94a045dbc73fd5e412d8a76a3cefac35536  JustHireMe-vector-runtime-windows.zip
    8998a377e05e64e08b4a5a0606d81afb28c03e9dbe5e3fd2b426b921c3f43f6b  JustHireMe.app.tar.gz
    e6116e233c37fa9f09354d17616395bce47e347e4cd0fccbd545546ebd1c9f80  JustHireMe.app.tar.gz.sig
    3b37fbb2fcb76d549f4fe86edb5c3c719ab5819ba2cf3e056a59e76cd9566ad8  JustHireMe_1.6.1_aarch64.dmg
    42edde3a8d86b27d1d080054e37b171d3e37be3962adfad4c8b4646782875915  JustHireMe_1.6.1_amd64.AppImage
    a410c55be449dc46ed17d3644c3e03a7a98dde03e330d854fc86fa6c34bbc89d  JustHireMe_1.6.1_amd64.AppImage.sig
    e1c42ba24ec903d12c4dc53fa71ad892ed53a45933a5cd12bce4f164100fc141  JustHireMe_1.6.1_amd64.deb
    68a75b2ad65e75b186798d6caedff949acd6a350f008251ef07e327fa9774a42  JustHireMe_1.6.1_amd64.deb.sig
    6ce06af5f882b686155862f01aa807f183019cdae82e271f41c97e346aadf618  JustHireMe_1.6.1_x64-setup.exe
    db817189fa077e5145c17bd670925f5b24e4d0ab211407856acdd455fdb753c9  JustHireMe_1.6.1_x64-setup.exe.sig
    

    Asset sizes

       268.6 MB  JustHireMe-browser-runtime-linux.zip
       563.0 MB  JustHireMe-browser-runtime-macos.zip
       298.7 MB  JustHireMe-browser-runtime-windows.zip
       363.5 MB  JustHireMe-runtime-pack-linux.zip
       644.4 MB  JustHireMe-runtime-pack-macos.zip
       362.8 MB  JustHireMe-runtime-pack-windows.zip
       121.4 MB  JustHireMe-vector-runtime-linux.zip
        90.6 MB  JustHireMe-vector-runtime-macos.zip
        99.9 MB  JustHireMe-vector-runtime-windows.zip
       108.7 MB  JustHireMe.app.tar.gz
         0.0 MB  JustHireMe.app.tar.gz.sig
       108.9 MB  JustHireMe_1.6.1_aarch64.dmg
       223.2 MB  JustHireMe_1.6.1_amd64.AppImage
         0.0 MB  JustHireMe_1.6.1_amd64.AppImage.sig
       152.5 MB  JustHireMe_1.6.1_amd64.deb
         0.0 MB  JustHireMe_1.6.1_amd64.deb.sig
       106.4 MB  JustHireMe_1.6.1_x64-setup.exe
         0.0 MB  JustHireMe_1.6.1_x64-setup.exe.sig
    

    What's inside

    • Local-first job intelligence workbench
    • Internship and early-career opportunity workspace for CSE, software, data, and AI candidates
    • One-click Elite AI Internship campaign for paid India and worldwide-remote opportunities
    • Configurable INR and USD compensation floors and targets with truthful range handling
    • Broad first-party source adapters, canonical deduplication, liveness checks, and India/remote applicability gates
    • Transparent apply, stretch, review, and skip decisions with source provenance and rejection reasons
    • Built-in CRM for your job pipeline
    • Profile-aware graph and vector matc
  4. v1.5.0JustHireMe v1.5.02026-08-26 · 2026-08-26 08:20 UTC
    查看更新说明

    JustHireMe v1.5.0

    Installation

    • Windows: download JustHireMe_1.5.0_x64-setup.exe, run it, and use More info -> Run anyway if SmartScreen appears.
    • Linux: download the .AppImage, run chmod a+x on it, then launch it; or install the .deb on Debian/Ubuntu-based systems.
    • macOS: download the .dmg and drag JustHireMe into Applications. If the build is not notarized, macOS may require Privacy & Security -> Open Anyway.

    Your data stays on your machine. JustHireMe is local-first: no hosted backend, no tracking, and no app data leaves your computer by default.

    SHA256 checksums

    38280dc04a4548d4710c25f304e6206f3e0770f0565c7559b242ec6654b94928  JustHireMe-browser-runtime-linux.zip
    66989fe46b29358ca2a67c3edce87a71382fc805d70c277401253c11013b9bec  JustHireMe-browser-runtime-macos.zip
    131db09d4f44bb47a3502d67ad26886b4ef045cc28378439831c88f36e018e87  JustHireMe-browser-runtime-windows.zip
    e70ee30b50ae35041cbb7e7e113b3ec809d3c07f4b8847108889e30d9f903441  JustHireMe-runtime-pack-linux.zip
    d1444c116a7fd5cc8fb3773d2d34a6e18bccc25c24c25d83435ef174b90a45b1  JustHireMe-runtime-pack-macos.zip
    48a308905102e6bcc09efb99d255309956363d134e933f3c3b4d272388244dd4  JustHireMe-runtime-pack-windows.zip
    38264166f357d6afd8326e354f498bcd6ba57a9c86971f4a6859e9709571c14c  JustHireMe-vector-runtime-linux.zip
    d5154c82c6a3cfeb5a4357ee16f2cdf474930682a2a1c068cd919287a01ee6f1  JustHireMe-vector-runtime-macos.zip
    a5d03dd28ac69fc830363e1eeb4f88950d481f4abe883078b15ef45c7fc0d852  JustHireMe-vector-runtime-windows.zip
    1806dead6618ac1e1f17317b0ab88f87c0890cff5d20452f261a88a48ab44298  JustHireMe.app.tar.gz
    e90ce5dbae989855e297c5679826b32c035b5218d0c09771944ea7a0a8f76444  JustHireMe.app.tar.gz.sig
    e9b1e585d4ccb3c04bb0b7fb306f44a0cc11709b4493ddc5ba84db541ef6935a  JustHireMe_1.5.0_aarch64.dmg
    645f090581b768b7046062db041c8c6ba1a15bbbdc99551848329b0d2f671d02  JustHireMe_1.5.0_amd64.AppImage
    f3d6daadb4de97664d5cab6e8f17c9d763798c8f581584f07268ec8926f51a6f  JustHireMe_1.5.0_amd64.AppImage.sig
    f2294edb4204a4c5b4589a12a7111765ca207b5937890997bc3465ad9dcb7eab  JustHireMe_1.5.0_amd64.deb
    bfd82be0dfc24f7a14a469e2a9196ce00183189d42abae1c7c3be882fd3cddfa  JustHireMe_1.5.0_amd64.deb.sig
    c7e0f4c77f59e3b07ea3b8c8c8d6073fcc091cde7ac10ac12f12ad5612028ccd  JustHireMe_1.5.0_x64-setup.exe
    63a55819d174e1c7f6ee44b410d6b239eaaac9f805592f2848ce08a20c4a79fb  JustHireMe_1.5.0_x64-setup.exe.sig
    

    Asset sizes

       268.6 MB  JustHireMe-browser-runtime-linux.zip
       563.0 MB  JustHireMe-browser-runtime-macos.zip
       298.7 MB  JustHireMe-browser-runtime-windows.zip
       363.5 MB  JustHireMe-runtime-pack-linux.zip
       644.4 MB  JustHireMe-runtime-pack-macos.zip
       362.8 MB  JustHireMe-runtime-pack-windows.zip
       121.4 MB  JustHireMe-vector-runtime-linux.zip
        90.6 MB  JustHireMe-vector-runtime-macos.zip
        99.9 MB  JustHireMe-vector-runtime-windows.zip
       108.7 MB  JustHireMe.app.tar.gz
         0.0 MB  JustHireMe.app.tar.gz.sig
       108.9 MB  JustHireMe_1.5.0_aarch64.dmg
       223.2 MB  JustHireMe_1.5.0_amd64.AppImage
         0.0 MB  JustHireMe_1.5.0_amd64.AppImage.sig
       152.5 MB  JustHireMe_1.5.0_amd64.deb
         0.0 MB  JustHireMe_1.5.0_amd64.deb.sig
       106.4 MB  JustHireMe_1.5.0_x64-setup.exe
         0.0 MB  JustHireMe_1.5.0_x64-setup.exe.sig
    

    What's inside

    • Local-first job intelligence workbench
    • Internship and early-career opportunity workspace for CSE, software, data, and AI candidates
    • Broad first-party source adapters, canonical deduplication, liveness checks, and India/remote applicability gates
    • Transparent apply, stretch, review, and skip decisions with source provenance and rejection reasons
    • Built-in CRM for your job pipeline
    • Profile-aware graph and vector matching
    • Resume, cover letter, and outreach draft generation
    • Bundled backend sidecar
    • Mandatory runtime pack as one first-run OTA download
    • Runtime pack includes LanceDB, PyArro
  5. test-2026-07-19Test build 2026-07-19 (dev)pre-release2026-07-18 · 2026-07-18 21:24 UTC
    查看更新说明

    Windows test build - NOT a production release.

    Built from the dev branch (fdbe477) for pre-release testing. This build is unsigned (SmartScreen will warn: More info -> Run anyway), is invisible to the auto-updater, and will be deleted once the real release ships.

    What's in it:

    • New UI: brand typography, light/dark repaired end to end, motion, app icon
    • CachyOS/Linux blank-window fix (#162, #177) - note: this exe is Windows; the Linux fix ships with the real release
    • Resume import fidelity: full date ranges, per-role cities, no truncation (#111)
    • Resume visual styles: Classic / Harvard / Modern (#90)
    • PDF overflow detection (#122), Antigravity CLI provider (#147), Intel-Mac source builds (#63)

    Report anything broken on the issue tracker.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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.

    AreaStatus
    Frontend workbenchStable
    Python sidecar APIStable
    Scraper, ranking, vector matching, and customizer coreSupported 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-updateBuilt in; the app updates itself from the latest GitHub release
    Thin installer + first-run runtimeInstaller is ~100 MB; the heavy runtime (browser + vector libs + embedding model) downloads once on first run, then is cached
    Dark modeLight / Dark / System, system-aware, shipped
    Local embeddingsBundled ONNX model (all-MiniLM-L6-v2) with a deterministic hashing fallback — semantic matching works fully offline, no API key
    Keyless by defaultDiscovery, 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-agnosticDiscovery, 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-agnosticTargets any city/region worldwide; location is auto-detected from your résumé (or set explicitly), with remote / hybrid / onsite preference
    Resume tailoringWorks for any field (engineering, design, finance, healthcare, education, trades, ...)
    Résumé/profile ingestionTolerates 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 matchingFit scores are backed by GraphRAG proof from your own Kùzu skill/project graph, not just a number
    Browser automation / auto-applyExperimental lab, disabled by default
    API key storageLocal 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:

    StageWhat JustHireMe DoesWhy It Matters
    ScrapeCollect leads from ATS boards, feeds, communities, APIs, and configured sourcesYou are not locked into one job board
    Quality GateReject stale, thin, spammy, senior-only, or low-context leads before they pollute the pipelineBetter signal, less cleanup
    RankScore lead quality and candidate fit with explainable deterministic rules, feedback learning, and optional LLM reasoningYou can see why a role is worth attention
    MatchUse Kuzu graph data and LanceDB vectors to compare jobs against your profile contextMatching is profile-aware, not keyword-only
    CustomizeGenerate tailored resume PDF, cover letter PDF, and outreach draftsYou 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


    Why This Exists

    Most job search tools make one of two mistakes:

    ProblemResult
    They scrape too broadlyUsers drown in stale, irrelevant, senior-only, or spammy jobs
    They automate too aggressivelyUsers lose control and trust
    They rank opaquelyNobody knows why a job was recommended
    They are cloud-firstSensitive profile/job data leaves the user's machine
    They are hard to extendContributors cannot easily add new sources or improve ranking

    JustHireMe takes a different path:

    More signal.
    More explanation.
    More local control.
    More contributor-friendly source adapters.
    Less blind automation.
    

    Product Principles

    PrincipleMeaning
    Local-firstProfile data, lead history, generated docs, graph data, vectors, and settings live locally by default
    ExplainableEvery important ranking and filtering decision should have a visible reason
    Contributor-friendlyAdding a source adapter should be approachable and testable
    Human-controlledGenerated materials are drafts for review, not magic submissions
    Honest fallbackIf vectors, models, or source data fail, the app should say so
    Automation is experimentalBrowser automation is a lab area, not the core open-source promise

    Architecture

    flowchart TB
        subgraph Desktop["Tauri Desktop Shell"]
            UI["React + TypeScript UI"]
            Bridge["Tauri Commands<br/>Port + API Token"]
        end
    
        subgraph Backend["Python Backend Sidecar"]
            API["FastAPI + WebSockets"]
            Scrapers["Scraper Agents"]
            Gate["Lead Quality Gate"]
            Ranker["Ranker / Evaluator"]
            Customizer["Document + Outreach Generator"]
        end
    
        subgraph LocalData["Local Data Layer"]
            SQLite["SQLite CRM"]
            Kuzu["Kuzu Profile Graph"]
            LanceDB["LanceDB Vectors"]
            Files["Generated PDFs"]
        end
    
        UI --> Bridge --> API
        API --> Scrapers --> Gate --> SQLite
        API --> Ranker
        Ranker --> Kuzu
        Ranker --> LanceDB
        API --> Customizer --> Files
        API --> SQLite
    
    AreaTechnology
    Desktop shellTauri 2 (auto-updating, Light/Dark/System theming)
    FrontendReact 19, TypeScript, Vite, Tailwind CSS
    Backend APIPython 3.13, FastAPI, WebSockets
    Local CRMSQLite
    Profile graphKuzu
    Vector storeLanceDB
    EmbeddingsLocal ONNX model (all-MiniLM-L6-v2) with a hashing fallback - no API key required
    LLM providersKeyless: Ollama, Claude Code CLI, Codex CLI. Keyed (optional): OpenAI, Anthropic, Gemini, Groq, DeepSeek, and 15+ others via a common provider abstraction
    MatchingDeterministic scoring + GraphRAG proof from the profile graph, local semantic search, optional LLM evaluation
    DocumentsMarkdown/PDF rendering
    Experimental labPlaywright browser automation
    PackagingThin Tauri installer + first-run runtime pack (Windows / macOS / Linux)

    First-run runtime pack. To keep installers small (~100 MB instead of ~450-700 MB), the heavy runtime - the Playwright browser, vector libraries, and the ONNX embedding model - is not bundled into the installer. The app downloads it once on first run, verifies it, and caches it. The pack is content-versioned, so routine app updates reuse the cached pack instead of re-downloading it.

    More detail: docs/ARCHITECTURE.md


    Repository Map

    JustHireMe/
    |-- src/                         React frontend workbench
    |   |-- api/                     HTTP/WebSocket API clients and types
    |   |-- features/                Activity, apply, dashboard, graph, inbox, pipeline, profile, settings
    |   |-- shared/                  Components, hooks, context, utilities
    |   `-- main.tsx                 Frontend entrypoint
    |-- backend/                     Python FastAPI sidecar
    |   |-- api/                     FastAPI app, routers, auth, scheduler, WebSockets
    |   |-- automation/              Scout scraping orchestration + experimental apply/actuator
    |   |-- core/                    Config, occupation vocab, SSRF guard, telemetry
    |   |-- data/                    SQLite repos, Kùzu graph, LanceDB vectors, migrations
    |   |-- discovery/               Query generation, dedup, quality gate, source adapters
    |   |-- gateway/                 Async job tracking, discovery config
    |   |-- generation/              Resume, cover letter, and outreach generators
    |   |-- graph_service/           Query helpers behind the knowledge-graph view
    |   |-- llm/                     Provider abstraction (keyed + keyless/subscription-CLI), embeddings
    |   |-- profile/                 Resume/LinkedIn/GitHub/portfolio ingestion + normalization
    |   |-- ranking/                 Fit scoring, criteria, semantic/evaluator logic
    |   `-- tests/                   Backend unit, integration, and regression tests
    |-- src-tauri/                   Tauri Rust shell
    |   `-- resources/               Bundled sidecar/runtime resources generated for packages
    |-- website/                     Public website
    |-- docs/                        Architecture, source adapter, release docs
    |-- scripts/                     Build scripts
    |-- skills/                      Agent skill instructions
    `-- .github/                    CI, issue templates, PR template
    

    Quick Start

    Install The Desktop App

    Use this path if you are not a developer and just want to run JustHireMe. Open the latest GitHub Release and grab the asset for your platform.

    PlatformDownloadNotes
    WindowsJustHireMe_*_x64-setup.exeIf SmartScreen appears, click More info -> Run anyway
    macOS (Apple Silicon)JustHireMe_*_aarch64.dmgNot yet notarized: if macOS says the app is damaged/unverified, allow it in System Settings -> Privacy & Security -> Open Anyway
    Linux (Debian/Ubuntu)JustHireMe_*_amd64.debsudo dpkg -i the file
    Linux (portable)JustHireMe_*_amd64.AppImagechmod +x then run it

    First launch downloads the runtime pack. The first time you open the app it fetches the runtime (browser + vector libraries + embedding model) over HTTPS and caches it; this is a one-time download. After that, the app starts offline-ready and routine updates do not re-download it.

    The app updates itself automatically from the latest GitHub release. Release notes include SHA256 checksums, and every installer is built by GitHub Actions from the release tag so the published binary matches the repository source.

    Requirements

    ToolVersion
    Node.js24 recommended; CI uses Node 24
    Python3.13+
    Ruststable
    uvlatest stable
    Gitany modern version

    Optional:

    • Ollama for local model experiments
    • Playwright browser dependencies only for experimental automation work

    Fast Frontend Preview

    Use this path if you just want to inspect the UI, design direction, or frontend code.

    git clone https://github.com/vasu-devs/JustHireMe.git
    cd JustHireMe
    npm ci
    npm run dev
    

    This starts the Vite frontend only. Backend-backed workflows may show empty, mocked, or unavailable states depending on the screen.

    Full Desktop Setup

    Use this path if you want the Tauri shell and Python backend sidecar.

    git clone https://github.com/vasu-devs/JustHireMe.git
    cd JustHireMe
    npm ci
    cd backend
    uv sync --dev
    cd ..
    

    Then run:

    npm run tauri dev
    

    The Tauri shell starts the frontend and launches the Python backend sidecar/dev process.

    Install website dependencies only when working on the public website or running the full local check group:

    cd website
    npm ci
    cd ..
    

    Before Opening An Issue

    • Check whether the bug is in supported core behavior or experimental automation.
    • Remove API keys, cookies, resumes, local databases, and generated private documents from logs or screenshots.
    • For source requests, include a public example URL and expected normalized fields.
    • For ranking bugs, include the expected score behavior and sanitized job/profile snippets.

    Development Commands

    TaskCommand
    Install frontend dependenciesnpm ci
    Install backend dependenciescd backend && uv sync --dev
    Install website dependenciescd website && npm ci
    Frontend dev servernpm run dev
    Website dev servercd website && npm run dev
    Desktop dev appnpm run tauri dev
    Version consistency checknpm run version:check
    TypeScript checknpm run typecheck
    Frontend testsnpm test
    Frontend buildnpm run build
    Backend testscd backend && uv run python -m pytest tests -q
    Backend regression smokecd backend && uv run python -m pytest tests/test_regressions.py tests/test_api.py::TestAuthGate
    Keyless LLM CLI smoke (Ollama/Claude Code/Codex CLI)npm run smoke:llm-cli
    Live source connectivity smokenpm run smoke:live-sources
    Rust testscd src-tauri && cargo test --lib
    Rust checkcd src-tauri && cargo check
    Website buildcd website && npm run build
    All local checksnpm run check
    Build sidecarnpm run build:sidecar
    Build frontend, website, and Rust checknpm run build:all
    Fast release smokenpm run release:smoke
    Release preflightnpm run release:preflight
    Windows installer package rehearsal (requires updater signing env)npm run release:windows
    Linux packagesnpm run release:linux
    macOS packagenpm run release:macos

    npm run check runs the version check, frontend typecheck, frontend tests, frontend build, website build, backend tests, Rust tests, and Rust check. Run npm ci, cd backend && uv sync --dev, and cd website && npm ci first so every lane has its dependencies.

    On Windows PowerShell, use npm.cmd instead of npm if the npm.ps1 shim is blocked by execution policy. If your shell does not support &&, run the cd command and the following command as separate lines.


    Standard Procedure

    Use this workflow for normal development and pull requests:

    1. Sync from the lockfiles: npm ci, cd backend && uv sync --dev, and cd website && npm ci if the website or full check suite is involved.
    2. Keep changes focused. Core product work should preserve local-first storage, explainable ranking, and human-reviewed generation. Browser automation stays experimental and opt-in.
    3. Run targeted checks for the area you changed, then run npm run check before opening a PR when practical.
    4. Add or update tests for behavior changes. Use backend regression tests for ranking, source, API, storage, and generation changes.
    5. Update docs whenever setup, commands, release behavior, user-facing workflows, source adapter contracts, or privacy expectations change.
    6. Do not commit .env, API keys, cookies, bearer tokens, private resumes, local databases, graph/vector stores, generated PDFs, app data, or generated sidecar binaries.

    Use this release flow for maintainer builds:

    1. Bump all versioned files with npm run version:bump -- X.Y.Z.
    2. Run local validation with npm run check:all, npm run lint, npm run test:coverage, npm run release:smoke, and npm run smoke:windows-update.
    3. Push a vX.Y.Z tag and let GitHub Actions build, sign, verify updater metadata, smoke the Windows installer, generate checksums, and publish release assets from CI.
    4. Verify generated updater artifacts with npm run release:verify-updater -- release-assets vX.Y.Z when checking a downloaded CI asset folder.

    Detailed release checklists live in docs/MAINTAINER_RELEASE_CHECKLIST.md, docs/windows-release.md, and docs/PRODUCTION_RELEASE_ROADMAP.md.


    Agent Skill And MCP

    JustHireMe includes two reusable agent surfaces:

    • An agent-neutral skill at skills/justhireme/SKILL.md
    • A lightweight stdio MCP server at backend/mcp_server.py

    The 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/frontend patterns.

    Use The Skill

    Point your agent or assistant at:

    skills/justhireme/SKILL.md
    

    If your agent expects skills in a separate directory, copy or symlink the skills/justhireme folder into that tool's skill/instruction location. The skill has no runtime dependency on Codex-specific APIs.

    Use The MCP Server

    Install backend dependencies first:

    cd backend
    uv sync --dev
    cd ..
    

    Start the MCP server from the repository root on Windows:

    backend\.venv\Scripts\python.exe backend\mcp_server.py
    

    Start it on macOS/Linux:

    backend/.venv/bin/python backend/mcp_server.py
    

    The MCP server exposes:

    ToolPurpose
    score_job_fitScore a raw job posting against a candidate JSON profile
    evaluate_lead_qualityRun the deterministic quality gate for a normalized lead
    extract_lead_intelExtract company, location, budget, urgency, stack, and signal quality from lead text

    Example MCP client configuration:

    {
      "mcpServers": {
        "justhireme": {
          "command": "/absolute/path/to/JustHireMe/backend/.venv/bin/python",
          "args": ["/absolute/path/to/JustHireMe/backend/mcp_server.py"],
          "cwd": "/absolute/path/to/JustHireMe"
        }
      }
    }
    

    On Windows, use the venv interpreter at backend\\.venv\\Scripts\\python.exe. More detail: docs/MCP.md


    Core Concepts

    Source Adapters

    Source adapters turn external job sources into normalized lead dictionaries. Implementations live in backend/discovery/sources/ (ATS boards, RSS/Atom, Hacker News, GitHub, Reddit, custom JSON, and a Playwright-backed web fallback); backend/automation/scout.py fans out across them, dedupes, and hands results to the quality gate.

    flowchart LR
        A["Raw Source"] --> B["Adapter"]
        B --> C["Normalized Lead"]
        C --> D["Quality Gate"]
        D --> E["Local CRM"]
    

    Read: docs/source-adapters.md

    Quality Gate

    The gate lives in backend/discovery/quality_gate.py.

    It checks:

    SignalExample
    URL existsReject rows with no source/apply URL
    Posting depthPenalize thin scraped snippets
    FreshnessPenalize stale jobs
    SeniorityReject senior-only roles in beginner-focused feeds
    Red flagsPenalize unpaid, commission-only, no-budget, homework, or exposure posts
    Company/contextPenalize missing company or unclear source context

    Ranking

    Ranking combines:

    • source signal
    • lead quality score
    • deterministic fit rubric
    • seniority caps
    • project and stack evidence
    • optional LLM-assisted evaluation
    • semantic fit when vectors are available
    • feedback learning

    Vector Matching

    flowchart LR
        Resume["Resume / Profile"] --> Graph["Kuzu Graph"]
        Resume --> Embed["Embeddings"]
        Embed --> Vectors["LanceDB"]
        Job["Job Description"] --> Query["Semantic Query"]
        Query --> Vectors
        Vectors --> Fit["Semantic Fit Signal"]
        Graph --> Fit
    

    Customizer

    For a strong lead, the customizer produces:

    OutputPurpose
    Tailored resume PDFRole-specific resume package
    Cover letter PDFFocused application narrative
    Founder messageShort direct outreach
    LinkedIn noteConcise connection/message draft
    Cold emailLonger outreach draft
    Keyword coverageShows what the generated package covers
    Selected projectsExplains which profile evidence was used

    Configuration And Privacy

    Settings are configured inside the desktop app. For v1, API keys are stored in local app settings.

    Local data may include:

    DataStored Locally
    Profile graphyes
    Vector tablesyes
    Lead CRMyes
    Generated PDFsyes
    Settingsyes
    Activity historyyes

    Do not share screenshots, logs, local app data, issue attachments, or database files that contain API keys, cookies, private resumes, or personal data.

    Planned improvement:

    • OS keychain-backed API key storage

    Release Builds

    Every release builds and publishes installers for Windows, macOS, and Linux from a single v* tag via GitHub Actions - never uploaded from a maintainer workstation. The pipeline builds each platform's sidecar and Tauri installer, runs an auto-update smoke test, generates SHA256 checksums, and publishes the assets. Windows and macOS builds are not yet code-signed/notarized, so the OS may warn on first launch (see the install table above); code signing and macOS notarization are the next packaging milestone.

    npm run release:smoke
    npm run smoke:windows-update
    

    Use npm run release:windows only for an intentional local package rehearsal when Tauri updater signing variables are available. Use npm run release:linux or npm run release:macos for platform-specific local package builds when you are explicitly testing those paths.

    Release smoke test and packaging details: docs/windows-release.md, docs/MAINTAINER_RELEASE_CHECKLIST.md, and docs/PRODUCTION_RELEASE_ROADMAP.md.


    Contributing

    The best first contribution path is scraper/source quality.

    Start here:

    DocumentPurpose
    CONTRIBUTING.mdContribution rules and development workflow
    CODE_OF_CONDUCT.mdCommunity standards
    docs/ARCHITECTURE.mdSystem design
    docs/source-adapters.mdScraper adapter contract
    docs/FEATURE_TEST_MATRIX.mdWhich features are verified and how
    docs/MAINTAINER_RELEASE_CHECKLIST.mdRelease and safety checklist
    ROADMAP.mdProject direction
    SECURITY.mdPrivacy and responsible reporting

    Please do not open public issues with API keys, resumes, cookies, bearer tokens, or database files.


    Experimental Automation

    The repository contains browser automation and auto-apply code for experimentation and future plugin work. This is distinct from the scraping scout (backend/automation/scout.py), which is core, supported, and always on — "experimental" here refers specifically to the DOM-fill/vision-based apply actuator, not lead discovery.

    StatusMeaning
    Disabled by defaultNot part of the supported job workflow
    Unsupported labUseful for contributors, not normal users
    Not marketed as coreThe product works without it
    Potential future pluginMay be separated later

    Roadmap

    timeline
        title JustHireMe Open-Source Roadmap
        Shipped : Quality gate + source adapter docs
                : Cross-platform installers (Win / macOS / Linux)
                : Thin installer + first-run runtime download
                : Auto-update
                : Light / Dark / System theming
                : Local ONNX embeddings (no API key)
                : Any-field resume tailoring
        Next : Code signing + macOS notarization
             : More ATS adapters and parser fixtures
             : OS keychain support for API keys
        Later : Ranking evaluation dataset
              : Clearer semantic-matching visibility in the UI
              : Optional automation plugin
    

    Near-term priorities:

    • code signing for Windows and notarization for macOS (remove first-launch security warnings)
    • more high-quality ATS/company source adapters
    • stronger quality gate tests
    • clearer vector matching state in the UI
    • contributor-friendly source plugin boundaries
    • OS keychain support for API keys

    Legal & Privacy

    JustHireMe is local-first: your profile, leads, and generated documents stay on your device. The full policies live in docs/legal/:

    DocumentPurpose
    Terms of UseRules for using the app and site, your responsibilities, warranty/liability
    Privacy PolicyWhat is and isn't collected (almost nothing leaves your machine)

    These policies govern use of the app and site; the source code is licensed separately under AGPL-3.0 (below). Governed by the laws of India; contact [email protected]. See the legal index.


    License

    JustHireMe is open source under the GNU Affero General Public License v3.0 only.

    You may self-host, modify, and use JustHireMe, including with your own API keys, under the terms of the AGPL-3.0 license. If you modify JustHireMe and make it available over a network, the AGPL requires you to provide the corresponding source code for that modified version to users of the network service.

    Commercial licenses are available for organizations that want to use JustHireMe outside the AGPL terms, including private forks, proprietary modifications, embedding, white-labeling, or managed deployments. See COMMERCIAL_LICENSE.md for the commercial path.


    Maintainer Note

    This 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.

    The 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.