A model is only as honest as the split it was tested on.

Most stalled machine-learning projects we are handed have a working model in them already. What they are missing is the path in front of it — ingestion, cleaning, entity resolution, features computed once so training and serving cannot drift apart — and the path behind it: a deployable artefact, an evaluation somebody can defend, a cost per prediction at real volume, and monitoring that notices before a customer does.

That is the work we do. Not a research lab, and most of the time you do not need one.

FACT 01

Anonymised mobile-location data turned into footfall and behaviour insight for a location-intelligence company — the privacy constraint shapes the model rather than filtering its output.

FACT 02

Acoustic, RF, electro-optical/infrared and radar fused into one validated track for airspace security — detection to handoff in four seconds.

FACT 03

There is no accuracy, precision or AUC figure anywhere on this page. A number without a dataset, a split and an operating point is decoration. Every chart here is schematic and says so.

See a score tell a lie ↓

30 minutes, working session. Bring the question you want answered and the data you actually hold; you leave with a one-page read either way. Nobody follows up more than once.

A street scene with buildings highlighted and a footfall-trend chart overlaid — an illustration of location analytics
Movement, made legible — location intelligenceAnonymised device data resolved into footfall by location and by month. The privacy constraint shapes the model rather than filtering its output. Location intelligence case →

Six states a machine-learning project arrives in

We have been handed all six. Only one of them is about the model.

DEPLOYABILITY

The notebook that cannot be deployed

It works, and it has a good score. It is also four hundred cells, three hard-coded paths, a manual step in the middle, and one person who knows the order to run it in.

EVALUATION

The score was too good

Excellent on the validation set and useless in service. Somewhere a feature contained the answer, or the split was random on data that has time in it. This is found after launch, by a customer.

OWNERSHIP

It works and nobody deployed it

Nearly ready for two quarters. The data science team does not own infrastructure, the platform team has no context, and the model sits between them as everybody’s second priority.

SKEW

Training and serving disagree

The feature is computed one way in the pipeline and another way in the API. The difference is small, silent and everywhere, and it takes weeks to find because both sides look correct on their own.

DRIFT

It decays and nothing says so

Performance was measured once, at launch. Six months on the inputs have shifted, the model is quietly worse, and the only monitoring in place is on the API’s uptime.

SCALE

The pipeline was written on a sample

The real dataset arrives, pandas allocates its way through the memory ceiling, and the job that took two minutes now takes nine hours — or nothing at all.

The same data, split two ways

One schematic dataset with time in it, and a feature that quietly carries the answer. Split it at random and the learning curves agree beautifully. Split it by time — train on the past, test on the future, the way the model will actually be used — and the truth arrives.

SCHEMATIC — ILLUSTRATIVE CURVES, NO CLIENT DATA SPLIT: RANDOM
What the report would say
Ready to ship

Training and validation move together to the end. On this evidence the model generalises, the project is finished, and somebody writes a number in a slide.

What is actually happening
the split is doing the work

Rows from the same week are sitting on both sides of the split, so the model is being asked about days it has already seen. The feature carrying the answer — a running total computed after the event — is never tested.

This is the cheapest failure to prevent and the most expensive to discover. It is why the first thing we agree on is the metric and the split, before an experiment runs — so the answer at the end is checkable rather than negotiable.

The platform architecture: data suppliers, compute suppliers and model owners connected through the platform, with settlement running between them
Three sides, one ledgerA marketplace linking data, models and compute, with micropayments between them. The engineering problem is legibility: a model’s provenance and cost have to be readable by someone who will not read the code. ML marketplace case →
A detection console: a map with an active target, its coordinates, altitude, speed and heading, and the sensor stations reporting it
Four sensors, one track

Reconciling instruments that each lie differently

Acoustic, RF, electro-optical/infrared and radar, fused into a single validated track for airspace security — detection to handoff in four seconds. The hard part is confidence: naive fusion inherits the union of every sensor’s errors, so the work is deciding whose reading to believe, when, and how much. Sensor fusion case →

Four systems, and what was hard about each

Every one has a case page behind it. Where a figure appears below, it is the only figure that has been cleared — there are no others.

Location intelligence
Python · SQL
Privacy-safe

Privacy-safe location intelligence at national scale

Anonymised mobile-location data turned into footfall and behaviour insight for a location-intelligence company. The hard part is that the privacy constraint designs the system: the insight has to survive without the individual, which is an aggregation and modelling problem rather than a filtering one. This is the clearest case we have of data engineering deciding what the model can even be. Location intelligence case →

Sensor fusion
Acoustic · RF
EO/IR · radar

One validated track out of four disagreeing instruments

Detection to handoff in four seconds, for airspace security. Each sensor is wrong in its own way — one in weather, one in clutter, one at range — so the model is a confidence reconciliation rather than a classifier, and the output has to be a track a human operator will act on. Sensor fusion case →

AI video agent
OpenCV · MediaPipe
TensorFlow

Perception where the constraint is a frame budget

Distance and head-angle tracking running live in a browser, beside speech and an animated character. We prototyped on OpenCV, then benchmarked OpenCV with TensorFlow against OpenCV with MediaPipe on accuracy, stability and speed, and shipped the winner behind a clean API. The binding constraint here is not a score — it is how much of the frame this is allowed to cost. Face-tracking case →

ML Marketplace
Decentralized
MVP

Making a model’s provenance and cost legible

An MVP connecting data suppliers, ML developers and compute into one ecosystem with micropayments. The hard part is that the three sides value completely different things, and the product has to make where a model came from and what it costs readable by someone who is never going to open the code. ML marketplace case →

Two more pieces of data-science work sit outside these, without case pages of their own. We have worked with PeakVentures, whose product is advertising and marketing intelligence built on live signals rather than lagging reports — real-time signal processing, cross-channel journey mapping and predictive audience modelling. And a precision-healthcare platform, which we are not naming, where the delivered piece was exactly one thing: the filtration of a dataframe. That is a small sentence for a real week of work, and it is the honest shape of this field.

Fluvius at a table with two other founders at a venture conference in San Francisco

What the data-science seat on this team covers

Beyond the four systems above, this is the range an estimate here is drawn from. Read it as depth on the seat rather than a list of delivered projects.

LANGUAGE

Natural-language work with spaCy, NLTK, Gensim and Transformers: extraction and structuring from documents that were never designed to be parsed, and the unglamorous evaluation that tells you whether the extraction is trustworthy on the next thousand.

GRAPHS

Graph-theoretic analysis with NetworkX and Neo4j, where the value is in the relationships rather than the rows — entity resolution, network structure, and the patterns a table will not show you.

THE FRAMEWORKS

PyTorch and scikit-learn as the everyday tools; TensorFlow and Keras where that ecosystem is already in place, as it is on the digital employee. Pandas everywhere, and the discipline to know when a dataframe has outgrown one machine.

GETTING IT OUT

Deploying models into production environments rather than handing over a notebook: the artefact, its version, its evaluation harness, and the retraining path written down before anyone needs it.

Exploratory analysis sits under all of it — the days spent finding out what the data actually contains, which is where most of the honest surprises live and where a project is usually saved or lost.

The exchange interface, where data, models and compute are listed and settled between the three sides of the marketplace
The part nobody demos

A model is an asset with an owner and a bill

Once a model leaves the notebook it acquires the things software has: a version, a provenance, a cost per call, and someone accountable when it is wrong. Building that scaffolding is unglamorous and it is what separates a model that runs from a model that shipped. ML marketplace case →

The work, as we actually sell it

Timelines are indicative ranges and depend on scope. The first one is small enough that the answer is allowed to be no.

Is a model the right instrument?

2–3 WEEKS

Whether the data supports the question, whether a deterministic rule would do it, what the baseline is, and what a model would have to beat to be worth running. You get the document, and the do-not-build recommendation if that is the answer.

Data pipeline before model

4–12 WEEKS

Ingestion, cleaning, entity resolution, feature computation and versioning — built once and used by both training and serving, so the two cannot quietly diverge.

Notebook to production

6–14 WEEKS

A working experiment becomes a deployable, testable, versioned artefact with a defined retraining path. You get the service, the evaluation harness, and the model versioned separately from the code.

Evaluation you can defend

2–6 WEEKS

The metric chosen before the experiment, temporal splits where time matters, leakage checks, calibration, and a baseline that is honest about what a simple rule already achieves.

Inference cost and latency

3–8 WEEKS

Batch against real-time, quantisation and distillation, hardware choice, and the cost per prediction modelled at your real volume rather than at demo scale.

Monitoring and drift

3–8 WEEKS

Input-distribution monitoring, scheduled retraining with its own regression suite, and an alert that reaches a person before a customer writes in.

What you are probably thinking

“You are not a research lab.”
Correct, and most stalled projects we see do not need one. They need the data path in front of the model and the deployment path behind it. If your problem is genuinely a research problem, we will say so in the first two weeks.
“We already have data scientists.”
Good — they should keep the model. We take the engineering: pipelines, features, deployment, monitoring, cost. That division gets written down before we start, so month two is spent on the product.
“How accurate will it be?”
Unknown until we have seen your data, and any agency answering that on a website is guessing. What we commit to early is a baseline and a metric chosen before the experiment, so the answer at the end is checkable rather than negotiable.
“Our data is a mess.”
It always is. That is most of the work and most of the value, and it is why the first engagement is usually a pipeline rather than a model.
“We tried an outside dev shop and it went badly.”
Usually the same three causes: no senior person accountable, a demo-grade codebase, and a handover that never happened. Here you get direct access to the engineers doing the work, no account-manager layer, a senior architect signing off every project, and tests and documentation as part of the deliverable.
“What if the answer is that we should not build a model?”
Then that is what the written read says, and you keep it. It has happened, and it is the cheapest good outcome available on this page.

The record behind the pages

200+
Clients served
10+
Years of happy clients
7+
Years our longest clients have stayed

Many of our clients have been with us for 7+ years straight. The Upwork and Clutch records are independently verifiable.

Not ready to talk? Take the checklist.

One page, 15 questions to ask before your model goes to production — temporal splits and what makes one necessary, the leakage checks worth running first, training and serving computing the same feature the same way, the baseline a simple rule already achieves, how the model is versioned against the code, cost per prediction at real volume, what is monitored besides uptime, and who gets paged when the inputs move.

Bring the question, the data you hold, and the decision it would change.

A free 30-minute working session, not a sales call. We restate your question as a modelling problem, name the baseline it has to beat, and tell you whether a model is the right instrument at all. You keep a one-page read either way: the question restated, the baseline, the leakage risks we would check first, and whether a deterministic rule would do the job.

RELATED SERVICES → AI Strategy Consulting AI Agent Development AI Integration Data Engineering & AI Data Readiness All services