README.ko-KR.md
Rama main · réplica de lectura del repositorio original.
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/wordmark-dark.svg"><img src="docs/wordmark-light.svg" alt="career-ops" width="250" height="56"></picture></p>
<p align="center">오픈 소스 AI 구직 에이전트.</p>
<p align="center">
<a href="README.md">English</a> |
<a href="README.es.md">Español</a> |
<a href="README.de.md">Deutsch</a> |
<a href="README.fr.md">Français</a> |
<a href="README.pt-BR.md">Português (Brasil)</a> |
<a href="README.ko-KR.md">한국어</a> |
<a href="README.ja.md">日本語</a> |
<a href="README.cn.md">简体中文</a> |
<a href="README.zh-TW.md">繁體中文</a> |
<a href="README.ua.md">Українська</a> |
<a href="README.ru.md">Русский</a> |
<a href="README.pl.md">Polski</a> |
<a href="README.da.md">Dansk</a> |
<a href="README.ta.md">தமிழ்</a> |
<a href="README.ar.md">العربية</a> |
<a href="README.hi.md">हिन्दी</a> |
<a href="README.tr.md">Türkçe</a> |
<a href="README.vi.md">Tiếng Việt</a> |
<a href="README.id.md">Bahasa Indonesia</a>
</p>
<!-- The non-breaking spaces ( ) and word joiners (⁠) below decide where each line wraps on a phone. Keep them when editing. -->
<p align="center"><a href="https://github.com/santifer"><img src="docs/avatar-santifer.png" width="48" height="48" align="middle" alt="Santiago Fernández de Valderrama Aparicio"></a> 만든 사람: <a href="https://github.com/santifer"><strong>@santifer</strong></a>, <a href="https://github.com/career-ops-hq/career-ops/blob/main/README.ko-KR.md#builders"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/builders-stack-dark.svg"><img src="docs/builders-stack-light.svg" alt="" height="32" align="middle"></picture></a> <a href="https://github.com/career-ops-hq/career-ops/blob/main/README.ko-KR.md#builders">700+명의 기여자</a>와 함께</p>
<p align="center">
<strong>몇 달 동안 이력서를 보내도 답⁠이 없⁠었⁠습⁠니⁠다.</strong><br>
그래서 내게 필요한 필터를 직⁠접 만⁠들⁠었⁠습⁠니⁠다.
</p>
<p align="center">
<strong>공⁠고 740⁠건 평⁠가. 지⁠원 68⁠건. 면⁠접 12⁠번. 오⁠퍼 1⁠개.</strong><br>
내가 첫 번째 사용자였습니다. 그 일⁠자⁠리⁠를 얻⁠었⁠습⁠니⁠다. 그⁠리⁠고 오⁠픈 소⁠스⁠로 공⁠개⁠했⁠습⁠니⁠다.
</p>
<p align="center">
공고를 붙여 넣으세요. 당신의 컴⁠퓨⁠터⁠에⁠서, 아⁠직 모⁠집 중⁠인⁠지, 당⁠신⁠에⁠게 맞⁠는⁠지 알⁠려⁠줍⁠니⁠다.<br>
이력서를 공고에 맞게 다듬고 답⁠변 초⁠안⁠을 씁⁠니⁠다. <strong>제⁠출 버⁠튼⁠은 당⁠신⁠이 누⁠릅⁠니⁠다.</strong>
</p>
<p align="center">
<img src="docs/demo.gif" alt="career-ops 대시보드에서 본 저자 본인의 구직 과정: 점수가 매겨진 공고들, 지원하지 않음으로 표시된 공고의 빨간 개수, 그리고 전체 평가 리포트" width="800">
</p>
<p align="center"><sub>한창 진행 중이던 제 구직 과정입니다. UI⁠는 스⁠페⁠인⁠어⁠입⁠니⁠다.</sub></p>
<p align="center">
기업은 AI로 지원자를 걸러냅니다.<br>
<strong>저는 지원자에게 기⁠업⁠을 <em>고⁠를</em> AI⁠를 줬⁠을 뿐⁠입⁠니⁠다.</strong>
</p>
<p align="center">
6개월 뒤, <strong>저는 그 자리를 떠났습니다.</strong><br>
이제 우리는 career-ops를 만듭니다. 당⁠신⁠이 원⁠하⁠는 자⁠리⁠를 얻⁠을 수 있⁠도⁠록.
</p>
<p align="center"><a href="#이제-당신-차례">공⁠고 하⁠나⁠로 써 보⁠기 ↓</a> · <a href="https://santifer.io/career-ops-system">전⁠체 이⁠야⁠기 읽⁠기 →</a></p>
<p align="center"><sub>터미널을 쓰고 싶지 않으신가요? <a href="https://career-ops.org/waitlist?ref=readme-ko-kr">웹 버전 대기자 명단에 등록하기 →</a></sub></p>
<br>
<p align="center"><a href="HIRED.md"><img src="docs/hired-badge.svg" alt="Hired with career-ops: public stories on the record"></a></p>
<p align="center">내 뒤에 온 사람들이 어떻게 채용됐는지 직접 적어 두었습니다.</p>
<p align="center">
<a href="HIRED.md"><img src="docs/hired-wall.svg" alt="열어서 읽을 수 있는 채용 이야기" width="800"></a>
</p>
<p align="center"><sub>모든 카드는 열어 볼 수 있는 공개 이슈입니다. 당신도 합격했나요? <a href="https://github.com/career-ops-hq/career-ops/issues/new?template=i-got-hired.yml">카드를 남겨 주세요 →</a></sub></p>
<p align="center">⭐ <strong>career-ops가 도움이 됐다면, 스⁠타 하⁠나⁠가 다⁠음 사⁠람⁠이 이곳을 찾는 길⁠잡⁠이⁠가 됩⁠니⁠다.</strong></p>
<br>
<p align="center">
<a href="https://wired.com.gr/article/to-ai-ergaleio-pou-fernei-epanastasi-ston-tropo-pou-psachnoume-douleia/" rel="noopener noreferrer nofollow"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/press/wired-dark.svg"><img src="docs/press/wired.svg" alt="WIRED" height="32"></picture></a>
<a href="https://www.businessinsider.com/how-i-built-tool-filter-job-listings-landed-head-ai-2026-4" rel="noopener noreferrer nofollow"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/press/business-insider-dark.svg"><img src="docs/press/business-insider.svg" alt="Business Insider" height="32"></picture></a>
</p>
<p align="center">
<a href="https://vercel.com/open-source-program"><img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge-2026.svg" height="32"></a>
</p>
<p align="center">
<a href="https://trendshift.io/repositories/25195" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/repositories/25195" alt="GitHub Trending: #1 repository of the day (Trendshift)" width="250" height="55"></a>
<a href="https://www.producthunt.com/products/santifer-io?utm_source=badge-featured&utm_medium=badge" rel="noopener noreferrer"><img src="docs/press/producthunt.svg" alt="Featured on Product Hunt" width="206" height="54"></a>
</p>
## 이제 당신 차례
오늘 밤 지원하려던 공고 하나를 붙여 넣어 보세요. <em>지원하지 않음</em>으로 돌아오면, 방금 그 밤을 되찾은 겁니다. 계획과 함께 돌아오면, 다음에 할 일을 아는 겁니다.
```bash
npx @santifer/career-ops init
```
<p align="center"><sub>오픈 소스. 로컬 실행. 이미 쓰고 있는 AI CLI 안에서. <a href="docs/RUNNING_ON_A_BUDGET.md">무료 모델과 로컬 모델 포함.</a></sub></p>
## 혼자 구직할 필요는 없습니다
보내기를 누른 뒤의 침묵은 당신 탓이 아닙니다. 같은 것을 본 사람이 충분히 많아서, 이 실천을 여섯 줄로 적어 두었습니다:
> 더 적은 곳에 더 잘 지원하기. 양보다 신호. 키워드보다 근거. 결정은 사람이. 로컬 우선. 테이블 양쪽 모두의 존엄.
<p align="center"><a href="https://career-ops.org/manifesto?utm_source=readme"><img src="https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcareer-ops-hq%2Fcareer-ops%2Fmain%2FSIGNATURES.md&search=n%3A(%5Cd%2B)%5Cs*%24&replace=%241%20signatories&label=THE%20CAREEROPS%20MANIFESTO&color=DD7627&style=for-the-badge&labelColor=2b3137" alt="CareerOps 매니페스토: 실시간 서명자 수"></a></p>
<p align="center">그중 몇 사람의 말을 그대로 옮깁니다.</p>
<p align="center">
<a href="https://career-ops.org/manifesto?utm_source=readme"><img src="docs/manifesto-wall.svg" alt="CareerOps 매니페스토에 남긴 세 개의 서명, 각자의 말로" width="800"></a>
</p>
<p align="center"><sub>모든 서명은 감사할 수 있는 커밋입니다. <a href="https://career-ops.org/manifesto?utm_source=readme">전부 읽어 보거나, 당신의 서명을 더하세요 →</a></sub></p>
<br>
채용은 저절로 고쳐지지 않습니다. 그것을 겪는 사람들은 고칠 수 있고, 이미 그 방에 모여 서로 메모를 비교하고 서로의 설정을 고쳐 주고 있습니다.
<a id="builders"></a>
<p align="center"><a href="CONTRIBUTING.md"><img src="https://warpchart.dev/api/builders?lang=ko-KR" alt="기여자들의 GitHub 아바타가 2026년 4월부터 도착한 순서대로 채워지는 애니메이션 벽. 다음 칸은 비워 두었습니다." width="100%"></a></p>
[고치는 코드는 여기서 쓰입니다](CONTRIBUTING.md). 클럽이 아니라 방입니다. **함께 만들어 갑시다.**
<p align="center"><a href="https://discord.gg/8pRpHETxa4"><img src="docs/discord-badge.svg" alt="Discord: career-ops 서버의 실시간 멤버 수"></a></p>
## 스폰서
career-ops는 구직자에게 영원히 무료입니다. 다음 기업들이 이 프로젝트를 후원합니다:
<p align="center">
<a href="https://serpapi.com/career-ops-org" title="SerpApi"><img src="docs/sponsors/serpapi.svg" alt="SerpApi" height="48"></a>
</p>
<p align="center"><strong>SerpApi</strong> · Build a portfolio project with live search data. SerpApi gives developers structured JSON/Markdown from Google Search, Maps, Shopping, and other engines through a simple API call.</p>
> 후원이 사는 것은 명확히 표시된 노출이지, 영향력이 아닙니다. 어떤 금액도 로드맵을 바꾸거나 제품 안에 무언가를 넣지 못합니다. 스폰서는 평가, 순위, 추천에 절대 등장하지 않습니다.
## career-ops가 당신을 위해 하는 일
공고를 붙여 넣으세요. 그 밤을 쓸 가치가 있는지 알려줍니다.
- **아직 모집 중인가?** 한 글자를 쓰기 전에 공고가 아직 게시되어 있는지 확인합니다.
- **당신이 아니라면?** 실제 이력서에 대고 직무를 점수 매기고, 맞지 않으면 건너뛰라고 말합니다. 무시할 수도 있습니다.
- **해 볼 만하다면?** 이력서, 자기소개서, 답변의 초안을 씁니다. 당신이 읽습니다. 당신이 보냅니다.
- **누구에게 말해야 하나?** 그 사람을 찾고 메모 초안을 씁니다. 보내는 일은 절대 하지 않습니다.
- **이 모든 게 어디로 가나?** 모든 지원서는 당신의 컴퓨터에 남습니다. 우리에게 업로드되는 것은 없습니다.
- **무엇을 배워야 하나?** 거절이 이어진 뒤, 부족한 부분을 짚어 줍니다.
처음 몇 번은 거칩니다. 아직 당신을 모르니까요. 말해 주세요: 당신의 이력서, 원하는 것, 거절하는 것. 리크루터의 첫 주라고 생각하세요.
첫 실행 때 그 모든 것을 채팅으로 묻습니다. 손으로 설정할 것은 없습니다.
## career-ops가 하지 않는 일
- **지원서를 자동으로 제출하기.** 모든 항목의 답변 초안을 씁니다. 검토하고 제출 버튼을 누르는 것은 당신입니다. 스크립트는 절대 POST를 보내지 않습니다 (`prepare-application.mjs`).
- **이메일 발송.** 초안만 작성합니다. 이 코드베이스 어디에도 메일 전송 기능은 없습니다.
- **외부로 데이터 전송.** 텔레메트리도, 우리 쪽 백엔드도 없습니다. 당신의 이력서는 당신의 컴퓨터에서 당신이 고른 AI 제공자에게만 갑니다. 유일한 공개 기록은 이 저장소, 즉 `HIRED.md`와 그 이슈들입니다.
- **4.0/5 미만 공고에 지원하라고 재촉.** 지원하지 말라고 말합니다. 무시할 수 있고, 그러면 그렇다고 알려줍니다.
이력서를 다듬을 뿐, 절대 지어내서는 안 됩니다. 이력서에도 `article-digest.md`에도 없는 숫자나 사실이 들어간 PDF는 코드 검사가 막아 주지만, 바꿔 쓴 표현 하나하나를 판단하지는 아직 못합니다. 보내기 전에 모든 이력서를 읽어보세요. 자세한 내용은 [FAQ](#faq)에 있습니다.
## 주요 기능
| 기능 | 설명 |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **A-H 평가** | 직무 요약, 이력서 매치(이 공고에서 각 요구사항이 얼마나 중요한지, 그리고 그 가중치가 JD의 문구에서 나왔는지, 구조에서 나왔는지, 추정인지 요구사항별로 표시하며, 추정은 절대 최상위 등급이 될 수 없음), 레벨링 전략, 연봉 리서치, 개인화, 면접 준비 (STAR+R), 여기에 블록 G 공고 신뢰성 점검(아직 모집 중인지, 재게시된 공고인지: 판정이 아니라 관찰)과, 비자 스폰서십 불가를 명시한 JD를 절대적 결격 사유로 표시하는 취업 허가 신호가 더해집니다 |
| **Human-in-the-Loop** | AI가 평가하고 추천하면, 당신이 판단하고 행동합니다. 시스템은 절대 지원서를 제출하지 않습니다. 최종 결정은 항상 당신의 몫 <!-- hitl: absolute guarantee. Do not add "automatically", "by itself", "without your permission" or any other hedge when translating this row. --> |
| **ATS PDF 생성** | 당신 자신의 경험을 바탕으로 JD마다 맞춘, ATS가 읽을 수 있는 이력서 (Space Grotesk + DM Sans 디자인) |
| **자기소개서 생성기** | 리서치 기반 자기소개서: 키워드 미러링, 네 가지 대화형 관점 질문(이유/문제/접근/톤), 채팅 내 초안 승인 게이트, 이력서와 동일한 HTML + Playwright 파이프라인을 통한 A4 PDF. 평가할 때마다 자동으로 초안을 만들고, `/career-ops cover`로 필요할 때 완성하고 생성합니다 |
| **이력서 너머** | 기업 리서치([`deep`](modes/deep.md))는 AI 전략, 최근 동향, 엔지니어링 문화, 그리고 당신의 프로필이 취해야 할 각도를 드러냅니다. 연락처 발굴([`contacto`](modes/contacto.md))은 연락할 가치가 있는 채용 매니저, 리크루터, 팀 동료를 찾아내고 연락처 유형에 맞춘 300자 이하의 LinkedIn 메시지 초안을 작성합니다. 정식 지원 이메일 초안([`email`](modes/email.md))은 평가된 리포트나 붙여넣은 JD를 제목, 본문, 첨부 체크리스트로 바꿔주되 아무것도 보내거나 제출하거나 클릭하지 않습니다. 지원서는 당신을 대기열에 넣어주고, 리서치는 대화를 만들어 줍니다. |
| **패턴 분석** | 거절 패턴과 ATS 채널별 진행률(`analyze-patterns.mjs`), 전체 구직 퍼널 통계(`stats.mjs`), 유령 채용의 신호일 수 있는 재게시 감지(`detect-reposts.mjs`) |
<details>
<summary><b>그 밖에 하는 모든 것</b></summary>
| 기능 | 설명 |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **자동 파이프라인** | URL 입력만으로 전체 평가 + PDF + 트래커 등록 |
| **면접 스토리 뱅크** | 평가 데이터 기반 STAR+Reflection 스토리 축적: 실제로 받는 행동 면접 질문에 맞춰 다듬어 쓸 수 있는 5~10개의 마스터 답변 |
| **협상 전략 스크립트** | 연봉 협상 프레임워크, 거주지 기반 연봉 차등(Geographic Discount) 대응 논리, 경쟁 오퍼 활용 전략 |
| **지원 이메일 초안** | 리포트나 붙여넣은 JD로부터 리크루터, 추천, 콜드 지원용 정식 이메일을 작성: 제목, 첨부 체크리스트, 근거가 있는 적합성 포인트, 프로필 기반 연락처 블록 포함. 초안만 작성하며, career-ops는 절대 보내거나 제출하거나 클릭하지 않습니다. |
| **포털 스캐너** | 100개 이상의 기업 사전 설정 (Anthropic, OpenAI, ElevenLabs, Retool, n8n 등) + Ashby, Greenhouse, Lever, Wellfound 전반의 커스텀 웹 검색 |
| **투자 유치 기업 발견** | 검토 우선 방식의 `company:funded` 명령이 구조화된 공개 피드에서 최근 투자를 유치한 기업과 소스 진단을 보여주며, 당신의 데이터는 수정하지 않습니다 |
| **일괄 처리** | 헤드리스 CLI 워커(`claude -p` / `opencode run`)로 병렬 평가 |
| **Dashboard TUI** | 터미널 UI에서 파이프라인 탐색, 필터링, 정렬 |
| **파이프라인 무결성** | 자동 병합, 중복 제거, 상태 정규화, 헬스 체크 |
| **면접 스위트** | 시간 블록 단위의 준비 계획, 피드백이 있는 연습 세션, 면접 후 디브리핑([`interview/`](modes/interview/README.md)), 그리고 기업 위험 신호 감지기([`interview-redflag`](modes/interview-redflag.md)) |
| **오퍼 단계** | 계약서 읽기 도우미: 조항별 검토와 변호사에게 물어볼 질문 목록([`offer-prep`](modes/offer-prep.md)), 그리고 희망/공고/실제 연봉 격차 분석기(`salary-gap.mjs`) |
| **팔로업과 답신** | 팔로업 주기 계산기와 미리 심어둔 리마인더(`followup-cadence.mjs`, `followup-seed.mjs`); 고용주 답신을 트래커 업데이트로 분류([`reply-watch`](modes/reply-watch.md)) |
| **플러그인 시스템** | 선택적 연동(Gmail, Notion, Apify + 커뮤니티 레지스트리), 기본적으로 비활성화. [docs/PLUGINS.md](docs/PLUGINS.md) 참고 |
</details>
## 작동 원리
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/how-it-works-dark.svg"><img src="docs/how-it-works-light.svg" alt="How it works: you paste a job URL or description. Archetype Detection classifies it as LLMOps, Agentic, PM, SA, FDE or Transformation. The A-H Evaluation reads cv.md and covers match, gaps, comp research, STAR stories and legitimacy. It produces a report (reports/*.md), the tailored CV in the format set by cv.output_format — a PDF by default — and a tracker entry (data/applications.md)." width="760"></picture></p>
## 빠른 시작
**가장 빠른 방법, 명령 하나로:**
```bash
npx @santifer/career-ops init
```
> 💡 `npx`는 [Node.js](https://nodejs.org)에 포함되어 있습니다: 전역으로 아무것도 설치하지 않고
> 설치 프로그램을 한 번 실행합니다. Node가 아직 없나요? 먼저 설치하세요.
> (이미 Claude Code / Codex CLI를 쓰고 있나요? 그러면 이미 있습니다.)
이 명령은 최신 릴리스를 `./career-ops`에 클론하고 의존성을 설치합니다. 그다음:
```bash
cd career-ops
claude # or codex / qwen / opencode / agy / grok — open your AI CLI here
```
**처음 실행하면 career-ops가 대화만으로 설정(이력서, 프로필, 목표 직무)을 안내합니다. 직접 편집할 것은 없습니다.**
<details>
<summary><b>수동으로 설정하고 싶나요? (git clone)</b></summary>
```bash
git clone https://github.com/career-ops-hq/career-ops.git
cd career-ops && npm install
npx playwright install chromium # only needed for PDF generation
# On a non-Debian/Ubuntu Linux distro (Fedora, Arch, ...), Chromium's system
# libraries aren't installed by the line above — install them yourself with
# your distro's package manager if PDF generation fails to launch the browser
# (Playwright's own docs list the required libraries per platform).
# 2. Open your AI CLI in this directory. On first launch it walks you
# through setup (your CV, profile and target roles) by chatting
claude # or codex / opencode / qwen / agy / grok
# Then ask your CLI to adapt the system to you:
# "Change the archetypes to backend engineering roles"
# "Translate the modes to English"
# "Add these 5 companies to portals.yml"
# "Update my profile with this CV I'm pasting"
# 3. Start using
# 채용 공고 URL이나 설명 텍스트를 붙여 넣으면 auto-pipeline이 실행됩니다.
# 그 밖의 모드와 CLI에서 요청하는 방법은 아래 '사용법'을 참고하세요.
```
</details>
### 전역 설치
```bash
npm i -g @santifer/career-ops
```
이렇게 하면 `career-ops` 바이너리가 전역으로 설치되어 `npx` 없이 `career-ops init [folder]`를 실행할 수 있습니다. `init`이 유일한 명령입니다. 작업 공간을 만들 뿐이며, 그 이후의 모든 작업은 이 바이너리가 아니라 AI 코딩 CLI 안에서 이루어집니다(아래 사용법 참고).
**어떤 것을 써야 할까요?**
- `npx @santifer/career-ops init`: 처음 사용할 때 가장 좋습니다. 전용 프로젝트 폴더를 만듭니다.
- `npm i -g @santifer/career-ops`: `npx` 형식보다 `career-ops init`을 입력하는 편이 좋을 때. 다른 명령은 추가되지 않습니다.
### 다른 실행 방법
- **어느 폴더에서나, Claude Code 플러그인으로:** [docs/CLAUDE_PLUGIN.md](docs/CLAUDE_PLUGIN.md).
- **AI CLI 없이:** 독립 실행형 Gemini, Ollama, OpenAI 호환 스크립트가 채용 공고를 단독으로 평가합니다. [docs/SCRIPTS.md](docs/SCRIPTS.md#geminieval--ollamaeval--openaieval)를 참고하세요.
> **이 시스템은 당신의 AI 코딩 CLI가 직접 커스터마이즈하도록 설계되었습니다.** 모드, 아키타입, 점수 가중치, 협상 스크립트: 바꿔 달라고 말하기만 하면 됩니다. CLI가 자신이 사용하는 파일을 그대로 읽기 때문에 무엇을 편집해야 하는지 정확히 알고 있습니다.
전체 설정 가이드는 [docs/SETUP.md](docs/SETUP.md), 커스텀 또는 로컬 모델로 career-ops를 저렴하게 실행하는 방법은 [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md)(Antigravity CLI 무료 티어에서 비용 없이 실행하는 방법은 [docs/FREE_TIER.md](docs/FREE_TIER.md)), 반복 스캔 예약과 토큰을 쓰지 않는 선별→숏리스트 레시피는 [docs/AUTOMATION.md](docs/AUTOMATION.md), ATS 자동 입력 흐름의 세부 사항은 [docs/APPLY_AUTOFILL.md](docs/APPLY_AUTOFILL.md), LinkedIn 1촌 내보내기 파일을 퍼널의 기업들과 대조하는 방법은 [docs/LINKEDIN_JOIN.md](docs/LINKEDIN_JOIN.md), 흔한 설정 질문에 대한 답은 [docs/FAQ.md](docs/FAQ.md)를 참고하세요. 여기에는 [스토리 출처 관리가 지어낸 숫자를 막는 방법](docs/FAQ.md#why-does-career-ops-refuse-to-use-a-number-from-my-story-bank)도 포함됩니다. 설계 원칙은 [ARCHITECTURE.md](ARCHITECTURE.md)에, 런타임 흐름은 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)에 있습니다.
## 사용법
채용 공고 URL이나 설명을 AI CLI에 붙여 넣으세요. career-ops는 링크가 있는 공고가 아직 열려 있는지 확인하고(붙여 넣은 텍스트에는 확인할 링크가 없습니다), 이력서와 비교해 점수를 매기고, 리포트를 작성하고, 이력서를 맞춤 제작하고(기본은 PDF), 트래커에 한 줄을 추가합니다. 대부분의 날은 이것으로 충분합니다. 나머지는 모두 이름으로 요청하는 모드입니다. 공고를 읽을 수 없으면 파이프라인이 멈추고 텍스트를 붙여 넣어 달라고 요청합니다.
### 모드 요청하는 방법
| CLI | `scan` 요청 방법 |
| --- | --- |
| Claude Code, OpenCode, Antigravity CLI (`agy`), Grok Build CLI | `/career-ops scan` |
| Pi | `/skill:career-ops scan` |
| Codex, Qwen, Cursor 또는 그 밖의 지원되는 CLI | 일상 언어: "Run the career-ops scan mode" |
`/career-ops`만 입력하면 명령어 메뉴가 표시됩니다 (이를 사용하는 CLI에서). 일상 언어는 지원하는 모든 CLI에서 동작합니다. Claude Code 플러그인으로 사용할 때 명령어는 `/career-ops:career-ops`입니다.
모든 CLI가 하나의 라우터 `.agents/skills/career-ops/SKILL.md`와 같은 `modes/*.md` 파일을 공유하므로, 어떤 CLI든 요청을 같은 방식으로 라우팅합니다(브라우저를 많이 쓰는 모드는 Playwright 도구도 필요합니다). Codex에서는 슬래시 명령이 보장되지 않습니다. 일상 언어로 요청하거나 `codex exec "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"`로 프롬프트 하나를 헤드리스로 실행하세요([docs/CODEX.md](docs/CODEX.md)). 지원하는 각 CLI에서 실행하는 방법, 헤드리스 명령이 있는 CLI의 해당 명령, CLI별 설정 참고 사항은 [docs/SUPPORTED_CLIS.md](docs/SUPPORTED_CLIS.md)에 있습니다.
### 자주 쓰는 명령어
| 명령어 | 기능 |
| --- | --- |
| *URL 또는 채용 공고 붙여넣기* | 전체 파이프라인: 공고 게시 여부 확인(URL만), A-G 평가 + 높은 점수에서 H, 리포트, 맞춤 이력서(기본은 PDF), 트래커 행 |
| `scan` | 포털을 스캔해 새 공고를 찾고 인박스(`data/pipeline.md`)에 추가 |
| `pipeline` | 인박스에서 대기 중인 URL을 차례로 처리 (standard와 premium 등급은 명백히 맞지 않는 것을 건너뛸 수 있음) |
| `apply` | 지원서 양식을 사용자와 함께 항목별로 작성. 제출 직전에 멈춤 |
| `tracker` | 각 지원의 현재 상태 |
| `followup` | 팔로업이 필요한 지원과 초안 |
<details>
<summary><b>전체 명령어 (구직 단계별)</b></summary>
`oferta`, `ofertas`, `contacto`는 원래의 스페인어 이름을 유지합니다. 각각 오퍼, 여러 오퍼, 연락처를 뜻합니다.
**공고 찾기**
| 명령어 | 기능 |
| --- | --- |
| [`scan`](modes/scan.md) | 포털 스캔 및 새 공고 발견 |
| [`discover`](modes/discover.md) | 기업 이름 목록을 스캔 가능한 ATS 보드로 변환합니다. 기본은 미리보기이며 `--write`를 줄 때만 `portals.yml`에 추가합니다 (토큰 사용 없음) |
| [`pipeline`](modes/pipeline.md) | 인박스(`data/pipeline.md`)의 대기 중인 URL 처리 |
| [`triage`](modes/triage.md) | 전체 평가 전에 `modes/_brief.md` 기준으로 지원 여부를 빠르게 1차 판정 (파일을 쓰지 않음) |
| [`batch`](modes/batch.md) | 헤드리스 워커로 많은 공고 평가 (Claude에서는 병렬, 다른 CLI에서는 한 번에 하나씩) |
| [`titles`](modes/titles.md) | 이력서를 바탕으로 비슷한 직무명을 제안해 탐색 범위 확장 |
**공고 평가하기**
| 명령어 | 기능 |
| --- | --- |
| *URL 또는 채용 공고 붙여넣기* | [Auto-pipeline](modes/auto-pipeline.md): 평가 + 리포트 + 맞춤 이력서(기본은 PDF) + 트래커 항목 |
| [`oferta`](modes/oferta.md) | 평가만 수행, 블록 A~G + 높은 점수에서 H (PDF 없음) |
| [`ofertas`](modes/ofertas.md) | 여러 공고 비교 및 순위 매기기 |
| [`deep`](modes/deep.md) | 기업에 대한 심층 리서치 프롬프트 |
| [`eu-swe`](modes/regional/eu-swe.md) | 이력서, 지원, 면접 전에 유럽 소프트웨어 엔지니어링 지원을 조정 |
**지원하기**
| 명령어 | 기능 |
| --- | --- |
| [`pdf`](modes/pdf.md) | ATS 최적화 이력서를 PDF로 생성 |
| [`ats`](modes/ats.md) | 생성된 이력서의 ATS 적합성 점검: 점수와 고칠 수 있는 문제 |
| [`text`](modes/text.md) | 맞춤 이력서를 markdown으로 생성 (`cv.md`를 반영, PDF 없음) |
| [`latex`](modes/latex.md) | 이력서를 LaTeX/Overleaf `.tex`로 내보내기 |
| [`latex-tex`](modes/latex-tex.md) | 직접 만든 `resume.tex`를 그 자리에서 맞춤화 (선택 사항, 기본값은 계속 `cv.md`) |
| [`cover`](modes/cover.md) | 붙여 넣은 공고 또는 평가된 리포트로 커버레터 작성 (`cover {slug}`) |
| [`email`](modes/email.md) | 정식 지원 이메일 초안. 초안만 작성: 발송, 제출, 클릭은 절대 하지 않음 |
| [`contacto`](modes/contacto.md) | 채용 담당자, 리크루터 또는 동료를 찾아 LinkedIn 메시지 초안 작성 |
| [`apply`](modes/apply.md) | 실시간 지원 도우미 (이 체크아웃의 Playwright 사용). 제출하지 않음 |
**면접**
| 명령어 | 기능 |
| --- | --- |
| [`interview-prep`](modes/interview-prep.md) | 기업별 면접 준비 문서 |
| [`interview/plan`](modes/interview/plan.md) | 다가오는 면접을 위한 시간 단위 준비 계획 |
| [`interview/practice`](modes/interview/practice.md) | 한 번에 한 질문씩 피드백과 함께 진행하는 모의 면접 |
| [`interview/debrief`](modes/interview/debrief.md) | 면접 후 복기: 부족한 부분 보완, 다음 라운드 예측 |
| [`interview-redflag`](modes/interview-redflag.md) | 입사 전에 고용주의 경고 신호 분석 |
**지원한 뒤**
| 명령어 | 기능 |
| --- | --- |
| [`tracker`](modes/tracker.md) | 지원 현황 개요 |
| [`followup`](modes/followup.md) | 팔로업 주기: 기한이 지난 지원 표시, 초안 생성 |
| [`reply-watch`](modes/reply-watch.md) | 고용주 회신을 분류하고 트래커 업데이트 제안 |
| [`outcome`](modes/outcome.md) | 지원 결과를 기록하고 산출물 보관 |
| [`offer-prep`](modes/offer-prep.md) | 받은 오퍼나 계약서를 사용자와 함께 읽기: 조항 검토와 변호사에게 할 질문 (법률 자문이 아님) |
**프로필과 이력서**
| 명령어 | 기능 |
| --- | --- |
| [`interview`](modes/interview.md) | 프로필 설정: 사용자의 경험에 대한 대화형 인터뷰로 이력서와 프로필을 구성 (면접 연습이 아님) |
| [`intake`](modes/intake.md) | `documents/`의 파일(마스터 이력서, LinkedIn 내보내기)로 프로필을 만들거나 보강. 사용자 확인 없이는 아무것도 쓰지 않음 |
| [`master-profile`](modes/master-profile.md) | Master Career Profile을 가져와 검토·검증하고, 선택한 사실을 이력서 항목으로 준비 |
| [`add`](modes/add.md) | 프로젝트, 논문 또는 직무를 이력서에 추가 (가져오기, 미리보기, 확인) |
| [`expand`](modes/expand.md) | 프로필 링크를 바탕으로 이력서에 빠진 역량 발견 |
| [`retro`](modes/retro.md) | 이 세션을 되돌아보고 가르친 내용을 규칙으로 보관 (수락한 것만 기록) |
**타기팅 개선하기**
| 명령어 | 기능 |
| --- | --- |
| [`patterns`](modes/patterns.md) | 불합격 패턴을 분석하고 타기팅 개선 |
| [`calibrate`](modes/calibrate.md) | 평가 점수가 실제 결과를 예측하는지 확인. 참고용: 점수 체계는 절대 바꾸지 않음 |
| [`upskill`](modes/upskill.md) | 평가된 리포트 전체의 스킬 갭 분석 |
| [`training`](modes/training.md) | 강의나 자격증을 North Star 기준으로 평가 |
| [`project`](modes/project.md) | 포트폴리오 프로젝트 아이디어 평가 |
**시스템**
| 명령어 | 기능 |
| --- | --- |
| [`agent-inbox`](modes/agent-inbox.md) | 다음 세션을 위한 요청을 대기열에 넣고 그때 처리 (`data/agent-inbox.md`). `inbox`도 동작 |
| [`update`](modes/update.md) | diff 미리보기와 호환성 점검과 함께 career-ops 시스템 파일 업데이트 |
</details>
## 사전 설정된 포털
스캐너에는 바로 스캔할 수 있는 **100개 이상의 기업**과 주요 채용 사이트를 아우르는 **35개 이상의 검색 쿼리**가 포함되어 있습니다. `templates/portals.example.yml`을 `portals.yml`로 복사하고 원하는 것을 추가하세요:
**AI 연구소:** Anthropic, OpenAI, Mistral, Cohere, LangChain, Pinecone
**음성 AI:** ElevenLabs, PolyAI, Parloa, Hume AI, Deepgram, Vapi, Bland AI
**AI 플랫폼:** Retool, Airtable, Vercel, Temporal, Glean, Arize AI
**컨택 센터:** Ada, LivePerson, Sierra, Decagon, Talkdesk, Genesys
**엔터프라이즈:** Salesforce, Twilio, Gong, Dialpad
**LLMOps:** Langfuse, Weights & Biases, Lindy, Cognigy, Speechmatics
**자동화:** n8n, Zapier, Make.com
**유럽:** Factorial, Attio, Tinybird, Clarity AI, Travelperk
**검색되는 채용 사이트:** 55개 이상의 프로바이더 모듈이 ATS API, 사이트 전체 피드, XML/RSS 피드, 마크다운 피드, 로컬 파서를 다룹니다. 전체 표는 [지원되는 채용 사이트](docs/SUPPORTED_JOB_BOARDS.md)를 참고하세요.
기본적으로 `node scan.mjs`(즉 `npm run scan`)는 각 ATS 피드가 반환하는 내용을 신뢰합니다. 일부 기업은 채용이 끝난 뒤에도 공개 API에 오래된 공고를 남겨두기 때문에, 만료된 항목이 `pipeline.md`로 흘러들 수 있습니다. `--verify`를 넘기면 API 단계 후에 Playwright를 실행해 만료된 공고가 파이프라인에 들어가기 전에 걸러냅니다:
```bash
node scan.mjs --verify # zero-token discovery + Playwright liveness check
```
검증은 순차적으로, 새 공고에 대해서만(중복 제거 후) 실행되므로 비용은 제한적입니다.
## Dashboard TUI
내장된 터미널 대시보드로 파이프라인을 시각적으로 탐색할 수 있습니다:
```bash
npm run serve:dashboard # launch the TUI
npm run build:dashboard # optional: build the standalone binary
```
기능: 10개의 필터 탭, 8가지 정렬 모드, 그룹/플랫 보기, 지연 로딩 미리보기, 인라인 상태 변경.
**실험적인 웹 UI**도 있습니다(알파이자 옵트인: 직접 시작하지 않으면 아무것도 실행되지 않음). [`web/README.md`](web/README.md)를 참고하세요.
## 프로젝트 구조
```
career-ops/
├── AGENTS.md # Canonical agent instructions (all CLIs)
├── CLAUDE.md # Claude Code wrapper (imports AGENTS.md)
├── CODEX.md # Codex wrapper (imports AGENTS.md)
├── OPENCODE.md # OpenCode wrapper (imports AGENTS.md)
├── GEMINI.md # Legacy no-op guard to avoid Antigravity duplicate context
├── cv.md # Your CV (create this)
├── article-digest.md # Your proof points (optional)
├── config/
│ └── profile.example.yml # Template for your profile
├── modes/ # Skill modes
│ ├── _shared.md # Shared context (customize this)
│ ├── oferta.md # Single evaluation
│ ├── pdf.md # PDF generation
│ ├── cover.md # Cover letter generation
│ ├── email.md # Formal application email drafts
│ ├── scan.md # Portal scanner
│ ├── batch.md # Batch processing
│ └── ...
├── templates/
│ ├── cv-template.html # ATS-optimized CV template
│ ├── portals.example.yml # Scanner config template
│ └── states.yml # Canonical statuses
├── batch/
│ ├── batch-prompt.md # Self-contained worker prompt
│ └── batch-runner.sh # Orchestrator script
├── dashboard/ # Go TUI pipeline viewer
├── data/ # Your tracking data (gitignored)
├── reports/ # Evaluation reports (gitignored)
├── output/ # Generated PDFs (gitignored)
├── fonts/ # Space Grotesk + DM Sans
├── docs/ # Setup, customization, budget guide, architecture
└── examples/ # Sample CV, report, proof points
```
## 외부 데이터 디렉터리 (선택 사항)
기본적으로 사용자 계층 데이터(`cv.md`, `portals.yml`, 그리고 `data/`, `reports/`, `output/` 폴더 등)는 프로젝트 루트 폴더 안에 있습니다.
개인 데이터를 코드와 분리하려면(브랜치 전환, 업데이트 받기, 여러 프로필 테스트가 쉬워집니다), 다음 우선순위에 따라 외부 데이터 디렉터리를 설정할 수 있습니다:
1. **환경 변수:** `CAREER_OPS_ROOT` 또는 `CAREER_OPS_DATA_DIR` 환경 변수를 설정합니다:
```bash
export CAREER_OPS_ROOT=~/my-career-data
```
2. **마커 파일:** 저장소 루트에 데이터 디렉터리 경로가 담긴 `.career-ops-data` 파일을 만듭니다.
3. **기본값:** 저장소 루트를 사용합니다.
결정되고 나면 모든 사용자 파일은 그 폴더를 기준으로 찾고 쓰며, 프롬프트 파일과 스크립트는 계속 저장소를 기준으로 찾습니다.
- **트래커 재정의:** `CAREER_OPS_TRACKER`를 설정해 지원 트래커 파일 경로를 직접 지정할 수도 있습니다.
- **쓰기:** 모든 쓰기 작업(병합 등)은 표준적으로 `{DATA_ROOT}/data/applications.md`를 대상으로 합니다.
- **스캐너 설정:** `portals.yml`은 `{DATA_ROOT}/portals.yml`에서 읽고 검증하므로, `node validate-portals.mjs`는 `scan.mjs`가 읽는 것과 같은 파일을 검사합니다.
- **생성된 문서:** 맞춤 이력서와 자기소개서는 `{DATA_ROOT}/output/` 아래에 쓰이고, 이를 리포트와 연결하는 PDF 매니페스트는 `{DATA_ROOT}/data/pdf-index.tsv`에 있습니다. `CAREER_OPS_TRACKER`가 설정되지 않은 동안에는 이런 쓰기의 범위를 정하는 트래커 작업 공간이 체크아웃이 아니라 데이터 루트입니다.
- **트래커 재정의 시의 PDF:** `generate-pdf.mjs`는 작업 공간을 정하기 전에 `CAREER_OPS_TRACKER`를 먼저 확인하므로, 재정의가 설정되어 있으면 작업 공간은 그 트래커가 있는 폴더(트래커가 `data/` 폴더에 있으면 그 상위 폴더)가 됩니다. 이때 이력서의 HTML과 모든 PDF는 그 작업 공간 안에 있어야 하며, 매니페스트는 그곳의 `data/pdf-index.tsv`로 옮겨집니다. 자기소개서는 계속 `{DATA_ROOT}/output/`을 대상으로 하므로, 그 폴더가 트래커 작업 공간 밖에 있으면 거부됩니다.
- **코드 계층은 그대로:** `node_modules/`, `providers/`, `modes/`, 그리고 스크립트 자체는 항상 저장소를 기준으로 찾으며, 데이터 루트를 기준으로 하지 않습니다.
Go 대시보드 TUI, Node.js 스크립트, AI 에이전트 모드 모두 이 결정 순서를 자동으로 따릅니다.
## Tech Stack





- **에이전트**: 공유 스킬과 모드를 갖춘 AI 코딩 CLI (`AGENTS.md` + CLI별 래퍼)
- **PDF**: Playwright + HTML 템플릿
- **자기소개서**: HTML 템플릿 + Playwright (A4 PDF, 이력서와 동일한 파이프라인)
- **스캐너**: Playwright + Greenhouse API + WebSearch
- **대시보드**: Go + Bubble Tea + Lipgloss (Catppuccin Mocha 테마)
- **데이터**: 마크다운 표 + YAML 설정 + TSV 일괄 처리 파일
<p align="center">
<a href="https://github.com/career-ops-hq/career-ops/releases/latest"><img src="docs/npm-badge.svg" alt="Latest release"></a>
</p>
<p align="center">
<a href="https://claude.com/claude-code"><img src="https://img.shields.io/badge/Built_with-Claude_Code-000?style=for-the-badge&logo=anthropic&logoColor=white" alt="Built with Claude Code"></a>
</p>
<p align="center">
<sub>에이전트 스킬 표준을 따르는 어떤 CLI에서도 실행됩니다. <a href="docs/SUPPORTED_CLIS.md">지원 CLI</a>를 보세요.</sub><br>
<img src="https://img.shields.io/badge/Claude_Code-000?style=flat&logo=anthropic&logoColor=white" alt="Claude Code">
<img src="https://img.shields.io/badge/OpenCode-111827?style=flat&logo=terminal&logoColor=white" alt="OpenCode">
<img src="https://img.shields.io/badge/Antigravity_CLI-4285F4?style=flat&logo=google&logoColor=white" alt="Antigravity CLI">
<img src="https://img.shields.io/badge/Codex-412991?style=flat&logo=openai&logoColor=white" alt="Codex">
<img src="https://img.shields.io/badge/Qwen-615CED?style=flat" alt="Qwen">
<img src="https://img.shields.io/badge/Kimi-FF4B4B?style=flat" alt="Kimi">
<img src="https://img.shields.io/badge/GitHub_Copilot-000?style=flat&logo=githubcopilot&logoColor=white" alt="GitHub Copilot">
<img src="https://img.shields.io/badge/Grok_Build_CLI-000?style=flat&logo=x&logoColor=white" alt="Grok Build CLI">
<img src="https://img.shields.io/badge/Pi-4B3F72?style=flat" alt="Pi">
<br>
<img src="https://img.shields.io/badge/Node.js-339933?style=flat&logo=node.js&logoColor=white" alt="Node.js">
<img src="https://img.shields.io/badge/Go-00ADD8?style=flat&logo=go&logoColor=white" alt="Go">
<img src="https://img.shields.io/badge/Playwright-2EAD33?style=flat&logo=playwright&logoColor=white" alt="Playwright">
<img src="https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&logo=go&logoColor=white" alt="Bubble Tea">
<img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT">
<a href="TRADEMARK.md"><img src="https://img.shields.io/badge/Trademark-Policy-blue.svg" alt="Trademark Policy"></a>
</p>
## 관련 오픈소스 프로젝트
- **[cv-santiago](https://github.com/santifer/cv-santiago)**: 포트폴리오 웹사이트 (santifer.io). AI 챗봇, LLMOps 대시보드, 케이스 스터디가 포함되어 있습니다. 취업 활동과 함께 보여줄 포트폴리오가 필요하다면, 포크해서 당신의 것으로 만드세요.
## FAQ
**career-ops가 뭔가요?**
career-ops([career-ops.org](https://career-ops.org), **careerops**라고도 부릅니다)는 당신의 AI 코딩 CLI(Claude Code, Codex, OpenCode 등) 안에서 로컬로 실행되는 오픈 소스 AI 구직 도구로, 모든 결정을 당신에게 맡깁니다. 이력서 기준으로 채용 공고를 평가하고, ATS 맞춤 PDF를 생성하고, 연락할 적임자를 찾고, 모든 것을 한곳에서 추적합니다: 최종 결정은 항상 당신의 몫입니다. [CareerOps 매니페스토](https://career-ops.org/manifesto)의 첫 번째 참조 구현입니다.
**맞춤 이력서가 없는 내용을 지어낼 수 있나요?**
그래서는 안 되며, 프롬프트에도 그렇게 적혀 있습니다: 다듬되, 절대 지어내지 않는다. `generate-pdf`는 당신의 원본 자료에 없는 숫자나 사실이 담긴 이력서를 막습니다(`--skip-fact-check`를 넘기지 않는 한). `pdf` 모드는 `cv-title-check.mjs`도 실행합니다. 맞춤 이력서의 각 직함을 cv.md에 적힌 같은 경력(회사와 기간으로 대조)의 직함과 비교하고, 다른 것이 있으면 유지할지 되돌릴지 묻습니다. 직함을 달리 표현하는 것이 당신의 선택일 때도 있으므로 경고만 하고 막지는 않습니다. 바꿔 쓴 표현을 판단하는 검사는 아직 없습니다: [#1411](https://github.com/career-ops-hq/career-ops/issues/1411) (실패 시 차단하는 충실도 검사)이 이를 추적합니다. 그때까지는 보내기 전에 모든 이력서를 읽어보세요. [법적 고지](LEGAL_DISCLAIMER.md)에도 같은 내용이 더 길게 적혀 있습니다.
**career-ops를 무료로, 또는 더 저렴한 모델이나 로컬 모델로 쓸 수 있나요?**
네. career-ops는 CLI에 종속되지 않으며 무료 및 로컬 모델(OpenRouter 무료 모델, Ollama, 또는 OpenAI 호환 엔드포인트)에서 실행되므로 유료 구독에 묶이지 않습니다. 전체 설정은 [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md)를 참고하세요.
**Claude Pro/Max를 결제했는데 career-ops가 API 크레딧을 소모하고 있어요. 왜죠?**
환경에 있는 `ANTHROPIC_API_KEY`가 로그인된 구독보다 우선하기 때문입니다: CLI가 그 키를 사용하고 토큰당 과금합니다. `echo $ANTHROPIC_API_KEY`를 실행해서 무언가 출력되면 셸 프로필에서 제거하고, 터미널을 재시작한 뒤 `/login`을 실행하세요. 일괄 처리 모드는 예외입니다. `claude -p` 워커는 대화형 로그인을 쓰지 않으므로 `claude setup-token`을 한 번 실행하고 그 결과를 `CLAUDE_CODE_OAUTH_TOKEN`으로 내보내세요. 전체 안내는 [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md#2b-already-paying-for-a-subscription-make-sure-you-are-using-it)에 있습니다.
**career-ops는 어떤 AI CLI와 함께 쓸 수 있나요?**
career-ops는 오픈 Agent Skill Standard를 통해 주요 AI 코딩 CLI(Claude Code, Codex, Gemini / Antigravity, OpenCode, Grok, Qwen 등) 어디서든 실행되므로, 특정 벤더에 묶이지 않습니다. 이미 가지고 있는 CLI를 쓰세요.
**Windows에는 어떻게 설치하나요?**
career-ops는 Windows에서 실행됩니다. 플랫폼별 설정과 알려진 까다로운 부분(Git Bash 탐색, 줄 끝 문자, 작업 스케줄러)은 [docs/WINDOWS.md](docs/WINDOWS.md)에 있습니다. 설치 중 심볼릭 링크 오류로 스킬이 로드되지 않으면 해결 방법은 [docs/FAQ.md](docs/FAQ.md)에 있습니다. 전체 단계는 [docs/SETUP.md](docs/SETUP.md)를 참고하세요.
**career-ops가 저 대신 자동으로 지원하나요?**
아니요. career-ops는 필터이지 무차별 자동 지원 도구가 아닙니다. AI가 평가하고 순위를 매기고 초안을 쓰면, 당신이 검토하고 결정합니다. 초안을 쓰고 양식을 채우지만, 절대 제출하지 않습니다. 제출 버튼은 당신이 누릅니다. 이 Human-in-the-Loop 설계가 핵심입니다.
**career-ops는 무료이고 오픈 소스인가요?**
네. career-ops는 무료이고 오픈 소스이며, 구직자에게는 앞으로도 항상 그럴 것입니다. 이는 [CareerOps 매니페스토](https://career-ops.org/manifesto)의 첫 번째 참조 구현입니다. 읽어보고, 당신이 믿는 바를 말하고 있다면 서명하세요.
## 저자 소개
[Santiago Fernández de Valderrama Aparicio](https://santifer.io/about)(santifer)입니다. 전직 창업자로, 직접 사업을 만들어 매각했고 그 사업은 아직도 제 이름으로 운영되고 있습니다. 제 취업 활동을 관리하기 위해 career-ops를 만들었고, 효과가 있었습니다: 이 시스템으로 Head of Applied AI 포지션에 합격했습니다. 6개월 뒤, career-ops 개발에 풀타임으로 전념하기 위해 그 포지션을 떠났습니다.
AI 에이전트 군단과 모든 병합을 직접 결정하는 사람 한 명이 이만한 규모의 저장소를 어떻게 유지보수하는지 궁금하신가요? [Agentic maintenance: how career-ops is run by a fleet of AI agents](https://santifer.io/ai-agent-fleet)를 읽어보세요.
포트폴리오 및 기타 오픈소스 프로젝트 → [santifer.io](https://santifer.io)
Wikidata: [Santiago Fernández de Valderrama Aparicio](https://www.wikidata.org/wiki/Q138710224) · [career-ops](https://www.wikidata.org/wiki/Q139007988).
## 면책 조항
**career-ops는 로컬 오픈소스 도구이며, 호스팅 서비스가 아닙니다.** 이 소프트웨어를 사용함으로써 다음 사항에 동의하는 것으로 간주됩니다:
1. **데이터는 당신이 통제합니다.** 이력서, 연락처, 개인정보는 당신의 컴퓨터에 머물며, 당신이 선택한 AI 제공사(Anthropic, OpenAI 등)에게만 직접 전송됩니다. 저희는 어떤 데이터도 수집, 저장, 접근하지 않습니다.
2. **AI는 당신이 통제합니다.** 기본 프롬프트는 AI가 지원서를 자동 제출하지 않도록 지시하지만, AI 모델은 예측 불가능하게 동작할 수 있습니다. 프롬프트를 수정하거나 다른 모델을 사용하는 경우 그 책임은 당신에게 있습니다. **제출 전에 항상 AI가 생성한 콘텐츠의 정확성을 확인하세요.**
3. **제3자 약관은 당신이 준수합니다.** 채용 포털(Greenhouse, Lever, Workday, LinkedIn 등)의 이용약관에 따라 이 도구를 사용해야 합니다. 이 도구를 고용주에게 스팸을 보내거나 ATS 시스템에 과부하를 주는 용도로 사용하지 마세요.
4. **보증은 없습니다.** 평가 결과는 추천이지 사실이 아닙니다. AI 모델은 스킬이나 경험을 허위로 생성할 수 있습니다. 저자는 채용 결과, 거절된 지원, 계정 제한 또는 기타 결과에 대해 책임지지 않습니다.
자세한 내용은 [LEGAL_DISCLAIMER.md](LEGAL_DISCLAIMER.md)를 참고하세요. 이 소프트웨어는 [MIT 라이선스](LICENSE)에 따라 어떠한 보증 없이 "있는 그대로" 제공됩니다.
## 기여자
<a href="https://github.com/career-ops-hq/career-ops/graphs/contributors">
<img src="https://contrib.rocks/image?repo=career-ops-hq/career-ops&v=2" />
</a>
코드, 문서, 번역, 테스트를 기여한 모든 분은
[CONTRIBUTORS.md](CONTRIBUTORS.md)에 실려 있습니다. 위 그래프에 보이지 않는
비코드 기여도 포함됩니다.
career-ops로 취업하셨나요? [이야기를 공유해 주세요!](https://github.com/career-ops-hq/career-ops/issues/new?template=i-got-hired.yml)
## 라이선스 및 상표
코드는 [MIT](LICENSE) 라이선스를 따릅니다. "career-ops"라는 이름과
브랜드는 [상표 정책](TRADEMARK.md)의 적용을 받으며, 커뮤니티 사용에는
관대하고, 상업적 제품명과 보증 용도로는 제한됩니다.
## 스타 히스토리
<p align="center">
<a href="https://warpchart.dev/hq">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://warpchart.dev/api/chart?theme=dark&v=3">
<img alt="Live star telemetry of career-ops-hq/career-ops" src="https://warpchart.dev/api/chart?theme=light&v=3" loading="lazy">
</picture>
</a>
</p>
<p align="center"><sub>만들고 유지보수하는 사람: <a href="https://santifer.io">Santiago Fernández de Valderrama Aparicio</a> (<a href="https://github.com/santifer">@santifer</a>)</sub></p>
## 소통하기
[](https://santifer.io)
[](https://linkedin.com/in/santifer)
[](https://x.com/santifer)
[](https://discord.gg/8pRpHETxa4)
[](mailto:hi@santifer.io)