
Marketing Performance Analysis Platform
End-to-end marketing analytics stack for Maven Fuzzy Factory using DLT, Snowflake, dbt, Dagster, Elementary, and Metabase.
Timeline
Q1 2026
Role
Data Engineer
Team
Solo Project
Status
CompletedTechnology Stack
Key Challenges
- Building a reliable CSV-to-warehouse ingestion flow while preserving data quality.
- Designing KPI marts that stay fresh with incremental logic and recompute windows.
- Coordinating ingestion, transformations, and quality checks through an automated orchestration layer.
Key Learnings
- Asset-based orchestration with Dagster simplifies dependency management across data workflows.
- Incremental marts with targeted recompute windows balance freshness and cost.
- Combining dbt tests with Elementary monitoring improves confidence in business-facing metrics.
Executive Summary
This project delivers an end-to-end analytics platform for marketing performance analysis on the Maven Fuzzy Factory e-commerce dataset.
The stack ingests CSV data with DLT, models data in Snowflake using dbt, orchestrates jobs with Dagster, and exposes KPI outputs in Metabase for business consumption.
Business Questions Addressed
- How are sessions and orders trending over time?
- What is the session-to-order conversion rate?
- Which acquisition channels (
utm_source) drive the best outcomes? - How do revenue, gross margin, and refunds evolve daily?
- What are revenue-per-order and revenue-per-session dynamics?
Architecture Overview
CSV (data/)
-> DLT ingestion -> Snowflake (raw)
-> dbt (staging -> intermediate -> marts)
-> KPI models + tests + Elementary report
-> Metabase dashboard
Data Modeling Strategy
The dbt project follows a layered and modular design:
- Staging (
stg_*) for source normalization - Intermediate (
int_*) for business joins and reusable transformations - Marts for core entities and KPI reporting
Core marts include fct_sessions, fct_orders, fct_order_items, fct_refunds, dim_products, and dim_users.
KPI marts include kpi_daily_overview and kpi_daily_marketing_channels with incremental builds and a rolling 3-day recompute window.
Orchestration and Delivery
Dagster is used to orchestrate ingestion and transformation with explicit job dependencies:
dlt_pipeline_jobfor ingestiondbt_build_jobtriggered after successful DLT completion- Daily schedule at
06:00 UTC
This setup keeps execution deterministic and easier to operate in production-like conditions.
Data Quality and Observability
Quality controls are implemented at multiple layers:
- dbt schema and relationship tests in
schema.yml - Elementary monitoring for freshness and anomaly signals
- Dagster sensors for workflow triggering and failure visibility
Operational Runbook
Recommended execution order:
- Run DLT ingestion.
- Execute
dbt buildand tests. - Generate the Elementary report.
- Validate KPI outputs in Metabase.
Repository Highlights
ingestion/- DLT pipelines (CSV to Snowflake raw layer)dbt_marketing_perf/- dbt models, tests, and exposuresinfra/- Dagster orchestration and operational scriptsdashboard/- Metabase dashboard exportdocs/- user guide, optimization notes, and KT checklist
Repository
- GitHub: marcellin-de/marketing-performance-analysis
- Suggested entry points:
dbt_marketing_perf/models/marts/ingestion/filesystem_pipeline.pyinfra/dagster_project/docs/user_guide.md
