All case studies

    Data & Marketing Intelligence

    Multi-Brand Marketing Intelligence Platform

    How we replaced 100 Google Sheets tabs and App Scripts with a zero-intervention reporting system that processes 5GB of live data daily — and gives every brand owner real-time visibility into exactly their own spend.

    30+
    Brands unified
    35
    Reports per day
    5GB
    Processed daily
    ₹1Cr+
    Ad spend tracked
    0
    Manual steps
    Live & running — delivering reports daily on client infrastructure

    The problem

    100
    Google Sheets tabs
    across 10 workbooks
    stitched together
    with App Scripts

    10 Google Sheets. 100 tabs. App Scripts holding it all together.

    Before this system existed, the agency was running their entire reporting operation across 10 Google Sheets workbooks — roughly 100 tabs in total — with Google App Scripts written to automate parts of the data flow. Scripts pulled numbers from Google Ads, Meta, and Shopify on a schedule, populated the right tabs, and tried to keep the reports current. On paper it looked automated. In practice, it was fragile.

    App Scripts have hard execution limits, break silently when API responses change, and offer no real error visibility. As the brands scaled and data volumes grew, scripts started timing out, tabs stopped refreshing, and the team spent more time debugging broken automations than acting on the data. There was no consolidated view, no reliable pipeline, and no way to trust that yesterday's numbers were actually current.

    On top of the broken automation, the App Scripts had no access control layer. The agency founder was personally fielding calls from brand owners asking the same question every day: "how much did you spend on my brand?" The Sheets couldn't be shared securely — showing one brand's data meant showing everyone's. Every answer still required a manual export or a phone call.

    The solution

    One system. Fully automated.
    Zero human intervention.

    We built a unified backend that takes over every part of the reporting process — data collection, normalization, business logic, and delivery — and runs it automatically, every single day. The agency team wakes up to 35 complete, accurate reports. Each brand owner logs into their own isolated portal and sees exactly their spend and revenue. Nobody pulls a spreadsheet. Nobody makes a phone call.

    How it's built

    The architecture.

    Four processing stages with a role-based access layer on top — raw data flows from four source platforms through to isolated brand-owner views without touching a spreadsheet.

    SOURCESGoogle AdsMeta AdsShopifyWebhooks4 live sourcesPROCESSINGNode.jsBusiness logicNormalizationDaily scheduling30 brand schemasSTORAGEPostgreSQL5GB+ dailyMulti-tenantdata isolationSingle source of truthREPORTSLooker35 auto reportsDaily refreshRole-based viewsZero manual updatesAGENCYFull accessall 30 brandsBRAND OWNERSIsolated views30 × own data only

    What's inside

    35 reports. Every morning. No one clicked anything.

    Every report is generated automatically overnight and waiting when the team arrives. Here are the six categories that make up the 35.

    Spend tracking

    Daily, weekly, and monthly ad spend broken down per brand and per platform — Meta, Google, and combined totals. Always accurate, always current.

    Ad creative performance

    Which creatives are driving results and which are fatiguing — click-through rates, conversion rates, and ROAS per creative asset across every brand.

    Video analytics

    View-through rate, completion metrics, and audience retention for every video ad running across all brands — tied back to spend and revenue.

    Product performance

    SKU-level Shopify sales data matched against ad spend, so the team knows exactly which products the ads are actually converting on.

    MAP compliance

    Minimum Advertised Price reports giving the agency brand-level pricing visibility — flagging any brand that's drifting below agreed price floors.

    Platform breakdown

    Side-by-side Meta vs Google vs Shopify performance for every brand — normalized into a single comparable view regardless of platform differences.

    At scale

    The numbers.

    What the system processes on a normal day. Every day. Automatically.

    0GB

    of raw data processed daily from all ad platforms and Shopify stores

    0+

    brands unified in one normalized data model with completely isolated schemas

    0

    reports auto-generated and ready every morning — zero manual steps

    ₹0Cr+

    in ad spend tracked, analyzed, and reported across all brand accounts

    Role-based access

    Every brand owner has their own window.

    One of the core architectural decisions was building a multi-tenant access layer on top of the reporting system. The agency sees everything. Each brand owner sees only their own brand.

    This solved a real accountability problem. The agency founder was fielding calls from 30 different brand owners asking the same question every day. Now each brand owner logs into their own portal and sees exactly their spend, ROAS, and Shopify revenue — nothing from any other brand.

    Data isolation is enforced at the PostgreSQL schema level, not just in the UI. Brand A cannot access Brand B's data under any circumstance — it's architecturally impossible, not just hidden.

    Agency — Full access

    All 30 brands. One dashboard.

    The agency team sees the complete picture — every brand, every platform, every metric — from a single unified view. Cross-brand comparisons, total portfolio spend, and consolidated reporting all in one place.

    All 30 brandsCross-brand viewFull reporting suite

    Brand Owner — Isolated view

    Your data. Nothing else.

    Each of the 30 brand owners logs in and sees only their own brand's data — spend, ROAS, Shopify revenue, and product performance. No other brand is visible. No phone calls required.

    Own brand onlyLive spendShopify revenue

    Tech stack

    Built with.

    The full stack powering the data pipeline, normalization, storage, report generation, and role-based access control.

    Node.jsPostgreSQLLookerGoogle Ads APIMeta Ads APIShopify APICustom WebhooksRole-based AuthCron Scheduling

    Before. After.

    Before

    • 10 Google Sheets workbooks with ~100 tabs automated via App Scripts
    • Scripts timing out silently — broken reports with no error alerts
    • Hard execution limits causing data gaps as brand count grew
    • No access control — Sheets couldn't be shared per brand securely
    • Founder fielding daily accountability calls from brand owners
    • No consolidated view — each workbook was its own island
    • Hours spent debugging failed scripts instead of acting on data

    After

    • 35 reports ready every morning — generated overnight
    • 5GB of data pulled, normalized, and stored automatically
    • Team acts on fresh data from the moment they start work
    • Single source of truth, architecturally enforced
    • 30 brand owners with their own self-service portals
    • Zero accountability calls. Zero manual exports.
    • One unified view of a 30-brand portfolio

    Start a project

    Have a similar data challenge?

    Whether you're managing one brand or thirty, we build the backend infrastructure that makes your data work for you — not the other way around.

    Get in touch →