Case 04 / Selected work / 2025

Troi
shows you which ad
actually worked.

A real-time ROAS and ROI calculator for SMEs. Connect your ad channels and your store — Troi does the attribution math so you stop guessing which campaigns are worth running.

Client

Troi · Colombo

Engagement

SaaS dashboard

Timeline

12 weeks · Q1–Q2 2025

Status

Beta
troi.app / dashboard / channels
Live

Channel ROAS — last 30 days

refreshed 00m ago · live

Blended ROAS

3.8×

▲ 0.6× vs. last mo.

Total ad spend

$12,400

across 4 channels

Revenue attributed

$47,120

from store orders

Best channel

Google

ROAS 5.1×

ROAS by channelApr 2025
Google
Meta
TikTok
Email

Attribution model

Last-clickfirst-party

Channels connected

4ad sources

Platform tab savings

~5tabs closed

Real attribution·Channel-wise ROAS·Built for SMEs·Shopify-connected·No guesswork·Real attribution·Channel-wise ROAS·Built for SMEs·Shopify-connected·No guesswork·
01 / The brief

Four ad platforms.
Four different stories about what actually worked.

Troi came to us with a problem every SME marketing team knows: Google says it drove 200 conversions, Meta claims 180, TikTok counts 90 — but Shopify only recorded 310 orders total. Every platform takes credit. Nobody owns the truth. Budget decisions were being made on fiction.

Before · The mess

SMEs spending across Google, Meta, and TikTok with no way to tie ad spend back to actual store revenue.

Before · The mess

Each ad platform reported its own inflated numbers — impossible to reconcile against real Shopify sales.

Before · The mess

Marketing budget decisions made on gut feel. Spend kept climbing, real ROI stayed unknown.

02 / Our take

Attribution starts at the store, not the ad platform.

The only source of truth is what actually got purchased. We built Troi to pull from Shopify and WooCommerce first — then reconcile ad platform data against real orders. The platform's job is to make the math undeniable and the decision obvious.

Principle 01

Channel-wise, not blended.

Every marketing channel gets its own ROAS and ROI breakdown. Blended numbers hide the truth — we surface what each channel actually earns.

Principle 02

Sales data, not ad platform data.

We pull from Shopify and WooCommerce — not the ad platforms — so attribution reflects real transactions, not claimed clicks.

Principle 03

Actionable, not decorative.

The dashboard answers one question per channel: is this worth running? Budget signals surface automatically so the decision is obvious.

03 / The system

What we actually shipped.

A four-surface SaaS dashboard on a Next.js + Supabase backbone, wired to ad APIs and store data through a real-time attribution engine.

Surface 01 · Overview

ROAS dashboard

Surface 02 · Channels

Per-channel breakdown

Surface 03 · Sales

Store data sync

Surface 04 · Reports

Campaign view

↓ ↓ ↓ ↓

The spine · Next.js + data pipeline

Ad spend ingestion, sales attribution, ROAS/ROI calculation, channel reporting

Ad data

Google Ads API · Meta Ads API

Sales data

Shopify API · WooCommerce

Compute

Attribution engine · n8n

Data

Supabase · Postgres

Out · For the marketer

Real-time ROAS per channel · Budget signals

Out · For the founder

Actual ROI per campaign · Spend vs. revenue truth

04 / The outcomes

What it changes.

Numbers from beta cohort. 5 SMEs. Real campaigns, real budgets, live Shopify data.

4+channels

Google Ads, Meta Ads, TikTok, and email — all in one attribution view.

Liveupdates

Spend and sales data sync continuously — no waiting for end-of-month reports.

1dashboard

Replace four ad platform tabs and a Shopify reports page with a single source of truth.

05 / How we shipped it

12 weeks. Discovery first. Attribution second. Dashboard last.

The attribution model was locked before a single component was written. That order is non-negotiable.

Wk 1–3 · Discovery

Interviewed 8 SME marketing teams.

Mapped every manual step in their reporting workflow. Defined the attribution model before writing a line of code.

Wk 4–5 · Architecture

Data pipeline design.

Designed the attribution engine. Resolved overlap between ad platform claimed conversions and Shopify actual orders.

Wk 6–11 · Build

Dashboard + integrations.

Google Ads API, Meta Ads API, and Shopify API integrations. Real-time ROAS engine. Channel comparison views.

Wk 12 · Beta launch

5 SME beta clients onboarded.

Real campaigns, real budgets. Attribution running against live store data.

06 / The stack

Front-end

Next.js, Tailwind

API

tRPC, Zod

Ad integrations

Google Ads API, Meta Ads API

Sales

Shopify API, WooCommerce

Automation

n8n, data pipeline

Data

Supabase, Postgres

Real attributionNo ad platform biasShopify-connectedOwned by client