Phase 5: Intelligence & Analytics -- PRD
Product: Objectuve (codename: Enkidu) Phase: 5 (Intelligence & Analytics) Status: Discovery / Design Date: April 2026
1. Problem Statement
By Phase 5, users have accumulated a significant amount of data: habits checked, goals completed, communities joined, moods logged, and AI interactions held. However, Objectuve currently treats all data reactively—it simply reflects the past.
If Objectuve wants to be an effective coach, it needs to move from reactive tracking to proactive intelligence. We need to help users uncover blind spots in their own behavior, optimize their environment for success, and present their data in ways that shift their perspective.
Phase 5 transforms the accumulated data into actionable insights. This PRD focuses on the four most critical features of the Intelligence & Analytics phase.
2. Priority Features Scope
- Personal Analytics Dashboard (Self-Reflection at Scale)
- Mood-Goal Correlation Insights (Cross-Domain Analysis)
- Goal Auto-Adjustment (Adaptive Difficulty)
- Smart Notification Timing (Action Optimization)
Phase 5 Success Metrics
| Metric | Target (90 days post-launch) |
|---|---|
| Check-in completion within 30 min of smart push | +25% vs baseline |
| Auto-adjustment suggestion accept rate | 50%+ |
| Analytics Dashboard DAU percentage | 15% of DAU |
| Long-term retention (90-day) lift | +10pp |
3. Feature 1: Personal Analytics Dashboard
3a. Concept & Value
Currently, users can only see their progress strictly within the context of a single goal (via the Goal Detail page). The Personal Analytics Dashboard provides a macro view using a new /analytics route. It answers: "How am I doing generally across my whole life?"
3b. User Stories
- US-1: As a user, I want an activity heatmap (like GitHub contributions) for the whole year so I can see my overall consistency.
- US-2: As a user, I want to see which category of goals I'm best at completing (Health, Career, Financial), so I understand my strengths.
- US-3: As a user, I want a "Month in Review" summary showing total events logged and XP earned compared to previous months.
3c. UX Flow
- Access: New "Analytics" icon in the Bottom Tab Bar or Side Menu.
- Top Level Overview: The page loads with a sticky header. Below it, the primary visualization is the "Year in Review" Activity Heatmap. Darker squares = more habits completed that day.
- Drill Downs: Card-based widgets beneath the heatmap:
- Category Radar Chart: Progress spread across user-defined categories.
- Current Longest Streaks: A ranked list of active streaks.
- Time-of-day Chart: A bar chart showing when the user is most active (e.g., Morning, Afternoon, Evening).
3d. Engineering Notes
- Frontend Stack: Introduce
chart.jsandvue-chartjsto the Vite bundle. Keep visualizations lightweight. - Backend Querying: Complex aggregations can crush the database. Create a new
AnalyticsServicecaching materialized views or highly optimized pre-aggregated Redis keys running nightly forCategoryProgressandTimeOfDay.
4. Feature 2: Mood-Goal Correlation Insights
4a. Concept & Value
Objectuve has a Mood Logger and a Goal Logger. Currently, they don't talk to each other. By passing both datasets to the AI Coach, we can generate unique insights: "You tend to rate your mood as 'Low' on days you skip the gym, but 'High' when you read before bed."
4b. User Stories
- US-1: As a user tracking my mood and my habits, I want the AI Coach to point out correlations I might be missing.
- US-2: As a user, I want these insights presented visually as well as textually, so the correlation makes sense to me.
4c. UX Flow
- Trigger:
GenerateAiCheckInPromptsJob(or a dedicated Insight job) looks at users with at least 14 days of concurrent mood and goal data. - The Insight Card: A special "Insight" card appears in the main Feed.
- Card Content:
- Heading: "We noticed a pattern."
- AI Coach Text: "You've marked your mood as 'Stressed' on 4 out of the 5 days you skipped 'Meditation' this month."
- Action CTA: "Add Meditation to Today."
4d. Engineering Notes
- Data Prep: The Job queries
MoodLogandGoalEventjoined byuser_idandcreated_at::date. - AI Prompting: Pass structured JSON of the joined data to
Ai::CoachService.generate_insight, with strict instructions to only note strong correlations, not causation, and keep the tone supportive (based on Meet Coach preferences).
5. Feature 3: Goal Auto-Adjustment
5a. Concept & Value
Goals are often set ambitiously and fail rapidly. If a user sets a goal to "Run 5 miles every day" and only manages 1 mile every 3 days, the expanding gap becomes discouraging. Auto-Adjustment monitors failure rates and suggests modifying the goal to match reality, preserving the user's momentum and ego.
5b. User Stories
- US-1: As a user struggling to meet an ambitious target, I want the app to kindly suggest a more achievable target instead of just letting me fail.
- US-2: As a user crushing my targets easily, I want the app to suggest increasing the difficulty to keep it challenging.
5c. UX Flow
- Analysis: Background jobs detect a Goal that is trailing target metrics by >40% over two weeks, or exceeding by >40%.
- Coach Intervention: The Coach creates a modal or feed insight: "You're consistently hitting 3 days a week on 'Running' instead of the targeting 5. That's still a great habit! Want to adjust the goal to 3 days/week to keep your streaks alive without the stress?"
- Resolution: A single-tap "Yes, adjust it" button updates the
Goaltarget parameters seamlessly.
5d. Engineering Notes
- Implementation: The
Goalmodel needs logic in a newGoalPaceServiceto calculate expected vs. actual completion trajectory. - Mutation: Create an
AdjustGoalTargetinteraction that modifies the goal safely without breaking history.
6. Feature 4: Smart Notification Timing
6a. Concept & Value
Notifications sent at a static time (e.g., exactly 8:00 AM) are easily ignored if they conflict with a user's schedule. Smart Notification Timing looks at when the user actually completes their goals and sends the push notification 15-30 minutes before that optimal window.
6b. User Stories
- US-1: As a user who works evening shifts, I want my habit reminders to arrive in the afternoon when I actually wake up, not at a default 8 AM.
- US-2: As the product owner, I want to maximize push notification open rates by avoiding bad times.
6c. UX Flow
- User Setting: In Settings > Notifications, users can swap "Fixed Time" for "Smart Timing".
- The Output: The user no longer needs to manage time zones or schedules; the app nudges them exactly when they are historically most receptive.
6d. Engineering Notes
- Data Engineering: A weekly Cron calculates optimal
push_hourfor each user by groupingCreateGoalEventtimestamps, finding the mode or median for active hours. - Execution: When
SendPushNotificationqueues, it defers to the user'spush_hourrather than executing immediately. - Privacy: Computed server-side, no GPS or location tracking required—only timestamp metadata.
7. Delivery Strategy
Sprint 1: Data Engineering: TimeOfDay aggregation, Chart.js implementation. Sprint 2: Personal Analytics Dashboard UX. Sprint 3: Mood/Goal correlation AI prompt engineering & UI cards. Sprint 4: GoalPaceService and Auto-Adjustment. Sprint 5: Smart Notification Timing algorithm & rollout.
Last updated: 2026-05-04