An omnichannel campaign management platform with ML budget optimization, geo lift measurement, and real-time syncing across Meta, Google, and Naboria Ads.
Launch PlatformHow campaigns are created, synced to ad platforms, and monitored in real time.
Push Active campaigns are pushed to Meta every 5 minutes — budget changes, status updates, and audience targeting. Pull Performance insights are pulled from Meta and Naboria Ads every 15 minutes into ClickHouse for real-time dashboards.
How raw performance data becomes budget recommendations, forecasts, and incrementality measurements.
ML Four distinct ML pipelines run on different schedules — forecasting and geo lift every 6 hours, budget reallocation daily, and attribution on demand. All outputs land in ClickHouse and are served through the Go API.
Five automated conditions continuously monitor campaign health and flag anomalies.
Alert The scheduler checks all active campaigns against 5 conditions every 15 minutes. When triggered, alerts are persisted to PostgreSQL and dispatched to configured notification channels — Slack, email, or custom webhooks.
Measure true incremental impact with geo-based Difference-in-Differences and A/B experiments.
Every piece of the Naboria RMA stack and what it does.
A fast REST API handling campaign CRUD, multi-tenant auth, channel syncing, and background scheduling — all in a single binary.
A TypeScript SPA with Tailwind CSS, Leaflet maps for geo lift visualization, and a JWT-aware API client with automatic 401 redirect.
Stores the campaign lifecycle — campaigns, budgets, creatives, audiences, experiments, alerts, and multi-tenant organization hierarchy.
Time-series performance storage using SummingMergeTree and ReplacingMergeTree — campaign metrics, forecasts, budget recommendations, and geo lift results.
Session cache and rate limiting for the API layer, keeping hot data fast and reducing database load.
Generates 7-day performance forecasts every 6 hours — used for pacing alerts and budget planning.
Fits diminishing-returns curves to historical spend and uses constrained optimization to allocate budget where marginal return is highest.
Geo-based Difference-in-Differences with permutation tests for statistical rigor — proving true incremental lift across treatment and control markets.
Two-proportion z-test for comparing variant performance with statistical significance — applied to creative, audience, and channel experiments.
Weighted least squares attribution model with time-decay weighting — allocating credit across channels based on recency and contribution.
Schedules all ML pipelines — forecasting, budget allocation, geo lift, and attribution — with job-level observability and retry logic.
Path-based routing — /api and /auth to the Go server, everything else to Next.js — with automatic TLS via Let's Encrypt.
Full bi-directional sync via Graph API v21.0 — push campaigns and budgets, pull daily insights and creative-level performance.
Pulls onsite ad performance via the Meta-compatible /api/insights endpoint — unifying onsite and offsite metrics in one dashboard.