Client Performance Warehouse
A pipeline that pulls Facebook and Google ad performance from three Google Sheets, normalizes it through n8n into a Supabase warehouse — then a custom app I built, MBT Frontend, turns that data into a ready-to-send client email.
The problem
Each client's ad performance — mostly Facebook and Google — lived across separate Google Sheets, each in a different shape. Building a single client report meant exporting from each sheet, reconciling mismatched columns, and assembling the email by hand, every reporting cycle.
What I built
A pipeline that collects and cleans the numbers, plus a custom app I built from scratch that turns them into a finished email.
- Ingestion — n8n pulls from three Google Sheets fed by Facebook and Google ad data.
- Normalization — the mismatched fields from each source are mapped into one consistent schema as they land.
- Warehouse — records are batch-upserted into Supabase, so re-runs are idempotent and never duplicate.
- The app — I built MBT Frontend, a custom app that reads the warehouse and generates a ready-to-send email with each client's data.
Outcome
Building a client report went from manual exporting-and-pasting to opening the app and sending. The Supabase warehouse also became a clean source of truth that other tools can build on.