docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
---
|
||||
id: wiki-2026-0508-전자상거래-소비자-참여-및-보상-시스템-최적화
|
||||
title: 전자상거래 소비자 참여 및 보상 시스템 최적화
|
||||
category: 10_Wiki/Topics
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [E-commerce Engagement, Reward System Optimization, 보상 시스템]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.88
|
||||
verification_status: applied
|
||||
tags: [e-commerce, growth, rewards, personalization]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
tech_stack:
|
||||
language: typescript
|
||||
framework: Next.js/Node
|
||||
---
|
||||
|
||||
# 전자상거래 소비자 참여 및 보상 시스템 최적화
|
||||
|
||||
## 매 한 줄
|
||||
> **"매 reward 는 dopamine schedule 의 design"**. e-commerce engagement 는 LTV (lifetime value) 곡선의 변형 문제로, 매 variable-ratio reinforcement + loss-aversion + social proof 의 조합. 2026 현재 매 ML personalization (reinforcement learning bandits) 으로 매 user 마다 다른 reward 를 발사.
|
||||
|
||||
## 매 핵심
|
||||
|
||||
### 매 4대 lever
|
||||
- **Frequency**: visit cadence — 매 daily login bonus, streak
|
||||
- **Depth**: AOV (average order value) — 매 threshold reward, free shipping bar
|
||||
- **Breadth**: category exploration — 매 cross-sell coupon
|
||||
- **Retention**: churn prevention — 매 win-back, lapsed user offer
|
||||
|
||||
### 매 reward 분류
|
||||
- **Hedonic**: tier badge, exclusive access — 매 status driver
|
||||
- **Utilitarian**: point/coupon, cashback — 매 economic driver
|
||||
- **Social**: referral, leaderboard — 매 viral driver
|
||||
- **Surprise**: random box, lucky draw — 매 dopamine spike
|
||||
|
||||
### 매 응용
|
||||
1. Subscription churn 감소 — predictive offer 발사.
|
||||
2. Cart abandonment 회복 — personalized incentive.
|
||||
3. New-user onboarding — 매 first-week reward sequence.
|
||||
|
||||
## 💻 패턴
|
||||
|
||||
### Multi-armed bandit reward selector
|
||||
```typescript
|
||||
class ContextualBandit {
|
||||
private weights: Map<string, number[]> = new Map()
|
||||
|
||||
selectReward(userCtx: UserContext, candidates: Reward[]): Reward {
|
||||
const arms = candidates.map(r => ({
|
||||
reward: r,
|
||||
score: this.predict(userCtx, r),
|
||||
}))
|
||||
// Thompson sampling
|
||||
const sampled = arms.map(a => ({
|
||||
...a,
|
||||
sample: a.score + this.gaussianNoise(0.1),
|
||||
}))
|
||||
return sampled.sort((a, b) => b.sample - a.sample)[0].reward
|
||||
}
|
||||
|
||||
update(userCtx: UserContext, reward: Reward, outcome: number) {
|
||||
const key = this.featureKey(userCtx, reward)
|
||||
const w = this.weights.get(key) ?? [0, 0]
|
||||
w[0] += outcome
|
||||
w[1] += 1
|
||||
this.weights.set(key, w)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### LTV-aware coupon sizing
|
||||
```typescript
|
||||
function couponAmount(user: UserProfile, basket: Cart): number {
|
||||
const ltvDecile = user.ltvPercentile
|
||||
const marginalLTV = user.predictedLTV - user.realizedLTV
|
||||
// 매 high-LTV / low-realized = 매 invest more
|
||||
const cap = Math.min(marginalLTV * 0.15, basket.total * 0.25)
|
||||
// 매 churn risk multiplier
|
||||
const risk = 1 + user.churnProb * 0.5
|
||||
return Math.round(cap * risk)
|
||||
}
|
||||
```
|
||||
|
||||
### Streak / habit loop
|
||||
```typescript
|
||||
class StreakEngine {
|
||||
async onLogin(userId: string, now: Date) {
|
||||
const last = await this.getLastLogin(userId)
|
||||
const days = daysBetween(last, now)
|
||||
let streak = days === 1 ? (await this.getStreak(userId)) + 1 : 1
|
||||
if (streak > 0 && streak % 7 === 0) {
|
||||
await this.grantReward(userId, { type: "weekly_streak", multiplier: streak / 7 })
|
||||
}
|
||||
await this.setStreak(userId, streak)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Cart abandonment recovery
|
||||
```typescript
|
||||
async function abandonRecovery(cart: Cart, user: User) {
|
||||
const elapsed = Date.now() - cart.lastUpdate
|
||||
if (elapsed < 1000 * 60 * 30) return // 매 too early
|
||||
const offer = await bandit.selectReward(user.context, [
|
||||
{ type: "free_shipping" },
|
||||
{ type: "5_percent_off" },
|
||||
{ type: "loyalty_2x_points" },
|
||||
])
|
||||
await sendEmail(user.email, renderRecovery(cart, offer))
|
||||
await sendPush(user.deviceTokens, renderPush(offer))
|
||||
}
|
||||
```
|
||||
|
||||
### Gamified tier progression
|
||||
```typescript
|
||||
type Tier = "bronze" | "silver" | "gold" | "platinum"
|
||||
const TIER_THRESHOLDS: Record<Tier, number> = {
|
||||
bronze: 0, silver: 500, gold: 2000, platinum: 10000,
|
||||
}
|
||||
|
||||
function tierProgress(spend: number): { tier: Tier; progress: number; nextAt: number } {
|
||||
const tiers: Tier[] = ["bronze", "silver", "gold", "platinum"]
|
||||
let cur: Tier = "bronze"
|
||||
for (const t of tiers) if (spend >= TIER_THRESHOLDS[t]) cur = t
|
||||
const next = tiers[tiers.indexOf(cur) + 1]
|
||||
if (!next) return { tier: cur, progress: 1, nextAt: spend }
|
||||
const nextAt = TIER_THRESHOLDS[next]
|
||||
return { tier: cur, progress: (spend - TIER_THRESHOLDS[cur]) / (nextAt - TIER_THRESHOLDS[cur]), nextAt }
|
||||
}
|
||||
```
|
||||
|
||||
### Referral viral loop
|
||||
```typescript
|
||||
async function referralReward(referrer: string, referee: string, firstOrder: Order) {
|
||||
if (firstOrder.total < 30) return // 매 anti-fraud floor
|
||||
await grantPoints(referrer, 500)
|
||||
await grantCoupon(referee, { value: 10, expiresInDays: 30 })
|
||||
await track("referral_completed", { referrer, referee, orderValue: firstOrder.total })
|
||||
}
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Reward type |
|
||||
|---|---|
|
||||
| New user (D0-D7) | Welcome bundle + first-purchase bonus |
|
||||
| Active mid-LTV | Streak + tier progress |
|
||||
| High-LTV at churn risk | Personalized win-back, hedonic perk |
|
||||
| Low-LTV, high acquisition cost | Bundle / referral, no deep coupon |
|
||||
| Cart abandonment | Free shipping (cheap) → coupon (expensive) escalate |
|
||||
|
||||
**기본값**: contextual bandit + LTV-capped budget + 매 hedonic + utilitarian mix.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[E-commerce_Platforms]] · [[Growth_Engineering]]
|
||||
- 변형: [[하이브리드_수익화(Hybrid_Monetization)]] · [[부분_유료화(Free-to-Play)]]
|
||||
- 응용: [[리텐션(Retention)]] · [[가차(Gacha)]]
|
||||
- Adjacent: [[Nudge_Theory]] · [[FOMO (Fear of Missing Out)]] · [[Telemetry_Balancing]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: copy generation (개인화 message), reward strategy ideation, A/B test hypothesis.
|
||||
**언제 X**: 매 real-time bandit decision (latency budget < 50ms) — pre-trained model 로.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **All-or-nothing coupon**: 매 같은 coupon 모두에게 — margin 폭탄.
|
||||
- **Streak punishment**: 매 1일 miss 로 reset — 매 user frustration.
|
||||
- **Dark pattern reward**: 매 hidden cost / forced opt-in — 매 churn 가속.
|
||||
- **Tier inflation**: 매 너무 빠른 tier-up — 매 status 의미 상실.
|
||||
- **Reward 의 marginal cost 무시**: 매 LTV 보다 큰 reward — unit economics 붕괴.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Reichheld Loyalty Effect, Hooked by Nir Eyal, Shopify rewards docs).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — e-commerce engagement & reward optimization |
|
||||
Reference in New Issue
Block a user