Skip to content
Back to projects
Client
Trusted Media Brands
Year
2026
Status
Live

Analytics Dashboard

The reporting stack that retired an enterprise subscription. Now the team owns its own numbers.

  • Cloud Run
  • BigQuery
  • dbt

01 — The problem

The black box

Marketing and content data reached reporting through a third-party connector. It worked. It was also a black box the team did not own and could not change.

Nothing about that is specific to a media company. The tool works, the invoice recurs, and the one thing nobody can do is change it.

What changed hands

Ran on
RentedA paid subscription
OwnedCloud Run, BigQuery, dbt
The reports
RentedWorked
OwnedThe same reports
Owned by
RentedNot the team
OwnedTMB
Could it be changed
RentedNo
OwnedYes
02

Two Sources, Three Services

Cloud Run pulls the data in. BigQuery stores it. dbt shapes it into the models. The reporting layer on top is custom, and the team builds its own reports against it.

  1. 01 Sources

    • Marketing data(Source)
    • Content data(Source)
  2. 02 Ingestion

    • Cloud RunPulls the data in(Process)
  3. 03 Warehouse

    • BigQueryStores it(Store)
  4. 04 Transforms

    • dbtShapes it into models(Process)
  5. 05 Reporting

    • Reporting dashboardUnchanged for the reader(Output)

Feedback loop: Reporting back to Transforms (Edit the model, edit the report).

Two sources in, five stages, one loop back into the models.

03

Inside The Stack

Layer by layer, in the order the data moves. TMB's systems are internal, so every frame below is a concept render, not a screenshot. The ones you can go and use — Éclat, Starrd, OneLapse — are on the work index.

L1

Ingestion

The layer TMB was renting. It runs on Cloud Run now.

Cloud Run

Concept mockup of an ingestion run monitor headed Ingestion Runs with the subheading Cloud Run connectors: six connector rows named web_analytics, ad_spend, email_metrics, content_cms, social_reach and search_console_export, each showing Duration, Rows and Last run fields filled with em-dashes, a strip of run-history squares, and a state pill reading Succeeded, Queued, or an orange Running with a spinner.
One row per connector: what it pulled, how long it took, and whether the last run landed.

L2

Warehouse & transforms

Where the shape of a report gets decided. dbt builds this graph from the models, so nobody maintains it by hand.

BigQuery · dbt

Concept mockup of a dbt lineage graph: nodes flow left to right across four columns headed Sources, Staging, Intermediate and Marts, from raw_events, raw_campaigns and raw_content through stg_ models into int_sessions_joined and int_campaign_spend, ending at mart_content_performance, which is highlighted in orange, and mart_channel_summary.
Raw sources on the left, the marts the reports sit on at the right. Every arrow is a dependency dbt already knows about.

L3

Reporting

The screen the whole stack exists to fill.

Concept mockup of a dark reporting dashboard titled Analytics Dashboard: a sidebar listing Overview, Sources, Models, Ingestion and Warehouse; four KPI tiles labeled Sessions, Pageviews, Sources Synced and Rows Loaded whose values are em-dashes above small orange sparklines; an unlabelled time-series line chart and a stacked bar chart; and a data table with Source, Connector, Last Sync, Rows and Status columns where numeric cells read as dashes and status pills read Synced and Running.
The reporting layer the stack feeds: warehouse tables surfaced as charts, and a sync table that says which source last landed.

The team answers its own questions.

Anyone who needs a number builds the report themselves, straight against BigQuery, and has it the same day — where the old way was to file a request with a vendor and wait days for the answer to come back. The enterprise subscription that used to sit between the team and its own data is retired.

Turnaround for a new report
Same dayTurnaround for a new report

Colophon

Role
Sole engineer: the ingestion jobs, the warehouse, the dbt models, and the reporting layer. Creative Technologist at Trusted Media Brands.
Stack
Google Cloud Platform · Cloud Run · BigQuery · dbt

Start a project

What do you need built?

Tell me what the thing has to do and who has to use it after I leave. We'll get on a call, and I'll tell you what it takes.

Start a project