-- table: projects

Everything I've built

Each project below is real work with code behind it. Filter by category to explore the work.

Showing all projects

worldLifeEDA.sql
-- Developed vs Developing
SELECT Status,
  ROUND(AVG(Lifeexpectancy),1) AS avgLifeExp,
  ROUND(AVG(AdultMortality),1) AS avgAdultMort
FROM worldlifexpectancy
GROUP BY Status
ORDER BY avgLifeExp DESC;

avg life expectancy (years)

Developed 79.2
Developing 66.8

avg adult mortality (per 1,000)

Developed 79.7
Developing 182.1

One of seven questions answered in MySQL, on the cleaned dataset.

01

World Life Expectancy — SQL analysis

View repository SQL · 3 files
Problem
A 2,941-row global health dataset — 193 countries, 2007 to 2022 — with duplicate rows, missing Developed/Developing labels and gaps in life expectancy. Not usable as it stood.
Work
Cleaned it in MySQL: ROW_NUMBER to find and remove 3 duplicates, a self join to fill 8 blank status labels, and adjacent-year interpolation for 2 missing values. Then answered seven questions with CTEs, window functions and CASE.
Result
Global life expectancy rose from 66.8 to 71.6 years, with a clear 2020 dip. Developed countries average 79.2 years against 66.8, and less than half the adult mortality. Zimbabwe improved most, gaining 21 years.
SQLMySQLData CleaningWindow FunctionsEDA

Charts produced in PySpark. Tap any one to enlarge.

02

UK Crime — big data analysis

View repository Jupyter notebook · 4 charts
Problem
Three claims about crime in the UK, none of them tested against the full record: burglary is rising, Liverpool has the worst firearms rate, and firearms offences track drug offences.
Work
Processed a 65-million-row police dataset with Apache Spark on an Azure VM — tested on a sample first, then ran the full load. Normalised by population, fitted a SARIMA forecast, and ran correlation and regression in Spark MLlib.
Result
Two claims refuted, one confirmed. Burglary fell about 50% in ten years, from ~42,000 a month to ~20,000. Merseyside ranks 4th per 100,000, not 1st. Firearms and drug offences correlate at r = 0.92.
Apache SparkAzurePythonBig DataSARIMAJupyter Notebook

The live app, built over a hackathon weekend.

03

CandidView — CV screening that explains itself

Problem
Screening tools reject candidates on keyword matches and never say why, so good people disappear before a human ever sees them.
Work
Built with a team at the CBC Spring 2026 Hackathon. Matches a CV against the job description semantically rather than by keyword, and attaches a plain-English reason to every score.
Result
A live app on the principle "sort and explain — humans decide". Every candidate stays visible, every match is explained, and the recruiter still makes the call.
ClaudeArtificial IntelligenceTeam ProjectHackathon