Skip to content

Receipts

Four systems. All four in production.

Measured in the client's own systems, not ours. Names withheld, numbers not. Pick the one that looks like your problem and read how it was done.

01 · E-commerce · £10m a year

A £10m increase in sales: serving 2.6 million additional customers

Client
E-commerce
Service
AI Engineer · Recommendations
Focus
Cold-start coverage
Stack
Python · PyTorch · TorchRec · Databricks · Airflow · SageMaker

In brief

The client's recommender only learned from people with an established history, leaving a large group of newer users on generic results. We halved the threshold to pull them in, without diluting recommendations for everyone already there.

The challenge

The users who needed help most got the least

The recommender learned only from people with an established history, so a large group of newer users saw generic results. The obvious move — lower the threshold — carries a real risk: bringing in users with less history can degrade recommendations for the high-value users already being served well. The change had to hold performance for existing users while improving activation for new ones.

The approach

Widen the funnel, guard the baseline

Halving the threshold moved five cohorts into personalised results. The four already above it were unchanged.

The results

  • £10m

    Additional annual sales, driven by new users moved onto personalised recommendations.

  • +2.6m

    Users brought into personalised recommendations, around 50,000 more each week.

  • +12.4%

    Return rate among those new users — they come back more often as well as buy.

02 · E-commerce · £2m a year

A £2 million opportunity from cleaner training data

Client
E-commerce
Service
ML Engineer · Recommendations
Focus
Training data quality
Stack
PyTorch · TorchRec · Databricks · MLflow

In brief

The recommendation model learned by comparing the product a shopper chose against thousands they didn't. The same popular product kept appearing on both sides of that comparison in one training round, so the model was taught to penalise it. Fixing the training data added an estimated £2m of sales a year at no extra cost.

The challenge

Duplication rendered popular products unpopular

The model learned from pairs: a product the shopper engaged with, and similar products they didn't. That breaks when one product turns up twice in a round. Four shoppers interact with a trending dress, and the model is told the dress is both an item of interest and a close but irrelevant match. The dress is downweighted for everyone — and because it is popular, the model sees the bad example more often, reinforcing the error.

The approach

Measure first, then fix

Deduplicating each training round removed the contradictory signal. The pairs that were correct stayed as they were.

The results

  • +1.8%

    Increase in returning items the shopper actually wanted.

  • ~10%

    Of training examples were duplicates and removed.

  • £2m

    Estimated additional sales a year from that lift, at no extra running cost.

03 · Healthcare · Cost reduction

Quality maintained, for 25% of the cost

Client
Healthcare
Service
ML / GenAI Engineer
Focus
AI cost reduction
Stack
Python · OpenAI · Databricks · MLflow

In brief

A pharmaceutical client scored sales conversations against 25 KPIs, one model call per KPI. That meant sending the same 30–60 minute transcript 25 times and paying for it 25 times. We grouped the related KPIs and asked them together: six requests did the work of 25, at the same quality.

The challenge

Paying for the same transcript 25 times over

The 25 measures come in two kinds. Some are simple: did the rep set out an objective before the call? Others need judgement: did they spot a chance to grow the account? Asking the model each question on its own means every question needs the whole transcript, so one conversation is sent, and charged for, 25 times. The bill grows with the number of measures, the length of the call and the size of the sales force at once — most of it spent re-reading words it has already read.

The approach

Group what's related, ask it once

Six grouped prompts replaced 25 single ones. Each transcript is read six times instead of 25.

The results

  • −75%

    Fewer tokens used on each conversation, for the same scores.

  • $250 → $60

    What it costs to analyse 1,000 conversations.

  • 0

    Additional model calls when a new KPI is added, provided it fits an existing group.

04 · GenAI · Startup · Seed round raised

Launch unblocked, £500k funding raised

Client
Startup
Service
AI Engineer
Focus
Generative AI evaluation
Stack
Python · Gemini · OpenAI · MLflow

In brief

The product turns a story into a sequence of generated images. Early versions changed the character's outfit, scene and even gender between shots, which made it unshippable. We built an evaluation rubric for consistency and story alignment, then a generation strategy that combined a reference image with a clear story plan.

The challenge

The character wouldn't stay the same person

One good image is easy. A sequence that holds together is an open problem. Some things should change across a story — the outfit, the room — and some must not, such as who the person is. Because shots were generated in parallel, nothing was shared between them: each image was fine on its own and wrong in the story. Feeding earlier images back in as a reference meant generating in series, and the latency made that untenable.

The approach

Give every shot the same anchor

Every shot gets the reference image and the continuity plan, so the person holds while the scene changes.

The results

  • 88%

    Of story tests passed on the evaluation rubric.

  • 0

    Launch blockers left from image inconsistency.

  • £500k

    Seed round raised on schedule.

Two weeks to know.

Tell us what you built and what it's doing instead. If it isn't a fit, we'll say so in the reply — that's the whole proposition.