AutomateEdge · Data Scientist · Portfolio Projects

Data Scientist Portfolio Projects: 15 Shippable Ideas

These projects are ordered by dependency — each earlier one teaches skills the later ones assume. Every project is designed to be reproducible, explainable, and ideally deployable. A Data Scientist portfolio that impresses is not a collection of notebooks; it is a collection of demonstrated decisions under uncertainty. Pick ten to complete; the capstone (project 15) is what you lead with in interviews.

1. A/B test analysis engine with proper statistical rigor

Difficulty · Beginner 20-30 hours Pythonscipystatsmodelspandasmatplotlib

Build a reusable Python tool that takes two samples (control vs. treatment) and returns a complete statistical analysis: sample sizes, observed uplift, confidence interval, p-value, power curve, minimum detectable effect, and a recommendation to ship or not. Apply it to three public datasets (e-commerce conversion, email click-through, app retention). The goal is to automate statistical discipline, not to run a one-off test. This is the first artifact every DS interview will probe.

Evaluation rubric (what recruiters check on your GitHub)

2. Causal inference study — difference-in-differences on public policy data

Difficulty · Intermediate 30-45 hours PythonpandasstatsmodelsmatplotlibDoWhy

Select a natural experiment from public data — a minimum wage change across US states, a school policy introduction, a regional tax incentive. Frame the causal question, test the parallel trends assumption, run DiD with OLS and clustered standard errors, check robustness with placebo tests and event-study plots. Write a 1500-word analysis as if presenting to a policy team. This project demonstrates causal thinking in the wild rather than in a textbook.

Evaluation rubric (what recruiters check on your GitHub)

3. Customer segmentation — unsupervised clustering with business action

Difficulty · Beginner 25-35 hours pandasscikit-learnmatplotlibseabornStreamlit

Take an e-commerce, streaming, or banking public dataset. Run k-means, DBSCAN, and hierarchical clustering. Use silhouette scores and stability analysis to pick a cluster count. Profile each cluster with business language (not just 'cluster 3 has high feature-7'). Recommend a concrete action for each segment. Produce a Streamlit dashboard stakeholders can explore. This project tests whether you can connect model output to business decision.

Evaluation rubric (what recruiters check on your GitHub)

4. Churn prediction with feature engineering + business framing

Difficulty · Intermediate 30-40 hours pandasXGBoostscikit-learnSHAPmatplotlib

Use a telecom, SaaS, or subscription e-commerce churn dataset. Engineer features from raw event logs — recency, frequency, monetary, engagement trend, tenure. Train XGBoost with SHAP explainability. Calibrate probabilities. Frame the output as a business tool: segment users into intervention tiers (high uplift, low uplift, already churned). Build the ROI case for an interventionist strategy using the model's outputs. This is the project that proves you connect modelling to revenue.

Evaluation rubric (what recruiters check on your GitHub)

5. Time-series anomaly detection on business metrics

Difficulty · Intermediate 25-35 hours pandasstatsmodelsscikit-learnProphetStreamlit

Pull a public business metric time series — website traffic (Wikipedia pageview data, freely available), retail sales, energy consumption, financial metrics. Implement three anomaly detectors: STL + z-score residual, Isolation Forest on sliding windows, and a simple Prophet + prediction-interval approach. Compare false-positive rates across a labelled anomaly set. Build a minimal Streamlit alert dashboard. This is the project that maps directly to 'monitoring business metrics' in every DS job description.

Evaluation rubric (what recruiters check on your GitHub)

6. Propensity score matching study — observational causal inference

Difficulty · Intermediate 30-45 hours pandasscikit-learnstatsmodelsCausalML or DoWhymatplotlib

Use an observational dataset where treatment was not randomised — job training program enrollment, insurance participation, medication adherence. Estimate the propensity score via logistic regression and a gradient boosted model. Match treated and control units. Check covariate balance before and after. Estimate ATT with matched OLS. Compare to the naive estimate and discuss the gap. This is the project that demonstrates you understand confounding in practice.

Evaluation rubric (what recruiters check on your GitHub)

7. Executive dashboard built from raw data

Difficulty · Intermediate 25-35 hours DuckDB or PostgreSQLpandasStreamlit or Dashplotly

Take a raw, multi-table public dataset (Stack Overflow annual survey, NYC taxi data, UK government open data). Write the SQL or pandas pipeline to construct a clean analytical mart. Build a Streamlit or Dash dashboard targeting an executive audience: four KPIs at the top, two trend charts, one cross-segment comparison, one forward-looking indicator. Document the data dictionary and refresh cadence. This tests whether your communication output is self-contained.

Evaluation rubric (what recruiters check on your GitHub)

8. Marketing attribution analysis — multi-touch models

Difficulty · Intermediate 30-40 hours pandasscipymatplotlibPython Markov chain library or custom implementation

Use a synthetic or public marketing funnel dataset with multi-touch journeys. Implement first-touch, last-touch, linear, time-decay, and Markov chain attribution. Compare channel ROI under each model. Run a bootstrapped uncertainty estimate on the Markov chain results. Write the analysis as a memo for a CMO. This project demonstrates the messiness of real attribution work and the ability to communicate ambiguity.

Evaluation rubric (what recruiters check on your GitHub)

9. Survival analysis — customer lifetime and churn timing

Difficulty · Intermediate 25-35 hours pandaslifelinesmatplotlibstatsmodels

Use a subscription SaaS or e-commerce dataset with cohort-level retention data. Fit Kaplan-Meier curves stratified by acquisition channel, plan type, and cohort month. Fit a Cox PH model with covariates. Test the proportional hazards assumption. Estimate expected lifetime value from the survival function. Produce a one-page board-level summary. Survival analysis is a DS skill that is dramatically underrepresented in portfolios.

Evaluation rubric (what recruiters check on your GitHub)

10. Bayesian decision-making project — multi-armed bandit vs. A/B test

Difficulty · Intermediate 30-45 hours PyMCnumpyscipymatplotlib

Simulate a real product decision (ad creative selection, email subject line, landing page variant) under both a frequentist A/B framework and a Bayesian Thompson-sampling bandit. Compare regret curves. Quantify the cost (in lost conversions) of committing to A/B testing when the bandit would have converged earlier. Build the simulation in PyMC. Write the recommendation memo: when should your team use MAB vs. A/B? This project is directly citable in experimentation-platform interviews.

Evaluation rubric (what recruiters check on your GitHub)

11. Market mix modelling (MMM) with Bayesian priors

Difficulty · Advanced 45-65 hours PyMCpandasnumpymatplotlibArviZ

Implement a simplified Media Mix Model for a public or synthetic advertising dataset. Model adstock transformation (geometric decay), saturation curves (Hill function), and control variables (seasonality, promotions). Fit with PyMC. Interpret the contribution of each channel. Compare budget allocation under current vs. optimal weights. This is a real DS deliverable at growth-stage consumer companies.

Evaluation rubric (what recruiters check on your GitHub)

12. SQL optimisation case study — query audit and rewrite

Difficulty · Intermediate 15-25 hours PostgreSQL or DuckDBEXPLAIN ANALYZE

Take a public database schema (NYC taxi data on BigQuery public datasets, TPC-H benchmark, Pagila sample database) and write a set of intentionally slow queries. Profile them with EXPLAIN ANALYZE. Identify the bottlenecks (missing indexes, cross-join explosions, full-table scans). Rewrite to achieve 5-20x improvement. Document each transformation. This project is the one most DS forget — and the one that impresses every data-engineering-adjacent interviewer.

Evaluation rubric (what recruiters check on your GitHub)

13. Recommendation system with offline + online evaluation strategy

Difficulty · Intermediate 35-50 hours pandasSurprise or implicit librarysentence-transformersscikit-learn

Build a movie or e-commerce recommender: collaborative filtering (matrix factorisation via Surprise or implicit), content-based (TF-IDF or sentence-transformer embeddings), and a hybrid. Implement the full offline evaluation framework: precision@k, recall@k, NDCG@10, coverage, serendipity. Then design — but do not necessarily implement — the online A/B test that would validate the offline results. This forces the gap between offline and online metrics into your portfolio.

Evaluation rubric (what recruiters check on your GitHub)

14. Public-data investigative analysis — Pudding / FiveThirtyEight style

Difficulty · Advanced 40-60 hours pandas / DuckDBplotly or matplotlibpublishing platform of your choice

Choose a question you genuinely care about that can be answered with public data. Write a 2000-3000 word data-driven piece with original analysis, interactive or highly-polished static charts, and a clear argument. Examples: 'Do cities with more bike lanes have lower collision rates?', 'Has the gender gap in academic publishing narrowed since 2020?', 'How did remote work change commute patterns in mid-sized US cities?' Publish on Medium, Substack, or a personal site. This is your proof-of-communication artifact.

Evaluation rubric (what recruiters check on your GitHub)

15. Capstone — end-to-end causal analysis and decision artefact

Difficulty · Advanced 60-90 hours all of the above — pick the right tool per sub-problem

Design and execute a causal study on a real or realistic public dataset. Frame the business question, choose the identification strategy (RCT design, DiD, RDD, propensity matching), execute the analysis, communicate findings in both a technical appendix and a one-page executive summary, and propose the next experiment. The capstone demonstrates the full Data Scientist loop: question → data → method → uncertainty → decision. It is the project you lead with in senior DS interviews.

Evaluation rubric (what recruiters check on your GitHub)

Frequently asked questions

Why is there no deep learning project in this list?

The Data Scientist track is calibrated to what the role actually requires in 2026 — statistical rigor, causal thinking, experimentation, and communication. Deep learning projects belong on the ML Engineer and AI Engineer tracks. If you want a neural net project, add one from the generalist or ML engineer list, but do not let it displace the causal inference and experimentation work that will actually be probed in DS interviews.

Do these projects need to be deployed publicly?

For most of them, yes. 'It worked on my machine' is not a portfolio artifact. A live Streamlit URL costs $0 to host on Streamlit Community Cloud. A GitHub repository with a clear README and reproducible instructions is the absolute minimum. Deployed is better.

How do I find real experimental data to practice causal inference?

Several public sources work well: LaLonde (1986) job training data, Card and Krueger minimum wage studies (ICPSR archive), econometrics textbook datasets (Wooldridge's DATA archive), the Lalonde dataset in the CausalML library, and the 'Causal Inference: The Mixtape' book datasets. For observational data, almost any Kaggle dataset with a treatment indicator works.

Is a Kaggle competition useful for a DS portfolio?

Useful but not the focus. DS work is about answering questions and influencing decisions — not maximising a leaderboard metric. A top-30% Kaggle finish demonstrates ML skill. The causal inference, experimentation, and communication projects on this list demonstrate Data Scientist skill. Do both, but don't let Kaggle crowd out the harder analytical work.

How do I handle it if I don't have access to real company data?

You don't need it. The public datasets available today — NYC Open Data, BigQuery public datasets, UCI ML Repository, IPUMS, Federal Reserve FRED, BLS microdata — are as analytically rich as most company data. The constraint is question quality, not data availability. Pick a question you genuinely care about and the data will be findable.

What makes a DS project stand out in an interview?

Three things, in order: (1) a clearly stated business question at the top — not 'I analysed the Titanic dataset'; (2) honest accounting of uncertainty — what you found AND what you cannot conclude; (3) a decision or recommendation that follows from the analysis. Most portfolios have the analysis but skip the question and the decision. Those are the parts interviewers probe.

How many of these should go on my resume?

Three, featured with a one-line tagline, tech stack, and live URL. The rest live on GitHub. For DS specifically: the A/B test engine, the causal inference study, and one of the Bayesian or MMM projects signal the statistical rigour tier-1 companies actually filter for.

Continue on the Data Scientist track