Decide which enrichment result wins in a waterfall
Resolves provider disagreements in your enrichment waterfall with explicit arbitration logic: verification over popularity, recency over rank, and a hard ban on blended values. Each field gets one winner (or an honest NONE), a source, and confidence — turning 'which vendor do we trust' from a vibe into a rule.
You are a data-arbitration function running inside an enrichment waterfall. Multiple providers have returned values for the same field on the same record — they disagree, overlap, or came back empty — and your job is to pick the single value most likely to be correct, with a stated confidence. You are conservative: a wrong 'verified' value poisons everything downstream, while an honest empty just triggers the next fallback.
You will be given: the field being resolved (for example email, employee count, industry, or phone), the candidate values with the provider each came from, and any verification metadata provided (validation status, last-seen dates, catch-all flags).
Arbitration rules:
- Verification beats source count: one SMTP-validated email outranks three unverified agreements.
- Recency beats seniority: a value with a recent last-seen date outranks an older one, when dates are provided.
- For emails: a validated non-catch-all wins; a catch-all pattern match is medium confidence at best; role addresses (info@, sales@) lose to any personal address.
- For numeric fields like employee count: values within 20% of each other corroborate — pick the most recent or middle value; wildly divergent values without metadata to break the tie mean low confidence.
- Formatting is not evidence. A neatly formatted wrong value is still wrong.
- Never average, blend, or invent a compromise value. The winner must be one of the provided candidates, verbatim.
OUTPUT CONTRACT — follow exactly:
Return a single JSON object:
{"winner": "<one candidate value verbatim, or NONE>", "source": "<the provider that supplied the winner, or empty string>", "confidence": "<high | medium | low>", "reason": "<under 15 words>"}
- Return ONLY the JSON. No markdown fences, no commentary.
- If no candidates are provided, or every candidate fails the rules above, return winner NONE with empty source and low confidence.
- NONE is a respectable answer. It routes the row to the next enrichment step; a guessed winner routes it to a bounce.How to use it
- 1
Copy the prompt into Claude, ChatGPT, or any LLM — or into a Clay AI column placed after your provider columns.
- 2
In Clay, map the field name plus each provider's result column (and validation columns where you have them) as the candidate inputs.
- 3
Test against 30 records where you know ground truth — tune the arbitration rules, not individual outputs, when it misjudges.
- 4
Gate sends on confidence: high proceeds, medium gets a verification step, NONE and low trigger the next waterfall source.
Best practices
Log winner-by-source over time; if one provider wins under 10% of contests you're paying for a source the arbitration has already voted off the island.
Add your own domain knowledge to the rules — for example 'provider X overcounts employees at agencies' — instead of correcting rows by hand.
Never let a medium-confidence email into a high-volume send without validation; the rules rank candidates, they don't replace an SMTP check.
Example: what this looks like in practice
A RevOps lead runs three email providers in a Clay waterfall; they disagree on 18% of 7,000 contacts. This prompt arbitrates each contested row: validated personal addresses win, catch-alls drop to medium, and 340 rows return NONE where every candidate was a role address or failed validation. The NONE rows route to a fourth, more expensive provider instead of the sequencer. Bounce rate on the resulting send lands at 1.1%, down from 4.3% the previous quarter when 'first provider wins' was the rule — and the winner-by-source log shows one provider winning 6% of contests, funding its replacement.
Best fit
This prompt is one gear in a bigger machine. We orchestrate 20+ tools into outbound systems our clients own — and guarantee the results.
Apply for a Pilot Spot → →Frequently asked questions
Waterfall enrichment queries multiple data providers in sequence to maximize coverage — but providers overlap and disagree, so coverage without arbitration means silently keeping whichever value arrived first. Decision logic makes the choice explicit: verification status, recency, and field-specific rules pick a winner, and honest failures route to the next source instead of your sequencer.
More personalization at scale (clay & claygents) prompts
Generate a cold email first line from scraped research data
The workhorse of AI-personalized outbound: converts whatever research your enrichment waterfall produced into one 12–22-word observation-led first line per row. The swap-test rule and fact-invention ban are what separate lines that read researched from the AI slop prospects now delete on sight.
Turn a Claygent website scrape into a personalized one-liner
Produces a sub-25-word, website-specific opening line for every row in a Clay table — no human in the loop. The output contract forces plain text only and a NOT_FOUND fallback, so unreachable sites and thin homepages return a filterable sentinel instead of a hallucinated compliment that ends up in a prospect's inbox.
Analyze a pricing page for sales-relevant intelligence
Extracts a structured pricing profile from any pricing page: model, tier count, exact displayed prices, free-offer type, and a one-line read on their sales motion. At scale it segments prospect lists by how companies charge — which predicts budget, buying process, and which of your angles will land.