Fintech PWA: Bank Fee Disputes Cut to Under 1 Second
99%
Faster fee detection40%
Fewer frontend re-renders45%
Higher landing engagement
Client Overview

Business Problem
Situation Before
Core Pain
Risks
- Slow feature delivery risked losing ground in a competitive US fintech market with well-funded incumbents
- Frontend performance degradation could reduce user retention in a PWA context where perceived speed is critical
- Without an ML fine-tuning interface, every model improvement needed an engineering cycle, bottlenecking the core AI capability
Constraints
- Inherited legacy codebase with two prior architectural overhauls (limited greenfield opportunity).
- Requirements changed frequently; new functionality had to be delivered as quickly as possible.
- All coordination with the American client team was asynchronous and text-based due to timezone differences.
- Feature flags required for safe rollout of new functionality to limited user segments before full release.
Project Goals
- Enhance feature deployment to align with the rapid development timeline of the fintech product roadmap
- Optimize user-facing performance and experience on the progressive web application (PWA)
- Enable the internal ML team to fine-tune transaction-parsing models independently, without engineering bottlenecks
- Maintain platform stability while shipping new capabilities continuously
- API request handling was restructured around RTK Query, replacing custom hooks with a unified layer for caching and state synchronization.
- Service Worker caching extended the platform's offline capabilities to cover transaction history and subscription data.
- A targeted memoization pass across Redux selectors and components eliminated redundant re-renders at the source.
- An admin panel was developed to support ML model fine-tuning workflows and KYC management without engineering involvement.
- Scroll animations on the landing page were wired to user scroll behavior via Framer Motion.
- Push notifications were delivered to users through FCM (Firebase Cloud Messaging).
- Measurable reduction in frontend re-renders
- Offline access to core user data enabled via Service Workers
- ML fine-tuning workflow accessible through the admin panel without engineering involvement
- New features shipped iteratively under feature flags without production incidents
Solution
The core backend used Django REST Framework for bank accounts using Plaid, virtual cards using the Lithic API, BNPL payments tracking, and transaction history. A different Django service dealt with authentication using CognitoHQ and phone login using Twilio. A Django admin was used for managing KYC, moderating users and ML model fine-tuning. The frontend was a React PWA rebuilt around RTK Query, while the landing page used Next.js and Framer Motion.
The team replaced the hooks in the frontend API layer with RTK Query to standardize caching, invalidation and loading state for all components. Service Workers were implemented to cache the transaction history and subscription data when offline. Deep memoization was done across the React components and Redux selectors to remove redundant re-renders. Firebase FCM push notifications as well as scroll-based animation using Framer Motion on the landing page were implemented by the team. The ML fine-tuning admin panel and additional endpoints for the Django REST API were developed.
The platform was based on AWS and used SNS, SQS, Lambda, S3, EKS, EC2 and ECR. EKS ran the containers on EC2 compute, S3 handled storage, ECR stored the container images, Lambda ran serverless functions and SNS handled pub/sub messaging. The message queue was managed by AWS SQS, and the applications were packaged into containers using Docker. CI/CD ran through GitHub Actions and Jenkins, which automated builds and deployments. Notifications were delivered through Firebase FCM.
KYC verification was done using CognitoHQ via the auth service, while authentication via phone was done using Twilio. Feature flags were used to limit the exposure of new features until rollout. Connectivity with banks was provided via Plaid, which is a regulated financial data integration. Virtual cards were issued using the Lithic API.
Key Steps
In May 2024 the team onboarded, reviewed the codebase, set up a Kanban process and shipped the first features. This built a working rhythm on a live product with a fast-moving roadmap and an async US client team.
Through Q2 and Q3 2024 the team migrated the API layer to RTK Query, configured Service Workers for offline caching, ran the Redux memoization pass and added the landing page scroll animations. Most of the frontend performance work landed here.
In Q3 and Q4 2024 the team built the ML fine-tuning admin panel, added Firebase FCM push notifications and kept delivering features while extending the REST API. The ML team could now retrain models on their own.
In December 2024 the engagement closed with the platform stable and the feature roadmap delivered. The frontend was faster, offline access worked and the ML team had self-serve tooling. Collaboration has since continued into a new ML-focused scope.

Results & Impact
Project Snapshot
See Other Works
Secure LLM Gateway for a 63,000-Person Enterprise
Secure enterprise AI access with centralized governance, lower latency, content controls, and full token usage visibility

Bond Settlement Cut from 2 Days to 30 Minutes
End-to-end capital markets platform automating bond issuance, trading, settlement, and investor servicing

API Response Time Down 80% for a Bloomberg Rival
Financial analytics platform delivering real-time market data, news processing, and scalable backend services for fintech

