Case study · our own production host

5,231 rows across four markets — and why only 145 were worth contacting

Everyone can scrape a list. The engineering is in what you throw away. Our lead agent assembles a structured pipeline across the US, UK and Australia, then narrows it by roughly 97%.

Get my free blueprint
5,231
rows in master pipeline
4
market segments
145
contact-verified
daily
collection cadence

Read directly off the host on . No estimates.

The number that matters is the small one

A lead-generation agent that produces 5,000 rows is trivial to build and nearly worthless. The rows are unqualified, half are duplicates, and the contact data is missing or stale. Handing that to a salesperson is handing them a week of manual triage.

Our pipeline holds 5,231 rows in the master file. The number we actually act on is 145 — the subset that reached contact-verified. That is roughly a97% reduction, and it is the entire product. The scraping is commodity; the filtering is the work.

The schema: structured from the first write

Every row lands in a fixed schema rather than as free text, which is what makes downstream filtering and deduplication possible at all:

id · name · category · website · phone · address
country · rating · review_count · place_id · plus_code

Two of those fields do more work than the rest. place_id is a stable external identifier, which is what lets the agent deduplicate across overlapping collection runs instead of fuzzy-matching business names. And rating with review_count give a cheap, objective qualification signal before any human or model looks at the row — a business with substantial review volume is a different prospect from one with none.

Market segmentation

SegmentRows
United States2,399
Expansion set1,986
United Kingdom1,437
Australia1,270
Master (deduplicated)5,231
Contact-verified145

The segment files total 7,092 rows while the master holds 5,231 — so the master is not a concatenation. Roughly 1,861 rows were removed as overlap between segments. That is theplace_id field earning its place in the schema.

The three country segments map to the markets we actually serve, which matters more than it sounds: a pipeline segmented by market can be worked on local business hours with locally appropriate messaging, instead of being one undifferentiated list.

How it runs

Collection is scheduled, not manual. A discovery job runs daily at 05:00, dispatched by the fleet's orchestrator into the lead agent, so the pipeline grows without anyone starting it. A separate weekly job on Monday mornings handles a different sourcing track.

The agent's own mandate is written in terms of the end state rather than the activity:"the one who turns the open internet into a clean, ranked, defensible pipeline of people worth talking to." The operative word is defensible — every row should survive the question "why is this person on the list?"

Why the funnel collapses by 97%

Working backwards through the drop-off, because this is the part most lead-gen tooling hides:

A vendor selling you 5,231 leads and a system that hands you 145 are describing the same raw collection. The difference is whether the filtering happened before or after it reached a human.

What this case study does not prove

What we would carry into your build

Three decisions transfer to any lead engine. Write into a fixed schema from the first collection, because you cannot filter free text. Carry a stable external identifier so deduplication is exact rather than fuzzy. And define "lead" as contact-verified rather than collected, so the number you report is the number someone can act on.

Judge a lead agent by the size of its output only after you know what it discarded.

Questions

How many leads does an AI lead generation agent actually produce?

The raw number is the wrong metric. Our pipeline holds 5,231 deduplicated rows across four market segments, of which 145 reached contact-verified — roughly a 97% reduction. Collecting thousands of rows is commodity work; the value is in the filtering, because unfiltered rows just move triage onto a salesperson.

How do you deduplicate scraped lead data reliably?

Carry a stable external identifier in the schema rather than fuzzy-matching business names. Our rows store a place_id, which makes deduplication exact across overlapping collection runs and market segments. In our pipeline that removed about 1,861 rows — the segment files total 7,092 while the deduplicated master holds 5,231.

What should a lead record contain for an agent to qualify it?

A fixed schema, written from the first collection: identifier, name, category, website, phone, address, country, rating, review count, and a stable external ID. Rating and review count give an objective qualification signal before any model looks at the row, and the fixed shape is what makes downstream filtering possible at all — you cannot filter free text.

Can a lead generation agent run without supervision?

Collection can. Ours runs a discovery job daily at 05:00 dispatched by the fleet orchestrator, plus a weekly sourcing track, so the pipeline grows without anyone starting it. What we would not automate unsupervised is the outreach itself — qualification and contact verification gate what ever reaches a person.

Amit Kumar

Founder of I Am Agent Man. Builds and runs production AI agents on Hermes, OpenClaw, and MCP — self-hosted, model-agnostic, with persistent memory and hard cost ceilings.

Want a pipeline you can defend?

Tell us who you sell to. We'll scope the collection, the qualification, and the verification path — free, before any invoice.

Goes straight to hello@iamagentman.com — we read every message ourselves. Prefer to answer three questions instead?Build your blueprint.

Get my agent blueprint — free

No retainer to start · reply within 24 hours