Follow us:

Working Hours

Mon – Sat, 9am – 8pm

What we were actually asked to fix

Every engagement below started with a problem someone had been living with for a while. We have written up what the problem was, what we did about it, and what measurably changed — including the parts that took longer than anyone wanted.

5engagements
5industries
25months delivered
11technologies
Fintech20257 months

Moving a live ledger without a freeze

Northwind Payments

Replaced a single-table transaction log with a double-entry ledger while the platform kept settling payments.

The problem

Every balance was derived by summing a mutable transaction table, so a single corrected row silently rewrote history. Reconciliation took three days a month and no two reports agreed.

What we did

  1. Modelled the existing behaviour as a set of invariants before changing anything
  2. Introduced an append-only journal alongside the legacy table, dual-writing for six weeks
  3. Backfilled two years of history and reconciled the two systems daily until they matched
  4. Cut reads over to the ledger one report at a time, with a per-report kill switch

What changed

The legacy table was dropped without a maintenance window. Month-end reconciliation is now automated and finishes in minutes.

3 days to 8 minReconciliation timemonth-end close
NoneDowntimeacross the whole migration
2 yearsHistory backfilledreconciled to the cent
  • TypeScript
  • PostgreSQL
  • Node.js
  • Terraform
Logistics20246 months

Telemetry that answers questions in real time

Cardinal Freight

Built an ingestion and query layer for vehicle telemetry that had outgrown a nightly batch job.

The problem

Position and diagnostic data landed in flat files processed overnight, so dispatchers were answering today's questions with yesterday's data.

What we did

  1. Replaced file drops with a streaming ingest that tolerates duplicate and out-of-order events
  2. Modelled watermarks explicitly so late data corrected earlier answers instead of being dropped
  3. Built a query layer over pre-aggregated windows for the dispatch board's fixed questions
  4. Kept the nightly batch running as a reconciliation check for the first quarter

What changed

Dispatchers see vehicle state within seconds, and the nightly batch was retired once six weeks of results matched.

18h to 6sData freshnessevent to dashboard
CorrectedLate eventspreviously discarded
3Batch jobs retiredincluding the nightly rollup
  • Go
  • Kafka
  • ClickHouse
  • React
Healthcare20244 months

An intake flow clinicians would actually finish

Meridian Health

Rebuilt a twenty-minute clinical intake form that two thirds of users abandoned partway through.

The problem

Intake was one long form that validated only on submit. Losing a session lost everything, and the abandonment rate meant staff re-keyed most submissions from phone calls.

What we did

  1. Split intake into resumable steps with server-side draft persistence
  2. Validated each field at the point of entry, with plain-language messages
  3. Added an audit trail so a partially completed record could be picked up by a colleague
  4. Instrumented every step so drop-off could be attributed to a specific question

What changed

Completion rose from a third to nearly nine in ten, and phone re-keying stopped being part of the workflow.

34% to 87%Completion ratefirst-attempt
-41%Median timestart to submit
EliminatedRe-keyed recordspreviously ~60/week
  • TypeScript
  • React
  • FastAPI
  • PostgreSQL
Media20233 months

Publishing without the spreadsheet

Harbourline Media

Replaced a spreadsheet-and-email editorial process with a workflow the newsroom kept using after launch.

The problem

Assignment, review and scheduling lived across a shared spreadsheet, three inboxes and a chat channel. Nobody could answer what was publishing on Thursday.

What we did

  1. Shadowed the newsroom for a week before proposing a model
  2. Built states that matched what editors already said out loud, not an idealised pipeline
  3. Made the calendar the primary view, because that was the question being asked
  4. Migrated in-flight work so the spreadsheet could be archived on day one

What changed

The spreadsheet was retired in the first week and the calendar became the newsroom's default screen.

3Tools replacedspreadsheet, inbox rules, chat channel
-58%Time to scheduleassignment to scheduled
100%Adoptioneditorial staff, week one
  • TypeScript
  • Next.js
  • PostgreSQL
  • Redis

Recognise your own problem in one of these?

Price the shape of the work in the quote builder, or describe what you are dealing with and we will tell you whether we are the right people for it.