(WIP) 인재풀 채용공고 매칭 자동화 (채용 자동화) : airtable, n8n

소개

유연근무가 필요한 엄마들 - 유연근무 채용공고 매칭하는 프로젝트에 참여중.

매주 들어오는 채용공고... 쌓여가는 인재풀...
채용공고에 보이는 키워드 베이스로 인재풀 DB 검색을 해서인재를 찾아서 연락함.

문제)
- 검색할때 키워드 여러개를 동시 검색이 힘듦 -> 검색에 안걸려 놓치는 인재 발생
- 경력이 잘 맞아도 근무 조건이 맞지 않는 경우도 많음 (예를 들어, 출퇴근해야 하는데 지방거주)

경력과 조건 모두를 고려한 후보자를 종합적으로 평가하는 것이 필요해서
AI 활용한 매칭, 추천 자동화 도전!



진행 방법

DB 설계 & 데이터 클리닝

Talent Pool vs Jobs Matches

airtable 로 DB의 일부를 옮기고 (자동화 테스트 위해), 3개의 table로 구성 :
- Jobs(채용공고) table : 기존 DB
- Talent Pool(인재풀) table : 기존 DB
- Matches (매칭) table : n8n을 돌려서 추천되는 후보자 상위 10명이 기록되는 공간

Table 필드끼리 비교/분석이 쉽도록 필드값을 수정, 매칭에 불필요한 필드는 삭제.



airtable 내에서 고군분투

ChatGPT 가 경력 부분의 text 평가는 AI Agent 를 붙여서 openAI 의 LLM 을 사용하되,
나머지 좀더 기본적인 평가는 airtable 내에서 formula 한 뒤, 합산하는 것을 추천해줌.

airtable 내에서 각각의 필드 안에서 formula 를 만드는 시도를 하다가 결국 이틀을 날림...



얼떨결에 n8n 입문!

닿님께 도움요청,
평가항목에 따라 airtable, n8n 으로 나누는게 아닌
n8n으로 평가를 한방에 끝내는 것을 추천받음.

airtable 연동해서 Talent Pool, Jobs 테이블을 끌어오고, Merge 노드로 두 데이터를 합치기

방아쇠로 풀을 병합하는 프로세스를 보여주는 다이어그램

이후에 합친 데이터를 AI Agent 로 연결, 두 데이터 값들을 비교 분석하도록 함.
AI Agent 에 넣을 프롬프트의 기반이 될 평가기준 정리가 필요.

앱의 흐름을 보여주는 다이어그램


평가기준 설정

1. 평가항목들 설정

아래와 같은 여러 조건을 비교해서 각각의 영역에 점수를 매겨서 합산해서 총점을 냄.

예)
1.1 경력 text 평가

<채용공고> 직무/필요역량 text
<인재풀> 경력을 서술한 text

1.2 근무유형 평가

<채용공고> 근무유형 (오피스근무, 재택, 하이브리드)
<인재풀> 선호 근무유형 (출퇴근 또는 재택)

1.3 거주지 평가

<채용공고> 근무지역 (오피스 근무이거나 하이브리드일때)
<인재풀> 거주지

등등

2. 점수비중/가중치/평가기준 설정


각 평가 영역의 점수 비중을 어떻게 다르게 할지,
예) 100점 만점에 경력은 60점, 근무형태는 만점 10점 등으로 가중치를 부여

또한 각각의 영역 안에서 어떻게 평가할지 구성
예) 채용공고가 '오피스근무'인데, 지원자가 '재택근무' 선택했을때, 근무형태가 5점 만점일때, 0점

세부적인 내용들은 ChatGPT와 함께 완성해나감.

Jira 요원의 스크린 샷


Open AI, 및 Output Parser 연결

개방형 채팅 모델 구조화 된 출력 파서


AI Agent 에 연결된 Chat Model 중 Open AI 선택.

(이때, Open AI 를 유료구독을 하고 있지만, API 를 사용하려면 또다른 credit 으로 차감되는 형태이기 때문에 API 서비스 (?)를 위한 credit 에 계좌연결을 해야했음.)

AI Agent 에 프롬프트로 아웃풋의 형태를 예시로 들어주기는 했지만,
여전히 Structured Output Parser 를 연결해서 다시 한번 아웃풋의 형태를 정의해줘야 함.

점수 상위 10명만 추리기 : Sort, Limit

인재풀 모두의 평가결과를 볼 필요는 없기 때문에,
점수가 높은 사람들 상위 10명만 추려서 airtable Matches table 에 기록하기로함.

우선,
AI Agent 에서 나온 결과값을 Descending 으로 높은 점수가 위로 가도록 Sort.

시스템의 다른 부분을 보여주는 다이어그램


이후 합계 점수 기준으로 상위 10개만, 데이터를 Limit.

결과값을 Airtable의 Create a record 노드로 기록하도록 연결함.

Airtable 의 Matches table 에 모든 항목이 쌓이도록 하는 데까지 여러 시행착오를 거쳐 드디어 성공!
(Ai Agent 내에 어떤 table 의 필드값들을 비교해서 어떤 필드안에 입력할지 구체적으로, 정확히 적어줘야 했음)

여러 항목을 보여주는 Google 스프레드 시트의 스크린 샷

결과와 배운 점

n8n 모든 노드가 잘 돌아갔고, 계획한 대로 Airtable 에 모든 데이터가 쌓이긴 했지만,
실제로 추천해준 사람의 경력을 확인해보니, 추천해줄 만한 인재가 아니라는 걸 알게됨.

😭😭😭

닿님과 다시 결과 리뷰를 하면서,
현재 Ai Agent 에게 한번에 맡기기에 평가항목들이 너무 복잡하고 많다고 판단.
그렇기 때문에 사실상 좋은 결과를 기대하기 어려움.

원래 내가 (인간이) 하던 프로세스 그대로, 좀더 세분화해서 평가 프로세스를 짜는 것이 필요하다는 결론.



수정안 1. 인간 프로세스 참고해서, 단계 나누기


🙋🏻‍♀️ 기존의 인간 프로세스
1) 채용공고를 읽고, 3-4개의 키워드를 인재풀 DB 에서 검색
2) 검색에 걸린 사람들의 이력 읽고 평가
3) 2)에서 통과이면, 나머지 선호하는 근무형태, 근무 가능시간, 거주지역 등을 확인 후, 조건 충족시 추천

이걸 참고해서,

🤖 ai 프로세스

1) 해당 채용공고의 핵심 키워드 3-4개를 Ai Agent 로 뽑아내기

2) 인재풀의 데이터에서 search

3) Ai Agent 를 통해 인재풀의 경력/역량 필드에 핵심 키워드가 몇 번씩 각각 등장하는지 카운트

4) 각각의 키워드가 모두 동일하게 중요하지 않기 때문에
키워드를 우선순위 순으로 뽑아내고,
가중치 설정하도록함 ( If 노드, Edit Field 노드 연결)

5) 나머지 기준들 (근무형태, 근무시간 등)은
코드로 formula 로 이어서 판단하도록
(Ai 한테 모두 맡기는게 아니라)

기계 학습 시스템의 개략도


이 프로세스를 함께 짜면서 다시 깨달은 점...
현재로서 AI 가 채용공고에서 제일 중요한 핵심 키워드를 매번 뽑아낼 수 있을지는 미지수...! 😅



수정안 2. 인간 x ai 프로세스 만들기 (coming soon)

그래서, 아래의 프로세스로, 인간과 AI가 함께 일하는 프로세스를 시도해볼 예정

채용공고가 들어오면 (trigger)
- 인간이 키워드 3-4개를 우선순위 대로 입력,
- 입력된 키워드 기준으로 가중치 계산,
- 코드로 짠 fomula 기반으로 근무조건 기준으로 마지막 필터링,
- 인재 추천!

:) to be continued...

1개의 답글

👉 이 게시글도 읽어보세요