RecruitMatch는 LLM, 임베딩, 그래프 정규화, 학습된 랭커를 조합한 결정론적 파이프라인입니다. 모든 점수는 추적 가능한 근거에서 비롯됩니다.
PDF · DOCX · URL · ATS API · 텍스트 붙여넣기 — 모든 입력을 동일한 스키마로 변환합니다.
LLM이 문서를 읽고 책임/요건/우대/스택/도메인을 추출. OCR 단계에서 표·헤더·푸터를 분리해 환각을 차단합니다.
추출된 필드는 사람이 검증할 수 있도록 원본 문서의 페이지·라인 좌표와 함께 저장됩니다.
Kotlin과 Java는 같은 JVM 패밀리. "Sr. Eng", "Senior", "L5"는 동일 레벨. 이러한 동치 관계를 RecruitMatch는 18만 노드의 스킬 그래프로 관리합니다.
도메인별 별칭, 약어, 버전 차이를 정규화하고, 신규 용어는 사용 빈도 임계를 넘으면 그래프에 자동 등재됩니다.
JD의 모든 요건 문장과 이력서의 모든 경험 문장은 3,072차원 벡터로 변환되어 pgvector에 저장됩니다.
HNSW 인덱스로 1억 후보 풀에서 Top-1000을 8ms 안에 회수. 정확도와 속도의 trade-off는 테넌트별로 튜닝 가능합니다.
하나의 점수가 아닙니다. Skills · Experience · Domain · Culture 4개 축을 각각 계산하고, 가중치는 JD 유형과 회사 피드백으로 학습됩니다.
최종 랭킹은 LightGBM 랭커가 4축 점수 + 메타 피처(연봉 fit, 위치, 비자)를 결합해 결정합니다. 모델은 매일 새 피드백으로 재학습됩니다.
JD의 어떤 문장이 이력서의 어떤 문장과 매칭되는지, span-level로 추적합니다. 클릭하면 양쪽 원본으로 점프.
Hallucination을 막기 위해 LLM 응답이 원본 텍스트에 anchor되어 있지 않으면 자동으로 폐기합니다. "추정" 표현은 회색으로 표시.
| 모델 | 역할 | 버전 | p50 | 월 호출 | 호스팅 |
|---|---|---|---|---|---|
| gpt-4.1-nano | 문서 파싱 · AI Editor 다듬기 | v2025.04 | 0.42s | 8.2M | OpenAI |
| text-embedding-3-large | 문장 임베딩 (3072d) | v2025.02 | 38ms | 92M | OpenAI |
| ts-ranker-lgbm | 4축 점수 + 메타피처 랭커 | 2.14.0 | 6ms | 420M | Self-hosted (k8s, seoul-1) |
| ts-bias-clf | JD 편향 분류 (DistilBERT FT) | 1.8.2 | 12ms | 1.2M | Self-hosted (seoul-1) |
| ts-skill-graph | 스킬 정규화 그래프 | 4.2.1 | < 1ms | ∞ | pgvector + Postgres |
| ts-evidence-link | 근거 span 매핑 (SBERT FT) | 1.4.0 | 180ms | 12M | Self-hosted |