I Swapped Apollo for Instantly. The Real Problems Were Somewhere Else.
Replacing Apollo in my AI lead pipeline took a few API calls. Reading the first live run found a wrong sheriff, a 12% bounce rate and failed lookups that looked like normal results.

K9 Signal Radar is the workflow that finds working dog programs for DogBase: a new K9 unit in a local paper, a donated dog, a county procurement notice. When I built it I wrote about why it's a pipeline and not an agent.
It used Apollo to find the right person at each agency. I wanted off Apollo, so I sat down to swap it for Instantly, which I already send from. I thought the job was replacing six API calls. It was, and that turned out to be the quick part.
The swap was the easy part
The workflow has 61 steps, and Apollo only lived in the middle of it. The news sources, the AI scoring and the weekly digest didn't change. Instantly has no company records, so the n8n table that stops duplicates became the only memory of who I've already checked. Searching for people is free. Buying a verified email costs one or two credits, and only when it finds one.
The shape stayed the same: the AI does a small, fixed job, with plain code around it. That's what made the swap possible. Every step I replaced had clear inputs and outputs.
Then I read the first live run
The first run pulled in 177 items. 35 reached the AI, 10 were new agencies, 7 got a person picked, and 1 contact made it to outreach. The funnel worked and still produced almost nothing. The report showed me why.
- The wrong sheriff. The story was about Jefferson County, Missouri. The workflow picked the sheriff of Jefferson County, Pennsylvania. No email was found, so nothing was sent. That was luck. US agencies now have to match on state.
- The wrong rank. My title filter blocked "Deputy Sheriff" and let "Sheriff Deputy" through. It also ignored lieutenants and captains, so a small department with no K9 title on file came back empty.
- An existing customer. One agency on my retry list already uses DogBase. Nothing in the workflow knew that, so it nearly got a cold email. Customers are now excluded.
- A false "no email". Instantly rejects a second import within a minute. The workflow read that as "no verified email found" and moved on. At least two lookups died that way.
None of these threw an error. Every run was marked successful. I only found them because each line of the report says why an item did or didn't become a contact, and I read the lines.
The number I should have checked first
While adding cleanup I pulled the sending stats for my existing campaigns. 91 of the roughly 741 people I'd emailed had bounced. That's 12%, when the usual safe level is under 2 to 3%. High bounces can push everything you send toward spam, including the emails that are fine.
The 206 contacts still waiting to be emailed had never been verified, so I checked them for about 52 credits. 36 were invalid. They would have bounced too. Deleting the dead addresses freed 127 slots on a plan that allows 1,000 contacts.
Finding the email is the hard part now
Police and sheriff's offices don't show up well in lead databases. So far about 3 in 7 real lookups have found an email. I also tried Icypeas directly on eight people with its free credits. It found two, both rated only "probable", and none of the five Instantly had missed. That's a tiny sample, so I'm not calling it either way. Its search by job title was useful, though. It named commanders at agencies where I had nobody.
The radar is good at knowing who to contact and when. It's still bad at reaching them, and I'd rather have a short list of the right people than a long list of guesses.
Then I moved the AI to Claude
Radar scored signals with DeepSeek, which only ever sees a headline and a short snippet. It pulled 0 names and 0 emails from 17 prospects, because there are almost none in that much text.
So I tested Claude on the same 35 signals. On DeepSeek's prompt, Claude Haiku agreed on 26 and rejected real K9 stories. With a prompt written for Claude, Sonnet 5.5 agreed on 33, and scoring moved over. It still isn't perfect: it passed on one donation story I'd have followed up.
The bigger change was giving Claude web search. Across the same 10 agencies, it named a K9-specific person at 6, where Instantly managed 1. It found only one personal email, so that part is still hard. But knowing the name of the canine sergeant is worth more than a verified address for the wrong captain.
What runs every day now
- Signals from US and UK news, plus SAM.gov procurement notices.
- At most five people bought per run, stopping before the contact limit.
- Claude searches the web for the K9 contact at each new agency.
- A sequence whose wording and links change for police, search and rescue, detection and service dog teams.
- Bounced and unsubscribed contacts removed every day.
- Leads who finish with no reply move to a shorter second sequence after 60 days.
- A daily email saying what happened and why.
What I don't know yet
Whether any of this gets replies. The first emails from the new version are only just going out, so I can tell you what it cost and what broke, but not whether it sells anything. The full build is in the K9 Signal Radar case study.
If you're building something like this, read your reports before you trust your dashboard. A green run only means nothing crashed.
Building something with AI?
Fractional CTO, AI agents, or a rescue for an AI-built app.