Services / 00

Seven services,
one engineering
standard.

Each service below describes its purpose, the typical scope of work, what you receive, and the situations it fits. Commercial terms are agreed per engagement; no prices or guarantees are published here.

01Service

Custom software development

Purpose

To build an application around a process that is specific to your organisation, instead of reshaping that process to fit a general-purpose product.

Typical scope

Requirements work with the people who do the job today, a data model and system design, iterative implementation of back-end and front-end, deployment configuration, and a handover period. Engagements usually run in slices of a few weeks, each ending with something reviewable in a running environment.

When it fits

Suitable when a workflow is a genuine part of how the business operates, when several disconnected tools and spreadsheets are being held together manually, or when an existing product cannot be configured to fit without heavy workarounds.

Deliverables

  • Running application deployed to your environment
  • Source code in a repository you own, with commit history
  • Documented data model and architecture notes
  • Automated test suite and pipeline configuration
  • Operational runbook covering deploy, rollback and common failures
Software development workstation with multiple code editors open

02Service

Web application development

Purpose

To deliver a browser-based application that is quick to use, accessible, and stable as data volume and user count grow.

Typical scope

Interface design implementation, state handling, authentication and permissions, server-side rendering or client rendering chosen per use case, responsive layouts, and performance work against measured behaviour on representative data.

When it fits

Suitable for customer portals, internal administration tools, dashboards over existing data, and replacing interfaces that have become slow or awkward as requirements accumulated.

Deliverables

  • Responsive web application covering the agreed user journeys
  • Component structure with consistent design tokens
  • Authentication, roles and permission rules
  • Accessibility pass covering keyboard use, contrast and semantics
  • Performance measurements before and after optimisation work

03Service

Cloud and DevOps

Purpose

To make environments reproducible and releases routine, so that deploying a change is a normal event rather than a scheduled risk.

Typical scope

Infrastructure defined as code, container images and build configuration, continuous integration and deployment pipelines, environment separation, secrets management, monitoring and alerting, and backup and restore procedures that have actually been tested.

When it fits

Suitable when deployment is manual or known to only one person, when staging and production have drifted apart, or when an application needs to move from a single server to managed infrastructure.

Deliverables

  • Infrastructure definitions in version control
  • Build and deploy pipeline with automated checks
  • Monitoring dashboards and alert rules tied to real failure modes
  • Documented rollback and disaster-recovery procedure
  • Environment and configuration documentation
Terminal window showing a successful automated test run on a laptop

04Service

API development and systems integration

Purpose

To let systems exchange data reliably, including under the conditions where naive integrations break.

Typical scope

API design and implementation, authentication between services, webhook handling with idempotency, message queues and background workers, data mapping between differing models, reconciliation reporting, and one-off or repeatable data migrations.

When it fits

Suitable when connecting a platform to payment, logistics, CRM or accounting providers, when exposing data to partners, or when nightly synchronisation between internal systems is unreliable.

Deliverables

  • Documented API with a machine-readable specification
  • Integration services with retry, timeout and dead-letter handling
  • Reconciliation or audit reporting where data must match across systems
  • Migration scripts that are repeatable and verifiable
  • Test coverage for failure paths, not only the success path

05Service

Quality assurance and automated testing

Purpose

To give a team the confidence to change code, by making intended behaviour explicit and regressions visible before release.

Typical scope

Test strategy for the specific system, unit tests around business rules, integration tests across real boundaries, end-to-end tests for critical journeys, test data management, pipeline integration, and exploratory manual testing where automation is a poor fit.

When it fits

Suitable when releases require lengthy manual checking, when the same defects keep returning, or when a team is reluctant to refactor because nothing confirms that behaviour is unchanged.

Deliverables

  • Written test strategy proportionate to the system's risk
  • Automated suites running on every change in the pipeline
  • Defect reports with reproduction steps and severity
  • Stabilisation of flaky tests, or their removal with justification
  • Reporting on what is covered and, more usefully, what is not
Software development workstation with multiple code editors open

06Service

Technical consulting

Purpose

To provide an informed outside assessment of a system or a decision, delivered as written findings you can act on independently.

Typical scope

A bounded review over an agreed period: architecture review, codebase assessment, performance investigation, technology selection, or a plan for a migration. We read the code, examine the data, interview the team, and reproduce the problem where one exists.

When it fits

Suitable before committing to a rewrite, when performance has degraded without an obvious cause, when choosing between platforms, or when a team needs an independent second reading of its own plan.

Deliverables

  • Written findings with evidence and severity
  • Prioritised recommendations separating urgent from structural work
  • Options with trade-offs, rather than a single prescribed answer
  • A sequenced plan the team can execute without us
  • A walkthrough session covering questions on the report

07Service

Software maintenance and modernisation

Purpose

To keep a live system healthy, and to bring an ageing one back to a state where it can be changed safely.

Typical scope

Dependency and runtime upgrades, security patching, defect fixing, incremental refactoring behind stable interfaces, replacement of unsupported components, gradual migration strategies that avoid a single high-risk cutover, and small continuing improvements.

When it fits

Suitable when a system still does its job but is expensive to change, when a framework or runtime has reached end of life, or when the original team is no longer available.

Deliverables

  • Upgraded dependencies with a documented upgrade path
  • Characterisation tests added before risky refactoring
  • Incremental modernisation carried out in reviewable steps
  • Backlog of known issues with assessed risk
  • Regular written summary of changes made and their effect
Terminal window showing a successful automated test run on a laptop

08Combining services

Most engagements use more than one.

A new application normally combines custom development, web engineering, cloud setup and testing within a single engagement. A modernisation project usually begins with consulting, continues into maintenance, and picks up integration work as components are replaced.

We scope the combination against the outcome you need rather than selling the categories separately. Where a piece of work falls outside what we do well, we say so instead of stretching to cover it.