$1.45M
yearly revenue at risk
Customer churn
Across 7,043 telecom customers, month-to-month contracts churned at 42.7% against 2.8% on two-year deals. I built a tool that scores any customer's risk.
Python, logistic regression, Streamlit
Your hiring team asked
Fair question. I'm Vedant, an analyst who builds things on real data.
I take messy business data and turn it into answers a busy team can use. I've done it inside a recruitment team, and on real public datasets in my own projects.
Pick your team below and I'll show you exactly where I'd help.
ExcelHands-onDAX dashboards at Grey & White, scenario models, INDEX/MATCH
PythonIntermediatepandas, statsmodels, scikit-learn, Streamlit
SQLIntermediateKPI queries, dimensional models, DuckDB
Power BIHands-onMSc coursework at UCD Smurfit
RHands-onStatistics coursework
I've done this. At Grey & White I built an Excel tracker on our applicant tracking system data, using DAX to automate the dashboard. It cut ad-hoc reporting work by 60%, and offers and closures rose 20% within six months.
I've done this. Compared SARIMA, Prophet and Holt-Winters across Rossmann store sales, and built a 12-month headcount budget model with 177 formulas and zero errors.
I've done this. Found a broken 50/50 split in a 90,189-player experiment that most public analyses of the same data miss.
I've done this. Ran the floor for a Snowflake event at the Dublin Royal Convention Centre when our manager was called downstairs: extra mics, tables and food sorted, team of three kept on track.
Every project uses a real, public dataset. These are the actual results, including the awkward ones.
$1.45M
yearly revenue at risk
Across 7,043 telecom customers, month-to-month contracts churned at 42.7% against 2.8% on two-year deals. I built a tool that scores any customer's risk.
Python, logistic regression, Streamlit
p = 0.0086
the split wasn't 50/50
Caught a sample ratio mismatch in a 90,189-player game experiment, then showed which result still stood after correcting for two metrics.
Python, power analysis, Bonferroni
14.85%
best forecast error
Three methods on a 42-day holdout landed within half a point of each other. So the useful question became what each one gets wrong.
SARIMA, Prophet, Holt-Winters
0
errors in 177 formulas
Five departments, twelve months, one scenario switch. I found and fixed a rounding bug that was quietly zeroing attrition on small teams.
Excel only
Geoffrey Négiar, co-founder of The Forecasting Company (YC S24), shared my forecasting benchmark in his own LinkedIn post after we went back and forth about his model. Then I built a tiny version of that kind of model from scratch, to see how it works.
See his post on LinkedInTwenty projects of my own, all on GitHub. Start with the one people are already using.
One QR code for a whole room. The presenter pastes API keys, links and notes into a shared notepad, and it updates live on every laptop in the room. A room PIN keeps everyone else out.
The problem
At an AWS x Bronto evening at the AWS Gen AI Loft in Dublin, people couldn't build along with the speaker because nobody could find the keys and URLs.
What happened
At its first real event, about 10 people got their API keys through it in seconds.


My MSc Business Analytics capstone, built by a team of three with mentoring from EY's Data & AI division. It sorts AI systems into EU AI Act risk tiers, flags GDPR gaps in documents, and has a chatbot that only answers from the files you upload.
Python, HuggingFace embeddings, FAISS, OpenAI, Streamlit
See the codeI built this after too many of my own applications ended in silence. It sends candidates their feedback by email, so they hear something instead of nothing.
FastAPI, Streamlit, Resend, deployed on Railway
See the codeTook my churn model out of the notebook and into a class-based API with input validation, logging and drift detection. Caught a design flaw where the validation rule made drift on tenure impossible to detect, and fixed it.
Python, FastAPI, Pydantic, pytest, Docker, GitHub Actions
See the codeSARIMA, Prophet and Holt-Winters head to head on Rossmann store sales with a 42-day holdout. The founder of The Forecasting Company shared this benchmark on his LinkedIn.
Python, statsmodels, Prophet
See the codeTrained only on 6,000 made-up series, then tested on real store sales. It scored 24.87% MAPE, worse than the classic methods, because my fake data never had a "shop closed on Sunday" pattern. That's exactly why real model teams obsess over training data. The post reached 8,000+ people.
Python, patch transformer, synthetic data
See the codeReal Apple Watch data, 538 workout readings. My first pass flat-lined a real 10-week gap as if nothing changed, so I rebuilt the gap handling and flagged every filled-in point. Naive baseline: 18.37% MAPE.
Python, pandas, time-series models
See the codeSeven years of Apple, Microsoft and Google prices. A moving-average strategy beat buy-and-hold on 0 of 3 stocks, yet reduced maximum drawdown on all 3. Prophet didn't beat a naive forecast either, which is what efficient markets predict.
Python, DuckDB, Prophet, GitHub Actions, Streamlit
See the codeChecked the setup before the result: a sample ratio mismatch (p = 0.0086), a power analysis showing one metric couldn't have been detected anyway, and a Bonferroni correction across two metrics.
Python, power analysis, Bonferroni
See the codeA Poisson goal model on 9,410 Premier League matches, tested on a season it never saw. Bookmakers won (Brier 0.2894 vs 0.3224). Then I ran the same test on League Two, where far fewer people bet, and the bookies' edge shrank by about 74%.
Python, statsmodels, Poisson regression
See the codeMonth-to-month customers left at 42.7% against 2.8% on two-year contracts. Includes a live tool that scores any customer's risk of leaving.
Python, logistic regression, Streamlit
See the codeReal online retail transactions reshaped as payments data: a dimensional model in SQL, data quality checks, and a Python pipeline for payment volume, order value and customer counts. Most revenue came from a small set of products.
SQL, Python, Streamlit
See the codeFive departments over twelve months in Excel only. One cell flips between base case, growth and hiring freeze. I found a rounding bug that was quietly zeroing attrition on small teams.
Excel
See the codeA self-directed project simulating SPV administration in Irish capital markets, built to understand a transfer agent's day-to-day work, including AML and KYC checks.
Excel, Python, Streamlit
See the codeThe first three years of the Property Price Register, 2010 to 2012. Prices fell every year, in line with the post-crash record. Handled messy encoding and excluded non-market sales.
Python
See the code4,998 real US flights from January 2025. The data had no airline field, so I analysed delays by airport and route instead of pretending otherwise.
Python, SQL
See the codeCampaign effectiveness and budget allocation on a real public marketing dataset, with a dashboard for exploring the results.
Python, Streamlit
See the codeTaught myself guitar and piano at 18 and started writing songs at 22. I've released my own music. It's the same habit as analytics: practise the dull parts until the hard parts feel easy.
Park Lane by me
0:00 / 0:34
Started in January with an empty bar and no coach. Seven months later I clean and jerk 80kg. I like progress I can measure.
Vedant Limaye, Dublin, Ireland