Work · AI Sales Intelligence · ThinkingAI · Senior Marketing Manager · piloted at Ai4, 2026

The list was dead. I made it rankable

Ai4 handed us ~11,700 attendees with no emails, no LinkedIn, no way to tell buyers from competitors. I built a pipeline that labels every company with a cheap LLM, enriches the priority set through Apollo, and then writes one email per person against that person's own product, sent as a normal cadence.

5,407 → 944companies in, real targets out
157 contactsstartup-with-app cut, email + LinkedIn
~56% coverageApollo's DB ceiling, stated as-is
What you get from an event platform

Ai4 handed us a roster we could not contact

The event API deliberately withholds email, LinkedIn and ICP fields, so what you actually hold is thousands of rows of name, title and company mashed together. Every team that targets a list hits some version of this.

  • The raw list is unusable. The rows carry name, title and company, and nothing you can act on. Recon also showed scraping was low-ROI and against the platform's terms.
  • You pick by gut. Which of 5,407 companies fit, and in what order, is normally one person eyeballing a spreadsheet.
  • You gamble on paid tools. Getting a real contact for a named person at a named company is hit-or-miss across vendors.
  • You rebuild outreach by hand. The cadence, the LinkedIn touch, the booked meeting. None of it connects back to the list without manual re-entry.
The pipeline · acquire → prioritize → enrich → deliver → hand off

The cheap model does the volume, and I keep the judgment

The cheap model labeled at volume, the API attached the contacts, and the judgment calls stayed with me.

Step 01 · Acquire & parse

The directory was readable, so I read all of it

The event runs an attendee portal for booking meetings with other attendees, and as a registered attendee I could see everyone in it, more than ten thousand people. What I could not do was work that list by hand at the browsing speed the portal allows. So I had an agent write a bot that drove my own logged-in session through the directory, opened each attendee in turn, recorded what the page showed, and saved it locally. The API exposed none of these fields.

From there it is a parsing problem. A script splits on the platform's markup and DeepSeek untangles the run-together title and company strings into clean columns. Out the other side: ~11,700 attendees across 5,407 companies, then every person joined to their company, so the same data reads two ways. Per person: name, title, employer. Per company: who they sent, how many, and at what level.

Permission came first. The portal was already putting those people in front of me, on a ticket I had paid for. I read the portal's own terms and found no clause against reading the directory this way. The open web is a different matter: those sites forbid scraping in their own terms, so that route was closed before this one started. The bot drove a real browser session the way I would have driven it by hand, and randomized pacing held it under any rate a person could reach by clicking. It recorded only the fields the portal had already shown me.

I paid to attend, so I read the directory at machine speed
Acquireportal directory → structured table01
Sourcelogged-in attendee portal
Methodbot walks the directory
Attendees parsed11,700
Companies extracted5,407
Views builtper person + per company
Contact fields from API0
Step 02 · Prioritize with a cheap LLM

DeepSeek labels every account

This is the core move. DeepSeek labels every company against a has-a-mobile-app gate (the prerequisite to be our buyer) and assigns a role: target, channel partner, or competitor. Where it can't be sure, it writes “unknown” instead of guessing.

The same pass tags the rest of what a rep would want to filter on: industry, whether the company ships an application, whether that application is mobile, Fortune 500 versus startup. By the time anyone flew out, the whole event was already sorted along the axes we actually sell on.

Cheap model at 5,407-company scale is what makes “see the targets” affordable
Classifyhas-app gate + role + tags02
Companies labeled5,407
Real targets found944
Tagsindustry · app · mobile
TagsFortune 500 vs startup
Uncertain accountsunknown
Step 03 · Enrich via Apollo

Only the priority set

I enrich only what passes the gate. Apollo's bulk match, reached through its MCP endpoint, takes name plus company and returns work email plus LinkedIn. Of the tools I tested, it was the only one that would take a bare name plus company. Apollo matched about 56%. That is the ceiling I observed, and I state it as-is.

Two DeepSeek tracks run beside it, because contact details alone give you nobody to talk about. One track works the company: what kind of business it is, what it actually sells, any recent AI news worth referencing. The other goes to the app stores and pulls the product itself: the icon, the listing basics, the product shots. It also takes the reviews on both sides, the praise and the complaints. That last one matters most. A complaint in a public review is a problem the company already knows it has, which makes it the honest opening line for a first email.

157 startup-with-app contacts matched with email + LinkedIn, each carrying company and app context into the next step
EnrichApollo, plus two context tracks03
Apollo MCPemail + LinkedIn
Contacts matched157
Coverage · DB ceiling~56%
Track A · companybusiness · recent AI news
Track B · app storeicon · shots · listing
Track B · reviewspositive and negative
Step 04 · Deliver as intelligence

A clickable report

I shipped it as a clickable report. Click a company to see who from it is in the room; each enriched attendee shows LinkedIn and work email, an envelope badge marks companies with contacts, and every category exports to CSV in one click.

Export columns: first / last / company / title / email / LinkedIn
Deliverclickable report on the hub04
Per-company viewwho's in the room
Contact badge
Export1-click CSV
Step 05 · Hand to outreach

One email written per person, at cadence scale

A normal sequencing tool gives you personalization tokens. You can drop in a first name and a company name, and everyone receiving it can tell. I had already built the SDR outreach automation for our inbound motion, carrying over how we ran cadences at PingPong, so the sending machinery existed. What was missing was copy worth sending.

By this point every contact arrived with real material attached: what the company does, what its app is, what its users praise and complain about. So I added a small agent workflow on the end. I run three passes on every draft: write it against that person's own product, strip the AI tells, then read it back as an SDR manager would, checking that the claim is fair and the ask is reasonable. Then the API pushes each finished email back into Apollo, matched to its own recipient, and the cadence sends them as a normal sequence.

We ran 150 as a test before the show. Reply and meeting figures stay with the company, so I am not characterizing the result.

Intelligence half and outreach half both ran for Ai4. I ordered it on purpose: no copy engine until I had something true to say
Per-person copywrite → de-AI → review → send05
Inputperson + company + app context
Writer agentone email per contact
De-AI passstrip the tells
ReviewerSDR manager lens
DeliveryAPI → Apollo cadence
Test batch150 sends, pre-show
Result

The Ai4 funnel, count by count

Coverage is the number that looks weak, and it's the one I'd defend hardest, because it's the match rate Apollo returned on this list, and a different list would return a different rate.

Hunt list

Ranked by delegation size, a proxy for how seriously each company took the event: CVS Health 21 · Navy Federal 15 · Thrivent 13 · U.S. Bank 11.

At the booth, and after

Two days on the floor produced 64 conversations, people who stopped and went deep. The same treatment is queued for the 787 targets we have not worked yet, each getting a message written against its own product.

What I'm not claiming

Reply and meeting figures for the 150-send pilot stay internal, so I am leaving the outbound number out on purpose. And ~56% contact coverage is Apollo's database ceiling; no tool or model gets to 100% on a name list, and pretending otherwise would mean inventing emails.

The funnel · Ai4 pilot
Attendees parsed~11,700
Companies extracted5,407
Real targets after the gate944
Contacts enriched · startup-with-app cut157
Per-person emails sent · pilot150
In-depth booth conversations · 2 days64
DeepSeek logoDeepSeek Apollo LinkedIn
Decisions I'd make again · six

Where I spent money, and where I kept the judgment

01 Cheap-LLM labeling at scale

Labeling 5,407 companies rewards consistency over price. DeepSeek does the labeling; the expensive judgment stays with me.

02 “Unknown” over guessing

When the model can't tell whether a company has an app, it says so. A wrong “yes” wastes an enrichment credit and a salesperson's morning; an honest “unknown” costs nothing.

03 Enrich only the priority set

Every Apollo match spends a credit. Running Apollo against all 5,407 companies would burn budget on competitors and no-fits, so only accounts that pass the gate get enriched, starting with the startup-with-app cut.

04 Apollo, after testing the field

The other enrichment vendors failed the recon: one matches only on company and job title, another needs an email as its primary key. Neither can enrich a list of names, and no LLM can invent a real email. I ruled out scraping the open web: low ROI, and against those sites' terms.

05 A report, built for the booth

Nobody at a booth opens a 5,000-row CSV. Click a company, see who's in the room, export just the slice you need.

06 Cost-tiered, human on the loop

DeepSeek takes the volume, Apollo takes the one thing only it can do, and I take the accounts worth a call.

He does what he says he will do because his word is guaranteed. This is a unique and powerful combination of skills and experience.
Victor Kao Victor KaoVP of BD
Reward Networks

Sitting on a list nobody works?

Ai4 was one instance. The same acquire → prioritize → enrich → hand-off motion works on any BD or sales list.