Stack
Flutter · Riverpod · SupabaseA typed mobile client over Auth, PostgreSQL, RPCs, Edge Functions, secure storage, and push infrastructure.MyCFO
Your money, understood.
A Flutter and Supabase financial platform that converts multi-account, multi-currency data into deterministic cash guidance, forecast trajectories, purchase analysis, and structured AI explanations.
- Financial systems
- Mobile + backend architecture
- AI + monetization



FOR REAL LIFE
TECHNICAL DEEP DIVE
A deterministic finance platform with AI at the edge.
I built MyCFO around a shared domain engine rather than screen-specific calculations. Accounts, transactions, budgets, commitments, savings goals, FX rates, and time are normalized into one financial summary consumed by Home, Insights, Afford?, and Forecast. Riverpod coordinates the client state; Supabase provides authentication, owner-scoped persistence, RPCs, Edge Functions, AI quotas, notifications, and audit-sensitive backend workflows.
Personally ownedProduct and system architecture, Flutter application, financial domain models, Riverpod state graph, Supabase schema and RLS, repository and RPC boundaries, Edge Functions, AI contracts and usage controls, notification infrastructure, automated testing, and the planned RevenueCat subscription layer.
Backend architecture
Deterministic core · Secure AI boundaryOwner-scoped finance data, AI usage, notifications, privacy workflows, forecast snapshots, and admin tooling.Monetization roadmap
RevenueCat · Store billing (planned)The entitlement model and paywall exist; purchases, receipt verification, restore, and webhook sync are not live yet.- 01Auth + owner-scoped data
- 02Repositories + typed models
- 03Multi-currency finance core
- 04Riverpod derived state
- 05AI + quota Edge Functions
- 06RevenueCat entitlement · planned
Financial domain engine
One deterministic core owns every financial number.
Pure Dart models normalize account balances and transaction history into a display currency, then combine budgets, recurring and planned commitments, savings protection, category taxonomy, calendar position, and FX confidence. The engine derives spendable cash, protected money, safe-to-spend, budget pressure, month-end ranges, forecast drivers, and before/after purchase impact from the same inputs.
Home, Insights, Afford?, and Forecast consume the same shared summary, including explicit missing-FX, stale-FX, low-data, and early-estimate states.
AI + backend boundary
AI explains the model; it never becomes the model.
The app computes financial truth locally, then sends compact structured facts to Supabase Edge Functions for purchase explanations and CFO feed content. Backend functions validate and sanitize requests, enforce server-owned daily usage quotas, call the model through a shared AI client, and return schema-shaped responses. The Flutter client merges that language with deterministic facts and retains local fallback copy when AI or the network fails.
Analyze-purchase, CFO-feed, and AI-usage functions isolate model access from the mobile client while keeping cost limits and financial verdicts enforceable in code.
Subscriptions + payments roadmap
Premium is modelled as an entitlement system before billing is connected.
A centralized entitlement domain already defines Free and Premium limits for accounts, budgets, commitments, daily AI actions, advanced Insights, Forecast, and Afford?. Paywall and restore-purchase interfaces are implemented, and the entitlement source explicitly anticipates RevenueCat. The planned integration would connect StoreKit and Google Play Billing through RevenueCat, then synchronize verified CustomerInfo or webhook events into Supabase for server-trusted access control.
Not live yet: there is no RevenueCat SDK purchase call, store checkout, receipt validation, restore transaction, or production webhook reconciliation.
ENGINEERING RANGE
What this build demonstrates.
Financial systems engineering
Modelled multi-currency cash flow, protected money, budgets, commitments, goals, forecast ranges, purchase impact, and confidence states as testable pure logic.
Mobile + backend architecture
Built a Riverpod state graph over typed repositories, Supabase Auth, RLS-protected PostgreSQL data, RPC workflows, secure session storage, snapshots, and provider invalidation.
AI cost + reliability controls
Separated deterministic decisions from generated language using compact contracts, server-owned quotas, shared Edge Function clients, schema-shaped responses, and local fallbacks.
Production readiness
Backed formulas, mappings, providers, view models, security contracts, and critical UI flows with 500+ automated tests, plus timezone, FX, auth, notification, and failure-path handling.
BUILT AND SHIPPED
See the product, not a repository.
NEXT PROJECT / 02
Fifth FormView technical case study