moat8
Back
PR agency · Media analytics · AI infrastructure

How Outset PR uncovered the 60% of publications it used to miss

A PR agency's job doesn't end when a story goes live. It ends when they can prove how far that story traveled. For Outset PR that meant tracking every pickup, rewrite, and repost across the web by hand, one article at a time, and manual search surfaced only about 40% of them. We built Tailsearch, a parser that follows a story's digital trace across six search engines, verifies each match with AI, and screenshots the proof.

Research per article
40 min5 min
Republications caught vs manual
~40%100%
To parse 6,000 articles
~4 mo21 days
The Problem

Where the old process broke

Outset PR is an international PR agency in crypto and tech, running 200 to 400 placements a month for 25 to 40 active clients. The agency works on a simple principle: every campaign is backed by data, and every result is verified. That runs into a hard limit online, because one publication rarely stays in one outlet. A story from a major title spreads to aggregators, regional sites, and related-news blocks, sometimes under a changed headline, sometimes only for a while. Each of those mentions is part of the campaign's real reach, and Outset PR tracked that spread by hand, one article at a time. A single article took about an hour of an analyst's time, and a full report took up to three. Standard monitoring tools leave the gap open. Brand24 and Meltwater search brand mentions inside a closed list of sites. They miss a specific article's trace, they miss temporary placements that appear and vanish, and they miss partial-title matches. No tool on the market follows one article's digital footprint across the open web.

1 hourManual research per article
3 hoursPer full campaign report
200–400Placements tracked per month
What we built

Tailsearch, a republication tracker for PR campaigns

The engagement opened with a joint R&D phase. Outset PR wanted an honest read on whether full automation was realistic before committing to a build. It wasn't: some platforms stay unindexed, and chasing full coverage would have cost far more than it returned. moat8 recorded that finding plainly, and that clarity pointed to a sharper solution. Tailsearch automates the primary data collection that eats hours, and the analyst keeps final judgment on every result.

01 · Campaigns

Campaign-based batch processing

The analyst groups articles into a campaign with a name and a category, and can preload a list of articles as a table for batch processing.

campaigns
Add-a-campaign modal over the campaigns list
02 · Extraction

Automated article extraction

The analyst pastes a direct link and sets the publication date. Tailsearch reads the article and extracts its title, a short description, and the date.

add articles
Add-articles-for-processing modal with URL and date fields
03 · Queue

Queued multi-engine processing

Every submitted article enters a job queue that guarantees execution, retries failures, and respects each search engine's rate limits. The campaign list shows each job's live status, from processing to finished. Underneath, Tailsearch queries six search engines, including Google, Bing, DuckDuckGo, and Yandex, and reads up to four pages of results per engine, with a separate title-and-quote pass for exact matches.

job status
Campaign list showing live job status across articles
04 · Proof

Screenshot proof engine

Puppeteer captures a screenshot of every match, so each republication ships with its own evidence. The results view lists each site with its matched title, snippet, search engine, and every row carries its screenshot.

search results
Search results list, each match with screenshot and source engine
05 · Analytics

Campaign analytics rollup

Each campaign rolls up into live stats: domains count, min, average, and max similarity scores, and the top domains across every article in the group.

campaign statistics
Campaign rollup: domains count, similarities, and top domains
06 · Export

Ranked output and export

Tailsearch ranks every republication by match percentage, with a slider that sets the threshold. Analysts calibrate it to the complexity of each campaign, since long or loosely worded headlines change what a fair match looks like. They then export the full results as a CSV, download every screenshot in one ZIP, or save any single screenshot straight from its row.

set similarity
Set-similarity threshold slider over the ranked results
07 · Matching

AI semantic matching

Behind every result above, OpenAI compares each candidate page to the original by title, snippet, and description, so a real republication separates from a chance coincidence.

08 · Verification

Automated verification and dedup

The same matching core runs initial filtering, date verification, and duplicate protection before anything reaches the results view, so each match counts once.

Results

What changed after launch

Operational speed changed first. Tracking one article's spread dropped from an hour to five minutes, and full report assembly halved. That freed the analytical team for strategic work that tools can't replace. The team parsed 6,000 articles across 350 media platforms and built the Outset Media Index, a ranking with a proprietary distribution-quality score. By hand, that study would have taken four months of continuous analysis. With Tailsearch, it took 21 days. The build also turned a positioning line into fact. Outset PR has long called itself a data-driven agency, and the parser and the Index put verified numbers behind it. When the team shapes a media plan now, the client sees a quantified reason for every outlet, alongside the expert recommendation.

40 min5 min
Research per article (×8 faster)
~40%100%
Republications caught vs manual
~4 mo21 days
To parse 6,000 articles
328
Media ranked in the Index
The moat

Two years of judgment, now measurable

Any agency can subscribe to Brand24. Nobody can buy the two years of industry judgment that now sit behind every line of a 328-outlet ranking, scored on a parameter Outset PR built, verified, and keeps refining.

01

A proprietary index

The distribution-quality parameter was invented and verified inside Outset PR, proven against thousands of articles. It comes from no off-the-shelf tool, and it belongs to the client.

02

Article-level tracking no tool sells

Following one story's digital trace, including temporary placements, partial-title matches, and removed content, has no commercial equivalent. Monitoring tools search brand mentions in a fixed site list, so this capability stands alone.

03

A compounding record

The Outset Media Index carries historical data across 328 outlets, and the picture sharpens the longer the parser runs. A competitor starting today stays behind by the whole accumulated span.

04

Scale without headcount

Tailsearch removes the manual ceiling on coverage, so Outset PR extends to new markets and geographies while the team stays the same size.

Project details

Built with moat8

Co-built product, opened with a joint R&D phase. moat8 built the AI infrastructure behind Tailsearch and Outset PR built the Outset Media Index on top of it.

Phase 1 · R&D and feasibility

Assessed whether full automation was realistic before any build. The finding: full source coverage wasn't viable in reasonable time, so the scope moved to where the tool returns the most value.

Phase 2 · Parser build

Built article intake, six-engine search, semantic matching, verification, and the screenshot pipeline. Most of the effort went into prompt tuning, teaching the system to tell a real republication from a coincidence.

Phase 3 · Media Index

On top of the parser, Outset PR analyzed 6,000 articles across 350 platforms and built the Outset Media Index, 328 outlets scored on a proprietary distribution-quality parameter, in 21 days.

System components enabled

Campaign managementArticle intake and extractionSix-engine searchTitle-and-quote exact matchingAI semantic matchingDate verificationDuplicate protectionScreenshot captureCampaign analyticsRanked output with relevance threshold
Tech stack

What it runs on

A production stack chosen for reliable execution at volume and accurate matching.

Backend
Node.jsTypeScriptBullMQPrismaPuppeteerSearch APIParsing APIOpenAI

TypeScript gives type safety across the service. BullMQ guarantees every job runs and handles failures, retries, and search-engine rate limits. Puppeteer captures a screenshot of each match. Search API queries the different search engines, and Parsing API pulls the content of every page it finds. OpenAI judges how closely each page matches the original and detects the republications.

Frontend
ReactTypeScriptMantine

A base stack for the interface: React and TypeScript with Mantine for ready UI components.

LLM
PerplexityOpenAI GPT-4.1 mini

Perplexity enriches the found articles and surfaces republications beyond the other search paths. GPT-4.1 mini reads each candidate and works out whether it traces back to the original story.

Next step

If your analysts spend more time gathering data than judging it, let's talk