이력서 분석 시스템 개발일지 — 이력서 PDF 한 장을 면접관 리포트로 바꾸는 사내 도구 만들기

인사 담당 업무를 하면서 가장 반복적이고 시간이 많이 드는 일 중 하나가 “이력서 하나하나 읽고, 핵심을 정리해서 면접관에게 전달하는 것” 이었습니다. 지원자가 몰리는 시즌에는 이 작업만으로 하루가 다 가기도 합니다.

그래서 이력서 PDF를 업로드하면 AI가 분석·채점해서 보고서를 만들고, 사내 인트라넷 쪽지로 면접관에게 바로 전달까지 해주는 내부 시스템을 직접 만들어봤습니다.

무엇을 해결하고 싶었나

  • 이력서를 읽고 핵심 경력·기술을 요약하는 데 드는 시간
  • 사람마다 다른 평가 기준 (누구는 후하게, 누구는 짜게 채점)
  • 이력서 원본과 검토 결과를 면접관에게 매번 따로 전달해야 하는 번거로움
  • 지금까지 처리한 이력서가 어디에 얼마나 쌓여 있는지 한눈에 안 보이는 문제

로그인 화면

사내에서만 쓰는 도구라 간단한 ID/PW 로그인을 앞단에 붙였습니다.

이력서 분석 시스템 로그인 화면 사내 전용 도구라 최소한의 ID/PW 로그인만 앞단에 두었습니다

1. 이력서 분석시스템 탭

이력서 PDF를 올리고, 필요하면 직무기술서를 함께 입력한 뒤 “신입/경력” 구분을 자동 판정하게 두거나 직접 지정할 수 있습니다.

이력서 업로드 화면 — PDF 업로드, 직무기술서 입력, 구분 선택 업로드 화면은 PDF 업로드 · 직무기술서(선택) · 구분(자동 판정/신입/경력) 세 영역으로 단순하게 잡았습니다

분석 버튼을 누르면 DeepSeek API가 이력서를 읽고 아래와 같은 결과를 만들어줍니다.

  • 핵심 경력·기술 요약
  • 신입/경력 구분에 따라 서로 다른 가중치의 직무 적합도 점수 (5개 항목 배점 합산, 총 100점)
  • 강점 / 우려사항 / 예상 면접 질문
  • 경력 타임라인과 이직 패턴 분석

이력서 분석 결과 화면 — 직무 적합도 총점과 5개 항목 배점·획득점수 표 분석 결과는 총점 하나로 끝내지 않고, 항목별 배점과 획득점수를 함께 보여줍니다 (예시 데이터)

분석이 끝나면 이력서 원본과 보고서 PDF가 자동으로 records 폴더에 “날짜·지원부문·이름” 형식으로 저장되고, 그동안 처리한 모든 이력서가 목록으로 쌓입니다. (아래 화면은 실제 지원자 정보 대신 예시 데이터로 재구성한 것입니다.)

등록된 이력서 목록 — 구분·지원부문·이름·지원날짜·직무적합도·발송대상 처리한 이력서가 구분·지원부문·지원날짜·직무적합도·발송대상과 함께 목록으로 쌓입니다 (예시 데이터)

목록에서 체크박스로 원하는 항목을 골라 합본 PDF로 다운로드하거나 바로 인쇄할 수도 있습니다.

2. 분석보고서 전송 탭

분석이 끝난 이력서를 사내 인트라넷(그룹웨어) 쪽지 기능으로 면접관에게 바로 전달합니다. 인트라넷의 실제 받는사람 선택 화면과 동일한 구조로, 부서별 체크박스에서 원하는 사람을 고르면 됩니다. (아래도 예시 데이터입니다.)

받는사람 선택 — 부서별 체크박스로 면접관 지정 인트라넷 받는사람 선택 화면과 같은 구조로, 부서별 체크박스에서 면접관을 고릅니다 (예시 데이터)

전송을 누르면:

  1. 지정한 계정으로 인트라넷에 자동 로그인
  2. 이력서 원본 + 분석 보고서 2개 파일을 첨부
  3. “이력서 원본 및 이력서 AI분석 보고서입니다.” 라는 고정 문구로 쪽지 발송

까지 처리됩니다. 사람이 직접 로그인하거나 첨부파일을 올릴 필요가 없습니다.

기술적으로 어떻게 만들었나

구성 요소 사용 기술
웹 화면 Streamlit
이력서 텍스트 추출 pdfplumber
AI 분석 DeepSeek API (JSON 스키마 강제 응답)
보고서 PDF 생성 reportlab (한글 폰트 임베딩)
인트라넷 자동 로그인·쪽지 발송 Selenium (Edge)
PDF 합본/다운로드 pypdf
실행 방식 바탕화면 바로가기 → 백그라운드 서버 + 전용 브라우저 창, 창을 닫으면 서버도 자동 종료

기술 선택에서 신경 쓴 건 “사내 담당자가 따로 배우지 않아도 쓸 수 있게” 하는 것이었습니다. 별도 설치나 서버 운영 지식 없이 바탕화면 아이콘 하나로 열리고, 창을 닫으면 서버도 같이 내려가도록 만든 게 그 이유입니다.

평가 기준을 신입/경력으로 나눈 이유

처음에는 모든 지원자를 똑같은 5개 항목(직무경험 30점, 기술 25점, 학력 15점, 문제해결력 15점, 커뮤니케이션 15점)으로 채점했는데, 신입 지원자는 애초에 “직무 경력”이 없다 보니 항상 낮은 점수가 나오는 구조적 문제가 있었습니다.

그래서 채용 평가 관행(SCORE 원칙 — 근거 기반 채점, 항목별 앵커 기준)을 조사해 반영하고, 신입/경력에 각각 다른 배점 체계를 적용했습니다.

  • 신입: 직무경험/프로젝트(25) · 기술/역량(25) · 학력/자격(20) · 문제해결력(15) · 커뮤니케이션(15)
  • 경력: 직무경력/전문성(35) · 기술/역량(20) · 성과/전문성(15) · 조직적합성·이직패턴(15) · 커뮤니케이션/리더십(15)

이력서 내용으로 자동 판정하되, 애매한 경우 담당자가 직접 “신입/경력”을 선택할 수 있게 만들었습니다. 자동화가 판단을 대신하는 게 아니라, 사람이 최종 판단을 쥐고 반복 작업만 넘기는 구조로 잡았습니다.

앞으로 더 해보고 싶은 것

  • 스캔 이미지 형태의 이력서를 위한 OCR 지원
  • 여러 지원자를 한 번에 비교하는 순위표 화면
  • 면접 결과를 반영한 채점 기준 자동 보정

정리하며

이 시스템의 목적은 “이력서를 대신 읽어주는 것” 이지 “채용을 대신 결정하는 것” 이 아닙니다. 점수는 어디까지나 면접관이 짧은 시간 안에 지원자를 파악하도록 돕는 요약이고, 그래서 항목별 배점과 근거를 함께 보여주도록 만들었습니다.

이 시스템은 사내 업무용으로 제작되었으며, 위 스크린샷 중 지원자 목록과 받는사람 선택 화면은 실제 개인정보 보호를 위해 예시 데이터로 재구성했습니다.