Junior data analyst and data scientist based in East London. MSc Data Science (Merit), University of East London, 2025.
I work in Python, SQL, Power BI and machine learning, and I like turning messy data into clear answers and recommendations for the people who have to act on them. Lifelong football fan, so a lot of my side projects use football data.
| Project | What it is | Key result |
|---|---|---|
| Expected goals (xG) model | LightGBM xG model on 58,576 shots of StatsBomb open data, with freeze-frame defensive features | Matched StatsBomb's own xG on 471 unseen matches (log loss 0.2584 vs 0.2577, not significantly different) |
| Sales analytics: SQL and dashboard | 1M messy UK retail transactions cleaned into a DuckDB star schema, 11 SQL KPI queries and an interactive dashboard (Power BI ready) | £18.9m net revenue analysed; top 10% of customers drive 63.3% of it |
| Customer churn prediction | Telecom churn model (LightGBM vs logistic regression) with SHAP and a profit-based decision threshold | ROC-AUC 0.847; target list of 2,903 customers reaches 80.5% of churners, worth about $238k net |
| Football scouting tool | Position-aware player similarity search on 28 per-90 metrics for 1,275 players, linked to Transfermarkt values | Back-test: cheap lookalikes it picked rose more in value for 71.8% of 85 star targets |
| London data pipeline | Automated daily ETL of grid carbon, air quality and TfL status into SQLite, with tests and GitHub Actions | Runs itself every day; London's grid was 45% cleaner when wind supplied 40%+ of generation |
| A/B test analysis | Full experiment readout on 90,189 players: power, z-test, permutation and Bayesian tests, decision memo | Later gate cut 7-day retention by 0.82 pp (p = 0.0016): recommended not to ship |
| Project | What it is | Key result |
|---|---|---|
| Leyton Orient analysis | Post-match and season briefing from free data, with a Dixon-Coles match model | Model beat base rates out of sample on 552 League One matches (RPS 0.2184 vs 0.2280) |
| London crime vs deprivation | All 32 boroughs: Met Police crime, 2025 Indices of Deprivation and ONS population, focused on Newham | Newham's vehicle crime is 2nd highest in London and rose 21.8% while the rest of London fell 7.9% |
| Deadlyne (FPL assistant web app) | Live Fantasy Premier League web app built in Python and Flask on the official FPL API | Ranks every player on form, xGI, fixtures and value, with scouting and transfer planning tools |
- Languages and data: Python (pandas, NumPy), SQL (DuckDB, SQLite, SSMS), R
- Machine learning and statistics: scikit-learn, LightGBM, SHAP, statsmodels, SciPy, A/B testing, Bayesian analysis, regression, classification
- BI and visualisation: Power BI (DAX), Plotly, Streamlit, matplotlib, mplsoccer, Excel
- Engineering: Git, GitHub Actions, ETL pipelines, pytest, Flask