Machine learning development in London
A model that prices, scores or flags a London customer shapes a real decision, so the people who run it need to understand it. A fraud or credit model that nobody can explain is hard to trust and harder to improve. The teams we talk to usually have a model that works in a notebook and no way to monitor it once it is live.
We build the parts around the model that make it dependable: features computed the same way in training and production, monitoring for drift, a record of why each version shipped, and explanations a customer-facing team can read. Sometimes the right answer is a simpler model with clearer reasons, and we will say so. Our repeat-fault clustering on FM360 went from experiment to production only after we could show an operations manager why two faults were grouped together.
Financial services drive more of London's software demand than any other sector. Payments companies, challenger banks, wealth platforms and brokers need ledgers that reconcile, APIs that stay correct when a partner retries, and apps customers trust with their money. Most of them reached the market fast, which was the right call at the time, and now run systems built for launch rather than for the size they have become. The work is making those systems dependable without stopping the business that runs on them.
Insurance is its own case. The specialty insurers, managing agents and brokers around Lloyd's still run much of their work on ageing policy administration platforms and spreadsheets that travel between firms by email. Lloyd's has moved away from Blueprint Two, the market-wide programme that was meant to digitise placement and claims, so each firm is modernising its own systems one integration at a time. The City's law firms and consultancies sit alongside them, holding decades of documents and few ways to search them by meaning.
Media, retail and the public sector bring different problems. Publishers run subscriptions, paywalls and content systems that have to hold up on a busy news day. Direct-to-consumer brands outgrow their first shop as they start selling into Europe and the US. Suppliers to councils and NHS bodies build services that have to work for every resident, including people using a keyboard or a screen reader. Hiring is the common constraint. ITJobsWatch puts the median advertised salary for a software engineer in London at £98,750 over the six months to September 2026, and banks, fintechs and the large technology firms compete for the same people.
Working with us from London is straightforward. Four hours of every working day overlap with yours, set across your morning, so stand-up, code review and the decisions that follow happen live. You talk to the engineer who writes the code, in your own Slack, GitHub and Linear. The rest of the day moves forward in pull requests you can read at your desk, with runbooks and architecture notes written as the work goes.
We are the right fit when you have a defined piece of work and need senior engineers on it this month rather than next quarter. Start with a fixed-price two-week piece and judge us on what ships. We add capacity while a London hire is still in progress, and we work white-label under your name for agencies.
Four ways this arrives.
Someone got good results on a laptop and nobody can reproduce them. We turn it into a training pipeline with pinned data and versioned artefacts, put a serving endpoint in front of it, and record what it was evaluated on so the next version can be compared.
Hundreds of conditions routing tickets or flagging risky orders, each added after an incident. We measure what the rules get wrong on your labelled history, then test whether a classifier beats them. Sometimes the answer is fewer, better rules, and we say so.
Demand, load or staffing estimates that miss often enough to be ignored. We start with a plain seasonal baseline, backtest against the periods you actually plan around, and add complexity only where it beats that baseline on those periods.
Duplicate records, recurring faults, near-identical products under different names. Embeddings group text by meaning where keyword matching cannot, and we build the screen that lets a person correct a group rather than trust it blindly.
Repeat-fault detection that began as UMAP and HDBSCAN over 33,000 work orders and shipped as nightly incremental clustering on the same embedding model.
Read the write-up →Asked by London teams.
How do you work with teams in London?+
Four hours of every working day overlap with yours, set across your London morning, so stand-up and code review happen live. We join your calls and work in your tools: Slack, GitHub and Linear. You talk directly to the engineer who writes the code. Outside the overlap, the work carries on in pull requests you can read at your desk, and runbooks and architecture notes are written as we go.
Do you build for London fintechs and insurers?+
Yes. For payments companies, challenger banks and wealth platforms we build ledgers that reconcile, webhook handling that stays correct when a provider retries, and React Native apps with biometric sign-in and step-up checks for risky payments. For insurers, managing agents and brokers around Lloyd's we replace spreadsheet workflows with internal tools: bordereaux intake, referral queues and approvals, connected to the policy systems you already run.
How does your rate compare to hiring in London?+
ITJobsWatch puts the median advertised salary for a software engineer in London at roughly £99,000. Our published rate is $35/hour, with a $5,000 minimum engagement. There is no recruiting time and no employment overhead, and we can start within days of the first call. Most clients begin with a fixed-price two-week piece at $2,800, so you judge us on working code before committing to more.
Can you work white-label for a London agency?+
Yes. London agencies bring us in when a client project needs more senior backend, mobile or infrastructure work than the team has free. We work under your name, in your repositories and your client's tools, and you stay the face of the project. The NDA comes before specifics, the code belongs to the client from the first commit, and runbooks and architecture notes are written as we go.
Do we need machine learning, or is a rules engine enough?+
Often a rules engine is enough, and it is cheaper to run, explain and audit. If the people who make the decision today can write it down, write it down. A model earns its place when the rules keep multiplying, the inputs are messy text or images, or the pattern shifts faster than anyone can edit the rules. We check against your history before recommending either.
Why not just call a hosted model API?+
Sometimes you should. With low volume, messy language and no labelled data, a hosted model and a good prompt ship quickly. A trained model wins when per-call pricing starts to hurt at your volume, when latency matters, when data cannot leave your systems, or when you have labelled examples a small model can learn from. We price both paths before you commit.
How much data do we need?+
For classification, usually fewer labelled examples than people fear, and embeddings can group text with no labels at all. Forecasting is the opposite: you need enough history to cover the cycles you plan around, and a single year says little about a yearly pattern. We give you an answer after looking at your data, not before.
What happens when the model gets worse?+
It will, because the world it learned from changes. We log inputs and predictions, compare them with outcomes as they arrive, and alert when accuracy or the input mix drifts past a threshold you agreed. Retraining is a scripted pipeline with an evaluation gate, so a new model replaces the old one only when it does better on the same test set.
Can you build a recommendation system?+
Yes, and we would start without a learned model. Co-occurrence and embedding similarity, served from Postgres or a vector index, beat a most-popular list for most catalogues and are easy to debug. A learned ranker comes after that, once you have enough interaction data to train and evaluate one. A learned ranker is something we build from our work with embeddings and clustering, starting from a simple baseline you can measure it against.