Convince-X ConvinceX
← Stories

이메일 시퀀스 엔진을
4일 만에 만들다

후보자를 찾았습니다. 분석도 끝났습니다. 그런데 메일을 보내는 건 여전히 수작업입니다.

Candidate Analyzer가 "찾기"와 "분석"을 자동화했다면, 그 다음 단계는 당연히 "연락"이었습니다. 리크루터가 하루에 가장 많은 시간을 쓰는 업무 중 하나가 아웃리치 이메일 작성입니다. 개인화된 메시지를 쓰고, 적절한 간격으로 팔로업하고, 회신을 추적하는 것. 이걸 자동화하기로 했습니다.

결론부터 말하면, 4일 만에 전체 기능을 구현했습니다. AI와 함께.

• • •

리크루터에게 아웃리치란

리크루터의 아웃리치는 마케팅 이메일과 다릅니다. 마케팅은 1만 명에게 같은 메시지를 보내도 됩니다. 하지만 헤드헌팅 아웃리치는 한 명 한 명에게 맞춤 메시지를 보내야 합니다. 시니어 개발자에게 "귀하의 프로필을 보고 연락드립니다"라는 템플릿 메일을 보내면, 그냥 무시당합니다.

그래서 보통 이렇게 합니다.

리크루터의 아웃리치 프로세스 (수작업)
1
후보자 프로필 확인 (LinkedIn, 이력서)
~5분
2
개인화된 첫 메일 작성
~10분
3
3일 후 팔로업 메일 작성 (안 읽었으면)
~7분
4
7일 후 마지막 메일 (여전히 무응답이면)
~5분
5
회신 확인 + 분류 + 다음 액션
~3분
후보자 1명당 약 30분. 하루 20명이면 10시간.

후보자 1명에 30분. 하루에 20명을 컨택하려면 10시간입니다. 물리적으로 불가능합니다. 그래서 대부분의 리크루터는 메시지 품질을 포기하고 템플릿을 돌리거나, 컨택 수를 줄입니다. 둘 다 좋지 않은 선택입니다.

• • •

Gmail OAuth라는 관문

이메일 시퀀스 엔진의 첫 번째 관문은 기술이 아니라 인증이었습니다.

사용자의 Gmail 계정에서 이메일을 보내려면 Google OAuth를 통해 Gmail API 권한을 받아야 합니다. 그런데 Google은 이 권한을 쉽게 주지 않습니다. 특히 gmail.send 스코프는 민감한 권한으로 분류되어 있어서, Google의 보안 심사를 통과해야 합니다.

Gmail API 권한 확보 과정
Step 1
Google Cloud Console에서 OAuth 클라이언트 생성
이건 쉽습니다. 10분이면 됩니다.
Step 2
gmail.send + gmail.readonly 스코프 요청
민감한 권한이라 Google 보안 심사 필요.
Step 3
프로덕션 모드 전환 + 동의 화면 구성
개인정보처리방침, 서비스 약관 필요. 여기서 시간 소모.
Step 4
Refresh Token으로 지속적 접근
사용자가 한 번만 인증하면 이후 자동 갱신.

CA에서는 이미 Google OAuth를 로그인에 사용하고 있었기 때문에 기반이 있었습니다. 하지만 로그인과 이메일 발송은 다른 스코프를 요구합니다. 기존 OAuth 플로우에 Gmail 스코프를 추가하고, 토큰 관리 로직을 확장하는 작업이 필요했습니다.

여기서 AI CTO의 아키텍처 결정이 빛을 발했습니다. 토큰 기반 보안 인증의 stateless 구조 덕분에, Gmail 토큰을 별도로 저장하고 관리하는 로직을 깔끔하게 분리할 수 있었습니다.

• • •

3스텝 AI 메시지 생성

시퀀스 엔진의 핵심은 AI가 개인화된 메시지를 생성하는 것입니다. 하지만 완전 자동이 아니라, 하이브리드 3-Layer 구조를 채택했습니다.

Layer 역할 주체
Layer 1: AI 초안 후보자 프로필 + JD 기반 맞춤 메시지 생성 AI 엔진 (자동)
Layer 2: 유저 편집 AI 초안을 확인하고 수정/보완 리크루터 (수동)
Layer 3: AI 변수 발송 시 동적 변수 치환 (이름, 회사명 등) 시스템 (자동, 변수 6종)

시퀀스는 3스텝으로 구성됩니다. 초기 연락(Day 0), 팔로업(Day 3), 마지막 연락(Day 7). 간격은 유저가 변경할 수 있습니다.

왜 완전 자동이 아니라 유저 편집 레이어를 넣었냐면, 리크루터의 톤과 맥락은 AI가 완벽히 재현할 수 없기 때문입니다. AI가 80%를 만들고, 리크루터가 나머지 20%를 다듬는 구조. 이게 현실적으로 가장 효율적이었습니다.

완전 자동화보다 "AI 80% + 사람 20%"가 실제 회신율에서 더 좋은 결과를 냅니다. 사람의 터치가 느껴지는 메시지와 AI가 뿌린 메시지는 받는 사람이 구분합니다.

• • •

추적: 오픈, 클릭, 회신

이메일을 보내는 것만으로는 부족합니다. 보낸 메일이 읽혔는지, 링크를 클릭했는지, 회신이 왔는지를 알아야 다음 액션을 결정할 수 있습니다.

1px
오픈 추적 픽셀
URL
클릭 추적 프록시
Thread
회신 모니터링

오픈 추적은 1x1 투명 픽셀 이미지를 이메일에 삽입하는 방식입니다. 수신자가 이메일을 열면 이 이미지가 서버에서 로드되고, 그 요청을 기록합니다. 이메일 마케팅에서 널리 쓰이는 기법입니다.

클릭 추적은 이메일 내 링크를 프록시 URL로 변환합니다. 수신자가 링크를 클릭하면 먼저 우리 서버를 거치고(클릭 기록), 그 후 원래 URL로 리다이렉트됩니다.

회신 모니터링이 가장 까다로웠습니다. 발송한 이메일의 스레드를 추적합니다. 주기적으로 스케줄러가 돌면서 새 회신이 있는지 확인하고, 회신이 감지되면 AI 분류로 넘어갑니다.

자동화 스케줄러 — 발송·추적 흐름
🕔
주기적 실행
대기 중인 이메일 발송 + 회신 확인
📩
Gmail API 호출
Thread 조회로 새 회신 감지
🤖
AI 분류
회신 내용 자동 분류 + 액션
• • •

AI가 회신을 분류한다

회신이 오면 리크루터는 그 회신의 성격을 파악하고 다음 액션을 결정해야 합니다. 긍정적인 회신이면 미팅을 잡고, 부정적이면 시퀀스를 중단하고, 부재중(OOO) 자동회신이면 일시정지해야 합니다.

이걸 AI가 자동으로 합니다.

Positive
"관심 있습니다. 자세한 이야기 나눠볼 수 있을까요?"
→ 참여도 스코어 업 + 알림
Negative
"현재 이직 의향이 없습니다. 더 이상 연락 주시지 않았으면 합니다."
→ 시퀀스 자동 중단
Question
"어떤 포지션인가요? 연봉 레인지가 어떻게 되나요?"
→ 시퀀스 일시정지 + 리크루터 응답 대기
OOO (부재중)
"현재 휴가 중입니다. 3월 15일에 돌아옵니다."
→ 시퀀스 자동 일시정지 (복귀 후 재개)

특히 OOO 자동 일시정지가 실무에서 중요합니다. 후보자가 휴가 중인데 팔로업 메일이 계속 가면, 돌아와서 쌓인 메일을 보고 짜증을 냅니다. 첫인상이 나빠지는 거죠. OOO를 감지하면 자동으로 시퀀스를 멈추고, 복귀 시점에 재개합니다.

부정적 회신의 자동 중단도 마찬가지입니다. "더 이상 연락하지 마세요"라는 회신을 받았는데 시스템이 팔로업을 보내면 그건 사고입니다. AI가 회신 내용을 분석해서 부정적 의사를 감지하면 즉시 시퀀스를 중단합니다.

참여도 스코어 (4단계)

각 후보자에게 오픈, 클릭, 회신 데이터를 기반으로 참여도 스코어를 부여합니다.

Hot — 긍정 회신 또는 3회 이상 오픈

Warm — 오픈 + 클릭 있음

Cool — 오픈만 있음

Cold — 무응답

• • •

4일 만에 가능했던 이유

정직하게 말하면, 사람 개발자 혼자서 이걸 4일 만에 만드는 건 불가능합니다. Gmail API 연동만 해도 보통 1~2일이 걸리고, 이메일 추적 시스템을 처음부터 만들려면 최소 1주일은 필요합니다.

4일이 가능했던 건 세 가지 이유였습니다.

4일 구현이 가능했던 이유
1
기반 인프라가 이미 있었다
인증, 데이터베이스, 서버 인프라. CA를 만들면서 구축한 기반 위에 얹은 겁니다. 처음부터 만들었으면 4일은 절대 불가능했습니다.
2
AI가 코드를 짰다
제가 설계하고, AI가 구현했습니다. "Gmail Thread API로 회신을 추적하는 로직을 만들어줘"라고 요청하면 동작하는 코드가 나왔습니다. 물론 수정은 필요했지만, 골격은 AI가 만들었습니다.
3
도메인 지식이 있었다
어떤 기능이 필요한지 이미 알고 있었습니다. 12년간 아웃리치를 직접 해왔으니까요. "3스텝", "OOO 자동 일시정지", "부정 회신 자동 중단" 같은 요구사항은 현장 경험에서 나온 겁니다.

결국 AI 코딩 + 도메인 지식 + 기존 인프라의 조합입니다. 이 세 가지 중 하나라도 빠지면 4일은 불가능했습니다. AI만 있으면 될 거라고 생각하는 분들에게 드리는 솔직한 이야기입니다.

• • •

아직 남은 것들

4일 만에 전체 기능을 구현했지만, "완성"은 아닙니다. 구현과 완성은 다른 개념입니다.

구현 완료
• 캠페인 CRUD
• 후보자 등록 (수동 + CSV)
• AI 메시지 3스텝 생성
• Gmail API 발송
• 자동 스케줄러
• 오픈/클릭/회신 추적
• AI 회신 분류 (4종)
• OOO 자동 일시정지
• 부정 회신 자동 중단
• 참여도 스코어 (4단계)
• 7종 지표 대시보드
• 템플릿 CRUD
• i18n 178키 3개국어
고도화 대기
• 소싱 파이프라인 연동
• A/B 테스트 (메시지 변형)
• 발송 최적 시간대 분석
• 팀 기능 (다중 사용자)
• 회신율 벤치마크
• CRM 연동

특히 소싱 파이프라인과의 연동이 다음 핵심 과제입니다. AI로 후보자를 찾고(검색) → 분석하고(CA) → 연락하고(시퀀스) → 추적하는(파이프라인) 전체 흐름이 하나로 연결되어야 합니다. 지금은 각 기능이 독립적으로 존재하는데, 이걸 하나의 파이프라인으로 만드는 게 다음 목표입니다.

도구의 가치는 개별 기능이 아니라 워크플로우 전체를 얼마나 매끄럽게 연결하느냐에서 나옵니다.

그 이야기는 다음 편에서. 7일 만에 전체 UI를 재설계한 이야기를 먼저 해야겠습니다.