MadsLorentzen/ai-job-search
요약
Claude Code를 활용하여 채용 공고 평가, 이력서 맞춤화, 자기소개서 작성 및 면접 준비를 지원하는 AI 기반 구직 프레임워크입니다. 사용자의 프로필을 기반으로 직무 적합성을 분석하고 자동화된 워크플로우를 통해 구직 과정을 효율화합니다.
핵심 포인트
- Claude Code 기반의 풀스택 구직 어시스턴트 프레임워크
- 이력서(CV) 맞춤화 및 자기소개서 초안 작성 지원
- 채용 공고 스크래핑 및 사용자 프로필과의 적합성 평가 기능
- 언어 및 국가에 구애받지 않는 구조화된 워크플로우 설계
- LaTeX를 활용한 전문적인 이력서 컴파일 지원
Claude Code를 기반으로 구축된 AI 기반 구직 지원 프레임워크입니다. 이 저장소를 포크(Fork)하고 프로필을 작성하면, Claude가 채용 공고를 평가하고, 귀하의 이력서(CV)를 맞춤화하며, 자기소개서(Cover letter)를 작성하고, 면접 준비를 도와줍니다.
Claude Code를 풀스택 구직 어시스턴트로 변환하는 구조화된 워크플로우입니다. 핵심 워크플로우(자기 프로필 작성, 적합성 평가, 그리고 초안 작성자-검토자(drafter-reviewer) 지원 파이프라인)는 언어 및 국가에 구애받지 않습니다 (language- and country-agnostic). 채용 포털 검색 기술은 덴마크 시장(Jobindex, Jobnet, Akademikernes Jobbank 등)을 위해 구축되었지만, 그 패턴은 사용자의 지역 채용 게시판으로 교체할 수 있도록 설계되었습니다.
/setup /scrape /apply <url>
| | |
v v v
...
이 프레임워크는 구조화된 평가 기준, 미래 지향적인 자기소개서 프레이밍, 선택적인 급여 벤치마킹(salary benchmarking)을 포함하여 커리어 가이드의 모범 사례를 인코딩합니다.
- Claude Code (CLI)
- Python 3.10+
- Bun (덴마크 채용 검색 CLI 도구용)
lualatex및xelatex를 포함한 LaTeX 배포판: TeX Live 또는 MiKTeX. 이력서(CV)는lualatex로 컴파일됩니다 (pdflatex는fontawesome5폰트 확장 오류로 인해 최신 MiKTeX 설치 환경에서 실패하는 경우가 많습니다). 자기소개서는cover.cls가fontspec을 요구하기 때문에xelatex로 컴파일됩니다. - 선택 사항:
poppler의pdftotext(macOS:brew install poppler, Debian/Ubuntu:apt install poppler-utils, Windows:choco install poppler) — 컴파일된 이력서의 ATS(채용 관리 시스템) 파싱 가능성 확인을 위해/apply에서 사용됩니다. 설치되어 있지 않은 경우, 확인 프로세스는 시각적 키워드 검토로 부드럽게 전환됩니다.
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
cd .agents/skills/jobbank-search/cli && bun install && cd ../../../..
cd .agents/skills/jobdanmark-search/cli && bun install && cd ../../../..
cd .agents/skills/jobindex-search/cli && bun install && cd ../../../..
...
linkedin-search의 경우 설치는 선택 사항입니다. 런타임 의존성이 전혀 없으며 일반 bun으로 실행됩니다; bun install은 TypeScript 개발용 타입(dev types)만 가져옵니다.
claude
# 그 후 Claude Code 내부에서:
/setup
/setup
세 가지 경로를 제공합니다: 내용이 채워진 documents/ 폴더가 있다면 이를 읽어오고(이력서 PDF, LinkedIn 내보내기 파일, 학위 증명서, 추천서, 과거 지원서 등), 채팅창에 붙여넣은 단일 이력서(CV)를 가져오거나, 인터뷰를 진행하며 정보를 입력할 수 있습니다. 시스템이 보유한 정보를 자동으로 감지하여 질문합니다. documents/ 폴더 모드는 멱등성(idempotent)을 가지므로, 더 많은 자료를 추가하며 다시 실행해도 안전합니다. 레이아웃에 대해서는 documents/README.md를 참조하세요.
/scrape
이 명령은 여러 채용 포털에서 사용자의 프로필과 일치하는 직무를 검색하고, 중복된 결과를 제거한 뒤, 적합도(fit) 순으로 정렬하여 보여줍니다. 일치하는 항목을 선택하여 즉시 /apply를 실행할 수 있습니다.
/apply https://jobindex.dk/job/1234567
URL을 가져올 수 없는 경우(일부 채용 포털은 자동화된 접근을 차단함), 대신 직무 기술서(job description)를 직접 붙여넣을 수 있습니다:
/apply <여기에 전체 직무 기술서를 붙여넣으세요>
이 명령은 전체 워크플로우를 실행합니다: 적합도 평가, 이력서(CV) 및 자기소개서(cover letter) 초안 작성, 두 번째 에이전트와 함께 검토, 수정, 그리고 최종 결과물 제시 순으로 진행됩니다.
/setup, /scrape, /apply가 핵심 워크플로우를 형성합니다. 프로필이 준비되면 다음 네 가지 명령어를 통해 기능을 확장할 수 있습니다:
/expand: 이미 연결된 공개 소스(GitHub 저장소, 포트폴리오 사이트, Kaggle, Google Scholar)를 스캔하고, 명시된 강의 및 자격증의 강의 계획서(syllabi)를 찾아내어 프로필을 풍성하게 만듭니다. 발견된 역량은 출처 태그와 함께 프로필에 추가됩니다. 문서만으로는 명시되지 않은 기술을 드러내기 위해 /setup 직후에 사용하면 유용합니다.
/upskill: 사용자의 프로필과 추적 중인 채용 공고 사이의 격차(gap)를 분석합니다(/upskill <URL>을 통해 단일 공고 분석 가능). 기술 격차에 대한 우선순위가 지정된 히트맵(heatmap)과 웹 검색을 통한 학습 자료 및 예상 소요 시간이 포함된 학습 계획을 생성합니다. 지원 사이의 커리어 계획을 세울 때 유용합니다.
/add-template: 기본 템플릿 대신 사용자의 LaTeX 이력서 또는 자기소개서 템플릿을 등록합니다. 템플릿의 지침(컴파일 엔진, 글꼴, 스타일 규칙, 페이지 제한)을 캡처하고, 필수 테스트 컴파일을 실행한 뒤, 해당 템플릿을 /apply에 연결합니다.
. 아래의 LaTeX 템플릿을 참조하세요. 귀하의 시장에 있는 채용 포털을 위한 채용 포털 검색 스킬을 생성합니다. 해당 포털(검색 URL 패턴, 결과 구조, 액세스 규칙)을 조사하고, 이미 출시된 스킬들과 동일한 구조로 CLI 스킬을 구성(scaffold)하며, 등록 전 실제 쿼리를 테스트 실행합니다. 아래의 채용 검색 도구(Job search tools)를 참조하세요. /add-portal
/reset
또한 사용할 수 있으며, 아래의 '처음부터 다시 시작하기(Starting over)'를 참조하세요.
ai-job-search/
├── CLAUDE.md # 주요 후보자 프로필 + 워크플로 규칙
├── .claude/
...
/apply 명령은 필수적인 PDF 컴파일을 포함하는 **초안 작성자-검토자 워크플로 (drafter-reviewer workflow)**를 실행합니다:
파싱 (Parse): 채용 공고(URL 또는 텍스트)를 분석합니다.
적합성 평가 (Evaluate fit): 귀하의 프로필(기술, 경력, 문화, 위치, 커리어 정렬)과 대조하여 평가합니다.
초안 작성 (Draft): LaTeX를 사용하여 맞춤형 이력서(CV)와 자기소개서(cover letter)를 작성합니다.
검토자 에이전트 생성 (Spawn a reviewer agent): 회사를 조사하고 초안을 비판적으로 검토하는 에이전트를 생성합니다.
수정 (Revise): 검토자의 피드백을 바탕으로 수정합니다.
컴파일 및 검사 (Compile and inspect): 두 PDF를 모두 컴파일합니다. 이력서(CV)는 lualatex를, 자기소개서(cover letter)는 xelatex를 사용합니다. Claude는 렌더링된 페이지를 읽고, 이력서가 고립된 항목 제목 없이 정확히 2페이지가 되고, 자기소개서가 서명이 보이고 글꼴이 일관되게 정확히 1페이지가 될 때까지 LaTeX를 반복 수정합니다.
이력서 ATS 체크 (ATS-check the CV): PDF의 텍스트 레이어를 추출(pdftotext, 선택적 의존성)하고, ATS 파서(ATS parser)가 보는 방식 그대로 검증합니다 — 연락처 정보가 일반 텍스트로 존재해야 하며, 깨진 글리프(glyphs)가 없어야 하고, 합리적인 읽기 순서를 가져야 합니다 — 그 다음 추출된 내용과 채용 공고의 키워드 커버리지를 비교하여 점수를 매깁니다. 프로필이 진정으로 지원하는 키워드는 추가되지만, 실제 공백은 그대로 유지되며 절대 억지로 채워 넣지 않습니다.
최종 출력 제시 (Present): 검증 체크리스트와 함께 최종 결과물을 제시합니다.
이력서와 자기소개서의 모든 주장은 귀하의 실제 프로필을 바탕으로 검증됩니다. 시스템은 기술이나 경력을 절대 조작하지 않습니다.
PDF 검증 루프 (PDF verification loop). 대부분의 LaTeX 이력서 템플릿은 ".tex 파일에서는 괜찮아 보이는" 결과물을 생성하지만, 실제 PDF에서는 문제가 발생합니다: 직함이 다음 페이지로 넘어가거나, 자기소개서가 2페이지로 넘어가거나, 불렛 포인트(bullet) 글꼴이 본문 글꼴로 조용히 대체되는 등의 문제입니다. /apply
명령어는 모든 PDF를 컴파일하고 시각적으로 검사하며, 레이아웃이 깨끗해질 때까지 표적 수정(예: \needspace, \enlargethispage, 목록 항목을 위한 글꼴 일치 래퍼)을 적용합니다. 이는 모든 지원 과정에서 자동으로 실행됩니다.**PDF 텍스트 레이어에 대한 ATS 검증.**ATS는 렌더링된 페이지가 아닌 PDF에 내장된 텍스트를 읽습니다. 그리고 LaTeX는 이메일이 있어야 할 자리에 아이콘 글리프가 나타나거나, 다중 열 레이아웃에서 줄들이 교차되는 등 쓰레기 같은 텍스트로 추출되는 PDF를 조용히 생성할 수 있습니다. /apply
pdftotext를 사용하여 컴파일된 CV의 텍스트 레이어를 추출하고, 파서가 실제로 보는 것과 비교하여 연락처 세부 정보, 읽기 순서, 그리고 게시물의 키워드 커버리지를 검증합니다. 정직성 규칙이 적용됩니다: 프로필이 지원하지 않는 키워드는 '갭(gap)'으로 인정되며 절대 억지로 채워지지 않습니다.**관련성 가중치 CV 자르기.**CV가 2페이지를 초과할 때, 워크플로우는
| 파일 | 변경할 내용 |
|---|---|
CLAUDE.md | 전체 프로필 (이름, 학력, 경력, 기술, 목표) |
01-candidate-profile.md | CV 데이터의 구조화된 버전 |
02-behavioral-profile.md | 행동 평가 또는 자기 평가 |
04-job-evaluation.md | 기술 매칭 영역, 커리어 목표, 동기 부여 필터 |
05-cv-templates.md | 다양한 역할 유형별 프로필 진술 템플릿 |
07-interview-prep.md | 실제 경험에서 추출한 STAR 사례 |
search-queries.md | 기술 및 지역에 따른 구직 쿼리 (search queries) |
우선순위가 변함에 따라, 전체 프로필 설정을 다시 실행하지 않고 구직 설정만 재구성할 수 있습니다:
/setup --section search
이 명령은 구직 설정 인터뷰를 다시 실행합니다: 어떤 역할을 목표로 할지, 어떤 기술을 검색할지, 어떤 지역과 포털을 이용할지 등을 결정합니다. 또한 프로필을 기반으로 사용자가 고려하지 않았을 수도 있는 역할 유형을 제안합니다.
CV는 moderncv (은행 스타일)를 사용합니다. 커버 레터 (cover letter)는 Lato/Raleway 폰트를 사용하는 커스텀 cover.cls를 사용합니다.
대신 본인만의 템플릿을 사용하려면 다음을 실행하세요:
/add-template
사용자의 .tex 파일(및 관련 .cls, .sty 파일 또는 번들된 폰트)을 지정하세요. 이 명령은 템플릿 지침(컴파일 엔진, 폰트 및 위치, 보존해야 할 스타일 규칙, 엄격한 페이지 제한 등)에 대해 인터뷰를 진행합니다. 모든 정보는 templates/ 아래에 저장되며, 필수 테스트 컴파일을 실행한 후 템플릿을 활성화하여 /apply 명령 시 해당 템플릿을 기반으로 초안을 작성합니다. 템플릿에는 개인 데이터 대신 [PLACEHOLDER] 토큰이 저장되므로, 안전하게 커밋(commit)하고 공유할 수 있습니다.
/add-template --list는 등록된 템플릿을 보여줍니다.
/add-template --use <name>은 템플릿 간 전환을 수행합니다.
/add-template --use default는 기본 moderncv / cover.cls 템플릿으로 되돌립니다.
수동으로 작업하는 것을 선호한다면, 기존 방식도 여전히 작동합니다: 05-cv-templates.md 및 06-cover-letter-templates.md의 가이드를 업데이트하세요.
.agents/skills/에 있는 4개의 Danish CLI 도구
(Jobbank, Jobdanmark, Jobindex, Jobnet)은 특정 시장을 위한 채용 포털 통합 (job-portal integration) 구축 패턴을 보여줍니다. 만약 다른 국가에 있다면, 다음을 실행하세요:
/add-portal
사용 중인 지역 채용 게시판의 URL을 입력하세요. 이 명령은 포털을 조사하고 (검색 URL 패턴, 결과 페이지 구조, robots.txt/접근 규칙), 기존에 배포된 도구들과 동일한 구조, 명령, 출력 규약 (output contract)을 가진 CLI 스킬 (CLI skill)을 스캐폴딩 (scaffolding)하며, 등록하기 전에 실제 쿼리를 테스트 실행합니다. 인증이 필요한 포털 (Auth-walled portals)은 거부되며, 제한적인 약관이 있는 포털은 생성된 스킬에 '개인 용도로만 사용'이라는 눈에 띄는 경고가 포함됩니다. 생성된 스킬은 시장 특화적이며 사용자의 포크 (fork)에 저장됩니다. 생성기 (generator) 자체는 범용적인 부분입니다.
국가에 구애받지 않는 (country-agnostic) 시작 지점을 위해, 이 저장소에는 LinkedIn의 공개된, 인증이 필요 없는 jobs-guest 엔드포인트를 기반으로 구축된 채용 검색 스킬인 linkedin-search도 포함되어 있습니다. 이는 분야에 구애받지 않으며 (field-agnostic), 런타임 의존성 (runtime dependencies)이 전혀 없고 (단지 bun만으로 실행됨), 검색 위치를 명시적인 플래그 (flag)로 받으므로 즉시 모든 시장에서 작동합니다 (-l "Berlin, Germany", -l "Mumbai, Maharashtra, India", -l "Remote", …).
이는 개인 용도로만 사용하도록 의도되었습니다. 자동화된 접근은 LinkedIn의 서비스 약관 (Terms of Service)에 위배되므로 사용량을 낮게 유지하세요. .agents/skills/linkedin-search/SKILL.md를 참조하세요.
급여 도구 (salary tool)는 사용자가 제공하는 모든 급여 데이터 (노조 통계, Glassdoor 내보내기, 개인 조사 등)와 함께 작동합니다. 예상되는 형식과 설정은 tools/README_SALARY_TOOL.md를 참조하세요. 급여 데이터가 없는 경우, 급여 단계는 단순히 건너뜁니다.
프로필 데이터를 삭제하고 새로 시작하려면:
/reset profile # 스킬 파일들을 삭제하지만, 프레임워크 규칙은 보존합니다
/reset documents # documents/ 폴더의 파일들을 삭제합니다
/reset all # 둘 다 수행합니다
/reset 명령은 정확히 무엇이 삭제될지 보여주며, 확인을 위해 RESET을 입력해야 합니다. 입력하기 전까지는 아무것도 삭제되지 않습니다.
출력 품질을 결정하는 단 하나의 가장 큰 요인은 프로필에 얼마나 많은 세부 정보를 입력하느냐입니다. 빈약한 프로필은 일반적인 지원서를 생성하지만, 상세한 프로필은 진정으로 맞춤화된 결과를 가능하게 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기