Try it
Copy the code ↓- Data source
- Decision schema
- Model inference
- Structured result
2 Decision schema 3 typed questions
enrich_gatechoicekeepdropreviewicp_fitscoreout_of_icpweaksolidstrongis_junk_or_duplicatenoulprobability 0–1
3 Model inference typesafe/jev-1.13
Waiting for a run.
4 Structured result
Raw JSON
Run the demo to see the JSON answers, the highlighted pick and the final action.
FLATKEY_API_KEY and run.curl -sS https://router.flatkey.ai/api/alpha/decisions \
-H "Authorization: Bearer $FLATKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev-1.13",
"state": "ICP: VP/Director of Sales or RevOps at B2B SaaS, 50–500 employees, US/Canada, buying outbound tooling.\nLead: Maya Chen — Director of Revenue Operations at Northline Analytics (Series B, ~180 employees, San Francisco). Public LinkedIn only; no work email or direct dial in our CRM. Source: conference attendee list. Not enriched yet.\nCampaign: book demos for a people-search + enrichment agent.\nTask: enrich_gate (keep / drop / review), icp_fit, is_junk_or_duplicate.",
"questions": {
"enrich_gate": {
"type": "choice",
"instructions": "Should this lead be sent to paid waterfall enrichment (Apollo, Clay, People Data Labs, Hunter, ContactOut, Ploid)? Prefer keep when the person clearly matches the ICP and enrichment is likely to unlock outreach; drop when they are out of ICP, duplicate, role-less, or clearly not worth a paid lookup; review when signals conflict or the record is too thin to decide.",
"criteria": {
"keep": "Matches ICP and is worth a paid enrich call; send into the waterfall",
"drop": "Out of ICP, junk, duplicate, or not worth paying for enrichment",
"review": "Signals conflict or the record is too thin; a human or richer free signal should decide before spending"
}
},
"icp_fit": {
"type": "score",
"instructions": "How well does this lead match the stated ideal customer profile (title, seniority, company size/industry, geography)?",
"criteria": [
"out_of_icp",
"weak",
"solid",
"strong"
]
},
"is_junk_or_duplicate": {
"type": "noul",
"instructions": "This record looks like junk, a duplicate, a generic role mailbox, or already has enough contact data that paid enrichment would not add value."
}
}
}'// Node.js 18+ (built-in fetch). Run: FLATKEY_API_KEY=... node jev.mjs
const body = {
"model": "typesafe/jev-1.13",
"state": "ICP: VP/Director of Sales or RevOps at B2B SaaS, 50–500 employees, US/Canada, buying outbound tooling.\nLead: Maya Chen — Director of Revenue Operations at Northline Analytics (Series B, ~180 employees, San Francisco). Public LinkedIn only; no work email or direct dial in our CRM. Source: conference attendee list. Not enriched yet.\nCampaign: book demos for a people-search + enrichment agent.\nTask: enrich_gate (keep / drop / review), icp_fit, is_junk_or_duplicate.",
"questions": {
"enrich_gate": {
"type": "choice",
"instructions": "Should this lead be sent to paid waterfall enrichment (Apollo, Clay, People Data Labs, Hunter, ContactOut, Ploid)? Prefer keep when the person clearly matches the ICP and enrichment is likely to unlock outreach; drop when they are out of ICP, duplicate, role-less, or clearly not worth a paid lookup; review when signals conflict or the record is too thin to decide.",
"criteria": {
"keep": "Matches ICP and is worth a paid enrich call; send into the waterfall",
"drop": "Out of ICP, junk, duplicate, or not worth paying for enrichment",
"review": "Signals conflict or the record is too thin; a human or richer free signal should decide before spending"
}
},
"icp_fit": {
"type": "score",
"instructions": "How well does this lead match the stated ideal customer profile (title, seniority, company size/industry, geography)?",
"criteria": [
"out_of_icp",
"weak",
"solid",
"strong"
]
},
"is_junk_or_duplicate": {
"type": "noul",
"instructions": "This record looks like junk, a duplicate, a generic role mailbox, or already has enough contact data that paid enrichment would not add value."
}
}
};
const res = await fetch("https://router.flatkey.ai/api/alpha/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.FLATKEY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
if (!res.ok) throw new Error(`Jev request failed: ${res.status} ${await res.text()}`);
const { answers, usage } = await res.json();
console.log(JSON.stringify(answers, null, 2), usage);# Python 3.8+ (pip install requests). Run: FLATKEY_API_KEY=... python jev.py
import json, os, requests
body = json.loads(r"""{
"model": "typesafe/jev-1.13",
"state": "ICP: VP/Director of Sales or RevOps at B2B SaaS, 50–500 employees, US/Canada, buying outbound tooling.\nLead: Maya Chen — Director of Revenue Operations at Northline Analytics (Series B, ~180 employees, San Francisco). Public LinkedIn only; no work email or direct dial in our CRM. Source: conference attendee list. Not enriched yet.\nCampaign: book demos for a people-search + enrichment agent.\nTask: enrich_gate (keep / drop / review), icp_fit, is_junk_or_duplicate.",
"questions": {
"enrich_gate": {
"type": "choice",
"instructions": "Should this lead be sent to paid waterfall enrichment (Apollo, Clay, People Data Labs, Hunter, ContactOut, Ploid)? Prefer keep when the person clearly matches the ICP and enrichment is likely to unlock outreach; drop when they are out of ICP, duplicate, role-less, or clearly not worth a paid lookup; review when signals conflict or the record is too thin to decide.",
"criteria": {
"keep": "Matches ICP and is worth a paid enrich call; send into the waterfall",
"drop": "Out of ICP, junk, duplicate, or not worth paying for enrichment",
"review": "Signals conflict or the record is too thin; a human or richer free signal should decide before spending"
}
},
"icp_fit": {
"type": "score",
"instructions": "How well does this lead match the stated ideal customer profile (title, seniority, company size/industry, geography)?",
"criteria": [
"out_of_icp",
"weak",
"solid",
"strong"
]
},
"is_junk_or_duplicate": {
"type": "noul",
"instructions": "This record looks like junk, a duplicate, a generic role mailbox, or already has enough contact data that paid enrichment would not add value."
}
}
}""")
res = requests.post(
"https://router.flatkey.ai/api/alpha/decisions",
headers={"Authorization": f"Bearer {os.environ['FLATKEY_API_KEY']}"},
json=body,
timeout=60,
)
res.raise_for_status()
data = res.json()
print(json.dumps(data["answers"], indent=2), data.get("usage"))
No Flatkey key yet? Get one for Jev 1.13 →
About this use case

Who / when
Audience
- GTM and sales-ops teams building people-search agents
- founders tired of $2,000/mo enrichment subscriptions for mostly dead leads
- agent builders waterfalling Apollo, Clay, People Data Labs, Hunter, ContactOut or Ploid
- revops engineers who want a typed keep/drop gate before every paid enrich call
Triggers
- an agent is about to enrich hundreds or thousands of leads and most will be junk
- you already waterfall multiple people-data providers and want a cheap pre-filter
- subscription seats cost thousands while the real unit cost should be per kept lead
- you need a closed keep / drop / review decision, not an LLM essay about the lead
The workflow
- 01Lead batch~1,000 candidates before any paid enrichInput
- 02Keep or dropChoice: keep / drop / reviewJev
- 03ICP + signalScore fit; Noul for junk or already-richJev
- 04Enrich keptWaterfall Apollo→… only on keepsYour code
Question shape
{
"enrich_gate": {
"type": "choice",
"instructions": "Should this lead be sent to paid waterfall enrichment (Apollo, Clay, People Data Labs, Hunter, ContactOut, Ploid)? Prefer keep when the person clearly matches the ICP and enrichment is likely to unlock outreach; drop when they are out of ICP, duplicate, role-less, or clearly not worth a paid lookup; review when signals conflict or the record is too thin to decide.",
"criteria": {
"keep": "Matches ICP and is worth a paid enrich call; send into the waterfall",
"drop": "Out of ICP, junk, duplicate, or not worth paying for enrichment",
"review": "Signals conflict or the record is too thin; a human or richer free signal should decide before spending"
}
},
"icp_fit": {
"type": "score",
"instructions": "How well does this lead match the stated ideal customer profile (title, seniority, company size/industry, geography)?",
"criteria": [
"out_of_icp",
"weak",
"solid",
"strong"
]
},
"is_junk_or_duplicate": {
"type": "noul",
"instructions": "This record looks like junk, a duplicate, a generic role mailbox, or already has enough contact data that paid enrichment would not add value."
}
}Gate policy
≥ 0.85 and keep
If enrich_gate=keep and is_junk_or_duplicate is low, enqueue the lead on the waterfall and charge enrichment only for this keep.
0.55–0.85 or review
Hold the lead in a review queue; do not spend on enrichment until a human or a second free signal resolves keep vs drop.
< 0.55, drop, or junk
Skip enrichment entirely. Missing Jev answers never mean keep—fail closed to drop or review per policy.
Failure modes
Pre-launch checks before you trust auto-routing:
- Enriching every lead first and only then asking Jev—burns the waterfall budget the gate was meant to save;
- Omitting a real drop / review path so low confidence still spends on enrichment;
- Passing only a bare name with no ICP, title or company so keep/drop is a coin flip;
- Treating a transport timeout as keep instead of fail-closed drop or review;
- Asking Jev to invent emails or phones; it only decides keep/drop—providers return contact data;
- Counting subscription seats as the unit cost instead of dollars per kept lead;
FAQ
Why gate enrichment with Jev instead of enriching everyone?
Most of a 1,000-lead batch is not worth a paid lookup. Jev answers keep / drop / review with calibrated probabilities in one parallel call, so code only spends on keeps. The community pattern quotes about $0.0024 per lead versus four-figure monthly subscriptions when you stop enriching the whole pile.
Which providers does the waterfall use?
In the source demo: Apollo, Clay, People Data Labs, Hunter, ContactOut and Ploid. Jev has no people index of its own—your agent still calls those providers. This page only models the keep/drop gate that runs before you pay.
What does the Flatkey call look like?
POST https://router.flatkey.ai/api/alpha/decisions with Authorization: Bearer …, Content-Type: application/json, and a body of state (lead + ICP), model (typesafe/jev-1.13), and questions (choice / score / noul). This is not an OpenAI-compatible /v1 chat endpoint. Get a key for Jev 1.13 on Flatkey.
Can I bring my own API key?
Yes. Try the free demo above without signing in. To run it live on your own text, sign in with Google and connect a Flatkey or OpenRouter key (a quick test call runs when you save it). Manage or delete it anytime under Dashboard → BYOK. Keys are stored encrypted on the server, used only for runs you trigger, and never sent back to the browser. Need a Flatkey key? Get one for Jev 1.13 on Flatkey.
Is this the official TypeSafe or people-search product page?
No. jev-llm.com is an independent research and practice site that documents community use cases. Verify pricing, models, providers and terms at the original sources.
Sources
Introducing Jev @typesafeai powered people search $0.0024/lead. No more $2,000 subscriptions. Your agents can now: > Waterfall across Apollo, Clay, People Data Labs, Hunter, ContactOut, Ploid > Run 1,000 leads through Jev > Pay for enrichment only on the leads Jev kept Open source. No subscriptions. 0% markup.
— @shengkunye View the post on X →
Wire this gate with your own key
Bring your own key through Flatkey / OpenRouter. Keep exact checks in code.