How to Explain Your ML Project in an Interview
Most candidates undersell their ML work. They either go too deep into math no one asked about, or stay too surface-level. Here is the structure that gets you to a compelling story.
Interviewers ask about your projects to understand how you think, not to test whether you built something impressive. A mediocre project explained with crisp reasoning impresses more than a complex project explained confusingly.
The Common Mistakes
Too much theory, not enough engineering judgment: "I used XGBoost with 500 trees, depth 8, learning rate 0.05, and L2 regularization..." No one asked for the hyperparameter grid. They want to know why you made the choices you made.
Skipping the problem setup: "I built a fraud detection model with 92% AUC." Starting with the solution skips the most interesting part - why this problem, why this approach.
Not owning the failure: "The model works well." Every ML project has things that did not work. Interviewers know this. Not mentioning failures reads as either naivety or evasiveness.
The Structure That Works
Use the following five-part structure. Practice it until you can deliver each part in 1–2 minutes.
1. The Problem and Its Stakes
State the business problem, not the ML problem. Then state why it mattered.
Weak: "I built a binary classification model for churn."
Strong: "We were losing 15% of users per month with no early warning. Each churned user cost about $200 in reacquisition costs, so the revenue impact was significant. I was asked to build a system that could identify at-risk users 30 days before they churned so we could intervene."
Now the interviewer understands the business context. They can evaluate your subsequent decisions against real stakes.
2. The Data and Its Challenges
Describe your data - not just the schema, but the problems you encountered.
Weak: "I used a dataset with 200K users and 50 features."
Strong: "I had 200K user records going back 18 months. The main challenges: the churn rate was 12%, creating class imbalance. More importantly, we had a data leakage risk - some features like 'number of support tickets' were computed including tickets filed after the churn date. I had to rebuild the feature pipeline with point-in-time joins to ensure I was only using data that would be available 30 days before churn."
This shows production-level data thinking, not just modeling.
3. Your Approach and Why
Explain what you chose and why, including what you considered and rejected.
Weak: "I tried several models and XGBoost performed best."
Strong: "I started with logistic regression as a baseline - it was interpretable and gave the team confidence in the features. It got AUC 0.74. I then tried a gradient boosted tree (XGBoost) because the feature interactions were likely non-linear - users who are new AND high-value AND showing declining engagement are high churn risk, but none of those individually is strongly predictive. XGBoost got AUC 0.84. I tried a neural network but it did not improve on XGBoost and added serving complexity, so I stayed with XGBoost."
This shows you think about tradeoffs, not just results.
4. Results and How You Measured Them
Report business impact, not just ML metrics. Connect the two.
Weak: "The model achieved AUC 0.84 and 89% accuracy."
Strong: "The model achieved AUC 0.84 at a precision of 0.71 and recall of 0.68 at the threshold we set. In a 60-day live test, interventions driven by the model reduced churn in the flagged cohort by 22% versus the unintervened control group. That translated to roughly $400K in preserved revenue over the test period. Accuracy would be a misleading metric here given the 12% class balance - I evaluated it on AUC-PR and business metrics instead."
5. What Did Not Work and What You Learned
This is where you demonstrate intellectual honesty and growth.
"The main thing that surprised me: feature engineering mattered more than model choice. My most impactful feature ended up being 'days since last meaningful action' - not just logins, but actions that indicated intent (creating a new project, inviting a teammate). That alone improved recall by 8%. I expected model architecture to drive more of the gain.
I also learned about data leakage the hard way - my initial model appeared to have AUC 0.91, which was suspiciously high. When I added the point-in-time constraint, it dropped to 0.84. That is still a good model, but the 0.91 number was fiction."
Preparing Your Own Stories
For each significant project, write out answers to:
- What business problem was it solving, and why did it matter?
- What data challenges did you face? How did you handle them?
- What approaches did you consider? Why did you choose what you chose?
- What did the results look like in business terms?
- What failed or surprised you? What would you do differently?
Then practice saying them out loud. Not reading them - saying them. Time yourself. Aim for each story to land in 4–6 minutes with time for follow-up questions.
Handling Follow-Up Questions
Interviewers will probe. Common follow-ups and how to handle them:
"How did you handle class imbalance?" Do not just list techniques. Say what you tried: "I tried SMOTE but it did not improve validation AUC. Setting class weights in XGBoost helped modestly. The biggest gain came from threshold tuning - at the default 0.5 threshold, recall was too low. I moved the threshold to 0.35, which improved recall from 0.52 to 0.68 at a cost of precision from 0.81 to 0.71, which was the right tradeoff for our intervention economics."
"Why XGBoost over a neural network?" "The feature set was primarily tabular - aggregated counts, means, days since events. GBTs handle this well without normalization or embedding layers. The interpretability also mattered - the team needed to explain to users why they were being contacted. A neural network would have required SHAP analysis to explain predictions; XGBoost's feature importances were more direct. If I had text or image features, I would have used a neural network for those components."
"How would you put this in production?" This is where many candidates stumble. Have a crisp answer: "The model is serialized with joblib and wrapped in a FastAPI endpoint. At prediction time, we pull user features from a precomputed Redis cache updated nightly by a Spark job. The model is loaded once at startup. Latency is <15ms per prediction. We monitor feature drift weekly with PSI and log prediction distributions for shift detection."
One More Thing
If your project was not very impressive, do not apologize for it. "This was a class project where I built X" is fine. What matters is the depth of your thinking, not the scale of the project. A class project explained with production-level rigor often impresses more than a big project explained superficially.
Stay in the loop
Get new ML/AI lessons in your inbox.
No account needed. We will send curriculum updates, launch notes, and practical learning resources.
Related Posts
More postsThe AI Evals Engineer: A New Role and How to Get It
Evals engineer went from a task to a job title in about two years. Here is what the role actually does day to day, why companies are hiring for it, the skills that matter (and the ones that do not), what the interview looks like, and a portfolio that gets you in.
ML Interview Questions: What Actually Gets Asked
The questions that show up in ML interviews consistently. Not the textbook version - the version that gets asked at top companies, with the depth of answer they expect.
ML Coding Interviews: What to Expect and How to Prepare
ML coding interviews test your ability to implement algorithms from scratch and reason about them. Most candidates over-prepare on LeetCode and under-prepare on ML specifics. Here is what matters.