Lead Enrichment & AI Cold Email Personalizer
Pricing
from $50.00 / 1,000 message generateds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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
| Input | A lead list: any mix of company, website, name, title, email, industry, size, country |
| Output | One row per lead, sorted by priority, plus a run summary with a "contact first" list |
| Messages | Full cold email or a 2-4 touch sequence, in English, Turkish, German, Spanish, French, or auto-detected per lead |
| Email checks | Format, role inbox (info@, sales@), disposable domain, free provider (gmail.com), live MX record |
| Anti-hallucination | Each message names the fact it is grounded on; ungrounded messages are flagged, not sent |
| Cost control | Free preview run, ICP filter before the paid step, pay per lead |
| Runs on | Apify Console, API, schedules, n8n, Make, Zapier, AI agents via MCP |
Quick start
- Paste your leads into Lead list (or connect a scraper dataset through an integration).
- Write one sentence about what you offer in Your offer. Pick a tone and a language.
- Click Start. The first run is a free preview: the output shows the lead count and the estimated number of charged events.
- Set Approved lead count to the number you want processed and run again.
- Open the Dataset tab: leads are sorted by
Priority. Copy the drafts markedSend.
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:
- 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, notSend. - 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
- Normalizes your list. Common field names are recognized automatically. Rows that are not objects are ignored.
- 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 outand are never charged. - 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. - 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.
- 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. - 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.
- Checks groundedness and completeness. Is the personalization tied to a real fact from your data? Does the message have all parts?
- Decides and ranks.
Send,VerifyorSkipwith reasons, plus a 0-100 priority. - Summarizes. The final record lists decision counts, how many are ready to send, and the top leads to contact first.
Decisions
| Decision | When | What to do |
|---|---|---|
Send | Business email with high deliverability, message grounded in a fact and complete | Review and send |
Verify | Role inbox, free-provider email, ungrounded or incomplete message | Find the named person, add a fact, or edit the draft |
Skip | Invalid, disposable, or no mail server | Do not email; call or drop |
Filter out | Below your ICP threshold | Not processed and not charged |
Email deliverability classes
| Class | Rule |
|---|---|
High | Valid business address, not a role inbox, not a free provider; MX found or not measurable |
Medium | Free provider (Gmail, Outlook, Yahoo, iCloud, GMX, Proton and others): reaches a person, not a company address |
Low | Role or group inbox (info@, sales@, support@ ...) |
Invalid | Bad 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)
| Component | Points |
|---|---|
| Deliverability: High / Medium / Low / Invalid | 45 / 30 / 12 / 0 |
| Named person present | 20 |
| Industry, size, country known (6 each) | up to 18 |
| Message grounded in a fact | 12 |
| Message complete | 5 |
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
| Field | Description |
|---|---|
leads | The lead list. Any of company, website, name, title, email, industry, size, country. A sample list is prefilled so you can try it immediately. |
enrichFields | Which fields to fill when missing. Email is check-only and never generated. |
outreachTone | Friendly-professional, Formal, Direct & concise, Consultative, Warm & friendly |
outreachTouches | 1 = single email; 2-4 = follow-up sequence |
senderOffer | Your value proposition in a sentence or two |
language | Auto (detect from domain), English, Türkçe, Deutsch, Español, Français |
icpSectors, icpCountries, icpKeywords | Optional ideal-customer profile |
icpMinScore | Fit threshold 0-100 (0 = off) |
model | Advanced: the default is fast and economical |
onayliLeadSayisi | Approved 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
- Run a Google Maps scraper for "logistics company in Rotterdam".
- Clean it with a contact cleaner so each business has one best email.
- Pass the result here with your offer,
language: auto,outreachTouches: 3, and an ICP keyword list. - Import the
Sendrows into your sequencer; give theVerifyrows 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
| Symptom | Cause | Fix |
|---|---|---|
| Output shows only counts | You ran the free preview | Set onayliLeadSayisi to the number of leads to process |
Most leads are Verify | Few facts per lead, or role inboxes | Add title, website and a note column; find named contacts |
A lead is Skip with "no mail server" | The domain has no MX record | The address cannot receive email; use another channel |
| Industry stays empty | The model was not sure from the data given | Provide the website or industry in the input |
| Wrong language | Generic domain such as .com | Set the language explicitly instead of Auto |
Pricing
Pay per event, no subscription. Current prices are on the Pricing tab; at the time of writing:
| Event | When | Price |
|---|---|---|
actor-start | Once per run | $0.0001 |
lead-enriched | Per processed lead | $0.02 |
message-generated | Per lead's message or sequence | $0.05 |
| Leads processed | Approximate 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 ApifyClientclient = 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.