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

AI agent prospect list building and verification

AI agent prospect list building and verification are two jobs, and the second one is the product. Collection writes every prospect into a fixed schema carrying a stable external identifier, so duplicates are removed exactly rather than by fuzzy name matching. Verification then drops every row with no reachable contact path. On this studio's own pipeline, 5,231 collected rows became 145.

Observed on the studio's own production host on 27 July 2026, across four segments: 2,399 United States, 1,986 expansion, 1,437 United Kingdom, 1,270 Australia. Client pipelines are under NDA and no individual row is published.

Measured on our own production host

Measured on our own production host — observed on Our own production host — a 19-agent Hermes fleet on one Fedora 42 VPS (4 vCPU / 15 GiB), surveyed read-only over SSH, 27 July 2026
Rows in master pipelineDeduplicated on a stable external identifier; the segment files total 7,092 rows5,231
Market segmentsUnited States, an expansion set, United Kingdom, Australia4
Contact-verifiedA row with no reachable, verified contact path is not counted as a lead145
Collection cadenceA discovery job at 05:00 dispatched by the fleet orchestrator, plus a weekly sourcing trackdaily
United States segment2,399 rows
Expansion segment1,986 rows
United Kingdom segment1,437 rows
Australia segment1,270 rows

Source: Our own production host — a 19-agent Hermes fleet on one Fedora 42 VPS (4 vCPU / 15 GiB), surveyed read-only over SSH. Observed .Row counts read off the pipeline files. They show what was collected and what survived verification — not meetings booked or revenue, which this host does not measure.

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. The scoring layer that sits on top of a pipeline shaped like this is covered inbuilding a custom AI agent for lead qualification, the same separation of collection from verification runs thecontent publishing pipeline, andhow long a production agent takes to build covers the calendar for standing one up.

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.

Talk to the studio

One message · reply within one business day