Projects
Real datasets, real defects caught, real write-ups — no tutorial follow-alongs.
Marketing Campaign Performance Analysis
Cleaned and audited a deliberately messy 798-record, 6-channel ad performance dataset end to end, then caught a data-quality defect that was materially distorting the headline numbers.
- Removed 18 duplicate CampaignIDs; any analysis on the raw file would have double-counted them.
- Consolidated 30 spelling/casing variants of Channel into 6 real channels, and 21 Manager variants into 5 — "TikTok" alone appeared under four different spellings.
- Treated 103 blank cells across 5 columns via channel-average imputation or explicit "Unknown" labelling, documenting the choice per column.
- Normalized a
Datecolumn mixing four formats, and convertedSpendvalues stored as text ("$185.70") into numeric fields.
- Google Ads absorbs $345.5K — 36% of total spend, more than any other channel, but returns only 3.64x against a 4.0x target, with 53 campaigns Below Target.
- LinkedIn is less efficient (2.46x vs. a 2.5x target, 62 campaigns Below Target) but carries far less budget ($201.8K) — making Google Ads the highest-dollar rebalancing opportunity.
- 257 of 780 campaigns (33%) miss their channel benchmark, concentrated in LinkedIn, TikTok, and Google Ads. Facebook is the healthiest paid channel at 4.67x against a 3.5x target.
- Revenue peaked in May 2026 at $1.35M, 56% above the January low; conversion rates barely move across audience segments (5.2–5.6%), so channel and timing — not targeting — drive the variance.
Built entirely in Excel: PivotTables and PivotCharts, an INDEX/MATCH benchmark lookup table, IFS-based performance classification (Above/On/Below Target), and independent SUMIFS/COUNTIFS/AVERAGEIFS cross-checks to validate every figure two ways before it went into the write-up.
Car Price Analysis
First SQL project: designed the schema and wrote 13 progressively advanced queries against a 10-field public vehicle-listings dataset, completing the full set within a self-imposed one-hour challenge.
- Ran explicit null-count and duplicate-detection checks across all key fields before writing any analysis query.
- Applied CTEs, window functions (
RANK() OVER,PARTITION BY), and correlated subqueries to move from basic aggregation to brand-level price statistics. - Used CASE-based banding to segment pricing by engine-size range (0–2.0L, 2.0–3.0L, 3.0–4.0L, 4.0L+).
Isolated brand tier, mileage, model year, and engine size as the primary price drivers — luxury brands command the highest average prices, mileage strongly affects used-vehicle pricing, and newer model years consistently price higher. Full methodology documented in the public README.