AI Systems · AdRadar · Beta, one platform labeled

AdRadar labels one rival's ads on one platform, then reads the strategy off the labels

Cross-platform competitive intelligence for teams competing in many markets at once. It collects LinkedIn, Meta and Google ads from the public transparency libraries. AdRadar labels each creative and landing page for funnel stage, offer, audience and claim, then reads the strategy per market, per platform and across all three. Today I label LinkedIn. Meta and Google are collected, and I have not run the extraction pass on them.

3 platforms collectedLinkedIn, Meta and Google in one workspace
LinkedIn labeledMeta and Google collected, extraction pass not run
The blind spot

Competing globally against companies that outspend you in every market

At PingPong we competed with enterprises running paid programs in dozens of countries at once. For a performance marketer, knowing what those companies are doing is not optional. It sets your positioning, your budget split, and the markets you can realistically win.

The information was public and still unusable. A single competitor had hundreds of live creatives across LinkedIn, Meta and Google, in market after market. Opening an ad library gives you a scroll of cards with no country cut, no funnel read, and no way to see how the three platforms divide the work between them. I read forty cards by hand once and stopped, because forty cards out of several hundred is an anecdote.

Two views were missing and both mattered: what a competitor runs in one country, and how their channels coordinate across all of them.

01 · Collect Open three ad libraries

LinkedIn, Meta and Google each publish their own, in their own format, with no shared competitor record between them.

3 tabs, no export
02 · Read Scroll the cards

One creative at a time, in the order the library feels like showing them. No country cut, no funnel read, no way to sort by anything that matters.

~40 read by hand
03 · Record Retype it into a sheet

Message, offer, destination and market, keyed in by hand, with the categories invented differently every time somebody new does it.

an afternoon
04 · Conclude Stop, because 40 is an anecdote

A single competitor was running several hundred live creatives. Any read off the fraction you managed to log is a guess wearing a spreadsheet.

no defensible answer
40 of several hundred What one manual pass over a single competitor actually covered before it stopped being worth the afternoon. The information was public the whole time. What was missing was a way to read all of it at once.
Three options on the table

Ad-intel suites, a chatbot, and an afternoon of scrolling

Three options were on the table before I built anything. Each one was good at a question I was not asking.

OptionWhat it gaveWhere it brokeVerdict
Commercial ad-intel suites

Broad creative capture with format breakdowns and spend estimates, packaged for an enterprise buyer.

Priced for a team that already has a research function, uneven coverage outside the US, and it reports format rather than intent. Format tells you a rival runs video on Meta. Intent tells you Meta is carrying their conversion load.

Rejected
The platform ad libraries

The source of truth, free, current, and legitimate to read. Every live creative a competitor is running.

Built for disclosure rather than analysis. One card at a time, no country cut, no funnel read, and nothing that survives being closed.

Kept as input
Pasting ads into a chatbot

A sharp read on any single creative, instantly, with no setup and no cost worth counting.

No memory of the other three hundred. It answers what one card says, and the question was what the set does.

Rejected

All three read creatives one at a time, and strategy only exists in the aggregate.

Borrowed from data labeling

Label every unit, then let the aggregate speak

The idea came from Snorkel and programmatic data labeling. If you can label a corpus cheaply and consistently, the labels themselves become the dataset you reason over. An ad library is a corpus nobody had labeled.

So the pipeline works bottom up: a small model answers one narrow question at a time about one ad, and those answers add up into the picture of a competitor. Everything the tool claims at the top is traceable to labels at the bottom.

01 Every ad, labeled

Each creative and its landing page go to DeepSeek: funnel stage, offer type, audience, claim, proof used. Cheap enough to run on the whole set rather than a sample.

02 Placement and market

Labels roll up per placement and per country, which is where a real pattern first shows: the same brand runs a different funnel in Germany than in Singapore.

03 Platform strategy

With clean labels underneath, a stronger model reads one platform at a time and states the role it plays, backed by counts instead of impressions.

04 Cross-platform picture

The top layer compares the three and reports how they divide the funnel, what repeats everywhere, and where the gaps are.

Sources are the platforms' own transparency libraries, which exist so anyone can inspect what is running. I touch nothing private and estimate no spend.

Cost as a design input

A cheap model for every ad, an expensive one for the plan

Cost decides whether you label everything or a sample, and a sample is what makes competitive research wrong. Labeling runs on DeepSeek at a price that lets every creative through. Only the synthesis layers, where reasoning pays, run on a frontier model.

Each platform carries a quality gate, because coverage differs by source and a confident report over thin data is worse than no report. The workspace shows how much each source collected, how much it labeled, and where coverage is still short, so the analysis stays honest about its evidence.

The four questions

Four questions, asked today on the platform that is labeled

Side by side

Share of each platform's placements by funnel stage, offer and proof, with a marker on any 25-point divergence so the split is visible without reading numbers.

Who the creative speaks to

The audience each platform is written for, which usually gives the strategy away even though nobody states it.

What they claim

The recurring claims, ranked by how often they repeat. Repetition is the tell for what a competitor believes is working.

How they convert

Destination and offer: product page, report, trial, signup. Where each platform is asked to close and where it is only asked to warm.

A worked example on Stripe, on the platform that is labeled today: 5% of LinkedIn placements sit at conversion and 43% at awareness. The cross-platform view will read that row against Meta and Google, once their extraction passes are ungated. That single row is the channel strategy, and you would never see it scrolling the ad library.

adradar.hi-daniel.com
AdRadar competitor workspace for Stripe showing LinkedIn, Meta and Google ad cards with creative counts and quality gates
AdRadar side-by-side analytics comparing LinkedIn, Meta and Google placement shares by funnel stage, offer and proof
AdRadar platform roles view with stacked funnel bars per platform and written reads carrying evidence reference counts
The five modules

Every claim walks back down to the creatives it was counted from

I arranged the workspace so the strategy layer never starts from a blank prompt. Context grounds the labels, and the labels feed the pattern read that every response is written from. A quality check at the end says how much of it the evidence carries.

Every layer stays open for inspection. If a claim in the strategy report looks wrong, you can walk back down through the pattern that produced it to the individual creatives it was counted from, and read those in their original form.

01 Context

Company, category, products, buyers, markets and the competitive frame, written down before any ad is classified.

02 Ads

Public advertising records with creative, copy, active dates, markets, CTAs and destinations, searchable and linked to the original artifact.

03 Analytics

It counts every ad across theme, persona, pain, proof, offer, CTA, landing intent and funnel stage. This is where concentration becomes visible.

04 Strategy

It names the dominant play, funnel bias, proof system and weak spot, then lists the response options worth testing against them.

05 Quality check

It flags missing offer signals, thin landing context and low-confidence classifications before anyone trusts the strategy.

A shared taxonomy holds the layers together, so every ad becomes a comparable record instead of a paragraph of prose. Five groups carry it. Market (persona, industry, geography, pain point), message (theme, value promise, pillar, campaign topic), journey (funnel stage, offer type, CTA, landing intent), proof (quantified ROI, customer story, benchmark data, product detail) and creative (format, hook, visual system, destination). Each ad gets the same fields filled the same way, whichever library it came from. One taxonomy covers every team, so the same report goes to each of them without a rewrite.

What it bought

Today, one competitor record and a single lookup on the labeled platform

One competitor record now holds all three platforms, the labeled LinkedIn creatives, and the strategy read at each level. It turns "what is this company doing in this market" into a single lookup, and the answer cites the ads it came from.

What that buys for go-to-market is a positioning decision made against evidence: which claims are already crowded, which funnel stage a rival has left thin, and which market they have not bothered to enter properly yet.

The four workflows

Every workflow starts from a decision and works back to the evidence

I built each workflow around a decision, then the evidence it needs. These are the four the tool was designed around.

Campaign planning

Map the messages already occupying the category, read the offer and funnel structure behind them, then choose whether to challenge a crowded belief or enter a neglected one. Output: territory, counter-position, proof requirement, first hypothesis.

Market monitoring

Baseline a competitor, refresh the evidence set, and review the delta. A refresh matters when audience, message, offer, proof or funnel behavior moved, which is a much narrower alert than "they posted new creative".

Creative strategy

Pair format with campaign intent, name the category's proof conventions, then set the test boundary: what should feel familiar enough to read, and what has to be distinctive enough to matter.

Product marketing

Advertising shows the positions a competitor is actively paying to put in front of the market. Measure the repeated beliefs, audit the proof under each, and find the claims with heavy competition and weak substantiation.

The evidence contract

A strategy report should show where its certainty ends

Public advertising reveals campaign patterns. It says nothing about account economics or internal intent, and a tool that blurs the two leaves you with a report you cannot act on. So the report separates its three tiers on the page, and the quality gate refuses to publish a confident read over thin coverage.

Observed Copy, creative, CTA, destination, page type, offer, market and active dates. Collected from the platforms' own transparency libraries, which exist so anyone can inspect what is running.
Inferred Message hierarchy, funnel bias, proof strategy, dominant play and response hypothesis. Every one of these carries a count and a set of evidence references underneath it.
Unknown Spend, ROAS, targeting settings, conversions, private tests and internal decision logic. These stay out of the report rather than getting estimated into it.
What it runs on

Python at the bottom, a cheap model in the middle, an expensive one only at the top

I split the stack on cost. Labeling every ad on a frontier model would have priced out the whole-corpus pass, so Python does everything deterministic, the cheap tier takes the volume, and the frontier model only reads a corpus that arrives already structured.

Collection

Python logoPythonThe whole pipeline. No front-end framework, because nothing here is a page. Playwright logoPlaywrightDrives a real browser through the three transparency libraries. BeautifulSoupParses the captured markup into ad records. Meta Ad Library logoMeta Ad LibraryPublic source for Meta creative. Google Ads Transparency logoGoogle Ads TransparencyPublic source for search and display evidence.

Models

DeepSeek logoDeepSeek, cheap tierLabels every creative and landing page. The price per ad is low enough to label a full corpus in one pass. DeepSeek logoDeepSeek, reasoning tierReads one platform at a time and writes the strategy layer over the labels. Tesseract OCRLifts copy out of image creatives so they enter the same taxonomy as text ads.

Data and delivery

SQLite logoSQLiteLocal store while a competitor set is being built. Supabase logoSupabaseThe workspace database behind the hosted reports. Resend logoResendReport-ready and access notifications. Stripe logoStripeBilling for the hosted workspace. Vercel logoVercelHosts the workspace.

Want this kind of tooling on your team?

A rival's public ads, labeled one at a time, read back as traceable strategy.