Hiring guide · Custom Software

Hire Machine Learning Engineers: Rates, Vetting and Engagement Models

The short answer

Contract and staff augmentation rates for mid to senior machine learning engineers run roughly $45 to $90 per hour offshore, $110 to $190 per hour onshore in the US or Western Europe, and $150,000 to $230,000 base for a US in-house hire before benefits and overhead. Those are the bands Digital Heroes quotes, pays and competes against in our own delivery and hiring. Most companies asking this question do not need a research-grade ML person. They need someone who can take a model that already works in a notebook and put it behind an API with monitoring, retraining and a rollback path. For that, a dedicated ML engineer on staff augmentation or a small agency pod for three to six months beats both a solo freelancer, who is gone the moment your model drifts, and a full-time hire, who takes three months to ramp and five months to backfill. Hire in-house once ML is a permanent, load-bearing part of your product and you already have someone senior who can judge the work.

What a machine learning engineer does, and where hiring goes wrong

A machine learning engineer is not a data scientist who codes, and the difference is where most of the money gets wasted.

We see this pattern constantly. A logistics company hires a strong ML person off a portfolio full of Kaggle medals and a clean demand forecasting notebook. Three months in, the model exists. It is even accurate. It also lives in a Jupyter notebook on a laptop, reads a CSV that someone exports from the warehouse system by hand every Monday, and has no way to reach production. The founder asks how to use it. The answer involves rewriting most of it.

The bulk of the job is the 80 percent around the model. Getting features computed the same way at training time and at serving time, so the model does not silently degrade because the training pipeline used a 30 day rolling average and the API used 7. Deciding whether this needs a real time endpoint on FastAPI, TorchServe or vLLM, or whether a nightly batch job writing predictions into Postgres is enough, which it usually is, and the good ones tell you that. Wiring up MLflow or Weights and Biases so you can tell which model version produced which prediction six weeks later when a customer complains. Putting drift detection in place with something like Evidently so you find out the model broke before your customers do. Building the retraining loop and the shadow deployment so a new model gets compared against the old one on live traffic before it takes over.

Here is where hiring goes wrong: companies interview for modeling skill and then hand the person a systems job. You end up paying senior money for someone who can explain gradient boosting beautifully and has never been paged at 2am because a feature pipeline emitted nulls and the model started predicting the mean for every customer. The other direction fails too. A backend engineer who has read the scikit-learn docs will ship you a model with target leakage in the training set that scores 0.97 offline and 0.61 in production, and will not understand why.

Engagement models: what fits

In-house hire. Right when ML is core product, not a feature: recommendation, pricing, fraud, ranking, anything where the model quality is the thing customers pay for. The person accumulates knowledge about your data that is hard to transfer, such as which columns are lies, which timestamps are in the wrong timezone, why 2023 data is unusable. That knowledge is the asset. Wrong when you need one model, once. You hire someone senior, they finish in four months, they get bored and leave, and you own a production system nobody understands.

Freelancer. Good for scoped, well-defined work with a hard edge: build this recommender, tune this pipeline, port this model to ONNX and cut inference cost. Cheapest per hour. The failure mode is specific to ML. These systems do not fail loudly like a broken API. They fail quietly, months later, when the data shifts. A freelancer who is gone by then leaves you with a model nobody can retrain and a feature pipeline only they understood. If you go freelance, make the handover artifact contractual: a retraining runbook someone else has executed, not a README.

Agency. Right when you need the whole thing and you have no ML person to supervise. A real ML delivery is not one skill. It is a data engineer to make the pipelines reliable, an ML engineer for the modeling and serving, and someone who knows Terraform and cloud cost, because a GPU endpoint left running is a four figure surprise. You get all three without hiring three people, and you pay for that. The downside is that an agency can leave you dependent if the engagement ends without a real handover, so treat knowledge transfer as a deliverable with a date on it.

Staff augmentation. The most common right answer, and what Digital Heroes ships most often for this role. You have engineering leadership. You lack the ML specialist. You embed one or two ML engineers into your team, your standups, your repo, your review process. They follow your conventions. When the engagement ends, the code is already in your codebase in your style, not a delivered artifact you now have to absorb. Best when you can technically judge the work but cannot hire fast enough or cannot justify permanent headcount yet.

What it costs

These ranges come from Digital Heroes delivery and from the market we hire in and quote against. They are not survey data, and they move a lot by region, seniority and how specialized the problem is.

Hourly, contract or staff augmentation. Offshore ML engineers in South Asia and Eastern Europe typically land $45 to $90 per hour, with the top of that band being people who have run models in production at scale, not just trained them. Onshore US or Western Europe generally runs $110 to $190 per hour, and $200 plus is normal for people with deep specialization: large scale recommender systems, LLM inference optimization, or anything touching regulated model risk.

In-house, US. Base commonly lands $150,000 to $230,000 for mid to senior in the offers we watch candidates weigh against ours, and higher in the Bay Area or for people coming out of a serious ML org. Base is not the cost. Employer taxes, health coverage, equipment, software seats and general overhead push the real cost well above base, and we model clients at roughly 1.25x to 1.4x base when we help them compare options. Then add recruiting, which is real money whether you pay an agency percentage or burn engineering hours on interviews. Then add ramp, which for ML is longer than for regular backend work because the person has to learn your data before they can model it. Two to four months to genuinely productive is realistic.

The line item people forget. Compute: GPU training, inference hosting, vector database, experiment tracking. A single production ML feature can carry a monthly infra bill that rivals a fraction of the engineer's salary. Ask any candidate what they did to control it. If the answer is nothing, they have never owned a system that mattered.

How to vet a machine learning engineer

Skip the algorithm trivia. Nobody derives backpropagation on the job.

Ask about a model that failed in production. This is the highest signal question available. A real answer sounds like: "our churn model degraded over two months because an upstream team renamed a field and it started coming through as null, our imputation filled it with the median, and accuracy dropped slowly enough that nobody noticed until sales complained." A weak answer talks about overfitting on a validation set. The difference is production scars versus coursework.

Probe the train and serve skew. Ask how they make sure a feature is computed identically in training and at inference. Listen for a real mechanism: a shared transform module imported by both paths, a feature store such as Feast, or an explicit contract test. Listen for whether they mention point-in-time correctness, meaning they know that joining a feature computed after the label event is leakage. This one concept separates people who have shipped from people who have not.

Ask how they chose the baseline. Good ML engineers start with logistic regression, LightGBM or XGBoost and a heuristic, and only reach for deep learning when the simple thing is beaten. Someone who reaches for a transformer on a 40,000 row tabular problem will cost you six months.

Ask what metric they shipped against and why. Not accuracy. Ask about class imbalance handling, the precision versus recall trade-off, and whether the offline metric was connected to a business number. "We optimized AUC" is incomplete. "We optimized recall at a fixed 5 percent false positive rate because ops could only review 200 flags a day" is a person who has talked to a stakeholder.

The take-home. Do not ask them to maximize accuracy on a clean dataset, which tests Kaggle rather than the job. Give them a small, deliberately messy dataset with a time component, and ask for a working prediction service, not a notebook. Judge it on: did they split by time with something like TimeSeriesSplit rather than a random KFold, since a random split on temporal data is leakage and a surprising number of candidates do it; is the preprocessing inside an sklearn Pipeline with a ColumnTransformer fitted only on the training fold, or scattered across cells that leak test statistics; is there a data validation step; is the model artifact versioned; does the serving code load the model once at import rather than per request; is the request body validated with a Pydantic schema; is there a test that catches a schema change. Cap it at four hours and pay for it. If they hand you a notebook when you asked for a service, that is your answer.

Portfolio review. Look for repos with a Dockerfile, a training script separate from the serving script, and a config file. Look for MLflow or DVC. Kaggle rank is not a negative signal, but it is not the signal you need. Ask them to walk you through the one system they built that is still running.

Red flags

Everything is a neural network. If every project in the portfolio is deep learning regardless of data size, you have someone optimizing for their own resume. Ask instead: "What is the simplest model that would have worked here, and why did you not use it?"

No answer on data versioning or model versioning. If they cannot tell you how to reproduce a model from six months ago, they cannot debug one. Ask instead: "A prediction from March looks wrong. Walk me through how you find which model and which data produced it."

Talks about accuracy without mentioning the base rate. A 96 percent accurate fraud model where fraud is 4 percent of transactions is a model that predicts "no fraud" every time. Ask instead: "What was the class balance, and by how much did your model beat the majority-class baseline?"

Random train and test split on time series data. This is the most common competence tell in the discipline, and it inflates offline scores badly. If it shows up in the take-home, that is disqualifying. Ask instead: "How did you split this, and what would change if the data were temporal?"

No opinion on monitoring or retraining. A model without drift detection is a liability with a countdown on it. Ask instead: "How would you know this model got worse, and what triggers a retrain?"

When to hire this role at all, and how Digital Heroes staffs it

Often you should not. If your data lives in five systems and nobody trusts any of them, an ML engineer will spend six months doing data engineering badly. Hire a data engineer first. If you want to add a chat interface or document summarization to your product, that is an application engineer who knows how to call an API and build good retrieval, not an ML engineer, and hiring the latter for the former is expensive and mutually frustrating. If you need dashboards and to know what happened last quarter, that is an analyst. The trigger for a real ML engineer is this: you have data you trust, you have a prediction that would change a decision you make repeatedly and at volume, and the value of getting it right is larger than the cost of maintaining a model forever.

Digital Heroes staffs this as a pod, not a single seat, because a lone ML engineer bottlenecks on pipeline work every time. A typical engagement is one ML engineer on modeling and serving, a data engineer for roughly half the time to make ingestion reliable, and cloud support for the deployment and cost side. We start with a scoped diagnostic on the data before anyone touches a model, because that is where the timeline risk sits. The first milestone is a working prediction path in production, deliberately with a simple model, then quality work once the plumbing is proven. If you eventually want this in-house, the pod runs in your repo with your conventions from day one, so the handover is a conversation and not a migration.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. McKinsey found personalization most often drives 10-15% revenue lift, and companies that grow faster drive roughly 40% more of their revenue from personalization than slower-growing peers. Source: McKinsey & Company (2021) →
  2. The Standish Group 1995 CHAOS Report found only 16.2% of software projects fully succeeded; success varied sharply by size, with large-company projects succeeding about 9% of the time versus far higher rates for small projects - best treated as an industry survey, not an audited dataset. Source: Standish Group (1995) →
  3. WordPress powers 41.5% of all websites and holds 59.2% of the market among sites running a known content management system, making it by far the most-used CMS on the web. Source: W3Techs (2026) →
  4. Digital Champions expect to achieve about 16% in cost savings and around 15% in revenue gains from digital operations over five years; the study surveyed 1,155 manufacturing executives across 26 countries. Source: PwC / Strategy& (2018) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does it cost to hire a machine learning engineer?
Contract and staff augmentation rates run $45 to $90 per hour offshore and $110 to $190 per hour onshore in the US or Western Europe, with deep specialists going higher. A US in-house hire commonly sits at $150,000 to $230,000 base, and benefits plus overhead push the real cost well above that, which we model at roughly 1.25x to 1.4x base. Add recruiting cost and two to four months of ramp before the person is productive. These are the bands Digital Heroes quotes, pays and competes against, and they move a lot by region and seniority.
Freelancer or agency for machine learning engineers?
Freelancer if the work has a hard edge and a clear finish: build this model, cut this inference cost, port this pipeline. Agency or staff augmentation if the model needs to keep working, because ML systems fail quietly months later when the data shifts, and a freelancer who has moved on leaves you with a model nobody can retrain. If you go freelance, make a retraining runbook that someone else has actually executed a contractual deliverable, not a README.
How do I test a machine learning engineer before hiring?
Give a paid four hour take-home with a small, deliberately messy dataset that has a time component, and ask for a working prediction service rather than a notebook. Judge whether they split by time instead of randomly, whether preprocessing sits in a pipeline fitted only on the training fold, whether there is data validation, whether the model artifact is versioned, and whether the serving code loads the model once rather than per request. A random split on temporal data is leakage and is disqualifying. Then ask them to describe a model that failed in production, which is the highest signal question in the interview.
How long does it take to hire a machine learning engineer?
In-house hiring for this role realistically takes 8 to 14 weeks from opening the role to a signed offer, plus two to four months of ramp because the person has to learn your data before they can model it. Contract or staff augmentation can put someone in your repo in one to three weeks. The gap between those two timelines is why most companies start with augmentation and convert later.
Onshore or offshore for machine learning engineers?
Offshore ML engineers in South Asia and Eastern Europe typically run $45 to $90 per hour versus $110 to $190 onshore, and the quality ceiling offshore is high for people who have run models in production rather than just trained them. Offshore works well for the modeling and pipeline work, which is deep-focus and does not need constant real-time collaboration. Keep three to four hours of timezone overlap if the ML work is tightly coupled to a product team shipping weekly.
Do I own the code and the models if I hire a contractor or agency?
You should, and the contract must say so explicitly. Make sure the assignment clause covers not just the serving code but the trained model weights, the training scripts, the feature engineering code, and the experiment history in whatever tracking tool was used. Also confirm that your training data and any derived embeddings are not used to train anything for another client. If a vendor is vague on model weight ownership or on the experiment logs, that is a signal to walk.
What is the difference between a machine learning engineer and a data scientist?
A data scientist answers questions and produces analysis and models, usually in notebooks. A machine learning engineer makes a model run reliably in production: serving, feature consistency between training and inference, versioning, monitoring for drift, and the retraining loop. Hiring a data scientist and then handing them a systems job is one of the most common and most expensive mistakes in this area. If you need the prediction to run every day without someone babysitting it, you need an ML engineer.
Do I need a machine learning engineer or a data engineer first?
If your data lives in several systems and nobody fully trusts it, hire the data engineer first. An ML engineer dropped into an untrustworthy data environment will spend six months doing data engineering, badly and expensively. The trigger for the ML engineer is that you have data you trust, plus a prediction that would change a decision you make repeatedly and at volume.
Do I need an ML engineer to add AI features using an LLM API?
Usually no. Building a chat interface, document summarization, or retrieval over your own content is application engineering plus good retrieval design, not machine learning engineering, and the two skill sets barely overlap. You need an ML engineer when you are training or fine-tuning a model on your own data, or when you need serving infrastructure and drift monitoring for a model you own. Hiring an ML engineer to call an API is expensive and frustrating for both sides.
What does it cost to keep custom software running after launch?
Budget 15-20% of the original build cost per year, which on a $100,000 system means $15,000 to $20,000 for security patches, dependency updates, bug fixes, and small improvements as real usage reveals what the spec missed. Cloud hosting for a typical business application adds $50 to $300 a month on top. Skipping maintenance does not save the money; in Digital Heroes rescue work, unmaintained systems typically need a far more expensive rebuild within about three years.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
What does a $50,000 custom software budget actually buy?
One core workflow done properly: 10 to 15 screens, two or three user roles, a couple of integrations, an admin panel, and automated tests, delivered in roughly 12 to 14 weeks. What it does not buy is that workflow plus a mobile app plus AI features plus five more integrations. The discipline of picking the one workflow that matters is what separates $50,000 projects that ship from $50,000 projects that stall at 70% complete.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
Will custom software work with the tools we already use, like QuickBooks and Stripe?
Yes, and this is one of custom software's genuine advantages: QuickBooks, Stripe, Shopify, and most mainstream business tools publish documented APIs built for exactly this. Expect each standard integration to add one to two weeks of build time, and be suspicious of any quote that lists five integrations without asking what data flows in which direction. The hard cases are legacy systems with no API, which is a question to raise in discovery, not in week nine.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
What is the biggest mistake first-time software buyers make?
Choosing the lowest quote without asking why it is the lowest. A bid 40% under the field usually gets there by skipping tests, documentation, and code review, which are invisible in a demo and brutal to pay for later; every stalled project Digital Heroes has been asked to rescue tells some version of that story. The second mistake is signing without a written scope, which reliably turns the winning cheap quote into 1.5x to 2x the price by launch.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?