Skip to main content
Saving a prospect costs 2 credits, while finding their work email costs 20 to 50. This workflow saves a broad list without enrichment, has an AI smart column judge every row against your ideal customer profile (ICP), and then enriches and contacts only the rows that pass. If a third of a 2,000-row list qualifies, you pay for email enrichment on about 670 contacts instead of 2,000, and your campaign reaches only people who fit.

Before you start

Step by step

1

Save a broad list without enrichment

Cast a wide net with filters you are confident in, and save the matches without enrichment at 2 credits a row.
Poll GET /business/lists/{listId} until completionStatus is complete. Filter values must come from the accepted vocabulary, see Build a list from search.
2

Add an ICP smart column and test it on a sample

Ask one question about each row and run it on the first 100 rows only.
Keep both ids. The prompt does three things that matter here: it asks one question, it names the subject (“this person’s company”), and it demands a one-word answer. Row filters match text anywhere in a cell and ignore case, so one-word answers keep a “no” row from ever matching “yes”.
3

Check the sample before you scale

Poll the run until its status is completed or partially_completed:
Then read a few rows and look at each answer under columnValues, keyed by the column id:
If the answers are wrong or wordy, fix the prompt now with PATCH /business/lists/{listId}/smart-columns/{columnId}. A prompt edit re-answers every row the column has already answered, so it is cheapest while that is only the sample.
4

Answer the rest of the list

Check the price first. GET /business/lists/{listId}/smart-columns/{columnId} returns the column’s creditsPerRow. Multiply it by the rows still unanswered.Then re-run with new_only, which answers only rows that have never been answered, so the 100 sample rows are not billed twice:
Poll the new jobId the same way. The status endpoint reports creditsUsed while the run is still going.
5

Count the rows that qualify

Filter the rows on the column’s answer. filters is URL-encoded JSON, and customColumns is keyed by column id, not name:
pagination.totalRecords is the number of qualified rows.
6

Copy the qualified rows into their own list

POST /business/lists/save-to-list takes the same filter and copies only the matching rows:
Poll the new list until it is complete. The copy adds the same contacts rather than creating new ones, so nothing is duplicated. The “ICP fit” answers stay on the raw list.
7

Enrich only the qualified contacts

Poll GET /business/jobs/{jobId} with the jobId from the 202 until status is completed, then read metrics.totalWithProfessionalEmail on GET /business/lists/{listId}. Do not wait on the list’s completionStatus here: it stays complete until the job starts.
Prefer to keep one list? Skip the copy and send the same filters straight to POST /business/lists/{listId}/enrich on the raw list. Enrichment then runs only on the rows that match.
8

Launch outreach on the qualified list

Create a campaign on the qualified list as in steps 5 to 9 of Build an AI outbound campaign from a prompt. Set isDynamic: true if you will keep adding qualified rows, so the campaign enrolls them as they arrive.

Keep qualifying as the list grows

Saving into the raw list again with the same listName appends to it. Each time you do, repeat three calls:
  1. POST .../smart-columns/{columnId}/rerun with mode: "new_only" answers only the new rows.
  2. POST /business/lists/save-to-list into the qualified list (listId), adding "otherLists": { "exclude": ["Logistics ops leaders - qualified"] } to the filter so only newly qualified rows are copied.
  3. POST /business/lists/{listId}/enrich on the qualified list. Contacts that already have an email are not charged again.
A dynamic campaign on the qualified list enrolls the new contacts within about 30 minutes.

What it costs

For a 2,000-row list where 671 rows qualify: Qualifying saves credits when the column’s creditsPerRow is lower than the enrichment you avoid on the rows that fail. A standard column costs 20 a row, the same as a work email from Fuse’s own data, so the saving is largest when emails come from partner providers (50) or you also want phones (200). Either way, the campaign reaches only people who fit. Use standard rather than deep_research (100 a row) for yes or no questions about public facts.

Troubleshooting

Run the whole workflow

Do it from Claude

With the Fuse MCP server connected, work through it in two requests so you can check the sample first:
In my list “Logistics ops leaders - raw”, add a smart column called “ICP fit” that answers “Does this person’s company run its own fleet of delivery vehicles?” with exactly one word, yes or no. Run it on the first 100 rows and show me ten answers.
Run “ICP fit” on the rest of the list, copy every row that says yes into a list called “Logistics ops leaders - qualified”, and find work emails for that list.
The assistant uses the smart column, list and enrichment tools.

Smart columns

Engines, prompts, re-runs, provenance and spend controls.

Working with lists

Enrichment modes, copying rows and the row filter.

Credits & billing

What every operation costs.

AI campaign from a prompt

Turn the qualified list into an approved AI campaign.