파일 목록으로

FastingWorks 배지 시스템, 어디까지 확장할 것인가 — 인과 DAG 기반 의사결정

작성일: 2026-06-13 KST 방법론: taeho-health Causal Decision Framework (Lyft식 decision DAG + edge evidence + 시나리오 점수)를 수동 적용 근거: deep research 적대적 검증 결과 (103개 클레임 추출 → 17개 생존, 8개 기각), PR #1673 출시 상태

한 줄 결론

지금 결론은 "풀 빌드"도 "보류"도 아닙니다. P0(streak grace + 개인 기록 트랙)는 즉시 진행하고, P1 이후는 PostHog 측정값이 쌓인 뒤 이 문서의 리뷰 조건으로 다시 결정합니다. P0가 우선인 이유는 확장이어서가 아니라, 이미 배포된 임박 알림이 streak 집착을 강화하는 구조여서 가장 잘 문서화된 부정 edge(streak 상실 → 이탈)의 완화책이 먼저 필요하기 때문입니다.

의사결정 질문

향후 4–6주 안에 FastingWorks 배지 시스템(현재 13종, PR #1673로 출시, feature flag 게이팅)을 어디까지 확장하는가?

판정 시계: 2026-07-25 리뷰 (출시 후 약 6주, D30 코호트 1개 이상 확보 시점)

선택지 비교

  • A. 측정만 — 현 13종 유지 (62/100): 개발 비용 0. PostHog로 기준선만 쌓습니다. 주의점: streak 배지 + 임박 알림이 이미 streak 집착을 키우는 상태에서 grace 메커닉 없이 방치하는 것 자체가 리스크 노출입니다. "아무것도 안 하기"가 중립이 아닙니다.
  • B. P0만 — streak grace/repair + 개인 기록 트랙 (84/100): 가장 잘 문서화된 부정 edge를 완화하고, 첫날부터 달성 가능한 진입점(개인 기록)을 추가합니다. 개발 1–2주. 근거 정합성이 가장 높고 되돌리기 쉽습니다.
  • C. P0 + P1 — 상위 티어 확장 + 챌린지 트랙 분리 (73/100): Zero·Fastic의 검증된 2트랙 패턴과 오픈엔디드 사다리를 따라갑니다. 주의점: 챌린지 트랙은 신규 IA·운영 콘텐츠가 필요한 큰 빌드인데, 배지 고유 효과가 'trivial' 수준이라는 메타분석 앞에서 측정 없이 선투자하는 셈입니다.
  • D. 풀 빌드 — C + 프리미엄 배지 연계 (51/100): 배지↔구독 연결은 검증된 근거가 전무합니다(Fastic 사례만 존재, 효과 데이터 없음). 측정 없이 가장 비싼 베팅을 하는 선택입니다.

의사결정 DAG

개입(선택지) → 행동 대리 지표 → lagging 결과의 흐름이고, edge마다 deep research에서 살아남은 근거 품질을 라벨로 붙였습니다.

Edge근거 품질근거
게임화 번들 → 이탈률 감소high (RCT)eQuoo 3-arm RCT, 이탈 10% vs 30.5% (단, COI 있음, 번들 효과)
게임화 고유 기여 → 행동 변화high, 크기 trivial36 RCT 메타분석, +489보/일 상당, 'trivial' 분류
게임화 효과 → 장기 지속(6개월+)high2개 메타분석, novelty effect 아님, 다만 감쇠 (g 0.42→0.15)
streak 집착 → 상실 시 이탈high (정성)Duolingo 9년 데이터 연구, "110일 streak 상실 → 계정 포기" 문서화
임박 알림 → streak 집착 강화구조적 추론우리가 이미 배포한 기능. 위 edge의 노출을 키우는 방향
균등 보상 → 파밍/저가치 행동high (정성)같은 연구, "난이도 비례 보상" 의견 170회
난이도 높은 배지 → 리텐션lowTrophy 벤더 데이터 32%→74%, 선택 편향 유력, 방향성 참고만
첫날 달성 배지 → 리텐션기각됨"33% vs 20%" 수치는 적대적 검증에서 기각. 인용 금지
배지/streak freeze 정량 효과기각됨"17일 vs 12일" 등 기각. grace 권고는 정성 근거에만 기반
배지 → 구독 전환/유지근거 없음직접 근거 부재. 자체 A/B로만 확인 가능

핵심 함의: 배지 → 우리 앱 리텐션 edge는 외부 근거로 식별되지 않습니다. 그래서 이 결정의 절반은 "무엇을 만들까"가 아니라 "어떻게 측정 가능하게 만들까"입니다.

DOT source

digraph BadgeDecision {
  rankdir="LR";
  node [shape=box, fontname="Apple SD Gothic Neo"];

  subgraph cluster_decision {
    label="개입 (선택)";
    choice [label="배지 확장 범위\nA/B/C/D", shape=diamond];
  }

  subgraph cluster_proxy {
    label="행동 대리 지표 (PostHog, 일 단위)";
    trophy [label="트로피 룸 방문\nachievements_viewed"];
    unlock [label="배지 획득\nachievement_unlocked"];
    streakcont [label="streak 지속률"];
    notif [label="알림 opt-in/opt-out"];
    fastrate [label="단식 완료율"];
  }

  subgraph cluster_outcome {
    label="lagging 결과";
    d7 [label="D7 리텐션"];
    d30 [label="D30 리텐션"];
    renew [label="구독 갱신율"];
  }

  subgraph cluster_confounder {
    label="교란 (통제 필요)";
    cohort [label="신규 코호트 구성", style=dashed];
    season [label="시즌성(여름 다이어트)", style=dashed];
    other [label="동시 출시 기능", style=dashed];
  }

  choice -> trophy; choice -> unlock; choice -> notif;
  unlock -> streakcont [label="집착 강화\n(양날)", color=red];
  streakcont -> fastrate;
  trophy -> d7; unlock -> d7; fastrate -> d30;
  d7 -> d30; d30 -> renew;
  streakcont -> d30 [label="상실 시 이탈", color=red, style=bold];
  cohort -> d7; cohort -> d30; season -> fastrate; other -> d30;
}

목표 가중치 (시나리오 objectives)

목표가중치비고
D30 리텐션 / 구독 유지1.0이 기능의 존재 이유 (#1654)
streak 이탈 역효과 회피0.9가장 잘 문서화된 부정 edge
개발 비용 (주 단위)0.71인 개발, 기회비용 큼
학습 가치 (측정 가능성)0.8배지→리텐션 edge가 미식별이므로 높게
매출 직접 연결0.3근거 부재 영역, 현 시점 가중치 낮춤

반드시 확인할 조건 (guardrails)

  • streak 상실 직후 7일 비활성률이 streak 유지 사용자 대비 유의하게 높은가 — 높다면 grace 메커닉의 우선순위가 더 올라가고, P0의 가설이 우리 데이터로 확인되는 것
  • 임박 알림(achievement_imminent)의 opt-out률이 다른 알림 채널보다 높지 않은가 — 높다면 알림 톤/빈도 재설계
  • 트로피 룸 방문(achievements_viewed)이 첫 획득 후 재방문으로 이어지는가 — 안 이어지면 카탈로그 확장(P1)의 기대 효과 하향
  • 짧은 단식 반복으로 누적/횟수 배지를 파밍하는 패턴이 보이는가 — 보이면 P2(최소 단식 시간 조건)를 앞당김
  • 배지 확장이 단식 완료율 자체를 올리는가 — 대리 지표가 안 움직이면 lagging 지표 개선도 기대 불가

실험 정의 (PostHog)

  • 가설: 배지 시스템(13종 + P0)은 노출 코호트의 D30 리텐션을 비노출 대비 개선한다. 기대 효과 크기는 작음(메타분석 'trivial~small' 기준).
  • 개입: achievement-badge-system flag를 100% → 50/50 rollout으로 전환해 노출/비노출 코호트 생성. 단, 이미 기능을 본 기존 사용자에게서 기능을 회수하면 역효과(loss aversion)가 있으므로 신규 설치 코호트에만 50/50 적용을 검토.
  • 사전 조건: SDK 자동 exposure(sendFeatureFlagEvent)는 계속 끄고, 홈 헤더 surface에서 $feature_flag_called를 수동으로 1회 기록해 실험 inclusion을 정의.
  • 판정 지표: D7/D30 리텐션 (1차), 단식 완료율·streak 지속률 (대리), 구독 갱신율 (장기).
  • 판정 기준: D30 상대 개선이 신뢰구간에서 0을 배제하면 P1 진행. 0 포함이고 대리 지표도 무반응이면 P1 보류, 카탈로그는 현상 유지.
  • 리뷰 날짜: 2026-07-25 (이 문서 갱신 + decision record 추가).

결정 기록

날짜결정근거리뷰
2026-06-13(제안) B 채택: P0 즉시, P1 측정 후, D 보류본 문서07-25
2026-06-13B 확정 — P0 구현 착수 (Taeho 승인)본 문서 + 대화07-25
2026-06-13P1 중 카탈로그 확장(13→28종)을 앞당김 (Taeho 지시) — 챌린지 트랙·프리미엄 연계는 계속 측정 후 판단대화 (트로피 룸 디자인 개선과 함께)07-25

참고 자료

0 / 45