Skip to content
Product Engineering

From product problem to production software.

For teams whose question is not “who can we add” but “who takes responsibility for turning this into working software” — architecture, build, testing, deployment and everything that starts the day after launch.

What this means here

We are not selling hours against a specification.

Product engineering means owning the technical side of a product problem: the architecture it needs, the decisions it forces, the parts that will be expensive to change later, and the operating reality after it ships.

A team that only writes what it is told produces software that works on the first demo and becomes unmaintainable by the third quarter. What you should be buying is the judgement about what not to build, where the data model has to be right the first time, and which constraint is going to matter in a year.

Types of work

The products we build.

New digital products

A product that does not exist yet, taken from the first architecture decision to something running with real users on it.

Business platforms

Systems several teams depend on daily: roles, permissions, workflows, reporting and the integrations that keep them fed.

Internal systems

The operational software a company runs on — the spreadsheets, manual routines and side databases that outgrew themselves.

Mobile applications

Flutter, for iOS and Android from one codebase, including the release process, store submissions and the maintenance that starts the day after launch.

Modernization

An existing system that still earns its keep but has become expensive to change. Usually a data model problem before it is a framework problem.

Integrations & APIs

Making systems that were never designed for each other exchange data reliably, including the failure cases nobody documented.

Workflow automation

Replacing manual steps that are slow, error-prone or invisible to the people accountable for them.

Evolving an existing product

Taking over a codebase someone else wrote and continuing it — starting with an honest read of what is there.

From problem to production

A sequence, not a methodology.

These stages exist in every engagement, but their depth does not. A product with an existing data model and a clear owner barely needs discovery; one being defined while it is built needs a lot. We size each stage against the product rather than running all seven at full length because the process says so.

01

Discovery

What the product has to do, who depends on it and what is already true — existing systems, data, constraints and the deadline that is real versus the one that is preferred.

02

Architecture

How it will be built and why: data model, boundaries, integrations, what runs where, and which decisions we are deliberately leaving open.

03

Product & UX definition

Turning scope into screens and states, including the unhappy paths. Depth here depends on whether you already have product and design.

04

Engineering

The build, in iterations you can see. Typed, reviewed and tested code, in a repository you own from the first commit.

05

QA

Automated where it pays for itself, exploratory where it does not. Testing is part of the work, not a phase bolted on before launch.

06

Deployment

Environments, pipelines, monitoring and rollback. A release should be a routine event, not a scheduled risk.

07

Iteration

What real usage teaches, fed back into the roadmap — plus the maintenance, security updates and performance work that never make the sprint on their own.

Architecture & technical ownership

The decisions that outlive the release.

Most of what determines whether a product is still inexpensive to change in two years was decided in the first two months, by people who were not thinking about year two.

Architecture we can defend

Every structural decision has a reason we can state out loud, including the ones we would make differently with a different constraint. If we chose the boring option, we will tell you it was on purpose.

Maintainability as a requirement

Code someone else can pick up: typed, reviewed, tested where it matters, and documented at the level that survives a handover. Software you cannot hand over is software you cannot leave.

Data before features

Most systems that become expensive to change became expensive at the data model. We spend time there early, while changing it still costs almost nothing.

Reliability and operations

Logging, monitoring, backups, error handling and the failure cases. What the system does when the third-party API is down is a product decision, not an implementation detail.

Integrations that fail well

Anything crossing a network boundary will fail eventually. Retries, idempotency and reconciliation are designed in, not discovered in production.

Nothing is locked to us

Repositories, infrastructure, credentials and documentation live in your accounts throughout, not handed over at the end. There is no environment only we know how to deploy to, and no dependency on us that you did not choose.

Alongside your team

When there is already an internal team.

Two teams working on the same product is normal. Two teams working on the same module without an agreed boundary is how you get an integration week at the end.

  • The split is agreed at the start — usually by system boundary or product area
  • One shared backlog and one set of priorities, not two roadmaps
  • Your architecture standards and review process, or ours if you would rather adopt them
  • Your leads have direct access to the engineers doing the work
  • Handover is continuous: documentation and access as we go, not a package at the end
Problem domains

Where we have built this kind of software before.

We describe our experience by the problem solved rather than by logo. These are domains our engineers have worked in, and they are the reason we ask the questions we ask in discovery.

Transportation & fleet operations

Routing, tracking and operational control for fleets running daily schedules.

Education management

Student, staff and transport management for public education networks.

Healthcare workflows

Scheduling, records and the operational routine around them.

Public-sector operations

Systems used by public agencies, with the audit and traceability that implies.

Procurement & compliance

Monitoring, document control and analysis of bidding and licensing processes.

Business management systems

Internal platforms, portals and integrations that replace manual routine.

Client names are shared under NDA where applicable. If your domain is not listed, the relevant question is usually whether the constraints rhyme with one of these — ask us.

Engagement options

How the work is structured.

Which of these fits depends on how well defined the problem already is. We will say which one we think you are in, including when the answer is that it is too early to scope anything.

Scoped engagement

A defined piece of work with an agreed outcome — a first version, a modernization, an integration. Best when the boundaries of the problem are already clear.

Continuous product engineering

An ongoing engagement against a roadmap rather than a fixed scope, reviewed as priorities move. Best when the product is alive and the backlog is not going to end.

Discovery first

A short engagement to establish what is actually there and what building it would involve, ending in an architecture and a scope you can take anywhere — including to someone else.

Questions we get asked

Before you send the first message.

How is this different from hiring your engineers through staff augmentation?

In staff augmentation you own the engineering decisions and we supply capacity to execute them. Here we take responsibility for the engineering itself — architecture, technical direction and delivery — against a product problem you define. If you already have engineering leadership and only need capacity, staff augmentation is the better fit and costs less.

Do we need a finished specification before we start?

No, and it is usually better if you do not. What we need is the problem, who it is for, the constraints that are real and any systems it has to live with. Discovery exists to turn that into something buildable. A specification written before anyone looked at the existing data is the most expensive document in this process.

Who makes the technical decisions?

We propose and explain them; you approve the ones with commercial consequences. Choice of database, hosting model, third-party dependencies and anything that affects cost or lock-in are decisions you should be part of, not discover later.

Can we work alongside our internal team?

Yes, and it is common. The split is agreed at the start — usually by system boundary or by area of the product — because two teams sharing the same module without a boundary is how integration weeks appear at the end.

What happens after launch?

Software has an operating cost whether or not anyone plans for it: dependency updates, security patches, platform changes and the bugs that only real usage finds. We can continue on an ongoing engagement, or hand over to your team with the documentation and access needed to do it without us.

Who owns the code?

Code ownership, IP assignment and any licensing are settled in writing in the agreement, and you see those terms before you sign rather than after the work exists. Operationally there is nothing to retrieve from us either way: repositories, infrastructure and credentials are in your accounts from the first commit.

Can you take over a codebase someone else wrote?

Yes. We start with a read of what is there — data model, dependencies, test coverage, deployment — and give you an honest assessment, including when the honest answer is that a rewrite would cost less than the next year of patches.

How do you handle deadlines that are already fixed?

By being explicit about what fits. A fixed date and a fixed scope cannot both be fixed unless the estimate was padded; we would rather tell you which parts we would cut than discover it in the last two weeks.

Already have engineering leadership and only need capacity?

Then you are not buying engineering responsibility — you are buying engineers. That is a different engagement, and a cheaper one.

Staff Augmentation

Already in production and need ongoing engineering?

If the product exists and the problem is keeping it healthy while it keeps changing, that is a continuing engagement rather than a build.

Software Maintenance

What are you trying to build?

Describe the product problem, what already exists around it and the constraint that worries you most. We will tell you how we would approach it — and if we are not the right team for it, we will say that instead.