← All writing
MLOps · 5 min read · 17 Aug 2026

MLOps for a Team of One: What to Automate First

When you are the data scientist, the engineer, and the on-call rotation, automation has to be chosen carefully. Here is a sane order of operations.

Cover image for the article: MLOps for a Team of One: What to Automate First

Why solo MLOps is a different problem

Most MLOps advice is written for platform teams with dedicated infrastructure engineers, a budget for observability tooling, and a backlog long enough to justify building internal frameworks. If you are working alone, none of that applies. You do not have time to automate everything, and if you try, you will spend more hours building pipelines than you would have spent just doing the work by hand. The real question is not how do I automate my ML lifecycle, it is what is the one failure mode that will cost me the most time or credibility if it happens silently.

I think about this in terms of blast radius rather than elegance. A missing unit test on a helper function is annoying. A silent data leak in your evaluation split, discovered three weeks after you have already presented results to a supervisor or a client, is a different category of problem. Solo practitioners should automate in order of how expensive the failure is to discover late, not in order of how satisfying the automation is to build.

This matters practically because I have watched myself, and other students on my course, sink a weekend into setting up a slick CI pipeline for linting and formatting while the actual train and test data still overlap by accident. The lint pipeline catches a cosmetic issue in seconds. The leakage issue, left unautomated, can invalidate a whole project. Priority should follow consequence, not novelty.

First: automate data validation and split integrity

The single highest-value thing a solo practitioner can automate is a script that runs before every training job and checks three things: that the train, validation, and test sets do not share identifiers or near-duplicate rows, that the schema of incoming data matches what the model expects, and that basic distributional properties have not shifted wildly since the last run. This does not require a feature store or a fancy validation library. A twenty-line script that hashes identifiers, checks for overlap, and asserts column types and ranges will catch the majority of real-world mistakes.

Here is a concrete case. Suppose you are building a churn model from customer records, and your pipeline groups by customer ID before splitting into train and test. If a later data refresh accidentally introduces duplicate customer IDs under slightly different formatting, say one row with a trailing space and one without, your split logic silently treats them as different customers. Now the same customer's history leaks across the split boundary. Your test accuracy might read as 91 percent when the honest, leakage-free number is closer to 78 percent. Nobody looking at the accuracy alone would suspect anything, because 91 percent looks like a good result, not a broken one.

An automated check that hashes and deduplicates identifiers before splitting, and asserts that the intersection of train and test IDs is empty, takes perhaps thirty minutes to write and will run in under a second on most datasets. That thirty minutes is the best return on investment in the entire MLOps stack for a solo practitioner, because it protects the credibility of every number you report afterwards. Everything else in your pipeline, including fancy model architectures, is worthless if the evaluation underneath it is quietly broken.

laptop with code editor open on desk

Second: automate reproducible training, then serving

Once your data integrity checks are in place, the next thing worth automating is making a training run fully reproducible from a single command: fixed seeds, pinned dependency versions, and a record of exactly which data snapshot and hyperparameters produced a given model artefact. This does not need to be elaborate. A simple convention, where every trained model is saved alongside a small metadata file recording the git commit hash, the data version, and the configuration used, will save you from the specific and common disaster of not being able to reproduce your own best result two months later.

I would put this second rather than first because reproducibility failures are expensive but usually recoverable; you lose time, not credibility, if you can eventually reconstruct what you did. Data leakage failures, by contrast, corrupt the numbers themselves. So reproducibility earns its place as priority two, not priority one.

Serving automation, meaning a script or lightweight service that loads the latest validated model and exposes predictions without manual intervention, comes third. For a solo project this can be as simple as a scheduled job that pulls the latest model artefact meeting a quality threshold and swaps it into a prediction endpoint. The key discipline is the quality threshold: never deploy automatically without first re-running the validation checks from step one against the new model. Automating deployment without automating the gate in front of it just means you can ship a broken model faster.

Last: monitoring, and only what you will actually look at

Monitoring should come after the earlier steps, not before, because monitoring dashboards nobody looks at are worse than no monitoring at all: they create a false sense of safety. For a team of one, the honest version of monitoring is a small number of alerts tied to metrics you have promised yourself you will act on, not a comprehensive dashboard covering every possible statistic. Two or three tracked quantities, such as prediction distribution drift and a proxy for label quality where ground truth is delayed, are enough to start.

A concrete example: if you are running a demand forecasting model that gets true labels only a month after prediction, you cannot monitor accuracy in real time. Instead, automate a weekly check comparing the distribution of input features against the distribution seen during training, using something as simple as a threshold on the difference in feature means or a basic statistical distance measure. If the check fires, you investigate manually rather than trusting the model blindly. This is a much smaller build than a full observability platform, and it captures most of the practical value.

The practical takeaway is this: for a team of one, automate in the order of consequence. Data and split integrity first, because a silent leak invalidates everything downstream and is nearly undetectable without a dedicated check. Reproducible training second, because losing your own best result is expensive but recoverable. Serving third, gated by the same validation logic from step one. Monitoring last, and kept deliberately small, tied only to metrics you will genuinely act on. Skipping steps in this order, particularly by jumping straight to deployment automation or dashboards, is the most common way solo practitioners end up with an impressive-looking pipeline sitting on top of untrustworthy numbers.

server room data center
← All writing See the project case studies →