Skip to content

COMPLETED PROJECT / MARKETING INTELLIGENCE

Fab ENT Marketing Intelligence

Seven source datasets, governed marketing metrics and an interactive browser dashboard for a fictional UK direct-to-consumer fashion business.

Independent portfolio work using a fixed synthetic 2025 dataset in GBP. The results demonstrate engineering and validation; they do not represent measured commercial impact or a live production data feed.

SQLdbtDuckDBWren AIPythonJavaScript

01 / BUSINESS QUESTION

Connect marketing spend to consistently defined outcomes.

The project connects campaign spend, website activity and customer orders so performance can be explored by month, channel and campaign. The modelling challenge is preserving each source's grain while applying consistent attribution and metric rules across reporting and semantic queries.

Monthly campaign analytics support comparisons of spend, attributed outcomes and efficiency over the fixed reporting period. Filters, KPI cards, trends and campaign reporting make the models accessible through the browser.

02 / ARCHITECTURE

From seven raw sources to governed browser reporting.

  1. Seven source datasets

    Campaigns, ad performance, web sessions, customers, orders, order items and products form the fixed synthetic input.

  2. dbt + DuckDB

    Typed seeds, staging, attribution and marketing marts transform the raw records into tested analytics tables.

  3. Wren AI governance

    Semantic models define grains, relationships and metrics, with validated read-only queries and reproducible exports.

  4. Browser dashboard

    Fixed Parquet snapshots are queried with DuckDB WebAssembly. JavaScript powers interactive reporting without a dashboard backend.

Governed seven-day last-non-direct attribution

Eligible touches are identified paid sessions with a valid campaign in the 168 hours before an order, excluding the order timestamp. The latest eligible touch wins; session ID breaks timestamp ties. Direct and campaignless Organic visits cannot overwrite a qualifying paid touch.

Unattributed orders remain explicit. The rule does not infer identities or establish a causal marketing effect.

Monthly campaign analytics

Campaign-by-month reporting supports time-based comparisons alongside channel and overall monthly views. Metric definitions, commercial eligibility and attribution are applied in the governed models.

Reporting months use Europe/London dates; attribution windows use UTC instants.

03 / VALIDATION

Evidence at the data, metric and filter levels.

363 DBT TESTS

Data-quality validation

Key and relationship checks, source-to-model reconciliation, monetary arithmetic, attribution boundaries and model-grain checks protect the reporting layer.

25,200 FILTER CASES

Dashboard query validation

Dashboard calculations are compared with independent physical-mart SQL across 12 start months × 12 end months × 7 channel choices × 25 campaign choices. These validate calculations; they are not 25,200 manual browser tests.

VERIFIED EXAMPLES

Reproducible answers

Saved example questions and checked answers demonstrate governed marketing analysis in the public demo. These are fixed examples rather than arbitrary live AI responses.

These are project-reported validation results for the fixed synthetic snapshot and reporting logic. They do not establish production reliability or business uplift.

04 / DEMO ACCESS

Explore the public dashboard or run local AI services.

Public static demo

The public demo supports the interactive static dashboard and Verified examples using exported data. Those features need no locally running backend.

Optional Ask Marketing AI

Arbitrary questions require the documented local services, including Wren and the Python question service, plus local Codex CLI authentication. This optional workflow is not hosted by the public static demo.

Local AI availability depends on the authenticated environment. Follow the repository setup and validation instructions; public-demo access alone does not enable live AI questions.