Lead Enrichment & AI Cold Email Personalizer avatar

Lead Enrichment & AI Cold Email Personalizer

Pricing

from $50.00 / 1,000 message generateds

Go to Apify Store
Lead Enrichment & AI Cold Email Personalizer

Lead Enrichment & AI Cold Email Personalizer

Lead enrichment plus AI-written cold emails in one run. Fills missing industry, size and country (never invented), checks every email (role, disposable, free, MX), writes a grounded message or 2-4 step sequence and marks each lead Send/Verify/Skip. Free preview run.

Pricing

from $50.00 / 1,000 message generateds

Rating

0.0

(0)

Developer

Turgay NANTA

Turgay NANTA

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Lead Enrichment & AI Cold Email Writer: From Lead List to Send-Ready Outreach

You have a list of leads. Before anyone can email them, someone has to fill in the missing company details, check which email addresses are worth sending to, write a message that does not sound like a template, and decide who to contact first. That is hours of work per hundred leads.

This Actor does all of it in one run. Give it a lead list (from a Google Maps scraper, a LinkedIn export, a CRM or a spreadsheet) and get back a prioritized table where every lead has:

  • the missing firmographic fields filled in (industry, company size, country) or marked unknown, never invented,
  • an email quality check: format, role inbox, disposable domain, free provider and a live mail-server (MX) lookup,
  • a complete, personalized cold email (subject, opener, body, call to action), or a 2-4 step follow-up sequence,
  • the one fact the personalization is based on, so you can see it is not made up,
  • a Send / Verify / Skip decision with the reason, and a 0-100 priority.

Nothing is sent to anyone. You review the drafts and send them with your own tool.

Start free of charge: the default run is a preview. It counts your leads and shows the estimated cost without processing or charging anything.


At a glance

InputA lead list: any mix of company, website, name, title, email, industry, size, country
OutputOne row per lead, sorted by priority, plus a run summary with a "contact first" list
MessagesFull cold email or a 2-4 touch sequence, in English, Turkish, German, Spanish, French, or auto-detected per lead
Email checksFormat, role inbox (info@, sales@), disposable domain, free provider (gmail.com), live MX record
Anti-hallucinationEach message names the fact it is grounded on; ungrounded messages are flagged, not sent
Cost controlFree preview run, ICP filter before the paid step, pay per lead
Runs onApify Console, API, schedules, n8n, Make, Zapier, AI agents via MCP

Quick start

  1. Paste your leads into Lead list (or connect a scraper dataset through an integration).
  2. Write one sentence about what you offer in Your offer. Pick a tone and a language.
  3. Click Start. The first run is a free preview: the output shows the lead count and the estimated number of charged events.
  4. Set Approved lead count to the number you want processed and run again.
  5. Open the Dataset tab: leads are sorted by Priority. Copy the drafts marked Send.

What one output row looks like

{
"Priority": 94,
"Fit": 100,
"Company": "Northwind Logistics",
"Person": "Jane Miller",
"Title": "Head of Operations",
"Industry": "Freight and logistics",
"Email": "jane.miller@northwind-logistics.com",
"Deliverability": "High",
"Language": "English",
"Message Subject": "Cutting manual dispatch work at Northwind",
"Sequence": 3,
"Basis": "Northwind runs a same-day regional delivery network",
"Decision": "Send",
"Reason": "email strong + message grounded in facts",
"email_verification": {"deliverability": "high", "mx": true, "reason": "business email, mail server (MX) found"},
"outreach_message": {"konu": "...", "acilis": "...", "govde": "...", "cta": "...", "personalizasyon_dayanagi": "..."},
"outreach_sequence": [{"konu": "..."}, {"konu": "..."}, {"konu": "..."}]
}

Who it is for

  • Agencies that deliver outbound campaigns and need a reviewable draft per lead.
  • Founders and small sales teams without time to research and write each first email.
  • SDR and RevOps teams that want a research-and-draft step before their existing sequencer.
  • Recruiters and partnership managers reaching out to lists of companies or people.

Why teams use it

Most tools do one link of the chain. A data tool fills fields but leaves you to write. An AI writer produces text but has no idea whether the email is deliverable or whether the "personal" line is true. You glue three tools together, and the weak link is always the same: messages that sound personal but are based on nothing, sent to addresses that bounce.

This Actor keeps the whole chain in one place and adds two gates you rarely get elsewhere:

  1. A groundedness gate. Every message has to name the fact it is built on (for example "Northwind runs a same-day regional delivery network"). The Actor checks that this fact actually comes from your lead data. If it does not, the lead is marked Verify, not Send.
  2. A send-readiness gate. Email quality, groundedness and message completeness are combined into one decision. Only leads that pass all three are marked Send.

The result is a short list you can trust and a longer list that tells you exactly what is missing.


What it does, step by step

  1. Normalizes your list. Common field names are recognized automatically. Rows that are not objects are ignored.
  2. Applies your ICP filter (free). If you define target industries, countries or keywords, each lead gets a 0-100 fit score. Leads below your threshold are listed at the end as Filter out and are never charged.
  3. Preview or process. With Approved lead count = 0 (the default) the run stops here and reports counts and estimated charges. Set a number to continue.
  4. Fills missing firmographics. For each lead, only the fields you selected and that are empty (industry, size, country) are estimated from the company name, website and title in your data. The model is told to answer "unknown" when unsure; unknown values stay empty. No web browsing, and emails are never generated.
  5. Checks the email. Format, role inbox, disposable domain and free provider rules, plus a live DNS lookup for the domain's mail server. A domain with no mail server is marked Invalid.
  6. Writes the message. A full email (subject, opener, body, call to action) in your tone and language, or a sequence of 2-4 touches in one call. Your offer is woven in.
  7. Checks groundedness and completeness. Is the personalization tied to a real fact from your data? Does the message have all parts?
  8. Decides and ranks. Send, Verify or Skip with reasons, plus a 0-100 priority.
  9. Summarizes. The final record lists decision counts, how many are ready to send, and the top leads to contact first.

Decisions

DecisionWhenWhat to do
SendBusiness email with high deliverability, message grounded in a fact and completeReview and send
VerifyRole inbox, free-provider email, ungrounded or incomplete messageFind the named person, add a fact, or edit the draft
SkipInvalid, disposable, or no mail serverDo not email; call or drop
Filter outBelow your ICP thresholdNot processed and not charged

Email deliverability classes

ClassRule
HighValid business address, not a role inbox, not a free provider; MX found or not measurable
MediumFree provider (Gmail, Outlook, Yahoo, iCloud, GMX, Proton and others): reaches a person, not a company address
LowRole or group inbox (info@, sales@, support@ ...)
InvalidBad format, disposable domain, or the domain has no mail server

This is a rules-plus-DNS check. It does not open an SMTP session, so it cannot confirm that one specific mailbox exists.

Priority score (0-100)

ComponentPoints
Deliverability: High / Medium / Low / Invalid45 / 30 / 12 / 0
Named person present20
Industry, size, country known (6 each)up to 18
Message grounded in a fact12
Message complete5

Use cases

Agencies running outbound for clients

Scrape businesses with a Google Maps or directory scraper, run them through this Actor with the client's offer, and deliver a reviewed draft per lead instead of a raw spreadsheet. The Basis column makes quality control fast: you can see in one glance what each message is built on.

Founders doing their own sales

You do not have time to write 80 first emails. Paste your list, describe your product in one sentence, pick "Direct & concise", and get drafts ranked by how likely they are to land. Send the top 20 today.

SDR teams with an existing sequencer

Use the Actor as the research-and-draft step before Lemlist, Instantly, Apollo, HubSpot sequences or any other sender. Import only Send rows; route Verify rows to a people-finder.

Multilingual prospecting

Set language to Auto and each lead gets a message in the language of its domain (.de and .at German, .fr French, .es and Latin American domains Spanish, .tr Turkish; .com and other generic domains English). One run covers a European list.

Recruiting and partnership outreach

The same chain works for candidate or partner lists: the offer sentence changes, the gates stay the same.


Input

FieldDescription
leadsThe lead list. Any of company, website, name, title, email, industry, size, country. A sample list is prefilled so you can try it immediately.
enrichFieldsWhich fields to fill when missing. Email is check-only and never generated.
outreachToneFriendly-professional, Formal, Direct & concise, Consultative, Warm & friendly
outreachTouches1 = single email; 2-4 = follow-up sequence
senderOfferYour value proposition in a sentence or two
languageAuto (detect from domain), English, Türkçe, Deutsch, Español, Français
icpSectors, icpCountries, icpKeywordsOptional ideal-customer profile
icpMinScoreFit threshold 0-100 (0 = off)
modelAdvanced: the default is fast and economical
onayliLeadSayisiApproved lead count. 0 = free preview; N = process the first N qualified leads

Example input

{
"leads": [
{"company": "Northwind Logistics", "website": "northwind-logistics.com",
"name": "Jane Miller", "title": "Head of Operations",
"email": "jane.miller@northwind-logistics.com"},
{"company": "Blue Harbor Dental", "website": "blueharbordental.com",
"email": "info@blueharbordental.com"}
],
"senderOffer": "We automate dispatch scheduling for regional delivery companies.",
"outreachTone": "doğrudan-net",
"outreachTouches": 3,
"language": "auto",
"icpKeywords": ["logistics", "delivery", "freight"],
"icpMinScore": 50,
"onayliLeadSayisi": 50
}

Output

Dataset table (one row per lead)

Priority · Fit · Company · Person · Title · Industry · Email · Deliverability · Language · Message Subject · Sequence · Basis · Decision · Reason

Each row also carries the full data: email_verification, outreach_message, outreach_sequence, groundedness, send_readiness, personalization_facts, and the enriched industry, size, country, website.

Message fields inside outreach_message use fixed keys: konu (subject), acilis (opener), govde (body), cta (call to action) and personalizasyon_dayanagi (the fact the personalization is based on).

Run summary (last record)

verdict_distribution (send / verify / skip), total_to_send, contact_first (top leads by priority), and counts of leads found, qualified, filtered out, processed and skipped by your approval limit.

Export as CSV, Excel, JSON or HTML from the Dataset tab.


Grounded vs. ungrounded: a worked example

Two leads, same offer ("We automate dispatch scheduling for regional delivery companies"):

Lead A has company, website, name, title and a note that the company runs same-day regional delivery. The model writes an opener that refers to same-day regional delivery and names that as its Basis. The check finds the basis inside the lead's own facts, the email is a named business address with a mail server, so the decision is Send.

Lead B has only company and info@ email. The model can only write a generic opener. The basis is empty or does not match any fact, and the email is a role inbox, so the decision is Verify with two reasons: find a named person, add a fact. You see the gap before you send, not after the reply rate drops.

This is the difference between "AI-personalized" and personalized on something real.


Workflow recipes

Recipe 1: Local B2B outreach in one afternoon

  1. Run a Google Maps scraper for "logistics company in Rotterdam".
  2. Clean it with a contact cleaner so each business has one best email.
  3. Pass the result here with your offer, language: auto, outreachTouches: 3, and an ICP keyword list.
  4. Import the Send rows into your sequencer; give the Verify rows to a researcher.

Recipe 2: Weekly pipeline top-up Schedule the chain above every Monday with a fixed approved lead count (for example 50). Spend stays predictable and new leads arrive already drafted.

Recipe 3: Re-engage an old CRM list Export dormant contacts with a notes column, run them through this Actor with a "we have something new" offer, and use the Basis column to confirm each message references something true about that account.


Troubleshooting

SymptomCauseFix
Output shows only countsYou ran the free previewSet onayliLeadSayisi to the number of leads to process
Most leads are VerifyFew facts per lead, or role inboxesAdd title, website and a note column; find named contacts
A lead is Skip with "no mail server"The domain has no MX recordThe address cannot receive email; use another channel
Industry stays emptyThe model was not sure from the data givenProvide the website or industry in the input
Wrong languageGeneric domain such as .comSet the language explicitly instead of Auto

Pricing

Pay per event, no subscription. Current prices are on the Pricing tab; at the time of writing:

EventWhenPrice
actor-startOnce per run$0.0001
lead-enrichedPer processed lead$0.02
message-generatedPer lead's message or sequence$0.05
Leads processedApproximate cost
10$0.70
100$7.00
500$35.00
  • The preview run is free of per-lead charges.
  • Leads removed by your ICP filter are never charged.
  • A 3-touch sequence costs the same as a single email (one generation per lead).

For comparison, a human SDR spending five minutes per lead on research and a first draft needs over eight hours for 100 leads.


Integrations

Chain after a scraper

In Apify Console, open your Google Maps or leads scraper, add an Integration → Run another Actor, choose this Actor and pass the dataset items as leads. Keep onayliLeadSayisi at a fixed cap to control spend.

API

curl -X POST "https://api.apify.com/v2/acts/enezli~ai-lead-enricher-personalizer/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"leads":[{"company":"Northwind Logistics","website":"northwind-logistics.com","email":"jane.miller@northwind-logistics.com"}],"senderOffer":"We automate dispatch scheduling.","onayliLeadSayisi":1}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("enezli/ai-lead-enricher-personalizer").call(run_input={
"leads": leads, "senderOffer": "We automate dispatch scheduling.", "onayliLeadSayisi": len(leads)})
ready = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items() if r.get("Decision") == "Send"]

n8n, Make, Zapier

Use the Apify node: Run Actor → Get dataset items → filter Decision = Send → create drafts in Gmail or push to your sequencer.

AI agents (MCP)

Available through the Apify MCP server, so an assistant can pass a lead list and receive ranked drafts.


Tips for better messages

  • Give facts. The more real context in your lead rows (title, website, industry, a note column), the more leads are grounded and marked Send.
  • Write a specific offer. "We cut dispatch planning time for regional carriers" beats "We help businesses grow".
  • Use the ICP filter to avoid paying for leads you would never contact.
  • Use sequences. Most replies come from follow-ups; a 3-touch sequence costs the same as one email here.
  • Keep Auto language for international lists.

Limitations

  • Firmographic fields are estimated from the data you provide, not looked up on the web. If you need verified company data, run a scraper or enrichment source first and pass its output in.
  • The email check does not probe individual mailboxes.
  • The Actor writes drafts; it does not send email and does not access your inbox.
  • Message quality depends on the facts available. A row with only a company name will produce a generic message and be marked Verify.

FAQ

Does it find email addresses? No. It checks the emails you provide and never generates one. Use a scraper or email finder first if your list has none.

Does it send the emails? No. It produces drafts and decisions. Sending stays in your hands and your tools.

Can the AI make things up? The model is instructed to use only the facts in your data, and a deterministic check verifies the stated basis against those facts. Messages that fail are marked Verify, not Send.

What does the free preview show? How many leads were found, how many pass your ICP filter, and the estimated number of charged events. Nothing is processed or charged.

Which languages are supported? English, Turkish, German, Spanish and French, or Auto per lead from the domain.

Is my data stored? Only in your own Apify storage under your account's retention settings. Lead data is sent to the language model provider solely to generate your messages.

Is this compliant with GDPR and CAN-SPAM? The Actor processes the business data you supply and does not send email. You remain responsible for your lawful basis and for including opt-out and sender details when you send.

Can I change the model? Yes, under Advanced. The default is the fastest and most economical option.

What happens if one lead fails? It is logged and skipped; the rest of the run continues. Charges apply only to the steps that completed for that lead (enrichment, message).

How many leads can I run at once? There is no fixed limit. For large lists, set an approved lead count and run in batches so you can review quality before spending more.

Can I use my own fields, like a notes column? Yes. Extra context in the lead row helps the message, and more facts mean more leads reach Send.

Why is the cost per lead higher than a plain scraper? Each lead gets model-written content (enrichment plus a full message or sequence). You pay per lead actually processed, never for filtered or previewed ones.


Trademarks

All product and company names mentioned are trademarks of their respective owners. This Actor is not affiliated with any of them.