calling-language — 면접 대응 종합 노트 v2
작성일: 2026-04-26 (v2 — Vapi 실제 운영 데이터 반영) 목적: 위버스브레인 프로덕트 기획자 면접에서 calling-language를 어떤 각도로 질문받아도 단단하게 답변할 수 있도록 모든 디테일을 한 곳에 모은 통합 자료
Repo: https://github.com/sigolyori/calling-language Demo: https://calling-language-web.vercel.app 기간: 2026-04-03 시작 → 2026-04-25 최근 커밋 (약 3주간 집중 개발, 현재도 매일 사용 중) 언어: TypeScript (1,640 KB) 스택 요약: Monorepo (apps/web + apps/mobile), Next.js 14, Prisma + Postgres, Vapi.ai (PSTN/WebRTC), GPT-5.4 (대화), Claude Sonnet 4.6 (피드백), Claude Haiku 4.5 (메모리/브리핑), ElevenLabs (STT/TTS), Tavily, cron-job.org
0. 30초 / 1분 / 2분 버전 (분량별 답변)
⏱️ 30초 버전 (D1 정도의 짧은 응답)
calling-language는 제가 직접 설계하고 구현한 AI 전화 영어 튜터 서비스입니다. 원하는 시간에 AI 튜터가 전화를 걸어 10~15분 회화를 진행하고, 통화 종료 후 OPIc 루브릭 기반 피드백을 제공합니다. Claude Code와 협업해 MVP까지 배포했고, 저 스스로도 매일 사용하고 있습니다.
⏱️ 1분 버전 (D2 표준)
EF 잉글리시를 6개월 구독하며 두 가지 페인을 겪었습니다. 첫째, 1:1 클래스가 선생님 일정에 맞춰야 했고, 둘째, 월 비용이 부담되었습니다. 동시에 평소 ‘AI로 제가 이점을 얻을 수 있는 서비스를 직접 만들어보고 싶다’는 생각이 있었기에, 이 두 페인을 해결하는 ’AI 튜터가 예약 시간에 전화하는’ 서비스를 직접 만들었습니다. 핵심 가치 제안은 학습의 지속성 확보. 사용자는 가입·온보딩 후 학습 시간을 스케줄링해 두면 그 시간에 AI 튜터(Alex)가 전화를 걸어 10~15분 회화하고 OPIc 기반 피드백을 제공합니다. Claude Code와 협업해 Vapi와 ElevenLabs 스택으로 MVP까지 배포했고, MVP를 만든 후 위버스브레인의 맥스AI 밀착케어콜이 같은 방향의 솔루션임을 확인했습니다.
⏱️ 2분 버전 (심화 질문 대응)
1분 버전 + 다음 디테일 추가: - “사용자 메모리 시스템을 직접 설계했습니다. 통화가 끝날 때마다 Claude Haiku가 트랜스크립트에서 학습자 프로필(관심사·말하기 패턴·반복 등장 토픽 등)과 다음 통화 ’open threads’를 추출해 다음 통화 시스템 프롬프트에 주입합니다. FIFO로 최근 10세션, 5개 open thread만 유지해 컨텍스트 비대화를 방지했습니다.” - “프라이버시 측면에서 건강·재정·관계 갈등·종교·정치·구체 주소는 학습자가 발화해도 프로필에 저장하지 않도록 ’PRIVACY RULES (hard exclusions)’를 시스템 프롬프트에 명시했습니다. 학습자가 ’X 얘기 그만’이라고 하면 excluded_topics에 추가되고 모든 다른 필드에서 제거됩니다.” - “OPIc 평가는 12개 레벨 (NL → Superior) ACTFL 루브릭을 그대로 적용해, AI가 자의적으로 점수를 매기지 못하도록 ‘Rate conservatively’, ‘Korean code-switching → cap at IM1’ 같은 스코어링 디시플린을 시스템 프롬프트에 박아두었습니다.”
1. 프로젝트 메타데이터
| 항목 | 값 |
|---|---|
| GitHub 시작 | 2026-04-03 |
| 최근 커밋 | 2026-04-25 |
| 개발 기간 | 약 3주 집중 + 운영/개선 지속 |
| 코드 규모 | 1,640 KB (TypeScript 메인) |
| 모노레포 구조 | apps/web (Next.js) + apps/mobile (React Native) |
| 배포 | Vercel (Hobby plan) |
| DB | PostgreSQL (Prisma ORM) |
| 사용자 | 본인 1명 (매일 사용 중). Twilio verified caller 제약으로 외부 사용자 확장 불가 → in-app 콜 전환 계획 |
| 운영 통계 (지난 14일) | 78회 통화 / 의미 있는 학습 콜(≥10분) 3건. 분당 단가 ~$0.11 일정. 10분 통화 ~$1.10 (~1,500원) |
2. 문제 정의 — 무엇이 페인이었나
2.1 본인 학습자 경험 (EF 잉글리시 6개월 구독)
- 시간 페인: 1:1 프라이빗 클래스가 선생님 시간에 맞춰야 했음
- 비용 페인: 월 비용 부담 (장기 지속 어려움)
- 지속성 페인: 일정 맞추기 어려우면 학습이 끊겼고, 끊긴 후 회복까지 걸리는 시간이 길었음
2.2 학습자 페인 → 서비스 가치 제안 매핑
| 페인 | calling-language 솔루션 |
|---|---|
| 선생님 시간에 맞춰야 함 | 학습자가 직접 스케줄링 |
| 비용 부담 → 지속 어려움 | AI로 비용 구조 절감 (Vapi + LLM) |
| 학습 끊김 | 예약 시간에 전화가 걸려옴 (강제력) |
| 피드백 모호함 | OPIc 12레벨 + 발화 예시 + 한국어 설명 |
2.3 부수 동기 (꼬리질문 대비)
“평소 ’AI를 활용해 제가 실제로 이점을 얻을 수 있는 서비스를 직접 만들어보고 싶다’는 생각이 있었습니다. 영어 학습에서 겪은 페인이 그 첫 대상이 되었습니다.”
3. 핵심 가치 제안 (Value Proposition)
“원하는 시간에 스케줄을 걸면 실제 번호로 전화가 온다”
이 한 문장이 핵심 가치 제안입니다. 추가 가치: - OPIc 기준 객관적 평가 — AI 자의적 평가 방지를 위한 ACTFL 루브릭 정렬 - 세션 간 학습 지속성 — Memory 시스템으로 이전 통화 맥락 유지 - 오늘의 시사 컨텍스트 — Daily Briefing이 매 통화에 새 화제를 제공 - 프라이버시 안전성 — 민감 정보 하드 제외 룰
4. 기술 스택 — 무엇을 왜 선택했나 (Vapi 실측 기반)
4.1 전체 스택 다이어그램 (텍스트 버전)
[User] ─→ [WebCall (브라우저, 현재 59%)] ─┐
└→ [PSTN via Twilio (현재 41%, 제거 예정)] ─┤
↓
[Vapi.ai 오케스트레이터]
↓
┌────────────────┼────────────────┐
↓ ↓ ↓
[GPT-5.4 (대화 LLM)] [ElevenLabs STT [ElevenLabs TTS
via OpenAI scribe_v2_realtime eleven_flash_v2_5
cache hit 51%] + Gladia solaria-1 voiceId GcInE5...]
fallback]
↓
[end-of-call webhook]
↓
[apps/web (Next.js)] ─→ [Prisma] ─→ [Postgres]
↓
[Claude Sonnet 4.6 (OPIc 피드백 평가)]
[Claude Haiku 4.5 (프로필 추출)]
[Claude Haiku 4.5 (뉴스 브리핑)]
↑
[Tavily (뉴스 검색)] ← [cron-job.org (매일 06:00 KST)]
4.2 각 도구 선택 근거 (실측 검증됨)
| 도구 | 역할 | 선택 이유 |
|---|---|---|
| Vapi.ai | Voice AI 오케스트레이터 | PSTN+WebRTC 동시 지원. STT/TTS/LLM 매니지드 묶음. Twilio + Whisper + ElevenLabs 직접 통합보다 MVP 속도 빠름 |
| GPT-5.4 (OpenAI, 대화) | Vapi assistant LLM | 음성 대화 latency·자연스러움 이점. 캐시 히트 51%로 비용 효율 |
ElevenLabs scribe_v2_realtime |
STT primary (영어) | 영어 화자 정확도 우수 |
Gladia solaria-1 |
STT fallback (한·영 동시) | 한국어 코드 스위칭 대응 |
ElevenLabs eleven_flash_v2_5 |
TTS | 저지연 + 자연스러운 음성. voiceId GcInE5boTOTZd3e9lioX (Alex 페르소나 일관) |
| Twilio (현재) | PSTN 발신/수신 | Vapi의 PSTN 백엔드. 한국 번호 발신 가능. 단점: verified caller 제약 + Vapi 청구서 밖 별도 청구 → decommission 결정 |
| Vapi Web SDK (전환 목표) | In-app WebRTC 콜 | Twilio 제거 + 외부 사용자 확장 가능. 이미 운영 중 (현재 통화의 59%) |
| Claude Sonnet 4.6 | OPIc 피드백 평가 | ACTFL 루브릭 같은 정밀 디시플린에 강함. temperature 0.2로 일관성 |
| Claude Haiku 4.5 | 프로필 추출 + 뉴스 큐레이션 | 정형 작업이라 Haiku로 충분, Sonnet 대비 비용 1/10 수준 |
| Tavily | 뉴스 검색 API | LLM-friendly. 무료 1,000회/월로 MVP 충분 |
| Prisma + Postgres | ORM + DB | 학부 DB 수업 + 오뚜기 클라우드 데이터 구축 경험으로 익숙. MVP 스키마 변경에 migration 효율적 |
| Next.js 14 (App Router) | 풀스택 프레임워크 | API routes로 백엔드 통합. MVP에서 분리 비용 없음 |
| cron-job.org | 외부 cron | Vercel Hobby cron 제약 우회. 무료 |
| Claude Code | 코딩 협업 | 비전공 개발자 보완. 아키텍처·스키마는 직접, 보일러플레이트·디버깅은 Claude Code |
5. 데이터 모델 (Prisma 스키마 핵심)
5.1 핵심 테이블
- User: id, email, name, phoneNumber, englishLevel (“beginner”|“intermediate”), timezone (IANA, “Asia/Seoul”)
- Schedule: 사용자 학습 일정 (요일 + 시간)
- Session: 통화 1회 단위 (status: scheduled / in_progress / completed / failed / missed; callType: pstn | webrtc; vapiCallId)
- Transcript: 통화 트랜스크립트 (JSON: [{role, text, timestamp}] + rawText)
- Feedback: OPIc 평가 결과 (opicLevel, opicRationale, strengths, improvements, specificExamples[], overallSummary)
- LearnerProfile: 학습자 메모리 (learnerProfile, speakingPatterns, sessionHistory[FIFO 10], openThreads[FIFO 5], excludedTopics)
- DailyBriefing: 일일 시사 브리핑 (date YYYY-MM-DD KST, weatherSeoul, items[], conversationStarters[])
5.2 설계 의도
- Session ↔︎ Transcript ↔︎ Feedback 1:1:1: 통화 1회 단위로 모든 데이터 정렬
- LearnerProfile ↔︎ User 1:1: 개인화 메모리는 사용자당 하나
- DailyBriefing: 사용자 무관, 날짜 기준 1개. 모든 사용자가 같은 브리핑을 그날의 시사 컨텍스트로 사용
6. 핵심 비즈니스 로직 (4개 LLM 시스템)
6.1 Alex (대화 LLM, GPT-5.4 via Vapi)
- 시스템 프롬프트 =
ALEX_BASE+ Memory 섹션 + Daily Briefing 섹션 - 통화 직전
buildAssistantOverrides가 동적으로 시스템 프롬프트 생성 후 Vapi에 주입 - 첫 메시지: open_threads[0]이 있으면 “Last time we left off on X — how’s that going?”, 없으면 일반 인사
- 최대 통화 시간 1,500초 (25분) — Alex는 10~15분 목표, 25분은 자연스러운 흐름 헤드룸
- 실측 캐시 히트율 51% — 이전 컨텍스트 재활용으로 비용 절감
6.2 OPIc Evaluator (Claude Sonnet 4.6, max_tokens 1500, temperature 0.2)
12 레벨 ACTFL 정렬 루브릭: - Novice: NL, NM, NH - Intermediate: IL, IM1, IM2, IM3, IH - Advanced: AL, AM, AH - Superior
스코어링 디시플린 (자의적 평가 방지): 1. Rate conservatively 2. 짧은 발화 → Advanced 금지 3. AI가 끌어올린 토픽 복잡도가 아닌 사용자가 실제로 발화한 것만 평가 4. self-reported level은 weak prior, 트랜스크립트가 우선 5. 한국어 코드 스위칭 빈번 시 IM1 캡
최소 트랜스크립트 길이: 30단어 미만이면 평가 스킵 (feedbackError: "transcript_too_short")
출력: 한국어 rationale + strengths + improvements + 2~4개 specific examples (verbatim quote + corrected + Korean explanation)
6.3 Profile Extractor (Claude Haiku 4.5)
- 통화 종료 후 webhook에서 트리거
- 이전 프로필을 MERGE하며 새 정보만 업데이트 (기존 필드 보존)
- PRIVACY RULES (hard exclusions): 건강 / 재정 구체값 / 가족 갈등 / 종교 / 정치 / 타인 PII / 구체 주소 → 절대 저장 안 함
- session_history: FIFO 10개 캡 (오래된 것부터 drop)
- open_threads: FIFO 5개 캡 (다음 통화 자연스러운 시작점)
- excluded_topics: 학습자가 “X 그만”이라고 하면 추가 + 다른 필드에서 제거
- 언어 컨벤션: 영어 기본, 한국 고유명사는 한글 (강남, 김희영, 돌곶이), 첫 등장 시 영어 gloss 괄호
6.4 Daily Briefing Curator (Claude Haiku 4.5)
- 매일 06:00 KST cron-job.org →
/api/cron/daily-briefing - Tavily로 뉴스 검색 → Haiku로 5~7개 아이템 큐레이션
- 각 아이템: category, headline, context, why_relevant
- 추가: weatherSeoul, conversationStarters 2~3개
- 시스템 프롬프트에 주입 시 “Use these naturally — don’t recite them. Mention at most one news item per call unless the learner engages.”
7. 사용자 플로우 (UX)
[가입] → 이메일·이름·전화번호·영어 레벨·타임존 입력
↓
[온보딩] → 학습 일정 스케줄링 (요일·시간)
↓
[예약된 시간] → cron이 트리거 → /api/calls/trigger → Vapi가 PSTN 또는 WebRTC로 발신
↓
[통화] → Alex와 10~15분 회화 (시스템 프롬프트에 메모리 + 오늘 브리핑 주입됨)
↓
[종료] → Vapi end-of-call webhook → /api/webhooks/vapi
↓
├─→ Feedback 생성 (Sonnet, OPIc 평가)
└─→ LearnerProfile 업데이트 (Haiku, 메모리 갱신)
↓
[다음 통화] → 갱신된 메모리 + 새 브리핑이 시스템 프롬프트에 다시 주입
8. 실측 운영 데이터 (2026-04-12 ~ 04-25, 14일간)
8.1 통화량과 비용 (전체 78건)
- 78건 통화 (총 145.6분, 총 $15.11)
- 그러나 78건 중 다수가 미응답·즉시 종료·테스트 통화라 단순 평균 ($0.19/통화)은 의미 있는 학습 콜 비용을 왜곡함
- 분당 단가는 통화 길이와 무관하게 $0.10~0.11로 일정 → 비용 예측 가능
8.2 통화 길이별 비용 분석 (가장 중요)
| 분류 | 건수 | 통화당 평균 비용 | 평균 분당 단가 | 평균 길이 |
|---|---|---|---|---|
| 전체 (테스트·미응답 포함) | 78 | $0.19 | $0.10 | 1.9분 |
| ≥3분 통화 | 9 | $1.13 | $0.11 | 10.8분 |
| ≥10분 통화 (의미 있는 학습 콜) | 3 | $1.80 | $0.11 | 16.3분 |
| ≥15분 통화 (충분한 학습 시간) | 2 | $2.09 | $0.11 | 19.5분 |
8.3 학습 통화 표준 비용 (≥10분 기준)
- 10분 통화: 약 $1.10 (약 1,500원)
- 15분 통화: 약 $1.65 (약 2,300원)
- 20분 통화: 약 $2.20 (약 3,000원)
면접용 한 문장: “분당 단가는 길이와 무관하게 약 $0.11로 일정합니다. 10분 학습 통화 1건당 약 1,500원이라는 의미입니다.”
8.4 비용 구조 분해 (≥10분 통화 3건 기준 — $5.39 / 49분)
| 항목 | 비중 | 비고 |
|---|---|---|
| Vapi 플랫폼 수수료 | 45.5% ($2.45) | 분당 마크업 — Vapi의 가장 큰 부분 |
| ElevenLabs STT | 23.0% ($1.24) | scribe_v2_realtime 분당 과금 |
| ElevenLabs TTS | 16.1% ($0.87) | 캐릭터당 과금 |
| OpenAI GPT-5.4 (LLM) | 14.9% ($0.80) | 캐시 히트 51%로 효율적 |
| Transport (Vapi 내부) | 0.5% ($0.03) | Vapi 청구서 안의 transport |
| (Twilio 별도 청구는 Vapi 청구서 밖) | — | 전화번호 월 임대료 + 분당료가 별도 |
8.5 통화 타입 분포 (78건 전체)
- WebCall (브라우저 in-app): 46건 (59%) — 이미 절반 이상이 in-app
- Outbound PSTN: 19건 (24%)
- Inbound PSTN: 13건 (17%)
8.6 통화 종료 사유 분포
- customer-ended-call: 51건 (정상 종료)
- sip-completed-call: 13건
- customer-did-not-answer: 7건
- silence-timed-out: 4건
- 기타 에러: 3건
8.7 Twilio Decommission 결정의 합리화 (면접용 핵심 논리)
통화당 단순 원가는 PSTN과 in-app이 거의 같습니다. 분당 단가가 모두 약 $0.10~0.11로 차이가 크지 않습니다.
결정의 진짜 이유는 두 가지: 1. Twilio는 Vapi 청구서 밖에서 별도 청구됩니다. 전화번호 월 임대료 + 분당 통화료가 Twilio 계정에 따로 청구되어, 무료 플랜에서는 verified caller(본인 번호)로만 발신할 수 있습니다. 2. 이 verified caller 제약이 외부 사용자 확장을 막는 가장 큰 병목이었습니다.
in-app 콜 전환은 두 제약을 동시에 해결합니다. Twilio 별도 청구 제거 + 누구나 브라우저로 사용 가능. 이미 통화의 59%가 WebCall인 만큼 사용자 적응 비용도 낮습니다.
8.3 통화 타입 분포
- WebCall (브라우저 in-app): 46건 (59%) — 이미 절반 이상이 in-app
- Outbound PSTN: 19건 (24%)
- Inbound PSTN: 13건 (17%)
8.4 통화 종료 사유 분포
- customer-ended-call: 51건 (정상 종료)
- sip-completed-call: 13건
- customer-did-not-answer: 7건
- silence-timed-out: 4건
- 기타 에러: 3건
8.5 Twilio Decommission 결정의 합리화 (면접용 핵심 논리)
통화당 단순 원가는 PSTN과 in-app이 거의 같습니다. WebCall이 분당 약 $0.10, Outbound PSTN이 분당 약 $0.11로 차이가 크지 않습니다.
결정의 진짜 이유는 두 가지: 1. Twilio는 Vapi 청구서 밖에서 별도 청구됩니다. 전화번호 월 임대료 + 분당 통화료가 Twilio 계정에 따로 청구되어, 무료 플랜에서는 verified caller(본인 번호)로만 발신할 수 있습니다. 2. 이 verified caller 제약이 외부 사용자 확장을 막는 가장 큰 병목이었습니다.
in-app 콜 전환은 두 제약을 동시에 해결합니다. Twilio 별도 청구 제거 + 누구나 브라우저로 사용 가능. 이미 통화의 59%가 WebCall인 만큼 사용자 적응 비용도 낮습니다.
9. 한계와 다음 단계 (D3·D4 답변 재료)
9.1 인프라 한계
| 한계 | 영향 | 해결 방향 |
|---|---|---|
| Twilio 무료 verified caller (현재 가장 큰 제약) | 본인 번호로만 발신 가능 → 외부 사용자 불가 | in-app 콜로 전환 (진행 중) — Twilio decommission 후 WebRTC 단일화 |
| Vercel Hobby cron 제약 | 자체 cron 사용 불가 | cron-job.org로 우회 (현재 운영 방식) |
| Tavily 무료 1,000/월 | 일 33건 제한 (현재는 충분) | 사용자 증가 시 유료 전환 |
| Vapi 14일 통화 보존 | 장기 운영 데이터 분석 어려움 | 통화 종료 시 transcript를 자체 DB에 저장 (이미 구현) |
9.2 프로덕트 한계
| 한계 | 의미 | 다음 액션 |
|---|---|---|
| 평가 객관성 (D3 핵심) | “좋은 피드백” 기준을 자의적으로 정할 수 없음 → OPIc 루브릭 채택으로 해결 | 다른 시험 (TOEIC Speaking, IELTS) 루브릭 추가 옵션화 |
| 트랜스크립트 정확도 | STT 오류가 피드백 품질에 그대로 전파 | 한국 영어 화자 특화 STT 평가, ElevenLabs vs Gladia A/B 비교 |
| 30단어 미만 통화 | feedback skip → 학습자에게 결과 부재 | 다음 통화 prompt에 “지난 통화는 짧았어요, 오늘은 좀 더 길게” 추가 검토 |
| 단일 사용자 검증 | 본인만 매일 사용 중. 다른 학습자 패턴 미검증 | in-app 콜 전환 후 베타 테스터 5~10명 모집 가능 |
9.3 위버스브레인과의 비교 한계 (D4 핵심)
- 24개월 약정 + 월 99,000원 구조라 맥스AI 직접 체험 불가
- 분석 근거: 공개 정보 + 사용자 후기
- 자기 객관화: “맥스AI가 갖춘 정규 커리큘럼·PT 모드·AI 아바타는 제 MVP에 없는 체계화된 요소”
10. 비즈니스·확장 가능성 (꼬리질문 대비)
10.1 통화 1회 실측 비용 (10분 학습 통화 기준, ≥10min 통화 3건의 분당 단가 환산)
- Vapi platform: ~$0.50 (45.5%)
- STT: ~$0.25 (23.0%)
- TTS: ~$0.18 (16.1%)
- LLM: ~$0.16 (14.9%)
- 10분 통화 합계: 약 $1.10 (약 1,500원)
- 15분 통화 합계: 약 $1.65 (약 2,300원)
분당 단가가 통화 길이와 무관하게 ~$0.11로 일정해 사용자별 학습 시간 기반 가격 설계가 용이합니다.
10.2 가능한 비즈니스 모델
| 모델 | 가격 | 타겟 | 마진 가정 |
|---|---|---|---|
| 무료 (1일 1회 5분) | $0 | 학습 동기 유발 | 광고/유료 전환 유입 |
| 베이직 (1일 1회 10분, 월 30회) | 월 ~$15 | 직장인 회화 유지 | 원가 ~$8, 마진 ~50% |
| 프로 (무제한 + 코칭) | 월 ~$40 | 시험 대비 학습자 | 원가 가변, 평균 ~50% |
| B2B (기업 영어 교육) | 학습자당 월 $25 | HR/L&D 부서 | LTV·계약 안정성 우선 |
10.3 확장 방향
- 언어 확장: Vapi와 GPT 모두 다국어 지원 → 일본어, 중국어로 기술 변경 최소
- 목적 확장: 일반 회화 → 비즈니스 회화 → 의료·금융 도메인 특화
- 포맷 확장: 음성 콜 → WebRTC 영상 → 아바타 영상 (B3 위버스브레인 답변과 동일 방향)
11. 위버스브레인 맥스AI와의 정밀 비교 (D4 심화)
11.1 동일한 점 (같은 방향의 문제 정의)
| 요소 | 맥스AI | calling-language |
|---|---|---|
| 예약 시간 콜 | ✅ | ✅ |
| AI와 실시간 음성 회화 | ✅ | ✅ |
| 통화 후 피드백 | ✅ | ✅ (OPIc 기반) |
| 학습 관리 | ✅ (밀착케어) | ✅ (LearnerProfile + open threads) |
| 영어 향상 = 핵심 KPI | ✅ | ✅ |
11.2 맥스AI가 갖춘, calling-language에 없는 것
- AI 아바타 (영상 인터페이스)
- 개인 영어 수준에 맞춘 정규 커리큘럼 (PT 모드) — 즉흥 회화를 넘어선 체계적 학습 경로
- 다수 사용자 동시 운영을 위한 인프라 (전화 인프라 자체 운영)
- LG U+ 협업 (통신사 인프라 안정성)
- 24개월 약정 = 장기 학습 리텐션 보장 비즈니스 모델
11.3 calling-language가 가진 차별 시도 (제 MVP의 강점)
- OPIc 12레벨 ACTFL 정렬 평가 — 자의적 평가 방지 디시플린
- 명시적 PRIVACY RULES — 학습자 민감 정보 하드 제외
- Daily Briefing 시스템 — 시사 컨텍스트 동적 주입 (LLM 지식 컷오프 우회)
- FIFO 메모리 캡 — 컨텍스트 비대화 방지 (10 sessions, 5 open threads)
- 실측 비용 분해 — 분당 $0.10 운영, Vapi 마크업 48% 인지
12. 자주 받을 꼬리질문 30개 + 답변 키 (요약)
문제 정의·기획 단계 (5)
- 페인을 어떻게 발견·검증했나? → EF 6개월 구독 + 본인 학습자 경험. 다른 학습자 인터뷰는 미진행 (한계 솔직 인정)
- 왜 다른 솔루션이 아닌 ’전화 콜’인가? → 학습 지속성. 앱 접속·푸시는 무시 가능, 전화는 강제력 있음
- 잠재 사용자 인터뷰는 했는가? → 미진행. 본인이 사용자라는 강점에 의존. 추후 베타 사용자 모집 시 보완 필요
- 경쟁 서비스 분석은? → EF, 스픽, 캠블리는 사용해봄. 맥스AI는 약정 구조로 미체험
- 왜 어학인가? → 본인이 학습자로 가장 깊이 경험한 영역 + 결과 즉시 측정 가능
구현·기술 단계 (8)
- Vapi는 왜? → Voice AI 전용. PSTN+WebRTC 동시 지원. STT/TTS/LLM 매니지드 묶음
- GPT-5.4 vs Claude? → Vapi 음성 대화에서 latency·자연스러움 면 GPT-5.4가 우위. 단, 정밀 평가(OPIc)는 Claude Sonnet 4.6 사용 — 모델 분리 사용이 핵심
- Sonnet/Haiku 분리 이유? → 비용. 정형 작업(프로필 추출, 뉴스 큐레이션)은 Haiku로 충분
- ElevenLabs STT/TTS 선택 근거? → 영어 화자 정확도 + 저지연. Gladia를 한국어 코드 스위칭 fallback으로 추가
- Prisma 선택 이유? → 학부 DB 수업 + 오뚜기 데이터 구축 경험. MVP 스키마 변경에 migration 효율적
- Next.js + Vercel 선택? → 풀스택 한 프레임워크. Vercel Hobby로 무료 시작
- Claude Code와 어떻게 협업했나? → 아키텍처·스키마는 직접, 보일러플레이트·디버깅은 Claude Code
- 가장 어려웠던 기술 의사결정? → Memory 시스템 설계 (FIFO 캡, MERGE 룰, PRIVACY RULES 위치)
비용·운영 (4)
- 통화 1회 비용? → 분당 단가 ~$0.11 일정. 10분 학습 통화 약 $1.10 (~1,500원), 15분 약 $1.65 (~2,300원). Vapi 마크업이 약 45%로 가장 큼
- Twilio를 왜 빼는가? → 이미 답변 준비됨 — Vapi 청구서 밖 별도 청구 + verified caller 제약. in-app 콜로 전환
- GPT-5.4 캐시 히트율 51%는 무엇이 캐시되나? → 시스템 프롬프트(ALEX_BASE + Memory + Briefing)는 통화 단위로 안정적이라 입력 토큰의 절반이 캐시 적중. 비용 직접 절감
- 운영 데이터를 어떻게 모니터링하나? → Vapi MCP를 Composio에 연결해 통화량·비용·breakdown을 직접 조회 (실제로 면접 준비 과정에서 활용)
제품·UX 단계 (5)
- 온보딩 어떻게 설계? → 이메일·이름·전화·영어 레벨·타임존 → 일정 스케줄링 (5분 내)
- 통화 첫 메시지? → open_threads[0] 있으면 “지난번 X 어땠어요?”, 없으면 일반 인사
- OPIc 12레벨을 왜 다 썼나? → ACTFL 표준 그대로 정렬. 단순화하면 평가 디테일 손실
- 30단어 미만 통화는? → feedback skip + feedbackError 마킹. 학습자 알림은 추후 과제
- 사용자에게 피드백 어떻게 전달? → 웹 앱에서 통화 기록과 함께 표시 (한국어 rationale + 영어 quote)
사용자·검증 단계 (4)
- 본인 외 다른 사용자? → 없음. Twilio verified caller 제약. 한계 인정. in-app 콜 전환이 외부 베타 사용자 모집의 전제조건
- 매일 사용하면서 발견한 가장 큰 개선점? → 평가 객관성 → OPIc로 해결 (D3 핵심)
- 어떤 가설이 맞고 틀렸나? → “전화의 강제력이 지속성을 만든다” = 맞음 / “10분이면 충분” = 사람마다 다름, 25분 헤드룸 추가
- 사용 중 가장 만족 / 가장 아쉬운 순간? → 만족: open_threads로 다음 통화가 자연스럽게 이어짐 / 아쉬움: STT 오류로 본인 발화가 잘못 인식될 때
한계·자기 비판 (4)
- 가장 큰 한계? → 평가 객관성 (D3) + 다른 사용자 미검증 (Twilio 제거 후 해결 예정)
- 맥스AI 대비 부족한 점? → 정규 커리큘럼·PT 모드·아바타·B2B 인프라
- 다시 만든다면? → 처음부터 in-app 콜로 시작 + 더 일찍 사용자 인터뷰 진행
- 앞으로 가장 먼저 추가할 기능 한 가지? → in-app WebRTC 콜 단일화 (Twilio 제거) → 베타 사용자 모집 → 그들의 피드백 기반 PT 모드 도입
13. 면접 답변에서 calling-language를 쓰는 핵심 원칙
- 항상 사용자 가치(why)에서 출발 → 기술 스택은 그 다음 (질문이 와도 What→Why→How 순서)
- 솔직한 한계 인정 → 다음 단계 제시로 마무리 (방어보다 분석자 톤)
- “같은 방향의 문제 정의” 프레이밍 일관 사용 → A1·A2·D2·D4·B2 모두에서 등장 → 이 답변에서도 동일 어휘 사용
- OPIc는 “객관성을 사고한 흔적”, Memory 시스템은 “개인화를 시스템으로 푼 흔적”, Daily Briefing은 “LLM 한계를 우회한 흔적”, Twilio decommission은 “운영 데이터로 의사결정한 흔적” — 각각 한 가지 사고 능력의 증거
- “매일 사용 중”은 모든 답변에서 사용 가능한 카드 — 단, 남발하지 말 것 (D1, B4 정도에서 1회씩)
- 실측 비용 데이터는 강력한 신뢰 신호 — “10분 통화 ~1,500원, 분당 단가 일정” 같은 구체 수치는 “운영하는 사람”의 언어