{ case study 01 }

Competitor Intelligence

Name a competitor's domain and eight agents read the whole company: positioning, pricing, SEO, content. Then every gap is ranked into a plan you can act on. Every claim links back to a page the crawler actually saw.

role
design · build · deploy
type
multi-agent system
runtime
Modal
status
● live, on demand
live run one competitor domain, start to finished report

{ the build }

One job,
scoped tight.

01

Problem

Competitor research is a day of tab-juggling that goes stale the moment it's finished. Someone reads a pricing page, skims a blog, guesses at the SEO position, and writes it into a deck nobody re-runs next quarter.

Handing that to a language model makes it fast and makes it worse. Ask a model about a competitor's pricing and it will answer confidently, in the right format, with a number it never actually found. The output looks exactly like research. That failure mode was clear from the start, and the whole system is designed around preventing it.

02

Approach

Split the company into surfaces and give each one a specialist. Eight agents, each reading a single dimension, all writing into one shared nine-section report, so no agent is asked to hold an entire competitor in its head at once.

Then the rule that makes it trustworthy: the pipeline enforces the evidence gate, so the model never gets a vote on it. A section ships with two or more citations from pages the crawler actually fetched, or it returns an explicit insufficient-data marker. Asking a model nicely to cite its sources is a suggestion. Refusing to render a section without them is a constraint.


{ how it runs }

Domain in,
ranked plan out.

Four stages. The interesting one is the third, where most of these systems quietly fail.

01

Crawl

The competitor's site is fetched page by page and kept with its source URL attached. Nothing downstream ever sees a fact without knowing which page it came from, and that provenance is what the evidence gate checks against later.

Firecrawl Scraping URL provenance

02

Eight agents

One specialist per surface (positioning, pricing, SEO, content and the rest), each reading only the pages relevant to its dimension. Narrow scope per agent means narrow, checkable claims instead of one model improvising a whole company profile.

Multi-agent Structured extraction Model routing

03

Evidence gate

Every claim is checked against the crawl before it reaches the report. Two or more citations from pages actually fetched, or the section returns insufficient data and says so. An honest gap is a usable result; an invented price is not.

Citation check Pipeline-level rule Insufficient-data marker

04

Rank & ship

Surviving findings are assembled into nine report sections and every gap is ranked into a prioritized plan. Deployed on Modal and triggered on demand, so a fresh pass is a domain name rather than another week of someone's time.

Modal Gap ranking On-demand runs


{ what it produces }

Numbers
that hold up.

8 specialist agents
9 report sections
2+ citations per gap
0 uncited claims shipped

{ more work }