하루 15,000건의 호텔 고객 이메일을 처리하는 AI 에이전트 구축기: 전체 아키텍처 분석
How I built an AI email agent that processes 15,000 hotel guest emails per day. full architecture breakdown
핵심 요약
호텔 고객의 복합적인 이메일을 질문별로 추출하여 RAG 기반으로 자동 응답하는 AI 시스템 구축 사례입니다.
- 질문 추출 레이어 — 이메일 내 여러 질문과 불만 사항을 개별적으로 분리하여 처리함
- 호텔별 스코핑 — 호텔마다 다른 정책과 편의시설을 반영하기 위해 벡터 데이터베이스를 호텔별로 분리함
- 응답 생성 로직 — 추출된 질문과 FAQ를 결합해 자연스러운 호텔 직원 톤으로 답변을 생성함
- 구축 교훈 — 이메일 내 질문 추출 단계가 시스템 성능을 결정짓는 핵심 요소임
이번에 프로젝트 하나 끝내서 기술적인 부분 싹 다 공유해 보려고 함. 호텔이나 숙박업 쪽 AI는 맨날 나오는 챗봇이나 SaaS 사례에 비해 주목을 잘 못 받거든.
클라이언트가 호텔 500개를 관리하는데, 고객 지원팀이 하루에 이메일을 15,000통씩 수동으로 처리하고 있었음. 수백 개 호텔에서 똑같은 질문이 계속 들어오는데, 그걸 일일이 사람이 읽고 이해해서 답장까지 다 써야 했던 거지.
시스템 전체 구조는 이럼:
Layer 1: 이메일 수신 및 질문 추출
여기가 제일 빡셌음. 고객들이 보낸 메일이 진짜 개판이거든. 보통 이런 식임:
"안녕하세요, 20일에 기념일이라 방문하는데 혹시 룸 업그레이드 가능한가요? 그리고 스파는 투숙객이 그냥 이용하는 건지 따로 예약해야 하는지도 궁금해요. 차 가지고 가는데 주차 정보도 좀 알려주세요. 저번에 왔을 땐 방에서 와이파이가 좀 느렸는데, 그건 고쳐졌나요? 감사합니다!"
이메일 하나에 질문 4개랑 불만 사항 하나가 섞여 있음. 이걸 그냥 통째로 임베딩해서 FAQ 데이터베이스 뒤지면, 질문 한두 개만 대충 걸치고 나머지는 다 놓치는 엉망진창 결과가 나옴.
그래서 이메일 전체를 읽어서 질문 단위로 쪼개는 추출 레이어를 만들었음. 직접적인 질문("스파 이용 가능한가요?")은 물론이고, 함축적인 질문("차 가지고 간다" -> 주차 정보 필요), FAQ 검색은 안 되지만 응대는 해줘야 하는 불만 사항("와이파이 느렸음"), 질문으로 처리하면 안 되는 문맥("20일에 방문")까지 다 걸러내게 함.
이 추출 과정 안정화하는 데만 전체 개발 시간의 40%는 쓴 듯.
Layer 2: 벡터 검색을 활용한 FAQ 지식 베이스
호텔별 FAQ를 전부 임베딩해서 벡터 데이터베이스에 때려 박았음. 호텔마다 편의 시설이나 정책이 다 다르니까 검색 범위를 호텔별로 제한해야 함. 베를린 지점에 조식 물어보는 메일이 오면 베를린 FAQ에서만 찾아야지, 뮌헨 지점 걸 찾으면 안 되잖아.
Layer 1에서 추출한 질문들을 각각 따로 해당 호텔 FAQ랑 대조함. 이메일 전체를 뭉뚱그려서 검색하는 것보다 질문별로 따로 검색하는 게 훨씬 정확도가 높음.
Layer 3: 응답 생성
추출된 질문이랑 FAQ 매칭 결과를 조합해서 자연스러운 이메일 답장을 만들어냄. 챗봇 티 안 나게 친절한 호텔 직원처럼 말하는 게 포인트임. 고객이 물어본 질문을 논리적인 순서로 다 대답해주고, FAQ에서 못 찾은 내용은 따로 표시해서 사람이 직접 확인해야 할 메일인지 바로 알 수 있게 했음.
배운 점:
질문 추출 단계가 이메일 AI 프로젝트의 성패를 가름. 귀찮다고 그냥 이메일 통째로 검색 돌리고 싶은 유혹이 들 텐데, 짧고 단순한 메일엔 먹혀도 고객들이 두서없이 여러 주제 섞어서 보내는 실제 메일에는 바로 박살 남. 추출 단계에 시간 투자한 게 뒤쪽 작업들 퀄리티를 다 살려놨음.
호텔별로 검색 범위 제한하는 게 생각보다 훨씬 중요함. 호텔마다 다른데 대충 뭉뚱그려서 답변하면 고객들 헷갈리고 신뢰도만 깎임. 도심 호텔 주차 정보랑 리조트 주차 정보는 당연히 달라야지.

아키텍처 관련해서 궁금한 거 있으면 물어봐라. 다 답해줌.

