Client: MR CAPI — a financial capital management firm.
Industry: FinTech / Wealth Management.
Scope: Custom portfolio management platform, admin dashboard, client portal, mobile view.
Timeline: 4 months from kickoff to production.
Outcome: Live platform managing ₹650 Cr+ across 2,300+ accounts.

₹650Cr+Assets tracked
2,300+Active accounts
90sData refresh cycle

The challenge

MR CAPI's team was managing portfolios in Excel. Two problems with that:

  • Portfolio data lived in 40+ sheets across multiple departments
  • Clients had no visibility — every query was a manual email back-and-forth
  • Compliance reporting took 3 days of manual work each month

They needed a platform that could ingest positions from multiple brokers, compute performance metrics in real time, and give both internal teams and clients a single source of truth.

What we built

1. Unified position ingestion

We connected 6 broker APIs plus 2 custodian feeds. Every position (equities, mutual funds, fixed income, AIFs) flows into a normalized ledger table within 90 seconds of execution.

2. Real-time analytics engine

Portfolio value, XIRR, TWRR, benchmark comparisons, and risk metrics — all computed on the fly. No batch jobs, no waiting until morning.

3. Role-based dashboards

  • Advisors — view all clients, cohort analytics, allocation drift alerts
  • Clients — personal portfolio, holdings, transactions, statements (PDF export)
  • Compliance — audit trail, rebalancing history, regulatory reports

4. Automated reporting

Monthly statements, tax P&L, and regulatory reports auto-generate as PDFs. What used to take 3 days now runs in 4 minutes.

Architecture

LayerTechnologyWhy
FrontendNext.js 14 (App Router) + TypeScriptServer components for fast dashboards, client components for interactivity
BackendNode.js + FastifyHigh-throughput APIs, minimal overhead
DatabasePostgreSQL 16 + TimescaleDBTime-series positions, historical queries
CacheRedisComputed metric cache, session, queue
QueueBullMQBroker sync jobs, report generation
StorageS3 + CloudFrontStatements, audit archives
DeploymentAWS Mumbai (ap-south-1)Data residency + low latency for Indian users

Real challenges we hit

Broker APIs vary wildly

Six brokers, six different schemas, six different rate limits. We built a broker adapter layer so each integration normalizes to a single internal model. Adding a new broker now takes 2–3 days, not 2 weeks.

Performance for real-time XIRR

XIRR over 5,000 transactions is expensive. We cache results per portfolio for 60 seconds and invalidate on any new transaction. First call: 320ms. Cached: 8ms.

Regulatory reporting correctness

Every calculation had to match the client's existing auditor-verified Excel model to the rupee. We spent 2 weeks building a test harness comparing our engine output against 6 months of historical statements.

!

FinTech lesson: Do not trust your own math. Always reconcile against an independent source before going live. We caught 4 rounding bugs and 1 timezone bug only because we did this.

Results

MetricBeforeAfter
Portfolio data updateManual, next-dayWithin 90 seconds
Monthly compliance report3 days4 minutes
Client query response time24–48 hours (email)Instant (portal)
Advisor onboarding of new client~2 hours~15 minutes
Data errors per quarter12–180–2

Stack cost at scale

Running 2,300 accounts on this platform costs ~$420/month all-in:

  • AWS EC2 + RDS: $280
  • S3 + CloudFront: $35
  • Redis (ElastiCache): $55
  • Monitoring (Sentry + Better Stack): $50

Compare that to a "wealth management SaaS" license at $4–8 per account/month — which would be $9,200–$18,400/month for the same base.

What we learned

  • Reconcile against a human — audits reveal bugs that unit tests miss
  • Design the adapter layer early — you'll always add more data sources
  • Time-series data belongs in TimescaleDB, not flat Postgres
  • Server components change SaaS dashboards — cut our initial JS payload by 62%
  • PDF generation is a real product feature, not an afterthought

Key takeaways

✓

1. Normalize broker data into one internal model — the adapter pattern pays off.
2. Cache expensive calculations (XIRR, TWRR) with short TTLs.
3. Reconcile math against an external source before launch.
4. Time-series databases (TimescaleDB) are essential for portfolio data.
5. Server-side rendering cut our frontend payload by 62%.
6. ~$420/month for 2,300+ accounts is achievable.

If you're building a financial platform — portfolio management, lending, payments, or analytics — see our custom software practice or tell us about your build. We usually reply within 6 hours.

R

Rdelab FinTech Team

Custom Software · Pune, India

We build financial platforms for wealth management, lending, payments, and analytics teams worldwide. Over 12 FinTech products shipped since 2015.