Portfolio projects
Seven repos, one per week, each a complete proof with a pipeline, tests, a dashboard and a README. The capstone combines them. Build them locally first; publish when you've chosen where they live.
| Week | Repo | Sector | What it proves | Headline evidence |
|---|---|---|---|---|
| 1 | retail-ingest |
Retail (12 stores) | Multi-source ingestion: email, folder, SFTP, API; idempotent raw zone | Completeness heatmap showing a silent store |
| 2 | qsr-clean |
QSR (3 brands, 18 restaurants) | Contracts, business-day logic, dedup, quarantine, DQ report, AI-assisted cleaning | Conservation test + DQ report |
| 3 | hotel-dagster |
Hotels (5) | Dagster assets, partitions, sensors, retries, checks, Docker deploy | Asset graph + backfill story |
| 4 | ads-warehouse |
Marketing agency | Azure SQL with Entra auth, MERGE patterns, swappable warehouse, benchmark | Audit table + benchmark table |
| 5 | restaurant-dbt |
Restaurants | Kimball star, SCD2, dbt tests and docs, metrics, menu engineering | dbt lineage + reconciliation test |
| 6 | chain-dashboards |
Restaurants + hotels | Power BI (PBIP, DAX, RLS), Metabase twin, emailed reports, reconciliation | Dashboard screenshots + bridge |
| 7 | daily-data-platform |
All four | The whole platform with CI, SLOs, cost model and business case | Demo morning video |
README template for every repo
# <repo name>: <one-line result>

**Problem.** Two or three sentences about the business and what arrives every morning.
**What I built.** 4–6 bullets with numbers you measured.
## Architecture
<diagram> + stack table (tool · role · why)
## Run it in 5 minutes
git clone … && cd …
just setup
just demo
## Design decisions
- Decision · why · alternative considered (link ADRs)
## Tests and checks
What they prove, how to run them.
## What I'd do next
Three items, honest.
*All data is synthetic, generated by `generate_data.py`. No real company data is used.*
Publishing checklist (when you're ready)
- Confirm no secrets:
gitleaks detecton the full history. - Confirm only synthetic data is committed; large generated data is git-ignored (commit the generator and a small sample instead).
- Screenshots and the video link in the README.
- Add topics on GitHub (
data-engineering,dagster,dbt,power-bi,azure-sql,etl). - Pin the capstone and two strongest proofs on your GitHub profile; add one line each to your profile README.
- Tell Claude which repo and path should host this course site, and it can publish it with GitHub Pages.
Hosting this course site later
This site is plain static HTML. To rebuild after editing lessons in content/:
pip install markdown pymdown-extensions
python build.py
To host on GitHub Pages, push the folder to a repo and enable Pages on the branch root (or a /docs folder).