Skip to content
Taking on new projects. Send us a brief
Solutions · Enterprise Architecture

Systems you can still change eighteen months in

Most systems don’t fail on launch day. They fail eighteen months in, when a change in one place breaks something nobody connected to it. We draw the boundaries first, and write down why they are where they are.

The shape of the work

Agreed before we start. You own everything we produce, whether or not you continue with us.

Starts with
Architecture review
You get
Target design + migration path
When this applies

You are probably here because of one of these. Each one points to where we’d start.

  1. 01

    What you are seeing

    A release that needs four teams in the same room

    The question it raises

    Can we change this without a coordinated release across four teams?

    Where we’d start

    • Clear boundaries between the parts of the system
  2. 02

    What you are seeing

    A database every service reaches into directly

    The question it raises

    How do we get off the old system without stopping feature work?

    Where we’d start

    • Replacing the old system one route at a time
  3. 03

    What you are seeing

    Reports that slow down the product when they run

    The question it raises

    Where will this break first when volume doubles?

    Where we’d start

    • Separate copies for search and reporting
  4. 04

    What you are seeing

    Nobody left who knows why a core decision was made

    The question it raises

    Why was it built this way, and does that reason still hold?

    Where we’d start

    • Decisions written down in the repo

None of these sound right? Tell us what is actually happening.

Describe the problem
What it covers

The decisions that are expensive to reverse. Not all four land in every engagement.

Clear boundaries between parts

Each part owns its data, and others reach it through an agreed interface. No reaching into another team’s tables, the habit that makes a system impossible to change.

Moving off the old system in steps

The old system is replaced one route at a time behind a router, so every step can be reversed and the business keeps running.

Reports that can’t slow the product

One source of truth, with separate copies shaped for search and reporting, so a heavy report can’t slow down checkout.

Decisions written down

A short record in the repo of what we chose, what we rejected and what would make us revisit it. The next team inherits the reasoning along with the code.

The work

How the engagement runs. The shape holds; the depth of each phase moves with the problem.

01

Review

We map what exists: the services, who owns which data and the paths that carry real load, and find where the tangles are actually slowing delivery.

You get

Map of today + risks

02

Design the target

The design we are aiming at, with boundaries around the things that change together and the trade-offs stated plainly.

You get

Target design + decision records

03

Plan the route

An ordered migration where each step ships on its own and can be reversed. No stop-the-world rewrite.

You get

Step-by-step migration plan

04

Build the first parts

We build the first parts with your team, so the people who will extend the pattern understand it.

You get

First services + working pattern

Evidence

What we can point at. Including where we cannot.

Proof

Excel sheets replaced by one system at a live food business

Dayone: a kitchen, a wholesale bakery round and a café now run on one system that carries each order through production, stock and dispatch.

See it
Stated limit

We have not yet delivered a large-scale enterprise migration

Said plainly because it is the first thing an enterprise buyer should ask. Our architecture work to date is at platform rather than programme scale.

Proof

Review first, commitment second

For work at a scale we have not done before, we start with a paid architecture review. You get the design and can take it elsewhere.

Defaults

What we reach for first. Not the only things we work with, and we change them when there is a reason.

Runtime

Ordinary, well-supported choices, so the system is not tied to one team’s favourite.

  • Node
  • Python
  • Containers

Data

One source of truth, with separate copies shaped for search and reporting.

  • Postgres
  • Event streams
  • Reporting copies

Contracts

Parts talk through published agreements, so one can change without breaking another.

  • OpenAPI
  • Typed clients
  • Versioning

Practice

Decisions written down and load tested, so nobody has to guess later.

  • Decision records
  • Load testing
  • Migration plans
Get started

Tell us what you’re trying to build. We’ll tell you where we’d start.

Bring an idea, a stalled project, or a system that has outgrown itself.

Send us a brief

The problem, what you have tried, and what success looks like. A few lines is enough to start.

What happens next

  1. 01Reply within one business dayFrom one of our engineers.
  2. 02First call: 30 minutes, no deckA working call about the problem. We ask questions rather than present slides.
  3. 03An honest answerWhere we would start, or, if we are not the right team, who might be.