What we solved
Private clients at an Indian wealth advisor (ISOLN Wealth, AMFI-registered, ARN-147547) hold investments spread across mutual funds, insurance policies, fixed deposits, and equity - often across more than one relationship. Getting a single view of portfolio valuation, liabilities, and total life cover meant stitching PDFs and quarterly statements together. I-Solutions needed one app clients would actually open: portfolio valuation with clean charts, calculators that do the maths, KYC done right, and state that agreed across devices. No live market trading - this is a wealth-advisor reporting app, not a brokerage.
The system at a glance
A Flutter app for iOS and Android. Mobile- or email-login, KYC onboarding (PAN, Aadhaar, selfie). Dashboard summarising total portfolio valuation, liabilities, net worth, and total life cover. Per-asset reports, transaction history, SIP calculators, ledger. Chopper (Dart HTTP client) talks to a FastAPI backend with SQL Server underneath. A client-facing chat feature runs through a custom API fronting GPT-4. Hosted on AWS. Published to App Store and Google Play.
What the user experiences
- Onboard with mobile number or email, then KYC: PAN, Aadhaar, selfie. Verification is in-house.
- Dashboard: total portfolio valuation, liability, net worth, total life cover, AUM growth chart - one screen.
- Equity report: angel-broking and non-demat holdings, cap-wise summary.
- Client report: bank and demat details per family member.
- Transactions: insurance, mutual funds, fixed deposits, commodities - filtered by member.
- Purchase history: categorised by type and family member.
- Calculators: SIP, step-up SIP, SIP + SWP, lumpsum, lumpsum + SWP.
- Ledger: inflow, outflow, net investment.
- Notifications: advisor messages and valuation refreshes via FCM.
- Assistant: ask a question, get an answer from the GPT-4-backed advisor chat (via our proxy, not a direct OpenAI call).
How we built the pieces
KYC - server-encrypted, reviewed in-house
PAN, Aadhaar, and selfie images upload to the FastAPI backend, encrypt at rest, and sit in a review queue. The advisor team approves or rejects via an internal console. Trading/transaction functions stay disabled server-side until KYC passes. No PII lives unencrypted in the app cache.
Portfolio data - typed client, typed server
Chopper generates a typed Dart client from the API contract; FastAPI’s Pydantic models generate the server contract. A field rename on the server fails the client build, not production on Friday evening. For a finance app touching multiple asset classes, typed at both ends is non-negotiable.
SQL Server, not a document store
Portfolio data is fundamentally relational: clients, family members, holdings, transactions, insurance policies, FDs. SQL Server fits the shape. Joins are cheap; a single query builds a family portfolio across five asset types.
Valuation, not live ticking
Valuations refresh from AMFI NAV feeds and insurance premium tables on scheduled jobs - not on live socket ticks. This app is a wealth-advisor reporting tool, not a trading terminal. FCM pings the client when valuation changes materially (≥ threshold) or when the advisor posts a note.
The chat assistant - OpenAI key stays on the server
The client’s spec called out an in-app chat tied to GPT-4. The OpenAI key lives on our server; the app authenticates and requests through our custom endpoint. Rate limiting and system-prompt scaffolding happen server-side. Swapping models (GPT-4 → GPT-4o → future) does not require an app release.
The regulatory pipe is where the work sits
Three things make this app credible for a regulated distributor: KYC that compliance can live with, valuations that align with AMFI data, and cross-device state that agrees. Anyone can draw a dashboard. The hard part is the pipe feeding it - and, in India, the regulatory trail behind the pipe.
Results
- iOS + Android live on App Store + Play Store.
- KYC, portfolio valuation, calculators, ledger, and advisor notifications all working.
- GPT-4 assistant integrated without the key ever leaving the server.
- Family-level views for clients who manage money across relatives.
What an engineering team should take from this
If you are building any multi-asset fintech reporting product:
- Typed HTTP client, always. Chopper or Retrofit on the mobile side, Pydantic on the server. The rename-breaks-nothing days are over.
- Choose the data shape that fits, not the trendy one. Relational portfolio data is SQL’s sweet spot, not a document store’s.
- KYC is a server problem. Store encrypted, scope by role, never let a device hold the only copy - especially in regulated markets.
Tech stack
- Mobile: Flutter (iOS + Android)
- HTTP client: Chopper (typed Dart client)
- Backend: FastAPI (Python, typed endpoints)
- Database: SQL Server
- Auth + push: Firebase Auth, FCM
- Charts: syncfusion_flutter_charts
- AI: custom backend API in front of OpenAI GPT-4
- Infra: AWS hosting
Trust signals for this case study
- Regulatory: AMFI-registered mutual fund distributor (ARN-147547, valid through June 2027)
- Experience: 18+ years in wealth management
- Location: Mumbai (Ghatkopar East)
- Client access: live login portal at https://isoln.in/
Screens
