Solution Story · Platform Architecture

The backend that became a front door

For twenty years, the backend had one job: render web pages. Then the PE owner started acquiring companies that needed to plug in, a new CTO arrived with a platform vision, and a native mobile app needed something pages can't provide. The answer to all three was the same: turn the backend into an API.

The problem

A backend that could only talk to browsers

Server-side rendering was the right architecture in 2005. But a backend whose only output is HTML pages has a hard ceiling: it can't power a native mobile app, it can't let an acquired company's system create or query records, and every new consumer means another custom bolt-on. When your growth strategy is acquisition and integration, "the system doesn't have an API" isn't a technical footnote — it's a blocker on the investment thesis itself.

Page-rendering backend
  • Output: HTML for browsers — nothing else can consume it
  • Mobile app = website in a webview (and it showed: 1.0★)
  • Acquisitions integrate by scraping, file drops, or forking code
  • Business logic tangled with presentation, hard to reuse
API-first platform
  • Output: capabilities — credential, verify, scan, subscribe
  • Native apps, web, and kiosks consume the same endpoints
  • Acquired companies integrate through a documented front door
  • Logic lives once, behind the API; presentations are replaceable
What we built

Upgrade the engine, keep it running

This wasn't a greenfield rewrite — 100,000+ reps and hospitals nationwide depended on the system every day. The backend was progressively reshaped: domain logic extracted from page controllers into API services, consumed first by the new apps, then opened to integrators.

React Native appreps, iOS + Android Modern webmanagers · facilities · admins Hospital kiosksQR/RFID scan events Acquisitions & partnersthe PE roadmap plugs in here One API surface auth & roles · credentials · targeting · subscriptions · scans · multi-tenant scoping 20 years of domain rules — extracted, preserved, tested the business logic that won the market, now reusable instead of trapped in page code
Every consumer — including ones that don't exist yet — talks to the same surface. That's what "platform" means in practice.

The app was the forcing function

Building the React Native app first guaranteed the API was real — designed for a demanding consumer from day one, not a paper exercise. By the time integrators arrived, the surface was battle-tested by the client's own products.

Multi-tenant from the core

Every record is tenant-scoped — the architecture that lets one platform serve multiple brands and, crucially, absorb acquired companies as tenants instead of parallel systems.

Migration without a stoppage

Hospitals checked reps in every day throughout the rebuild. The transition preserved operations — the same discipline we apply to every legacy modernization: evolve, don't interrupt.

Results

Architecture aligned with the investment thesis

1
API surface for every consumer
4+
consumer types: app, web, kiosks, integrators
100k+
reps served without interruption during the rebuild
0
integrations that require forking the codebase
When the owner's strategy is "buy and integrate," the architecture either enables the thesis or quietly taxes every deal. This one now enables it.
Technical decisions are business decisions wearing different clothes