B Squared2
←  All work

Fortium

The practice management and document platform an accountancy firm runs on, replacing a legacy system it had outgrown.

Client
JLA · accountancy practice
Role
Lead Developer
Year
2026
Status
Live
Stack
Next.js, NestJS, TypeScript, Postgres, Turborepo, Document processing
B SquaredFortiumNext.js · NestJS · TypeScript

The problem

JLA is an accountancy practice. Like most practices, the work is not really accountancy — it is the administration around it. Records requests, document collection, chasing clients for the thing you asked for three weeks ago, keeping track of which return is at which stage for which client.

They were running that on Cloudclerk, a system that had reached the end of its useful life. It worked, in the sense that the practice had built its habits around it, but it could not be extended and nobody was going to extend it. The practice had grown past the software.

The brief was not "rebuild Cloudclerk". It was to build the thing the practice actually needed now, and to make it possible to keep adding to it.

What I built

Fortium is a single platform with several distinct applications on it, because the practice has several distinct audiences and each one needs a different surface.

  • A staff dashboard — where the practice runs its day
  • A client portal — a separate application with its own workflow, so clients are not navigating a system designed for accountants
  • A public site for the practice
  • Two document extraction services — one for invoices, one for catalogue data — because a meaningful share of the admin burden was people retyping information that already existed in a PDF
  • A NestJS API underneath all of them, with typed contracts so the frontends cannot drift from it
  • Three shared packages for configuration, domain code and interface components, so a new application starts from the existing foundations rather than a blank page

It is deployed by pipeline, self-hosted, and covered end to end by tests where the cost of being wrong is highest.

Where it is now

Live and in daily use, and still being built. As of August 2026 that is 2,976 commits since March, across 3,165 TypeScript source files — six months of continuous work rather than a project that shipped and stopped.

The structure has paid for itself. Adding the sixth application to the platform cost a fraction of what the first one did, because authentication, deployment, the component library and the domain model were already there and already proven. That was the actual point of the exercise: not to replace one system, but to stop the practice ever being trapped by one again.

Something like this, for your business.

Tell me what you're working around at the moment and I'll tell you how I'd approach it.