01What we do

We build systems that hold up under real use.

A software, web and cloud engineering practice. Most of what we build is the system a business runs on daily — ordering, scheduling, dispatch, billing — where an hour of downtime is a stopped operation, not an inconvenience.

Most software problems we are called in for are not really software problems. They are a process nobody wrote down, two systems that disagree, or a decision made three years ago that nobody has been able to revisit since. We start there.

Practices
7 engineering practices
Standard
Built and tested to WCAG 2.2 AA
Handover
Repository, pipeline and runbook are yours
System request topologyA request travels from the browser through a content delivery network and web application firewall to a server-rendered application. The application reads a cache and a PostgreSQL database, writes background work to a queue, and a worker processes that queue against third-party integrations. Metrics and errors flow from the application to a monitoring system.BROWSERuser agentCDN + WAFedge cacheAPPLICATIONserver renderedCACHEredisPOSTGRESQLsource of truthQUEUEbackground workWORKERintegrationsMONITORINGmetrics + errors

Fig. 01 — Request topology

The shape of a system we would typically build: cached at the edge, rendered on the server, with background work queued rather than performed inside a request. Monitoring is part of the architecture, not an afterthought.

02Capabilities

Seven practices, one delivery team

We are organised by engineering practice rather than by industry vertical, because the hard parts of a booking system and a logistics system are largely the same parts.

03Problems we solve

The five conversations we have most often

If one of these sounds like your organisation, you are in familiar territory. None of them is unusual, and none of them is a failing.

01

A process that runs the business lives in a spreadsheet.

One file, no permissions, no history, and one person who understands it. We model the process properly, enforce the rules on the server, and migrate the data with a reconciliation report so you can see exactly what moved.

02

Two systems disagree, and nobody knows which one is right.

Integration failures almost always come from two systems each believing they are authoritative. We decide the source of truth per field, build the synchronisation to match, and make disagreement visible instead of silent.

03

The site is slow on the devices your customers actually use.

Measured on a mid-range phone rather than a developer laptop. We set a performance budget before design starts and enforce it in the build pipeline, so a regression fails a pull request rather than a launch.

04

Nobody can change anything without calling the original supplier.

You get the repository, the pipeline, the infrastructure definitions and the runbook. If you take the work elsewhere, everything the next team needs is already in it. Lock-in through obscurity is a business model, not an architecture.

05

You have backups, but you have never restored one.

A backup job reporting success tells you a file was written. We test restores on a schedule, into a scratch environment, timed, following a written runbook that someone other than the author can execute.

04Technology

What we actually use, and when

An inventory rather than a logo wall. Every entry in the directory records why it is in our stack and what we reach for it for — including the ones we are still evaluating and have not used on client delivery.

01

Languages & Runtimes

  • TypeScript
  • Node.js
  • Python
  • Go
  • PHP
  • .NET
02

Frontend

  • React
  • Next.js
  • Tailwind CSS
  • Astro
03

Mobile

  • React Native
  • Swift
  • Kotlin
  • Flutter
04

Data & Storage

  • PostgreSQL
  • MySQL
  • Redis
  • Prisma
  • Elasticsearch
05

Cloud Platforms

  • Amazon Web Services
  • Microsoft Azure
  • Google Cloud
  • Cloudflare
  • Vercel
06

DevOps & Operations

  • Docker
  • Kubernetes
  • Terraform
  • GitHub Actions
  • Grafana
  • Sentry
07

Content & Commerce

  • Stripe
  • Payload CMS
08

AI & Machine Learning

  • OpenAI API
  • Anthropic Claude
09

Testing & Quality

  • Playwright
  • Vitest
  • axe-core
The full technology directory

Highlighted entries are used routinely on delivery work

05Process

Ten stages, none of them optional

The order matters more than the ceremony. Skipping discovery to start building sooner is the most expensive decision available on a software project.

  1. 01

    Discovery

    Understand the business before the software.

  2. 02

    Requirements

    Turn intent into a specification you can hold us to.

  3. 03

    Architecture

    Decide the shape of the system, and record why.

  4. 04

    Interface design

    Design against real content and real constraints.

  5. 05

    Development

    Small, reviewed, continuously integrated changes.

  6. 06

    Testing

    Automated where it pays, manual where it matters.

  7. 07

    Security review

    Review the system the way an attacker would.

  8. 08

    Deployment

    Repeatable, reversible, and boring by design.

  9. 09

    Monitoring

    Know it broke before your customers tell you.

  10. 10

    Support

    A named route to a human who knows your system.

07Engagement models

Four ways to work with us

The commercial shape should follow the nature of the work. Fixing the price of something nobody has specified yet is not rigour — it is a guess with a signature on it.

01

Fixed scope

For work that can honestly be specified in advance.

A written specification, a fixed price, and a change process that prices variations before they are accepted rather than after.

Suits: A defined site, a defined integration, an audit.

02

Time and materials

For work where priorities will legitimately change.

Billed against actual time at agreed rates, with a regular review cadence so spend is never a surprise and direction can follow what real usage teaches you.

Suits: Discovery-led products, phased builds, ongoing improvement.

03

Retained capacity

An agreed amount of engineering each month.

A predictable commitment on both sides. Suited to a live product with a roadmap rather than a project with an end date.

Suits: Products past their first release.

04

Support and maintenance

Ongoing responsibility for something live.

Patching, monitoring, backup verification and fault correction, with response targets written into the agreement rather than published as a marketing figure.

Suits: Anything in production that matters.

08Security & quality

Practices, not badges

We hold no certifications and we do not display any. What we can describe is what we actually do on every engagement — which is more useful to you than a logo, and considerably harder to fake.

  • Authorisation on the server, every timeRole, then relationship to the specific record, then schema validation — before the operation runs. Hidden interface controls are a usability decision, never a security control.
  • Reviewed changes onlyEvery change goes through a pull request read by a second engineer and an automated pipeline covering types, tests and accessibility. Nothing reaches production another way.
  • Secrets out of the codebaseCredentials live in a managed secret store with rotation, never in configuration files or a repository, and never in a browser bundle.
  • Dependencies watched, not assumedAutomated advisories, a patching cadence agreed in advance, and updates applied routinely rather than in an emergency.
  • Backups restored, not just takenRestores are performed and timed on a schedule, into a scratch environment, following a runbook someone other than the author can follow.
  • An audit trail that means somethingPrivileged actions are written to an append-only log with the acting user, the record, and the change — with sensitive values redacted before they are stored.
START HERE

Tell us what you are trying to build

The project brief takes about five minutes and gives us enough to have a useful first conversation rather than a generic one. If you would rather just ask a question, the short form is there for that.

We read every enquiry ourselves. If we are not the right fit, we will say so and tell you what to look for instead.