Across a crawl of 1.1 million British careers pages, exactly one employer uses the word “pipeline” in an AI job title. One. Not because the work does not exist, but because it is nearly always done by somebody titled something else.
This engineer makes sure the data arriving at your models is the shape your models expect — today, and after somebody upstream redecorates. It is the difference between a model that keeps earning and one that quietly rots while every dashboard stays green.
The column that changed without telling anyone
Start with the failure mode, because it tells you what to hire for. Pipelines rarely break because their own code is wrong. They break because a product engineer three teams away renamed a field, sent nulls where there had never been any, or quietly redefined a status value. Nothing threw an error. The job ran green. The features went wrong and the model degraded over a fortnight.
So the central skill is not really technical. It is the ability to go to the team that owns a source system, negotiate an explicit agreement about the shape and meaning of the data, then enforce it without becoming the department of no. That temperament is rare, and it is what to screen hardest for.
A data contract is a negotiation, not a YAML file
Plenty of candidates will say the words “data contract”. Far fewer have made one hold against a team that did not want it. Ask what was in theirs:
- Schema, with types and nullability stated, and a list of the fields consumers may depend on.
- Semantics — what a row represents, what each enumerated value means, and who may change that meaning.
- Freshness and volume, so that “no data arrived” is distinguishable from “nothing happened”.
- A deprecation path: how much notice a breaking change gets, and what the producer must do meanwhile.
- Where it is checked. A contract that lives in a wiki is a wish.
That last point separates the good candidates. Enforcement can sit in the producing team’s own build, so an incompatible migration fails their pipeline rather than yours, or at your ingestion boundary, where a violating batch is quarantined rather than propagated. Anyone who has really done this has a preference, and a reason.
Re-running six months is rarely as simple as re-running it
Backfills are the best interview subject here, because they punish everything a candidate has not thought about. Open simply: what happens when you reprocess a day already processed?
The answer you want involves partitions replaced wholesale rather than appended to, output keys that are deterministic functions of the input rather than generated at write time, and a way of proving afterwards that the reprocessed rows match the originals wherever they should.
Then ask what makes it unsafe, and listen for answers arriving unprompted. Side effects that fire twice — notifications, webhooks, anything escaping the warehouse. Identifiers allocated by a sequence, which will not come back the same. Joins against dimension tables that have themselves moved on, so a six-month rebuild silently re-labels last spring’s history with this week’s customer segments. And capacity, because a backfill fighting the live pipeline for compute causes the outage it meant to repair.
Finish by asking how they would run it without taking downstream tables offline. A shadow table and a swap, or oldest-first chunks with a resumable checkpoint, are both respectable. “Just re-run the job” is a confession, not an answer.
Event time, arrival time, and the gap nobody budgets for
A candidate who does not instinctively separate when something happened from when you found out about it will build something that looks correct and is not. A mobile app sits offline for three days and then uploads a week of events at once; a third-party feed re-issues corrected figures a fortnight later. If rows are stamped with the time they were loaded, every aggregate built on them is wrong in a way that is nearly impossible to notice, because the totals still look plausible.
Probe for the mechanics: a watermark, an agreed tolerance for lateness, a restatement policy for anything outside it. Ask whether a corrected figure updates the old row or appends a new one — either is defensible, but the choice must be made once and written down, not discovered later by an analyst. The sharpest version concerns point-in-time correctness: build a feature from data that had not yet arrived when the prediction was made, and the numbers look excellent in development and disappoint in production.
Put a broken backfill in front of them
Skip the algorithm puzzles. Hand over a small schema, a change log showing three upstream modifications, and a complaint that a report disagrees with itself. Ask what they would look at first, and what they would change so it cannot recur.
Good candidates ask before they answer: who owns the source, is the raw data retained, is there a record of the old schema. That instinct to keep raw input untouched and derive everything else from it is the most reliable signal here, because it is what makes repair possible.
Under-titled almost everywhere, including in your own org chart
These people are advertised as data engineers, analytics engineers, platform engineers and occasionally machine learning engineers. The pipeline title returns almost nothing, so search on the work: feature-data reliability, backfills, contract enforcement, warehouse modelling.
Be clear about the boundary with adjacent hires. If what you need is deployment, serving and the lifecycle around a trained artefact, the MLOps engineer guide fits better. If your estate runs on a lakehouse, read the Databricks engineer guide. If the missing piece is provenance, that is nearer the MLflow engineer brief.
Priced against the wrong thing entirely
Indicatively, expect £60,000 to £95,000 permanent in the UK, with day rates from around £450 to £600, more inside London. Treat those as soft figures, since the title barely exists to benchmark against.
They are also too low. The market prices this role against the data engineering job it resembles on paper, not against the damage it prevents: months of decisions taken on silently wrong numbers, a reprocessing run that double-charges customers, a model degrading since a schema change nobody logged. Good ones cost less than the first serious incident they stop.
If you want them, say in the advert that the job carries authority — that they can require contracts from producing teams and refuse data that violates them. To the right candidate that sentence is worth more than another £5,000, because nowhere else has ever given it to them.