anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
An n8n workflow in two halves. A form search on Apify adds people with verified emails to a Google Sheet. Once a day, gpt-4.1-mini drafts a short cold email for each row you mark REVIEW. Nothing is sent.
Lead list builder with scheduled cold email drafts is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Form and daily schedule
Two triggers start it: a form for the search and a daily schedule for the drafts. The form asks for:
A sheet of leads with verified emails, and a ready draft for each lead you approve
What you need before you start.
Lead search
Runs the Leads Finder Actor with your level, size, industry and country filters, and returns each person with an email.
NeedsApify API token, typed into the node’s header, and credit for the leads
Language models
Tidies the form’s answers into JSON, then writes each draft with gpt-4.1-mini.
NeedsOpenAI API key
Lead sheet
Keeps one row for each person, hands back the rows marked REVIEW and takes each draft into its row.
NeedsA Google account to sign in with, and a sheet with a Leads tab
Checked by Mindket on 13 Nov 2026
This n8n workflow builds a list of people to email and drafts the emails later, when you say so. A form takes the level, company size, industry and countries you want and a few lines about you, then an Apify Actor returns matching people with verified emails. Google Sheets keeps each one as a row. The second half runs once a day. It drafts a short cold email for every row you have marked REVIEW and writes it back. Fourteen working nodes and two sticky notes make it up. Nothing is sent.
Freelancers, agencies and small B2B teams who sell a service to companies and want owners, founders or managers with an email for each. The REVIEW mark suits someone who picks the leads before any copy is written. Skip it if you want the emails sent.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Marketing agencies | Agency owners | Search founders of small companies in one industry and country | An agency owner lists founders of UK software firms with up to 50 staff and marks the best twenty. |
| IT and software services | Business development reps | Send one form for each industry and keep each list in its own sheet | A rep builds a list of directors at logistics firms in Germany. |
| Freelance consulting | Solo consultants | Describe the offer in About You & Your Service so every draft carries it | A bookkeeper gets drafts that open on each lead’s company and name the service once. |
| Recruiting | Agency recruiters | Search heads of departments at growing firms | A recruiter lists heads of engineering at Canadian firms of 51 to 200 people. |
You need some n8n and three accounts: Apify, OpenAI and Google. Its author puts setup at about 12 minutes with the accounts ready, and one node also needs a new model, because the file names one that OpenAI has retired.
Any n8n that can reach Apify, OpenAI and Google will run it. It has to stay published for the daily half to run.
Email Prepared, or add a sending node after Update Google SheetsGet it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the sheet first, since three nodes point at it.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Apify | An account and its API token, with credit for the Leads Finder Actor |
| OpenAI | An API key for gpt-4.1-mini or another current model |
| An account that can edit the sheet, for a Google Sheets OAuth2 credential | |
| A sheet | A tab named Leads with ten headers in row 1: FirstName, LastName, Title, Email, LinkedIn, Organization, OrganizationLinkedIn, OrganizationSite, Email Prepared and About You & Your Service |
workflow.json./d/ and /edit.Google Sheets, Get Pending Leads and Update Google Sheets, select it and replace YOUR_SHEET_ID with the ID.Message a model and OpenAI Chat Model.Message a model, swap chatgpt-4o-latest for a current model such as gpt-4.1-mini.HTTP Request, replace <YOUR_APIFY_TOKEN> in the Authorization header with your token. The brackets go too, so the header reads Bearer, a space and the token.Edit Fields, lower totalResults from 1000 to about 20 for the first runs.REVIEW and run Schedule Trigger by hand. Press Publish when the drafts read well.OpenAI’s deprecations page, read on 2 November 2026, lists chatgpt-4o-latest as shut down on 17 February 2026. That is why step 5 is there.
Send the form whenever you want a new list. It confirms at once, and the people arrive in Leads when Apify finishes. Read the rows and type REVIEW in Email Prepared for each lead you want, and at midnight the scheduled half swaps each mark for a draft you send yourself. Nothing goes out on its own.
| To change | Where |
|---|---|
| Who is searched | The form, and the lists in the prompt of Message a model that its answers are matched to |
| How many people | totalResults in Edit Fields, 1000 in the file |
| The email’s content and length | The prompt of Basic LLM Chain, which caps the body at 130 words |
| The greeting and sign-off | The Email Prepared value in Update Google Sheets |
| When drafts are written | The rule in Schedule Trigger, daily at midnight in the file |
You send the form with these answers.
Job Management Level: Founder, Owner Employees Size: up to 50 people Industry: dental clinics Location: United Kingdom About You & Your Service: I’m Sam. I build online booking pages for clinics.
The model maps the industry and the size to its lists, for example Medical Practice and the bands for 2 to 10 and 11 to 50 people. Each person found becomes a row with a name, title, email, LinkedIn address and company. You mark three rows REVIEW. That night each of them gets a draft in this shape, with the middle written by the model:
Hey Priya! <a line about her clinic, Sam’s intro, how a booking page fits, and a short question> Best, Sam
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has two starting points, the form on the top line and the clock on the bottom one, and they share only the sheet. Send the form first and check the rows. Then press the clock node’s own run button to see a draft without waiting for midnight.
For experts. The two halves meet only in the sheet, and the REVIEW mark is the handover between them.
| Step | Model or service | What to know |
|---|---|---|
Message a model | chatgpt-4o-latest in the file, now retired | Answers in JSON. Its first message holds your answers, and its system message holds the rules and 148 industry names |
Basic LLM Chain | gpt-4.1-mini, through OpenAI Chat Model | A parser holds the answer to text and name, so a reply in another shape stops the run |
HTTP Request | Leads Finder on Apify | A synchronous call, which Apify ends after 300 seconds according to its API reference |
The Actor’s input page, read the same day, writes seniority as values like director_level and size as bands like 10-19. The prompt produces Director, and its size bands are written differently. Try a small search first.
It spends money at two vendors, sends nothing and fills one column wrongly.
Email Prepared until you copy themRemove Duplicates compares the people of one run only, so a later search can add someone you already haveOrganizationLinkedIn. Map {{ $json.organizationLinkedIn }} there insteadAn n8n workflow in two halves. A form takes the people you want to reach, by level, company size, industry and country,
and a few lines about you. An Apify Actor finds matching people with verified emails, and each one becomes a row in a
Google Sheet. Once a day, the workflow drafts a short cold email for every lead you have marked REVIEW and writes it
into that row. Nothing is sent.
workflow.json: the workflow as n8n exports it, sixteen nodes. Two of them are sticky notes that name the halves. ItREADME.md: these notes.Bearer <token>. It now says Bearer <YOUR_APIFY_TOKEN>.YOUR_SHEET_ID and find the tab byLeads.chatgpt-4o-latest and gpt-4.1-mini, and the first one is gone (step 5).workflow.json.Leads and these headers in row 1: FirstName, LastName, Title, Email,LinkedIn, Organization, OrganizationLinkedIn, OrganizationSite, Email Prepared andAbout You & Your Service. Copy the sheet's ID: the long part of its address between /d/ and /edit.Google Sheets, Get Pending Leads and Update Google Sheets, select itYOUR_SHEET_ID with the ID.Message a model and OpenAI Chat Model.Message a model, pick another model. OpenAI's deprecations page, read on 2 November 2026, listschatgpt-4o-latest as shut down on 17 February 2026. gpt-4.1-mini, which the other half already uses, can answerHTTP Request, replace <YOUR_APIFY_TOKEN> in the Authorization header with your token. The brackets go too, soEdit Fields, lower totalResults from 1000 to 20 or so for your first runs.REVIEW in Email Prepared on a row orSchedule Trigger by hand to draft those rows. When the drafts read well, press Publish, and the schedule takesThe form half:
On form submission shows a form titled Lead Scraper. Job Management Level lets you pick any of Owner, Founder,Location has a checkbox for each of ten countries. Employees Size and IndustryAbout You & Your Service is the one required field.Message a model tidies the answers into JSON. It matches your industry to the nearest of 148 names held in itsEdit Fields turns that JSON into the Actor's input: verified emails only, emails included, the four filters and atotalResults of 1000.HTTP Request posts it to Apify's run-sync-get-dataset-items address for the Actor cdTI90GLKIsTHSjgE and waits forEdit Fields1 keeps eight fields for each person. Then Filter drops anyone without an email, andRemove Duplicates drops a second copy of the same email within this run.Google Sheets appends each person as a row, with your About You & Your Service text beside them. Email PreparedThe scheduled half:
Schedule Trigger fires once a day at midnight, in the workflow's time zone. Its rule is empty in the file, and thatGet Pending Leads reads every row whose Email Prepared says REVIEW.Basic LLM Chain has gpt-4.1-mini write the body of a cold email of 130 words at most, with no subject, greeting orAbout You & Your Service. A parser holds the answer to text andname.Update Google Sheets finds the row by its number and replaces REVIEW with the draft. The draft opens with HeyBest, and yours.Basic LLM Chain. The prompt sets the 130-word cap and the order: a lineEmail Prepared value in Update Google Sheets.Message a model, and totalResults in Edit Fields.Schedule Trigger.Email Prepared, and only for rows you mark REVIEW. That mark is your approval step,director_level and company size as10-19. The prompt here produces Director, writes its size bands differently, and sendscontactEmailStatus and includeEmails, which the page does not list. Run one small search and check that the peopleMessage a model.Remove Duplicates only compares the people of one run, so a second search can add someone already in the sheet.OrganizationLinkedIn receives the company's website, not its LinkedIn page. To fix it, map{{ $json.organizationLinkedIn }} into that column in Google Sheets.Title is filled from the Actor's functional field, which may hold a department more than a job title.README.md 7 KB workflow.json 29 KB
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
nerijs · Kit
A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…
LiconStudio · Kit
Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…