Skip to content
Flad Logic

← All work

Config, not code: one platform for every bank

A multi-tenant design that let three engineers serve banks that each lent differently: shared infrastructure, separate data, each bank's products, pricing and permissions set through configuration, and feature flags so each bank took new features on its own schedule.

The situation

Every bank we served lent differently. Each had its own loan products, pricing rules, covenants, document requirements and approval authority, and a team of three engineers supported all of them.

The problem

Custom code or a separate deployment for every bank would not scale with a team our size, and each new bank would have slowed us down. But banks would not accept a one-size-fits-all product either, and they needed confidence that their data was kept apart from everyone else's. Shared code also meant a shared release, and regulated banks don't all take a new feature on the same day.

What I did

  • Designed the multi-tenant architecture: every bank ran on shared infrastructure, with its data kept separate.
  • Made the platform configurable rather than customizable. Each bank set its own products, pricing rules and the conditions that trigger exceptions, checklists, covenant defaults, role names and permissions through configuration, without code changes. Optional modules, such as Asset Management, bridge lending and HMDA reporting, were switched on only for the banks that used them. The difference matters: one codebase meant every fix and every feature reached every bank at once.
  • Rolled out features bank by bank with feature flags. In a regulated industry you can't ship your latest change to every client at once: each bank has its own review, training and sign-off before its people see something new. Flags let us keep one codebase and one deploy while each bank turned a feature on when it was ready.
  • Onboarded each new bank: set up its own address, staging environment and single sign-on, migrated its existing loan data and trained its teams.

The result

New banks went live and were tailored to their own lending rules without a custom branch of the code. Every client ran on one platform and one release, each on its own schedule for new features, which is what let a team of three keep up with all of them.

Need something like this? See the Custom build package.

Next case studyLimits management could set, and see followed

Available now

Hiring, or need something built? Let's talk.