Waterfall enrichment across providers, a hundred leads at a time.
BetterContact is a contact enrichment tool, and one of the 52 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 2 actions, all of which look something up. Paid BetterContact actions cost 4.8 credits per result, from your hyreflow credit balance, so you need no BetterContact account, though you can connect your own key.
BetterContact queries multiple data vendors for each contact and returns the best result, in batches of up to a hundred. Emails are cheap. Phone numbers cost roughly ten times as much, so hyreflow leaves them switched off unless you ask for them.
Another waterfall option. It runs after the shortlist exists and before anything is validated.
With hyreflow connected, you ask for the outcome in plain language and the assistant runs BetterContact for you. For example:
In a hyreflow run, BetterContact is most often paired with TheirStack, Enrichley, FullEnrich and Instantly.
start from companies with a live hiring signal
the deliverability gate after the waterfall
the alternative waterfall, worth trying on a thin batch
send to the addresses that came back clean
Through hyreflow, an AI agent can run 2 BetterContact actions, all of which look something up. Paid BetterContact actions cost 4.8 credits per result, from your hyreflow credit balance, so you need no BetterContact account, though you can connect your own key.
| BetterContact action | What it does | Cost through hyreflow |
|---|---|---|
| Start enrichment | Looks something up | up to 4.8 credits per result |
| Get enrichment | Looks something up | free |
One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.
4 hyreflow skills call BetterContact as part of the run. A skill is a whole pipeline your agent already knows, end to end.
use whenyour desk wins work on the phone and you want every call to start from a live vacancy, not from a cold list
use whenyou have a shortlist of people you intend to ring this week and no mobile number for most of them
use whenyou already have the names, in a spreadsheet or a shortlist, and all you are missing is a way to reach them
use whenyou have the hiring manager's name and company, from a job ad, an event or a referral, and no address to write to
hyreflow ships a written playbook for BetterContact, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the BetterContact docs →HOW in lib/bettercontact.py. Docs cached at reference/docs/bettercontact/raw/.
https://app.bettercontact.rocks/api/v2 · Auth: header X-API-Key (env BETTERCONTACT_API_KEY; never hardcode).start_enrichment(data=[{first_name,last_name,company,company_domain,linkedin_url,...}], enrich_email_address=True, enrich_phone_number=False, webhook=None) → POST /async → returns {id}. Max 100 leads/request.get_enrichment(request_id) → GET /async/{request_id} — poll until terminal (or use webhook).enrich_phone_number=True raises the charge from 0.5 to 4.8 credits (billed once, on retrieval, when the result carries data) — default off, enable only when a phone number is actually needed. Pilot a small batch first.Waterfall enrichment layer (multi-provider email/phone). Take a shortlist → BetterContact → validate (Enrichley/email-validation) → ATS/sequencer. Runs in the phone_enrichment chain; a phone-only request (enrich_email_address: false, enrich_phone_number: true) is how that waterfall calls it and bypasses the work-email-only channel guard.
Field-shape note: these are vendor-native operational notes. The client returns the raw vendor JSON and uses the method names in this file — read field shapes accordingly (no normalized-wrapper /
result.data.prefix).
start_enrichment returns a request id immediately -> fetch terminal data via get_enrichment(request_id).deliverable > catch_all_safe > catch_all_not_safe > undeliverable - only trust deliverable and catch_all_safe for outreach.enrich_phone_number: true when explicitly needed. get_enrichment returns credits_consumed.lib/bettercontact.pyImport: from lib.bettercontact import BetterContact → instantiate BetterContact() (reads key from env). Base: https://app.bettercontact.rocks/api/v2. Generic passthrough: request(method, path, *, params, json).
get_account() -> dict — GET /account — account info + remaining credits: {success, credits_left, email} on the caller's own BetterContact account; requires the workspace's own key.get_enrichment(request_id: str) -> dict — GET /async/{request_id} — poll the enrichment result.ping() -> dict — BYOK key-verification probe — GET /account (free, no job started).start_enrichment(data: list[dict], *, enrich_email_address: bool = True, enrich_phone_number: bool = False, webhook: str | None = None, **opts) -> dict — POST /async — start waterfall enrichment for up to 100 leads. Returns {id}.Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls BetterContact for you. hyreflow exposes 2 BetterContact actions this way.
No. hyreflow holds the BetterContact account and bills each action from your hyreflow credits. If you already pay for BetterContact, you can connect your own key instead, and hyreflow then charges no credits for those calls.
Paid BetterContact actions cost 4.8 credits per result, from your hyreflow credit balance, so you need no BetterContact account, though you can connect your own key. 1 action is free. hyreflow can show the cost of a paid action before it runs.
Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the BetterContact API directly and exposes its actions as tools the assistant can run, so there is no separate BetterContact server to install.
Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.