The single-source ceiling
Every data vendor has a coverage ceiling. One is strong on US SaaS, weak in Europe. Another indexes enterprises but misses startups younger than a funding announcement. Whatever vendor you pick, some fraction of your list — often 30–40% — comes back blank. Those blanks aren’t random: they cluster exactly in the niches where your competitors aren’t looking, which makes them the most valuable rows to fill.
How the waterfall works
A waterfall queries sources in sequence, stopping at the first match:
- Source A (cheap, broad) answers 60% of records. Done — those rows never touch another source.
- Source B (different coverage) picks up records A missed.
- Source C (expensive or slow, e.g. an AI research agent reading the live web) handles the stubborn tail.
- Explicit miss. Anything no source can answer is marked not found — a real outcome you can filter on, not a silent blank.
Ordering the chain
- Cheap and broad first. Free or flat-rate APIs handle the easy majority so paid lookups only see the hard cases.
- Deep and expensive last. Agent-based research costs the most per row — reserve it for records that earned it.
- Freshness-critical steps live where staleness hurts. A cached firmographic is fine at step one; a pricing check belongs with a live-web step.
What to demand from a waterfall implementation
- Per-step visibility — which source answered each cell, so you can audit and rebalance the chain.
- Honest misses — “not found” as a first-class status. If your tool can’t say “nothing matched,” it will eventually make something up.
- Cost accounting per cell — you can’t tune a chain you can’t price.
- Safe re-runs — re-running the sheet should fill only the gaps, not re-bill the rows that already matched.
In Liquid Rows, a waterfall is a column with steps: each step is an HTTP lookup, AI call, or research agent, and the cell records which step answered along with its sources and cost. Engine fallbacks apply inside agent search too — if a search engine rejects a query or runs out of credits mid-batch, the next engine takes over automatically.
Frequently asked questions
What is waterfall enrichment?
Querying multiple data sources in sequence per record, stopping at the first match — so coverage becomes the union of all sources instead of the ceiling of one.
Why not query every source at once?
Parallel queries cost the sum of all sources on every record. A waterfall only pays later sources for records earlier ones missed.
How much does it improve match rates?
Three independent 60%-coverage sources chained leave ~6% unmatched versus 40% for one source. Overlap shrinks the gain in practice, but stacking always beats a single vendor.
What happens when nothing matches?
The record should be explicitly marked “not found” so you know which rows need a different approach — never silently blank, never guessed.