FintechAngularKotlin APIs

Lender Price PPE

Re-architecting an enterprise Product & Pricing Engine (PPE) for banks and wholesale lenders, serving major clients like JPMorgan Chase.

The Challenge & Context

Lender Price is a cloud-native SaaS platform that automates pricing, rules, eligibility, and lock workflows for the mortgage industry. Loan secondary market teams rely on it to manage granular margin guidelines.

The core challenge centered on a critical calculation query returning up to 13,000 active rates. The API request took 9 minutes to resolve, generating a massive 240MB raw payload. This volume saturated network bandwidth and caused client-side browsers to freeze during table render and sorting workflows.

Key Metrics

  • Response Latency:9m → ~1m (89% speedup)
  • Payload Size:240MB → ~3MB (99% cut)
  • Bundle Size:-48% peak reduction
  • Workflow Responsive:+35% render efficiency

Core Architecture Redesign (STAR)

Solving data payload bottlenecks without breaking user query UX

Situation

Standard table pagination was rejected by business requirements: loan officers needed to filter and compare against the entire result set of 13,000 rates simultaneously. Rendering the raw array froze browser threads.

Task

Re-engineer the data retrieval pipeline across the Angular client and Kotlin APIs to shrink payload sizes and improve rendering speeds, while maintaining global filtering capabilities.

Action

I proposed and co-designed a **Server-Side Grouping contract**. Instead of returning raw rate rows, the backend aggregated results by unique mortgage rate groups, shrinking the root array from 13,000 to ~250–300 groups. The detailed rows within each group were lazy-loaded on-demand when clicked.

Result

API latency fell from 9 minutes to 1 minute, and the payload shrank by 99% (from 240MB down to ~3MB). Client-side table rendering became instantaneous, completely eliminating thread freezes.

Technical Optimization Details

O(1) Fractional Indexing

Reordering rate rule priorities used O(N) integer array rewrites, causing database locks. By implementing fractional indexing, we calculate float boundaries between adjacent rows, resolving drag-and-drop operations in a single O(1) database update with zero concurrency write conflicts.

Webpack Bundle Optimization

Identified import bloating via Webpack Bundle Analyzer. Reduced Angular bundle size by 48% by pruning monolithic library imports, adopting tree-shakeable ES module syntax, and setting up route-level lazy loading for auxiliary lending sub-modules.

Change Detection & Memoization

Tuned UI sluggishness by switching dynamic pricing templates from default dirty-checking to `OnPush` change detection. Added explicit `trackBy` keys to loops and eliminated re-renders on immutable object identity checks.

Cross-Stack Debugging

Acting as a cross-stack engineer, diagnosed database and integration bugs directly within Spring Boot and Kotlin API modules. Maintained SonarQube quality gates, enforcing an 80% code coverage threshold on calculation logic.

Live Platform

Note: Lender Price is a secure enterprise mortgage system. The link below navigates to the corporate gateway; access is restricted behind active business credentials.

Other Selected Work Case Studies