nvNeuralVerge

Clay Alternative: Waterfall Enrichment Without the Spreadsheet

A clay alternative for teams whose enrichment runs in code or an agent: pay-per-lookup waterfall steps over REST or MCP, and where Clay still wins.

By the NeuralVerge team · 13 min read · Updated October 2026

▸On this page

Clay is a spreadsheet for enrichment: rows of people or companies, columns that each call a data provider, and a waterfall that tries the next provider when the first one misses. A clay alternative for teams whose enrichment already runs in code, a queue or an AI agent is to call each lookup as a source over REST or MCP and pay per lookup. The waterfall becomes a few lines of your own logic or a few tool calls. For many teams, Clay is still the right answer.

The short version

  • —Verdict: Clay wins when people need to build, watch and edit enrichment in a table. Per-lookup sources win when the caller is code or an AI agent and the flow is repeatable.
  • —Who it is for: engineers and agent builders who find a table is the wrong place for a signup hook, a nightly CRM job or a research agent. Sales ops teams who do not write code should look hard at Clay first.
  • —What it costs on NeuralVerge: Email finder is 10 points per address found, $10 per 1,000, with misses not billed. Email validation is 1 point per check, $1 per 1,000. Points come from your monthly plan allowance, listed on the pricing page.
  • —Not either/or: NeuralVerge's documentation lists a Clay integration.

The table below sums up the difference. The Clay column is as publicly described, so check its current pages before you rely on it.

QuestionClayNeuralVerge
Where the waterfall livesIn a table, as chained columnsIn your code or your agent
Who operates itPeople, watching rows fillA script, a queue worker or an agent
Where the data comes fromThe providers it connects toEach request resolved live against public information
BillingIts own credit system, check current termsPoints per lookup, misses not billed on the finder
Best atExploring and editing lists by handRepeatable flows with no one watching

How Clay works, and where it wins

In Clay, as publicly described, you build a table. Each column is an action: look up a company, find an email, pull a profile, run an AI prompt. A waterfall column chains several providers so the first hit wins. You watch it fill row by row, edit it by hand, and hand the result to a CRM or a sequencer. The product is the workspace, and the data comes from the providers it connects to.

Where Clay is strong

A fair comparison starts with the real strengths.

  • —The table is a good interface for non-engineers. A sales ops person can build an enrichment flow, look at every row, fix one by hand and re-run it, without opening a code editor. A script gives you none of that visibility unless you build it.
  • —It is built around the waterfall idea. Chaining several providers behind one column is the headline feature. You do not write retry and fallback code.
  • —It connects many providers under one account. If you already use several data vendors, Clay can put them in a single workspace rather than leaving you to integrate each one separately. None of those is something a bare API gives you. If the people doing the work are not engineers, and they want to see and touch the data as it is built, a table beats a script.

Where it fits less well

A signup hook, a nightly job or a queue worker has no use for a spreadsheet; it needs a function call and a result it can branch on. An AI agent that needs one email address as a step should call a tool, not drive a table.

How NeuralVerge handles a waterfall

NeuralVerge exposes each lookup as a source. Email finder takes a first name, last name and company domain. Email validation takes an address. Others take a phone number or a LinkedIn profile. You call one, read the result, and decide what to call next. Because every source shares one key and one response envelope, with a session id, a readable summary and a machine object carrying total_points, the fallback is an if statement rather than a configured column.

Neither product is a single database you query. Clay routes to providers; NeuralVerge resolves each request live against public information. So the question is where the logic should live, who needs to see it, and how you want to be billed.

The waterfall, step by step

  1. —Start from what you know. For a work email the inputs are a first name, last name and the company's domain. Generic mailbox providers are not company domains and will not resolve a specific person.
  2. —Make the cheapest call that could succeed. For a named person at a company with its own mail domain, that is Email finder. It returns a found flag, so your code does not have to test whether a string is empty.
  3. —Branch on the result. If found is false the call cost nothing, and you move to the next step: a different source, or a research request that reads the person's public footprint. If found is true, you continue.
  4. —Validate before you trust. A high confidence rating means the address is well corroborated. It does not mean the mailbox will accept mail today. Email validation checks deliverability, flags catch-all domains and costs 1 point, so it is cheap insurance before a large send.
  5. —Write it back and keep the trail. Each response carries a session id, so any value traces back to its call.

In code, the whole step can be this small. This block is illustrative pseudocode, not a captured response, and the helper names are placeholders.

# Illustrative pseudocode: one work-email waterfall step.
result = run_email_finder(domain=domain, first_name=first, last_name=last)

if result["machine"]["found"]:
    check = run_email_validation(email=result["machine"]["email"])
    # decide on send / hold based on the validation verdict
else:
    # fall through to the next step
    ...

Other steps you can chain

Email finder is only the first step in a typical flow. These sources come from the source pages, at the time of writing.

SourceInputPointsPer 1,000Billing
Email finderFirst name, last name, company domain10$10Only when an address is found
Email validationOne email address1$11 point per check
Email enrichmentOne email address10$10Only on a match
Phone enrichmentA phone number in international format20$20Only on a match
Phone enrichment USA US phone number100$100Only successful lookups

Email enrichment starts from an address and returns the person behind it. Phone enrichment US is the most expensive source in the catalog, so screen a list first. When none of these resolves a person, an AI research request is the usual last step, and it runs over REST only.

REST and MCP

Every source above is available over REST and as an MCP tool on the hosted server, so a fixed pipeline can use REST and an agent can call the same sources as tools. AI research is the exception and runs over REST only. Tool names use underscores and REST paths use hyphens; setup is in the MCP server for Claude guide.

Take an illustrative case: a team has a contact at Acme Oy in Finland, a first and last name and the company's domain, and wants a work address. This request is taken from the Email finder source page. The parameters are placeholders, and all three are required.

curl -X POST https://api.neuralverge.ai/functions/v1/run-email-finder \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "acme.com",
    "first_name": "Jane",
    "last_name": "Doe"
  }'

The same lookup as an MCP tool call uses the tool run_email_finder.

{
  "tool": "run_email_finder",
  "arguments": {
    "domain": "acme.com",
    "first_name": "Jane",
    "last_name": "Doe"
  }
}

What comes back is the shape below. This is a real captured response from the source page, for a well-known public name rather than the placeholders above, copied as it appears there.

{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "kind": "email_finder",
  "domain": "openai.com",
  "full_name": "Sam Altman",
  "first_name": "Sam",
  "last_name": "Altman",
  "email": "sam@openai.com",
  "human": "# Email finder\n\n- **First Name:** Sam\n- **Last Name:** Altman\n- **Company Domain:** openai.com\n- **Found:** Yes\n- **Email:** sam@openai.com\n- **Confidence:** high\n- **Provider:** enrich.so",
  "machine": {
    "firstName": "Sam",
    "lastName": "Altman",
    "domain": "openai.com",
    "found": true,
    "email": "sam@openai.com",
    "confidence": "high",
    "provider": "enrich.so",
    "message": null
  },
  "total_points": 10
}

A few things to read from it:

  • —machine.found is the field to branch on. The source page says to use it rather than testing whether email is empty.
  • —machine.confidence is "high" here. It describes how strongly the address is corroborated, not whether the mailbox is live.
  • —total_points is 10: the cost of this one found address, which is $10 per 1,000.

The next step: validate

The next call in the waterfall checks the address that came back. This is the captured response from the Email validation source page for the same address.

{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "kind": "email_validation",
  "email": "sam@openai.com",
  "human": "# Email validation\n\n- **Email:** sam@openai.com\n- **Result:** valid\n- **Message:** Mailbox exists and accepts mail.\n- **Catch-all:** No\n- **Provider:** google_workspace\n- **Confidence:** high",
  "machine": {
    "email": "sam@openai.com",
    "result": "valid",
    "message": "Mailbox exists and accepts mail.",
    "isCatchAll": false,
    "provider": "google_workspace",
    "confidence": "high"
  },
  "total_points": 1
}

Read machine.isCatchAll before you trust a clean result: a catch-all domain accepts any address, so a valid verdict there proves less. For parameters and errors, see docs.neuralverge.ai.

Two teams, two answers

Two illustrative teams, both working with Finnish companies like Acme Oy.

Team one is a three-person sales ops group that builds lists every week, changes the logic often and writes no code. They want to see every row and rerun a column. A table is the right tool; a per-lookup source would mean building the interface Clay already is.

Team two is a product team with a signup form. When a new account arrives with a work email, they want to find a second contact at the same domain, validate it and write it to the CRM in the same job. Nobody looks at a table. Email finder and Email validation called from code, with a research request as the fallback, fit that shape.

Teams often start as team one and become team two. That is a good sign, not a failure of the first choice.

Moving a flow out of a table

If a flow has stopped changing, the move is mostly transcription. Write down each column in order and turn each waterfall column into a call with a branch after it. Pick the NeuralVerge source for each step and note its point cost. Run the same 100 or so rows through both versions and compare found rates, bounce rates after validation and cost per usable result. Keep the table for exploration, and log the session id with each write-back so a questioned value can be traced to its call.

Using both

You do not have to choose. NeuralVerge's documentation lists a Clay integration, described as using NeuralVerge as an enrichment provider inside Clay tables, alongside the rest of your waterfall. If you like Clay's interface and want one more provider in the chain, that route keeps the table and adds a source to it. Check the documentation for how to set it up, and Clay's own terms for how an outside provider call is billed on its side.

Cost and limits

NeuralVerge pricing

The per-step figures are in the table above, from the source pages. Points are drawn from your monthly plan allowance. A found and validated address costs 11 points, and a miss on the finder costs nothing, so a run across 1,000 names costs only the hits. Do not assume every empty result is free on every source: billing differs, so read the source page for the step you add.

Clay pricing

We are not going to quote Clay's prices, because its plans and credit rules change. As publicly described, Clay bills through its own credit system. When you compare, find out how a miss is treated, how each waterfall step adds up, and what seats cost separately from lookups.

Limits on the NeuralVerge side

  • —Not every person resolves. Small companies and generic domains are the hardest, and very small companies often have no discoverable pattern at all.
  • —High confidence is not a delivery guarantee. Validate before a large send.
  • —There is no table. If someone needs to review thousands of rows by hand, you build that view yourself.
  • —Personal data rules still apply. The source page carries a compliance note, and you stay responsible for how you use contact data.

How to decide

Check these against your own data rather than a vendor's general claims.

  1. —Who operates the workflow? If they are not engineers and need to see rows, weigh Clay heavily. If the caller is code or an agent, weigh per-lookup sources.
  2. —What does a miss cost? Ask both sides. Free misses change the economics of a long list.
  3. —Run the same sample through both. Use real names and domains from your own pipeline and compare the share that resolve and the cost per usable result.
  4. —Check deliverability, not just coverage. A found address that bounces is not a hit. Validate a sample and count.
  5. —Count the hidden costs. Seats, retries, maintenance of tables or scripts, and the time to rebuild a flow when a provider changes.
  6. —Check freshness. Is a result a lookup made now, or a stored record?
  7. —Check the exit. Can you export tables, logic and results if you switch?
  8. —Match the use case. Signup routing, nightly CRM gap-filling, agent-driven prospecting, list cleaning before a send and account research all fit per-lookup enrichment.
  9. —Read the compliance notes. Contact data is personal data, and the rules apply to you either way.
  10. —Plan a combined setup. If the answer is both, confirm the integration covers your case before you commit.

Frequently asked questions

Is NeuralVerge a full replacement for Clay?

No. Clay is a workspace where people build and watch enrichment workflows in a table. NeuralVerge is a set of pay-per-lookup sources you call from code or from an AI agent. If your team lives in the table, Clay does a job NeuralVerge does not try to do. If your workflow already lives in code, a queue or an agent, the sources fit there directly.

Can I use NeuralVerge inside Clay instead of choosing one?

Possibly. NeuralVerge's documentation lists Clay as an integration, described as using NeuralVerge as an enrichment provider inside Clay tables alongside the rest of a waterfall. Check the documentation for the current setup steps, and check Clay's own terms for how calls to an outside provider are billed on its side.

What does a work-email lookup cost on NeuralVerge?

The Email finder source costs 10 points per address found, which is $10 per 1,000 lookups, and a miss is not billed. Email validation costs 1 point per check, which is $1 per 1,000. Points come from your monthly plan allowance.

How do I build a waterfall without Clay?

Call the sources in the order you want and branch on the response. For example, call Email finder, check the found flag, validate the address if one came back, and only then fall through to a second step such as an AI research request. The fallback logic is a few lines in your own code or a few tool calls in an agent.

Is the MCP route available for Email finder?

Yes. Email finder is available over REST and as the MCP tool run_email_finder, so an agent can call it directly.

Which other sources can sit in a waterfall?

Email enrichment turns an email address into the person behind it for 10 points, and Phone enrichment does the same from a phone number for 20 points. Both charge only on a match. Phone enrichment US costs 100 points per number, so screen a list before you run it. AI research is a fallback step that is reachable over REST only.

How should I compare the two on cost?

Run the same sample of names and domains through both and compare the cost per usable result, not the headline rate. Count seats, credits spent on misses, retries, and the time someone spends maintaining tables. Check Clay's current pricing page for its terms, since they change.

About NeuralVerge

Give your agents structured, cited, real-world data from 300+ sources and the open web — through one API or MCP server.

Data Sources on the NeuralVerge blog.