본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 06. 04:45

WhatsApp를 통한 스페인어 학습: 왜 3명의 유료 사용자가 100명의 웹 가입자보다 나은가

요약

웹 앱 대신 WhatsApp을 활용하여 사용자 마찰을 줄이고 유료 고객을 확보한 사례를 다룹니다. 고비용의 벡터 저장소 대신 PostgreSQL과 일일 요약본을 활용한 효율적인 2계층 메모리 아키텍처를 제안합니다.

핵심 포인트

  • Pinecone 없이 PostgreSQL과 요약본만으로 효율적인 메모리 구현
  • 사용자 패턴 반복을 이용한 저비용 컨텍스트 유지 전략
  • WhatsApp API를 통한 로그인 및 접속 마찰 제거
  • 데이터 압축을 통한 토큰 비용 및 인프라 비용 최적화

AIdeazz에 처음 게시되었습니다 — 정식 링크와 함께 이곳에 교차 게시되었습니다.

나는 97명의 가입자와 수익 0원을 기록한 후 나의 스페인어 학습 웹 앱을 폐기했다. 3주 후, 나는 정확히 동일한 기능을 WhatsApp을 통해 제공함으로써 유료 고객을 확보했다. 차이점은 AI가 아니었다 — 학습자와 다음 대화 사이의 모든 마찰 지점(friction point)을 제거한 것이었다.

실제로 효과가 있었던 것은 다음과 같다: Pinecone이나 Weaviate 없이도 대화 문맥(context)을 유지하는 2계층 메모리 시스템, 메시지 사이의 며칠간의 간격에도 유지되는 세션 연속성(session continuity), 그리고 왜 나의 가장 높은 결제 사용자가 교환당 $0.0008의 비용으로 매일 200개 이상의 메시지를 보내는지에 대한 이유다.

벡터 저장소(Vector Stores) 없는 메모리

대부분의 AI 언어 학습 앱은 메모리를 기술적인 체크박스처럼 취급한다: 대화를 임베딩(embed)하고, Pinecone에 저장하며, 유사도(similarity)에 따라 검색한다. 나 또한 그렇게 시작했다. 활성 사용자 10명에 대한 월간 비용: Pinecone 비용 $49와 임베딩 연산 비용. 해당 사용자들로부터의 수익: $0.

EspaLuz는 더 단순한 아키텍처(architecture)로 운영된다. 1계층: user_id, 타임스탬프(timestamp), 역할(role)과 함께 PostgreSQL에 저장된 마지막 20개의 메시지. 2계층: UTC 자정에 생성되어 500 토큰(tokens)으로 압축되는 일일 요약본. 사용자당 월간 총 저장 용량: 18KB. Oracle Cloud의 Always Free 티어에서의 비용: $0.

대화 메모리가 작동하는 이유는 언어 학습자들이 패턴을 반복하기 때문이다. 그들은 동일한 동사 활용을 연습하고, 동일한 어휘를 다시 살펴보고, 동일한 실수를 반복한다. 10,000개의 과거 메시지 전체에 대해 의미론적 검색(semantic search)을 수행할 필요는 없다. 당신에게 필요한 것은 어제의 "ser vs estar"에 대한 교정과 지난주의 식당 어휘다.

메모리 검색을 구동하는 실제 쿼리(query)는 다음과 같다:

SELECT message_content, role, created_at 
FROM conversations 
WHERE user_id = $1 
...

7일 이상의 문맥을 위해서는 시스템이 최신 요약본을 가져온다:

SELECT summary_content 
FROM daily_summaries 
WHERE user_id = $1 
...

5개의 요약본 = 2,500 토큰의 컨텍스트 (context). 이 사용자가 접속법 (subjunctive mood)을 어려워하고 지난달에 색상을 학습했다는 것을 기억하기에는 충분합니다. 하지만 컨텍스트 윈도우 (context windows)나 검색 예산 (retrieval budgets)을 낭비할 정도는 아닙니다.

WhatsApp의 자연스러운 지속성

웹 앱은 로그인을 요구합니다. 리마인더 이메일을 보냅니다. 사용자가 URL, 비밀번호, 어떤 탭을 열어두었는지 기억해야 합니다. 제 분석 결과는 잔혹한 진실을 보여주었습니다: 평균 세션 길이 3.2분, 24시간 후 재방문율 7%.

WhatsApp 대화는 결코 끝나지 않습니다. 채팅은 어머니의 메시지와 업무 그룹 메시지 사이에 그대로 남아 있습니다. 로그인도 필요 없고, URL도 필요 없습니다. 그저 타이핑하고 계속하면 됩니다.

기술적 구현에는 Twilio의 WhatsApp Business API를 사용합니다. 까다로운 부분은 메시지를 받는 것이 아니라, Twilio가 강제하는 24시간 세션 윈도우 (session window) 동안 상태 (state)를 유지하는 것입니다. EspaLuz가 이를 처리하는 방식은 다음과 같습니다:

  1. 각 수신 메시지는 last_active 타임스탬프를 업데이트합니다.
  2. 만약 last_active가 24시간 이전이라면, 프롬프트 (prompt)에 컨텍스트 리프레시 (context refresh)를 주입합니다.
  3. 이 리프레시는 마지막 대화 요약과

가장 사용량이 많은 사용자(어제 237개 메시지 전송)의 실제 사용 데이터:

  • 71% Llama 70B로 라우팅: $0.08
  • 24% Llama 8B로 라우팅: $0.01
  • 5% Claude로 라우팅: $0.11

총 비용: 하루 전체 대화 연습에 $0.20 소요. 이 사용자는 월 $49를 지불합니다.

왜 3명의 고객이 100명의 가입자보다 나은가

웹 앱은 2주 동안 97명의 가입자를 확보했습니다. 유료 전환율은 0%였습니다. WhatsApp 봇은 11명의 사용자가 있습니다. 그중 3명이 월 $29-49를 지불합니다. 이 차이는 실제 결제 인센티브 정렬을 통해서만 나타난 사용 패턴에서 기인합니다.

무료 웹 앱 사용자:

  • 세션당 평균 2.3개 메시지
  • 기능을 테스트할 뿐, 스페인어를 연습하지 않음
  • 약간의 마찰(friction)이라도 생기면 즉시 이탈(churn)

유료 WhatsApp 사용자:

  • 하루 평균 47개 메시지
  • 특정 시나리오를 반복적으로 연습
  • 정확한 재현 단계와 함께 버그를 보고

가장 가치 있는 피드백은 음성 메시지를 보내는 월 $49 결제 사용자로부터 왔습니다. 그녀는 세 가지 결정적인 문제를 찾아냈습니다:

  1. 봇이 음성 전사(transcription)에서 악센트 표시(accent marks)를 교정하여, 본인이 발음을 틀린 것인지 Whisper가 잘못 들은 것인지 혼란을 야기함
  2. Oracle Cloud의 프리 티어(free tier)에 부하가 걸리는 그녀의 오전 연습 시간(파나마 시간 오전 7시) 동안 응답 지연(latency) 스파이크 발생
  3. 문법 설명이 스페인식 스페인어(Spain Spanish) 예시를 사용하는 반면, 그녀는 멕시코식 변체(Mexican variants)가 필요함

이러한 문제 중 어느 것도 무료 사용자들에게서는 나타나지 않았습니다. 그들은 그저 앱 사용을 중단했을 뿐입니다.

중요한 구현 세부 사항

EspaLuz의 전체 스택:

  • 오케스트레이션 (Orchestration): Oracle Cloud 상의 커스텀 Python 스케줄러 (Airflow/Dagster 미사용)
  • 메시지 큐 (Message queue): PostgreSQL LISTEN/NOTIFY (Redis/RabbitMQ 미사용)
  • 상태 관리 (State management): 대화 상태를 포함한 PostgreSQL 내 JSON 블롭 (JSON blob)
  • 메모리 (Memory): 위에서 설명한 2계층 시스템
  • 모델 (Models): Groq (Llama 3.1 8B/70B), Anthropic (Claude 3.5 Sonnet)
  • 음성 (Voice): 전사를 위한 Whisper API, 아직 TTS는 미도입
  • 배포 (Deployment): 단일 Oracle Cloud VM, 4 CPU, 24GB RAM (프리 티어)

놀라운 제약 사항: 모델 API의 제한에 도달하기 전에 Twilio의 속도 제한 (rate limits)에 먼저 도달합니다. WhatsApp Business는 하루에 고객이 시작한 대화(customer-initiated conversations)를 1,000개까지 허용합니다. 어제 모든 사용자를 통틀어 890개에 도달했습니다.

일일 메시지 1,000개 기준 비용 분석:

  • Twilio WhatsApp: $8.90
  • 모델 API (Model APIs): ~$2.50 (라우팅 포함)
  • Oracle Cloud: $0 (프리 티어)
  • PostgreSQL 저장소: $0 (1GB 미만)

일일 메시지 1,000개로부터 발생하는 수익 (현재 가격 기준): 월 ~$150.

기술 창업자를 위한 교훈

WhatsApp 기반의 AI 언어 학습 서비스를 구축하며, 웹 우선(web-first) 빌더들이 놓치는 세 가지를 배웠습니다.

1. 메모리 (Memory)는 완벽할 필요가 없습니다. 언어 학습자는 전지전능함이 아니라 연속성을 원합니다. 저의 2계층 시스템은 벡터 검색 (vector search) 비용의 1/100 수준으로 자연스러운 대화에 충분한 문맥 (context)을 유지합니다.

2. 플랫폼의 제약이 더 나은 제품을 만듭니다. WhatsApp의 24시간 세션 창 (session window)은 저로 하여금 더 나은 문맥 갱신 (context refresh) 기능을 구축하도록 강제했습니다. 1,600자 글자 수 제한은 응답을 간결하게 만들었습니다. 음성 메시지 지원은 사용자들이 이미 이를 사용하고 있었기 때문에 자연스럽게 도입되었습니다.

3. 비용을 청구하는 것이 실제 요구사항을 드러냅니다. 무료 사용자는 탐색합니다. 유료 사용자는 연습합니다. 한 명의 유료 사용자가 당신의 AWS 비용을 지불합니다.

저는 현재 네 번째 반복 버전을 구축하고 있습니다: 학습자 간의 스페인어 연습을 위한 그룹 대화 기능입니다. 동일한 WhatsApp 인프라, 동일한 메모리 시스템을 사용하지만, 새로운 도전 과제가 있습니다: 개별 학습 이력이 서로 섞이지 않게 하면서 여러 화자 사이의 대화 문맥을 유지하는 것입니다.

기술적 접근 방식: conversation_id별로 메모리를 분할하고, 그룹과 관련된 요약본만 주입하며, 개별 학습 진도는 별도로 추적합니다. 예상 출시 시점: 그룹 연습을 위해 월 $19를 지불할 의사가 있는 사용자가 5명이 되었을 때입니다.

이것 또한 또 다른 교훈이기 때문입니다: AI 에이전트 비즈니스에서는 수익에 대한 약속 (revenue commitment)이 기능 요청 (feature requests)보다 언제나 더 강력합니다.

자주 묻는 질문 (Frequently Asked Questions)

Q: 월간 비용을 없애기 위해 ChromaDB와 같은 로컬 벡터 저장소 (local vector stores)를 사용하여 RAG를 사용하지 않는 이유는 무엇인가요?
A: ChromaDB를 로컬에서 테스트해 보았습니다. 50명의 사용자 대화 기록에 대해 메모리 사용량이 2.8GB까지 급증했습니다. 벡터에 1GB RAM이 할당된 Oracle의 프리 티어 (free tier)를 사용한다면, 약 18명의 사용자에서 한계에 도달할 것입니다. 저의 PostgreSQL 접근 방식은 동일한 인프라에서 500명 이상의 사용자로 확장 가능합니다.

Q: Groq의 Llama 모델들이 Claude보다 컨텍스트 윈도우 (context windows)가 더 작은 경우, 대화 문맥 (conversation context)을 어떻게 처리하나요?
A: Llama 3.1 70B는 128K 토큰을 처리합니다. 저는 최대 3K를 사용합니다: 최근 메시지 20개 (2K) + 요약본 5개 (1K). 제약 사항은 컨텍스트 윈도우가 아니라 응답의 관련성 (relevance)입니다. 더 많은 컨텍스트가 "¿Cómo se dice 'apple'?"에 대한 답변의 질을 높여주지는 않습니다.

A: PostgreSQL은 30일 동안 활동이 없으면 소프트 삭제 (soft-deletes)를 수행하지만, 요약본은 180일 동안 유지합니다. 다시 구독하는 사용자에게는 마지막 3개의 요약본이 주입된 "다시 오신 것을 환영합니다" 메시지가 전송됩니다. 유지 비용은 사용자당 월 $0.0001입니다.

Q: 모든 작업에 대해 100만 토큰당 $0.15인 GPT-4 Mini를 사용하는 대신, 왜 여러 모델로 라우팅 (route) 하나요?
A: GPT-4 Mini를 저의 라우팅 시스템과 A/B 테스트를 진행했습니다. 사용자들은 대화 품질이 동일하다고 평가했습니다 (평균 4.3/5). 하지만 Mini의 스페인어 설명은 더 장황했습니다 — Llama 70B의 평균 응답이 180 토큰인 반면, Mini는 평균 340 토큰이었습니다. 규모가 커지면, 그 추가적인 토큰 비용이 스마트 라우팅으로 절약하는 비용보다 더 많이 듭니다.

Q: 사용자가 자신의 학습 이력에 대해 의도적으로 잘못된 정보를 주입하여 메모리 오염 (memory poisoning)을 일으키는 것을 어떻게 방지하나요?
A: 방지하지 않습니다. 만약 누군가가 자신의 학습 진도에 대해 스페인어 튜터 봇을 가스라이팅하기 위해 월 $29를 지불한다면, 그것은 그들의 선택입니다. 일일 요약은 기본적인 사실 추출 (fact extraction)을 사용하며, 진위 검증 (truth validation)을 수행하지 않습니다. 실제 사용자들은 정확한 진도 추적을 원합니다.

— Elena Revicheva · AIdeazz · Portfolio

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0