Skip to content
AgentSDR
Star

Enrichment tables

AI enrichment tables for your lead lists

Build a prospect list in a grid. Columns call an API, run a formula, ask your own model or pull from Apollo and 14 other providers, then the rows you pick become a campaign.

Q4 logistics · table 1Auto-run onAll cells complete
Company domainFull nameWork emailApolloEmployeesApolloPitch angleUse AIFitFormula
lumen-freight.exampleHannah Weiss[email protected]184Hiring two SDRs, onboarding costMid-market
brightloop.exampleRafael Costa[email protected]42New VP Sales rebuilding outboundSMB
kestrel.exampleAiko Tanaka[email protected]310Opening a second clinic regionMid-market
parcelly.exampleSamir Haddad[email protected]97Same-day delivery launchMid-market
ateliernord.exampleIngrid Solberg[email protected]18Wholesale channel is newSMB
5 rows selectedCreate campaign

Column types

AI columns, APIs, formulas and providers in one grid

Four kinds of column fill in data for you. Each can read the others, so a chain runs on its own: find an email, then use it.

Pick a provider action, map its inputs to your columns, tick the outputs you want. Each output becomes a column.

Provider
Apollo.io Find work email
Account
Lumen team key
Inputs
Full name ← Full name Domain ← Company domain
Outputs
Work emailEmail status

Result in the table

Work email

Running…

Click a cell to see its provider, outcome, latency and error.

Enrichment providers

Fifteen providers, on your own accounts

Connect a provider once from inside the table, map its inputs to your columns and tick the outputs you want.

  • Email and person lookup

    Find work emails and phones, enrich a profile, search people.

    • Apollo.io
    • Hunter
    • Snov.io
    • Findymail
    • FullEnrich
    • LeadMagic
    • ContactOut
    • RocketReach
    • Icypeas
    • Cleanlist
    • Lusha
  • Email verification

    Check an address before you send to it.

    • MillionVerifier
    • ZeroBounce
  • Company and traffic data

    Traffic, rank, technologies and search competitors for a domain.

    • Similarweb
    • Semrush

Apollo alone offers 15 actions, from finding a work email to enriching a company or adding a contact to an Apollo sequence. You can add several accounts per provider, one per client for example, and each column keeps its own choice. A column does not fall back to another provider: waterfall columns are not available yet.

Runs

Fills in while you keep working

Background runs

Auto-run, statuses and retries

Cells are filled by a background worker. With Auto-run on, a column starts for a row once every column it reads has a value, which is how a chain works without you pressing anything.
  • Save and run 10 rows to test before the whole table
  • Not run, Queued, Running, Waiting for provider, Completed or an error you can read
  • Up to 3 attempts per cell, 2 then 8 seconds apart; bad URLs and 4xx are not retried
Cell status

Work email · row 1

Work email · row 2, a flaky provider

  • Attempt 1Failed · 503 from provider
  • Attempt 2Failed · after a 2 s wait
  • Attempt 3Completed · after an 8 s wait

Only the final failure shows on the cell. A bad URL, a 4xx or a missing environment variable is not retried.

Start from a list

Import, paste or type your rows

Company Employees AI · Pitch angle
Lumen Freight51–200Hiring 2 SDRs — onboarding cost
Brightloop11–50New VP Sales, rebuilding outbound
Kestrel Health201–500Writing…
Parcelly…Queued
Atelier NordQueuedQueued
3 of 5 enriched
Create campaign from table

Columns that fetch the data you are missing

An enrichment table fills in cells as a list moves from names and domains to emails, company size and a pitch angle.

Three ways to add rows

Import
CSV, TSV, TXT, XLSX or XLS, up to 50,000 rows. A mapping screen lets you skip columns, and types such as email, URL, checkbox, number and date are guessed for you.
Paste
Paste straight into the grid, up to 1,000 rows and 100 new columns at a time.
Type
Edit any cell directly, or start from a blank workbook.

Workbooks hold several tables, live in folders and belong to your organization.

Then send

Turn the rows you pick into a campaign

Table to campaign

Select rows, map columns, launch

Choose Create campaign on the selected rows, pick Email or LinkedIn, and map campaign fields to your columns. People are created only after you confirm, and only the selected rows are enrolled.
  • Up to 5,000 rows into a campaign at a time
  • Unmapped columns are kept and become merge fields
  • On email campaigns, suppressed addresses are skipped and reported
Table · 4 rows selected
Actions → Create campaign
Create campaign from selected rows
Channel EmailLogistics heads Q4
EmailWork email

Unmapped columns are kept on the person and become merge fields.

4 people enrolled in the new campaign
Create
enrichment providers you can connect
15
rows in one table import
50,000
attempts per failed cell before it shows an error
3
per row, per credit or per seat from AgentSDR
$0

The details

What a table does for you

The parts that make a grid safe to run against real lists and real accounts.

  • Run what you choose

    Run selected rows, the first 10 on a page, all rows, or one cell from its play button.
  • Skips blank inputs

    A row missing a required input is not queued and never reaches the provider.
  • Lookups across tables

    LOOKUP reads a value from another table by a matching column.
  • Secrets stay on the server

    Provider keys are encrypted. HTTP columns name an environment variable instead of holding a key.
  • Several accounts per provider

    Each enrichment column keeps its own account, so a client's key stays with the client's table.
  • Cell details

    Click a cell to see its provider, outcome, latency, run time and error.
  • Workbooks and folders

    Several tables per workbook, filed in folders, scoped to your organization.
  • Pick the columns that matter

    An action runs once per row however many outputs you tick, and each output is its own column.
  • Export

    Export selected rows as CSV, or delete them from the same menu.

Get started

From a bare list to a campaign

  1. 01

    Add rows

    Import a CSV or XLSX, paste into the grid or start blank.
  2. 02

    Add columns

    Choose Add enrichment, Use AI, HTTP API or Formula and map their inputs.
  3. 03

    Test on 10 rows

    Save and run 10 rows, check the cells, then run the rest.
  4. 04

    Create the campaign

    Select the rows, map your columns and enrol them.

FAQ

Questions, answered

What are AI enrichment tables?

A spreadsheet-style workspace for building a prospect list before you send anything. You import or paste rows, then add columns that fetch data: enrichment providers, an AI prompt, an HTTP call or a formula. When the list looks right you create a campaign from the rows you pick.

What is an AI column?

A column that sends a prompt to a language model for every row, using values from your other columns as {{column}} tokens. You choose a use case (web research, image generation, or creating and modifying content), a model, the output fields you want, and optional examples. Each output field becomes its own column. It runs on your organization's own OpenRouter key, so AgentSDR adds no markup and you pay your model provider directly.

Which enrichment providers are supported?

Fifteen: Apollo.io, Hunter, Snov.io, Findymail, FullEnrich, LeadMagic, ContactOut, RocketReach, Icypeas, Cleanlist and Lusha for emails, phones and profiles; MillionVerifier and ZeroBounce for email verification; Similarweb and Semrush for company and traffic data. You connect your own account with each, and credentials are verified with a live call and stored encrypted.

Is there a waterfall between providers?

Not yet. A column uses the account you chose and does not fall back to another provider. Waterfall columns appear in the menu but are disabled today. FullEnrich runs a provider waterfall on its own side, and you can chain columns yourself by adding a second column that reads the first one's result.

Can a column call my own API?

Yes. The HTTP API column sends GET, POST, PUT or PATCH requests with {{column}} tokens in the URL, headers and body, and stores the whole response or a dot path into it such as data.employees. Secrets are not pasted into headers: you name a server environment variable and it is sent as a Bearer token. A 4xx response other than 429 is treated as a configuration mistake and is not retried.

Are formulas safe to run?

Formula columns evaluate one expression per row in a QuickJS sandbox compiled to WebAssembly, with no network, filesystem or process access, a one second limit per evaluation and a memory cap. They support JavaScript, FormulaJS, lodash and moment, plus LOOKUP to read from another table.

What does enrichment cost?

AgentSDR is free and open source. Providers and your model charge you on your own accounts, and AgentSDR does not convert credits to money or show a per-run cost. Cells with a blank required input are skipped before they reach the provider, and Save and run 10 rows lets you test a column before running the whole table.

Enrich on your own keys

Clone the repo, connect the providers and models you already pay for, and build your first table. No credits to resell and no per-row pricing.