JustHireMe: 더 나은 채용 공고 스크래핑, 적합도 순위 산정 및 맞춤형 지원 자료 생성을 위한 로컬 우선(Local-first) AI
요약
JustHireMe는 채용 공고 스크래핑, 적합도 순위 산정, 맞춤형 지원 자료 생성을 지원하는 로컬 우선(Local-first) AI 데스크톱 워크벤치입니다. 사용자의 프로필을 기반으로 채용 정보를 수집하고 벡터 매칭을 통해 최적의 공고를 추천하는 오픈 소스 도구입니다.
핵심 포인트
- 로컬 우선 아키텍처를 통한 데이터 프라이버시 및 제어권 강화
- 스크래퍼, 순위 산정기, 벡터 매칭 기반의 핵심 기능 제공
- Kuzu 및 LanceDB를 활용한 프로필 그래프 및 벡터 데이터 관리
- ATS, RSS, 커뮤니티 등 다양한 소스로부터 채용 리드 수집
더 나은 채용 공고를 스크래핑하고, 적합도를 순위 매기며, 맞춤형 지원 자료를 생성하기 위한 로컬 우선(Local-first) AI 채용 인텔리전스.
기능 · 워크플로우 (Workflow) · 아키텍처 (Architecture) · 빠른 시작 (Quick Start) · 표준 절차 (Standard Procedure) · 에이전트 기술 (Agent Skill) + MCP · 기여하기 (Contributing) · 로드맵 (Roadmap)
JustHireMe는 소음이 심한 채용 게시판과 블랙박스 형태의 AI 지원 도구에 지친 사람들을 위한 AGPL 라이선스 기반의 로컬 우선 (Local-first) 데스크톱 워크벤치 (Workbench)입니다.
JustHireMe는 풀스택 AI 엔지니어이자 오픈 소스 빌더이며, 형편없는 채용 게시판에 지쳐 더 나은 것을 직접 만든 Vasudev Siddh에 의해 구축 및 유지 관리됩니다.
프로젝트 후원하기 - 후원은 JustHireMe가 활발하게 유지 관리되도록 하며, 소스 어댑터 (Source adapter) 커버리지를 위한 자금을 마련하고, 모든 클라우드 우선 (Cloud-first) 대안들과 차별화되는 로컬 우선 (Local-first) 아키텍처를 지원합니다.
JustHireMe의 안정적인 핵심 기능은 로컬 우선 (Local-first) 데스크톱 워크벤치 (Workbench), Python 사이드카 (Sidecar) API, 리드 수집 (Lead ingestion), 결정론적 순위 산정 (Deterministic ranking), 프로필 인식 매칭 (Profile-aware matching), 로컬 CRM 워크플로우, 그리고 문서/아웃리치 (Outreach) 생성입니다. 이번 RC(Release Candidate) 버전의 권장 안정 설치 대상은 Windows이며, GitHub Actions를 통해 릴리스 태그로부터 빌드 및 서명되었습니다.
| 영역 | 상태 |
|---|---|
| 프론트엔드 워크벤치 (Frontend workbench) | 안정적인 v1 코어 |
| ... | |
| 처음 오셨다면 먼저 프론트엔드 미리보기부터 시작하세요. 백엔드 동작, 소스 어댑터 (Source adapters) 또는 패키징에 기여하고 싶다면 아래의 전체 데스크톱 설정을 사용하세요. |
이 도구는 다음과 같은 도움을 줍니다:
| 단계 | JustHireMe의 역할 | 중요성 |
|---|---|---|
| 스크래핑 (Scrape) | ATS 게시판, 피드, 커뮤니티, API 및 설정된 소스로부터 리드(Leads) 수집 | 특정 채용 게시판에 종속되지 않음 |
| ... | ||
| 브라우저 자동화 및 자동 지원 (Auto-apply) 코드가 저장소에 존재하지만, 이는 실험적이며 선택 사항(Opt-in)이고 안정적인 코어의 일부로서 지원되지 않습니다. 지원되는 오픈 소스 코어는 스크래퍼 (Scraper), 순위 산정기 (Ranker), 벡터 매칭 (Vector matching) 및 커스터마이저 (Customizer)입니다. |
flowchart LR
A["이력서 / 프로필 가져오기"] --> B["프로필 그래프 (Profile Graph)<br/>Kuzu"]
A --> C["기술 + 프로젝트 벡터 (Skill + Project Vectors)<br/>LanceDB"]
...
flowchart TD
S["Source Adapter (소스 어댑터)"] --> N["Normalize Lead (리드 정규화)"]
N --> Q{"Quality Gate (품질 게이트)"}
...
| 단계 | 설명 |
|---|---|
| 채용 정보 수집 | ATS/기업 채용 게시판, RSS 피드, Hacker News, GitHub 스타일 소스, Reddit/커뮤니티 소스, API 및 사용자 정의 설정된 타겟으로부터 채용 정보를 수집합니다. |
| 품질 게이트 적용 | 리드를 저장하기 전에 결정론적(Deterministic) 품질 게이트를 적용합니다. 오래된 정보, 내용이 부실한 공고, 시니어 전용, 무급, 스팸성 또는 문맥이 누락된 공고를 필터링합니다. |
| 적합도 점수 산정 | 역할 일치도, 기술 스택 커버리지, 프로젝트 증거, 연차 적합성, 위치 제약 조건, 레드 플래그(Red flags), 소스 신호 및 의미론적 프로필 유사성을 점수화합니다. |
| 맞춤형 자료 생성 | 이력서 PDF, 자기소개서(Cover letter) PDF, 창업자 메시지, LinkedIn 노트, 콜드 이메일(Cold email), 키워드 커버리지 요약 및 선정된 프로젝트 근거를 생성합니다. |
대부분의 구직 도구는 다음 두 가지 중 하나의 실수를 범합니다:
| 문제점 | 결과 |
|---|---|
| 너무 광범위하게 스크래핑함 | 사용자가 오래되거나, 관련 없거나, 시니어 전용이거나, 스팸성인 채용 정보에 파묻히게 됩니다 |
| ... | ... |
JustHireMe는 다른 길을 택합니다:
더 많은 신호 (More signal).
더 많은 설명 (More explanation).
더 많은 로컬 제어 (More local control).
...
| 원칙 | 의미 |
|---|---|
| Local-first (로컬 우선) | 프로필 데이터, 리드 이력, 생성된 문서, 그래프 데이터, 벡터 및 설정값이 기본적으로 로컬에 저장됩니다 |
| ... | ... |
flowchart TB
subgraph Desktop["Tauri Desktop Shell"]
UI["React + TypeScript UI"]
...
| 영역 | 기술 |
|---|---|
| Desktop shell (데스크톱 셸) | Tauri 2 |
| ... | ... |
상세 내용: docs/ARCHITECTURE.md
JustHireMe/
|-- src/ React 프론트엔드 워크벤치
| |-- api/ HTTP/WebSocket API 클라이언트 및 타입
...
개발자가 아니며 단순히 JustHireMe를 실행하고 싶다면 이 경로를 사용하세요.
- 최신 GitHub Release를 엽니다.
JustHireMe_*_x64-setup.exe설치 프로그램을 다운로드합니다.- 설치 프로그램을 실행합니다.
- Windows SmartScreen이 나타나면 **추가 정보(More info)**를 클릭한 다음 **실행(Run anyway)**을 클릭합니다.
- 시작 메뉴에서 JustHireMe를 실행하고 설정 마법웨이저를 따릅니다.
릴리스 노트에는 설치 파일 자산에 대한 SHA256 체크섬(Checksum)이 포함되어 있습니다. Windows 설치 프로그램은 릴리스 태그로부터 GitHub Actions에 의해 빌드되므로, 게시된 바이너리는 저장소 소스 코드와 일치합니다.
| 도구 | 버전 |
|---|---|
| Node.js | 24 권장; CI는 Node 24 사용 |
| ... |
선택 사항:
- 로컬 모델 실험을 위한 Ollama
- 실험적인 자동화 작업을 위한 Playwright 브라우저 종속성(dependencies)만 설치
UI, 디자인 방향 또는 프론트엔드(frontend) 코드를 검사하고 싶은 경우 이 경로를 사용하세요.
git clone https://github.com/vasu-devs/JustHireMe.git
cd JustHireMe
npm ci
...
이 방식은 Vite 프론트엔드만 실행합니다. 백엔드(backend) 기반의 워크플로우(workflows)는 화면에 따라 비어 있거나, 모킹(mocked)되었거나, 사용 불가능한 상태로 표시될 수 있습니다.
Tauri 셸(shell)과 Python 백엔드 사이드카(sidecar)가 필요한 경우 이 경로를 사용하세요.
git clone https://github.com/vasu-devs/JustHireMe.git
cd JustHireMe
npm ci
...
그 다음 실행하세요:
npm run tauri dev
Tauri 셸은 프론트엔드를 시작하고 Python 백엔드 사이드카/개발 프로세스를 실행합니다.
공식 웹사이트를 작업하거나 전체 로컬 체크 그룹(local check group)을 실행할 때만 웹사이트 종속성을 설치하세요:
cd website
npm ci
cd ..
- 버그가 지원되는 핵심 동작(core behavior)에 있는지 또는 실험적인 자동화에 있는지 확인하세요.
- 로그나 스크린샷에서 API 키, 쿠키, 이력서, 로컬 데이터베이스 및 생성된 개인 문서를 제거하세요.
- 소스 요청 시, 공개된 예시 URL과 예상되는 정규화된 필드(normalized fields)를 포함하세요.
- 순위(ranking) 버그의 경우, 예상되는 점수 동작과 정제된(sanitized) 채용 공고/프로필 스니펫을 포함하세요.
| 작업 | 명령 |
|---|---|
| 프론트엔드 종속성 설치 | npm ci |
| ... | |
npm run check |
은 버전 체크, 프론트엔드 타입 체크(typecheck), 프론트엔드 테스트, 프론트엔드 빌드(build), 웹사이트 빌드, 백엔드 테스트, Rust 테스트 및 Rust 체크를 실행합니다. 모든 경로(lane)가 종속성을 갖도록 먼저 npm ci, cd backend && uv sync --dev, cd website && npm ci를 실행하세요.
Windows PowerShell에서 npm.ps1 심(shim)이 실행 정책(execution policy)에 의해 차단되는 경우 npm 대신 npm.cmd를 사용하세요. 셸이 &&를 지원하지 않는 경우, cd 명령과 다음 명령을 별도의 줄로 실행하세요.
일반적인 개발 및 풀 리퀘스트(pull requests)에는 다음 워크플로우를 사용하세요:
- 락파일(lockfiles)로부터 동기화:
npm ci
, cd backend && uv sync --dev
, 그리고 웹사이트나 전체 체크 스위트(check suite)가 포함된 경우 cd website && npm ci를 사용하세요.
- 변경 사항을 집중시키세요. 핵심 제품 작업은 로컬 우선(local-first) 저장소, 설명 가능한 순위 산정(explainable ranking), 그리고 사람이 검토하는 생성(human-reviewed generation) 방식을 유지해야 합니다. 브라우저 자동화(Browser automation)는 실험적이며 선택 사항(opt-in)으로 유지됩니다.
- 변경한 영역에 대해 타겟팅된 체크를 실행한 후, 실질적으로 가능한 경우 PR을 열기 전에
npm run check를 실행하세요. - 동작 변경 시 테스트를 추가하거나 업데이트하세요. 순위 산정(ranking), 소스(source), API, 저장소(storage) 및 생성(generation) 변경 시에는 백엔드 회귀 테스트(regression tests)를 사용하세요.
- 설정, 명령어, 릴리스 동작, 사용자 대상 워크플로우, 소스 어댑터 계약(source adapter contracts) 또는 개인정보 보호 기대 사항이 변경될 때마다 문서를 업데이트하세요.
.env, API 키, 쿠키, 베어러 토큰(bearer tokens), 개인 이력서, 로컬 데이터베이스, 그래프/벡터 저장소(graph/vector stores), 생성된 PDF, 앱 데이터 또는 생성된 사이드카 바이너리(sidecar binaries)를 커밋하지 마세요.
메인테이너 빌드에는 다음 릴리스 흐름을 사용하세요:
npm run version:bump -- X.Y.Z로 모든 버전 관리 파일을 업데이트합니다.npm run check:all,npm run lint,npm run test:coverage,npm run release:smoke, 그리고npm run smoke:windows-update를 사용하여 로컬 검증을 실행합니다.vX.Y.Z태그를 푸시하면 GitHub Actions가 빌드, 서명, 업데이트 메타데이터 검증, Windows 설치 프로그램 스모크 테스트(smoke test), 체크섬(checksums) 생성 및 CI로부터 릴리스 자산(release assets)을 게시합니다.- 다운로드된 CI 자산 폴더를 확인할 때는
npm run release:verify-updater -- release-assets vX.Y.Z로 생성된 업데이트 아티팩트(artifacts)를 검증하세요.
상세한 릴리스 체크리스트는 docs/MAINTAINER_RELEASE_CHECKLIST.md, docs/windows-release.md, 그리고 docs/PRODUCTION_RELEASE_ROADMAP.md에 있습니다.
JustHireMe는 두 가지 재사용 가능한 에이전트 인터페이스(agent surfaces)를 포함합니다:
skills/justhireme/SKILL.md에 있는 에이전트 중립적 기술(agent-neutral skill)backend/mcp_server.py에 있는 경량 stdio MCP 서버
해당 기술(skill)은 YAML 프론트매터(frontmatter)가 포함된 일반 Markdown 형식입니다. 이는 Claude, Codex, IDE 에이전트 및 커스텀 에이전트 러너(agent runner)를 포함하여 로컬 지침(local instructions)을 로드할 수 있는 모든 AI 코딩 어시스턴트에서 유용하게 사용될 수 있도록 작성되었습니다. 이 기술은 에이전트에게 이 저장소 내부에서 안전하게 작업하는 방법을 알려줍니다: 로컬 우선(local-first) 동작 유지, 순위 산정의 설명 가능성(explainable) 유지, 브라우저 자동화(browser automation)를 실험적 단계로 취급, 그리고 기존의 backend/frontend 패턴 사용 등입니다.
에이전트나 어시스턴트의 경로를 다음으로 지정하세요:
skills/justhireme/SKILL.md
만약 에이전트가 별도의 디렉토리에 있는 기술을 기대한다면, skills/justhireme 폴더를 해당 도구의 skill/instruction 위치로 복사하거나 심볼릭 링크(symlink)를 생성하세요. 이 기술은 Codex 전용 API에 대한 런타임 의존성(runtime dependency)이 없습니다.
먼저 백엔드 의존성을 설치하세요:
cd backend
uv sync --dev
cd ..
Windows에서는 저장소 루트에서 MCP 서버를 시작하세요:
backend\.venv\Scripts\python.exe backend\mcp_server.py
macOS/Linux에서는 다음과 같이 시작하세요:
backend/.venv/bin/python backend/mcp_server.py
MCP 서버는 다음을 노출합니다:
| 도구 (Tool) | 목적 (Purpose) |
|---|---|
score_job_fit | 후보자의 JSON 프로필을 기준으로 가공되지 않은 채용 공고의 적합도를 점수화 |
evaluate_lead_quality | 정규화된 리드(lead)에 대해 결정론적 품질 게이트(deterministic quality gate) 실행 |
extract_lead_intel | 리드 텍스트에서 회사, 위치, 예산, 긴급도, 기술 스택 및 신호 품질(signal quality) 추출 |
MCP 클라이언트 설정 예시:
{
"mcpServers": {
"justhireme": {
...
Windows에서는 backend\.venv\Scripts\python.exe에 있는 venv 인터프리터를 사용하세요. 더 자세한 내용은 docs/MCP.md를 참조하세요.
소스 어댑터(Source adapters)는 외부 채용 소스를 정규화된 리드 딕셔너리(normalized lead dictionaries)로 변환합니다. 구현체는 backend/discovery/sources/에 위치합니다.
flowchart LR
A["Raw Source"] --> B["Adapter"]
B --> C["Normalized Lead"]
...
읽어보기: docs/source-adapters.md
품질 게이트(gate)는 backend/discovery/quality_gate.py에 위치합니다.
다음 사항을 확인합니다:
| 신호 (Signal) | 예시 (Example) |
|---|---|
| URL 존재 여부 | 소스/지원 URL이 없는 행은 거부 |
| ... |
순위 산정(Ranking)은 다음을 결합합니다:
- 소스 신호 (source signal)
- 리드 품질 점수 (lead quality score)
- 결정론적 적합성 루브릭 (deterministic fit rubric)
- 연차 상한선 (seniority caps)
- 프로젝트 및 기술 스택 증거 (project and stack evidence)
- 선택적 LLM 보조 평가 (optional LLM-assisted evaluation)
- 벡터 사용 시 의미론적 적합성 (semantic fit when vectors are available)
- 피드백 학습 (feedback learning)
flowchart LR
Resume["Resume / Profile"] --> Graph["Kuzu Graph"]
Resume --> Embed["Embeddings"]
...
강력한 리드(lead)를 위해, 커스터마이저(customizer)는 다음을 생성합니다:
| 출력물 | 목적 |
|---|---|
| 맞춤형 이력서 PDF (Tailored resume PDF) | 역할별 이력서 패키지 |
| ... |
설정은 데스크톱 앱 내부에서 구성됩니다. v1의 경우, API 키는 로컬 앱 설정에 저장됩니다.
로컬 데이터에는 다음이 포함될 수 있습니다:
| 데이터 | 로컬 저장 여부 |
|---|---|
| 프로필 그래프 (Profile graph) | 예 |
| ... |
API 키, 쿠키, 개인 이력서 또는 개인 정보가 포함된 스크린샷, 로그, 로컬 앱 데이터, 이슈 첨부 파일 또는 데이터베이스 파일을 공유하지 마십시오.
계획된 개선 사항:
- OS 키체인(keychain) 기반 API 키 저장
Windows는 주요 안정적 설치 프로그램 대상입니다. macOS 및 Linux 패키징 스크립트와 CI 릴리스 레인이 존재하며, 현재 지원되는 플랫폼 수준은 각 릴리스 노트를 확인하십시오. 공개 설치 프로그램은 유지 관리자의 워크스테이션에서 업로드하는 것이 아니라, v* 태그로부터 GitHub Actions를 통해 빌드 및 게시되어야 합니다.
npm run release:smoke
npm run smoke:windows-update
Tauri 업데이트 서명 변수를 사용할 수 있는 의도적인 로컬 패키지 리허설의 경우에만 npm run release:windows를 사용하십시오. 해당 경로를 명시적으로 테스트하는 플랫폼별 로컬 패키지 빌드의 경우 npm run release:linux 또는 npm run release:macos를 사용하십시오.
릴리스 스모크 테스트 및 패키징 세부 정보: docs/windows-release.md, docs/MAINTAINER_RELEASE_CHECKLIST.md, 그리고 docs/PRODUCTION_RELEASE_ROADMAP.md.
가장 좋은 첫 번째 기여 경로는 스크래퍼/소스 품질(scraper/source quality)입니다.
| |
|---|---|
| 파서 픽스처(parser fixtures) 추가, 문서 개선, UI 문구 다듬기 또는 작은 소스 규칙 추가. |
| 정규화된 리드 필드와 품질 게이트 테스트를 갖춘 ATS/기업 게시판 어댑터 추가. |
| 점수 구간, 연차 처리, 의미론적 폴백(semantic fallback) 및 피드백 학습 개선. |
여기서 시작하세요:
| 문서 | 목적 |
|---|---|
| CONTRIBUTING.md | 기여 규칙 및 개발 워크플로우 |
| ... | |
| API 키, 이력서, 쿠키, 베어러 토큰(bearer tokens) 또는 데이터베이스 파일이 포함된 공개 이슈(public issues)를 생성하지 마십시오. |
이 저장소(repository)에는 실험 및 향후 플러그인 작업을 위한 브라우저 자동화(browser automation) 및 자동 지원(auto-apply) 코드가 포함되어 있습니다.
| 상태 | 의미 |
|---|---|
| 기본적으로 비활성화됨 (Disabled by default) | 지원되는 채용 워크플로우의 일부가 아님 |
| ... |
timeline
title JustHireMe 오픈 소스 로드맵
v0.1 : 오픈 소스 준비 단계
...
단기 우선순위:
- 더 많은 고품질 ATS/기업 소스 어댑터 (adapters)
- 더 강력한 품질 게이트 테스트 (quality gate tests)
- UI 내 더 명확한 벡터 매칭 (vector matching) 상태 표시
- Windows 설치 프로그램 개선
- 기여자 친화적인 소스 플러그인 경계 설정
- API 키를 위한 OS 키체인 (keychain) 지원
JustHireMe는 GNU Affero General Public License v3.0 하에 오픈 소스로만 제공됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기