Attnex started as a personal frustration. We were running paid media campaigns across Meta, Google, and TikTok for clients, and the cross-platform reporting was a mess — three dashboards, three attribution models, three definitions of "conversion." We built Attnex to fix that for ourselves first.
The attribution problem
Every platform wants to claim the conversion. Meta's 7-day click window, Google's last-click default, TikTok's 1-day view attribution — run all three simultaneously and your reported conversions can be 2–3x your actual sales. We built Attnex around a single principle: one source of truth, one conversion window applied uniformly.
We pull raw event data from each platform's API and reattribute against our own model — a time-decay model with a configurable window. The default is 24-hour click, 0-view, which is conservative but honest.
The creative intelligence layer
This is what turned Attnex from a reporting tool into a product worth building. We run each active ad's copy and visual description through Claude, extract a structured set of signals — angle (problem/aspiration/proof), format (video/static/carousel), offer type, CTA verb — and store them alongside performance metrics.
The result: you can ask "show me all ads using a problem-aware angle with a CTR above 2.8%" and get a coherent answer. Most ad libraries don't connect creative attributes to performance data at this level of granularity.
Technical choices
We chose Supabase for the backend — Postgres with row-level security made multi-tenant data isolation straightforward. The frontend is Next.js with Recharts for visualisations. The AI annotation pipeline runs on Make.com calling Claude's API per ad, with results cached in Supabase.
We deliberately avoided building a custom ML model. Claude's structured output extraction is good enough for the signal extraction we need, and it's maintainable by a team of two.
Where we're heading
Attnex is in private beta. The next feature is automated creative briefing — given a set of winning ad attributes, generate a brief for the next creative iteration. The loop closes: analyse → brief → produce → measure → repeat.