이 레포가 무엇을 하는 물건인가.
스프레드시트로 지원 현황을 수기 관리하는 대신, AI가 공고를 10개 가중 항목으로 A~F 채점하고, 4.0/5 미만이면 "지원하지 말라"고 말리는 시스템입니다. 핵심 철학은 spray-and-pray(묻지마 지원)의 정반대 — 그리고 지원 버튼은 끝까지 사람이 누릅니다.
구성은 셋입니다. ① 마크다운 모드 파일(modes/*.md) — 평가·지원·면접준비·연봉협상 같은 업무 절차를 LLM이 읽는 지시서로 정의. ② Node 스크립트 — PDF 생성(Playwright), 포털 스캔, 트래커 정합성 검사 같은 결정적 작업. ③ Go TUI 대시보드 — 파이프라인을 터미널에서 브라우징. 에이전트가 ①을 읽고 ②를 실행하며, 사람은 ③으로 검토합니다.
트렌딩 이유 · 경쟁 대비 장점.
"AI 구직 도구"는 많지만 대부분 SaaS이고, 자동 지원을 미끼로 팝니다. career-ops는 정반대 포지션으로 차별화했습니다 — 완전 로컬, 완전 오픈소스, 그리고 자동 제출 기능이 의도적으로 없음. 제작자가 본인 구직에 실제로 쓴 시스템이라는 스토리(740개 평가 → 1개 합격)와 언론 보도가 신뢰를 더했습니다.
| 비교 항목 | 일반 AI 구직 SaaS | career-ops |
|---|---|---|
| 실행 위치 | 업체 서버 (CV 업로드) | 내 터미널 (CV는 로컬 파일) |
| 평가 방식 | 키워드 매칭 위주 | LLM이 CV와 JD를 읽고 추론 (10개 가중 항목) |
| 지원 제출 | 자동 제출 지향 | 사람이 최종 결정 (Human-in-the-Loop 명시) |
| 커스터마이즈 | 설정 화면 한계 내 | "Claude에게 시스템 자체를 고쳐 달라"고 말하면 됨 |
자동 지원 도구는 지원 수를 늘릴 뿐 합격률을 높이지 못하고, 채용 담당자의 필터만 강화시키는 군비 경쟁을 만듭니다.
AI는 공고 분석·CV 매칭·연봉 리서치·면접 스토리 준비까지만. 시스템이 절대 지원서를 제출하지 않는다는 원칙이 README에 박혀 있습니다. "신입 리쿠르터를 온보딩하듯 내 정보를 먹여라"라는 운영 철학도 분명합니다.
마크다운 지시서 + Node 스크립트 + Go TUI.
| 레이어 | 기술 | 역할 |
|---|---|---|
| 에이전트 두뇌 | Claude Code · OpenCode · Gemini CLI · Codex · Qwen · Copilot · Kimi | 7개 코딩 CLI 모두 지원 — 같은 modes/*.md를 읽음. |
| 업무 절차 | modes/*.md (15개 슬래시 커맨드) | 평가·지원·딥리서치·면접준비·후속관리 절차 정의. 8개 언어 현지화판 별도(de·fr·ja·ar·pt·ru·tr·ua). |
| 실행 스크립트 | Node.js (.mjs 28종) | doctor(환경검사)·scan(포털 수집)·generate-pdf·dedup·merge·liveness(공고 생존 확인). |
| 브라우저 자동화 | Playwright + Chromium | 채용 페이지 탐색과 ATS 친화 PDF 렌더링. |
| 대시보드 | Go + Bubble Tea | 파이프라인 TUI — 필터·정렬·진행 현황. Catppuccin 테마. |
| 데이터 | 마크다운 트래커 + YAML 프로파일 | 단일 진실원 트래커에 정합성 검사(verify·normalize·dedup) 내장. |
| 배포/품질 | release-please · CodeQL · SBOM · Nix flake | 개인 프로젝트답지 않은 공급망 보안 수준. |
공고 URL 하나가 트래커 행이 되기까지.
설계의 묘는 "판단은 마크다운, 실행은 스크립트"의 분리입니다. 평가 기준·아키타입·협상 화법처럼 사람마다 다른 부분은 전부 에이전트가 읽는 마크다운에 있고(그래서 "Claude에게 고쳐 달라"고 하면 됨), PDF 생성·중복 제거·상태 정규화처럼 틀리면 안 되는 부분은 결정적 Node 스크립트로 고정돼 있습니다. LLM의 유연함과 코드의 신뢰성을 각자 잘하는 자리에 배치한 거죠.
배치 처리(batch/)는 claude -p 워커를 병렬로 띄워 공고 10개+를 동시에 평가합니다 — 서브 에이전트를 셸에서 fan-out하는 실전 예제입니다. 면접 준비는 STAR+R (Situation·Task·Action·Result + Reflection, 행동 면접 답변 구조) 스토리를 평가 때마다 스토리뱅크에 축적해, 어떤 행동 질문에도 재사용할 5~10개 마스터 스토리를 만들어 둡니다.
전속 커리어 매니저 팀을 고용한 것과 같습니다. 리서처(포털 스캔)·애널리스트(6블록 평가)·작가(맞춤 CV)·코치(면접 스토리)·비서(트래커 정리)가 분업하는데, 최종 서명만은 반드시 본인이 합니다.
어떤 폴더가 무슨 일을 하나.
| 위치 | 주목할 점 |
|---|---|
modes/_shared.md | 모든 모드가 공유하는 채점 기준·원칙 — 단일 진실원 패턴. |
doctor.mjs | 설치 직후 전제조건을 전부 검사 — 온보딩 마찰을 줄이는 모범. |
.claude/ + .agents/ + .qwen/ | 같은 SKILL.md를 CLI별 규약 위치에 복제 — 멀티 CLI 지원의 현실적 방법. |
check-liveness.mjs | 트래커 속 공고가 아직 살아있는지 주기 확인 — 데이터 부패 방지. |
이 레포에서 배울 만한 것 + 어디를 보면 되는지.
LLM에게 맡길 것과 코드로 고정할 것을 가르는 기준을 이 레포만큼 잘 보여주는 예가 드뭅니다. modes/와 루트 .mjs들을 대조하며 읽어 보세요.
같은 modes를 Claude Code 스킬·Gemini 커맨드·Qwen 스킬로 노출하는 어댑터 구조(.claude/ .agents/ .qwen/ + GEMINI.md/AGENTS.md/CLAUDE.md)는 "CLI 종속 없는 에이전트 워크플로" 설계의 참고서입니다.
에이전트가 트래커를 갱신하다 보면 중복·표기 흔들림이 생깁니다. verify→normalize→dedup→merge 스크립트 체인과 DATA_CONTRACT.md(데이터 계약 명세)는 "LLM 출력은 반드시 기계 검증을 거친다"는 원칙의 구현입니다.
dashboard/internal/ui/screens/는 Elm 아키텍처(모델-업데이트-뷰)를 따르는 Bubble Tea 입문 예제로 적당한 규모입니다. 테스트 파일까지 짝지어 있어 TUI 테스트 방법도 덤으로.
돌리려면 무엇이 필요한가.
| 항목 | 요구사항 |
|---|---|
| 런타임 | Node.js + npm. 대시보드 쓰려면 Go. |
| 브라우저 | npx playwright install chromium (PDF 생성 필수). |
| 에이전트 CLI | Claude Code·Gemini CLI·OpenCode·Codex·Qwen·Copilot 중 하나 + 해당 구독/API 키. |
| 내 데이터 | cv.md(마크다운 CV) + config/profile.yml — 시스템 품질은 먹인 컨텍스트에 비례. |
| 환경 검사 | npm run doctor가 전부 점검해 줌. |
난이도별로 손에 익히는 단계.
클론 → npm install → npm run doctor → cv.md 작성 → Claude Code에서 관심 공고 URL을 붙여넣어 6블록 평가 리포트를 받아 봅니다. 점수 근거가 내 CV의 실제 내용과 맞는지 검증하세요.
"아키타입을 백엔드 엔지니어 역할로 바꿔줘", "이 회사 5곳을 portals.yml에 추가해줘"처럼 Claude에게 시스템 자체를 수정시켜 봅니다 — 이 레포의 핵심 사용법(자기 수정 시스템)을 체험하는 과제.
npm run scan으로 포털에서 공고를 모으고 batch 러너로 10개를 병렬 평가한 뒤, Go 대시보드를 빌드해 파이프라인을 TUI로 살펴봅니다.
"마크다운 모드 + 정합성 스크립트 + 사람 승인" 3층 패턴을 구직이 아닌 내 업무(예: 발주 검토, 자료 조사 파이프라인)에 이식한 미니 버전을 만들어 봅니다.
한 주씩 따라가는 계획.
| 주차 | 주제 | 학습 자료 |
|---|---|---|
| 1주차 | 설치·프로파일 구축·첫 평가 | docs/SETUP.md · 실습 1 |
| 2주차 | modes 정독 — 절차를 마크다운으로 설계하는 법 | modes/_shared.md · auto-pipeline.md |
| 3주차 | 스크립트 체인 — 데이터 정합성·PDF 파이프라인 | docs/SCRIPTS.md · generate-pdf.mjs |
| 4주차 | Bubble Tea TUI 구조 분석 | dashboard/ · Bubble Tea 튜토리얼 |
| 5주차 | 내 도메인용 에이전트 워크플로 설계 | docs/ARCHITECTURE.md · 실습 4 |
본문에 나온 용어 빠른 참조.
| 용어 | 의미 |
|---|---|
| ATS | 지원자 추적 시스템 — 기업의 지원서 자동 분류 소프트웨어. |
| JD | Job Description — 채용 공고의 직무 기술서. |
| STAR+R | 상황·과제·행동·결과+회고 — 행동 면접 답변 구조. |
| Human-in-the-Loop | AI가 분석·추천하고 최종 결정·실행은 사람이 하는 설계. |
| spray-and-pray | 묻지마 대량 지원 전략 — 이 시스템이 명시적으로 반대하는 것. |
| 모드(mode) | 에이전트가 읽는 업무 절차 마크다운 — 이 레포의 슬래시 커맨드 실체. |
| 스토리뱅크 | 평가 과정에서 축적되는 STAR+R 면접 스토리 저장소. |
| Bubble Tea | Go의 TUI 프레임워크 — Elm 아키텍처 기반. |
| 포털 스캐너 | Greenhouse·Ashby·Lever 등 채용 플랫폼에서 공고를 수집하는 모듈. |
| liveness 체크 | 저장된 공고가 아직 열려 있는지 주기적으로 확인하는 검사. |