Issue: 009 Project: MoneyMirror Date: 2026-04-02 Agent: Analytics Agent (Metric Plan) Status: COMPLETE — Instrumentation verified by QA
Metric: Second-month Statement Upload Rate Definition: % of users who upload at least one bank statement in their second 30-day period after onboarding. Hypothesis Connection: This is the primary signal of habit formation and the product's durable utility. If a user returns to "clean the mirror" again, the accountability mechanism is working.
| Metric | Definition | Target | Proxy For |
|---|---|---|---|
| Activation Rate | Onboarding Score Revealed → First PDF Upload Success | ≥40% | Motivation of "Money Health Score" hook |
| Mirror Moment Delta | Average (Actual Spend - Perceived Spend) % | ≥50% | Magnitude of the "Perception Gap" |
| Recap Engagement | Weekly Monday Recap Email Open Rate | ≥30% | Proactive coaching effectiveness |
| Advisory Utility | Ratio of "Helpful" vs "Too Harsh" button clicks | ≥8:1 | Coaching tone/accuracy fit |
| Score Velocity | Change in Money Health Score between 1st & 2nd Upload | +5 to 10 pts | Behavioral change (savings/category cuts) |
PostHog is the primary telemetry platform. All events are configured with a single-emission source rule.
onboarding_completed- Trigger: Final onboarding question answered.
- Properties:
perceived_spend_paisa,salary_paisa,primary_worry,current_investor.
statement_parse_started- Trigger: PDF upload initiated.
statement_parse_success(Critical)- Trigger: Gemini parse complete + DB transaction success.
- Properties:
total_debits_paisa,transaction_count,period_days,parse_duration_ms.
mirror_viewed- Trigger: Side-by-side card loaded in dashboard with state.
advisory_feedback_clicked- Trigger: User clicks "Helpful" or "Too Harsh" on an Advisory.
- Properties:
type(Subscription, Leak, BNPL),sentiment(helpful/harsh).
weekly_recap_email_sent- Trigger: Cron worker executes Resend request.
share_intent_sent- Trigger: System share sheet triggered via "Share My Mirror".
statement_parse_timeout- Trigger: 9s Gemini abort controller fires.
statement_parse_failed- Trigger: PDF.js extraction or LLM JSON parse error.
The path from awareness to behavioral change:
- Awareness: Home page visit (
landing_page_viewed) - Setup: Onboarding complete (
onboarding_completed) - Hook: Money Health Score revealed (In-app state)
- Action: PDF Upload Success (
statement_parse_success) - Aha! Moment: Perceived vs Actual comparison viewed (
mirror_viewed) - Retention: Weekly digest opened (Email event)
- Habit: Month 2 Statement Upload (North Star)
| Metric | Threshold | Alert Trigger |
|---|---|---|
| North Star | ≥60% | <40% (Re-examine coaching value) |
| Parse Success Rate | ≥95% | <85% (HDFC format drift / PDF.js issue) |
| Onboarding → PDF % | ≥40% | <20% (Trust barrier or friction) |
| Email Open Rate | ≥35% | <15% (Spam filter or bad timing) |
- Primary Tool: PostHog (Integrated via
posthog-json frontend andposthog-nodeon backend). - Database Logic: Ground-truth calculation for 60-day reduction (Hypothesis #1) to be performed via Neon SQL queries comparing
categorysums across monthly statement batches. - Instrumentation Audit: All 10 core events verified as functional by QA (Ref:
qa-test-009.md). - Dashboarding: Funnel and North Star cohorts to be built in PostHog. Revenue queries to be calculated in Neon against
profilestable.
- Connects to hypothesis? Yes (Perception Gap, 2nd-month retention).
- Simple & measurable? Yes (Upload rate).
- No vanity metrics? Yes (Focus on retention and behavioral delta).
- Verified wired? Yes (Confirmed in
qa-test-009.md).