Customer outcomes

What changed, described plainly.

Clients are described by industry rather than name, by agreement. Every number below is one we measured or one the customer reported; where a figure is not yet measured, we say so rather than estimate it.

Manufacturer of engineered pumps · internal engineering platform

Engineering data sheets moved out of Word and Excel and into one system

Problem

Each pump proposal needed several engineering data sheets. They lived as Word and Excel documents: values from a selection tool were re-keyed by hand, images were pasted wherever they fit, and finding last year's sheet for a similar pump meant knowing who had it.

What we built

  • A web platform where each sheet is a structured form driven by configuration: fields, sections and templates live in the database, so a new sheet type is data, not a rewrite.
  • Draft-to-published revisions, share links and a preview mode; search across every historical sheet.
  • Paste-in import from the selection tool with locale-aware number parsing (European comma decimals had been silently inflating values) and engineering cross-checks: power balance within 10%, rated head against the curve within 5%.
  • One-click PDFs; a typical sheet went from three pages to two.
  • Release notes the team posts from an admin screen without a deployment, and high-contrast and large-text modes built directly from user feedback.

Result

Sheets are entered once, validated at entry, and consistent across the team. Errors that used to surface at review, or at the customer, are caught in the import preview. The newest sheet type, with 81 fields in 9 sections, was added as configuration rather than code.

PDF length, typical sheet
3 → 2 pages
Newest sheet type
81 fieldsin 9 sections, added as configuration
Import cross-checks
±10% / ±5%power balance, rated head vs curve
Engineer hours saved per week
{{CASE_1_HOURS_SAVED}}not yet measured

Consumer product · our own, on both app stores

Relay Tracker: an offline-first race coordination app, built end to end

Problem

Overnight, multi-leg road relays are run by two vans of sleep-deprived people trying to be at the right exchange point at the right time, usually with a spreadsheet, a group chat, and no cell signal. Estimates drift, nobody knows where the runner is, and the van leaves late.

What we built

  • A mobile app for Android and iOS that works fully offline. Runners' recent times feed an on-device pace model (distance scaling, hill cost, fatigue across legs, heat) that gives earliest, expected and latest arrival for every leg and corrects itself from real splits.
  • Sync over three tiers, cloud when there is signal, phone-to-phone at van exchanges, a QR code as the last resort, built on an append-only event log so nothing conflicts.
  • A spectator site for friends and family, and a training-plan builder whose JavaScript engine is a line-for-line port of the app's model, guarded by a parity test with over 12,000 assertions so the two never disagree.
  • Seasons and team records that survive yearly rollovers, with estimated splits never counted as records.

Result

Shipped to both app stores through continuous delivery, used live at a 2026 overnight relay where an arrival-time drift was diagnosed and fixed during the race, and covered by 1,389 automated tests. It is the clearest example of what we mean by full-stack: mobile, web, backend, sync, and the model, from one small team.

Google Play · App Store

Platforms
Android · iOS · web
Automated tests
1,389plus a 12,000-assertion parity test between app and site
Sync paths
3cloud, phone-to-phone, QR
Works offline
Yesdesigned for cell dead zones

How we measure

Baseline first, then the customer's own numbers

Before a build starts we write down what the bottleneck costs today: hours per week, error rate, licence fees, days to turn a quote around. Whatever the customer can already count.

After launch we measure the same things the same way. The figures on this page are those, or they are marked as not yet measured. We do not publish estimates dressed as results.

Next step

Tell us about the bottleneck.

A short conversation is usually enough to tell whether custom software is the right fix, and what it would take.