MayaLogic
Case study · FinTech

Replatforming a Series C lending core without a single missed disbursement

Strangled a ten-year-old PHP monolith and migrated 1.2M live loans onto an event-driven core, with zero downtime and a 60% drop in P95 latency.

Anonymized delivery dashboard

FinTech outcome cockpit

After launch

P95 latency

−62%

Disbursements lost

0

Cutover window

9 months

Before

Constraint

Build

Controlled cutover

After

Measured gain

Client
Series C consumer lender
Industry
FinTech
Service
Custom Software Development
Engagement closed
February 2025
Storyline

From constraint to measurable change.

Every engagement is framed around the business situation, the constraint that made it hard, and the decision that turned delivery into a controlled path to value.

Situation

The operating reality

A ten-year-old lending core had become the bottleneck on every product initiative. The monolith owned underwriting, servicing, collections, and customer comms in a single deployable, and every release was a four-hour change window.

Constraint

Why it was hard

A previous big-bang rebuild had been abandoned at the year-two mark. The board would not approve a second one. Whatever we shipped had to deliver value every quarter and could not interrupt loan disbursement for a single day.

Decision

The path we chose

Avoided a second big-bang rewrite and chose a strangler migration with value released every quarter.

Build

Strangler-pattern delivery

We mapped the monolith into bounded contexts and stood up the first new service — disbursement orchestration — alongside it. Traffic moved in measured cutovers behind a routing layer, with dual-write reconciliation for the first 30 days of each migration.

Every quarter retired a slice of the monolith and replaced it with an event-driven service on the new core. Underwriting, servicing, and collections followed in order.

Outcome

Measured impact

Zero missed loan disbursements during the entire nine-month migration.

P95 read latency on critical paths dropped by 62%; P95 disbursement latency dropped by 48%.

What changed after launch

New behavior

Product teams moved from monthly release windows to multiple safe deployments per day, with risk and finance teams reading the same reconciliation evidence.

Outcome

The numbers that mattered.

P95 latency
0%
Disbursements lost
0
Cutover window
0 months
MayaLogic kept the migration commercially calm. Every cutover had evidence, rollback, and a business owner before engineering touched production.
A. MorganCOO · Series C consumer lender
Before and after

The transformation the client could see.

The work was not abstract modernization. It changed day-to-day behavior, ownership, and the evidence leaders used to make decisions.

Before

  • Four-hour change windows
  • One monolith owned underwriting through collections
  • Board wary after a failed rebuild

After

  • Event-driven services with clear ownership
  • Continuous deploys on critical paths
  • Legacy core retired six weeks early
Architecture and delivery

A controlled path from discovery to launch.

The delivery plan made the system boundary explicit, then used rehearsals, gates, and telemetry to optimize safely before launch.

Delivery architecture

FinTech control loop

DiscoverModelBuildLaunchTelemetry and feedback optimize the next release
  1. Discover

    Strangler-pattern delivery

    We mapped the monolith into bounded contexts and stood up the first new service — disbursement orchestration — alongside it. Traffic moved in measured cutovers behind a routing layer, with dual-write reconciliation for the first 30 days of each migration.

  2. Build

    Reconciliation as a first-class concern

    Every cutover ran a reconciliation harness for at least two weeks, comparing every read and write between old and new systems. A divergence above 0.01% paused the cutover automatically.

  3. Launch

    Operational readiness, not theatre

    SLOs were defined per service and tied to error budgets the platform team owned. The on-call rotation was practised against synthetic incidents weekly before any cutover.

Build

How we shaped the work.

Strangler-pattern delivery

We mapped the monolith into bounded contexts and stood up the first new service — disbursement orchestration — alongside it. Traffic moved in measured cutovers behind a routing layer, with dual-write reconciliation for the first 30 days of each migration.

Every quarter retired a slice of the monolith and replaced it with an event-driven service on the new core. Underwriting, servicing, and collections followed in order.

Reconciliation as a first-class concern

Every cutover ran a reconciliation harness for at least two weeks, comparing every read and write between old and new systems. A divergence above 0.01% paused the cutover automatically.

Finance, risk, and operations got a daily reconciliation report in plain language — not just engineering dashboards.

Operational readiness, not theatre

SLOs were defined per service and tied to error budgets the platform team owned. The on-call rotation was practised against synthetic incidents weekly before any cutover.

What changed after launch

What shipped, and what it changed.

  • Zero missed loan disbursements during the entire nine-month migration.
  • P95 read latency on critical paths dropped by 62%; P95 disbursement latency dropped by 48%.
  • Release frequency moved from monthly four-hour windows to continuous deploys multiple times per day.
  • The legacy core was fully retired six weeks ahead of plan.

After launch

Product teams moved from monthly release windows to multiple safe deployments per day, with risk and finance teams reading the same reconciliation evidence.

Stack

What we built it with.

TypeScript

NestJS

PostgreSQL

Kafka

AWS

Terraform

Datadog

A similar problem?

Let’s talk about your project.

A senior engineer will follow up within one business day with an opinionated take on the shape of the work.

Replatforming a Series C lending core without a single missed disbursement — Case Study | MayaLogic