TLDR: Marcus owns a commercial cleaning company in Columbus. He needed 40-50 new sales conversations per month to hit growth targets. He was getting 5. Manual prospecting took 15+ minutes per contact, and he never had time to do it consistently. We built an agent that finds prospects, researches their companies, and drafts personalized emails - 47 contacts processed in 90 seconds. His response rate jumped from 2% to 11%. The system costs about $0.03 per prospect.

6:47 AM in a Parking Lot

Marcus is sitting in his truck outside a medical office building, scrolling LinkedIn before his first site visit of the day.

He's supposed to be finding new prospects. That's what he told himself he'd do every morning this week. Instead, he's copying names into a spreadsheet he'll forget about by Thursday. Again.

This isn't why he started the business.

He's good at cleaning buildings. Good at managing crews. Good at keeping clients happy - 94% retention rate, which he's genuinely proud of. But the pipeline? That's the part that keeps him up at night.

He's tried things:

A lead vendor sold him a list of 500 "verified" facility managers. 60% bounce rate. Zero responses from the ones that didn't bounce.

He hired a part-time BD person. She quit after three months because "there was no system to follow."

He tried "doing LinkedIn" himself. Posted twice. Got nothing. Felt stupid.

The math doesn't work. He needs 40-50 new conversations per month to hit his growth targets. He's getting maybe 8. On a good month.

The Company

23 employees: 18 cleaning staff, 3 supervisors, 1 office manager, and Marcus running everything else.

$1.8M in revenue. Targeting $2.5M.

They handle office buildings, medical facilities, and industrial spaces across Columbus metro and the surrounding counties. The business Marcus bought four years ago from the retiring founder.

Operations are solid. The problem has never been keeping clients. It's finding new ones.

His target customer: facility managers and office managers at companies with 50-500 employees. Buildings big enough to need professional cleaning, small enough that they're not locked into five-year national contracts.

What he'd tried before us:

A "marketing agency" that promised leads. Delivered nothing but invoices for six months.

A ZoomInfo subscription. Too expensive for the data quality, and he couldn't figure out how to use it properly anyway.

Networking events. BNI, chamber mixers, that kind of thing. Time-consuming. Low conversion. He hated the forced small talk.

His office manager occasionally "doing outreach." Which meant sporadic bursts of activity followed by months of nothing.

The core issue: prospecting was always something that happened "when there's time."

There was never time.

The Math of Manual Prospecting

When Marcus or his office manager actually sat down to prospect, here's what it looked like:

Open LinkedIn. Search "facility manager Columbus Ohio." Scroll through results.

Find someone who looks relevant. Click their profile. Check their company size. Is it 50-500 employees? Hard to tell sometimes.

If it looks promising, find the company website. Look for contact info. Usually buried three clicks deep or hidden entirely.

If no email visible, try to guess ([email protected]) or use a finder tool. Which sometimes works. Often doesn't.

Open a new email. Write something. Stare at the screen. Delete it. Write something else that sounds less desperate.

Send. Move to the next name. Try to remember who you already contacted last month.

Time per prospect: 12-18 minutes. That's if you're focused. If you're also answering texts from your site supervisors about a broken vacuum, it's more like 25.

Prospects per hour: 3-5.

Hours available per week: Maybe 3 on the calendar. Realistically 1, because something always comes up.

Prospects generated per week: 5-15.

Conversion to conversation: ~8%.

New conversations per month: 3-5.

He needed 40-50. He was getting one-tenth of that.

The hidden costs went deeper than time:

Inconsistency: Some weeks zero prospecting. Some weeks a panicked burst. No rhythm meant no momentum.

Quality decay: By prospect #8, the emails got lazy. "I noticed your company might need cleaning services..." became the default. He knew it was bad. He sent it anyway because he was tired.

No follow-up system: He'd send an email, never track it, forget who he'd contacted, sometimes email the same person twice months later. Embarrassing.

Opportunity cost: Every hour Marcus spent copying names into spreadsheets was an hour not spent on operations, client relationships, or actually closing the deals he did get.

The bottleneck wasn't effort. It was architecture.

What We Built

The lead generation agent has six stages. Each one replaced something Marcus was doing manually.

Stage 1: ICP Definition

Marcus defines his ideal customer profile once. Job titles: facility manager, office manager, operations director. Company size: 50-500 employees. Location: Columbus metro. Industries: healthcare, professional services, manufacturing.

This becomes the filter for all prospecting. He can adjust it anytime - say, if he wants to target a new industry - without rebuilding anything.

Stage 2: Database Search

Apollo.io query runs against their database of 275M+ contacts. Returns verified contacts matching the ICP criteria.

Each contact comes with: name, title, company, verified email, LinkedIn URL, company size, industry.

The search takes about 4 seconds for 50 prospects.

Stage 3: Company Context Extraction

For each prospect, the agent pulls their company's website. A language model extracts: what they do, how big they are, their positioning, any relevant details.

This is the personalization fuel. Not "Hi [First Name]." Actual business context that makes outreach feel human.

Takes about 3 seconds per company.

Stage 4: Contact Verification

Cross-references Apollo data with scraped website info. Validates that the person still works there by comparing LinkedIn to company site.

Flags stale data for human review rather than auto-sending to bad addresses.

Catches roughly 12% of contacts that would have bounced. That's 12% of wasted effort eliminated before it happens.

Stage 5: Personalized Email Generation

This is where most "automation" falls apart. Generic mail merge isn't personalization. It's just fast spam.

The agent generates cold emails using actual company context. Not "Hi [First Name], I noticed your company is in the [Industry] space..."

An actual example from Marcus's campaign:

"I saw you're managing facilities for a medical office group with 6 locations. After-hours access for cleaning crews is usually a headache with healthcare compliance—curious how you're handling credentialing and tracking currently."

That email references their specific situation. It asks a question only someone who understood their business would ask. It took 5 seconds to generate.

Subject lines get generated separately for testing different approaches.

Stage 6: CRM Push + Email Draft

Contact automatically added to HubSpot with all enrichment data attached. Email draft created in Gmail, ready for human review.

No auto-send. Marcus reviews every email before it goes out.

This is the human checkpoint. Quality control without the manual labor.

Why This Is Harder Than It Looks

The easy part is finding contacts. Apollo does that. Anyone can buy access.

The hard part is generating emails that don't sound like a robot wrote them.

We spent three weeks tuning the email generation prompt. The first versions were technically "personalized" but still felt generic. They mentioned the company name and industry. That's not personalization. That's mail merge with extra steps.

The breakthrough was feeding in the full website context, not just company name and industry. When the model knows that a company positions itself as "boutique" and emphasizes "white-glove service," it can reference that language. When it knows they have 6 locations across central Ohio, it can ask about multi-site coordination challenges.

The other hard part: handling edge cases gracefully.

What if there's no website? What if the contact has no name in the database? What if the company is too small or too big for the ICP? What if the website is in a language the model doesn't handle well?

Each exception required a decision tree that routes to the right behavior instead of failing silently or sending garbage.

The tech stack:

  • MindStudio for orchestration and workflow

  • Apollo.io for contact data and enrichment

  • Gemini Flash for extraction and email generation

  • HubSpot for CRM

  • Gmail for email drafts

Cost per prospect: about $0.03. Mostly Apollo search credits.

If you want to understand what agents actually do and don't do well, we've written about that separately.

The Numbers

Before:

  • 5-15 prospects identified per week

  • 12-18 minutes per prospect

  • Generic emails with 2% response rate

  • No follow-up system

  • 3-5 new conversations per month

After:

  • 200+ prospects processed per week

  • 90 seconds for a batch of 47

  • Personalized emails with 11% response rate

  • Every contact tracked in HubSpot with full context

  • 35-45 new conversations per month

The math shift: Marcus went from needing 15 hours per week of prospecting time (which he didn't have) to needing 2 hours per week reviewing and sending emails (which he does have).

He reviews a batch of 15-20 drafts each morning. Takes about 25 minutes. Sends the ones that look good. Tweaks a few that need adjustment. Flags any that the agent got wrong.

The human impact surprised him.

"The first week, I thought the emails were too good. I kept checking if they were actually going to the right people. They were. The agent knew more about the prospect's company than I would have learned in 20 minutes of research."

The unexpected benefit: Marcus actually enjoys outreach now. When the hard part—research, data entry, first draft—is handled, the human part—relationship building, following up, closing—becomes the focus.

That's what he's good at. That's what he should be doing.

The Cost Reality

Building a lead generation agent like this isn't free. Here's the honest breakdown.

Build cost: This fell in the $4,000-$7,000 range. The complexity was moderate - straightforward integrations with Apollo and HubSpot, but significant work on the email generation prompts.

Monthly operating cost: Around $350. That covers API costs, monitoring, and support. It scales with volume - if Marcus doubled his prospecting, API costs would increase.

Cost per prospect: $0.03. At 200 prospects per week, that's about $25/week in variable costs.

ROI math: Marcus was spending effectively zero on prospecting before because he wasn't doing it consistently. Now he's spending roughly $4,500 in year one (build plus operating) to generate 400+ new conversations annually. His close rate on conversations is around 15%. Average contract value is $18,000/year.

Even conservative math: 400 conversations × 15% close rate = 60 new clients × $18,000 = $1.08M in new annual revenue. Against $4,500 in agent costs.

For the full breakdown on how agent economics work, see our pricing deep-dive.

What This Means For You

If your business depends on outbound prospecting and you're doing it manually, you're competing against companies that aren't.

The question isn't whether to automate prospecting. It's whether your automation is actually personal or just fast spam.

You might recognize this pattern:

You know who your ideal customer is but struggle to find them consistently.

Your outreach is sporadic because prospecting always loses to urgent tasks.

You've tried buying lists but the data quality was garbage.

You've hired for BD but the person couldn't build a system - they just followed instructions when you gave them.

The hard part isn't finding contacts. It's making contact worth having.

Next Steps

Want to see 25 more agent architectures like this one? Download "Unstuck"—real blueprints showing different industries, different bottlenecks, different solutions.

Already know prospecting is your bottleneck? Book a Bottleneck Audit. 30 minutes, no pitch. We'll map your current process and show you exactly where automation would—and wouldn't—help.

by WB
for the AdAI Ed. Team

Keep Reading