Spend & Search
Meta spend and organic search, reconciled in rupees
Spend & Search is a sample brief. We imagined Marlow & Finch, the homeware store from another of our samples, spending on Meta every day while its organic rankings drifted and a spreadsheet tried to reconcile the two. The brand is imaginary. The growth engine isn't: we designed and engineered it, and you can pace budgets and fire rules in the live build below.
A sample brief, a real product. We wrote this brief ourselves. The business is imaginary; the product is not: we designed and engineered it, and you can use it above. We publish results only for work a client has let us verify, so this page shows none.
The brief
We imagined Marlow & Finch's growth lead working across five tools: Ads Manager for spend, Google Ads for search, Search Console for rankings, Shopify for orders, and a spreadsheet to reconcile them. Every channel's own dashboard said it was winning.
The problem
For an Indian D2C brand the gaps are wider than usual: Meta claims conversions that turn out to be cash-on-delivery orders, Google claims the same buyer, and organic search quietly carries more revenue than anyone credits it with. Budgets get set on whichever number looked best last week.
- One definition of ROAS, everywhere
- Budget pacing against the time of day
- Paid and organic in the same view
- Rules that act, not just alert
The approach
We pulled Meta, Google Ads, Search Console and Shopify into one warehouse and modelled them into a single attribution table, so ROAS is computed one way everywhere. On top sits a cockpit: campaigns you can pause, pacing against the clock, a rule builder that actually fires, keyword sparklines, audiences, creative tests and a UTM builder.
What would change for a brand like this: one number in rupees to set budgets on, and paid and organic both agree with it.
- Meta, Google Ads, Search Console and Shopify ingestion
- BigQuery warehouse with tested dbt models
- Pacing rules that pause ad sets automatically
- Server components, edge-cached KPI reads
What shipped
- Campaign toggles and CRUD
- Pacing against time of day
- A rule builder that actually fires
- Attribution breakdown
- Organic keyword sparklines
- Alerts
- Audiences and lookalikes
- Creatives with A/B tests
- UTM builder and report builder
Under the surface
How it is built
Hourly workers pull the Meta Marketing API, Google Ads, Search Console and Shopify orders into BigQuery; dbt models normalise attribution, and a Next.js app on Vercel reads pre-aggregated marts so every number is one query deep.
- Ad platform and Search Console ingestion with token rotation
- dbt-tested models: ROAS defined once, everywhere
- Pacing rules auto-pause underperforming ad sets
- Revenue in rupees from Shopify orders, not platform claims
Considered and turned down
GA4 and spreadsheets. Rejected for sampled data and channel-flattering attribution.
Stack
The mechanism, working
The part of Spend & Search that was hardest to get right, as a small model you can operate.
Blended attribution
Meta spend and organic search normalised in one dbt model, so ROAS is defined once and pacing rules act on it.
