PDF 이력서를 로컬 LLM로 정량·증거 기반 평가로 바꾸는 파이프라인
PDF 이력서를 Markdown으로 변환해 섹션별 JSON으로 추출하고 GitHub 신호로 보강해 공정한 근거 기반 점수를 출력하는 LLM 파이프라인(로컬 Ollama 또는 Gemini 사용 가능).
TL;DR
Hiring Agent는 PDF 이력서를 구조화된 JSON으로 변환하고 GitHub 신호로 보강해 근거 기반의 점수를 출력하는 파이프라인이다. PyMuPDF를 통해 페이지를 Markdown 유사 텍스트로 변환하고, 섹션별로 Jinja 템플릿을 사용해 LLM을 호출해 JSONResume 형태로 추출한 뒤 GitHub 프로필·레포를 가져와 상위 프로젝트를 선별한다. 그 후 평가 템플릿(evaluator.py)이 공정성 제약을 포함한 규칙으로 open_source, self_projects, production, technical_skills 등 카테고리 점수와 근거·보너스·감점을 산출하며 score.py가 이를 출력하거나 개발 모드에서 CSV로 기록한다. 실행은 로컬 Ollama 또는 Gemini API 중 하나를 사용하며, .env 설정과 모델 풀링(예: ollama pull gemma3:4b), Python 3.11 환경이 필요하다. 이 도구는 로컬 실행과 템플릿 기반의 엄격한 섹션 추출, GitHub 기여도 기반 보강으로 표준화된 평가를 제공하나, 점수 기준과 템플릿은 도메인·공정성 요구에 따라 맞춤이 필요하며 README에 제시된 규칙 외의 외부 검증용 벤치마크는 포함되어 있지 않다.
주요 기능
- PDF를 페이지 단위로 Markdown 유사 형식으로 변환
- Jinja 템플릿과 LLM을 이용해 섹션별 JSONResume 객체 추출
- 이력서에서 추출한 사용자명을 기준으로 GitHub 프로필·레포를 수집·선별
- 공정성 제약을 포함한 엄격한 채점 규칙으로 다중 카테고리 점수와 근거 생성
- DEVELOPMENT_MODE에서 중간 JSON 캐시와 resume_evaluations.csv로 결과 저장
어떻게 동작하는가
PDF는 PyMuPDF 기반 도구(pymupdf_rag.py/pdf.py)로 Markdown 유사 텍스트로 변환되고, 각 섹션은 prompts/templates의 Jinja 템플릿을 통해 LLM에 호출되어 JSONResume 객체로 변환된다. github.py가 레포와 프로필을 가져와 프로젝트를 분류·상위 7개를 선택하고 evaluator.py가 사전 정의된 채점 템플릿으로 open_source, self_projects, production, technical_skills 등 점수와 증거·감점·보너스를 계산한다. score.py가 전체 흐름을 조율해 표준 출력과(개발 모드) CSV 출력을 수행한다.
해결 문제
이력서 PDF에서 섹션화된 구조화 데이터를 자동으로 추출하고 GitHub 행동 신호로 보강해 일관된 규칙 기반·설명 가능한 점수를 산출하는 작업을 자동화한다.
차별점
- 완전 로컬 실행을 지원해 Ollama로 인터넷 없이 파이프라인을 운영할 수 있음(대안: 클라우드 전용 LLM 활용 파이프라인과 차별화)
- 프롬프트 템플릿을 Jinja 파일로 엄격하게 관리해 섹션별 출력 형식을 표준화함
- GitHub 프로젝트 선별 시 '최소 커밋 기준'과 정확히 7개 프로젝트 선택 규칙을 적용해 기여도 기반 보강을 자동화함
- 평가 템플릿에 공정성 제약을 포함해 점수 산출과 근거 제공을 동시에 수행함
사용 사례
- 대량 이력서 1차 스크리닝에서 구조화된 점수와 근거를 자동 생성해 인력 선발 워크플로에 통합
- 개발자 채용에서 이력서에 명시된 GitHub 활동을 정량적으로 보강해 기술 역량을 비교 평가
- 교육기관·부트캠프에서 수습생 후보의 프로젝트·기술 역량을 표준화된 기준으로 평가해 피드백 제공
시작하기
레포를 클론하고 가상환경을 만든 뒤 requirements.txt를 설치한다: git clone https://github.com/interviewstreet/hiring-agent && cd hiring-agent; python -m venv .venv; source .venv/bin/activate; pip install -r requirements.txt. Ollama를 로컬로 쓰려면 ollama serve를 실행하고 사용할 모델을 풀링한다(예: ollama pull gemma3:4b). .env.example을 복사해 환경변수를 설정한 뒤 python score.py /path/to/resume.pdf로 실행한다.
요구사항
- Python 3.11+ (레포는 .python-version으로 3.11.13 고정)
- 하나의 LLM 백엔드: Ollama(로컬 모델) 또는 Google Gemini(API 키 필요)
- 선택적: GITHUB_TOKEN(깃허브 API 속도 제한 완화)
5.6k
Stars
1.1k
Forks
+208
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.