Portfolio projects

Five projects. One question each.

Each case states the question someone needed answered, the method, the finding, and what the work would not claim. Every repository rebuilds from source with one command.

E-commerce

01Commercial warehouse / Reporting layer

2026 · Approximately 1 month · Sole contributor

TheLook — commercial reporting layer

Two source systems reconciled onto one country-month grain. 35 checks across three gates decide what reaches a dashboard, and the forecast was held back until an audit had found two defects in my own code.

DuckDB SQL Python Power BI Reconciliation

Grocery retail

02Causal inference / Price economics

2026 · Approximately 2 weeks · Sole contributor

Dunnhumby — elasticity and promotion effectiveness

Own-price elasticity for 147 categories. The campaign evaluation’s first answer said coupons reduced spend and the standard check endorsed it; matched on pre-period spend, every sign flips.

Two-way fixed effects Difference-in-differences Matching Python

Mobility & delivery

03Channel P&L / Real operating data

2026 · Approximately 2 weeks · Sole contributor

BE Group — marketing channel economics

54 weeks across 8 acquisition channels, reconciling to the company total every week. A scope labelled “All Vietnam” turned out to be exactly two cities. Every published figure is indexed.

Python DuckDB CAC & payback Trade spend

Advertising

04Measurement / Experiment audit

2026 · Approximately 2 weeks · Sole contributor

Rokt — holdout experiment audit

852,197 records audited before any effect was estimated. 26,426 users appeared in both arms of a test that assumed one arm each, so the recommendation was a conditional rollout rather than a green light.

Python Two-proportion z-test Sensitivity analysis

Fintech

05Promotion spend / Decision rules

2026 · Approximately 1 month · Sole contributor

ZaloPay — promotion budget concentration

4.26% of scored users are associated with 26.94% of credited promotion cost. Recommended a shadow-mode review queue rather than auto-blocking, because the data carries no fraud labels.

T-SQL Python Power BI Cost coverage
Also in the repository

A bank-marketing targeting model — the top-ranked 20% captures 51.8% of responders at 2.59× lift while cutting outreach 80%, with a randomised pilot recommended rather than deployment. The dataset is a widely-used teaching set and credit and risk is not a lane I am pursuing; what transfers is the targeting economics — capture, lift and contact cost against a fixed capacity — rather than the domain.

Open the case study

Earlier marketing work

Five campaign, acquisition and conversion cases from 2022–2025 — Laptop SGN, Turis VPN, LeaseRunner and two Golden Owl engagements. They are where the commercial questions came from, and they are kept as background to the analysis rather than as a service on offer.

Open the marketing analytics portfolio

Reading guide

Start with the decision. Audit the proof only if you need it.

The web articles keep technical detail light enough for non-analysts. Each DOCX is a stakeholder-ready leave-behind. GitHub links expose the implementation, outputs, and validation trail.