Skip to content
Work

What changed, measured.

Every story states the situation, the move and the outcome, with a number attached. Where a client cannot be named, the sector is named and the anonymity is marked rather than hidden.

26h → 4minDecisioning data freshness
A Nordic consumer lender · client not named
Data engineeringCloud & platform engineering
  • Apache Kafka
  • Spark Structured Streaming
  • Delta Lake
  • Kubernetes

From a nightly batch to a streaming backbone, without a rewrite

The situation

Risk decisions ran on data that was up to twenty-six hours old, because everything downstream waited on a nightly batch that had stopped fitting in the night.

What we did

We converted the pipelines incrementally to Spark Structured Streaming over Kafka, ran the streaming and batch paths in parallel, and gated every cutover on an automated equivalence lane that compared the two outputs row by row.

The outcome

Decisioning data went from twenty-six hours old to under four minutes. Every cutover was made against proven equivalence, and the batch path was retired only once its replacement had matched it for a full cycle.

40min → 4minDocument triage time
A European clinical research group · client not named
Applied AICloud & platform engineering
  • vLLM
  • Qdrant
  • NVIDIA GPU Operator
  • Kubernetes
  • Ragas

A private inference platform, because the data could not leave

The situation

Clinical documents could not be sent to a third-party model, so an entire class of work stayed manual while the organisation watched competitors automate it.

What we did

We built a private inference platform on their own accelerated hardware — model serving, a routing layer, per-team quotas and full request observability — with a hybrid retrieval layer over the clinical corpus and an evaluation set built from real questions.

The outcome

Document triage that took a specialist forty minutes now takes four, with every answer citing its sources. No clinical text left the estate, and the platform's cost per document is measured rather than estimated.

9 → 1Platforms to operate
An industrial manufacturing group · client not named
Cloud & platform engineeringArchitecture & software engineering
  • Kubernetes
  • Argo CD
  • Cilium
  • Kyverno
  • Prometheus

Nine teams, nine platforms, one contract

The situation

Nine product teams each ran their own Kubernetes setup, each with its own ingress, secrets and monitoring, and a cluster upgrade had been postponed for two years because nobody knew what would break.

What we did

We built one platform foundation with the layer decided and declarative — ingress, storage, certificates, secrets, policy admission and observability — wrote the platform contract stating what it guarantees, and migrated the teams onto it one at a time.

The outcome

Nine bespoke setups became one platform with a written contract. Cluster upgrades became routine, and a new service now reaches production on its first day rather than in its first month.

+34%Qualified enquiries reaching a partner
A professional services firm · client not named
Applied AI
  • Whisper
  • Groq
  • XTTS
  • LiveKit

The phone line that qualifies its own calls

The situation

Inbound enquiries arrived on a phone menu, and the ones worth having were lost between options three and four.

What we did

We deployed a voice agent — speech recognition, a reasoning layer on low-latency inference, and a brand-owned synthesised voice — that answers, qualifies, books, and hands a written brief plus the full context to a partner when a person is needed.

The outcome

Every call is now answered, transcribed and filed. Qualified enquiries reaching a partner rose by roughly a third, and the partner opens a written brief rather than a callback note.

Your situation is probably in there somewhere.

If it is not, that is worth a conversation too — the interesting engagements rarely look like the last one.

Start a conversation