source → enrich → outreach → book → close

Rented lead databases are someone else's pipeline.

CallHQ scrapes local businesses on your own infrastructure, enriches them through a waterfall that stops at the first hit, and runs email, SMS and dialer outreach behind a compliance firewall that fails closed. One system, from a scraped map to a closed deal — no per-credit lead tax, no rented database.

app.callhq/leads

Sourced this morning — Google Maps · niche: plumbers, roofers, auto, dental

BusinessCityScoreStatus
Riverside Plumbing Co.LeedsAenriched
Bramwell & Sons RoofingManchesterAenriched
Northgate Auto RepairBristolBenriching
Willow Lane DentalLeedsBenriched
QuickFix Appliance LtdBristolCqueued
01 · SOURCE

Your next customer is already on Google Maps.

Self-hosted scrapers work Google Maps, OpenStreetMap, Companies House and Shopify — niche by niche, city by city, on a schedule. New rows dedupe into your warehouse automatically, so a re-run never doubles a business you already found.

app.callhq/sourcing

Scheduled source runs

plumbers · Leeds214 found189 new
roofers · Manchester167 found152 new
auto repair · Bristol98 found91 new
02 · ENRICH

You pay for answers, not attempts.

A provider waterfall tries email finders in order and stops at the first hit — cost-accounted, never a flat per-row charge. Legal form gets resolved for PECR relevance, the whole site gets crawled for AI research columns, and phone intelligence tells you which numbers can legally take an SMS before you ever send one.

app.callhq/data-hub

Email waterfall — Riverside Plumbing Co.

Site crawl (self-hosted)hit — stopped here
Free pattern guesstried, no match
Paid finder — tier 1tried, no match
Paid finder — tier 2skipped
03 · OUTREACH

Ten gates stand between you and a bad send.

Every send — email, SMS, dialer — walks the same guard() chain: suppression, consent ledger with proof, jurisdiction and DNC/CTPS screening, line-type checks, footer requirements. First deny wins, and a gate that can't be evaluated denies by default rather than letting the send through. It runs identically whether a human clicks send or a cadence fires it.

app.callhq/compliance

guard() — before this send fires

Suppression listclear
PECR sole-trader checkclear
CAN-SPAM footer presentclear
SMS consent + 10DLCn/a — email channel
Send allowed10/10 gates passed
04 · BOOK

A missed call is not a lost deal.

A browser-based dialer queues calls by priority; AI writes the call note and summary the moment you hang up. The same lead reaching back by text or email lands in one unified inbox thread, and a booked meeting goes straight onto a router with automated reminders — no lead falls through a channel switch.

app.callhq/dialer

Call ended — AI summary

Bramwell & Sons Roofing4m 12s

Interested in the Q3 flat-roof backlog. Wants a quote by Friday. Booked a 20-min call Thu 10am.

Meeting bookedThu 10:00
05 · CLOSE

Revenue remembers where it came from.

Every payment traces back to the search that found it. Pipeline funnel, per-source attribution and cadence analytics live in the same warehouse as the lead — you can tell your accountant exactly which Tuesday scrape run paid for itself.

app.callhq/revenue

Revenue by source

google_maps · plumbers · Leeds$4,820
google_maps · roofers · Manchester$3,150
companies_house · dental · Leeds$1,940

the feature index

All 60 of them. What each one does, and how it actually works.

Google Maps niche scraping
Finds every business in a niche + city combination.
A self-hosted Botasaurus scraper drives real browser sessions, with a fallback scraper if Maps blocks it.
Multi-source coverage
Pulls from OpenStreetMap, Companies House and Shopify too, not just Maps.
Each source has its own connector that normalizes results into the same lead shape before they reach your table.
Scheduled source runs
Reruns a niche × city combination on a cadence without you remembering to.
A cron-scheduled job re-queues the same scrape parameters and dedupes the results in.
Automatic dedupe
A re-run never hands you the same business twice.
Incoming rows are matched against the warehouse by name, address and phone before insert.

Enrichment

/data-hub
Provider waterfall
Tries the cheapest email finder first and stops at the first hit.
A cost-accounted chain of providers runs in order; a hit short-circuits every provider after it.
Legal-form resolution
Tags each business as sole trader, limited company, etc.
Cross-references Companies House and site content — PECR treats a sole trader's inbox like a consumer's.
Full-site crawl
Reads the business's own website, not just a directory listing.
A crawler indexes the site so AI research columns have real text to ground answers in.
Phone intelligence
Knows which numbers can legally receive an SMS before you send one.
A Telnyx line-type lookup classifies mobile vs. landline vs. VoIP ahead of the SMS-consent gate.
Incremental re-enrichment
Keeps stale records fresh without re-running the whole pipeline.
A sweep re-checks only the fields that have passed their freshness window.

AI research columns

/claygents
Grounded research columns
Answers a plain-English question per row — e.g. "does this business already run ads?"
The prompt runs against the crawled site content, not the model's imagination; answers cite what was actually found.
CallHQ Agents
Turns a natural-language instruction into a saved, reusable column.
The instruction compiles once into a reusable research spec any lead in the table can re-run.

The grid

/leads
Clay-style data table
Sort, filter, saved views and inline edit on every lead.
A virtualized table renders 10k+ rows smoothly; edits post straight through the row's own server action.
Per-cell provenance
Shows exactly which provider or run produced a value.
Every enrichment write carries its source, surfaced in Data Hub on hover.
Data Hub fill-rates
Shows which fields are actually populated across your whole list, not one row.
A field-by-field completeness report reads the same warehouse the grid does.
Companies rollup
Rolls many leads at one business up into a single account view with a score.
Leads are grouped by resolved company identity and their signals aggregate into an account score.

Scoring & routing

/leads
Deterministic scoring
An A–D grade from firmographic and engagement rules you can audit.
A rules engine reads the same enriched fields the grid shows — no black box.
AI qualitative scoring
A second, judgment-based score from unstructured signals.
An AI pass reads the crawl and research columns and reasons about fit, distinct from the rules score.
Routing pools
Sends a lead to the right rep or queue automatically once scored.
A routing rule matches score and attributes to a pool and assigns on write.

Signals & Flows

/signals
Trigger rules
"When X happens, do Y" — without a human watching for it.
Signals like lead.enriched, reply.received or meeting.booked fire a flow that can enrich, score, route, enroll or notify.
Flow automation layer
Chains multiple actions off one trigger.
A flow definition is a small ordered list of actions the signal engine executes in sequence.
Multi-step, multi-channel sequences
Email, SMS and LinkedIn steps in one sequence.
Each step carries its own channel, template and wait, executed by the outbox.
Send windows
Never sends outside business hours in the lead's timezone.
A send-window check runs before the channel-specific guard() gates.
Engagement auto-exit
Stops emailing someone who already replied or booked.
A reply or booking event flips the enrollment state so the next scheduled step never fires.
A/B variants
Tests two versions of a step without a manual split.
Enrollment randomly assigns a variant; analytics report conversion by variant.
Campaign caps + batching
Won't blow through a day's send limit in one burst.
The outbox throttles against the plan's daily send cap and batches the rest for tomorrow.

Unified inbox

/inbox
Every channel, one thread
An email reply and an SMS reply from the same lead show up together.
Replies from each channel webhook into the same conversation record, keyed by lead.
AI reply classification + drafts
Tells you if a reply is interested, not-interested, or out-of-office — and drafts a response.
A classifier reads the reply text; a draft generator proposes a response you can edit before sending.
One-click guarded send
Sending the draft still can't bypass compliance.
The send button calls the identical guard() chain a cadence step calls.

Power dialer

/dialer
Browser WebRTC dialer
Call straight from the browser — no desk phone.
Telnyx WebRTC handles the call leg; no PBX hardware required.
Priority queue
Dials your best leads first.
The queue orders by the same score the grid shows.
AI call notes + summaries
A note and a summary appear the moment you hang up.
The call recording and transcript feed a summarization pass tied to the lead record.
Dispositions + follow-ups
Logging an outcome can trigger the next step automatically.
A disposition write can enroll the lead in a follow-up SMS or email step.
Self-serve booking pages
A lead books a slot without a back-and-forth email.
A public booking page reads real availability and writes an appointment on confirm.
Meeting router
Sends the booking to the right calendar or rep.
A router rule matches the lead or account to an owner before the slot confirms.
Automated reminders
Fewer no-shows, with no human sending reminders.
A scheduled job sends reminder messages ahead of the appointment time.

Compliance firewall

/compliance
Ten fail-closed gates
Every send is checked before it fires — not after.
guard() runs suppression, consent, jurisdiction and channel checks in a fixed order; first deny wins, and an unevaluable gate denies too.
Consent ledger with proof
Consent isn't a checkbox a caller can assert — it's a record.
A ledger is authoritative over any caller-supplied boolean; a gate reads consent from it, never from the request.
TPS/CTPS + US DNC screening
UK and US do-not-call registries are screened before every call.
Jurisdiction resolves first, then the matching registry is checked, with a 28-day re-screen cadence.
PECR sole-trader email block
A UK sole trader's email is treated like a consumer's, not a business's.
Legal-form resolution feeds the PECR gate, which blocks cold email to a resolved sole trader.
CAN-SPAM footer + one-click unsubscribe
Every outbound email carries identity, address and a working opt-out.
The footer gate blocks a send missing required fields; unsubscribe writes straight to the suppression store.
SMS mobile-only, consent-gated, 10DLC
SMS never goes to a landline, never goes out cold, and US SMS carries registration.
Line-type, consent and 10DLC are three separate gates in the SMS chain — any one can deny alone.
No AI cold calls — ever
An AI voice never opens a cold call.
The ai-voiced-call gate is an unconditional, lead-independent deny — it runs before suppression even looks the lead up.
DSAR erasure + retention sweeps
A data-subject request can actually erase someone.
An erasure job walks every table holding that person's data; a retention sweep ages out what's past policy.

Content engine

/content
AI content studio with approval tiers
Drafts content and lets you pick how much oversight each piece needs.
Auto, veto and human tiers gate publish differently per content type.
Content calendar
Schedules what publishes when, across channels.
A calendar view reads the same content pieces the studio creates.
Faceless video renderingbring your own account
Turns a script into a captioned video with voiceover.
A script → voiceover + captions → mp4 render pipeline runs the job end to end.
Multi-platform social schedulingbring your own account
One post, scheduled across platforms.
A Postiz/Blotato integration schedules the same content piece per platform (bring your own connected accounts).

pSEO factory

/sites
Keyword-cell pipeline
Turns a list of keywords into published pages.
Keyword cells feed an AI page generator behind a quality gate before anything publishes.
Minted subdomains per leadbring your own account
Each generated site gets its own live subdomain.
A subdomain is minted and DNS-wired per generated microsite (publish leg is founder-flag gated).

Analytics & attribution

/revenue
Pipeline + revenue analytics
See the funnel and the money in the same place.
Pipeline funnel and revenue reports read off the same lead and deal records the grid uses.
Per-source attribution
Every payment traced to the search that found it.
Revenue rows carry the sourcing run's niche, city and source back to the original scrape.
Deliverability dashboard
Know if your emails are landing before a campaign tanks.
Bounce, complaint and spam-trap signals roll up per sending domain.
Cadence analytics
See which step or variant of a sequence actually converts.
Enrollment and reply events aggregate by cadence step and A/B variant.
REST API + MCP server
An agent — or your own script — can drive your table directly.
The same actions the UI calls are exposed as REST endpoints and MCP tools.
Outbound webhooks
Push your own events to another system.
A webhook subscription fires on the state changes you pick.
Chrome extension
Enrich or save a lead from any tab.
The extension talks to the same enrichment API the app uses.
CRM sync (Twenty) + CSV import
Move leads in and out without a migration project.
A sync connector and a CSV importer both write through the same lead-creation path.
Multi-tenant, per-tenant credentials
Separate teams, separate vendor keys.
Every tenant's vendor credentials and data are scoped by tenant id at every query.
RBAC teams + audit log
Control who can do what, and see who did it.
Role checks gate every action; every state change writes an audit log entry.
PWA + self-hosted stack
An installable app that runs entirely on your own infrastructure.
A web manifest and service worker make it installable — the whole stack deploys to infrastructure you control. Your data on your box, no per-credit lead tax.

vs the tools you're comparing us to

Clay has more providers. We have the rest of the job.

CapabilityCallHQClayApolloInstantly
Data sourcingSelf-hosted scraping, no credit tax100+ premium providers (broader)Own B2B database
AI research / agentsGrounded columnsDeepest agent toolingBasic
Email sequencesVia your Instantly accountExport-to-toolBuilt inBuilt in (core product)
SMS cadencesNative, consent-gated
Power dialerNative + AI call notesBasic
Unified inboxAll channels, one threadPartialEmail only
Compliance firewallFail-closed architectureManualPartialPartial
Content / social / pSEOBuilt in
Self-hosted / own infraYesNoNoNo
Where they beat usProvider marketplace depthDatabase sizeInbox-warmup scale

faq

Questions a founder actually asks before switching.

What does CallHQ cost?

Three plans — Starter ($0), Growth ($299/mo) and Scale ($999/mo) — each with real, enforced caps on sends, enrichments, renders and seats. Self-serve billing isn't switched on yet, so early accounts run free until it is; the limits shown are the ones the platform actually throttles against, not honor-system quotas.

What's live today vs. bring-your-own-account?

Sourcing, enrichment, the grid, scoring, signals/flows, the dialer, the unified inbox and the compliance firewall all run end to end on CallHQ's own infrastructure. Email sequences run through your own Instantly account and LinkedIn through your own HeyReach account — CallHQ orchestrates the sequence, you bring the sending account.

How does the compliance firewall actually stop a bad send?

Every send walks a fixed ten-gate chain — suppression, consent ledger, jurisdiction/DNC screening, line-type, footer requirements — before it fires, not after. The first gate to deny wins, and a gate that throws denies too rather than letting the send through. It's the same code path whether a human clicks send or a cadence fires automatically.

Where does our data actually live?

On infrastructure you control. CallHQ's scraping and enrichment services are self-hosted, so there's no per-credit lead tax and no vendor holding your list hostage. You can export everything through the REST API or a CSV export at any time.

We're on Clay/Apollo today — what does migration look like?

CSV import for existing lists, plus the REST API for anything scripted. There's no forced re-mapping step: a lead's shape is deliberately close to what both tools already export, and the grid's column config adapts to whatever fields arrive.

Does CallHQ cold-call with AI voices?

No — and it's not a policy, it's a hard gate. The ai-voiced-call check is an unconditional deny in the compliance chain, evaluated before the platform even looks up whether the lead is suppressed. There is no setting that turns this on.

What compliance regimes does it actually cover?

UK PECR (including the sole-trader email rule) and CAN-SPAM for email; UK TPS/CTPS and US DNC for calls, with a 28-day re-screen so a registry change doesn't go stale; US 10DLC registration plus consent for SMS. Coverage is enforced in code, not documented as a policy someone has to remember to follow.

What can the MCP server actually let an agent do?

The same actions the UI calls, exposed as typed MCP tools — read the grid, trigger enrichment, update a lead, check compliance status. An agent (yours, or a client's) can drive the table directly instead of you scripting against a REST client by hand.

How does sourcing avoid pulling in the same business twice?

Every incoming row is matched against the warehouse by name, address and phone before insert. A scheduled re-run of the same niche×city combination adds only what's genuinely new — it never doubles a business already in your table.

What roles can a team have?

RBAC-gated roles control who can send, who can only view, and who administers settings/billing/compliance — enforced on every action, not just hidden in the UI. Every state change also writes an audit log entry, so "who did this" is always answerable.

Deterministic scoring vs. AI scoring — what's the difference?

Deterministic scoring is an auditable A–D grade from firmographic and engagement rules you can read in the rules engine. AI qualitative scoring is a separate, judgment-based pass over the crawl and research columns — it complements the rules score, it doesn't replace it, and both are visible on the same row.

Can a compliance gate ever be skipped by mistake?

No — the gate chain is built from an explicit precedence list at boot, and it throws at startup if a registered gate is missing from that list or vice versa. A gate can't be silently appended or dropped by import order, and a gate that errors at evaluation time denies rather than getting skipped.

no credit card · cancel anytime

Your next hundred customers are already on the map.