Gamification Design - Learn English Zero
Version: 1.1 Date: 2026-01-09 Status: Design Complete - Ready for Implementation
Constants Reference: Xem
definitions.mdcho tất cả constants và enums.
Design Philosophy
Core Principle: Gamification phục vụ người học, không phán xét họ.
Thiết kế cho người Việt 18-35 tuổi đã thất bại nhiều lần khi học tiếng Anh:
- Sợ sai hơn sợ không biết → Hệ thống không bao giờ phán xét
- Quen bị so sánh → KHÔNG có leaderboard, rank, social comparison
- Tin vào "liệu trình" → Rõ ràng 120 ngày, không endless
- Cần small wins → Mỗi ngày là 1 thành công nhỏ
1. Streak System
1.1 Core Logic: 3-Day Grace Period
Định nghĩa: Streak reset khi user không hoàn thành bài học nào trong 3 ngày liên tiếp.
| Tình huống | Streak Status | Chi tiết |
|---|---|---|
| Học ngày 5, bỏ ngày 6 | Intact | Grace day 1/3 |
| Học ngày 5, bỏ ngày 6-7 | Intact | Grace day 2/3 |
| Học ngày 5, bỏ ngày 6-7-8 | Reset vào 00:00 ngày 9 | Hết grace period |
| Học ngày 5, bỏ 6-7, học ngày 8 | Intact (tiếp tục) | Grace period reset |
Timeline Example:
Ngày 5: Học ✓ (Streak = 5)
Ngày 6: Bỏ (Grace 1/3, Streak vẫn = 5)
Ngày 7: Bỏ (Grace 2/3, Streak vẫn = 5)
Ngày 8: Bỏ (Grace 3/3, Streak vẫn = 5 trong ngày 8)
Ngày 9: 00:00 → Streak RESET = 0
Lưu ý: User vẫn có cơ hội học vào ngày 8 để cứu streak.
1.2 Rationale
Why 3-day grace period? (Không phải 1 ngày như Duolingo)
- Phù hợp với đời sống thật: công việc, gia đình, stress
- Tránh trigger cảm giác "mình lại thất bại"
- Cho AI Coach thời gian can thiệp trước khi quá muộn
Why show Longest Streak after reset?
- Công nhận nỗ lực quá khứ
- Khuyến khích "beat your own record"
- Vai trò: airbag, không phải động cơ chính
1.3 UI Copy Rules
❌ NEVER use:
- "Your streak is broken"
- "You failed"
- "Try again"
✅ ALWAYS use:
- "Chuỗi học tập tạm dừng. Nhưng hành trình của bạn vẫn tiếp tục."
- "Bạn không mất tiến bộ. Chỉ là nghỉ lấy sức."
- "Bạn từng học liên tục [X] ngày. Điều đó chứng tỏ bạn làm được."
1.4 AI Coach Integration
Cross-reference: ai-coach-behavior.md Section 6.3 Context Modules
Streak system kết hợp với AI Coach theo timeline:
| Ngày bỏ | Streak Status | AI Coach Action |
|---|---|---|
| Day 1 | Grace 1/3 | ❌ Không làm gì |
| Day 2 | Grace 2/3 | ✅ Nhắc nhẹ in-app |
| Day 3 | Grace 3/3 | ✅ Check-in + Warning streak sắp reset |
| Day 4+ | RESET | ✅ Caring message + Show longest streak |
Message tại các thời điểm:
Day 2 (Gentle nudge):
"Mình nhớ bạn! Hôm nay bạn có 10 phút không?"
Day 3 (Pre-reset warning):
"Bạn ổn chứ? Streak của bạn sẽ reset vào ngày mai nếu không học hôm nay. Chỉ cần 5 phút thôi cũng được nhé 🙂"
Day 4 (After reset):
"Streak đã reset về 0. Không sao cả! Bạn từng duy trì [X] ngày liên tục - đó là thành tựu thật sự. Sẵn sàng bắt đầu lại chưa?"
1.5 Edge Cases
Timezone handling:
- User timezone stored in profile
- "Day" = 00:00-23:59 theo user timezone
- Nếu user travel đổi timezone, hệ thống dùng timezone cũ cho đến khi user update
Longest streak display:
- Hiển thị sau khi streak reset
- Format: "Streak dài nhất: [X] ngày"
- Vị trí: Dashboard, dưới current streak
Grace period không stack:
- Không có "2 grace periods nếu học 14 ngày liên tục"
- Luôn luôn là 3 ngày, không flexible
1.6 Rejected Alternatives
| Alternative | Why Rejected |
|---|---|
| Streak Freeze (Duolingo style) | Dạy trì hoãn, không hợp với người chưa có thói quen học |
| Catch-up (học 2 bài để cứu streak) | Gây overwhelm khi đã stress/mệt |
| Instant reset (0 tolerance) | Quá harsh, trigger cảm giác thất bại ngay lập tức |
2. Progress Visualization
2.1 Primary: Medical Chart Style
Design: Progress bars với clinical, professional look
Gắn với metaphor: "Chữa bệnh tiếng Anh" (treating English illness)
Example:
Đơn Mù: 65% hoàn thành
████████████░░░░░░░░ 1,950/3,000 words
Đơn Điếc: 40% hoàn thành
████████░░░░░░░░░░░░ 48/120 listening sessions
Color palette:
- Progress: Clinical green (#2D8659)
- Background: Light gray (#E5E7EB)
- NO bright cartoon colors
2.2 Secondary: Journey Map
Design: Linear path với milestones rõ ràng
Purpose: Trả lời MỘT câu hỏi: "Mình đang ở đâu và còn bao xa nữa là xong?"
Example:
Start ━━●━━━━○━━━━○━━━━○━━━━ End (120 days)
↑
Day 45
✓ Month 1: Basic 500 words
✓ Month 2: Pronunciation foundation
○ Month 3: Expand to 1,500 words ← You are here
○ Month 4: Conversational practice
Elements:
- ✓ Completed checkpoints (green)
- ○ Upcoming checkpoints (gray)
- ● Current position (blue)
- Progress line fills from left to right
2.3 Rejected Alternatives
| Alternative | Why Rejected |
|---|---|
| Calendar Heatmap (GitHub style) | Ô trống tạo cảm giác tội lỗi (guilt from gaps) |
| Numeric Dashboard only | Too dry, lacks visual motivation |
| Cartoon/Avatar | Childish cho target audience 18-35 tuổi |
3. Achievement/Milestone System
3.1 Core Principle: "Năng lực" not "Thành tích"
Achievements reframe as what you CAN DO NOW, not trophies collected.
3.2 Milestone Types
Cross-reference: Đây là danh sách master. File
ai-coach-behavior.mdsection "6.3 Context Modules" cần tạo template cho TẤT CẢ milestones này. Xemdefinitions.mdSection 4 cho đầy đủ trigger conditions và AI module names.
| Milestone | Trigger | AI Coach Module | Capability Message |
|---|---|---|---|
| First 100 words | 100 words learned | milestone_100_words |
"Bạn vừa học xong 100 từ - đủ để tạo 1000+ câu cơ bản đơn giản." |
| 7-day streak | 7 consecutive days | milestone_7day_streak |
"7 ngày liên tục chứng tỏ bạn đang xây thói quen. Não bộ đã bắt đầu quen với tiếng Anh." |
| Month 1 | Complete day 30 | milestone_month_1 |
"Hoàn thành tháng 1 = vượt qua giai đoạn khó nhất. Phần lớn người bỏ cuộc ở tuần 2-3." |
| 500 words | 500 words learned | milestone_500_words |
"500 từ = đủ để hiểu 50% nội dung tiếng Anh hàng ngày." |
| Month 2 | Complete day 60 | milestone_month_2 |
"Nửa chặng đường rồi. Kỹ năng phát âm đã cải thiện rõ rệt." |
| 1,500 words | 1,500 words learned | milestone_1500_words |
"1,500 từ = đạt A2 vocabulary. Có thể giao tiếp cơ bản trong các tình huống quen thuộc." |
| Month 3 | Complete day 90 | milestone_month_3 |
"Chỉ còn 1 tháng nữa là hoàn thành hành trình 120 ngày!" |
| 3,000 words | 3,000 words learned | milestone_3000_words |
"3,000 từ Oxford = nền tảng B1 vững chắc. Bạn đã sẵn sàng tự học nâng cao." |
| 120-day completion | Complete day 120 | milestone_completion |
"Chúc mừng! Bạn đã hoàn thành lộ trình 4 tháng. Đây là lúc nhận certificate và bước tiếp." |
3.3 Presentation Method
Primary: AI Coach personal message
AI explains WHY milestone matters, không chỉ congratulate:
Example:
[User completes 100 words]
AI Coach:
"Bạn vừa học xong 100 từ đầu tiên!
Điều này có nghĩa gì? Với 100 từ, bạn có thể tạo ra hơn 1,000 câu cơ bản.
Những từ này chiếm khoảng 20% nội dung tiếng Anh hàng ngày.
Mốc tiếp theo: 500 từ (đủ hiểu 50% daily English).
Hẹn gặp bạn ở đó! 🙂"
Support: Checkmark ✓ on Journey Map
✓ Checkpoint 1: First 100 words (Day 4)
100/3,000 words (3.3%)
3.4 Certificate
Only at 4-month completion (Day 120):
- Downloadable PDF certificate
- Simple, professional design (NOT cartoon)
- States: "Đã hoàn thành lộ trình 120 ngày - Nền tảng A2-B1"
- Optional sharing (user decides)
NO certificates for intermediate milestones - tránh gây cảm giác "tích tem"
3.5 Rejected Alternatives
| Alternative | Why Rejected |
|---|---|
| Badges/Icons | Too childish, gamey |
| Animation celebration | Overwhelming, interrupts flow |
| Points/XP system | Tạo cảm giác endless game |
| Early certificates | Devalues final achievement |
4. Daily Feedback (Small Wins)
4.1 After Each Lesson Completion
Primary: Casual AI message
"Hôm nay vậy là đủ rồi. Hẹn mai."
"Hôm nay OK rồi. Nghỉ ngơi đi."
"Hoàn thành rồi đấy. See you tomorrow!"
Tone:
- Casual, low-key
- No celebration
- Acknowledge completion
- Give permission to stop (giảm áp lực)
Background: Progress bar + numbers update silently
[Progress bar fills slightly]
+25 words today | Total: 875/3,000
4.2 Reflection Questions (Conditional)
ONLY trigger when:
- User falling behind schedule
- Missed days (during grace period)
- Detected struggling pattern
Example:
"Thấy bài hôm nay hơi khó phải không?
Có điểm nào mình có thể giúp không?"
NOT daily - dễ overload
4.3 Rejected Alternatives
| Alternative | Why Rejected |
|---|---|
| Daily English tips | Information overload |
| Forced reflection | Thêm công việc, không thư giãn |
| Data-only (silent) | Thiếu human touch |
| Big celebration | Overwhelming cho daily action |
5. Reminder System
5.1 Timing Strategy
Primary: Adaptive, based on user behavior
Flow:
1. Track when user usually learns (first 2 weeks)
2. Detect pattern (e.g., user learns at 9pm most days)
3. Suggest that time as reminder time
4. User can always override
Fallback (new users, no data): 8-9pm
- Least intrusive for working people
- After dinner, wind-down time
- Common self-improvement window
User always has control: Settings allow time customization
5.2 Reminder Content
If user hasn't learned by reminder time:
Subject: Bài học ngắn hôm nay
"Chỉ cần 10-15 phút hôm nay.
Bài học đang chờ bạn."
[Start Today's Lesson button]
Tone:
- Gentle, not urgent
- Short (2 sentences max)
- Clear action button
5.3 Frequency Rule
Maximum 1 reminder per day
- Prevent notification fatigue
- Respect user's attention
- If ignored, wait until next day
No repeated pings within same day
6. Re-engagement (Anti-Churn)
6.1 Two-Stage Intervention
Stage 1: Day 3 (Streak Reset Point)
AI Coach caring question:
"Có chuyện gì không?
Mình thấy bạn vắng mặt mấy ngày rồi.
Cuộc sống có bận quá không?"
Purpose:
- Show human concern
- Open conversation
- NOT reminder/nag
- User cảm thấy được để ý, không bị phán xét
Stage 2: Day 10 (If No Response)
Gentle availability message:
"Chúng tôi vẫn ở đây khi bạn sẵn sàng.
Lộ trình vẫn chờ bạn - không gấp, không áp lực.
Hẹn gặp lại!"
Purpose:
- Keep door open
- Zero pressure
- Respect their space
6.2 Rejected Alternatives
| Alternative | Why Rejected |
|---|---|
| Survey về lý do bỏ | Adds pressure at vulnerable moment |
| Complete silence | Lose connection, seem uncaring |
| Aggressive reminders | Trigger shame/guilt → permanent quit |
| Incentive to return | Feels manipulative |
6.3 After They Return
Welcome back message (if return after 7+ days):
"Chào mừng trở lại!
Bạn có muốn tiếp tục từ bài cũ,
hay bắt đầu lại từ đầu tuần?"
[Continue] [Restart Week]
Give control, không assume
7. Anti-Patterns (Critical Guardrails)
7.1 NO Social Comparison
Absolutely FORBIDDEN:
- ❌ Leaderboards
- ❌ Ranking systems
- ❌ "Your friend learned X words" comparisons
- ❌ Public progress sharing (unless user explicitly chooses)
- ❌ "Top learners" highlights
Rationale: "Quen bị so sánh" - Vietnamese learners already have comparison trauma
7.2 NO Punishment for Slow Learning
System MUST NOT:
- ❌ Show "behind schedule" warnings
- ❌ Create urgency about learning speed
- ❌ Compare to "average user pace"
- ❌ Penalize for taking longer
Principle: "Mọi người có nhịp riêng" - everyone has their own rhythm
Distinction:
- Consistency (streak) = encouraged ✓
- Speed = not judged ✓
7.3 Maximum 1 Notification Per Day
Hard limit: 1 reminder/day maximum
Prevents:
- Notification fatigue
- User disabling all notifications
- Feeling harassed
Applies to:
- Daily reminders
- Re-engagement messages
- Achievement notifications
7.4 Clear Endpoint (Anti-Endless Game)
Always visible: "Day X/120"
Remind of finish line:
- Journey map shows 120-day endpoint
- Milestones reference "còn X ngày nữa"
- Month 3 complete message: "Chỉ còn 1 tháng!"
Why critical:
- Key differentiator from Duolingo/Busuu (endless feeling)
- "Tin vào liệu trình" - trust in defined program
- Prevents exhaustion from unclear goal
8. Implementation Notes
8.1 Data Tracking Required
| Metric | Purpose |
|---|---|
| Daily completion timestamp | Detect learning time pattern |
| Streak history | Show longest streak |
| Days missed count | Trigger grace period logic |
| Last interaction date | Re-engagement timing |
| Milestone completion | Trigger achievement messages |
| Progress % by prescription | Medical chart display |
8.2 AI Coach Message Timing
| Event | Timing | Message Type |
|---|---|---|
| Lesson complete | Immediate | Daily feedback |
| Day 1 missed | No message | Silent (grace period) |
| Day 2 missed | After usual learning time | Gentle reminder |
| Day 3 missed (reset) | Immediately | Caring question |
| Day 10 no response | Morning (9am) | Availability message |
| Milestone reached | Immediate | Capability message |
8.3 UI Components Needed
Dashboard:
- Medical chart progress bars (per prescription)
- Journey map with current position
- Current streak counter
- Longest streak badge (subtle)
- Days remaining: "X/120 days"
Lesson Complete Screen:
- Casual AI message
- Silent progress update
- [Continue] or [Done for today] buttons
Settings:
- Reminder time customization
- Notification preferences
- Privacy controls (no social features)
8.4 Copy Tone Guidelines
AI Coach personality:
- Casual, friendly elder sibling
- Never judgmental
- Encouraging without being pushy
- Uses Vietnamese naturally (not formal)
Forbidden phrases:
- "Bạn bị tụt hậu" (You're falling behind)
- "Cố gắng lên!" (Try harder!)
- "Bạn thua X người" (You lost to X people)
- Any comparison to others
Encouraged phrases:
- "Không sao" (It's okay)
- "Từ từ thôi" (Take your time)
- "Bạn làm được mà" (You can do this)
- "Hôm nay vậy là đủ rồi" (That's enough for today)
9. Success Metrics
9.1 Gamification Effectiveness
| Metric | Target | Measurement |
|---|---|---|
| 7-day retention | >70% | % users active after 7 days |
| 30-day retention | >50% | % users active after 30 days |
| Streak distribution | >60% maintain 3+ days | % users with active/recent streaks |
| Lesson completion rate | >85% | % started lessons completed |
| Re-engagement success | >30% return after day-10 message | % users who return within 7 days of re-engagement |
9.2 Anti-Metrics (What NOT to Optimize)
- ❌ Average learning speed (punishes slow learners)
- ❌ Daily active users (creates pressure for daily use)
- ❌ Notification click-through rate (encourages spam)
- ❌ Competition/comparison engagement (forbidden feature)
10. Open Questions for Implementation
10.1 Technical
- Timezone handling for reminder delivery
- Streak calculation during timezone changes (travel)
- Message queue system for AI Coach timing
- Notification delivery platform (email vs push vs both)
10.2 Content
- Full message library for AI Coach (variations to avoid repetition)
- Capability messages for all milestones (finalize copy)
- Re-engagement message variations (A/B test?)
10.3 Product
- Should grace period be 2 days or 3 days? (Current: 3)
- Longest streak display: always visible or only after reset?
- Certificate design: who creates template?
11. Future Considerations (Post-MVP)
NOT for initial launch, but consider later:
-
Weekly summary email
- Opt-in only
- Show week's progress
- NOT comparison-based
-
Learning time analytics
- Show personal best learning time
- Suggest optimal study schedule
- Private data only
-
Pause feature
- Planned breaks (vacation, exams)
- Freeze streak legitimately
- Requires user intent, not automatic
-
Custom prescription adjustments
- Mid-journey re-diagnosis
- Adjust difficulty based on performance
- User-requested changes
Document History
| Version | Date | Changes | Author |
|---|---|---|---|
| 1.0 | 2025-01-09 | Initial design complete | Brainstorming session |
References & Dependencies
Related Design Documents
- definitions.md: Single source of truth cho streak rules và milestone triggers
- ai-coach-behavior.md: AI message templates cho streak và milestones
- database-schema.md: Fields
streak_current,streak_longest,last_studied_date - user-flow.md: UI components cho Dashboard streak display
Implementation Notes
- Streak calculation runs at 00:00 user timezone daily (cron job)
- Milestone triggers fire immediately when condition met
- AI Coach messages queued và delivered asynchronous
Project Context
.claude/PROJECT_BRIEF.md- Tâm lý đặc trưng người Việt.claude/QUESTIONS.md- Question #3 về Gamification- Design Philosophy: "Streak là để phục vụ người học — không phải để phán xét họ"
END OF DESIGN DOCUMENT