v1.2 — Meet Coach: World-Class Coaching Personalization
Every Objectuve user discovers Coach during onboarding and can shape a coaching relationship that feels personal — six personas that sound genuinely different, tone scale that shifts voice, and the whole flow complete in under 60 seconds.
Summary
Before v1.2, Coach ran as a single neutral voice: every user got the same generic check-in prompts and the same encouragement copy regardless of who they were. Users who wanted a drill-sergeant Coach got the same text as users who wanted a gentle Coach. Feedback called it "AI-ish," flat, and forgettable.
v1.2 rebuilt the coaching stack around a personality preamble that gets injected into every CoachService call. Users pick one of six distinct personas (supportive, motivational, analytical, playful, zen, drill-sergeant), set a tone dial from 1–5, pick a focus area, and choose a frequency. Every subsequent Coach interaction — check-in prompts, milestone messaging, insights, description refinement — inherits that preamble. Frequency filtering honours the user's cadence preference in GenerateAiCheckInPromptsJob. A return-visit summary + edit mode lets users revise their setup without re-running the wizard. Completing MeetCoach.vue the first time awards a "Coach's Pick" badge + 50 XP via the existing gamification system.
Goal
Every user discovers Coach during onboarding and can shape a coaching relationship that feels personal — distinct personas sound genuinely different, preferences affect every coach interaction, and the UX is smooth enough to complete in under 60 seconds.
Scope — What Shipped
coaching_preferencescolumn onUser— persona, tone, focus, frequency,coach_configured_at.- Personality preamble injected across all four
CoachServicemethods (generate_insight,generate_check_in_prompt,generate_milestones,refine_description) with a nil-safe fallback. MeetCoach.vuewizard — 6 personas × 5 tone steps × focus areas; completes in < 60s with smooth transitions.- Accessibility pass — ARIA roles, focus trap, keyboard-only navigation, dark-mode correctness, reduced-motion support.
- Return-visit summary + edit mode — users who've already configured Coach see a summary card with an edit affordance, not the full wizard.
- Gamification wire — first save awards
Coach's Pickbadge + 50 XP via the existingUserActionmilestone. - Coach greeting adapts to return visits — copy acknowledges "welcome back" context.
- Frequency filtering in
GenerateAiCheckInPromptsJob— users withweeklyfrequency don't get daily prompts. - Discovery + onboarding wiring — Coach slide added to
OnboardingWizard.vue; modal nudge surfaces setup for users who signed up before v1.2 shipped. - QA validation — all 6 personas produce distinct LLM output validated at tones 1, 3, and 5 (32 distinct combinations tested).
Phases
| Phase | Name | Status | Plans | Highlights |
|---|---|---|---|---|
| 10 | Coach Personalization Backend | Shipped | 3 | Personality preamble wired into all 4 CoachService methods; frequency filtering; RSpec coverage |
| 11 | UX Polish | Shipped | 4 | Accessibility, dark mode, responsive layout, reduced motion, error states |
| 12 | Return Visit & Gamification | Shipped | 3 | Summary/edit mode, "Coach's Pick" badge + 50 XP, adaptive greeting |
| 13 | Discovery & Onboarding | Shipped | 4 | Coach slide in OnboardingWizard; modal nudge for unconfigured users |
| 14 | QA & Validation | Shipped | 4 | 6 personas × 3 tone points validated for distinct output |
Key Decisions
- Preamble, not per-method prompts — one shared preamble injected at the top of every
CoachServicecall keeps tone consistent across features. Adding a new feature inherits personalization for free. coaching_preferencesalways non-nil at integration level — the service acceptscoaching_preferences: nil(pre-v1.2 users) and falls back to a neutral default, so rollout didn't require backfilling every existing user.- Gamification uses existing
UserAction— first-save triggers reuse the existing badge + XP side-effect pipeline; no new event type required. - Wizard, not a settings screen — completion rate matters for activation. A wizard with progress dots + smooth transitions converts better than a form, even though a form would be simpler to build.
- Modal nudge, not forced intercept — pre-v1.2 users see a one-time dismissible modal pointing at the setup flow. No interruption of their main session.
Requirements Coverage
All requirements satisfied across 5 phases. Categories span backend personalization (PERS-*), UX polish (UX-*), gamification (GAMF-*), discovery (DISC-*), and QA (QA-*).
Full list: v1.2-REQUIREMENTS.md.
Outcomes
- Coach voice varies by user. Blind-test validation showed six personas produce measurably different output.
- Personalization compounds. Every future Coach feature inherits the preamble without extra wiring.
- Coach is discoverable. New users meet Coach during onboarding; existing users hit a nudge modal.
- Gamification loop closed. Completing setup rewards the user — the same loop as goal completion.
Related Artifacts
- Roadmap: v1.2-ROADMAP.md
- Requirements: v1.2-REQUIREMENTS.md
- Phase artifacts:
.planning/milestones/v1.2-phases/ - Milestone audit: none (v1.2 did not produce a standalone audit; roadmap status was updated inline as phases completed)
- PRD: Meet Coach PRD
- Git tag: v1.2
- Merge PR: #311
Related Commits
6ee2882b6—chore: complete v1.2 milestone — Meet Coach World-Class Coaching Personalization7385ef5fd—feat: add Meet Coach Phase 1 MVP — personalized AI coaching preferences (#311)97b275f97—docs: create milestone v1.2 roadmap (5 phases)
Last updated: 2026-05-22