PRD v1.1 — 사용자 온보딩 흐름 (원장·학생·학부모 3종)
차별화 핵심
- 원장: 가입 후 10분 안에 첫 학습지를 학생에게 발송 — 매쓰플랫의 영업·도입 컨설팅 모델 대비 셀프 + 즉시
- 학생: 전화번호 + 6자리 코드 1분 인증 — 비밀번호 없음
- 학부모: 별도 앱 가입 없이 알림톡 link → 자녀 데이터 열람 (5초)
자가 검토 (작성자 점검)
- 모든 단계 클릭 횟수 명시 (10분 = ~30 클릭 한도)
- 빈 상태(empty state) 모두 다룸
- 이탈 지점 식별 + 회복 경로
- 분석 이벤트 명명 (Plausible Analytics 호환)
1. 원장 온보딩 — “10분 안에 첫 학습지 발송” (Critical Path)
1.1 단계별 흐름 (총 ~30 클릭, 목표 10분)
[Step 1: 가입 — 1분]
landing/page → "베타 등록" 클릭
→ /signup 진입
→ 이메일·비밀번호·학원명·휴대폰 입력 (4 필드)
→ SMS 인증 코드 입력 (1 필드)
→ 회원가입 완료 (자동 로그인)
→ 이벤트: signup_completed
[Step 2: 학원 정보 — 1분]
/onboarding/academy 진입
→ 학원 주소·지역 (선택)
→ 학원 운영 시간 (선택)
→ 사업자등록번호 (선택, 결제 시점에 갱신 가능)
→ "다음" 클릭
→ 이벤트: academy_created
[Step 3: 학생 1명 등록 — 2분]
/onboarding/first-student 진입
→ 학생 이름
→ 학년 (E1~M3 dropdown)
→ 현재 단원 (학년 변경 시 자동 dropdown)
→ 학부모 연락처
→ "학생 등록" 클릭
→ 자동 발급된 6자리 학습 코드 표시 + SMS 자동 발송
→ 이벤트: first_student_registered
[Step 4: 첫 학습지 만들기 — 3분]
/onboarding/first-worksheet 진입 (이전 단계에서 자동)
→ 단원 자동 선택됨 (Step 3 학생의 current_unit_id)
→ 난이도 분포 기본값 적용 (LOW 30 / MID 50 / HIGH 20)
→ 문항 수 12 기본값
→ "AI 추천" 클릭 → 12 문항 자동 생성
→ 미리보기 (선택)
→ "학생에게 발송" 클릭 → 첫 학습지 인사 알림톡 자동 발송
→ 이벤트: first_worksheet_sent
[Step 5: 다음 액션 안내 — 1분]
/onboarding/next-steps
→ ✓ 회원가입 완료
→ ✓ 학생 1명 등록 + 학습 코드 발송 완료
→ ✓ 첫 학습지 발송 완료
→ 다음에 할 일:
- 다른 학생 추가하기 (CTA)
- 첫 학습지 결과 확인하기 (CTA, 학생 풀이 후 활성화)
- 월간 리포트 미리보기 (CTA, 30일 후 활성화)
→ 이벤트: onboarding_completed
1.2 시간 분배 (기대값)
| Step | 분 | 누적 | 핵심 이탈 위험 |
|---|---|---|---|
| 가입 | 1 | 1 | SMS 인증 실패 |
| 학원 정보 | 1 | 2 | 사업자등록번호 입력 강제 → 이탈. 선택으로 |
| 학생 등록 | 2 | 4 | 학부모 연락처 미보유 → 본인 번호 입력 OK |
| 첫 학습지 | 3 | 7 | AI 추천이 12문항 1회 호출에 < 3초 보장 필요 |
| 다음 액션 | 1 | 8 | — |
| 여유 | 2 | 10 | 학습지 발송 후 자동 PDF 미리보기 보는 시간 |
1.3 빈 상태 / 이탈 회복
| 시나리오 | 처리 |
|---|---|
| 학생 0명에서 학습지 화면 진입 | ”먼저 학생을 등록하세요” 모달 + CTA |
| AI 추천 실패 (단원 풀 부족) | “이 단원은 콘텐츠가 부족합니다. 다른 단원으로 시작해보세요” + 추천 단원 3개 |
| SMS 인증 실패 | 이메일 발송 fallback 옵션 |
| Step 5에서 가입 후 바로 이탈 | 24시간 후 이메일 “온보딩 마무리하기” 발송 (1회만) |
1.4 분석 이벤트
| 이벤트 명 | 트리거 | 속성 |
|---|---|---|
signup_started | /signup 진입 | utm_source, utm_campaign |
signup_completed | 가입 완료 | days_since_landing_view |
academy_created | Step 2 완료 | — |
first_student_registered | Step 3 완료 | grade |
first_worksheet_sent | Step 4 완료 | unit_id, question_count, time_spent_sec |
onboarding_completed | Step 5 도달 | total_time_minutes |
onboarding_dropped_at | 이탈 시 | step_name, time_spent_sec |
목표 KPI:
- signup_completed → onboarding_completed 전환율 ≥ 70%
- 평균 onboarding 시간 ≤ 12분 (목표 10분 대비 +2분 여유)
2. 학생 온보딩 — 1분 인증
2.1 단계별 흐름
[Step A: 알림 수신 — SMS 또는 알림톡]
학생 휴대폰 SMS:
"[A+ Tracker] 미경공부방에서 새 학습지를 보냈어요.
앱 다운로드: link.aplustracker.com
학습 코드: M3K7Q2"
[Step B: 앱 다운로드 + 첫 실행]
링크 클릭 → App Store / Play Store 자동 분기
→ 앱 다운로드
→ 첫 실행 → /onboarding/welcome
→ "휴대폰 번호로 시작" 클릭
→ 이벤트: app_first_launch
[Step C: 인증]
/onboarding/auth
→ 휴대폰 번호 입력 (자동 채움 가능 — iOS는 SIM에서)
→ 학습 코드 6자리 입력 (영숫자)
→ "확인" 클릭
→ 백엔드: phone + learning_code → student 매칭
→ 매칭 성공 → 학생 정보 (이름·학년·학원명) 표시 + 확인
→ "맞아요, 시작할게요" 클릭
→ 이벤트: student_authenticated
[Step D: 첫 학습지로 이동 — 자동]
/home (학습지 탭)
→ 보낸 학습지 1개 표시
→ 자동으로 첫 학습지 진입 (모달 또는 풀화면)
→ 이벤트: first_worksheet_started
2.2 디바이스 케이스
| 케이스 | 처리 |
|---|---|
| iOS 사용자 | SIM에서 폰 번호 자동 채움 (iOS native API) |
| Android 사용자 | 폰 번호 수동 입력 + 자동 인증 SMS |
| 학생이 부모 폰 사용 | 학습 코드만으로 인증 가능 (백엔드 학생 ID 매칭) |
| 형제·자매 동시 사용 | 학습 코드 별도이므로 자동 분기 |
2.3 빈 상태 / 에러
| 시나리오 | 처리 |
|---|---|
| 학습 코드 오타 | ”코드를 확인해주세요” + 학원에 문의 링크 |
| 폰 번호 학원에 미등록 | ”학원 등록 정보와 다릅니다. 학원에 문의 부탁드려요” |
| 첫 학습지 0개 | 환영 화면 + “학원에서 곧 학습지를 보낼 거예요” |
3. 학부모 온보딩 — 5초 (별도 앱 가입 없음)
3.1 학부모는 사실상 “수동 알림 수신자”
학부모는 가입 단계 없음. 모든 진입은 알림톡 → 앱 내 페이지.
[Step 1: 학원 등록 환영 알림톡 수신]
PRD v0.2 §7 참고 — `welcome-v1` 템플릿 자동 발송
→ 학원·학생 정보 + 앱 다운로드 안내
[Step 2: 앱 첫 실행 (선택)]
학부모가 앱 다운로드 → 학생 앱과 동일 (역할 자동 분기)
→ 학생 휴대폰 번호 입력
→ 학부모 → 자녀 데이터 열람 권한 자동 부여 (parent 테이블 확인)
[Step 3: 월간 리포트 알림톡 수신 — 매월 1일]
`monthly-report-v1` 템플릿 자동 발송
→ "자세히 보기" 버튼 → 앱 내 리포트 페이지 (딥링크)
→ 가입 안 했으면 5초 인증 후 열람
3.2 학부모 가입 임계점 분석
학부모는 능동적 가입 의지 낮음. 다음 임계점에서만 가입 시도:
- 자녀의 첫 학습지 결과가 궁금할 때 (Step 4 전 학생 풀이 후)
- 월간 리포트 첫 수신 시 (Step 3)
→ 학부모 가입 = 수동·점진적. 강제 가입 X.
3.3 P1 학부모 직접 결제 시 흐름
P0은 학부모 결제 X. P1 진입 시:
학부모가 학생 앱 진입 → "프리미엄 학생 도구 (월 9,900원)" 안내
→ 학부모 가입 + 토스페이먼츠 결제
→ 학원 결제와 별도 (Subscription.scope = 'single_student')
PRD v0.2 §4.4 학부모 결제 데이터 모델 사전 분리 적용.
4. 모든 사용자 공통 — 첫 7일
4.1 D+1 (가입 다음날)
원장에게 이메일:
- “첫 학습지가 학생에게 잘 도착했나요? 결과 확인하기”
- 학생 0명 풀이 시 → “학생에게 안내 메시지 다시 보내기” CTA
4.2 D+3
원장에게 알림톡:
- “지난 3일 학생 활동 요약” (학습지 풀이·정답률 등)
- 활동 0건 시 → “도움이 필요하시면 1:1 문의하기” 안내
4.3 D+7
원장에게 이메일:
- 첫 주 활동 리포트 + “다음 주 추천 액션” (예: 다른 학생 등록 / 추가 학습지)
- 활동률 < 50% 시 → “사용 가이드 보기” + 영상 링크
5. PRD 영향
5.1 새 API endpoints
POST /api/onboarding/state 저장 — 어느 step까지 진행했는지
GET /api/onboarding/state 조회 — 다음 화면 결정
POST /api/onboarding/event 분석 이벤트 기록 (선택, Plausible로 대체 가능)
GET /api/onboarding/recommended-units Step 4용 — 첫 학습지 만들 단원 추천
5.2 데이터 모델 추가
-- migration-003-onboarding.sql (별도 작성 필요)
CREATE TABLE onboarding_progress (
account_id BIGINT PRIMARY KEY REFERENCES account(id),
step_completed TEXT[], -- ['signup', 'academy', 'first_student', ...]
started_at TIMESTAMPTZ DEFAULT now(),
completed_at TIMESTAMPTZ,
total_time_seconds INTEGER
);6. 와이어프레임 (참고)
본 문서는 흐름 명세. 실제 화면 디자인은 prd-v1.0-design-spec §3·§4 와이어프레임 + Figma 디자인 단계에서 구체화.
7. 다음 단계
본 PRD v1.1 다음:
- v1.2 — 결제 흐름 (P1)
- v1.3 — 출결 키오스크 (P1)
- v2.0 — 중등 콘텐츠 통합 (P1)
PRD 발사 — 베타 출시 직전 v1.0 + v1.1 통합본으로 동결, 코딩 시작.