Case Study · Data Platform Architecture

Eliminating $240K/year in overages with a governed Reverse ETL pipeline.

Real-time, unvalidated ingestion into Mixpanel let rogue events spike Monthly Tracked Users, overcounting our user base by 1M+ per month and costing $20K monthly in overage fees — while Mixpanel numbers never matched our Snowflake source of truth. I redesigned the ingestion model around Snowflake and dbt.

Role Hands-on Data Product Manager — built the POC, authored the migration RFC, and led the move from real-time push to an automated Reverse ETL pipeline

$240K/yr saved 1M+ MTU overcount corrected ~100 events synced Snowflake + dbt Reverse ETL

Unvalidated real-time data was driving up Mixpanel's bill

Mixpanel's billing was tied directly to Monthly Tracked Users, and our real-time ingestion had no gatekeeper — so any rogue event or duplicate immediately inflated that number.

COST

Strict overage fees, every month

Artificially inflated MTU counts pushed us over Mixpanel's tracked-user limits, triggering recurring overage charges.

$20,000/mo overages = $240K/year in avoidable cost
TRUST

Mixpanel and Snowflake disagreed

Stakeholders routinely found that Mixpanel's numbers didn't match the Snowflake warehouse treated as source of truth.

Mixpanel ≠ Snowflake = leadership can't trust either number
RISK

No recovery from failed syncs

In the real-time setup, a failed stream or missing payload attribute meant that data was permanently lost in Mixpanel.

Failed stream = data gone, retrospective analysis impossible

Three problems traced back to one root cause

The overcounting, the discrepancy, and the data loss all came from the same source: events reached Mixpanel client-side, in real time, with no validation layer in between.

VOLUME

1M+ ghost users inflating MTU

Without a validation layer, rogue code loops and duplicate event creation in the app spiked Mixpanel's user counts well above the real total.

+1M ghost MTUs = retention, activation, and conversion KPIs all skewed
PIPELINE

No staging layer before Mixpanel

Events were captured client-side or streamed in real time directly to Mixpanel, with nothing in between to dedupe, filter, or validate.

No validation layer = every bad event ships straight to billing
ALIGNMENT

Engineering wasn't bought in yet

Re-architecting ingestion meant deprecating live pipelines data engineering depended on — a case had to be made with a working proof, not just a proposal.

No proof yet = no basis to ask engineering to change course

From real-time push to a governed Reverse ETL pull

I proved the approach with a working POC, then used it to drive an RFC, secure buy-in, and scope the migration to roughly 100 core events synced from Snowflake.

1
Proof of concept dbt → Reverse ETL → Mixpanel

Manually modeled a subset of event data in dbt and synced it from Snowflake into a test Mixpanel project via a Reverse ETL tool, proving an exact match on user ID and event timestamp without real-time pipes.dbt · Reverse ETL

2
RFC: pipelines, schema, and backfill strategy

Authored an RFC mapping the exact upstream/downstream pipelines to deprecate, the required Snowflake schema changes, and the idempotency and backfill strategy needed to avoid duplication — then socialized it across data engineering and analytics to reach technical consensus.RFC · Snowflake

3
Scope to ~100 core events on ROI

Used the $240K/year savings case and the RFC's engineering blueprint to secure resources and scope the migration down to roughly 100 core product and business events.Prioritization

4
Automated offline sync, on a schedule

Raw events land in Snowflake first, dbt models deduplicate, filter bot traffic, and standardize identities, then a scheduled Reverse ETL job pulls the cleaned ~100 events into Mixpanel.Snowflake · dbt · Scheduled sync

From $20K/month in overages to $0

$240K
Saved annually
$20,000/mo overages eliminated
1M+
Ghost MTUs corrected
Mixpanel matched to baseline
±0%
Mixpanel vs. Snowflake variance
Single source of truth achieved
100%
Pipeline replayability
Up from 0% — failed syncs re-run with zero data loss

A governed replica, not a runaway pipeline

⚡

Stakeholder trust in the numbers was restored

With Mixpanel running as a governed replica of Snowflake, product managers and leadership could run cohorts and funnels knowing the numbers matched corporate financial reporting — the recurring "two sources of truth" complaints stopped.

⟲

Fail-safe, replayable architecture

If a sync fails on a network issue or API limit, the pipeline simply re-triggers — data is ingested later with zero loss or corruption.

↻

Historical data stays dynamic

When a user attribute or event property updates after the fact, the pipeline can overwrite or append it post-ingestion, keeping historical data accurate rather than frozen.

⊕

A lean, documented data dictionary

Narrowing the footprint to ~100 automated offline events created a governed dictionary that's easy to maintain and scale.

✕

Real-time traded for reliability — deliberately

Sacrificing a slight ingestion delay bought back historical mutability and bulletproof reliability — a trade-off proven out by the POC before engineering committed.

Let's talk

Tackling something like this?

Tell me your biggest data or AI bottleneck and I'll send you how I'd approach it — the same way I worked this problem. No résumé dump, no pitch. Just a useful conversation.

Start the conversation →