UniON은 대학생 프로젝트 및 공모전 팀 구성을 지원하기 위한 AI 기반 팀 매칭 서비스이다.
기존 팀원 모집 방식은 커뮤니티 게시글이나 지인 네트워크에 의존하는 경우가 많아, 지원자의 실제 경험이나 협업 성향을 파악하기 어렵다는 문제가 존재했다.
이를 해결하기 위해 단순 기술 스택 비교가 아니라, 사용자의 프로젝트 경험과 문제 해결 경험, 협업 성향을 함께 고려하는 AI 추천 시스템을 설계하였다.
이번 글에서는 UniON의 AI 추천 엔진이 어떤 방식으로 동작하는지와, 추천 결과를 어떻게 평가했는지에 대해 정리한다.
추천 과정은 크게 다음 4단계로 구성하였다.
팀장이 작성한 모집 글은 일반 텍스트 형태이다.
예:
디자인 시스템을 구축해본 경험이 있는 디자이너를 찾습니다.
사용자 경험 개선 과정에서 발생한 문제를 해결해본 경험이 있으면 좋겠습니다.
하지만 AI가 바로 이해하기는 어렵다.
따라서 LLM을 이용해 아래와 같이 구조화하였다.
{
"task_items": [
"디자인 시스템 구축 경험"
],
"trouble_items": [
"사용성 문제 해결 경험"
],
"prefer_domain_exp": true
}
task는 요구 업무 경험을 의미하고,
trouble은 문제 해결 경험을 의미한다.
포트폴리오는 STAR 구조를 사용하였다.
특히 다음 부분을 사용하였다.
T(Task)
→ 수행 업무 경험 추출
A(Action)
→ 수행 업무 + 문제 해결 경험 추출
예:
초기 렌더링 속도 저하 문제를 해결하기 위해
코드 스플리팅과 lazy loading을 적용하였다.
추출 결과:
{
"task":[
"코드 스플리팅 적용",
"lazy loading 적용"
],
"trouble":[
"렌더링 속도 저하 문제 해결"
]
}
구조화된 task와 trouble을 OpenAI Embedding 모델을 사용하여 벡터로 변환하였다.
사용 모델:
생성된 벡터는 PostgreSQL + pgvector에 저장하였다.
최종 점수는 다음 요소를 함께 고려하였다.
동일 도메인 경험 여부
업무 경험 유사도
문제 해결 경험 유사도
문제 해결 경험을 중요하게 보기 위해 task보다 높은 기본 점수를 부여하였다.
협업 성향 적합도
최대 +5점
6가지 항목에 관해 원래 팀 문화와 유사한 정도에 따라 점수를 부여하였다.
기존 추천 시스템은 Precision@K, Recall@K, NDCG@K 등을 많이 사용한다.
하지만 UniON은 초기 서비스로서 과거 사용자 행동 데이터가 존재하지 않았다.
따라서 다른 평가 방법을 사용하였다.
실제 사용자가 모집 글을 작성하도록 하였다.
평가 과정:
평가 요소:
사용자가 선택한 상위 후보와 AI 추천 후보가 얼마나 겹치는지 측정
추천 결과가 실제로 원하는 팀원과 얼마나 잘 맞는지 평가
전체 사용자 중 실제 추천에 활용된 비율
Coverage =
추천된 사용자 수 / 전체 사용자 수
Coverage가 낮을 경우 일부 사용자만 반복적으로 추천되는 문제가 발생할 수 있다.
추천 편중 여부 확인
측정 지표:
이를 통해 특정 사용자가 과도하게 추천되는지 확인하였다.
예:
| Metric | Value |
|---|---|
| Average | 2.63 |
| Max Exposure | 12 |
| Exposure Std | 2.22 |
분석 결과 일부 사용자에게 추천이 집중되는 현상이 확인되었다.
실험 과정에서 일부 사용자가 반복적으로 상위 추천되는 현상이 나타났다.
향후에는 다음과 같은 개선을 진행할 계획이다.
UniON의 추천 시스템은 단순히 기술 스택을 비교하는 것이 아니라, 프로젝트 경험과 문제 해결 경험, 협업 방식까지 함께 고려하도록 설계하였다.
앞으로는 추천 정확도뿐 아니라 추천의 다양성과 공정성까지 함께 개선하는 방향으로 발전시키고자 한다.