versatileclub
Table of contents (8)
  1. 1. The one mistake that costs most
  2. 2. Data pipeline mistakes
  3. 3. Modeling mistakes
  4. 4. Training and evaluation mistakes
  5. 5. Production and MLOps mistakes
  6. 6. Team and communication mistakes
  7. 7. Hiring mistakes
  8. FAQs

Common Mistakes AI ML Developers Make and How to Avoid Them

The AI/ML mistakes that ship broken models: data leakage, wrong metrics, no drift monitoring, and the hiring ratios that actually work in production.

AI/ML looks like a modeling problem from the outside. On the inside, it is a data problem, an ops problem, and a hiring problem in a trench coat. Most of the "our AI project failed" stories you hear were not modeling failures. They were leakage in the training set, a metric nobody agreed on, a batch job nobody owned, or a senior engineer who never came back from the third re-scope.

Q1. What is the single most common mistake AI/ML developers make?

Data leakage. Not the wrong model, not the wrong hyperparameters, not the wrong loss function. Data leakage between the training set and the test set is the mistake that shows up in almost every failed AI/ML post-mortem, and the mistake that is hardest to catch because the model actually performs great on paper.

🚨 What leakage actually looks like

Leakage is any signal in your training data that will not exist at inference time. Classic examples: a "customer churned" label that was set by the same rule you are trying to learn, a timestamp feature that encodes the label because the label was generated post-hoc, a train/test split that put multiple rows from the same user on both sides, a target-derived feature (average purchase value including the row being predicted) fed back as an input. The model does not learn the underlying pattern. It learns the shortcut.

Offline accuracy jumps 8 to 30 percentage points. Online accuracy is flat or worse. The team spends six weeks debugging deployment before someone asks the right question. Sound familiar? See our note on what A/B testing actually proves and what it does not.

"We spent almost a full quarter chasing a churn model that scored 94% on our validation set. Turned out our validation set included user_ids that were also in training because we split on rows instead of on users. Once we did a proper group-based split the model was at 71%, which was still useful, but nobody was ready to have that conversation."
— ML Lead, Series B SaaS company, Data Science & ML Platforms category, G2
Radial hub diagram showing data leakage at the center with five surrounding AI/ML failure modes.
Radial hub: the mistake at the center shows up in ~90% of failed AI/ML post-mortems.

✅ How to catch it before it costs you

Three habits, in order. First, always split by the natural grouping in your data (user, session, patient, timestamp window) before you split by rows. Second, write down every feature and answer the question "would this value exist at inference time, before the label is known?" Third, hold out a temporal validation set that mimics the deployment gap between when a prediction is made and when the label materializes.

Q2. Where do most data mistakes actually happen?

The data pipeline. Before a single model is trained, most teams have already lost the game because the pipeline that feeds the model is silently corrupt. This is the "80% of the work is data cleaning" cliché, and it is a cliché because it keeps being true, batch after batch.

The seven data pipeline mistakes that show up in ~90% of AI/ML post-mortems.
MistakeWhat breaksThe fix
No schema contract on upstream tablesA column type changes upstream, features silently NaN, model outputs driftGreat Expectations, dbt tests, or Pydantic on every input
Silent joins that drop rowsLeft join becomes inner join, sample shrinks, class balance flipsAssert row counts before and after every join
Timezone assumptions in datetime featuresUTC vs local time skews time-of-day features by 5.5 hours (India) or 8 (PST)Store everything in UTC, convert at feature-engineering time
Categorical encoding driftA new category appears in production, one-hot vector is wrong length, model errors outFit encoders on training set, save them, use unknown-category handling
Missing values treated identically to zeroModel thinks "no data" and "value is zero" mean the same thingImpute with domain-aware strategy or use models that handle NaN natively (XGBoost, LightGBM)
Class imbalance ignoredModel achieves 98% accuracy by predicting the majority class on a 98/2 splitUse precision/recall/F1, not accuracy; consider SMOTE or class weights
Feature engineering done on the full dataset before splittingAggregations (mean, std) computed across train + test, leaking test statistics into trainingFit transformers on training set only, apply to test

None of these are exotic. All of them are boring. And boring is exactly where senior time gets absorbed while the junior data scientist is stuck iterating on a model that is fundamentally unfixable because the inputs are wrong. If you are staffing an AI/ML team from scratch, budget one data engineer for every two data scientists. Not the other way around. More on the split in our writeup on what to look for in a senior technical hire.

Chevron timeline of the seven most common data pipeline mistakes ranked by post-mortem frequency.
Chevron timeline of the seven data pipeline mistakes ranked by post-mortem frequency.

Q3. What modeling mistakes waste the most time?

Optimizing for the wrong metric, using deep learning where a logistic regression would work, and ignoring the baseline. In roughly that order.

⚠️ Optimizing for the wrong metric

The metric you optimize is the metric you get. If you train a fraud detection model on accuracy, you will get a model that ignores fraud because fraud is 0.2% of transactions and predicting "not fraud" for everyone gives you 99.8% accuracy. If you train a recommender on click-through rate, you will get a model that surfaces clickbait. If you train a demand forecaster on RMSE, you will get a model that under-predicts because under-prediction is cheaper in RMSE terms than over-prediction (until you count stockouts).

Pick the business metric first (revenue per prediction, false-negative cost, customer retention lift). Translate it into a loss function. Then train. Not the other way around. See our companion piece on how design and data teams should agree on success metrics before the work starts.

🧠 Deep learning where a linear model would win

You do not need a transformer to predict customer churn on tabular data. Gradient-boosted trees (XGBoost, LightGBM, CatBoost) beat neural nets on structured tabular data in the majority of Kaggle competitions and industry benchmarks. They train in minutes on a laptop, are trivially interpretable via SHAP, and do not require a GPU cluster. A senior ML engineer will reach for XGBoost first and only escalate to deep learning when the data is unstructured (text, image, audio, sequential events).

"We had a team that spent four months fine-tuning a transformer for a tabular classification problem. A summer intern reproduced 96% of the performance with an out-of-the-box LightGBM in an afternoon. That is not a story about the intern being brilliant. It is a story about senior engineers being scared to admit deep learning was overkill."
— Head of Data, mid-market retail, XGBoost - G2 Verified Review

📉 Ignoring the baseline

Every ML project should start with the dumbest baseline that could work. Predict the mean. Predict the majority class. Predict last-value-carried-forward for time series. If your fancy model does not beat the dumb baseline by a business-meaningful margin, you do not have a modeling problem. You have a data problem, or you have a "this is not actually predictable" problem, and it is cheaper to find out in week one than in month six.

Q4. What training and evaluation mistakes ship broken models?

Cross-validation that leaks, evaluation on a stale test set, and tuning hyperparameters on the test set instead of a held-out validation set. All three inflate reported performance and all three fail silently.

🔀 Cross-validation that leaks

K-fold cross-validation assumes rows are independent. If they are not (multiple sessions per user, multiple visits per patient, multiple orders per customer) you need group-based cross-validation. If your data is time-series, you need forward-chaining (train on days 1 to 30, test on days 31 to 40; train on days 1 to 40, test on days 41 to 50) not random k-fold, which time-travels labels from the future into the training set.

📊 Evaluating on a stale test set

A test set that was split six months ago and has been peeked at ten times is not a test set anymore. Every hyperparameter you tuned against it, every architecture you compared against it, every early-stopping decision you made against it, all of that leaked test-set information into your model choice. Rotate your test sets. Hold out a fresh temporal slice for every major milestone. See how we think about contract-to-hire senior engineers who can spot this in review.

Evaluation strategies by data type. Pick the wrong one and your reported metrics are fiction.
Data structureWrong choiceRight choice
IID tabularTrain/test split by row on a small datasetStratified k-fold cross-validation
Grouped (users, patients, sessions)Random k-foldGroupKFold on the natural grouping key
Time seriesRandom split, k-fold, shuffle=TrueForward-chaining or expanding-window CV
Imbalanced classificationAccuracy on stratified k-foldPR-AUC or F1 with stratified group k-fold
Ranking (search, recs)MSE or classification accuracyNDCG@k or MRR on held-out user cohorts
"The single biggest ML lesson I have learned in six years is that if my test-set performance keeps going up every week, my test set is broken. Real gains are lumpy. Consistent smooth improvement means I have been overfitting to the test set through my own hyperparameter search."
— Principal ML Engineer, ad-tech, MLOps Software category, G2

Q5. What production and MLOps mistakes take models offline?

Shipping a model without monitoring, treating the model as a static artifact instead of a service, and having no rollback plan. Together, these three account for most of the "our model worked in the notebook and died in production" stories.

📡 Shipping without drift monitoring

Every production model degrades. Data drift (input distribution changes), concept drift (relationship between inputs and labels changes), and label shift (base rate changes) will erode a well-trained model within 90 to 180 days for most business use cases. If you are not measuring input distributions, output distributions, and prediction-vs-label agreement continuously, you will find out the model is broken from a customer complaint, not from your dashboard.

"We had a demand forecast model in production for eleven months before we noticed it had been predicting seasonally-adjusted numbers as if it were still July. The COVID rebound had reshaped the input distribution and nobody had a drift alarm wired up. Cost us about 4% of category revenue that Q4."
— Director of Data Science, mid-market e-commerce, MLOps Software category, G2

🔁 No rollback plan

If model v2 is worse than model v1 in production, how fast can you flip back? "We push a new git commit and redeploy" is not a rollback plan, that is a rollback ambition. A real rollback plan is: model versions are addressable, traffic can be routed to a specific version, canary deployments are live, and the on-call engineer knows the command. Aim for a five-minute rollback SLA, not a five-hour one.

🧾 Treating the model as a static artifact

The pickle file is not the model. The model is the pickle file plus the exact feature-engineering code plus the exact preprocessing plus the environment (Python version, numpy version, scikit-learn version). If any of those change between training and production, the model behavior changes. Package everything together (Docker image, MLflow model, BentoML service) or accept that "works on my machine" is a coin flip in production. Related read: our take on why senior engineering hires pay for themselves in reduced incident cost.

Q6. What team and communication mistakes waste AI/ML budgets?

Not aligning on the business metric before starting, over-hiring data scientists relative to ML engineers, and letting the data science team live inside notebooks instead of shipping to a codebase.

🎯 The metric alignment failure

The most avoidable failure mode in AI/ML is the six-month project that ships a model nobody uses because it optimizes for something the business does not care about. This happens when the ML lead and the product/business owner never sit in a room and write down: "success looks like [X business outcome], measured by [Y metric], baseline is [Z], target is [Z + N%]." If you do not have that sentence in writing before week one, you are burning budget.

👥 The wrong team mix

Most AI/ML teams over-index on data scientists and under-index on ML engineers, data engineers, and MLOps. The result: brilliant notebooks, no production models. The rough team ratio that ships to production reliably:

Team composition for a production AI/ML team of six. The ratios matter more than the seniority mix.
RoleCountWhy they exist
ML/Data Engineer2Owns the training pipeline, the feature store, and the batch/streaming infra
Data Scientist (senior)1Owns modeling approach, evaluation strategy, business-metric translation
Data Scientist (mid)1Owns experimentation, feature engineering, model iteration
MLOps / Platform Engineer1Owns deployment, monitoring, drift alerting, rollback
Analytics Engineer / Data Analyst1Owns dashboards, business-facing reporting, dbt models, upstream data quality
Six-block team composition grid for a production ML team of six across engineering scientists and MLOps.
Team of six: two engineers, two scientists, one MLOps, one analytics, not three juniors and hope.

Three data scientists and no data engineers is the most common failure pattern. If you are early-stage and cannot hire six, the minimum viable team is one senior ML engineer plus one MLOps engineer. Everything else can wait. For more on structuring a lean data team, see our note on how to structure specialized talent pods for lean teams.

📓 The notebook trap

Jupyter notebooks are fantastic for exploration and terrible for production. When your entire ML codebase lives in .ipynb files, version control is broken (diffs are unreadable), testing is impossible, and reproducibility is a myth. The fix is not "no notebooks". It is "notebooks for exploration, .py modules for anything that will run more than once, and CI that runs tests on every push." If your team has been shipping from notebooks for a year and calls it "moving fast," you are actually accumulating technical debt that will crater velocity in month thirteen.

Q7. What are the mistakes people make when hiring AI/ML developers?

Hiring for framework knowledge instead of judgment, over-weighting Kaggle rankings, under-weighting production experience, and interviewing only for modeling when the actual job is 70% data engineering and MLOps.

🎓 Framework knowledge vs judgment

"Do you know PyTorch?" is a shallow filter. Every ML engineer under 30 has trained a transformer in PyTorch. The deeper question is: "Tell me about a project where you shipped a model to production, then had to roll it back. What did you learn?" A candidate who can answer that has been through the real work. A candidate who lists ten frameworks on their resume but has never owned a model in production is the person who will build you a beautiful notebook and hand off a mess.

Interview signals that predict production ML success (and the ones that mislead).
Weak signal (avoid over-weighting)Strong signal (over-weight)
Kaggle grandmaster rankingOwned a model in production, has a story about drift
Framework laundry list on resumeCan whiteboard a training pipeline end to end, including feature store
PhD in ML/CSDeep answer on "why did your last model fail" (any level of education)
"I know MLflow, Kubeflow, Vertex AI"Can name three metrics they would monitor after deploy and why
Novel architecture on GitHubBoring architecture, monitored, versioned, rolled back once, still running
Two-column card grid comparing weak and strong interview signals for AI ML engineering hires.
Two-column card grid of weak vs strong signals when interviewing AI/ML engineers.
"The best data scientist I have hired in five years bombed the LeetCode round and could not name the latest transformer variant. She could tell me exactly how she debugged a training-serving skew that had cost her previous employer a customer segment. That is the person you want on-call at 3 a.m. when your recs model drifts."
— VP Engineering, health-tech scaleup, Data Science & ML Platforms, G2

🌍 Where the talent is

Senior ML engineering talent is scarce in every geography and expensive in most. San Francisco senior salaries clear $250K to $400K base. London and Berlin sit in the £110K to £160K range. Bengaluru and Hyderabad senior ML engineers with three-plus years of production experience price at ₹40 lakh to ₹80 lakh all-in (~$48K to $96K USD), a 60 to 75% discount vs the US market for equivalent seniority, and the talent pool is deep because IIT/IISc/IIIT graduates have been feeding this pipeline for a decade. If you are staffing a lean AI/ML team and open to remote-first, India is the market to look at first. See our writeup on hourly rates for engineering talent by geography and our India salary calculator.

FAQs

How much of an AI/ML project is actually modeling?

About 10 to 20% by hours. The other 80 to 90% is data engineering, evaluation infrastructure, deployment, monitoring, and iterating on the business framing. This is why team composition matters more than headcount. One great ML engineer plus one MLOps engineer will out-ship four generalist data scientists on almost every production workload.

Is deep learning always better than classical ML?

No. For structured tabular data (the majority of business use cases), gradient-boosted trees like XGBoost or LightGBM regularly match or beat deep learning at a fraction of the training cost and with better interpretability. Reach for deep learning when the input is unstructured (images, audio, long text) or when you have millions of labeled examples. Our take on measuring what actually works applies here too. Start with the simplest baseline that could win.

What is the fastest way to catch data leakage?

Two heuristics. First, if your model's offline accuracy is dramatically higher than any published benchmark for the same problem, assume leakage until proven otherwise. Second, sort your feature importances by SHAP value and inspect the top three. If any of them are timestamps, IDs, or aggregations that could plausibly encode the label, dig into how they were generated.

How often should we retrain a production model?

Depends on drift, not on the calendar. Monitor input distributions, output distributions, and prediction-vs-label agreement. Retrain when your drift metrics cross a pre-set threshold, not on a fixed monthly schedule. For most business models, this ends up being every 4 to 12 weeks, but let the data tell you, not the ops team.

Where do most companies get AI/ML hiring wrong?

They interview for modeling and hire the wrong ratio. The role that ships a model to production is 70% data engineering, MLOps, and business-metric translation. If you interview a candidate only on modeling questions, you will hire someone who cannot own the actual work. Balance the interview loop with a systems-design round, a production-debugging round, and a "translate this business goal into a metric" round. Our guide on interviewing senior technical talent has the framework.

Should we hire junior data scientists or contract senior ones?

For most non-research teams, one senior ML engineer plus one contract MLOps expert will ship more production value in a quarter than three junior data scientists over a year. Junior hires are a long-term investment that pays off when you have senior engineers who can mentor them. If you do not have that senior bench yet, do not build the pyramid inverted.

Where my head is right now

Here is the prediction I am sitting with. Over the next two years, the "hire two data scientists and figure it out" phase is going to end at most companies under 500 people. Founders will either commit to a real AI/ML team (senior ML engineer, MLOps engineer, one strong senior data scientist) or they will outsource the entire function to a small, senior, remote pod. Both options work. The middle path, junior-heavy in-house teams shipping from notebooks, is where budgets go to die.

At Versatile, we place senior ML engineers, MLOps engineers, and data scientists with US, UK, and Australian companies on a contract-to-hire or dedicated-team basis. The engineers are based in India, have three-plus years of production ML experience, and cost 60 to 75% less than equivalent US hires without the compromise on seniority. If the hire is durable and long-term, we run it through our own India entity as an India-native employer of record, so you do not have to set up an India entity or worry about payroll compliance. If you would rather test-drive first, we can start on contract with a two-week trial. Either way, book a 30-minute call on Calendly, or share your JD on our brief form and we will come back with three matched profiles inside four business days. What is the AI/ML role you are currently trying to fill?

Tell us where you are on the decision.

A role you want to hire, a team you want moved, or just the two routes to compare. A named person replies in 4 to 6 hours.

A named person replies in 4 to 6 hours, not an autoresponder.

We use these details to respond to your enquiry.

A named person replies in 4 to 6 hours, not an autoresponder. We use these details to respond to your enquiry.

What the first call covers

30 minutes

A cost comparison for your headcount, on your numbers, both routes.

  • A written cost breakdown
  • Entity documents before the call
  • PF, ESI, TDS, termination law
  • No follow-up sequence
Book a call →

You pick the time, we send a Meet link. Any timezone.