지원서를 여러 번 고치다 보면 어느 회사에 어떤 이력서를 보냈는지부터 헷갈린다. AI Job Search는 Claude Code 안에서 채용 공고를 평가하고, 공고에 맞춘 이력서와 커버레터를 만든 뒤 지원 기록을 파일로 남기는 오픈소스 프로젝트다. 검색 결과를 늘리는 것보다 지원할 곳을 고르고, 나중에 면접관이 읽은 서류를 다시 찾는 데 초점이 있다.
AI Job Search 설치 방법: 개인정보를 넣기 전에 로컬 작업 공간부터 만든다
Python 3.10 이상, Git, Bun, Claude Code가 필요하다. 기본 이력서와 커버레터를 PDF로 만들려면 LuaLaTeX와 XeLaTeX가 포함된 TeX 배포판도 준비한다. Claude Code 이용에는 구독이나 API 크레딧이 들며, 저장소의 MIT 라이선스와 모델 사용료는 별개다.
개인 구직용이라면 우선 아래처럼 로컬에 복제한다. 원격 이름을 upstream으로 바꿔 두면 원본을 업데이트 출처로 구분할 수 있다. 이것만으로 비공개 원격 저장소가 생기는 것은 아니므로, 경력을 입력한 뒤에는 공개 저장소로 push하지 않는다. 원격 백업이 필요하면 GitHub에서 별도 비공개 저장소를 만든다. 공개 저장소의 fork는 비공개로 바꿀 수 없다.
git clone https://github.com/MadsLorentzen/ai-job-search.git
cd ai-job-search
git remote rename origin upstream
python3 --version
bun --version
claude --version
python3 tools/install_portal_clis.py
설치 도구는 .agents/skills/*/cli/에서 포털별 도구를 찾아 의존성을 설치한다. 격리한 복제본에서는 여섯 도구 모두 설치됐고 All 6 portal CLI(s) installed.가 출력됐다. 어떤 도구를 설치할지 먼저 보려면 같은 명령 끝에 --dry-run을 붙인다. 설치 시 스크립트를 실행하도록 설정된 포털은 건너뛰고 알린다.
Claude Code가 없다면 먼저 설치하고 로그인한다. Node.js와 npm을 쓰는 환경에서는 이 프로젝트의 상세 설치 문서에 실린 다음 경로를 사용할 수 있다.
npm install -g @anthropic-ai/claude-code
TeX는 Windows에서 MiKTeX, macOS에서 MacTeX, Linux에서 TeX Live 등을 사용할 수 있다. 기본 템플릿을 쓸 때는 lualatex --version과 xelatex --version이 모두 나오는지 확인한다.
claude
이제 Claude Code 안에서 /setup을 실행한다. documents/에 넣은 경력 자료를 읽히거나, 이력서 한 장을 전달하거나, 질문에 답하며 프로필을 만들 수 있다. 이름과 경력, 구사 언어, 희망 직무가 프로필에 반영됐는지 확인한 뒤 첫 공고로 넘어간다. 입력 내용은 CLAUDE.md와 프로필 파일에도 저장되며 이 파일들은 Git 추적 대상이다. 로컬에 파일을 둔다고 모델 처리까지 기기 안에서 끝나는 것은 아니다. Claude가 읽는 경력 자료는 사용 중인 Claude 서비스의 처리 대상이 된다.
국내 공고도 바로 검색할 수 있을까
기본 검색 도구 네 개는 Jobindex, Jobnet 등 덴마크 시장을 대상으로 한다. 여기에 국가를 지정할 수 있는 LinkedIn 검색과 기술 직군 중심의 freehire 검색이 들어 있다. 사람인이나 잡코리아가 기본 연동돼 있는 구성은 아니다. 국내 채용 사이트를 먼저 자동 수집하려고 하기보다, 관심 공고의 본문을 직접 붙여 넣어 평가 흐름부터 쓰는 편이 짧다.
검색 도구만 따로 확인할 수도 있다. 아래는 freehire에서 Python 관련 공고 세 건을 요청하는 명령이다. 프로필에 맞는지 평가하는 단계는 포함하지 않으며, --no-description은 본문을 빼고 결과를 받는 옵션이다.
bun run .agents/skills/freehire-search/cli/src/cli.ts search \
-q "python" --limit 3 --no-description --format json
이번 실행에서는 싱가포르의 Python Engineer 공고와 AgileEngine의 Python Developer 공고들이 반환됐다. 검색 결과에 회사명과 국가, 원문 URL이 들어 있으므로 지원 지역과 고용 조건은 원문에서 좁혀야 한다. 결과가 나왔다는 사실과 나에게 지원 자격이 있다는 판단은 다르다.

/scrape는 프로필에 맞춰 여러 포털을 검색하고 중복을 줄인다. 결과가 많으면 /rank로 우선순위를 정한 뒤 골라서 /apply로 넘길 수 있다. 다른 포털을 붙이는 /add-portal도 있지만, 사이트의 접근 규칙과 구조를 조사해 검색 도구를 만드는 작업이다. 명령 하나가 국내 포털의 로그인이나 차단을 해결해 주는 것은 아니다. LinkedIn 도구 문서에는 자동 접근이 서비스 약관에 어긋난다고 명시돼 있어, 상시 수집 경로로 삼기 전에 접근 방식부터 정해야 한다.
공고에 맞춘 서류는 어떤 순서로 만들어질까
Claude Code에서 /apply 뒤에 공고 URL 또는 공고 전문을 넣는다. 접근이 막힌 공고라면 전문을 붙여 넣는 경로가 문서에 안내돼 있다. 먼저 지원 자격과 언어 조건을 살피고, 기술·경험·근무지·직무 방향 등을 프로필과 대조한다. 필수 언어가 프로필에 전혀 없으면 점수를 높여 덮는 대신 중단하도록 평가 규칙이 정해져 있다.
평가를 보고 작성을 진행하겠다고 답하면 이력서와 커버레터를 작성한다. 다른 문맥의 검토 에이전트가 초안을 비평하고 작성자가 수정하는 구조다. 기본 템플릿 기준으로 이력서는 LuaLaTeX, 커버레터는 XeLaTeX로 컴파일하고, 페이지 넘침과 줄 배치를 확인하도록 지시돼 있다. PDF의 텍스트를 추출하는 검사는 겉으로 잘 보이는 문서가 채용 시스템에서도 이름과 경력을 읽을 수 있는지 살피는 단계다. 필요한 경우 pypdf나 Poppler를 추가한다.
평가 점수는 합격 확률이 아니다. 내가 적어 둔 경력과 선호 조건을 바탕으로 공고를 비교한 결과다. 새 성과나 프로젝트 경험을 대화에서 보충했다면 프로필에도 반영됐는지 보는 편이 좋다. 다음 지원서를 만들 때 근거로 읽는 파일에 없으면, 방금 설명한 경험도 이후 초안에서 빠질 수 있다. 한글 이력서 양식이나 회사 지정 서식은 기본 영문 LaTeX 템플릿과 별도로 맞춰야 한다. /add-template은 자체 템플릿의 컴파일 방법과 페이지 제한을 등록하는 경로다.
서류를 만든 것과 지원한 것을 어떻게 구분할까
/apply는 서류를 만들었다고 지원 완료로 기록하지 않는다. 추적 파일 job_search_tracker.csv에는 먼저 drafted가 들어간다. 사용자가 실제 제출했다고 확인한 뒤 applied로 바뀐다. 채용 사이트의 제출 버튼을 누르는 일은 이 명령의 서류 작성과 구분된다.
이를 살펴보려고 가상 회사의 미제출 초안 한 행을 넣고 실제 /html-report 명령을 실행했다. 생성된 보고서는 제출한 지원을 0건으로, 미제출 초안을 1건으로 나눴다. 다음 화면의 회사와 지원 내역은 설명용 가상 입력이며 구직 성과가 아니다.

이 구분이 있어야 아직 보내지도 않은 회사에 후속 연락을 준비하는 실수를 줄일 수 있다. /outcome followup은 기본적으로 10일 동안 조용한 지원을 찾아 후속 연락 초안을 만들지만, drafted는 대상에서 뺀다. 연락문을 작성해도 자동 전송하지 않는다.
면접 전에 실제 제출본을 다시 찾으려면
/outcome은 지원 결과와 면접 단계를 추적 파일에 적고, 회사·직무별 폴더에 공고와 서류를 보관한다. 이미 보관한 제출본이 있으면 새로 고친 현재 파일로 덮어쓰지 않는 규칙이 있다. 같은 회사에 두 직무로 지원했을 때도 회사명만으로 파일을 고르지 않고 직무까지 맞춰 찾는다.

/interview는 이 보관본에서 면접관이 읽은 이력서와 공고, 앞선 면접 피드백을 가져와 준비 자료를 만든다. 여러 회사에 맞춰 문장을 고치는 사람에게는 최신 이력서 하나보다 이 제출 이력이 더 쓸모 있을 수 있다. 처음에는 공고 하나를 넣어 평가를 읽고, PDF를 검토한 다음 실제 제출 여부를 기록하는 데까지 해 보면 된다. 경력 자료와 지원 이력을 차곡차곡 남길 수 있는지가 이 도구를 계속 쓸지 판단할 기준이다.
출처: AI Job Search, 설치 문서, 보안 정책
