HackerRank 오픈소스 ATS, 같은 이력서 점수가 90점·74점·88점으로 흔들림

19 hours ago 3
  • 같은 이력서와 같은 명령으로 HackerRank의 오픈소스 ATS 채용 에이전트를 반복 실행하자 점수가 66~99점까지 흔들렸고, 85점 컷오프에서는 65%가 탈락하는 결과가 나옴
  • 이 도구는 PDF 이력서를 파싱하고 LLM을 6번 호출해 기본 정보, 경력, 학력, 기술, 프로젝트, 수상 내역을 구조화한 뒤 GitHub 정보까지 더해 100점+보너스 20점으로 평가함
  • 기술 스킬은 100회 중 98회가 8/10점으로 거의 일정했지만, 프로젝트 평가는 “아키텍처 복잡성이 부족함”과 “실제 배포를 보여줌” 사이를 오가며 큰 변동성을 보임
  • 기본 모델 gemma3:4b의 temperature 0.1뿐 아니라 temperature 0에서도 비결정성이 남았고, Gemini로 바꿔도 60점 컷오프 기준 28% 탈락률이 발생함
  • 경력 항목은 인턴십 하나만 있는 예전 이력서도 25/25점을 받아, LLM 점수화가 지원자 품질을 가르기보다 운에 따른 필터링이 될 수 있음

같은 이력서가 매번 다른 점수를 받음

  • HackerRank의 오픈소스 ATS인 hiring-agent가 LinkedIn과 Reddit에서 주목받은 뒤 테스트 대상이 됨
  • 첫 실행 점수는 90/100점이었고, 디버그용 출력문을 삭제한 뒤 같은 이력서와 같은 명령으로 다시 실행하자 74/100점이 나옴
  • DEVELOPMENT_MODE를 비활성화하고 100회 반복 실행하자 점수 범위가 66~99점까지 벌어짐
  • 회사 통과 기준이 85점이라면 같은 이력서도 65% 확률로 탈락

평가 파이프라인과 배점 구조

  • 도구는 PDF 이력서를 텍스트로 파싱한 뒤 LLM을 여러 번 호출해 지원자 정보를 구조화함
    • 기본 정보
    • 경력
    • 학력
    • 기술
    • 프로젝트
    • 수상 내역
  • GitHub 프로필과 상위 저장소를 스캔하고, 이 정보를 추가 맥락으로 붙여 전체 정보를 한 번에 LLM 평가에 넣음
  • 기본 모델은 로컬에서 실행되는 gemma3:4b이며 temperature는 0.1로 설정됨
  • 점수는 100점 만점이고, 최대 20점의 보너스가 추가됨
    • 오픈소스 기여: 35점
    • 개인 프로젝트: 30점
    • 업무 경험: 25점
    • 기술 스킬: 10점
    • 스타트업 경험, 포트폴리오 사이트, 기술 블로그 등: 최대 20점 보너스

일관적인 항목과 흔들리는 항목

  • 기술 스킬은 100회 중 98회에서 8/10점이 나와 거의 일관적임
    • React 같은 기술 보유 여부는 체크리스트에 가까워 LLM의 주관적 판단 여지가 작음
  • 반면 프로젝트 항목은 실행마다 판단이 크게 갈림
    • 어떤 실행에서는 프로젝트가 “아키텍처 복잡성이 부족함”으로 평가됨
    • 다른 실행에서는 “실제 배포를 보여줌”으로 평가됨
  • temperature 0.1은 낮은 설정이지만, temperature 0으로 낮춰도 문제가 사라지지 않음
  • 2025년 10월에 열린 GitHub issue에서도 temperature 0에서 6회 연속 점수가 27, 34, 32, 34, 34, 30으로 달랐음

모델을 바꿔도 남는 불안정성

  • gemma3:4b가 로컬 모델이라는 점 때문에 모델 영향도 함께 확인함
  • Gemini를 사용하자 점수 분포는 48~64점으로 더 좁아짐
  • 하지만 컷오프가 60점이면 지원자는 자신의 이력서 내용과 무관하게 28% 확률로 탈락
  • 오픈소스 점수는 더 일관적으로 바뀌었지만, 프로젝트 점수는 여전히 크게 흔들림

경력 점수의 반대 문제: 일관적이지만 쓸모없음

  • 경력 항목은 모든 실행에서 25/25점이 나옴
  • 예전 이력서처럼 인턴십 하나만 있는 경우에도 25/25점을 받음
  • 평가 프롬프트의 Production 항목은 두 줄뿐임
    • work와 volunteer 섹션에서 실제 업무, 인턴십, 프로덕션 경험을 분석
    • 창업자, 공동창업자, 스타트업 초기 엔지니어 역할에는 추가 고려
  • 15점과 25점을 가르는 기준, 예시, 기준점이 없음
  • 결과적으로 주니어 엔지니어의 인턴십, 10년 분산 시스템 경험을 가진 principal engineer, 테스트에 사용된 이력서가 모두 25/25점을 받을 수 있음

이력서 스크리닝에서의 실무적 위험

  • LLM으로 이력서를 구조화된 데이터로 파싱하거나 Python 보유 여부를 확인하는 작업은 비교적 적합한 용도에 가까움
  • 후보자의 경험이 18점인지 24점인지 판단하는 작업은 vibe-check에 가까운 결과를 만듦
  • 오픈소스와 프로젝트가 합쳐서 65% 비중을 차지하는 구조도 채용 판단을 왜곡할 수 있음
    • 30년 경력으로 S3를 만든 엔지니어보다, 인턴십 2개와 오픈소스 프로젝트가 있는 지원자를 더 높게 볼 수 있음
    • GitHub에 남지 않은 중요한 작업을 해온 엔지니어는 절반 이상의 점수를 잃을 수 있음
  • 이력서 스크리닝에 AI 도구를 도입할 권한이 있는 엔지니어는 품질을 가르지 못하는 도구가 단순히 지원자를 걸러내는 장치가 될 수 있음을 주의해야 함

정정 사항

  • resume_evaluation_criteria.jinja 템플릿 1행에는 “Software Intern”이 있음
  • 이 문구는 문서화되어 있지 않고 저장소의 다른 곳에서도 참조되지 않음
  • 같은 템플릿은 뒤에서 창업자, 공동창업자, 초기 스타트업 엔지니어 역할에 보너스를 부여함
  • 명시적으로 Senior SWE 프롬프트를 넣어 다시 실행해도 결과는 동일했고, 점수 차원은 직무 수준과 무관하게 동작함
Read Entire Article