사람이 읽기 전, 이력서와 GitHub 활동을 종합해 우선순위를 매겨주는 평가 파이프라인
수만 건의 이력서 중 어떤 것을 먼저 읽을지 골라야 하는 상황을 떠올려 보세요. 이 도구는 PDF 이력서에서 정보를 추출하고 GitHub 활동까지 분석해, 지원서에 점수를 매겨 순위를 정합니다. 최종 합격 여부는 사람이 결정하지만, 하위권 후보를 걸러내는 첫 단계의 부담을 줄여줍니다.
해커랭크의 인턴 채용 현실과 이 도구의 위치
이 양을 사람이 모두 읽기 어렵기 때문에, 이력서 점수가 기준선 이하인 지원자만 제외하고 나머지는 모두 사람 검토로 넘기는 방식을 취합니다. 기준선은 의도적으로 매우 낮게 설정되어 있어, 대부분의 지원자는 이 자동 필터를 통과합니다. 최근에는 AI 면접 도구도 함께 출시되어, 이력서만으로 평가받는 상황은 더 이상 아니지만, 초기 스크리닝 단계의 효율성을 높이는 데는 여전히 이 도구가 쓰입니다.
이력서와 GitHub 데이터를 어떻게 분석하는가
도구는 먼저 PDF 이력서를 텍스트로 변환하고, LLM을 이용해 기본 정보, 경력, 교육, 기술, 프로젝트, 수상 이력 등 각 섹션을 구조화된 데이터로 추출합니다. 이력서에 포함된 GitHub 프로필을 찾아 해당 사용자의 저장소를 가져오고, LLM이 의미 있는 기여를 한 프로젝트 7개를 골라냅니다. 이후 지정된 직무 역할에 맞는 평가 기준을 적용해 각 항목의 점수와 근거, 보너스 점수, 감점 요소를 산출합니다. 모든 과정은 로컬에서 실행되는 Ollama나 클라우드 기반의 Gemini, OpenAI 모델을 통해 처리됩니다.
직무별 평가 기준을 어떻게 정의하는가
평가 기준은 '역할(Role)'이라는 폴더 단위로 관리됩니다. 각 역할은 role.json 파일에 점수 배점과 상한선을 정의하고, criteria.jinja 템플릿에 구체적인 평가 지시를 담습니다. 새로운 직무를 추가하려면 --init-role 명령어로 폴더 구조를 생성한 뒤, 해당 직위에 맞는 평가 기준과 프롬프트를 수정하면 됩니다. 이렇게 하면 동일한 이력서도 직무에 따라 다른 점수를 받을 수 있습니다.
실행 환경과 모델 선택
Python 3.11 이상이 필요하며, pip로 의존성을 설치합니다. LLM 백엔드로는 로컬에서 실행되는 Ollama나 클라우드 API를 사용하는 Gemini, OpenAI 중 하나를 선택해야 합니다. 기본 설정은 로컬에서 구동되는 gemma4:latest 모델로 되어 있어, 클라우드 API 키 없이도 테스트할 수 있습니다. 하지만 실제 해커랭크의 인턴 평가에는 상위권 Gemini 모델이 사용되며, 이 저장소에는 데모용 설정만 포함되어 있습니다. GITHUB_TOKEN을 설정하면 GitHub API 호출 한도를 높일 수 있습니다.
사용 전 반드시 알아야 할 점
이 도구는 ATS(지원자 추적 시스템)가 아니며, 해커랭크의 공개 채용 스크리닝에 직접 쓰이지도 않습니다. 또한 해커랭크 고객에게 판매되는 제품이 아닙니다. LLM의 비결정성으로 인해 같은 이력서라도 여러 번 실행할 때 점수가 달라질 수 있으며, PDF에 보이지 않는 텍스트를 숨겨 점수를 올리는 보안 취약점도 지적된 바 있습니다. 따라서 이 도구의 점수는 참고 자료일 뿐, 최종 채용 결정의 근거로 단독 사용해서는 안 됩니다. MIT 라이선스로 공개되어 있어 자유롭게 수정하고 사용할 수 있습니다.