아무도 해결하려 하지 않는 접수원 문제
요약
지역 서비스 비즈니스를 위해 SMS로 고객 응대 및 예약을 자동화하는 AI 접수원 'Remi' 개발 사례를 소개합니다. Google Gemini 2.5 Flash와 Twilio를 활용하여 고객의 문의에 답하고 예약 데이터를 추출하는 에이전트 시스템을 구축했습니다.
핵심 포인트
- Google Gemini 2.5 Flash를 활용한 자연스러운 SMS 대화 및 예약 의도 파싱
- Twilio 10DLC 규정 준수를 통한 미국 내 비즈니스 메시징 신뢰성 확보
- Supabase와 Next.js를 이용한 예약 및 고객 데이터 관리 시스템 구축
- Cron-job.org를 활용한 예약 알림 자동화 구현
제가 계속해서 생각하고 있는 특정한 유형의 비즈니스가 있습니다. 1인 미용실, 일주일에 40명의 고객을 예약받는 이발사, 15개의 작업을 처리하는 청소부 같은 곳들입니다. 이들이 소외된 이유는 소프트웨어를 살 여력이 없어서가 아닙니다. 소프트웨어가 예약 포털을 설정하고 고객에게 그 존재를 알리는 데 여유 시간이 한 시간쯤은 있을 것이라고 계속 가정하기 때문입니다.
실제 문제는 더 단순합니다. 그들의 고객은 전화번호로 문자를 보냅니다. 양식(form)도 아니고, 앱(app)도 아닙니다. 창문에 붙어 있거나 Instagram 프로필에 적힌 번호로 문자를 보냅니다. 토요일 예약 가능 여부를 묻는 문자가 오후 8시에 도착하면, 답변할 사람이 집에 없습니다. 예약은 가장 먼저 답장을 보내는 사람에게 돌아갑니다.
저는 이 간극이 묘하게 구체적이라고 느껴져 관심을 갖게 되었습니다. SMS는 이미 채널로 사용되고 있습니다. 고객들은 이미 이를 사용하고 있습니다. 빠진 조각은 순수하게 '존재(presence)'입니다. 즉, 화요일 밤 9시에도 응대할 수 있는 누군가가 필요하다는 것입니다.
내가 만든 것
Remi는 지역 서비스 비즈니스를 위해 전용 SMS 라인을 운영하는 AI 접수원(AI receptionist)입니다. Remi는 고객 생애 주기 전체를 처리합니다. 영업시간, 가격, 서비스에 대한 질문에 답하고, 자연스러운 대화를 통해 이름, 선호 서비스, 시간을 수집하며, 예약을 확정합니다. 또한 방문 24시간 전과 1시간 전에 자동 알림을 보내고, 방문 후에는 리뷰 작성을 요청하는 후속 조치까지 수행합니다.
기술 스택(Stack):
- AI: Google Gemini 2.5 Flash
- Messaging: 10DLC 등록을 포함한 Twilio SMS
- Backend: Vercel 기반의 Next.js 16 API routes
- Database: Supabase Postgres (three tables: conversations, bookings, businesses)
- Payments: Stripe 구독 — 7일 무료 체험 포함 월 $99
모든 인바운드(inbound) SMS가 들어올 때마다 웹훅(webhook)이 실행됩니다. Gemini는 비즈니스의 전체 컨텍스트와 전체 대화 기록을 전달받아 답장을 생성하거나, 예약 의도(booking intent)가 명확할 경우 파싱되어 데이터베이스에 기록될 BOOKING_JSON 객체를 생성합니다. 시작 전 가장 걱정했던 부분이었던 다회차 대화(multi-turn conversations) 과정에서도 의도 탐지(Intent detection)는 정확하게 유지되었습니다.
코드 작성보다 오래 걸린 것
Twilio 10DLC. 미국 내 비즈니스 SMS를 위한 통신사 수준의 규정 준수(Carrier-level compliance) 요구 사항입니다. 만약 이를 경험해 본 적이 없다면, 이는 주말 동안 끝낼 수 있는 작업이 아닙니다. 시간을 충분히 할애해야 하며, 분명히 다른 대상을 위해 작성된 듯한 문서들과 씨름하며 여러 번의 시행착오를 겪을 것을 각오해야 합니다. 가치는 있습니다. 이것이 메시지 전달의 신뢰성을 만들어주기 때문입니다. 하지만 원래의 예상 작업 시간에는 포함되지 않았던 부분입니다.
또한, Vercel Hobby 플랜은 일 단위 미만의 크론 잡(cron jobs)을 지원하지 않습니다. 예약 알림은 15분마다 /api/reminders를 호출하는 cron-job.org 작업을 통해 실행됩니다. 우아한 방식은 아니지만, 별도의 스케줄러를 구축하는 것보다 빠르며 제대로 작동합니다.
내가 다르게 했을 일
첫날부터 캘린더를 통합했을 것입니다. 현재 예약 정보는 Supabase에 저장되고 대시보드를 통해 나타나며 잘 작동하고 있지만, 비즈니스 소유자가 두 곳을 확인하지 않도록 확정된 예약이 Google Calendar와 동기화되어야 합니다. 이것은 제가 놓친 명백한 다음 단계입니다.
또한 온보딩 마찰(onboarding friction)을 더 일찍 줄였을 것입니다. Twilio 번호를 설정하고 10DLC를 등록하는 과정은 여전히 수동 단계입니다. 이 서비스가 구축된 타겟 고객층인 1인 기업에게는, 고객에게 월 99달러를 청구하기 전에 반드시 제거해야 할 유의미한 마찰입니다.
결과
이 프로젝트는 Build with Gemini XPRIZE 해커톤을 위한 빌드로 시작되었으나, 결국 실제 서비스로 출시되었습니다.
데모: YouTube에서 시청하기
라이브: remiai.vercel.app
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기