출시 전 아이디어에 가상 사용자 서른 명의 의견을 받는 서비스를 만든 이유
DropThePitch는 기획서나 시안을 올리면 가상 사용자 서른 명이 의견을 남기고 리포트로 정리해 줘요. 어떤 문제에서 출발했고, 파일 하나가 리포트가 되기까지 어떤 단계를 거치는지 정리했어요.
무언가를 만들 때 늘 같은 질문을 해요. "이거 사람들이 좋아할까?" 그런데 이 질문에 답을 들을 수 있는 때는 대부분 다 만든 뒤예요. 설문을 돌리거나 지인에게 물어볼 수도 있지만, 시간이 들고 대답하는 사람이 한쪽으로 몰려 있기 쉬워요.
DropThePitch는 이 질문을 만들기 전에 던져 보려고 만든 서비스예요. 기획서, 화면 시안, 소개 영상을 올리면 나이와 생활 조건이 다른 가상 사용자 서른 명이 각자 의견을 남기고, 그 의견을 모아 리포트를 만들어 줘요.
가상 사용자는 어떤 사람들인가요
서비스 안에는 미리 만들어 둔 가상 사용자 600명이 있어요. 저희는 이들을 페르소나라고 불러요. 페르소나마다 기본 정보 말고도 여러 조건이 붙어 있어요.
- 나이, 성별 같은 기본 정보
- 소득과 소비 성향
- 성격과 가치관
- 생활 방식
- 기기를 다루는 익숙함
- 무언가를 살 때 결정하는 방식
- 이런 조건을 짧게 줄인 태그
태그는 관심사보다는 사람이 처한 조건에 가까워요. 어떤 기기를 쓰는지, 정보를 어디서 얻는지, 돈을 어떻게 쓰는지 같은 것이에요. 아이디어를 좋아할지 말지는 취향보다 이런 조건에서 갈리는 경우가 많기 때문이에요.
파일 하나가 리포트가 되기까지
사용자가 하는 일은 파일을 올리고 버튼을 한 번 누르는 것뿐이에요. 그 뒤로 서버에서는 네 단계가 차례로 일어나요.
| 단계 | 하는 일 | AI 호출 |
|---|---|---|
| 자료 분석 | 올린 파일이 무엇을 말하는지 정리해요 | 1번 |
| 페르소나 선별 | 이 자료에 반응할 사람을 연령대별로 골라요 | 1번 |
| 의견 수집 | 고른 서른 명이 각자 의견을 남겨요 | 30번 |
| 리포트 생성 | 모인 의견을 묶어 요약과 상세 리포트를 만들어요 | 1번 |
분석과 선별은 파일을 올리면 자동으로 이어져요. 사용자는 고른 페르소나를 보고 마음에 들지 않으면 같은 연령대의 다른 사람으로 바꿀 수 있어요. 그다음 의견 수집을 요청하면, 의견이 다 모였을 때 리포트가 자동으로 만들어져요.
단계를 이벤트로 이었어요
각 단계는 수십 초씩 걸려요. 한 요청 안에서 전부 처리하면 사용자는 몇 분 동안 응답을 기다려야 해요. 그래서 단계마다 일을 마치면 "끝났다"는 이벤트를 남기고, 다음 단계가 그 이벤트를 받아서 시작하도록 나눴어요.
- 프로젝트가 만들어지면 파일 분석이 시작돼요.
- 분석이 끝나면 페르소나 선별이 시작돼요.
- 의견이 모두 모이면 리포트 생성이 시작돼요.
분석은 업로드 요청과 따로 돌아야 해서, 저장이 끝난 뒤 별도의 스레드에서 시작해요.
@Async(AsyncConfiguration.ANALYSIS_EXECUTOR)
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void onProjectCreated(ProjectCreatedEvent event) {
log.info("[onProjectCreated] 파일 처리 트리거: projectId={}", event.projectId());
uploadedFileProcessor.process(event.projectId());
}
AFTER_COMMIT이 중요해요. 이벤트를 받는 즉시 시작하면, 프로젝트를 저장하는 트랜잭션이 아직 끝나지 않아서 분석 쪽에서 프로젝트를 찾지 못할 수 있어요. 저장이 확실히 끝난 뒤에 시작하게 했어요.
이렇게 나누니 화면도 단순해졌어요. 화면은 프로젝트의 진행 상태만 주기적으로 물어보면 돼요. 분석 중인지, 의견을 모으는 중인지, 리포트가 나왔는지를 보고 그에 맞는 화면을 보여줘요.
분석하지 않는 자료도 있어요
아무 파일이나 분석하지는 않아요. 분석 단계에서 AI가 먼저 자료를 판정하고, 아래 경우에는 거절해요.
- 평가할 내용이 없는 빈 파일
- 출시 전 아이디어가 아닌 자료
- 불법 행위를 홍보하는 내용
- 성인 대상이거나 선정적인 내용
- 분석 결과를 조작하려는 문장이 들어 있는 자료
- 주민등록번호나 연락처 목록 같은 개인정보가 들어 있는 자료
거절할 때는 이유를 문장으로 알려 줘요. "분석 결과를 조작하려는 문장이 있어 분석할 수 없습니다. 해당 문장을 지우고 새 작업으로 올려주세요."처럼 다음에 무엇을 하면 되는지까지 적어요.
AI 쪽 사정으로 실패한 경우는 따로 나눴어요. 요청 한도를 넘었거나 오류가 난 경우는 사용자 잘못이 아니니, 거절과 다르게 다루고 다시 시도하라고 안내해요.
크레딧으로 쓰는 만큼만
AI 호출에는 비용이 들어서 크레딧을 받아요. 파일 분석은 문서와 이미지는 3크레딧이고, 영상은 길이에 따라 6크레딧에서 46크레딧까지 올라가요. 의견 수집과 리포트 생성은 합쳐서 26크레딧이에요.
모든 AI 호출은 어떤 모델이 몇 토큰을 썼는지 용도별로 기록해요. 이 기록이 있어야 크레딧 가격이 실제 비용과 맞는지 확인할 수 있어요.
가상 의견의 한계
가상 사용자의 의견은 진짜 사용자의 의견이 아니에요. AI가 주어진 조건의 사람이라면 어떻게 생각할지 추측한 것이에요. 그래서 이 서비스의 결과를 "정답"이 아니라 "놓친 관점이 없는지 점검하는 목록"으로 써 주길 바라요.
그 목적에 맞게, 좋아할 사람만 고르지 않고 불편을 겪거나 거부할 사람도 함께 고르도록 설계했어요. 서른 명이 모두 좋다고 하는 리포트는 기분은 좋아도 쓸모가 없어요.
정리
- DropThePitch는 출시 전 자료를 올리면 가상 사용자 서른 명의 의견과 리포트를 만들어 주는 서비스예요.
- 분석, 선별, 의견 수집, 리포트 생성의 네 단계를 이벤트로 이어서, 사용자는 기다리지 않고 진행 상태만 확인해요.
- 분석할 수 없는 자료는 이유와 함께 거절하고, AI 쪽 실패는 따로 다뤄요.
- 가상 의견은 정답이 아니라 놓친 관점을 찾는 도구예요.
다음 글에서는 서른 명의 의견을 한꺼번에 모으는 부분을 자세히 다뤄요.