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 for booked sales calls. An agent researches each company from your Google Sheet with Tavily and matches your products, and a second agent writes a confirmation email, subject line and text message. Nothing is sent.
Booked call research with confirmation email and SMS is an n8n workflow in the Business 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.
Manual run
It starts when you press Execute workflow, and works through the rows of Meeting Data that have no research yet, each with:
A sheet where each booked call has a company brief, matched products and a confirmation email and text to read
What you need before you start.
Spreadsheet
Holds the bookings, your products and your success stories, and takes the research and the drafts back into each booking’s row.
NeedsA Google account to sign in with, and a sheet with three tabs
Language model
Runs gpt-4.1 for the research agent and for the writing agent.
NeedsOpenAI API key
Web search
Gives the research agent a news search that returns an answer and the raw page text for each query.
NeedsTavily API key, typed into the node’s header
Checked by Mindket on 13 Nov 2026
This n8n workflow prepares you for a sales call that someone has just booked. You press Execute workflow, and it reads the booked calls in a Google Sheet that have no research yet. For each one, an AI agent searches the web with Tavily for the company’s background, tech stack and news, and picks three of your products from a Products tab. A second agent then writes a short confirmation email, a subject line and a text message, using a matching story from your Success Stories tab. Both agents write their results back to the row. Thirteen nodes run it. Nothing is sent.
Salespeople and small agencies who take bookings from a form or a calendar link and want to arrive prepared, with a message ready to read. It fits a team that already keeps its bookings in a sheet. Skip it if you want the messages sent for you or the run to start by itself. The file has a manual trigger and no sending step.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Agencies and consultancies | Account executives | Paste each new booking into Meeting Data and run it before the call | A web agency runs it each morning and reads one company brief for every booked call. |
| Software and SaaS | Founders who sell their own product | Keep one row for each plan in Products so the matches stay accurate | A founder lists three plans, and each prospect gets the closest one named. |
| B2B services | Business development reps | Fill Success Stories with past clients grouped by industry | A rep adds six client stories, and each message cites the one nearest to the prospect. |
| Training and coaching | Sales trainers | Read the drafts as examples of a short, personal confirmation | A trainer goes through a week of drafts with a new rep. |
You need some n8n and a sheet with three tabs: importing a file, adding three credentials and filling the tabs with your own products and stories. Its author puts setup at about 12 minutes, which assumes the sheet and the accounts already exist.
Any n8n that can reach OpenAI, Tavily and Google will run it. The results land in the sheet where you already track your bookings.
Sales Writing Assistant to send the messages yourselfGet it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the sheet first, since five nodes point at it.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key. Both agents use gpt-4.1 |
| Tavily | An account and its API key, for the web search |
| An account that can edit the sheet, for a Google Sheets OAuth2 credential | |
| A sheet | Three tabs: Meeting Data, Products and Success Stories |
| Tab | Columns |
|---|---|
Meeting Data | Call Date, Name, Email, Company Name, Website, Business Type, Project, then company_overview, tech_stack, company_updates, primary_solution, solution_2, solution_3, email_subject, email_text, sms |
Products | Your catalogue, one row for each product, with plain column headers |
Success Stories | One row for each client story: the person’s first name, company, business type, result and the solution used |
workflow.json./d/ and /edit.Review Calls, Update Sheet, Update Sheets 2, Product List and Testimonials Tool, select it and replace YOUR_SHEET_ID with the ID. Each node finds its tab by name.OpenAI Chat Model and OpenAI Chat Model1.Tavily, replace <YOUR_TAVILY_KEY> in the Authorization header with your key. The brackets go too, so the header reads Bearer, a space and the key.Sales Writing Assistant, replace YOUR_NAME and YOUR_COMPANY in the template and the examples with your own.Meeting Data, a product or two to Products and a story to Success Stories.Add a row for each booked call, fill its first seven columns and leave the other nine empty. Press Execute workflow. The run takes one row at a time. A long sheet takes a while. When it ends, the research columns and the three writing columns are filled for each new row. A row that already has a company_overview is skipped, so you can run it again after adding more bookings.
| To change | Where |
|---|---|
| Who the messages sound like | YOUR_NAME and YOUR_COMPANY in the template and examples of Sales Writing Assistant |
| Tone and length | The system message of Sales Writing Assistant, which asks for a short, plain message |
| What the research covers | The system message of AI Agent and the JSON body of Tavily, which searches news only |
| Your offer | The rows of Products and Success Stories, the only things the agents know about you |
| Model | OpenAI Chat Model and OpenAI Chat Model1, both gpt-4.1 |
You add this booking to Meeting Data and leave the research columns empty.
| Column | Value |
|---|---|
| Call Date | Thursday |
| Name | Priya Nair |
| priya@brightline.example | |
| Company Name | Brightline Print |
| Website | https://brightline.example |
| Business Type | Online print shop |
| Project | Sending order status updates automatically |
The first agent fills the six research columns. company_overview holds a short summary of the shop, tech_stack the tools it seems to use and company_updates its recent news. The other three name the products from Products that fit best. The second agent answers in its parser’s shape, shown here with the content cut:
{
"subject": "…",
"email": "…",
"text_message": "…"
}The email follows the template in its prompt: a greeting by first name, a line about the booking, one story from Success Stories and a closing line. The text message is short and casual. Nothing is sent, so read both and send them yourself.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. An agent is a node that decides which of its tools to call, here a web search and a few sheet lookups. Its tools hang under it on thin lines. Run one booking first. Then open each agent to see which tools it called and what it wrote.
For experts. Two agents share the work, and each ends by writing to the sheet itself through a tool, so the update happens inside the agent step and not in a node after it.
| Node | Tools or call | What to know |
|---|---|---|
AI Agent | Tavily, Product List, Update Sheet | Its prompt makes the update mandatory. A parser holds its reply to six fields |
Sales Writing Assistant | Testimonials Tool, Update Sheets 2 | Writes the subject, the email and the text. A parser holds its reply to subject, email and text_message |
Tavily | A POST to the search endpoint | It asks for news with an answer and the raw page text, three results at a time, so each result is long |
Both update tools find the row by Email, so keep one row for each address.
It spends money at two vendors, sends nothing, and has two gaps in its prompts.
gpt-4.1 agent runs for each row, and Tavily counts every search the agent decides to makeCall Date, though its template mentions the meeting date. Add it to the agent’s text if you want it in the messageEmail Agent the file does not have, so the agent writes the email itselfAn n8n workflow for sales calls that people book. For each booking in a Google Sheet, an AI agent researches the company on
the web and matches your products. A second agent then writes a confirmation email, a subject line and a text message from
your own success stories. Everything is written back to the sheet, and nothing is sent.
workflow.json: the workflow as n8n exports it, thirteen nodes and no sticky notes. It holds no credential, and theREADME.md: these notes.Tavily is now <YOUR_TAVILY_KEY>.YOUR_SHEET_ID and find theirMeeting Data, Products or Success Stories.YOUR_NAME and YOUR_COMPANY.gpt-4.1.workflow.json./d/ and /edit.Review Calls, Update Sheet, Update Sheets 2, Product List andTestimonials Tool, select it and replace YOUR_SHEET_ID with the ID. Each node finds its tab by name.OpenAI Chat Model and OpenAI Chat Model1.Tavily, replace <YOUR_TAVILY_KEY> in the Authorization header with your key. The brackets go too, so the headerSales Writing Assistant, replace YOUR_NAME and YOUR_COMPANY in the template and the examples with your own.Meeting Data, a product or two to Products and a story to Success Stories.| Tab | Columns |
|---|---|
| Meeting Data | Call Date, Name, Email, Company Name, Website, Business Type, Project, then company_overview, tech_stack, company_updates, primary_solution, solution_2, solution_3, email_subject, email_text, sms |
| Products | Your catalogue, one row for each product, with plain column headers the agent can read |
| Success Stories | One row for each client story. The writing prompt asks for the person's first name, the company, its business type, the result, the outcome and the solution used |
Fill the first seven columns of Meeting Data for each booking and leave the other nine empty: the workflow writes them.
Spell the headers as above, because the two update tools match them by name.
When clicking ‘Test workflow’ starts Review Calls, which reads the rows of Meeting Data whose company_overview isAI Agent takes one row at a time. It searches with Tavily, looks up your products with Product List, and must endUpdate Sheet with six fields: company_overview, tech_stack, company_updates, primary_solution,solution_2 and solution_3. A structured parser holds its reply to those six.Sales Writing Assistant receives the row and those six fields. It looks for a similar client in Testimonials Tool,email_subject, email_text and sms throughUpdate Sheets 2. A second parser holds its reply to subject, email and text_message.Both update tools find the row by Email, so keep one row for each address.
Sales Writing Assistant. It asks for a short, personal message in a plainAI Agent and the JSON body of Tavily. The body asks for newsProducts and Success Stories. The agents only know what those tabs and the search hold.OpenAI Chat Model and OpenAI Chat Model1 both use gpt-4.1.Sales Writing Assistant when you want that.Call Date, although its template mentions the meeting date. To put the date in theCall Date: {{ $('Review Calls').item.json['Call Date'] }} to the text ofSales Writing Assistant.Email Agent as a tool. The file has no such node, so the agent writes the email itself.Update Sheet and not to answer with JSON alone. If a row stays empty, open the run andgpt-4.1 agent runs and as many Tavily searches as the agent decides to make. Try two rows first.README.md 6 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…
perplexity-ai · Kit
Picks the best option for a decision from text and images, such as which team should handle a request, with a probability for each choice, for developers who b…
numind · Kit
Reads documents as text or images and fills a JSON template with the fields you ask for, or converts the pages to Markdown. A 4B model for teams that process s…
nace-ai · Kit
Scores yes or no, multiple choice and rating questions about a document in one pass, with a probability for every option. An 8B decision model from Nace.AI tha…