AI 고객 지원 에이전트: n8n, OpenAI, 그리고 Rails DB 연결하기
요약
n8n, OpenAI, PostgreSQL를 활용하여 고객 지원 업무를 자동화하는 'Human-in-the-Loop' 시스템 구축 방법을 소개합니다. DB 데이터를 기반으로 AI가 답변 초안을 작성하고, 사용자가 검토 후 전송하는 워크플로우를 구현합니다.
핵심 포인트
- n8n을 활용한 이메일 트리거 및 DB 연동 워크플로우 구축
- PostgreSQL 데이터를 컨텍스트로 활용한 정교한 프롬프팅
- Human-in-the-Loop 전략을 통한 AI 답변의 안정성 확보
- Discord/Slack을 통한 최종 승인 및 전송 프로세스
저는 매일 아침 산더미처럼 쌓인 고객 지원 이메일을 보며 잠에서 깨곤 했습니다. 1인 개발자에게 이것은 '몰입 상태 (flow-state)'를 깨뜨리는 궁극적인 방해 요소입니다.
누군가는 인보이스(invoice)를 찾지 못하고, 또 다른 누군가는 왜 자신의 'Pro' 기능이 아직 활성화되지 않았는지 알고 싶어 합니다. 이 질문들에 답하기 위해 저는 Rails 콘솔을 열고, 이메일로 사용자를 조회한 뒤, plan_id와 stripe_customer_id를 확인하고, 정중한 답변을 직접 타이핑해야 했습니다.
티켓 하나당 10분이 소요됩니다. 티켓이 10개라면, 코드를 만져보기도 전에 업무 시작 후 첫 2시간이 사라져 버립니다.
2026년 현재, 저는 이 작업의 90%를 자동화했습니다. AI가 고객과 직접 대화하게 하지는 않지만 (그것은 위험합니다), 운영 데이터베이스 (production database)의 전체 문맥을 바탕으로 AI가 저를 대신해 답변 초안을 작성 (draft the replies) 하도록 합니다.
다음은 제가 n8n, OpenAI, 그리고 PostgreSQL 연결을 사용하여 '지원 사이드킥 (Support Sidekick)'을 구축한 방법입니다.
전략: '인간 참여형 (Human-in-the-Loop)'
우리는 자동으로 답장을 보내는 봇을 만드는 것이 아닙니다. 우리는 다음과 같은 시스템을 구축합니다:
- 들어오는 고객 지원 이메일을 포착합니다.
- 실제 Rails 데이터베이스에서 사용자의 데이터를 조회합니다.
- 해당 데이터를 바탕으로 OpenAI에게 초안 작성을 요청합니다.
- 우리가 '승인 및 전송 (Approve & Send)'할 수 있도록 초안을 비공개 Discord 채널로 보냅니다.
1단계: 트리거 (이메일 또는 Webhook)
먼저, n8n이 고객 지원 요청을 확인할 수 있는 방법이 필요합니다.
- 쉬운 방법: n8n의 Gmail 또는 Outlook 노드를 사용하여 제목에
-- 운영 DB에서 한 번만 실행하세요
CREATE USER n8n_read_only WITH PASSWORD 'your_password';
GRANT CONNECT ON DATABASE my_app_production TO n8n_read_only;
...
n8n에서 **PostgreSQL 노드 (PostgreSQL node)**를 추가합니다. 들어온 티켓의 이메일을 사용하여 사용자를 찾습니다:
SELECT * FROM users WHERE email = '{{ $json.from_email }}' LIMIT 1;
STEP 3: AI 브레인 (OpenAI)
이제 **OpenAI 노드 (OpenAI node)**를 추가합니다. GPT-4o와 같이 컨텍스트 창이 큰 모델을 사용하고자 합니다.
여기서 핵심은 **시스템 프롬프트 (System Prompt)**입니다. 방금 데이터베이스에서 가져온 데이터를 AI에게 전달해야 합니다.
시스템 프롬프트 예시:
"당신은 [App Name]의 고객 지원 어시스턴트입니다. 다음은 사용자의 데이터입니다:
플랜: {{ $node.postgres.json.plan_name }}
가입일: {{ $node.postgres.json.created_at }}
마지막 결제일: {{ $node.postgres.json.last_payment_date }}이 데이터를 사용하여 사용자의 질문에 대해 정중하고 도움이 되는 답변 초안을 작성하세요. 만약 사용자가 Free 플랜이라면, 우선 지원을 위해 업그레이드할 것을 제안하세요. Pro 사용자라면 더욱 감사함을 표현하세요."
STEP 4: 전달 (Discord 또는 Slack)
마지막으로, AI가 작성한 초안을 우리가 주로 머무는 곳인 Discord로 보냅니다.
Discord 노드 (Discord node) (또는 Slack)를 추가합니다. 메시지 내용을 다음과 같이 설정합니다:
{{ $json.from_email }}로부터 온 새로운 고객 지원 티켓
사용자 질문: {{ $json.subject }}
AI 작성 답변 초안:
{{ $node.openai.json.content }}
이것이 게임 체인저인 이유
이제 휴대폰으로 알림이 오면, 데이터베이스를 뒤져볼 필요가 없습니다. 사용자의 상태와 완벽하게 작성된 답변 초안을 즉시 확인할 수 있습니다.
저는 그저 AI 초안을 복사하고, 필요한 경우 아주 약간만 수정한 뒤, 이메일 클라이언트에서 "보내기"를 누릅니다. 예전에는 10분이 걸리던 일이 이제는 30초면 충분합니다.
요약
1인 개발자라면 오직 "가치 높은 (High Value)" 작업에만 집중해야 합니다.
- 가치 높은 작업: 치명적인 버그 수정, 새로운 기능 구축.
- 가치 낮은 작업: 고객 지원 티켓을 위해 사용자의 가입 날짜를 찾아보는 일.
n8n을 사용하여 **운영 데이터베이스 (Production Database)**와 OpenAI 사이의 간극을 메움으로써, 가치가 낮은 조사 작업을 기계에 위임할 수 있습니다. 여러분의 Rails 모놀리스 (monolith)는 깔끔하게 유지되며, 여러분의 두뇌는 코드에만 집중할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기