1. 데이터 구조화 및 기반 마련
시스템 구축의 첫 단계는 흩어져 있는 개발자 역량 데이터를 통합하는 것이었습니다. 내부 설문을 통해 수집된 기술 숙련도 데이터를 Rails 모델로 마이그레이션하여 체계화했습니다. - Technology 및 UserTechnology 모델: 기술 스택의 이름과 각 개발자의 숙련도 수준(starter, capable, expert)을 연결하여 관리합니다. - 데이터 정제: 불필요한 토큰 낭비를 방지하기 위해 ‘모름’이나 ‘업무 외 사용’과 같은 낮은 유의미도의 데이터는 제외하여 AI가 핵심 정보에 집중할 수 있도록 했습니다.
2. ActiveGenie를 활용한 스코어링 파이프라인
인재 매칭의 핵심 로직을 구현하기 위해 ActiveGenie라는 Ruby 젬을 도입했습니다. 이 젬의 Scorer 모듈은 특정 기준(Criterion)과 콘텐츠(Content)를 비교하여 수치화된 점수를 생성하는 기능을 제공하여 개발 속도를 높여주었습니다.
- 모델 선택: 초기 테스트에는 비용 효율적인 GPT-4o mini를 사용했으나, 최종 프로덕션에서는 문맥 이해력과 뉘앙스 파악 능력이 뛰어난 Claude 3.5 Sonnet을 선택했습니다. Anthropic의 모델은 ‘5년차 Rails 개발자’와 ‘레거시 마이그레이션을 주도한 개발자’ 사이의 시니어리티 차이를 더 잘 이해하기 때문입니다.
- 내러티브 변환: LLM이 JSON 형식보다 서사적인 텍스트를 더 잘 이해한다는 점에 착안하여, DB 레코드를 이력서 형태의 텍스트로 변환하는 EmployeeProfileBuilderService를 구현했습니다.
3. 프롬프트 엔지니어링 및 서비스 객체 설계
정교한 매칭을 위해 두 가지 주요 프롬프트 빌더 서비스를 설계하여 일관된 입력 구조를 유지했습니다. - PositionCriteriaBuilderService: 직무 설명(Description), 책임(Responsibilities), 필수 요구사항(Requirements), 우대 사항(Nice to have)을 구조화된 텍스트로 생성합니다. - EmployeeProfileBuilderService: 개발자의 전문 분야와 기술별 숙련도를 AI가 읽기 좋은 형태로 변환하여 데이터의 노이즈를 제거합니다. 이러한 구조화된 프롬프트 방식은 AI가 매칭 기준을 명확히 인지하고 평가할 수 있게 합니다.
4. 시스템 실행 및 결과 활용
최종적으로 generate_report 메서드는 조건에 맞는 모든 개발자를 대상으로 루프를 돌며 AI 스코어링을 수행합니다.
- 다각도 평가: AI는 ‘소프트웨어 엔지니어링 매니저’, ‘기술 리쿠르터’, ‘QA 리드’ 등 다양한 가상의 페르소나 관점에서 후보자를 평가하고 각각의 점수와 추론 근거(Reasoning)를 포함한 JSON 보고서를 생성합니다.
- 최종 결정 프로세스: AI의 점수를 맹신하지 않고, 상위 5명의 후보자와 그에 대한 AI의 상세 분석 내용을 운영팀에 전달합니다. 최종 결정은 인간 담당자가 AI의 조언을 참고하여 내리는 방식을 취함으로써 기술적 신뢰성과 인간의 직관을 결합했습니다.
5. 향후 발전 및 고도화 계획
현재 시스템은 정형화된 설문 데이터에 의존하고 있으나, 향후에는 더욱 풍부한 문맥을 확보하기 위해 다음과 같은 개선을 계획 중입니다. - AI Resume Reader: PDF나 Word 형식의 이력서를 직접 파싱하여 DB를 자동으로 업데이트하는 기능. - Gemini 1.5 Pro 도입 검토: 수많은 이력서를 한꺼번에 처리하기 위해 대규모 컨텍스트 윈도우를 지원하는 모델 활용. - 경험 설명 강화: AI를 사용하여 모든 개발자의 경험 기술서를 일관된 톤과 전문적인 용어로 다듬어 매칭 정확도를 향상시킬 예정입니다.