Recipes

career-ops: 채용 공고를 점수화하고, CV를 맞춤화하며, 답변 초안을 작성하는 AI 구직 에이전트

README 링크에서 발견 · 2 days ago

Research & KnowledgeWork & Operations

구인 공고를 필터링하고 지원서를 로컬에서 준비하는 오픈소스 에이전트입니다.

What they did

그들은 실제 구직 과정에서 오픈소스 AI 구직 에이전트인 career-ops를 1차 필터로 사용했다. 이력서를 아무 응답도 없는 곳에 마구 뿌리는 대신, 구인 공고를 자신의 컴퓨터에서 실행 중인 에이전트에 붙여넣었다. 각 공고마다 에이전트는 해당 포스팅이 여전히 열려 있는지, 그리고 자신의 프로필에 실제로 적합한지를 확인하여 점수가 매겨진 평가 보고서를 생성했다. 적합성 테스트를 통과하지 못한 공고는 '지원하지 말 것'으로 표시되고 대시보드에 빨간색으로 집계되어, 잡음이 조용히 시간을 잡아먹는 대신 눈에 보이게 했다. 살아남은 공고에 대해서는 에이전트가 해당 직무에 맞게 이력서를 맞춤화하고 지원 질문에 대한 답변 초안을 작성했다. 최종 단계에서는 사람이 루프 안에 머물렀다. 즉, 맞춤화된 자료를 검토하고 직접 Submit을 눌렀다. 이 구직 과정 전체에서 740개의 공고 평가, 68건의 지원서 제출, 12번의 면접, 1건의 오퍼라는 퍼널이 만들어졌다. 이는 저자 본인의 실행 사례로, 이후 오픈소스로 공개되었다. 이 워크플로는 의도적으로 로컬 우선 방식을 취한다. 에이전트가 개인 커리어 데이터를 제3자 서비스로 전송하는 대신 지원자의 컴퓨터에서 실행되며, 대시보드는 점수가 매겨진 공고와 거부된 공고를 한눈에 볼 수 있는 단일 뷰를 제공한다.

How it went

문서화된 실행은 채용으로 끝났다: 740개의 공고를 평가하고, 68곳에 지원하고, 12번의 면접을 거쳐, 1개의 오퍼를 받았다. 이 프로젝트는 이후 700명 이상의 기여자, 공개된 HIRED 스토리 월, WIRED와 Business Insider의 보도, Vercel OSS Program 슬롯으로 성장했다. 오픈소스 에이전트로서 완성도가 높다 — 약 20개 언어에 걸친 다국어 README, 데모 GIF, 대시보드 UI를 갖추고 있다. 한계: 퍼널 수치는 한 개인의 구직 활동일 뿐 벤치마크가 아니며, 에이전트는 대신 지원서를 제출하는 단계까지는 나아가지 않는다.

Worth knowing

결과는 작성자 본인의 검색과 공개된 HIRED 사례에서 자기 보고된 것이며, 수동 검색과의 통제된 비교는 없습니다. 에이전트는 평가하고 초안을 작성하지만 지원서를 제출하지는 않습니다 — 여전히 사용자가 검토하고 Submit을 눌러야 하므로, 품질은 맞춤형 CV와 답변에 대한 사용자 자신의 판단에 달려 있습니다. 적합도 점수는 사용자가 제공한 프로필만큼만 정확하며, 오래되었거나 오해의 소지가 있는 공고는 '여전히 열려 있음' 확인을 통과할 수 있습니다. 설정 세부 사항(모델/제공자 구성, 데이터가 로컬에 저장되는 위치)은 README 발췌에 포함되어 있지 않으므로, 개인 경력 데이터를 맡기기 전에 저장소 문서에서 확인해야 합니다.

Wiring

작업 순서: repo 문서에 따라 career-ops를 설치한 뒤, 모델 제공자를 구성하고 에이전트가 로컬에서 실행되는지 확인한다. 다음으로 후보자 프로필 — 기본 CV와 선호도 — 을 구축한다. 이후의 모든 점수 산정과 맞춤화 단계가 여기서 읽어오기 때문이다. 그다음은 공고별 루프다: 공고를 붙여넣으면 에이전트가 가져와서 아직 열려 있는지 확인하고, 프로필 대비 적합도를 점수화하며, 평가 보고서를 작성한다. 임계값 미만의 공고는 '지원하지 않음'으로 표시되고 대시보드에 빨간색 카운트로 나타난다. 임계값 이상의 공고는 맞춤화 단계로 넘어가며, 여기서 에이전트가 해당 역할에 맞게 CV를 다시 쓰고 지원 답변 초안을 작성한다. 사람 검토 게이트는 초안 작성과 제출 사이에 위치한다 — 에이전트는 절대 Submit을 누르지 않는다. 대시보드는 점수화된 공고, 거부된 공고, 평가 보고서를 하나의 뷰로 집계한다. 프로필과 생성된 산출물은 버전 관리에 보관하여 맞춤화된 CV를 기본 CV와 diff하고 에이전트가 무엇을 변경했는지 감사할 수 있도록 한다.

Try it yourself

I can't actually execute any of these steps — I don't have access to your repo, can't read files, can't run installs, can't browse URLs, and can't create or modify files. What I can do is give you a precise, step-by-step playbook you can run yourself (or hand to an agent that does have tool access), plus the exact prompts to use at each stage.

## Step 1 — Install & configure career-ops

Since I can't read your README, here's what to look for and how to proceed:

1. **Find the install section** in `README.md` and any `docs/` folder. Look for:
   - Package manager (likely `npm`/`pnpm`/`yarn` for a TypeScript project, or `pip`/`uv` for Python).
   - Required env vars (usually a `.env.example`).
   - Which model provider it expects (OpenAI, Anthropic/Claude, local via Ollama, etc.) — check `package.json`, `pyproject.toml`, or config files for SDK dependencies.
   - Where it stores data locally (commonly `~/.career-ops/`, `./data/`, or a SQLite file — grep for `homedir`, `XDG_DATA_HOME`, or `sqlite`).
2. **Install** per the README, then run any `init`/`setup` command it provides.
3. **Configure** the model provider with your API key in `.env` (never commit it).

If you paste the README and `docs/` contents here, I can extract the exact commands and config for you.

## Step 2 — Build your candidate profile (factual only)

Prompt to use with the agent:

> Read `resume.pdf` (or `cv.md`) in this repo. Extract a structured candidate profile: contact info, summary, roles (company, title, dates, bullets), education, skills, projects, certifications. Do not infer, embellish, or add anything not explicitly stated. If a field is missing, mark it `null`. Output as JSON matching career-ops' profile schema (check `docs/` for the schema).

Then diff the generated profile against your CV manually to confirm nothing was invented.

## Step 3 — Evaluate one job listing

Prompt:

> Fetch this job listing URL: `<URL>`. (a) Determine whether the posting is still open — check for "no longer accepting applications," 404, redirect to a generic careers page, or stale posting date. (b) If open, produce a scored fit evaluation (0–100 or the tool's scale) against my candidate profile, with explicit reasoning per criterion: must-have skills match, seniority match, domain match, location/remote fit, compensation signals if listed. (c) List red flags: vague scope, unrealistic requirements, staffing-agency reposts, missing salary in a jurisdiction that requires it, very old posting date, "wear many hats" language, etc.

## Step 4 — Tailored CV + application answers + diff

Prompt:

> Using the fit evaluation, generate a tailored CV that reorders and rephrases (but does not fabricate) my existing experience to emphasize matches. Then draft answers to the application questions. Finally, produce a unified diff (`diff -u base_cv.md tailored_cv.md`) so I can see every change. Do not submit anything.

## Step 5 — Stop for review

The agent should halt after producing the diff and drafts. You review, edit, and submit manually.

---

**What I need from you to go further:** paste the README + relevant docs, your CV text, and the job URL. I can then (a) tell you the exact install/config commands, (b) draft the profile JSON, (c) reason through the fit score and red flags from the listing text, and (d) draft the tailored CV and diff — all as text you can apply yourself. I still can't run the tool or fetch the URL, so you'd paste the listing content.

Source

English

Tools in this stack