Interview Insights · ML Engineer Projects
How I Spot a Copy-Pasted ML Engineer Project in Minutes
Quick summary — Copied ML projects
I do not reject a project because it started from a tutorial; I reject it when the candidate cannot explain a single decision in it. Copied ML projects share predictable signs: a famous demo dataset with no changes, a repository with one large upload, and a candidate who knows what the code does but not why. The fastest test is a 'why' question about any step, followed by 'what did you try that did not work?'. The fix is not to hide the tutorial. It is to change something real, measure the effect, and be able to talk about it.
In this guide you will learn:
- The four signs I check on a resume and repository
- The ownership questions that expose a copied project quickly
- How to run a small ablation so you can defend every step
- How to make a tutorial project yours without starting over
- What a believable project story sounds like in an interview
SECTION 01The four signs I notice before you even speak
Before the interview, I usually open the candidate's project link. A few minutes is enough to form a first impression. I am not looking for perfect code. I am looking for evidence that a person made decisions over time.
The first sign is the dataset. Titanic survival, Boston or California house prices, Iris and MNIST are fine for learning. When the project uses one of them with the exact same columns, the exact same steps and the exact same plots as popular tutorials, I assume it is a tutorial until proven otherwise. The second sign is the repository history. One commit called 'initial commit' that contains a finished notebook tells me nothing about how the work evolved.
| Sign | What I see | Why it worries me | What would reassure me |
|---|---|---|---|
| Famous demo dataset unchanged | Same columns and plots as common tutorials | Nothing was decided by the candidate | A new dataset or a real twist on the old one |
| Single big commit | Whole project uploaded at once | No trace of iteration | Commits that show steps and fixes |
| Generic README | Copied sections and badges, no own results | The write-up is not theirs | Own numbers, own limitations, own next steps |
| Perfect results, no baseline | High score, no comparison | Possible leakage or copied numbers | Baseline next to final result |
# Count commits and see how the work grew
git log --oneline | wc -l
git log --stat --reverse | head -60
# Who wrote what, and when
git shortlog -sn
git log --format="%ad %s" --date=short | head -20
# What changed in the notebook over time
git log --follow -p -- notebooks/model.ipynb | head -80a1c3e9f add raw data loader and basic EDA
4b7d201 baseline: majority class and logistic regression
9e02aa1 fix: target leaked via 'refund_date', drop column
c55f310 add time-based split, scores drop but are honest
0d81b2e try gradient boosting, small gain on recall
7fa4c09 error analysis by city, add README findings
Even without opening a file, this history tells a story
of a person who found a bug and fixed it.
None of these signs is proof on its own. A candidate may have worked in a private repository and pushed once at the end. That is exactly why I still ask questions. The signs only tell me where to dig.
SECTION 02The ownership questions that expose a copy fast
In the interview, I pick any step in the project and ask why. Why did you log-transform the price? Why 5-fold cross-validation and not a time split? Why did you drop that column? A person who wrote the code because a tutorial did it will describe what the step does. A person who made the decision will describe the problem it solved.
Then I ask the question that copied projects almost never survive: 'What did you try that did not work?' Real ML work is mostly failed attempts. If the answer is 'everything worked well', I know the project was followed, not built.
| My question | Copied-project answer | Owned-project answer | What it tests |
|---|---|---|---|
| Why did you log-transform the target? | It is a standard step | Prices were right-skewed and errors on big houses dominated RMSE | Reasoning behind preprocessing |
| What happens if you remove your top feature? | I have not tried | Recall dropped a few points, so it matters but is not everything | Has run ablations |
| What did you try that did not work? | Everything worked | SMOTE made validation worse, so I used class weights | Real iteration |
| If you had another week, what would you do? | Try deep learning | Collect the missing city data, the weakest slice | Knows the real bottleneck |
Interviewer: Why did you use StandardScaler before the
random forest?
Candidate: Because scaling improves the model.
Interviewer: Does a random forest need scaling?
Candidate: I think... yes, all models need it.
(Tree models split on thresholds, so scaling does not
change them. The step was copied from a template that
also used logistic regression.)Interviewer: Why did you use StandardScaler before the
random forest?
Candidate: Honestly, the forest does not need it, since
trees split on thresholds. I kept the scaler in the pipeline
because I compared the forest with logistic regression,
which does need scaled inputs, and I wanted one pipeline
for both. I checked that the forest's score did not change
with or without it.
The strong candidate even admits the step is unnecessary for one model. That honesty is the opposite of a copied project: it shows they understand the code well enough to question it.
SECTION 03How to turn a tutorial project into one you own
If your project started from a tutorial, you do not have to throw it away. You need to add decisions that are clearly yours and evidence that you tested them. Three changes do most of the work: change the data or the question, add a baseline and an ablation, and write down what failed.
An ablation sounds advanced but is simple. You remove one step or one group of features at a time, retrain, and record how the score changes. After that, every 'why' question has an answer backed by your own numbers. The script below shows the idea with scikit-learn on a built-in dataset.
| Change | Effort | What you can now say | Interview value |
|---|---|---|---|
| Use a new or extended dataset | Medium | I picked this data and cleaned it myself | High, removes the tutorial smell |
| Add a baseline | Low | My model beats X by this much | High, gives context to every score |
| Run an ablation | Low to medium | This step adds this much, that one adds nothing | Very high, answers every why |
| Serve it with a small API | Medium | I can call the model from another program | Good, shows engineering beyond notebooks |
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
data = load_breast_cancer(as_frame=True)
X, y = data.data, data.target
groups = {
"mean_*": [c for c in X.columns if c.startswith("mean")],
"worst_*": [c for c in X.columns if c.startswith("worst")],
"*_error": [c for c in X.columns if c.endswith("error")],
}
def score(cols):
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000))
return cross_val_score(model, X[cols], y, cv=5, scoring="recall").mean()
all_cols = list(X.columns)
print("all features: %.3f" % score(all_cols))
for name, cols in groups.items():
kept = [c for c in all_cols if c not in cols]
print("without %-8s %.3f" % (name, score(kept)))# pip install fastapi uvicorn scikit-learn joblib
# Run: uvicorn serve:app --reload
import joblib
import numpy as np
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
model = joblib.load("model.joblib") # a fitted sklearn pipeline
class Features(BaseModel):
values: list[float]
@app.post("/predict")
def predict(f: Features):
x = np.array(f.values).reshape(1, -1)
prob = float(model.predict_proba(x)[0, 1])
return {"probability": round(prob, 4)}
Save the ablation output in your README as a small table. When an interviewer asks why you kept a feature group, you can point to your own result instead of a tutorial's explanation.
Be open about the starting point too. Saying 'I started from a public tutorial, then changed the data, added a time-based split and ran an ablation' sounds far more credible than pretending you invented everything.
SECTION 04Project ownership audit you can run tonight
Run this audit on every project listed on your resume. Anything you cannot answer is a question an interviewer can catch you on, so fix it before the interview, not during it.
PROJECT: ____________________
[ ] I can say why I chose this dataset
[ ] I changed at least one thing the tutorial did not do
[ ] I have a baseline score written down
[ ] I can explain every preprocessing step in one line
[ ] I ran at least one ablation
[ ] I can name two things that did not work
[ ] My README has my own numbers and limitations
[ ] My commit history shows real steps
Score under 6? Spend a weekend on this project
before you list it again.STEP WHY I DID IT EVIDENCE
------------------------- ------------------------ -----------------
Dropped column ________ ________________________ score before/after
Filled missing with _____ ________________________ ______________
Encoding: ______________ ________________________ ______________
Model: _________________ ________________________ vs baseline ____
Metric: ________________ ________________________ business reason
Split: _________________ ________________________ matches real use?"This project started from a public tutorial on ____.
I changed it by ____ because I wanted to ____.
My baseline was ____ with a score of ____.
My final model scored ____.
The step that mattered most was ____: removing it dropped
the score to ____. A step that did not help was ____.
What failed: ____. What I would do next: ____."
SECTION 05Habits that make projects feel genuinely yours
Ownership is visible in small details. These habits leave those details behind naturally.
- Commit as you go — Small commits with clear messages, including fixes and reverts, create a history that tells your story without you saying a word.
- Keep an experiment log — A simple table of what you tried, the score and your conclusion becomes the answer to almost every follow-up question.
- Pick a question you care about — A project on local bus delays or crop prices is easier to talk about with energy than yet another survival prediction.
- Read your own code aloud — If a line makes you hesitate when you explain it, you do not own it yet. Test it or remove it.
- Credit your sources — Name the tutorial or paper you started from. Being open about it removes the suspicion and lets you focus on what you added.
SECTION 06Interview Q&A — Copied ML projects
Q1Walk me through a decision in your project that you made yourself.
In my delivery-time project, I first used a random split and got a very low error. Then I realised the same restaurants appeared in train and test, and orders on the same day were similar. I switched to a time-based split, the error went up, and I kept the honest version. That decision changed which features mattered most.
Q2What did you try in this project that did not work?
I tried SMOTE to handle the imbalanced classes, but it made validation recall worse because the synthetic points blurred the boundary with the majority class. I switched to class weights in the model, which was simpler and gave better results on the same split.
Q3Your project uses a well-known dataset. What did you add?
I kept the dataset but changed the question. Instead of predicting the overall label, I predicted it for a subgroup the tutorial ignored, added a baseline and ran an ablation on feature groups. I documented which group added most and which added nothing.
Q4How would you check that your project's high score is not leakage?
I would compare with a baseline, look at feature importances for anything suspicious such as an ID or a date filled after the event, check whether the split matches real use, and retrain without the top feature. A huge drop from one feature is a strong hint of leakage.
Q5If I gave you a week to improve this project, what would you do?
I would work on the weakest slice found in error analysis, which was customers from smaller cities. I would try to collect or engineer features for them and compare against the current model on the same time-based validation set, rather than switching to a bigger model.
SECTION 07Test yourself — Copied ML projects quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
Can I put a Kaggle or tutorial ML project on my resume?
Yes, if you add something of your own and can explain it. Change the data or the question, add a baseline and an ablation, and be ready to say what failed. Name the source openly.
How do interviewers know if an ML project is copied?
They check for famous datasets used unchanged, a single large commit, a generic README and a high score with no baseline. Then they ask 'why' about a few steps and what did not work.
What ML projects look original to interviewers?
Projects with a question you chose, data you collected or combined, honest validation, clear error analysis and a README with your own results and limitations. The topic matters less than the decisions.
How do I explain my ML project in an interview?
State the goal, the data, the baseline and final score, one key decision with its reason, one failure and what you would do next. Keep it to about two minutes and let the interviewer dig.
Is it okay if my ML project has a messy Git history?
Yes. A history with real steps and fixes is better than one clean upload. Just make sure commit messages are clear enough to follow what changed.
Is there a course that covers ML Engineer interview answers?
Yes. Uncodemy's Machine Learning Training Course in Noida (classroom and online) includes live projects, one-to-one mock interviews and resume reviews, so you practise ML Engineer interview answers with trainer feedback before the real interview. You can book a free demo class from this page to see how the sessions work.
SECTION 09Related reads
Classroom & online · Noida
Build ML projects you can defend line by line
Our Machine Learning Training Course guides you through original projects with baselines, honest validation and ablations, so every decision on your resume is your own.
Talk to a counsellor for current fees- Original guided ML projects
- Code and repo reviews
- Project deep-dive mocks
- Weekday & weekend batches