How these arrive

  • The person who built it left, and the knowledge left with them.
  • It runs on a framework version that stopped receiving security patches.
  • Nobody dares upgrade a dependency, so the gap grows every month.
  • It works, but every change takes three times longer than it should.
  • An agency built it, the contract ended, and there is no one to call.
  • A rewrite was proposed, quoted, and quietly abandoned as too expensive.

What we do

Take over an unfamiliar system

Read it, map what actually exists, and produce a written picture of the risks before touching anything. Inheriting a codebase blind is how maintenance turns into an outage.

Close the security gap

Dependency and framework upgrades in reversible steps, prioritised by real exposure rather than by version number. PHP, Symfony, Laravel, Django, Node and Java among others.

Modernise without a rewrite

Strangle the risky parts out gradually while the system keeps serving traffic. Full rewrites fail often enough that they should be the last option, not the first.

Make it maintainable again

Tests where there were none, a deployment that does not depend on one person, and the instrumentation to see what it does in production.

Ongoing support

A monthly arrangement with agreed response times for the systems that have to keep running, including the ones we did not build.

Typical work

Inherit a system with no documentation

Reverse-engineer the behaviour, write down the architecture that exists, and produce a prioritised risk list. Often the most valuable two weeks a team buys.

Upgrade a framework several versions behind

Move up in stages, each one deployable and reversible, instead of one jump that cannot be rolled back.

Replace a component without stopping the system

Route traffic gradually from old to new behind a flag, with both running until the new one has earned it.

Migrate between clouds or providers

AWS, GCP or self-hosted, with the data migration rehearsed before the real one.

Cover an ongoing system after a team leaves

Keep something alive and shipping while the client hires, without holding the codebase hostage.

What you get

  • A written map of the system as it actually is, not as the diagram says
  • A risk list ordered by what is most likely to hurt, with effort against each
  • Upgrades applied in reversible steps, each one deployed and verified
  • Tests and instrumentation added where the gaps were most dangerous
  • A handover your team, or the next one, can pick up

Questions we get asked

Will you work on a language you do not list as a specialty?

Usually yes, and this is where it matters least. Maintenance work is mostly about reading unfamiliar code carefully, understanding why it was written that way, and changing it without breaking anything. That skill is not language-specific. We have delivered production work in Go, Python, TypeScript, PHP, Scala and Java. If it is something we genuinely cannot support well, we say so before you commit rather than after.

Is it not cheaper to rewrite it?

Almost never, and the estimate that says otherwise is usually missing the behaviour nobody documented. A rewrite has to reach parity with years of accumulated edge cases before it delivers anything new. Incremental modernisation ships value earlier and can be stopped at any point. We will tell you honestly on the rare occasion a rewrite really is the cheaper path.

What if the original developers are gone?

That is the common case. Nobody to ask is a slower start, not a blocker: the code is the specification, and we read it.

Can you just be on call without building anything?

Yes. A monthly support arrangement with agreed response times, for systems that must keep running. We prefer to spend the first weeks understanding it properly, because being on call for something you have not read is a promise you cannot keep.

Contact

Start a conversation

Tell us what you are building, or what is currently breaking. You will get a straight answer from an engineer, not a sales script.

Prefer email? Write to [email protected]. We reply from a real address, and nothing you send here is stored anywhere but our inbox.