Work · AI Sales Intelligence · 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

The roster looked like an asset and behaved like a wall

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. No contacts, no separators, no ICP fields. Recon also showed scraping was low-ROI and against the platform's terms.
  • Prioritization is gut feel. Which of 5,407 companies fit, and in what order, is normally one person eyeballing a spreadsheet.
  • Enrichment is a paid-tool lottery. Getting a real contact for a named person at a named company is hit-or-miss across vendors.
  • Outreach gets rebuilt 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 labels at volume, the API attaches 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.

Access I already had as a paying attendee, read at machine speed instead of by hand
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 at all, 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 at all
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

Only prioritized accounts get enriched. Apollo's bulk match, reached through its MCP endpoint, takes name plus company and returns work email plus LinkedIn. After testing the field, it's the only tool that does name-list enrichment at all. Coverage runs to the database ceiling, about 56%, which is expected and stated 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, and 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

The output ships as a clickable report. Click a company to see who from it is actually 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. A writer agent drafts one email against that specific person and their specific product. A de-AI pass strips the tells. A reviewer agent standing in as the SDR manager checks 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. The response was well beyond what I expected from cold outbound, though the specific numbers stay internal. The lesson I would carry anywhere: a generic cadence gets ignored now, and a message that could only have been written for one reader still gets answered.

Intelligence half and outreach half both ran for Ai4. The ordering was deliberate: no copy engine until there was 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
Decisions I'd make again

Six calls behind the pipeline

01 Cheap-LLM labeling at scale

Classification at 5,407-company volume needs a consistent model rather than an expensive one. 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

Enrichment is metered. 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, no LLM can invent a real email, and scraping was ruled out: low ROI, against ToS.

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

Cheap model for volume, API for what only it can do, human for the calls that matter. The pipeline proposes; I decide.

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 true ceiling of the enrichment database.

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 real conversations, people who stopped and went deep rather than took a sticker. The same treatment is queued for the roughly 1,000 companies we have yet to work, each getting a message written against its own product instead of a merge field.

What I'm not claiming

The 150-send pilot performed well past my expectations, and I am keeping the reply and meeting figures internal, so treat the outbound result here as unquantified 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 Apollo HubSpot Salesloft LinkedIn
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
More work

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.