← Back to projects

Case study

Data Platform

Toy CRM and service medallion pipeline with quality quarantine, DuckDB gold KPIs, and Ask over certified measures or a local handbook.

At a glance

Plain summary for recruiters and visitors. Technical detail follows below.

What it is
I built a small data platform that lands CRM files, quarantines bad rows, and publishes trusted revenue KPIs. Recruiters can verify the counts on this page.
What I owned
Solo end to end. Bronze, silver, and gold pipeline, DuckDB gold layer, pytest contracts, FastAPI console, and the frozen public demo.
Why it matters
Shows how data teams stop bad rows from polluting executive dashboards. Quarantine rules and gold totals are locked by automated tests.
Try it on this page vs full project
This page runs frozen quality and KPI chips only. The full FastAPI tour with a live pipeline run stays on request.
Data Platform

Problem

Analyst and data-engineering applications need clear proof of layered pipelines, quality gates, and trusted KPIs.

Method

Built bronze, silver, and gold on toy CRM and service CSV extracts. Silver quarantines failed rows. Gold lands in DuckDB with certified regional measures. pytest locks accepted and quarantined counts. Optional Spark evidence must match the same totals. FastAPI serves a tourable console with Ask over numbers or handbook docs.

Result

Toy contract on this page. 10 orders accepted and 5 quarantined. 6 cases accepted and 2 quarantined. Orders pass rate 66.67%. Gold revenue by region sums to 14,200 (EU 6,890, US 2,910, APAC 4,400). Recruiters can try those figures on this page. The full FastAPI console stays on request.

Architecture

How the system is shaped. Full implementation stays private.

  1. Step 1

    Bronze

    Land toy CRM order and service case CSV extracts as raw bronze files.

  2. Step 2

    Silver

    Type rows and apply named quality rules. Failed rows go to quarantine and never reach gold KPIs.

  3. Step 3

    Gold

    Trusted facts in DuckDB plus CSV export. Certified regional measures feed KPI snapshot and Ask numbers mode.

  4. Step 4

    Contracts

    pytest locks accepted and quarantined counts. Optional PySpark evidence on this machine matches the same totals.

  5. Step 5

    Console

    FastAPI UI with Take a tour, Run pipeline, Quality report, KPI snapshot, and Ask. The public case study ships a frozen quality and gold chip demo. Full source stays on request.

Frozen quality and gold contract (toy extracts)

Frozen pytest contract on toy CRM and service extracts. Optional Spark on this machine matched the same counts. Not a vendor lakehouse. Airflow is not claimed.

MeasureValueNote
CRM orders accepted10Contract
CRM orders quarantined5
Orders pass rate66.67%
Service cases accepted6Contract
Service cases quarantined2
Gold revenue EU6,890
Gold revenue US2,910
Gold revenue APAC4,400
Gold revenue total14,200Sum

Algorithm

Rule-based quality quarantine then gold KPIs

Evaluate each bronze row against named rules. Keep only clean rows in silver. Aggregate certified measures from gold.

for row in bronze:
  failures = evaluate_rules(row)
  if failures: quarantine(row, failures)
  else: silver.append(row)
gold = load_duckdb(silver)
kpis = certified_measures(gold)
return kpis, quarantine_report

Key logic

Compact illustrative snippet (Quality split sketch (illustrative)). Not the full codebase.

def split_quality(rows, rules, key):
    accepted, quarantined, seen = [], [], set()
    for row in rows:
        failures = [name for name, check in rules if not check(row)]
        if row.get(key) in seen:
            failures.append("duplicate_key")
        elif row.get(key):
            seen.add(row[key])
        if failures:
            quarantined.append({"row": row, "failures": failures})
        else:
            accepted.append(row)
    return {"accepted": accepted, "quarantined": quarantined}

Stack

PythonFastAPIDuckDBData QualitypytestPySparkSQL

Try a quality gallery

Free recruiter demo of the frozen pytest contract. Quality counts and regional gold revenue are toy extracts. This is not the FastAPI console.

Pick a report, then run the demo.

Source code

Full source is available to hiring managers on request. The public page shows architecture, algorithms, and compact proofs only.