← Back to visual docs

Backlog

Every idea, enhancement, and feature we've discussed and intentionally deferred. Organized as Epics (parent capabilities) → Features (child capabilities). Each feature is categorized into one of five buckets and scored on five attributes — designed to keep stabilization work visible alongside customer features.

Markdown companion: docs/BACKLOG.md

How to read this: Each Epic groups related features under a coherent product theme. Click any Epic to expand. The 5 badges per feature are Category, Effort, Stabilization Importance, Customer Impact, and Business Impact. The Stabilization column was added at Vik's request to keep tech debt and AI/data quality visible — without it, customer features always win priority and the foundation rots.
122 of 122 features
Phase
Status
Category
Effort

Effort

S 1–2 days
M 3–7 days
L 1–2 weeks
XL >2 weeks

Stabilization importance

CRIT blocks correctness or scaling
HIGH directly fixes known issue
MED moderate stabilization
LOW not stabilization

Customer / Business Impact

CRIT launch blocker / major win
HIGH noticeable improvement
MED incremental
LOW nice-to-have
0
Home ↔ Coach ↔ Pulse Parity
Vik's principle: don't keep building when surfaces don't have 1:1 mapping. Two different answers across two screens kills trust. Non-negotiable before anything new ships on Home / Coach / Pulse.
MVP 4 features · ~3–4 weeks
Audit found 8 parity gaps between Home (SafeToSpend.tsx) and Coach (calculate_safe_to_spend): per-account balances, per-bill list, per-card list, setAsideAccounts, loansExcluded, full resolved envelope, typicalDiscretionary.perDayOfWeek, per-bill confidence labels. Plus a known divergence in Smart Pulse (used simplified safe-to-spend instead of the shared service — the Smart Pulse feature itself was removed 2026-06-12).
F0.1Extend calculate_safe_to_spend tool output to full parity
Shipped 2026-06-10 (PR #173): tool output now carries the full Home-parity payload — accountsIncluded, creditCards, setAsideAccounts, loansExcluded, full resolved envelope, full untilPayday.bills/income[] arrays, typicalDiscretionary.perDayOfWeek — via projectSafeToSpendForCoach(). Closed 8 gaps in one shot.
TECHEffort:MStab:CRITCust:LOWBus:HIGH✓ SHIPPED
F0.2Coach system prompt parity principle
Shipped 2026-06-10 (PR #173): explicit principle added to system_prompt.ts — Coach answers must derive from same fields Home shows; never re-compute or estimate. Cheap reinforcement of F0.1.
AI & DATAEffort:SStab:HIGHCust:MEDBus:HIGH✓ SHIPPED
F0.3Smart Pulse → shared service
morning_brief_service.ts computes its OWN simplified safe-to-spend instead of calling shared service. LEARNINGS note acknowledges this as deliberate but it's now stale — Pulse narrates slightly different numbers than Home. Migrate off.
TECHEffort:MStab:HIGHCust:LOWBus:MED✓ SHIPPED
F0.4Pre-launch parity test suite
Shipped 2026-06-10 (PR #173): 8-case parity unit test (coach_safe_to_spend_parity.spec.ts) — every field shown on Home is reachable from Coach output without external tool calls. CI wiring rides F22.1.
TECHEffort:MStab:HIGHCust:LOWBus:HIGH✓ SHIPPED
2
Recurring Detection Coverage
Make Safe to Spend accurate for users with thin Plaid history or irregular bills. The detector misses real recurring stuff (BILT rent is the canonical example).
ROADMAP P1 8 features · ~4–5 weeks
F2.1 is the most impactful unfixed item in Safe to Spend today. User 53's BILT rent ($4,200/mo) misclassified as discretionary inflates Thursday typical-spend from ~$15 to $666.
F2.1Confirm a Recurring Bill UX
Mirror of "Confirm Your Paycheck"; user taps a transaction → flagged with user_confirmed=true on a recurring_streams row → bypasses occurrence-count threshold. Solves BILT misclassification.
AI & DATAEffort:MStab:CRITCust:CRITBus:CRIT
F2.2Lookback bump 365 → 730 days
Plaid gives 2y; we cap at 365. One-line change once users approach 1y of history.
AI & DATAEffort:SStab:LOWCust:LOWBus:LOW
F2.3Anchor-day-snap for biweekly users
Snap stream-derived anchor to recurring_streams.anchor_day (modal weekday) so a holiday-shifted paycheck doesn't drift all future predictions.
AI & DATAEffort:SStab:MEDCust:LOWBus:LOW
F2.4Better detection for irregular cadence
Quarterly insurance, semiannual property tax, variable-amount utilities. Tune detector tolerance per frequency.
AI & DATAEffort:MStab:MEDCust:MEDBus:MED
F2.5First-occurrence bill detection lowering
Seed via merchant-name match against curated "common recurring billers" list (Netflix, Spotify, Bilt, etc.).
AI & DATAEffort:MStab:MEDCust:MEDBus:MED
F2.6Multi-paycheck support
User with 2 jobs / multiple income streams; allow confirming more than one as primary. Builds on shipped v4.5 "Confirm Your Paycheck".
CXEffort:MStab:MEDCust:MEDBus:MED
F2.7Job-change detection
When paycheck source changes, surface re-confirmation prompt: "we noticed your paycheck source changed; want to update?"
AI & DATAEffort:MStab:MEDCust:HIGHBus:MED
F2.8Home-side paycheck confirmation prompt
Currently buried in Settings; surface a banner on Home when paycheck detection is ambiguous so users see the issue without digging.
UI/UXEffort:SStab:MEDCust:HIGHBus:MED
1
Credit Card Intelligence
Treat CC like a smart product. Powered by Plaid Liabilities (production access available).
MVP 7 features · ~5–6 weeks
F1.1Plaid Liabilities integration
Fetch statement_balance, next_payment_due_date, minimum_payment_amount, last_payment_amount, apr per card. Foundation for F1.2-F1.7.
CXMStab:MEDCust:HIGHBus:HIGHMVP
F1.2CC due-date splitting in Safe to Spend
Split "$7,021" into "Due May 5: $X" + "Accumulating for next cycle: $Y". Same total subtracted; clarity goes up.
UI/UXSStab:MEDCust:HIGHBus:MEDMVP
F1.3Per-card due-date alerts
Push N days before each card's due date showing minimum-required amount.
CXSStab:LOWCust:HIGHBus:HIGH→ P1
F1.4Minimum-payment safety nudges
"Pay at least $50 to avoid late fees" — non-judgmental safety net.
CXSStab:LOWCust:MEDBus:MED→ P1
F1.5APR-aware "carrying balance" warnings
Surface APR cost in dollar terms when balance lingers. Direct savings impact.
CXSStab:LOWCust:HIGHBus:HIGHMVP
F1.6Apple Card-style payment simulator wheel
Drag/slider showing 25%/50%/75%/100% payment scenarios with interest impact. Sticky, share-worthy.
CXLStab:LOWCust:HIGHBus:HIGH→ P1
F1.7Missed-payment detection
When last_payment_amount = 0 for closed cycle, surface as alert.
CXSStab:MEDCust:MEDBus:MED→ P1
3
Real-Time Spend Pressure
Close the latency gap between user-swipes-card and runway-updates.
ROADMAP P2 4 features
F3.1Plaid Signal integration
Near-real-time spend tracking. Closes the post-swipe latency gap.
AI & DATALStab:MEDCust:MEDBus:HIGH
F3.2Pending-balance prominence
Surface "Pending: $X" distinctly from cleared.
UI/UXSStab:LOWCust:LOWBus:MED
F3.3Today's typical-discretionary minus today's already-completed swipes
Project "remaining today" instead of "fresh today".
AI & DATASStab:MEDCust:MEDBus:MED
F3.4Cache typicalDiscretionary in spending_forecasts
365-day scan on every Home open is fine at dev scale, p95 regressor at 10K+ users. Schema ready.
TECHMStab:HIGHCust:LOWBus:HIGH
4
AI Coach Quality
Smarter, more accurate Coach responses.
MVP 5 features
F4.1Eval pass rate 70% → 90%+
Current pass rate ~70%. Dedicated session: teach Vik the eval system; identify failing fixtures; fix prompts/tools/grounding.
AI & DATALStab:CRITCust:HIGHBus:HIGHMVP
F4.2Migration to Bedrock AgentCore
Replace custom HTTP tool-use loop with managed agent. Less maintenance.
TECHXLStab:MEDCust:LOWBus:HIGH→ P1
F4.3New eval fixtures for typicalDiscretionary
Coach now returns this field; we have zero fixtures testing it.
AI & DATASStab:HIGHCust:MEDBus:MEDMVP
F4.4Morning Brief / Smart Pulse fed typicalDiscretionary
Moot — Smart Pulse removed 2026-06-12; any revival rides the Epic 13 full rebuild.
CXMStab:LOWCust:MEDBus:MED→ P1
F4.5get_financial_insights tool (anomaly/trend)
Currently MVP+. Anomaly + trend analysis on transaction history.
CXLStab:LOWCust:MEDBus:MED→ P1
F4.6Switch on scheduled eval runs (weekly live 100 + nightly replay of 20)
Written in evals/schedule/ (2026-10-04) but not switched on: ~$20/month on AWS. Load the two launchd files to enable. (Evals Phase 7, deferred 2026-10-04.)
AI & DATASStab:MEDCust:LOWBus:MED→ P1
F4.7Certify per-type judges on held-out owner labels (Phase 6c–6e)
~100 owner yes/no labels per judged type (ambiguity, distress, premise, freshness, stance), split 20/40/40, test once. Until then judge results are provisional. Plan: evals/judges/per_type_judges.md. (Evals Phase 7, deferred 2026-10-04.)
AI & DATAMStab:HIGHCust:LOWBus:HIGH→ P1
F4.8Bias-corrected pass rates with a range on the dashboard (Phase 6f)
The corrected-rate tool exists (npm run corrected-rate); needs certified judges (F4.7). Then retire the old 92-test scripted suite. (Evals Phase 7, deferred 2026-10-04.)
AI & DATASStab:MEDCust:LOWBus:MED→ P1
F4.9Monthly open coding of ~30 fresh real Coach traces + second grader on red lines
Keeps the failure-type map current (round 2 found two new types) and measures grader agreement. (Evals Phase 7, deferred 2026-10-04.)
AI & DATASStab:MEDCust:LOWBus:MED→ P1
F4.10Fix in-app thumbs up/down so real usage feeds the eval loop
chat/[id].tsx never passes messageId and ai_traces.message_id is never written, so feedback is lost. (Evals Phase 7, deferred 2026-10-04.)
CXSStab:LOWCust:MEDBus:MED→ P1
F4.11Model cycle: replay the frozen set on a new model (Sonnet 5 / Opus) before switching
Frozen replays + the same judge make a model switch a measured decision. Also: one-time Bedrock vs Anthropic API parity check (needs an API key). (Evals Phase 7, deferred 2026-10-04.)
AI & DATAMStab:MEDCust:LOWBus:HIGH→ P1
F4.12Decide: is a one-day "This Week" on Sunday the right yardstick for "can I afford X this week?"
Round 2 open product question behind most remaining overcautious Coach answers (failure type 16). (Evals Phase 7, deferred 2026-10-04.)
CXSStab:MEDCust:MEDBus:MED→ P1
5
Spending Categorization (Phase 2 + 5)
Close the 13% Plaid-misses gap with AI fallback, then learn from user corrections.
MVP 3 features
F5.1AI fallback (Bedrock Haiku) for Plaid-uncategorized
~13% of transactions don't have Plaid category. Haiku categorizer fills these in.
AI & DATAMStab:HIGHCust:HIGHBus:MEDMVP
F5.2Category learning loop
User corrections in merchant_category_overrides feed back into AI prompts. Compounds.
AI & DATALStab:HIGHCust:HIGHBus:MED→ P1
F5.3Manual category override mobile UI
Backend exists; UI is MVP+. User taps transaction → "change category" → applies to all future txns from that merchant.
CXMStab:MEDCust:MEDBus:MEDMVP
6
Authentication & Onboarding
Real users instead of dev bypass. F6.1 shipped 2026-06; remainder is Roadmap P2 — the June 23 launch is demo/portfolio, not public. The onboarding experience is in MVP via F17.4.
ROADMAP P2 4 features
F6.1Cognito SMS OTP auth
Currently MVP+, dev-bypassed during sprint. Replaces dev-bypass.
TECHMStab:CRITCust:CRITBus:CRIT✓ SHIPPED
F6.2Multi-bank initial connection flow
Sequential Plaid Link with "add another bank" CTA.
CXMStab:MEDCust:HIGHBus:HIGH
F6.3Plaid Link reconnection flow
Handle ITEM_LOGIN_REQUIRED webhook + reconnect prompt in Settings.
TECHMStab:HIGHCust:HIGHBus:HIGH
F6.4Empty-state messaging for thin-data users
Extend "we'll show your pattern after a few weeks" pattern to all of Safe to Spend.
UI/UXSStab:LOWCust:MEDBus:MED
7
Push Notifications
Re-engagement and timely alerts. Infrastructure present, event triggers incomplete.
ROADMAP P2 3 features
F7.1FCM push notifications wiring
Hook up event triggers; foundation for F7.2, F7.3, F1.3, F14.2.
TECHMStab:HIGHCust:MEDBus:HIGH
F7.2Smart Pulse / Morning Brief push schedule
Moot — Smart Pulse removed 2026-06-12; any revival rides the Epic 13 full rebuild.
CXSStab:LOWCust:MEDBus:HIGH
F7.3Bill due / paycheck arrival notifications
"Your $1,200 rent hits Friday — do you have enough?"
CXMStab:LOWCust:MEDBus:HIGH
8
Evening Reflection
End-of-day mindfulness. Backend intact, frontend removed during MVP scope reduction.
ROADMAP P2 3 features
F8.1Re-enable Evening Reflection mobile UI
Daily reminder at 8pm; tag transactions "worth it" / "regret"; completion tracked via reflection_sessions (streaks removed 2026-06-11).
CXMStab:LOWCust:MEDBus:MED
F8.2Worth-it / regret tagging UX
Long-press transaction → mark; feeds query_reflection_stats worth-it ratio.
CXMStab:LOWCust:MEDBus:MED
F8.3query_reflection_stats AI tool surfaced
Tool removed 2026-10-04 (round-1 error analysis, failure type 14): with the reflection UI gone it always returned empty while the prompt told the Coach to cite reflection tags. Rebuild only together with F8.1.
CXSStab:LOWCust:LOWBus:LOW
9
Save More — Goals, Challenges, and Round-Ups
Outcome-framed: every mechanic in this epic helps users save more. Spending caps and savings goals share the same end.
ROADMAP P3 9 features · ~6–7 weeks
Vik: "The goal of challenges is to help people save more, so I wouldn't see them as two different things." Spending caps + positive savings goals merged into one outcome-framed epic.
F9.1Savings target setting
"Save $5K by August"; goal thermometer.
CXMStab:LOWCust:HIGHBus:HIGH
F9.2Auto-allocate X% of paycheck → savings
Plaid + linked savings account integration. Set-and-forget, highest impact.
CXLStab:LOWCust:HIGHBus:HIGH
F9.3Round-up savings
"Round Starbucks to nearest dollar; send the change to savings."
CXLStab:LOWCust:HIGHBus:HIGH
F9.4Bonus / refund earmarking
When income > expected, suggest saving the excess.
CXMStab:LOWCust:HIGHBus:MED
F9.5Savings nudges from overspend-avoid moments
"You skipped lunch out 3× this week → $45 saved → move to savings?"
CXMStab:LOWCust:MEDBus:HIGH
F9.6Savings progress visualization
Goal thermometer + projected hit-date.
CXMStab:LOWCust:HIGHBus:MED
F9.7Savings streaks
Consistency gamification.
CXSStab:LOWCust:MEDBus:MED
F9.8Spending caps via challenges
Full rebuild — the entire challenges implementation (mobile Progress tab, backend controllers/jobs/policies, 5 DB tables) was removed 2026-06-10 ("less is more" cleanup; recover via git history). NOT a re-enable.
CXLStab:LOWCust:MEDBus:MED
F9.9Challenge templates / AI suggestions
"You spent $400 dining last month — try $300?" Depends on the F9.8 rebuild; the old challenges code no longer exists in the tree.
CXMStab:LOWCust:MEDBus:MED
10
Bill Payment Tracking
Mark bills as paid; suppress them from runway projection.
ROADMAP P2 1 feature
F10.1Swipe-to-mark-paid on bills
Needs schema (per-occurrence is_paid flag).
CXMStab:LOWCust:MEDBus:LOW
12
Production Launch Readiness
Things blocking public/external launch — TestFlight, real Plaid, device QA, scale. Deferred to Roadmap P4: the June 23 “launch” is Epic 23 (demo & portfolio). F12.4 docs/repo audit is absorbed into Epic 23 + the design-system sweep.
ROADMAP P4 4 features
F12.1Plaid Production swap
Currently Sandbox/Development. Production requires Transactions product approval (in flight).
LAUNCHSStab:CRITCust:CRITBus:CRIT
F12.2Real device testing matrix
iOS small + iOS Pro Max + Android. Surface UI bugs.
LAUNCHLStab:HIGHCust:HIGHBus:CRIT
F12.3Performance optimizations for 10K+ users
Hot paths (typical-discretionary scan, recurrence detection, AI tool calls) need profiling. RDS sizing review.
LAUNCHLStab:HIGHCust:LOWBus:HIGH
F12.4Documentation + repo audit
End-to-end pass through every doc, every GitHub Pages visualization, every LEARNINGS.md entry, every README — verify each is current, comprehensive, and accurate. Clean up GitHub: stale branches, orphan PRs, untriaged issues. Tidy local Git: drop ignored junk (.expo/, .obsidian/, etc.), confirm .gitignore is right. The bar: anyone reading the docs can understand the app without needing to ask Vik or Claude.
LAUNCHMStab:HIGHCust:LOWBus:HIGH
13
Smart Pulse Upgrade — REMOVED 2026-06-12
The entire Smart Pulse / Morning Brief feature was deleted 2026-06-12 ("less is more"). Every item below is now a full rebuild, not an upgrade. IDs stay canonical.
9 features
❌ FEATURE REMOVED 2026-06-12. Home card, detail screen, all 4 morning-briefs endpoints, MorningBriefService, the Coach query_morning_brief tool, the morning-briefs queue + jobs, and the morning_briefs + morning_brief_settings tables (migration 1776000000021) are gone — recover via git history. Original epic pitch: "Today's Pulse is one-shot Haiku output with limited differentiation." Vik: "I'm not sure the smart pulse insights are giving us a whole lot at this point."
F13.1Adaptive window for Morning Brief
Currently fixed 7-day; adjust to user's payday cadence.
AI & DATAMStab:LOWCust:LOWBus:LOW→ P1
F13.2Pulse history scrollable timeline
Full rebuild — the hidden Pulse History screen, its Home-header flame/streak-pill entry, the GET /morning-briefs list/show endpoints, AND (same day, follow-up PR) the entire backend streak feature — StreakService, /streaks endpoints, user_streaks + streak_milestones tables (dropped by migration 1776000000017) — were removed 2026-06-11 ("less is more" cleanup; recover via git history). NOT a re-enable — morning_briefs rows still accrue daily so brief data survives, but streak history does NOT (tables dropped).
CXMStab:LOWCust:MEDBus:MED→ P1
F13.3Pulse personalization
Adapt to time of day, recent activity, day-of-week patterns.
AI & DATAMStab:LOWCust:MEDBus:HIGH→ P1
F13.4Tappable Pulse → action deep-link
"You could save $80/mo by paying $1K extra to Chase" → tap → CC payment / transfer screen.
CXMStab:LOWCust:HIGHBus:HIGHMVP
F13.5Multi-pulse-per-day
Morning brief 8am, midday nudge if overspent, evening reflection prompt.
CXLStab:LOWCust:MEDBus:HIGH→ P1
F13.6Pulse "why" modal
Tap Pulse → see prompt context (transparency).
UI/UXSStab:LOWCust:MEDBus:LOWMVP
F13.7Pulse-specific eval suite
Separate fixtures from Coach evals; pulse prompts have their own quality bar.
AI & DATAMStab:HIGHCust:MEDBus:HIGHMVP
F13.8Hybrid rule-based + AI pulse
Fall through to deterministic rule when AI is uncertain.
AI & DATAMStab:MEDCust:MEDBus:MEDMVP
F13.9Pulse reactions (👍/👎)
Feed signal back into prompt tuning.
AI & DATAMStab:LOWCust:LOWBus:MED→ P1
14
Proactive Cash Health Alerts
Detect upcoming cash crunch. Alert + actionable suggestions. Cash advances out of scope (we're not a bank).
STRETCH 5 features
Vik: "Based on the upcoming bills and the safe-to-spend amount, the ability to find out: hey, there are 2-3 upcoming bills coming, but given the runway you have, you're running out of cash. The alert itself is the feature."
F14.1Runway shortfall detection algorithm
Detect when (current runway − sum-of-bills-due-in-next-N-days) < threshold. Configurable per-user. Runs in generate_predictions_job.ts.
AI & DATAMStab:MEDCust:HIGHBus:HIGHSTRETCH
F14.2Push alert delivery
Fires when shortfall detected; deep-links into a detail screen. Depends on F7.1.
CXSStab:LOWCust:HIGHBus:HIGH→ P1
F14.3Shortfall detail screen with suggested actions
List upcoming bills, show the gap, suggest options: "transfer $X from savings", "delay this bill", "you typically spend $Y/day — cut back N days?"
CXMStab:LOWCust:HIGHBus:HIGHSTRETCH
F14.4In-app bill defer / reminder
Let user mark a bill "I'll pay this on [later date]"; updates runway projection.
CXMStab:LOWCust:MEDBus:MED→ P1
F14.5Out-of-app cash advance referral (deferred)
Partnership with cash-advance product (Earnin, Brigit). Out of scope unless we hit a revenue model that justifies it.
CXMStab:LOWCust:MEDBus:MED→ P1
15
User Feedback & Data Quality Loop
Every inferred data point should have a user-correction path. Corrections feed back into AI to improve future predictions.
MVP 8 new features + 8 cross-listed from other epics
Vik: "Right now there is no manual override on any feature. Group all of this into its own category. Take all this and feed into our AI coach and Safe to Spend to get it better."

Cross-listed (already in other epics): F2.1 Confirm-a-recurring-bill · F2.6 Multi-paycheck · F2.7 Job-change detection · F5.1 AI fallback · F5.2 Category learning loop · F5.3 Manual category override UI · F8.2 Worth-it/regret tagging · F13.9 Pulse reactions
F15.1Outlier transaction flagging
Mark a transaction as "one-time, exclude from averages." Inverse of F2.1. Closes a known typical-discretionary distortion.
AI & DATAMStab:HIGHCust:HIGHBus:HIGHMVP
F15.2Account-type override
"Treat this checking as savings — don't count toward Safe to Spend." User control over v4.9 setAsideAccounts boundary.
CXSStab:MEDCust:MEDBus:MEDMVP
F15.3Optional vs. must-pay bill tagging
Differentiate Spotify (cancellable) from rent (committed). Powers F14.3 "what could you cut?" suggestions.
AI & DATAMStab:MEDCust:HIGHBus:HIGH→ P1
F15.4Coach response feedback (👍/👎 + free-text)
In-app feedback on each Coach response, fed into eval fixture pipeline. Compounds with F4.1.
AI & DATAMStab:HIGHCust:LOWBus:HIGHMVP
F15.5Merchant identity correction
"This isn't 'Amazon' — it's a local salon called 'Amazon Salon'." Powers a global merchant-alias map.
AI & DATAMStab:MEDCust:LOWBus:MED→ P1
F15.6Income amount override
Let user input expected paycheck amount when only one observation has happened. Addresses v4.5 "need 2+ observations" gap.
AI & DATASStab:MEDCust:MEDBus:MEDMVP
F15.7Centralized "Data Accuracy" Settings page
One place to see all your overrides + confidence flags + correction history. Transparency win.
UI/UXMStab:LOWCust:MEDBus:MEDMVP
F15.8Feedback → AI prompt evolution loop
Automated mechanism to roll user corrections into prompt context for next AI call. The meta-system that makes every other Epic 15 item compound. The AI moat.
AI & DATALStab:HIGHCust:LOWBus:HIGH→ P1
F15.9One merchant per transfer counterparty
The merchant normalizer mints a new merchant for nearly every transfer row, so grouping, recurrence detection and pending/posted matching miss repeats. Found by the real-data evals (2026-10-04); the Coach groups transfers by normalized description as a workaround.
AI & DATALStab:HIGHCust:LOWBus:HIGH→ P1
16
Design System Audit & Compliance
Make DESIGN_SYSTEM.md the source of truth. Code conforms; lint catches drift.
MVP 4 features
Vik: "I know we have a design-system.md, but I need one epic to really make sure our design system is comprehensive, accurate, deep, and broad. Use that to validate whether our code is actually following our design-system.md file."
F16.1Design system audit
Read DESIGN_SYSTEM.md, gap-check against actual code. Produce a delta report: documented vs hardcoded vs missing.
UI/UXMStab:HIGHCust:LOWBus:MEDMVP
F16.2Token coverage lint
Automated rule: fail CI when hardcoded colors/spacing/typography appear outside tokens.ts. Blocks regression.
TECHMStab:HIGHCust:LOWBus:MEDMVP
F16.3Component inventory
Catalog every UI component, document props/variants/states/token usage. Storybook or simpler MD table.
UI/UXMStab:MEDCust:LOWBus:MED→ P1
F16.4DESIGN_SYSTEM.md comprehensive rewrite
Expand: tokens, components, spacing, typography, motion, haptics, accessibility, layout grids.
UI/UXLStab:HIGHCust:LOWBus:MEDMVP
17
Design Elevation
Good → great. Visual polish, motion, micro-interactions, brand identity. Probably involves a designer (consultant or hire).
MVP 8 features
Vik: "I want to really elevate the design that I have today. While it's good, I think it can be great." Don't fund this epic at the expense of Epic 0 (parity), Epic 2 (BILT detection), Epic 4 (AI quality). Polish on a stable foundation.
F17.1Visual design audit (vision exercise)
Discovery: what's good, what's basic, what's competitive, what's the brand we want to project. Possibly paid consultant.
UI/UXMStab:LOWCust:HIGHBus:HIGHMVP
F17.2Motion + haptics system
Opinionated transitions, micro-interactions, haptic patterns (success haptic on bill confirm, subtle bounce on Safe to Spend value change).
UI/UXLStab:LOWCust:HIGHBus:HIGHMVP
F17.3Empty / error / loading states design pass
Currently afterthoughts. Make them feel intentional, on-brand, sometimes delightful.
UI/UXMStab:LOWCust:MEDBus:MEDMVP
F17.4Onboarding redesign
Phone → OTP → biometric → Plaid Link should feel premium, not generic.
UI/UXLStab:LOWCust:HIGHBus:HIGHMVP
F17.5Color / brand identity refresh
Current palette is functional; explore distinctive identity (think Cash App green, Mint coral).
UI/UXLStab:LOWCust:HIGHBus:HIGH→ P1
F17.6Typography refresh
Expressive type for hero numbers, more confident hierarchy. Maybe a custom display face.
UI/UXMStab:LOWCust:MEDBus:MED→ P1
F17.7Iconography system
Consistent custom icons replacing the Ionicons stock set; differentiates from "looks like every other RN app."
UI/UXLStab:LOWCust:MEDBus:MED→ P1
F17.8Component library expansion
Promote reusable bits we've built (DrillDownRow, IOSListRow, AnimatedNumber) into a documented system.
UI/UXMStab:MEDCust:LOWBus:MEDMVP
18
Net Worth Tracking
Expand from "this-paycheck cash flow" to "full personal balance sheet." Fidelity, Schwab, Robinhood + mortgages + manual assets. Massive in scope; gated on Epic 20 (Security).
ROADMAP P4 6 features · ~10–12 weeks
Vik: "A totally new vertical. Connect to Fidelity, Charles Schwab, Robinhood. What is my net worth based on how much money I have, how it's growing, and all the mortgages and loans pending. I know it's going to be a massive project of its own."
F18.1Investment account integration
Plaid Investments product (Fidelity, Schwab, Robinhood, Vanguard). Pull holdings, balances, performance.
CXXLStab:MEDCust:HIGHBus:HIGH
F18.2Loan / mortgage liability tracking
Extend Plaid Liabilities to mortgages, auto loans, student loans (separate from Epic 1 CC liabilities).
CXLStab:MEDCust:HIGHBus:HIGH
F18.3Net worth dashboard surface
Single screen: total assets − total liabilities = net worth, with breakdown.
CXMStab:LOWCust:HIGHBus:HIGH
F18.4Net worth time series
Track growth over time; weekly/monthly snapshots in net_worth_snapshots; chart progression.
CXMStab:LOWCust:HIGHBus:MED
F18.5Asset allocation breakdown
Equity / bonds / cash / real estate / crypto split visualization.
UI/UXMStab:LOWCust:MEDBus:MED
F18.6Manual asset entry
Home value (Zillow API or user-entered), vehicles (KBB), valuables. Plaid won't have these.
CXMStab:LOWCust:MEDBus:MED
19
What-If Scenario Modeling
Form-based what-if UI outside the Coach chat. Reuse the safe-to-spend / payday / typical-discretionary engine to project under different assumptions.
ROADMAP P3 6 features · ~6–8 weeks
Vik: "I want a way to say 'what if' and let people fill in their scenario. We model things out, give them charts and a different UX to help them make the decision. I think this is going to be a big feature unlock."
F19.1What-if input UI (form-based, not chat)
Structured "income changes / expense changes / one-time events" inputs; couple-tap entry.
CXLStab:LOWCust:HIGHBus:HIGH
F19.2Scenario projection engine
Extends safe_to_spend_service.ts with override deltas; produces 3, 6, 12-month forward projections.
AI & DATALStab:MEDCust:HIGHBus:HIGH
F19.3Scenario result visualization
Side-by-side baseline vs scenario charts (runway, savings projection, debt paydown).
UI/UXMStab:LOWCust:HIGHBus:MED
F19.4Scenario library
Save, name, revisit scenarios ("if I take new job", "if we have kids"); compare two saved scenarios side-by-side.
CXMStab:LOWCust:MEDBus:MED
F19.5Common what-if templates
Pre-built scenarios: "raise", "lose job", "buy car", "have a kid", "move cities", "refinance mortgage".
CXMStab:LOWCust:HIGHBus:MED
F19.6Coach → Scenario handoff
When a Coach answer is what-if-ish, offer "want to see this projected? open scenario builder" deep-link.
CXMStab:LOWCust:MEDBus:MED
20
Security Audit & Hardening
Distinguished specialist review of current security model. Gates Epic 18 (Net Worth) — investment-account access widens blast radius substantially. Long lead time on engagement.
MVP 6 features · ~6–8 weeks
Vik: "Before I bring in all these investment accounts, I need a distinguished security specialist to take a look. What's working, what's not, what should we do to build a safer infrastructure so my data is not misused by anyone with access to my laptop, mobile app, or cell phone."
F20.1Distinguished security specialist engagement
Paid consultant: threat model, encryption coverage, JWT scoping, IAM tightness, mobile attack surface, dev hygiene. Deliverable: prioritized findings doc. Lead time 2–4 weeks — start the conversation now.
TECHMStab:CRITCust:MEDBus:CRIT→ P1
F20.2Threat model documentation
Capture what we're protecting against (lost laptop, stolen phone, malicious roommate, compromised dev machine) and what controls exist for each. Pairs with security-model-map.html.
TECHMStab:HIGHCust:LOWBus:HIGHMVP
F20.3Mobile-side hardening
Secure-enclave token storage, biometric on every Coach query, screen-blur on background, jailbreak/root detection, certificate pinning.
TECHLStab:HIGHCust:MEDBus:HIGH→ P1
F20.4Backend penetration test
Third-party pen-test: OWASP top-10, auth-bypass, IDOR, privilege escalation. Address findings in priority order.
TECHLStab:HIGHCust:LOWBus:HIGH→ P1
F20.5Local-machine data hygiene
Encrypted env files, redacted logs everywhere, dev-bypass impossible in any non-localhost environment, hard-fail on suspicious env states.
TECHSStab:HIGHCust:LOWBus:MEDMVP
F20.6Bug bounty / external red team
Pre-launch and ongoing. HackerOne or self-hosted disclosure pipeline.
LAUNCHMStab:HIGHCust:LOWBus:MED→ P1
21
Eval Dashboard Comprehensiveness
Today's eval dashboard is stale by ~6 weeks of feature work. Epic 4 is "raise pass rate"; Epic 21 is "make sure pass rate measures the right thing in the first place." Must come first.
MVP 7 features · ~5–6 weeks
Vik: "The whole eval dashboard for the AI coach — I don't think it's very accurate, and I don't think it's comprehensive. We should think through the metrics, the dimensions, the criteria, and the ground truth."

F21.1 + F21.5 are the two-day audit. Run them before committing weeks to F4.1.
F21.1Eval coverage audit
Gap-check shipped features against existing fixtures. List what's covered, what's missing. Read evals-map.html + evals-dashboard.html against actual tool_executor.ts.
AI & DATAMStab:CRITCust:LOWBus:HIGHMVPPARTIAL
F21.2New fixtures for shipped features
typicalDiscretionary, payday resolution (user_setting + inferred), setAsideAccounts boundary, multi-paycheck, BILT-like recurring detection edge cases. ~30+ new fixtures.
AI & DATAMStab:HIGHCust:LOWBus:HIGHMVP
F21.3Ground-truth dataset rebuild
The dev user's real account data + 5–10 synthetic personas (thin data, biweekly, multi-job, high CC debt, retiree). Hand-curated, version-controlled.
AI & DATALStab:HIGHCust:LOWBus:HIGH→ P1
F21.4Multi-dimensional scoring
Beyond "did the model say the right thing": accuracy, groundedness, helpfulness, hallucination rate, refusal correctness, latency, token cost. Each dimension gets its own threshold.
AI & DATAMStab:HIGHCust:LOWBus:HIGHMVP
F21.5Dashboard accuracy fix
Reconcile what evals-dashboard.html claims against actual eval runs. The dashboard mocks/fakes some metrics today; either back them with real data or remove them.
AI & DATAMStab:HIGHCust:LOWBus:HIGH✓ SHIPPED
F21.6Pulse-specific eval suite (cross-listed F13.7)
Moot — Smart Pulse removed 2026-06-12; rides the Epic 13 full rebuild if revived.
AI & DATAMStab:HIGHCust:MEDBus:HIGHMVP
F21.7Eval pass rate publishing
Per-PR comment + per-release report; trend tracking; alert on regression.
TECHSStab:HIGHCust:LOWBus:MEDMVP
22
CI/CD Pipeline Stand-Up
CI and AI Evals went red on every run and were disabled 2026-05-28 (not deleted) to stop failure-email spam. Deploy has never been exercised. Right now there is no automated quality gate on main. Tracked in #102.
MVP 4 features · ~3–4 weeks
Three hand-rolled workflows (ci.yaml, evals.yml, deploy.yaml) + GitHub's built-in Pages deploy (green — leave it alone). The scaffolding is good; it was just never finished. This epic makes it real and turns it back on.

Cross-listed CI work: F0.4 (parity test suite), F16.2 (token-coverage lint), F21.7 (eval pass-rate publishing) — fold in once F22.1 is green.
F22.1Fix + re-enable CI
Get lint/typecheck/unit green against the real backend, then gh workflow enable CI. Postgres+Redis services and full test-env wiring already exist in ci.yaml — these are real code/setup failures to fix, not infra to rebuild.
TECHMStab:HIGHCust:LOWBus:MEDMVP
F22.2Fix + re-enable AI Evals
Verify the ANTHROPIC_API_KEY secret + evals/ scripts (eval:ci, eval:nightly, dashboard) run in CI; confirm the nightly dashboard auto-commit works; then re-enable. Compounds with F4.1 / F21.7.
TECHMStab:HIGHCust:LOWBus:HIGHMVP
F22.3Validate Deploy pipeline end-to-end
Exercise deploy.yaml once: ECR push, k3s SSH rollout, migration step. Confirm secrets (AWS_DEPLOY_ROLE_ARN, K3S_HOST, K3S_SSH_KEY) are set. Currently never run — an unknown-good.
LAUNCHMStab:HIGHCust:LOWBus:HIGH→ P1
F22.4Branch protection on main
Require CI green before merge, once CI is reliable (F22.1). Turns the pipeline from advisory into an actual gate.
TECHSStab:HIGHCust:LOWBus:MEDMVP
23
Demo & Portfolio Launch
This is what “launch” means for the June 23 MVP. The audience experiences Tide through per-feature demo videos on the portfolio and live interview walkthroughs (July–Aug 2026) — so video production, demo-data quality, and the portfolio surface are first-class launch deliverables.
MVP 4 features · ~1.5–2 weeks
Sequencing: F23.2 early (demo data feeds every video) · F23.1 scripts drafted per feature as each MVP slice ships · F23.3 + F23.4 final week · recording June 21–23 once the app is frozen.
F23.1Per-feature video production plan + recordings
One video per MVP feature (Home/Safe to Spend, Coach, feedback loop, onboarding, …): script outline, screen-recording checklist (simulator vs device, resolution, length), publish pipeline. The feature list IS the MVP scope table at top.
LAUNCHMStab:LOWCust:HIGHBus:CRITMVP
F23.2Demo-data curation
User 53's real data must look right on camera: no $666 Thursdays (use F15.1 outlier flagging), clean categories, sensible upcoming bills, PII-safe framing for anything recorded.
LAUNCHSStab:MEDCust:HIGHBus:HIGHMVP
F23.3Portfolio video gallery page
projects/tide/ on the portfolio repo gets a feature-video gallery — per-feature cards → video + one-paragraph story — consistent with the docs design system (F16.4).
LAUNCHMStab:LOWCust:HIGHBus:CRITMVP
F23.4Docs-mirror sync
Shipped 2026-06-11: scripts/sync-portfolio.sh (manifest-driven from .claude/doc-map.json, --check drift mode) + /ship step 6.6 keep vikkybharadwaj.github.io/projects/tide/*.html in lockstep with tide/docs/*.html.
LAUNCHSStab:MEDCust:LOWBus:MED✓ SHIPPED