케이스 스터디
CASE STUDY — AI

CS 문의 자동 분류 — Gmail을 읽고 AI가 카테고리·우선순위·응답 초안을 만든다

도입 구독 서비스 / SaaS구축 5일
GmailOpenAISlackn8n Schedule

문의가 한 메일함에 뒤섞여 쌓였습니다. 누군가 일일이 읽고 유형을 나눠 담당자에게 넘기는 동안, 급한 문의가 일반 문의 사이에 묻혔습니다. 새벽에 온 결제 오류를 오후에서야 발견하는 일이 반복됐습니다.

사람이 읽고 분류하는 그 첫 단계를 AI에게 맡겼습니다. 다만 판단은 자동, 발송은 수동으로 나눴습니다. AI는 카테고리·우선순위·응답 초안을 만들고, 사람은 Gmail의 임시보관함에서 초안을 열어 5초 안에 확인·수정·발송합니다. 분류가 틀렸을 때 대응할 수 있는 안전장치이자, 초기 몇 주간 프롬프트 튜닝을 위한 관찰 창이기도 합니다.

cs-triage.workflowLIVE
GMGmail 읽기AI분류·초안 작성DRDraft 저장SLSlack 요약

어떻게 동작하나

  1. Schedule Trigger 노드가 10분 간격으로 시작합니다 (실시간이 필요하면 Gmail Trigger로 교체 가능).
  2. Gmail Get Many 노드가 label:cs-inbox is:unread 검색으로 신규 CS 메일만 가져옵니다. cs-inbox 라벨은 Gmail 필터로 CS 주소·전달 규칙에 따라 자동 부여됩니다.
  3. 각 이메일마다 Code 노드가 제목·본문을 정리하고 OpenAI에 보낼 messages 배열을 만듭니다 (Code 노드의 Run Once for Each Item 모드 필수).
  4. HTTP Request 노드가 https://api.openai.com/v1/chat/completions로 POST — response_format: json_object를 지정해 AI가 valid JSON만 반환하도록 강제합니다.
  5. Code 노드가 AI JSON을 파싱해 {category, priority, reason, reply}로 정규화.
  6. 세 가지 후속 처리 병렬: Mark as Read로 읽음 처리해 다음 실행에서 재처리 방지 · Create Draft Reply로 Gmail 임시보관함에 응답 초안 저장 · Aggregate Summary + Slack Post로 팀 채널에 이번 배치 분류 결과 알림.

필요한 것

  • n8n 2.29.9 이상 (자체 호스팅 또는 Cloud). 검증은 자체 호스팅 Docker에서 진행했습니다.
  • Gmail OAuth2 자격증명 — Google Cloud 프로젝트에서 Gmail API 활성화, OAuth 2.0 클라이언트 발급. 필요 스코프: https://www.googleapis.com/auth/gmail.modify (읽음 처리) + https://www.googleapis.com/auth/gmail.compose (초안 작성).
  • Gmail 필터 규칙 — Gmail 설정 → 필터 및 차단된 주소 → 새 필터. to:cs@yourdomain.com 같은 조건에 매칭되는 메일에 cs-inbox 라벨을 자동 부여. 라벨은 미리 만들어 두어야 합니다.
  • OpenAI API key — 결제 수단 등록 필수. n8n Credentials에 OpenAI account로 등록. 하루 100건 처리 기준 gpt-4o-mini는 월 1,000원 미만.
  • Slack Bot User OAuth Tokenchat:write, channels:read. /invite @your-bot in target channel.
  • Slack 채널 — CS 팀이 볼 채널. 배치별 요약(카테고리 카운트 + 긴급 건 하이라이트)이 게시됩니다.

AI 분류 스키마 — 이런 JSON을 반환한다

{
  "category": "billing" | "technical" | "feature" | "general",
  "priority": "urgent" | "normal" | "low",
  "reason": "한 문장으로 왜 그렇게 분류했는지",
  "reply":  "담당자가 검토·수정해서 보낼 정중한 한국어 초안 (2~3 문단, 인사말 포함)"
}

실제 분류 결과 예시 (4건 배치)

[billing/urgent]  결제 실패했는데 카드값은 빠져나갔어요
  → 결제 문제가 발생했으며 카드값이 이미 빠져나간 상황으로, 긴급하게 처리해야 합니다.

[technical/urgent]  API 응답이 갑자기 500 에러를 뱉기 시작합니다
  → API 오류로 인해 500 에러가 발생하고 있어 서비스 중단 가능성이 있습니다.

[feature/normal]  SSO(OIDC) 지원 계획이 있으신가요
  → 사용자가 SSO(OIDC) 지원 계획에 대해 질문하고 있어 기능 요청으로 분류했습니다.

[technical/normal]  홈페이지 안 열려요
  → 홈페이지가 열리지 않는 문제는 기술적인 이슈로 분류됩니다.
⬇︎ 워크플로우 다운로드 (cs-triage.json)
Gmail · OpenAI · Slack 세 개 자격증명 + Slack 채널 이름 + Gmail 필터(`cs-inbox` 라벨 자동 부여) 셋업만 하면 즉시 실행됩니다. 워크플로우 상단 Sticky Note에 자세한 순서.
이 워크플로우는 n8n 2.29.9에서 실제 Gmail + OpenAI + Slack에 붙여 4건의 실제 CS 메일(결제·기술·기능·일반)을 정확히 분류하고 Gmail 임시보관함에 응답 초안을 저장하는 것까지 검증했습니다. 마지막 검증: 2026-07-15.

왜 초안(Draft) 저장이지, 자동 발송이 아닌가

  • AI 분류·초안이 아무리 좋아도 첫 몇 주는 사람이 검토해야 합니다. 잘못 발송된 사과 문구 하나가 정확도 90%보다 큰 신뢰 손실을 만듭니다.
  • 초안은 Gmail 임시보관함에 저장되므로, 담당자는 원본 스레드에 그대로 답장 인터페이스에서 열어 5초 안에 확인·수정 후 클릭 한 번으로 발송할 수 있습니다. "AI가 대신 쓴 초안" 리뷰 흐름은 실무자에게 익숙합니다.
  • 정확도가 충분히 검증된 뒤에는 워크플로우의 Create Draft Reply 노드 operation을 draft:create에서 message:send로 바꾸는 것만으로 자동 발송으로 전환됩니다. 카테고리별로 자동/수동을 다르게 하는 것도 가능(예: general만 자동, 나머지는 초안).

기술 노트 — n8n OpenAI 노드 대신 HTTP Request를 쓴 이유

  • n8n의 OpenAI 노드(typeVersion 1.7)는 특정 조건에서 OpenAI가 Welcome to the OpenAI API! 안내 텍스트를 반환하도록 요청을 구성하는 이슈가 있습니다. 실제 completion이 되지 않습니다.
  • HTTP Request 노드에 Authentication → Predefined Credential Type → OpenAI API로 붙이면 동일 자격증명으로 정상 완성 응답을 받습니다. 요청 페이로드가 명시적이라 디버깅도 쉽습니다.
  • 특히 response_format: json_object처럼 강제 JSON 응답이 필요할 때 HTTP Request 방식이 필수적입니다.

예외 상황 처리

  • 매칭 메일 0건 — Gmail Get Many가 빈 결과를 반환하면 downstream 노드가 실행되지 않습니다. Slack 발송도 조용히 스킵.
  • AI가 JSON 파싱 실패Parse AI 노드가 try/catch로 감싸 fallback 값(category: general, priority: normal)을 채웁니다. 초안은 빈 문자열로 남고 담당자가 처음부터 작성.
  • OpenAI 오류 — HTTP Request 노드가 워크플로우를 에러로 종료. Executions 탭에서 확인. 프로덕션에서는 노드 옵션 Retry on Fail을 켜서 rate limit을 흡수.
  • Gmail 라벨이 없음cs-inbox 라벨을 미리 만들어 두지 않으면 검색이 실패합니다. Gmail에서 사이드바 → 라벨 만들기 → cs-inbox.
  • 중복 처리 — 처리 후 Mark as Read 노드가 읽음 상태로 전환해 다음 실행에서 재처리 방지. 다시 처리하려면 Gmail에서 수동으로 읽지 않음으로 표시.
−68%
첫 응답 시간
자동
카테고리·우선순위 분류
초안 100%
AI 작성, 사람 검토·발송
월 1,000원
GPT 비용 (하루 100건 기준)
급한 문의가 더 이상 묻히지 않아요. AI가 먼저 골라줍니다.CS팀 리드

당신의 업무도
여기 들어갈 수 있어요.

가장 반복적인 업무 하나만 알려주세요. 자동화 시나리오를 그려드립니다.