Gamification Design - Learn English Zero

Version: 1.1 Date: 2026-01-09 Status: Design Complete - Ready for Implementation

Constants Reference: Xem definitions.md cho 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.md section "6.3 Context Modules" cần tạo template cho TẤT CẢ milestones này. Xem definitions.md Section 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:

  1. Weekly summary email

    • Opt-in only
    • Show week's progress
    • NOT comparison-based
  2. Learning time analytics

    • Show personal best learning time
    • Suggest optimal study schedule
    • Private data only
  3. Pause feature

    • Planned breaks (vacation, exams)
    • Freeze streak legitimately
    • Requires user intent, not automatic
  4. 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

  • 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