← Back to projects

Adstack Sync

An advertiser running campaigns on Google, Meta and TikTok has their most important numbers sitting inside three systems they don't control — in three currencies, three timezones, and three incompatible definitions of a conversion. Getting those numbers into one place they own is a whole product category: Supermetrics, Fivetran, Funnel.io.

This is a small, working one. Three mock platform APIs reproduce the real ones' response shapes and failure modes, a pipeline pulls from them on a schedule, and a warehouse holds the result. The interesting part was never moving the rows — it's staying correct while the platforms revise history after the fact, rename fields without warning, throttle you mid-fetch, and report failures as HTTP 200.

Below you can break it on purpose. Run a clean sync first, then advance the simulated clock and watch a day that had already “closed” change its numbers — then tick the faults and check whether the warehouse still holds.

Run a sync

Break something first, then check whether the warehouse stays right. You get your own isolated warehouse.

simulated date

Inject a fault

8 of 8 runs left today

Incremental from here: Google 3 days, Meta 7, TikTok 2 — each sized to that platform's attribution window, not guessed.