Appearance
신규 유저 첫 프롤로그/첫 씬 생성 전환 개선 PRD
Backlog grooming 단계의 산출물. 무엇을 만들지·왜 만들지·핵심 비즈니스 룰을 정의한다. 화면별 디테일(컴포넌트·상태·인터랙션)은 spec.md로.
Status: ready for handoff Created: 2026-06-01 Last updated: 2026-06-16 Linear (메인 이슈): DEE-295Linear Project: [앱] 신규 유저 첫 프롤로그/첫 씬 생성 전환 개선Author: agent (prd-writer) 앱/웹/스튜디오: 앱
2026-06-04 통합: 본 PRD는 신규 유저의 첫 프롤로그 경험 → 첫 씬 생성 전환 개선을 하나의 기능 단위로 다룬다. 광고 유입 유저와 오가닉/매칭 없음 신규 디바이스 유저를 별도 프로젝트가 아니라 유입 소스·매칭 상태 분기로 통합한다. 이전에 광고(메인 이슈 DEE-295)·오가닉(DEE-308 + 별도 PRD)으로 나눴던 분리는 본 통합 PRD로 대체(superseded) 되었다. Linear 메인 이슈/프로젝트 명칭 정리는 별도로 진행한다. 분기 정의는 §1.4·§3, 통합 이력·소스 비교는 §8.
Reversal Risk Summary
| Layer | R-level | Review focus |
|---|---|---|
| Policy / Rule | R2 | 광고 분기에서 가입 전 프롤로그를 어디까지 열어줄지(프롤로그 끝/첫 씬 생성 직전 가입 월) 정책 + 오가닉/매칭 없음 분기의 진입 동선을 "추천 모달 분기"에서 "로그인 전 어드민 후보 3개 → 선택 → 프롤로그 → 첫 씬 직전 가입"으로 바꾸는 정책. 출시 후 플래그로 조정 가능하나 실험 설계·가드레일과 묶여 있어 출시 전 확정 필요 |
| Data / Backend | R3 | 현재 게스트/익명 세션이 없음 (로그인 월). 광고 분기의 가입 전 프롤로그 read 경로가 인증/세션 아키텍처를 건드려 되돌림 비용 큼(R3). 광고↔콘텐츠 매핑(Airbridge), 로그인 전 디바이스 가입 이력 1차 판정·어드민 후보 관리(R2)가 추가 백엔드 작업 |
| User-facing Surface | R2 | 신규 유저 진입 시퀀스 재배치 — 광고 유입 딥링크 직후 / 오가닉·매칭 없음 신규 디바이스의 로그인 전 후보 선택. 기존 온보딩 시퀀스(웰컴 스타·신규 추천 모달)와의 순서 충돌 조정 |
| Copy / Visual Presentation | R1 | 프롤로그 경험 화면·가입 유도 CTA·후보 제시·씬 생성 시점 스타 안내 문구는 출시 후 빠르게 조정 가능 |
로그인 전 디바이스 가입 이력 1차 판정은 재설치·멀티디바이스·기존 계정 로그인과 충돌할 수 있다. 판정 시점·중복방지 룰은 §4·§7에서 별도 확인한다.
1. 목표 및 배경
1.1 문제
신규 유저가 가입/진입 직후 무료 가치(프롤로그)를 경험하고 첫 씬을 생성하기까지의 동선이 약하다. 유입 소스별로 끊기는 지점이 다르다:
- 광고 유입 미로그인 유저: 광고에서 본 특정 콘텐츠를 기대하고 앱을 열지만, 그 콘텐츠를 한 번도 경험하기 전에 OAuth 로그인/가입 월을 먼저 통과해야 한다. 광고로 만들어진 기대가 가입 동기로 이어지기 전에 끊기고, 가입을 완료해도 같은 콘텐츠 맥락이 연결되지 않는다.
- 오가닉/광고 매칭 없음 신규 디바이스 유저: 광고 매칭 컨텍스트가 없어, 현행은 가입 후 웰컴 스타 모달 → 신규 추천 모달 → 홈/플레이로 분기되며 무료 가치 경험(프롤로그)과 첫 씬 생성까지의 동선이 흩어진다.
두 경우 모두 가입/진입 이후 첫 씬 생성까지의 활성화 퍼널이 약하다는 같은 문제로 수렴한다.
1.2 목표
공통 목표: 유입 소스와 무관하게 신규 유저를 첫 프롤로그 경험 → 첫 씬 생성까지 더 빠르게 잇는다.
- 신규 유저에게 프롤로그(무료 가치)를 가능한 한 앞당겨 경험시킨다.
- 온보딩에서 비주얼 선호(preferred visual type) 를 받아 후보·추천의 개인화 입력값으로 쓴다.
- 프롤로그 직후 첫 씬 생성으로 자연스럽게 잇는다 (필요한 분기에서는 가장 동기 높은 순간에 가입을 유도).
- 첫 씬 생성 전 handoff에서 웰컴 스타를 안내·수령하게 해 결제 없이 활성화시킨다.
- 이미 가입한 기존 유저 중 비주얼 선호가 없는 유저에게는 업데이트 이후 첫 앱 진입 시 필수
VisualtypeSurveybottomsheet를 제공해 추천 품질을 보강한다.
유입 소스(광고/오가닉)는 이 공통 목표를 달성하기 위한 진입 조건 분기일 뿐, 별도 기능이 아니다 (§1.4·§3).
1.3 핵심 근거
- 전환 개선 여지: 가입 → 첫 씬 생성 완료 전환은 약 47%, 첫 씬 생성까지 약 50분이다. 활성화까지 가는 비율·속도 모두 개선 여지가 크다.
- 리텐션 연결: D0 첫 씬 생성 유저의 D1 리텐션은 **18.6%**로 미생성 유저 **9.8%**의 약 2배 — 첫 씬 생성은 다음날 재방문의 강한 선행 지표다.
- 유입 모수: 최근 신규 유저의 약 **78%**가 유료 광고 유입 → 광고 분기 도달 모수가 충분히 크고, 나머지 오가닉 신규도 같은 활성화 레버(프롤로그→첫 씬)를 공유한다.
- 프롤로그의 제품 특성: 프롤로그 scene은 user input 없는 무료 scene(스타 차감·turn 아님)이라 가입/결제 전 가치 선경험 후보로 적합하다.
- 왜 지금: 6월 Product Focus("가입한 유저가 다음날 들어올 이유를 만든다")의 직접 레버가 첫 씬 생성 활성화다.
1.4 해결 방향 — 공통 목표 + 유입 소스 분기
진입 시 유입 소스/판정에 따라 분기하되, 프롤로그 → 첫 씬 생성 → 웰컴 스타(signup_reward) 지급의 활성화 코어는 공유한다.
A. 광고 유입 미로그인 분기 — 유효한 Airbridge deep link/deferred deep link payload + 에피소드 매칭이 확인되면, 가입 전 매칭 에피소드 프롤로그를 먼저 보여준다 → 첫 씬 생성 직전 가입 유도 → 가입/온보딩 후 **같은 에피소드의 마지막 프레임(첫 씬 생성 직전)**으로 복귀(복원 불가 시 안전한 player 위치 폴백) → 첫 씬 생성.
B. 오가닉/매칭 없음 신규 디바이스 분기 — 광고 매칭이 없는 진입은 로그인 전에 디바이스 가입 이력 1차 판정 후, 신규 디바이스이면 어드민이 큐레이션한 후보 에피소드(기본 3개) 를 먼저 제시 → 유저가 고른 에피소드의 비로그인 프롤로그 진입 → 첫 씬 생성 직전 가입 유도 → 가입/온보딩 후 같은 에피소드의 마지막 프레임(복원 불가 시 안전한 player 위치 폴백)으로 복귀해 첫 씬 생성. 온보딩에는 기존 닉네임/성별/생년월일/장르에 비주얼 선호 수집을 추가해 이후 후보·추천 개인화에 사용한다.
C. 광고 매칭 없음/무효 분기 — 광고 attribution은 있으나 유효 payload·에피소드 매칭이 없거나 매칭 에피소드가 비공개·삭제이거나 성인 전용(ADULTS_ONLY)이라 유저가 접근 불가이면, 광고 매칭 프롤로그를 띄우지 않고, 디바이스 신규 자격이 되면 로그인 전 후보 제시 폴백으로 보낸다. 즉 분기 C는 분기 B로 합류한다.
- 광고 분기(A)의 가입 후 복귀 목적지는 씬 생성 의도(
return_intent=create_scene)인 경우 **같은 에피소드의 마지막 프레임(첫 씬 생성 직전)**이다. 마지막 프레임 복원이 불가하면 안전한 player 위치로 폴백하고, 임의 생성을 진행하지 않는다. 복귀 컨텍스트는 BE resume token 없이 FE 로컬 상태로만 보존한다. - 기존 유저 선호 보강은 신규 가입 프롤로그 funnel과 분리한다. 로그인된 기존 유저가 업데이트 이후 첫 앱 진입을 했고
VisualtypeSurvey완료 이력이 없으면, 앱의 원래 목적지 위에 필수 bottomsheet를 노출한다. 비주얼 타입 1개 이상 선택 전까지완료CTA는 비활성화하며, bottomsheet는 drag down/dim tap/system back 등으로 강제 dismiss할 수 없다. 완료 시preferred_visual_types를 저장하고 원래 앱 진입 목적지로 이동/복귀한다.
1.5 성공 지표
공통 코어 지표를 유입 소스(entry_source)·광고 매칭 상태(ad_match_status) 로 분해해 측정한다. entry_source ∈ {ad, organic}, ad_match_status ∈ {matched, no_match, read_failed, n/a}. 모든 지표는 실험군 vs 대조군.
| 지표 | 현재 | 목표 | 측정 방법 |
|---|---|---|---|
| 신규 유저 → 첫 씬 생성 전환율 (메인, 공통) | 가입→첫 씬 ~47% | 상승 (+5%p 이상) | 첫 씬 생성 유저 / 신규 진입, entry_source로 분해 |
| 가입 완료율 (component & 가드레일) | 산출 필요 | 미하락 | 가입 완료 / 진입, entry_source 분해 |
| 가입 완료 → 첫 씬 생성 전환율 (component) | ~47% | +5%p 이상 | 첫 씬 생성 / 가입 완료, 소스 분해 |
| 첫 씬 생성까지 소요 시간 (보조) | 약 50분 | 단축 | 진입/가입 ~ 첫 씬 생성 타임스탬프 차 |
| 신규 유저 D1 리텐션 (보조 outcome) | ~13%(광고) / 산출 필요(오가닉) | 상승 | D1 재방문 / 신규 가입, 소스 분해 |
| 광고 매칭율 (광고 분기 진단) | 산출 필요 | — | 매칭 콘텐츠 노출 / 광고 진입, ad_match_status |
| 후보 노출 → 선택률 (오가닉 분기 진단) | 산출 필요 | 상승 | 후보 선택 / 후보 노출 |
| 홈 진입률 (오가닉 가드레일) | 산출 필요 | 미하락 | 후보·프롤로그 동선이 홈 도달/이탈을 악화하지 않는지 |
- 메인 지표는 공통 = 신규 유저 → 첫 씬 생성 전환율이며,
entry_source(ad/organic)·ad_match_status(matched/no_match/read_failed/n/a)로 분해해 소스별 효과를 본다. 소스별 메인 PRD를 따로 두지 않는다. - 광고 분기는 추가로 end-to-end(광고 오픈/디퍼드 딥링크 오픈 → 첫 씬 생성)로도 본다 — 가입 게이트 이탈과 가입 후 활성화 이탈을 모두 포함.
- component 목표(가입 완료 → 첫 씬 생성 +5%p)는 선행 「신규 유저 에피소드 추천 기능」 PRD의 동일 구간 가설(47% → 52~56%)을 기준으로 둔다.
- 가드레일: 가입 완료율 미하락, 기존 회원 로그인 UX 미회귀, 오가닉 홈 진입 미악화.
2. 타깃 사용자
2.1 주요 사용자 (유입 소스 분기)
- 광고 딥링크 유입 미로그인 유저 (앱, OAuth 미통과) — 분기 A. 식별 기준: Airbridge deep link open callback 또는 deferred deep link payload로 캠페인·크리에이티브가 식별되고, 그에 매칭되는 에피소드 컨텍스트가 있는 미로그인 진입. 단순 paid attribution만 있고 딥링크 payload가 없으면 분기 C(→ B 폴백).
- 오가닉/매칭 없음 신규 디바이스 유저 (앱, 로그인 전 디바이스 기준 신규) — 분기 B. 광고 매칭 없이, 디바이스에 기존 이용 흔적이 없는 것으로 1차 판정된 신규 디바이스. 로그인 전 후보 제시·비로그인 프롤로그 대상.
- OAuth 제약: 로그인=가입 겸용 OAuth라 OAuth 전에는 신규/기존 구분이 불가하다. 광고 분기는 콘텐츠 컨텍스트가 있어 "신원 미상 유저용 광고 콘텐츠 프리뷰"로 가입 전 프롤로그를 정당화할 수 있다. 컨텍스트 없는 오가닉은 디바이스 가입 이력 1차 판정 후 로그인 전 후보 선택으로 먼저 무료 가치를 보여주되, 첫 씬 생성은 OAuth/가입/온보딩 후에만 허용한다 (§1.4·§3·§8).
2.2 범위 밖
- 가입 후 앱 첫 진입(사실상 기존 유저), 재설치/재로그인 유저, 이미 가입한 유저의 프롤로그 선노출·후보 선택 전환 개선. 단, 기존 유저 중 비주얼 선호가 없는 유저에게 선호를 받는 별도 루트는 본 범위에 포함한다.
- 디바이스에 기존 이용 흔적이 있는 유저·기존 회원 로그인의 프롤로그/후보 선노출.
2.3 핵심 시나리오
- (광고) 광고를 본 미로그인 유저가 앱을 설치·진입(디퍼드 딥링크)하면, 그 광고와 매칭된 에피소드의 프롤로그를 가입 없이 바로 경험하고, 이어서 진행하려는 순간 가입 → 가입/온보딩 완료 직후 **같은 에피소드의 마지막 프레임(첫 씬 생성 직전)**으로 복귀해 첫 씬 생성으로 잇는다(복원 불가 시 안전한 player 위치 폴백).
- (오가닉/매칭 없음) 광고 매칭이 없는 신규 디바이스 유저는 로그인 전 어드민 큐레이션 후보 에피소드 3개 중 하나를 고르고, 그 프롤로그를 비로그인으로 먼저 경험한 뒤 첫 씬 생성 직전 가입한다. 가입/온보딩 완료 후 같은 에피소드 마지막 프레임(복원 불가 시 안전한 player 위치 폴백)으로 복귀해 첫 씬 생성으로 잇는다.
- (광고 매칭 없음/접근 불가) 광고 attribution은 있으나 매칭 payload·에피소드가 없거나 비공개·삭제이거나 성인 전용(ADULTS_ONLY)이라 유저가 접근 불가하면, 광고 매칭 프롤로그를 띄우지 않고 접근 가능한 로그인 전 후보 제시(분기 B)로 폴백한다.
- (가드레일) 기존 가입 이력이 있는 디바이스 ID로 판정되면 광고 프롤로그 프리뷰와 후보 선택을 모두 띄우지 않고 기존 로그인/딥링크 정책을 따른다. OAuth 후 기존 회원 판정도 동일 정책으로 흡수한다.
- (기존 유저 선호 수집) 이미 가입한 유저가 로그인된 상태로 업데이트 이후 첫 앱 진입을 했고
preferred_visual_types또는VisualtypeSurvey완료 이력이 없으면, 앱의 원래 목적지 위에 필수VisualtypeSurveybottomsheet를 노출한다. 비주얼 타입 1개 이상 선택 전까지완료CTA는 disabled이며, drag down/dim tap/system back으로 강제 dismiss할 수 없다. 완료 후 같은 프로필 필드에 저장하고 원래 앱 진입 목적지로 이동/복귀한다.
3. 핵심 기능 요구사항
§3-1 A·B·C는 광고 분기, D는 오가닉 분기, E·F는 공통(첫 씬 생성·스타 / 가드레일). 분기 C(광고 매칭 없음)는 D로 합류한다.
3-1. 클라이언트 (앱)
A. [광고 분기] 가입 전 광고 콘텐츠 프롤로그 경험
- 주요 동작: Airbridge deep link/deferred deep link payload를 받은 미로그인 유저가 진입 직후, 가입 없이 광고에 매칭된 에피소드의 프롤로그를 경험한다.
- 비즈니스 룰:
- 대상은 Airbridge deep link open callback 또는 deferred deep link payload로 콘텐츠 매칭이 식별되는 미로그인 진입에 한정한다. 매칭이 없으면 가입 전 프롤로그를 띄우지 않는다(→ D 폴백).
- paid attribution 단독 트리거 금지: 유료 광고로 잡혔더라도 deep link/deferred deep link callback payload가 없거나 payload 안에 캠페인·크리에이티브·에피소드 매칭값이 없으면 본 동작을 트리거하지 않는다.
- 프롤로그까지만 무료·비로그인으로 연다. 프롤로그는 user input 없는 무료 scene이므로 credit·계정 없이 렌더한다.
- 프롤로그를 넘어서는 첫 행동(첫 씬 생성 = credit이 필요한 첫 turn)에 도달하면 가입 월로 전환한다(B).
- 콘텐츠 선정(v1): 광고 크리에이티브/캠페인/디퍼드 딥링크 ↔ 에피소드 매핑 한 가지. 운영이 관리하는 매핑 테이블.
- 상태별 동작:
- 광고 매칭 성공 → 매칭 에피소드 프롤로그.
- 광고 매칭 실패/컨텍스트 없음/매칭 에피소드 비공개·삭제 → 광고 프롤로그 미노출, 로그인 전 후보 제시(D)로 폴백.
- 매칭 에피소드가 성인 전용(ADULTS_ONLY)이고 유저가 접근 불가(미성년/성인 미인증) → 광고 프롤로그 미노출, 로그인 전 후보 제시(D)로 폴백(후보는 접근 가능한 에피소드 기준). 성인 접근 정책 자체는 기존
adultVerifiedAt → isAdult()·ADULTS_ONLY정책을 따른다. - 기존 가입 디바이스 ID → 광고 프롤로그 미노출, 기존 로그인/딥링크 정책으로(F).
- 프롤로그 경험 중 이탈(가입 없이 나가기) → 로그인/온보딩 전 Home CTA를 노출하지 않는다.
프롤로그 Skip은 로그인 유도가 아니라AdPrologueSelect/OrganicPrologueSelect이동으로 처리한다. - 비로그인 프롤로그 read 실패(네트워크/콘텐츠 없음) → §4.
B. [광고 분기] 가입 전환 (프롤로그 → 가입)
- 주요 동작: 프롤로그 경험 후(또는 첫 씬 생성 시도 시) 가입을 유도하고, 기존 OAuth 소셜 로그인/온보딩으로 연결한다.
- 비즈니스 룰:
- 가입 트리거 지점은 첫 씬 생성 직전을 기본으로 한다(가장 동기가 높은 순간). 프롤로그 종료 시점에도 추가 CTA를 둘지는 §7.
- 가입은 기존 인증 플로우 재사용 (소셜 OAuth →
pending→ 온보딩(닉네임/성별/생년월일/장르/비주얼 선호) →active). - 가입 직전 경험하던 에피소드 식별자와 진행 위치를 보존하여 가입 완료 후 복귀에 사용한다(C).
C. [광고 분기] 가입 완료 후 같은 콘텐츠 복귀
- 주요 동작: 가입·온보딩 완료 후, 경험하던 광고 매칭 에피소드로 복귀시키고 → 공통 첫 씬 생성·무료 스타 지급(E)으로 잇는다.
- 비즈니스 룰:
- 복귀 목적지는 **씬 생성 의도(
return_intent=create_scene)면 같은 에피소드의 마지막 프레임(첫 씬 생성 직전)**이다. 마지막 프레임 복원이 불가하면 기존 player/episode 정책에 따라 안전한 위치로 폴백한다. 홈/추천 모달이 아니라 해당 에피소드로 직행한다. - 복귀 컨텍스트는 BE resume token 없이 FE 로컬 상태로만 보존한다 — entry source, matched/candidate episode, candidate selection state, last frame/scene creation entry point,
return_intent=create_scene,return_destination,context_lost,signup_reward시도·결과 등 최소값만 유지한다(spec §4·§7). - 컨텍스트 유실 시 폴백: 복귀 컨텍스트가 끊기면 후보 제시/홈/신규 추천으로 폴백한다.
- 복귀 목적지는 **씬 생성 의도(
D. [오가닉/매칭 없음 분기] 로그인 전 디바이스 신규 판정 → 후보 3개 제시 → 선택 프롤로그 진입
- 주요 동작: 광고 매칭이 없는 진입에서 로그인 전 디바이스 가입 이력 1차 판정으로 신규 디바이스로 판단되면, 어드민이 설정한 후보 에피소드 3개를 먼저 제시하고, 고른 에피소드의 비로그인 프롤로그 시작 지점으로 라우팅한다.
- 비즈니스 룰:
- 대상은 가입 이력 없는 신규 디바이스 & 오가닉/광고 매칭 없음 상태. 광고 분기에서 매칭 실패/비공개·삭제/성인 접근 불가로 폴백된 케이스(분기 C)도 자격이 되면 여기로 합류한다.
- 후보 목록은 §3-2 어드민 설정값을 read하되, 유저가 접근 가능한 에피소드 기준으로 노출한다. 성인 전용 에피소드 접근 정책은 기존
adultVerifiedAt → isAdult()·ADULTS_ONLY정책을 따른다. 후보가 3개 미만/비공개/삭제이면 §4 폴백. - 후보 선택 직후 홈/추천 모달을 거치지 않고 선택 에피소드의 비로그인 프롤로그 시작 지점으로 직행한다. 프롤로그는 user input 없는 무료 scene이므로 추가 재화·결제 안내 없이 렌더한다.
- 로그인/온보딩 전 화면(
OrganicSelect, preview/select, 가입 유도 bottomsheet)에서는 Home/둘러보기 CTA를 제공하지 않는다.프롤로그 Skip은 로그인 유도가 아니라 select 화면 이동이다.
E. [공통] 프롤로그 → 첫 씬 생성 + 무료/웰컴 스타 지급
- 주요 동작: 두 분기 모두 프롤로그 이후 첫 씬 생성 유도·무료 스타 지급은 동일한 공통 동선을 쓴다. 같은 콘텐츠 맥락 안에서 첫 씬 생성을 유도한다.
- 비즈니스 룰:
- 첫 씬 생성은 기존 play 플로우(
/episode-play/:episodeId의 프롤로그 다음 = 첫 turn)를 재사용한다. - 웰컴 스타(
signup_reward) 지급은Welcomestar화면의 CTA스타 받고 사용하기탭 시점에 시도한다. 첫 씬 생성 진입 자동 지급이 아니며, 지급 성공 시WelcomestarGet에서스타 1000개 받았어요toast를 약 1.5초 노출한 뒤Episodeplay로 복귀한다. 웰컴 스타 수령을 위해 본인인증 플로우를 필수로 태우지 않는다 —signup_reward는 본인인증이 아니라 deviceId 기준으로 지급된다(기존 구현CreditEventAlias.SIGNUP_REWARD=CreditEventRequirement.DEVICE_ID재사용). 본인인증이 필요한 보상은 attendance/일일 미션 계열이고signup_reward는 아니다. 기존 본인/성인인증 provider 에러·취소가 발생해도 본 flow의signup_reward지급·첫 씬 생성 재개의 필수 실패 사유로 보지 않고, 기존 인증 UI 정책으로 재시도/유지 처리한다. - 웰컴 스타 수령 UX = “가입/온보딩 완료 → 스타 받고 사용하기 → 수령 toast → Episodeplay 복귀” 흐름으로 명확히 읽혀야 한다. 첫 씬 생성 직전의 혜택 안내와 수령 경험이 활성화의 핵심 전환점이다.
- 웰컴 스타를 못 받는 케이스가 있다: ① 같은 deviceId로 이미 수령(
이 기기에서 이미 참여했어요), ② 같은 profileId로 이미 수령(이미 참여했어요), ③ 프로모션 기간(2026-02-01 00:00 ~ 2026-12-31 23:59:59 KST) 전·종료, ④ iOS/Android 외 미지원 플랫폼, ⑤ 지급 API 실패, ⑥ device session/deviceId 확인 실패. 이 경우 신규 전용 게이트/모달을 만들지 않고, 보유 스타가 부족하면 기존 스타 부족 모달로 처리한다. - 지급량·중복방지(deviceId·profileId)·만료는 기존 「가입 기념 스타」(
signup_reward) 기능을 그대로 재사용한다(지급량 축소 검토는 DEE-299). 별도 신규 지급은 만들지 않는다. - 혜택감 있는 지급 UX: 무료/웰컴 스타 지급이 "혜택을 받았다"는 느낌으로 읽혀야 한다 — 스타 드롭 애니메이션, 중앙 성공 메시지, 햅틱/APNG/모션 등은 디자인 옵션(택1·조합은 디자인/spec).
- 기존 모달 순서 정리: 기존 「신규 유저 에피소드 추천」 모달과의 순서 충돌을 조정한다 — 실험군에서는 추천 모달 대신 경험하던/선택한 에피소드로 잇는 것이 기본 (§7).
- 첫 씬 생성은 기존 play 플로우(
- 상태별 동작:
- 복귀/진입 컨텍스트 보존 성공 →
Episodeplay마지막 프레임 복귀. - 복귀/진입 컨텍스트 유실 → Home/기존 추천 목적지로 안전 폴백.
- 웰컴 스타 지급 성공 →
WelcomestarGettoast 후Episodeplay복귀. - 웰컴 스타 지급 실패·수령불가(위 ①~⑥) → 신규 게이트 없이, 보유 스타 부족 시 기존 스타 부족 모달.
- 복귀/진입 컨텍스트 보존 성공 →
범위 제외: 매일 무료 스타는 본 PRD/Spec 범위가 아니다(별도 정책). 본 기능의 지급 정책/게이트로 다루지 않는다.
F. [공통/가드레일] 기존 가입 디바이스 / 기존 회원 처리
- 주요 동작: 광고 딥링크 또는 오가닉/매칭 없음 진입이더라도 디바이스 ID가 기존 가입 이력으로 판정되면 광고 프롤로그 프리뷰와 후보 선택을 모두 띄우지 않는다.
- 비즈니스 룰:
- 기존 가입 디바이스는 기존 유저 가능성이 높으므로 기존 로그인/딥링크 정책으로 보낸다.
- OAuth 전 디바이스 판정이 불확실한 케이스에서 OAuth 결과가 기존 회원이면 동일하게 기존 로그인/딥링크 정책을 따른다.
- 프롤로그 선노출은 기존 회원의 로그인 UX를 방해·지연시키지 않아야 한다 (가드레일, §1.5).
G. [공통] 기존 유저 비주얼 선호 수집 루트
- 주요 동작: 이미 가입한 기존 로그인 유저 중
preferred_visual_types또는VisualtypeSurvey완료 이력이 없는 경우, 업데이트 이후 첫 앱 진입 시 필수 bottomsheet로 비주얼 선호를 수집한다. - 비즈니스 룰:
- 기존 유저에게는 프롤로그 선노출·후보 선택 실험 동선을 태우지 않는다. 선호 수집은 기존 앱 진입 목적지 위에
VisualtypeSurveybottomsheet를 올리는 별도 profile 보강 funnel로 둔다. VisualtypeSurvey는 필수 선택 화면이다. 비주얼 타입을 1개 이상 선택하기 전까지완료CTA는 disabled다.- bottomsheet는 survey 완료 전까지 drag down, dim tap, system back 등으로 강제 dismiss할 수 없다.
- 수집 값은 신규 온보딩의 비주얼 선호와 같은 프로필 필드(
preferred_visual_types)로 저장하고, 이후 후보·추천·세그먼트 룰에서 공통 사용한다. - 완료 시
visualtype_survey_completed=true완료 이력을 남기고 원래 앱 진입 목적지로 이동/복귀한다. 이미 완료 이력이 있는 유저에게는 재노출하지 않는다. 값 변경이 필요하면 별도 설정/프로필 편집 루트로 다룬다.
- 기존 유저에게는 프롤로그 선노출·후보 선택 실험 동선을 태우지 않는다. 선호 수집은 기존 앱 진입 목적지 위에
3-2. 어드민 (운영) — 후보 에피소드 관리
- CRUD 범위: 운영자가 오가닉/매칭 없음 신규 디바이스용 후보 에피소드를 등록 / 수정 / 삭제 / 정렬하고, 후보별 활성·비활성을 토글한다.
- 비즈니스 룰:
- 기본 노출 개수 = 3개. 활성(active) 후보를 운영자가 지정한 정렬 순서대로 위에서 3개 노출한다.
- 후보 수 정책: 운영자는 노출 슬롯보다 많은 후보를 등록해 둘 수 있다(여유 등록·교체 대비). 노출 풀은 활성 상태 후보로 한정한다.
- 활성 후보 > 3 → 정렬 상위 3개만 노출.
- 활성 후보 3개 미만(1~2개) → 활성 개수만큼 노출(노출 최소 1개).
- 활성·유효 후보 0개 → 노출하지 않고 §4 폴백.
- 등록 자격: 공개 상태의 에피소드만 후보로 등록 가능. 등록 후 비공개·삭제되면 후보 무효로 보고 노출에서 자동 제외.
- 정렬: 노출 순서(슬롯 1~3)는 운영자 지정 정렬을 따른다.
- 폴백 연계: 활성·유효 후보가 노출 최소 수(1개)에 못 미치면 §4 폴백이 작동한다.
- 권한: 어드민 접근 권한을 가진 운영자. 상세 권한 레벨은 기존 어드민 권한 체계를 따른다.
- 운영 흐름: 후보 등록 → 활성화 → 정렬 → 노출. 교체 시 기존 후보를 비활성/삭제로 빼고 새 후보를 활성화한다.
- 미확정(§7): 노출 개수를 기본 3개로 고정할지 가변(1~N)으로 둘지, 후보 등록 상한(최대 N), 관리 주체·운영 주기.
3-4. 딥링크 / 라우팅 / URL 구조
- 광고 분기: 광고 유입 → 콘텐츠 매칭, 가입 후 복귀는 Airbridge deep link open callback / deferred deep link payload(미설치 → 스토어 → 설치 후 저장된 딥링크 실행) 위에서 동작한다.
- FE 확인 결과, Airbridge SDK
setOnDeeplinkReceived및 네이티브trackDeeplink연동으로 Airbridge 딥링크/디퍼드 딥링크로 진입한 케이스는 콜백 기준 식별 가능하다. 단 현재 앱 JS에서는 이 콜백을 기능 트리거로 사용하지 않으므로 신규 구현이 필요하다. campaign,creative,episodeId등 매칭값은 딥링크 URL query/path 또는 Airbridge tracking link payload에 포함되어야 프론트에서 파싱할 수 있다. Airbridge 대시보드 attribution 결과에만 있는 값은 프론트 트리거·매칭값으로 보장하지 않는다.- 본 분기 트리거는 유효한 Airbridge deep link/deferred deep link payload를 받은 경우로 제한한다. 단순 paid attribution만 있으면 가입 전 광고 프롤로그를 띄우지 않고 로그인 전 후보 제시로 폴백한다.
- 가입 후 복귀 목적지(씬 생성 의도면 같은 에피소드의 마지막 프레임(첫 씬 생성 직전), 복원 불가 시 안전한 player 위치 폴백)는 기존
/episode-play/:episodeId(mode:new진입)를 재사용한다. 복귀에 필요한 컨텍스트는 BE resume token 없이 FE 로컬 상태로만 보존한다(§3-1 C). - 가입 전 프롤로그 경험은 기존 "플레이는 로그인 필요" 정책의 예외(비로그인 read)를 요구한다 — 신규 path가 필요한지 vs
/episode-play에 비로그인 프롤로그 모드를 얹을지는 비로그인 read 경로 결정에 종속(§7, 개발자 확정 게이트).
- FE 확인 결과, Airbridge SDK
- 오가닉/매칭 없음 분기: 로그인 전 후보 선택 → 선택 에피소드 비로그인 프롤로그 진입과 가입 후 첫 씬 생성 목적지도 기존
/episode-play/:episodeId를 재사용한다. 후보 제시 화면 진입 지점과 로그인 전 디바이스 판정 시점의 라우팅 분기는 spec/개발에서 확정한다.
3-5. Scope
포함 (In scope)
- 광고 분기: Airbridge deep link/deferred deep link payload로 콘텐츠 매칭이 식별되는 미로그인 유저 대상, 가입 전 광고 매칭 콘텐츠 프롤로그 선경험 → 가입(기존 인증 재사용) → 가입 후 같은 에피소드 마지막 프레임(첫 씬 생성 직전, 복원 불가 시 안전한 player 위치) 복귀.
- 오가닉/매칭 없음 분기: 가입 이력 없는 신규 디바이스 대상, 로그인 전 어드민 후보 3개 제시 → 선택 → 비로그인 프롤로그 진입 → 첫 씬 생성 직전 가입 → 가입 후 같은 에피소드 복귀. 어드민 후보 에피소드 등록/수정/정렬 + 폴백.
- 공통: 프롤로그 이후 첫 씬 생성 유도·웰컴 스타 지급(E,
WelcomestarCTA 탭 시 기존signup_reward지급 시도), 기존 가입 디바이스/기존 회원 가드레일(F), 기존 유저 필수VisualtypeSurvey수집 루트(G), 기존 신규 추천 모달과의 폴백 순서 재정의. - 광고 매칭 실패/비공개·삭제/성인 접근 불가 시 로그인 전 후보 제시 폴백(분기 C → B).
- 실험군/대조군 A/B 설계와 이벤트 로깅(
entry_source/ad_match_status분해).
제외 (Out of scope)
- 오가닉 추천 알고리즘 개편 자체 — 본 PRD는 어드민 큐레이션 후보 운영 레버만 다룬다.
- 가입 후 앱 첫 진입 유저, 재설치/재로그인 유저, 기존 가입 유저의 프롤로그/후보 선노출 개선. 단, 기존 유저 필수
VisualtypeSurvey비주얼 선호 수집 루트는 포함한다. - 첫 씬 생성 이후 구간의 비로그인 인터랙티브 플레이 — 후속 범위 후보.
- 프롤로그 중간 선택지 분기별 진행 위치 복원 — 본 범위 복귀는 마지막 프레임(첫 씬 생성 직전) 또는 안전한 player 위치 폴백까지.
- 매일 무료 스타 — 별도 정책. 본 기능의 지급 정책/게이트로 다루지 않는다.
- 신규 광고 크리에이티브 제작·UA 캠페인 운영 자체.
4. 에러 처리 및 예외 상황
| 상황 | 분기 | 처리 방향 |
|---|---|---|
| 광고 attribution 없음 / 매칭 에피소드 없음 | A→C | 광고 프롤로그 미노출 → 로그인 전 후보 제시(기본 3개) 폴백 |
| 매칭 에피소드가 비공개·삭제됨 | A→C | 광고 프롤로그 미노출 → 로그인 전 후보 제시 폴백 |
| 매칭/선택 에피소드가 성인 전용(ADULTS_ONLY)이라 접근 불가 | A→C / D | 광고 프롤로그 미노출 → 접근 가능 에피소드 기준 로그인 전 후보 제시 폴백. 성인 접근 정책은 기존 adultVerifiedAt → isAdult()·ADULTS_ONLY |
| 비로그인 프롤로그 read/loading 10초 이상 지속 | A/D | AdProloguePreviewError/OrganicProloguePreviewError 노출. 다시 시도는 동일 episode read 재시도, 로그인은 유저가 직접 탭한 경우에만 가입 진입. 반복 실패 시 동일 error 화면 유지, 자동 Home 이동 없음 |
| 가입 후 복귀 컨텍스트 유실 | A/E | Home/기존 추천 목적지로 안전 폴백. 임의 episode 또는 stale episode로 강제 복귀하지 않음 |
| 기존 가입 디바이스 ID / OAuth 결과 기존 회원 로그인 | F/G | 광고 프롤로그 프리뷰·후보 선택 미노출, 기존 로그인/딥링크 정책. 단 preferred_visual_types 또는 VisualtypeSurvey 완료 이력이 없으면 업데이트 이후 첫 앱 진입 시 필수 VisualtypeSurvey bottomsheet 노출 |
| 활성 후보가 3개 미만(1~2개) | D | 활성 개수만큼 노출(노출 최소 1개). 빈 슬롯 두지 않음 |
| 활성·유효 후보 0개(미설정·전부 비활성) | D | 노출하지 않고 폴백 콘텐츠 또는 기존 신규 추천 모달/홈 |
| 후보 에피소드 비공개·삭제됨 | D | 해당 후보 무효로 자동 제외 후 나머지 노출. 최소 수 미달 시 폴백 |
| 디바이스는 신규지만 기존 계정으로 로그인(새 디바이스) | D | 본 동선 노출/비노출 정책은 §7에서 결정 |
| 재설치 등으로 디바이스 흔적이 사라져 신규로 오판 | D | 보유 스타·진행 이력 기준 중복 노출/중복 지급 방지. 정확한 룰 §7 |
웰컴 스타(signup_reward) 지급 실패·수령불가 — 동일 deviceId/profileId 이미 수령, 기간 전·종료, 미지원 플랫폼, 지급 API 실패, device session/deviceId 확인 실패 | E | 신규 게이트 만들지 않음 — 보유 스타 부족 시 기존 스타 부족 모달. 보유 스타로 충분하면 그대로 첫 씬 생성 |
| 가입 중단(온보딩 이탈) | A/B | pending 상태 — 다음 진입 시 온보딩부터, 복귀 컨텍스트 보존 시도 |
| 유저가 후보를 고르지 않거나 프롤로그를 Skip | D | 로그인/온보딩 전 Home CTA는 제공하지 않음. 프롤로그 Skip은 select 화면 이동으로 처리 |
5. 데이터 분석
5.1 핵심 지표
공통 코어를
entry_source(ad/organic)·ad_match_status(matched/no_match)로 분해해 본다 (실험군 vs 대조군).
- 신규 유저 → 첫 씬 생성 전환율 (메인, 공통): 첫 씬 생성 유저 / 신규 진입, 소스 분해.
- 가입 완료율 (component & 가드레일): 가입 완료 / 진입.
- 프롤로그 노출 → 첫 씬 생성 (component): 프롤로그 경험/노출 대비 첫 씬 생성.
- 광고 매칭율 (광고 분기 진단): 매칭 콘텐츠 노출 / 광고 진입.
- 후보 노출 → 선택률 (오가닉 분기 진단): 후보 선택 / 후보 3개 노출.
- 신규 유저 D1 리텐션 (보조): D1 재방문 / 신규 가입, 소스 분해.
- 홈 진입/이탈 (오가닉 가드레일): 후보·프롤로그 동선이 홈 도달을 깎지 않는지.
5.2 로깅 이벤트
컨벤션·기존 목록: https://event-docs.frontia.dev/ (Cloudflare Access — WARP/momo 세션). 작성 순서: 기존 재사용 우선 → 없으면 신규. 가능하면
entry_source/ad_match_status등 소스·컨텍스트 property를 단 공통 이벤트로 두고, 소스 고유 동선(광고 가입 전 프리뷰, 오가닉 후보 제시)에만 소스 전용 이벤트를 둔다.
공통 / 재사용 (기존 + property 확장):
| 타입 | 이름 | 용도 | 파라미터 | 그룹 | 상태 |
|---|---|---|---|---|---|
| Event | (첫 씬 생성 이벤트) | 가입/진입 후 첫 씬 생성 전환 측정 (메인) | episode_id, entry_source | episode-player(추정) | 기존 재사용 — 정확한 이벤트명 event-docs 확인 + property 확장 |
| Event | receive_welcome_star | Welcomestar CTA 탭 이후 웰컴 스타 수령 결과 | platform, (entry_source) | (welcome-star) | 기존 재사용 |
광고 분기 전용 (🆕):
| 타입 | 이름 | 용도 | 파라미터 | 그룹 | 상태 |
|---|---|---|---|---|---|
| Event | view_ad_prologue_preview | 가입 전 광고 매칭 프롤로그 노출 | episode_id, campaign, creative | episode-player 우선 검토 | 🆕 신규 |
| Event | click_signup_from_prologue | 프롤로그에서 가입 CTA 클릭 | episode_id, entry_source, return_intent=create_scene | episode-player 우선 검토 | 🆕 신규 |
| Event | skip_prologue_preview | 프롤로그 경험 최종 이탈(가입 없이) | episode_id, entry_source, return_intent | episode-player 우선 검토 | 🆕 신규 |
| Event | return_to_episode_after_signup | 가입 후 의도별 복귀/선택 모달 분기 | episode_id, return_intent, return_destination, context_lost | episode-player 우선 검토 | 🆕 신규 |
오가닉 분기 전용 (🆕):
| 타입 | 이름 | 용도 | 파라미터 | 그룹 | 상태 |
|---|---|---|---|---|---|
| Event | view_organic_new_candidates | 후보 3개 노출 | episode_ids, active_count, entry_source, ad_match_status | discovery 우선 검토 | 🆕 신규 |
| Event | click_organic_candidate | 후보 중 하나 선택 | episode_id, slot, entry_source | discovery 우선 검토 | 🆕 신규 |
| Event | view_organic_first_prologue | 선택 에피소드 프롤로그 진입 | episode_id, entry_source | episode-player 우선 검토 | 🆕 신규 |
기존 유저 비주얼 선호 보강 (🆕):
| 타입 | 이름 | 용도 | 파라미터 | 그룹 | 상태 |
|---|---|---|---|---|---|
| Event | view_existing_visualtype_survey | 기존 유저 필수 비주얼 타입 survey 노출 | screen_name=VisualtypeSurvey, entry_source=existing_user, survey_required=true | profile 우선 검토 | 🆕 신규 |
| Event | complete_existing_visualtype_survey | 기존 유저 비주얼 타입 저장 완료 | preferred_visual_types, visual_type_count, visualtype_survey_completed=true | profile 우선 검토 | 🆕 신규 |
| Event | block_existing_visualtype_survey_dismiss | dismiss 차단 시도 측정 | dismiss_method, blocked=true | profile 우선 검토 | 🆕 신규 |
- 프롤로그는 player에서 렌더되므로 신규 그룹을 만들기 전 기존
episode-player·discovery그룹에 매칭 후보가 있는지 먼저 확인한다(코드 agent — event-docs Cloudflare Access). 동일 의미 동선은 이벤트명 분리보다 공통 이벤트 +entry_source/return_intentproperty로 합치는 것을 우선한다. Property 상세는 spec §7.
6. Ubiquitous Language
| Term | Korean | Definition | Do Not Confuse With | Primary Domain | 상태 |
|---|---|---|---|---|---|
| Scene | 씬 | 플레이 중 선택지 또는 생성 경계 사이의 프레임 묶음. "첫 씬 생성" = 신규 유저의 첫 비프롤로그 turn = 활성화 기준 | 이벤트, 프레임 | Play | 기존 |
| Prologue scene | 프롤로그 | user input 없는 무료 scene (credit 차감·turn 아님). 첫 경험의 대상 | 비프롤로그 씬(첫 씬 생성) | Play / Episode Authoring | 기존 |
| Credit | 스타 | 유저 가상 재화. user-facing은 '스타'. 첫 씬 생성부터 차감 | SettlementCredit(크레딧) | Economy | 기존 |
본 PRD/Spec 한정 약속어(UL 미등재): Entry source =
ad/organic/existing_user유입 소스 property. 광고 매칭 콘텐츠 = 광고 크리에이티브/캠페인↔에피소드 매핑 결과. 후보 에피소드 = 오가닉/매칭 없음 신규 디바이스 유저에게 제시하는 어드민 큐레이션 에피소드(기본 3개). 비주얼 선호 = 유저가 선호하는 episode visual type/profile field(preferred_visual_types)로, 신규 온보딩과 기존 유저VisualtypeSurvey가 같은 값을 쓴다. 복귀 컨텍스트 = 가입 전 경험하던 에피소드 식별자 + 진행 위치 +return_intent=create_scene을 담은 FE 로컬 세션. 가입 유도 시점 = 프롤로그 종료 후 첫 씬 생성(첫 credit turn) 직전.
7. Open Questions
- [ ] 🚨 [FE/BE 결정] 비로그인 프롤로그 read 경로 (R3) — 현재 게스트/익명 세션이 없다. 가입 전 프롤로그를 (a) 비로그인 전용 공개 엔드포인트 (b) 기존
/episode-play에 비로그인 프롤로그 모드 (c) 비interactive 프리뷰 중 무엇으로 열지. 인증/세션/보안 아키텍처 영향 + 되돌림 비용 큼 — 엔지니어 + 보안 확정 게이트. - [ ] 🚨 [데이터/운영 미정] 광고↔콘텐츠 매핑 운영 (Airbridge) — campaign/creative/episode 매칭값을 어떤 payload 키로 넣을지, 운영이 관리할 어드민/도구가 필요한지. 매칭 커버리지가 낮으면 광고 분기 도달 모수가 작아짐 — PM + 운영 + FE + BE.
- [ ] 🚨 [FE/BE 결정] 기존 가입 디바이스 ID 판정 기준 — 가입 이력 deviceId를 어디서/얼마나 보존할지, 재설치·기기변경·공용기기 오탐 처리. 기존 디바이스면 광고 프리뷰와 후보 선택 모두 미노출 — PM + FE/BE.
- [ ] [디자인 결정] 가입 유도 시트 노출 위치 — 기본 가입 트리거는 첫 씬 생성 직전. 프롤로그 종료 시점에도 CTA를 둘지 — PM/디자이너.
- [ ] [디자인 결정] 기존 플레이 튜토리얼 노출 위치 — 기존 플레이 튜토리얼을 프롤로그 씬에서 보여줄지, 첫 씬 생성 이후 기존 player 튜토리얼로 유지할지 — PM/디자이너.
- [ ] [디자인 결정] 웰컴 스타 혜택 연출 — 스타 드롭 애니메이션 / 중앙 성공 메시지 / 햅틱·APNG·모션 중 택1·조합 — PM/디자이너.
- [ ] [디자인 결정] 비로그인 안내 라벨 — "가입 없이 미리 보는 중" 류 컨텍스트 라벨을 프리뷰에 노출할지 여부·문구 — PM/디자이너.
- [ ] [디자인 결정] 프롤로그 read 에러 그래픽 —
emptyvsGenfail_color중 채택 — PM/디자이너. - [x] [공통] 가입 후 복귀 목적지/의도 분기 — 씬 생성 의도(
return_intent=create_scene)면 같은 에피소드의 마지막 프레임(첫 씬 생성 직전)으로 복귀한다. 복귀 컨텍스트는 BE resume token 없이 FE 로컬 상태로만 보존(entry source, matched/candidate episode, candidate selection state, last frame/scene creation entry point,return_intent=create_scene,return_destination,context_lost,signup_reward시도·결과). 프롤로그 중간 선택지 분기별 복원은 후속 범위. - [x] [광고] 광고 직후 진입 판별 (Airbridge deep link / click-through) — FE 확인 완료.
setOnDeeplinkReceived·네이티브trackDeeplink연동으로 딥링크/디퍼드 딥링크 진입은 콜백 기준 식별 가능. 트리거는 paid attribution 전체가 아니라 유효 payload를 받은 경우로 제한, 나머지는 로그인 전 후보 제시 폴백. 단 현재 앱 JS에서 콜백을 트리거로 쓰지 않아 구현 필요. - [x] [공통] 매칭 없음/비공개·삭제/성인 접근 불가 폴백 동선 — 광고 매칭이 없거나 비공개·삭제이거나 성인 접근 불가면 광고 프롤로그 미노출, 접근 가능한 로그인 전 후보 제시(기본 3개)로 합류(분기 C → B). 후보 운영·노출 정책은 본 PRD §3-2.
- [ ] [FE/BE 결정] 가입 후 신규 추천 모달/후보 선택과 순서 충돌 — 실험군에서 추천 모달 대신 같은 에피소드 복귀를 기본으로. 매칭 없음·비공개/삭제·컨텍스트 유실 폴백 시 후보 선택과 기존 신규 추천 모달 중 우선순위 정의 — PM + FE.
- [x] [공통] 무료 스타 처리 — 기존 「가입 기념 스타」(
signup_reward)를 재사용하고,WelcomestarCTA스타 받고 사용하기탭 시점에 지급을 시도한다. 별도 신규 지급 없음. 지급량 축소 검토는 DEE-299. 지급 실패·수령불가는 신규 게이트 없이 기존 스타 부족 모달. - [x] [공통] 웰컴 스타 인증 게이팅 —
signup_reward(웰컴 스타)는 본인인증 불필요(deviceId 기준 지급,CreditEventRequirement.DEVICE_ID). 본인인증이 필요한 보상은 attendance/일일 미션 계열. 성인 콘텐츠 접근만 기존adultVerifiedAt → isAdult()·ADULTS_ONLY정책을 따르며, 접근 불가 시 후보 선택 폴백(§3-1 A·D). - [ ] [공통] 실험 설계 — 무작위 배정 단위(광고 클릭/설치/첫 실행, 오가닉/매칭 없음 첫 실행), 대조군 = 현행(광고: 가입-우선 / 오가닉: 모달 분기), 가드레일 = 가입 완료율·기존 회원 로그인 UX·오가닉 홈 진입. 솔루션(동일 콘텐츠 복귀 vs 무료 스타 안내, 후보 선택 vs 스타 안내) 분리/묶음 검증, 메인 목표 수치는 베이스라인 확정 후 — 데이터 + PM.
- [x] [PM/디자인/FE 결정] 기존 유저 비주얼 선호 수집 접점 —
preferred_visual_types또는VisualtypeSurvey완료 이력이 없는 기존 로그인 유저에게 업데이트 이후 첫 앱 진입 시 필수VisualtypeSurveybottomsheet를 노출한다. 1개 이상 선택 전까지완료CTA disabled, survey 완료 전 강제 dismiss 불가. 프롤로그/후보 선노출과 분리한다. - [ ] [FE/BE 결정] 비주얼 선호 profile field 저장·변경 정책 — 신규 온보딩과 기존 유저 수집 루트가 같은
preferred_visual_types배열 값을 쓰는지, 값 변경/삭제 가능 여부, 추천·세그먼트 룰 반영 타이밍 — FE + BE.
8. 통합 이력 / 유입 소스 분기 비교
본 PRD는 광고·오가닉을 하나의 기능 단위로 통합한다. 아래 비교표는 별도 프로젝트 분할이 아니라 같은 기능 안의 유입 소스 분기를 정리한 것이다. 과거 DEE-295(광고)·DEE-308(오가닉) 분리는 본 통합 PRD로 대체(superseded) 되었다.
| 광고 유입 분기 (A) | 오가닉/매칭 없음 신규 디바이스 분기 (B) | |
|---|---|---|
| 대상 | 광고 유입 미로그인(OAuth 미통과, 콘텐츠 컨텍스트 있음) | 오가닉/매칭 없음 신규 디바이스(로그인 전 디바이스 가입 이력 없음) |
| 프롤로그 시점 | 가입 전 (선노출) | 가입 전 (후보 선택 후 선노출) |
| 신규성 판정 | 광고 payload + 디바이스 기존 가입 이력 1차 판정, OAuth 후 확정 | 로그인 전 디바이스 가입 이력 없음 & 오가닉/광고 매칭 없음 |
| 콘텐츠 선정 | 광고 크리에이티브 ↔ 에피소드 매핑 | 어드민 큐레이션 후보 3개 → 유저 선택 |
| 매칭 없음 처리 | 광고 프롤로그 미노출 → 로그인 전 후보 제시로 합류(분기 C) | 본류 동선 |
| 프롤로그 이후 | 공통(E) — 첫 씬 생성·웰컴 스타(signup_reward) 지급 | 공통(E) — 동일 |
| 최대 리스크 | 비로그인 프롤로그 read 경로(R3, 게스트 세션 없음) | 로그인 전 디바이스 판정·어드민 후보 관리(R2) |
| 진단 지표 | 광고 매칭율, 광고 오픈 → 첫 씬(end-to-end) | 후보 노출 → 선택률, 홈 진입(가드레일) |
- 왜 한 기능인가: 두 분기는 같은 공통 목표(신규 유저를 첫 프롤로그 → 첫 씬 생성까지 빠르게) 와 같은 활성화 코어(E: 프롤로그 → 첫 씬 생성 → 무료 스타) 를 공유한다. 다른 것은 진입 조건(유입 소스·신규성 신호·프롤로그 시점)뿐이라 별도 프로젝트가 아니라 분기로 두는 것이 정합적이다.
- OAuth 제약: 로그인=가입 겸용 OAuth라 OAuth 전에는 신규/기존 구분 불가. 광고 분기는 콘텐츠 컨텍스트로 가입 전 프롤로그를 정당화 가능, 오가닉 분기는 컨텍스트가 없어 로그인 전 후보 선택으로 프롤로그를 먼저 열고 첫 씬 생성 직전 가입 유도 — 그래서 프롤로그 시점이 분기마다 다르다.
- 공유 자산: 첫 씬 생성 이벤트·웰컴 스타(
signup_reward)·신규 추천 로직·/episode-play진입점은 두 분기가 공유. 로깅은 공통 이벤트 +entry_sourceproperty를 우선하고, 소스 고유 동선만ad_*/organic_*전용 이벤트로 둔다(§5.2).
🔍 검토 필요 (외부 의존 — sprint-prep이 직접 못 가져옴)
큰 결정·추정은 §7 / 본문에 흡수. 여기는 다음 단계가 채워야 할 외부 의존만.
- 데이터 agent: 소스별(광고/오가닉) 가입 완료율·가입 완료 → 첫 씬 생성 전환율·소요시간·D1 리텐션 최신값, 광고 매칭율(매칭 가능 모수), 오가닉 홈 진입률 베이스라인. → §1.5 메인/가드레일 수치 산출. 1차 확인값: 최근 완성 7일(2026-05-26~2026-06-01) 신규 3,465명 중 유료 광고 유입 2,710명 = 78.21%.
- 코드 agent: 첫 씬 생성/turn 로깅 이벤트의 정확한 이름·그룹 +
entry_sourceproperty 확장 가능 여부(§5.2), Airbridge attribution에서 캠페인/크리에이티브 식별값 read 범위 + 크리에이티브↔에피소드 매핑 도구 존재 여부, 프론트에서 딥링크 payload/open callback으로 "광고 직후 진입"을 attribution 전체와 구분 가능한지, 비로그인 프롤로그 frame read 엔드포인트 유무(§7), OAuth 결과 신규/기존 구분 시점(§3-1 F), 디바이스 신규 판정에 쓸 기존 신호(Device ID·이용 이력) 유무, 로그인 전 후보 제시 화면 진입 라우팅 분기 지점, 어드민 후보 관리 기존 운영툴 표면 유무. - 디자이너 / Figma: 가입 전 광고 콘텐츠 프롤로그 경험 화면·가입 CTA·가입 후 복귀, 로그인 전 후보 3개 제시 → 선택 → 프롤로그 진입,
VisualtypeSurvey기존 유저 필수 bottomsheet, 웰컴 스타 CTA/수령 toast, 프롤로그 skip/select 동선 시안. - ⚠️ 추정으로 진행한 것: 광고 매칭을 Airbridge attribution/디퍼드 딥링크 기반으로 가정, 첫 씬 생성 이벤트를
episode-player그룹으로 가정, OAuth 후에야 신규/기존 구분 가능 가정, 로그인 전 디바이스 가입 이력 1차 판정이 기존 신호로 가능 가정, 오가닉 후보 슬롯 3개 가정, 라우팅 신규 path 불필요(진입 분기만 변경) 가정.
부록: 메타 정보
Required artifacts
- [x] Spec (
needs-spec) — 광고/오가닉 분기 + 공통 첫 씬 생성·스타 안내 화면별 명세 + 어드민 후보 관리 화면 - [x] Design (
needs-design) — Figma 화면 시안 (광고 유입 진입 + 로그인 전 후보 제시 플로우) - [x] Tracking events (
needs-tracking) — 공통 이벤트 +entry_sourceproperty, 소스 전용ad_*/organic_*이벤트 정의 - [ ] Migration plan — 데이터 구조 변경 없음(추정). 비로그인 read 경로·디바이스 판정·어드민 후보 저장 결정에 따라 재검토.
- [x] QA scenarios (
needs-qa-scenarios) — Sprint planning에서 작성
Size & Risks
T-shirt Size
- Size: M (각 분기 첫 출시 MVP). 통합으로 활성화 코어(E)·
/episode-play진입점·이벤트를 공유해 분리 대비 중복 작업이 줄어든다. - Confidence: medium-low
- 추정 근거: 광고 분기를 광고 링크
episodeId직접 전달, 미로그인 프롤로그 preview/read, 가입 후 같은 에피소드 마지막 프레임(복원 불가 시 안전한 player 위치 폴백) 복귀로 제한하면 M에 가깝다(비로그인 프롤로그 read가 인증/세션 아키텍처를 건드리는 R3 게이트가 남음). 복귀 컨텍스트는 BE resume token 없이 FE 로컬 상태로만 처리해 BE 작업을 줄인다. 오가닉/매칭 없음 분기는 프롤로그 이후 동선을 공통(E)으로 재사용해 작지만, 로그인 전 디바이스 가입 이력 판정·어드민 후보 관리가 신규 작업으로 추가된다. 웰컴 스타는 기존signup_reward를WelcomestarCTA 탭 시점에 재사용한다. 기존 유저VisualtypeSurvey는 profile 보강 funnel로 분리하되 필수 bottomsheet/dismiss 차단 정책을 가진다.
의존성
- 다른 작업: 「가입 기념 스타」·「신규 유저 에피소드 추천」 동선과 충돌 조정.
- 다른 팀: 운영(광고↔콘텐츠 매핑, 오가닉 어드민 후보 큐레이션), 데이터(실험 설계·베이스라인), UA(광고 크리에이티브 ↔ 콘텐츠 합의), BE(비로그인 read·디바이스 판정·어드민 저장).
- 외부 요인: Airbridge attribution/디퍼드 딥링크(광고 분기).
References
- 선행 PRD: 「가입 기념 스타 3,000개 지급」(2026-02), 「신규 유저 에피소드 추천 기능」(2026-02), 「프롤로그와 전체 이벤트 공간 분리」(2026-03).
- 위키:
wiki/client/authentication-session.md(게스트 없음·pending/active·OAuth 로그인=가입 겸용),wiki/client/navigation-routing-deeplinks.md(Airbridge),wiki/domains/play/capabilities.md(프롤로그=무료 scene). - Linear: DEE-295 (통합 메인 이슈), 프로젝트. 과거 오가닉 분리 이슈(DEE-308)는 본 통합 PRD로 대체됨.
prd-review 보기
PRD Review — 신규 유저 첫 프롤로그/첫 씬 생성 전환 개선
최신 결정
광고 유입/오가닉 신규 유입은 별도 프로젝트가 아니라 하나의 신규 유저 활성화 기능으로 통합한다. 기존 광고 전용 PRD와 오가닉 전용 PRD의 분리안은 superseded 되었고, draft/new-user-prologue-funnel/PRD.md가 canonical이다.
반영 확인
- [x] PRD 제목/메타를 통합 기능명으로 변경
- [x] §1 목표/배경을 공통 문제 + 유입 소스 분기 구조로 재작성
- [x] 광고 유입 미로그인, 오가닉 신규 가입, 광고 매칭 없음/무효 폴백을 하나의 요구사항 안에서 정리
- [x] 지표를 공통 전환 지표 + source/context property breakdown으로 정리
- [x] 과거 DEE-308 분리안은 흡수 이력으로만 표기
남은 PM/기술 결정
- 비로그인 프롤로그 read 경로와 보안/세션 정책
- Airbridge payload의 episode 매칭 키와 운영 주체
- 오가닉 후보 운영 방식(어드민 후보 3개, 후보 부족/무효 처리)
- 웰컴 스타 안내가 기존 지급 재노출인지 신규 지급인지