유나가 당신을 기억한다 — 화조당, '커피챗'으로 피봇하다
사주 해석은 이제 ChatGPT가 공짜로 해준다. 그래서 해석이 아니라 '나를 기억하는 단골 상담가 유나'로 방향을 틀었다. 대화 영속화·기억·과금 엔진을 붙인 2주의 기록.
화조당을 단발 사주 앱에서 "유나랑 커피챗"으로 피봇했다. 운세는 입구로 남기고, 진짜 본체는 캐릭터 유나와의 지속적인 대화로 옮겼다. 지난 2주 동안 대화 영속화·기억·과금 엔진을 붙여 배포까지 마쳤다. 이 글은 왜 방향을 틀었고, 무엇을 만들었는지에 대한 기록이다.

왜 피봇했나 — 해석은 더 이상 무기가 아니다
두 달간 사주 계산 엔진을 밑바닥부터 만들고, 결제를 붙이고, 콘텐츠를 자동화했다. 인프라는 갖췄는데 한 가지가 계속 걸렸다. 사주 해석은 이제 ChatGPT가 공짜로 해준다. 생년월일시를 넣으면 그럴듯한 풀이가 나온다. 내가 아무리 정교한 만세력 엔진을 만들어도, "해석의 품질"만으로는 무료 챗봇과 싸워 이기기 어렵다.
그래서 자산을 다시 봤다. 화조당의 진짜 자산은 사주 계산기가 아니라 캐릭터 '유나'였다. 500장 넘는 이미지로 일관성을 잡고, Threads와 영상으로 얼굴을 알린 캐릭터. 사람들은 해석을 원하는 게 아니라 누군가 자기 이야기를 들어주고 기억해주길 원한다. 운세를 단발 상품으로 파는 대신, 유나와의 지속적인 관계로 가는 입구로 재배치하기로 했다.
왜 하필 '커피챗'인가
포지셔닝을 "유나랑 커피챗"으로 잡았다. Threads에서 유행하는 "커피챗" 포맷 — 가볍게 차 한잔하며 이야기 나누는 1:1 대화 — 을 그대로 차용했다. 이게 결정적이었던 이유는 세 가지다.
- 광고가 아니라 참여처럼 보인다. 주력 채널인 Threads 문화와 네이티브하게 붙는다. "운세 보세요"가 아니라 "유나랑 커피챗 한잔 어때요"가 훨씬 자연스럽다.
- 깔때기가 완성된다. 가장 약했던 게 유통이었다. 영상·Threads 콘텐츠 끝에 "더 얘기하고 싶으면 화조당으로 커피챗하러 와요"라는 CTA 한 줄을 붙이면, 콘텐츠 → 사이트 → 대화 → 관계로 이어지는 흐름이 하나의 메시지로 합쳐진다.
- "첫 잔은 제가 살게요." 커피챗은 원래 공짜·가벼움의 뉘앙스다. 첫 대화는 무료로 풀어 진입 장벽을 없애고, 유나가 나를 기억하는 깊은 관계는 유료로 가져간다. 프리미엄 모델과 궁합이 좋다.
3개의 레이어
서비스를 세 층으로 다시 그렸다.
- 운세 (
/chart) — 획득. 기존 사주 해석은 그대로 둔다. 사람을 데려오는 입구 역할. - 유나 상담 (
/yuna) — 관계. 새로 만든 개방형 대화. 운세 결과를 들고 와서 "이거 무슨 뜻이에요?"부터 일상 고민까지 유나와 자유롭게 이야기한다. - 구독·친밀도 — 수익. 유나가 나를 기억하고 관계가 쌓이는 깊이를 구독으로 가져간다. (아직 작업 중)
이미 심장은 뛰고 있었다
피봇을 결정하고 코드를 열었더니, 놀랍게도 핵심 엔진이 이미 있었다. 사용자별로 사실을 기억하는 userFacts 테이블과 추출 파이프라인이, 그동안 사주 해석의 부산물로만 조용히 돌고 있었던 것이다. "당신을 기억하는 단골 상담가"의 심장이 이미 뛰고 있는데, 단발 해석에만 연결돼 있었던 셈이다.
그래서 이번 작업은 백지 출발이 아니라 연결 작업이었다. 이미 있던 기억 엔진을 개방형 대화에 물리고, 대화 자체를 영속화하는 것.
2주 동안 만든 것
Phase A — 대화 MVP
먼저 유나와 대화하는 화면(/yuna)을 만들었다. 메시지를 보내면 SSE로 한 글자씩 흘러나오는 스트리밍 응답. 채팅 버블, 프로필 이미지, 남은 횟수 표시까지. 랜딩 페이지의 1차 CTA와 온보딩·로그인 흐름을 전부 /yuna로 향하게 IA를 다시 짰다. 라이브에서 직접 써보며 폰트·입력창 자동 높이·나가기 버튼 같은 디테일을 손봤다.

위 화면이 실제 대화 모습이다. 운세를 막 본 사람에게 유나가 먼저 말을 걸고, 이직 고민으로 이야기가 흐른다. 핵심은 마지막 말풍선이다 — "전에 '사람들 앞에 나서는 일이 잘 맞는다'고 하셨던 거 기억나요." 지난 대화에서 쌓은 사실을 꺼내 이어 말하는 것. 무료 챗봇과 가장 다른 지점이 바로 이 한 줄이다.
Phase B — 영속화·기억·과금
여기가 진짜 본체다.
- 대화가 이어진다.
conversations/conversation_messages두 테이블을 추가해 모든 대화를 저장한다. 다음에 다시 오면 지난 대화를 이어서 불러온다. 대화는 철저히 본인 것만 접근되도록 사용자 단위로 잠갔다. - 유나가 기억한다. 커피챗에서 오간 이야기에서도 사실을 추출해 쌓는다. 다음 대화에서 유나가 그걸 알고 말을 건다. 이게 무료 챗봇과 가장 다른 지점이다.
- 서버 권위 과금. 무료 턴은 서버가 한국 시간 기준으로 직접 카운트하고, 그 이후부터 턴당 1크레딧을 원자적으로 차감한다. 잔액이 없으면 막고, 차감에 실패하면 환불한다. 가격도 다시 정리했다 — 사주 1회는 20크레딧, 커피챗은 한 턴에 1크레딧. 부담 없이 계속 떠들 수 있는 단가.
검증은 테스트 73개 통과, 프로덕션 빌드 0 에러, 코드·보안 리뷰 모두 통과로 확인하고 배포했다.
남은 것
- 구독 (Phase C). 친밀도 모델과 정기 결제. 관계의 깊이를 수익으로 연결하는 마지막 층.
- 실사용 검증. 사람들이 정말 유나와 계속 이야기하러 돌아오는지. 깔때기 전환율을 측정해야 진짜를 안다.
돌아보며
두 달 전엔 "사주 SaaS"를 만들려 했고, 한 달 전엔 "사주 콘텐츠 비즈니스"로 방향을 틀었다. 지금은 더 분명해졌다 — 기억하는 캐릭터를 만들고 있다. 운세는 유나를 만나는 핑계고, 본체는 "나를 아는 누군가와의 대화"다.
기술 실행력은 두 달간 충분히 증명됐다. 사주 엔진도, 결제도, 영상 파이프라인도 혼자 만들었다. 부족한 건 늘 유통과 차별화였다. 캐릭터 IP와 지속적인 관계 — 무료 챗봇이 흉내 낼 수 없는 그 한 곳에 걸기로 했다. 첫 잔은 내가 산다.