AutomationFlowsAI & RAG › Automate Sales Call Research and Follow-ups with Gpt-4, Tavily, Google Sheets

Automate Sales Call Research and Follow-ups with Gpt-4, Tavily, Google Sheets

ByMuhammad Bello @muhammad-bello on n8n.io

This n8n template automates prospect research and personalized follow-up writing right after a sales call is booked.

Event trigger★★★★☆ complexityAI-powered15 nodesAgentOpenAI ChatOutput Parser StructuredGoogle SheetsTool Http RequestGoogle Sheets Tool
AI & RAG Trigger: Event Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7491 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "oQZ2islm9d6PeE9i",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automate Sales Call Research & Follow-Ups with GPT-4, Tavily and Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "b5394fce-49a5-4cca-8a0c-a8a3e6f0d1c4",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        752,
        208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a02cd958-18a1-40ef-9268-21cbe892d941",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1184,
        208
      ],
      "parameters": {
        "text": "=Please research these sales call attendees\n\nName: {{ $json.Name }}\nEmail: {{ $json.Email }}\nCompany Name: {{ $json['Company Name'] }}\nWebsite: {{ $json.Website }}\nBusiness Type: {{ $json['Business Type'] }}\nProject: {{ $json.Project }}",
        "options": {
          "systemMessage": "=---\n\n# Overview\n\nYou are an **AI agent** responsible for gathering company data and updating a Google Sheet with a structured six-field output.\n\n## Context\n\n* After generating results, you **must call the Update Sheet tool**.\n* Do **not** just return JSON \u2014 the tool call is mandatory for writing to Google Sheets.\n\n## Instructions\n\n1. Accept and parse the input fields.\n2. Use the **Tavily** tool to gather and summarize:\n\n   * `company_overview`\n   * `tech_stack`\n   * `company_updates`\n3. Use the **Product List** tool to identify:\n\n   * `primary_solution`\n   * `solution_2`\n   * `solution_3`\n4. Format the results as valid JSON with exactly six fields.\n5. Immediately call the **Update Sheet** tool with that JSON.\n\n## Tools\n\n* **Tavily** \u2192 Research company background, stack, and updates\n* **Product List** \u2192 Generate product/solution suggestions\n* **Update Sheet** \u2192 Write the six fields into Google Sheets (required)\n\n## Examples\n\n### Example Input\n\n```json\n{\n  \"Name\": \"Trij Inc.\",\n  \"Website\": \"https://www.trij.com\",\n  \"Business Type\": \"E-commerce\",\n  \"Project\": \"Streamlining logistics with automation\"\n}\n```\n\n### Example Tavily Output\n\n```json\n{\n  \"company_overview\": \"Trij Inc. is a fast-scaling e-commerce company focused on home goods and lifestyle products.\",\n  \"tech_stack\": \"Shopify, Klaviyo, ShipBob, Gorgias\",\n  \"company_updates\": \"Recently launched a same-day delivery program in select cities and expanded product categories in Q2.\"\n}\n```\n\n### Example Product List Output\n\n```json\n{\n  \"primary_solution\": \"Logistics Automation Suite\",\n  \"solution_2\": \"Customer Retention AI\",\n  \"solution_3\": \"Real-Time Order Tracking\"\n}\n```\n\n### Example Update Sheet Tool Call\n\n```json\n{\n  \"tool_call\": {\n    \"tool\": \"Update Sheet\",\n    \"parameters\": {\n      \"company_overview\": \"Trij Inc. is a fast-scaling e-commerce company focused on home goods and lifestyle products.\",\n      \"tech_stack\": \"Shopify, Klaviyo, ShipBob, Gorgias\",\n      \"company_updates\": \"Recently launched a same-day delivery program in select cities and expanded product categories in Q2.\",\n      \"primary_solution\": \"Logistics Automation Suite\",\n      \"solution_2\": \"Customer Retention AI\",\n      \"solution_3\": \"Real-Time Order Tracking\"\n    }\n  }\n}\n```\n\n## SOP (Standard Operating Procedure)\n\n1. Parse and validate inputs.\n2. Call Tavily to retrieve:\n\n   * `company_overview`\n   * `tech_stack`\n   * `company_updates`\n3. Call Product List to generate:\n\n   * `primary_solution`\n   * `solution_2`\n   * `solution_3`\n4. Combine all values into a JSON object with these six fields.\n5. Pass the object to **Update Sheet** via a tool call.\n\n## Final Notes\n\n* Return **only valid JSON** \u2014 no extra explanation or commentary.\n* Always include all six fields, even if the data is sparse.\n* The **Update Sheet** tool call is mandatory for completion.\n\n---\n\n \n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "aa38f3b8-a4e9-4e9b-910a-b5cb9f95fe01",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        992,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "30ffef45-0917-4665-a92c-617ee623cf57",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1472,
        416
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"company_overview\": \"string (max 100 tokens)\",\n  \"tech_stack\": [\"string\", \"string\", \"...\"],\n  \"company_updates\": \"string (max 150 tokens)\",\n  \"primary_solution\": \"string\",\n  \"solution_2\": \"string\",\n  \"solution_3\": \"string\"\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "e699751d-726c-4fe2-8753-bc5a503eac7c",
      "name": "Sales Writing Assistant",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1680,
        208
      ],
      "parameters": {
        "text": "=Name: {{ $('Review Calls').item.json.Name }}\nEmail: {{ $('Review Calls').item.json.Email }}\nCompany Name: {{ $('Review Calls').item.json['Company Name'] }}\nWebsite: {{ $('Review Calls').item.json.Website }}\nBusiness Type: {{ $('Review Calls').item.json['Business Type'] }}\nProject: {{ $('Review Calls').item.json.Project }}\ncompany_overview: {{ $json.output.company_overview }}\ntech_stack: {{ $json.output.tech_stack }}\ncompany_updates: {{ $json.output.company_updates }}\nprimary_solution: {{ $json.output.primary_solution }}\nsolution_2: {{ $json.output.solution_2 }}\nsolution_3: {{ $json.output.solution_3 }}\n",
        "options": {
          "systemMessage": "= ---\n\n# Overview\n\nYou are a **Sales Writing Assistant AI** tasked with creating a short, personal, and persuasive **email, subject line, and SMS** immediately after a prospect books a call. The output must feel handcrafted and human, blending personalization with a sharp testimonial to build fast conviction.\n\n## Context\n\n* Every message should feel written *for this specific person*, never like a template.\n* The structure highlights **one key pain point or goal**, then proves credibility with a testimonial from someone in a similar situation.\n* Writing style: short, clear, confident, and natural \u2014 like a thoughtful sales rep, not a marketer.\n* SMS must remain simple, casual, and friendly.\n* Final outputs must be logged in a Google Sheet.\n\n## Instructions\n\n1. Parse the input fields to capture:\n\n   * Prospect\u2019s first name, company, business type, project\n   * Their main pain point or goal\n   * Tech stack or method they\u2019re currently using\n2. Use the **Testimonials Tool** to pull a relevant success story that matches size, industry, or problem. Extract:\n\n   * Company name\n   * Business type\n   * Specific result\n   * Outcome\n   * Solution used\n3. Draft a subject line in this style:\n\n   * \u201cExcited to connect, (first name)\u201d\n4. Write the email in this **exact voice and structure**:\n   `\\n   Subject: Excited to connect, (first name)\\n\\n   Hey (first name),\\n\\n   Saw your booking\u2014excited to dive in on (meeting date).\\n\\n   Automating (problem/project) is right in our wheelhouse. We actually just helped (testimonial first name) who owns (testimonial business name/type) [achieve similar outcome] and (outcome)\u2014just by (solution).\\n\\n   Looking forward to showing you what\u2019s possible.\\n\\n   \u2013 Bello\\n   `\n5. Draft the SMS in this format:\n\n   * \u201cHey (first name)! Nolan from Agent Stack here\u2014just saw your appointment come through. Pumped to hear more about (project details). See you on (meeting day/date)!\u201d\n6. Output must include three fields:\n\n   * **Subject**\n   * **Email**\n   * **Text Message**\n\n## Tools\n\n* **Testimonials Tool** \u2192 Pull relevant proof points\n* **Email Agent** \u2192 Format and polish copy\n* **Update Sheets 2** \u2192 Store all outputs\n\n## Examples\n\n* **Output Subject:**\n  Excited to connect, Jason\n\n* **Output Email:**\n  Hey Jason,\n\n  Saw your booking\u2014excited to dive in on Thursday.\n\n  Automating custom proposal workflows is right in our wheelhouse. We actually just helped Vibe Studios, a creative agency, cut 12+ hrs/week of manual drafting and boost proposal output by 4x\u2014just by automating creative packaging from content requests.\n\n  Looking forward to showing you what\u2019s possible.\n\n  \u2013 Bello\n\n* **Output Text Message:**\n  Hey Jason! Nolan from Agent Stack here\u2014just saw your appointment come through. Pumped to hear more about your proposal automation plans. See you on Thursday!\n\n## SOP (Standard Operating Procedure)\n\n1. Parse all inputs:\n\n   * Name\n   * Specific problem or goal\n   * Relevant testimonial\n2. Draft outputs:\n\n   * Subject line (personalized with first name)\n   * Email (structured + testimonial)\n   * SMS (casual + project reference)\n3. Return the three fields:\n\n   * Output Subject\n   * Output Email\n   * Output Text Message\n4. Use **Update Sheets 2** to log:\n\n   * Name\n   * Email\n   * Company Name\n   * Subject\n   * Email Body\n   * SMS Message\n\n## Final Notes\n\n* Keep formatting clean and minimal \u2014 no fluff, no pitchy jargon.\n* Always center the testimonial \u2014 it must directly address the prospect\u2019s challenge.\n* Voice = proactive, thoughtful rep who has done their homework.\n\n---\n\n \n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "4e15e2b7-b94a-49d3-864e-b02bd85b44f1",
      "name": "Review Calls",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        976,
        208
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "FILL",
              "lookupColumn": "company_overview"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 236449331,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit#gid=236449331",
          "cachedResultName": "Meeting Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit?usp=drivesdk",
          "cachedResultName": "Mock Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "460213b4-6595-49c0-a92a-f73e84c0e07d",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1984,
        416
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"subject\": {\n      \"type\": \"string\",\n      \"description\": \"The subject line of the confirmation email\"\n    },\n    \"email\": {\n      \"type\": \"string\",\n      \"description\": \"The full content of the confirmation email\"\n    },\n    \"text_message\": {\n      \"type\": \"string\",\n      \"description\": \"The full content of the confirmation SMS message\"\n    }\n  },\n  \"required\": [\"subject\", \"email\", \"text_message\"]\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "a5b5bf6c-5a45-4417-b98e-95a22a34ad67",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 672,
        "height": 1728,
        "content": "## Sales Call Research & Follow-Up Automation\n\n**Goal:** Automatically research companies from booked calls, enrich data, and generate personal follow-up emails + SMS in Google Sheets.\n\n\n### 1. Prepare Google Sheets\n\n* Create (or connect) a **Google Sheet** with at least two tabs:\n\n  * **Meeting Data** \u2192 holds prospect info (**Name, Email, Company Name, Website, Business Type, Project**) and will be enriched with outputs.\n  * **Success Stories** \u2192 a list of **testimonials** (company, industry, results, outcome, solution used).\n\n* Ensure **Meeting Data** has these output headers as well:\n\n  * **company\\_overview, tech\\_stack, company\\_updates, primary\\_solution, solution\\_2, solution\\_3, email\\_subject, email\\_text, sms**\n\n---\n\n### 2. Connect Credentials in n8n\n\n* **Google Sheets** \u2192 authorize n8n to access your sheet.\n\n* **OpenAI** \u2192 add your API key (used for research + writing).\n\n* **Tavily** \u2192 add your API key (used for company background + updates).\n\n* Store all keys in **n8n Credentials** (don\u2019t hardcode).\n\n---\n\n### 3. Node Setup\n\n* **Trigger / Review Calls** \u2192 pulls new rows from *Meeting Data*.\n* **AI Agent** \u2192\n\n  * Uses **Tavily** to research: **company\\_overview, tech\\_stack, company\\_updates**.\n  * Uses **Product List** to suggest: **primary\\_solution, solution\\_2, solution\\_3**.\n  * Passes results to the **Update Sheet** node.\n* **Update Sheet** \u2192 updates the same row in *Meeting Data* with the six research fields.\n* **Sales Writing Assistant** \u2192\n\n  * Uses **prospect context + testimonials** to draft a **subject, email, and SMS**.\n  * Calls **Update Sheets 2** to save outputs.\n* **Update Sheets 2** \u2192 updates *Meeting Data* with final outreach content (**email\\_subject, email\\_text, sms**).\n\n---\n\n### 4. Test the Workflow\n\n* Add a **test row** in *Meeting Data* with sample prospect info.\n* Run the workflow manually (**Test Workflow**).\n* Confirm:\n\n  * **Research fields** are filled.\n  * **Email + SMS outputs** are written back into the row.\n\n---\n\n### 5. Go Live\n\n* Replace the **manual trigger** with your **real booking system** (e.g., Calendly \u2192 Google Sheets \u2192 n8n).\n* Keep running in background to **enrich and draft messages automatically**.\n\n---\n\n### \u26a0\ufe0f Troubleshooting\n\n* **No updates in sheet?** \u2192 Check the matching column is set to **Email**.\n* **Blank outputs?** \u2192 Make sure **Success Stories** tab has at least one testimonial.\n* **Auth errors?** \u2192 Reconnect **OpenAI**, **Tavily**, or **Google Sheets** credentials.\n* **Data mismatch?** \u2192 Verify your column headers exactly match the names used in the nodes.\n* **Workflow stuck?** \u2192 Run in **debug mode** and check if the AI Agent or Sales Writing Assistant timed out.\n\n---\n\n \n"
      },
      "typeVersion": 1
    },
    {
      "id": "0b011c68-9d96-4008-a8f0-9a6052a57b20",
      "name": "Company Research (Tavily)",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1152,
        432
      ],
      "parameters": {
        "url": "https://api.tavily.com/search",
        "method": "POST",
        "jsonBody": "{\n  \"api_key\": \"={{$json.api_key}}\",\n  \"query\": \"{searchTerm}\",\n  \"search_depth\": \"basic\",\n  \"include_answer\": true,\n  \"topic\": \"news\",\n  \"include_raw_content\": true,\n  \"max_results\": 3\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "toolDescription": "Use this tool to search the internet",
        "placeholderDefinitions": {
          "values": [
            {
              "name": "searchTerm",
              "type": "string",
              "description": "What the user has requested to search the internet for"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "efc09ac7-c7bd-4d0e-815b-b6f9efb5ceef",
      "name": "Fetch Success Stories",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1760,
        608
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2060485763,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit#gid=2060485763",
          "cachedResultName": "Success Stories"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit?usp=drivesdk",
          "cachedResultName": "Mock Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "4cd04c49-263d-4742-a4ba-18f1362ea0f1",
      "name": "Fetch Product List",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1264,
        576
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1986928329,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit#gid=1986928329",
          "cachedResultName": "Products"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit?usp=drivesdk",
          "cachedResultName": "Mock Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "da31391a-dd64-42c8-bccd-1d63b2272fac",
      "name": "Update Prospect Research",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1376,
        512
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.Email }}",
            "solution_2": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('solution_2', ``, 'string') }}",
            "solution_3": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('solution_3', ``, 'string') }}",
            "tech_stack": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('tech_stack', ``, 'string') }}",
            "company_updates": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('company_updates', ``, 'string') }}",
            "company_overview": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('company_overview', ``, 'string') }}",
            "primary_solution": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('primary_solution', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Call Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Call Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Business Type",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Business Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Project",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_overview",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_overview",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tech_stack",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tech_stack",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_updates",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_updates",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "primary_solution",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "primary_solution",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "solution_2",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "solution_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "solution_3",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "solution_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_subject",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "email_subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_text",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "email_text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sms",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sms",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 236449331,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit#gid=236449331",
          "cachedResultName": "Meeting Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit?usp=drivesdk",
          "cachedResultName": "Mock Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "0f9e2569-5ab4-42e2-8d1a-50ea4f5fb152",
      "name": "Update Follow-up Messages",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1904,
        560
      ],
      "parameters": {
        "columns": {
          "value": {
            "sms": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('sms', ``, 'string') }}",
            "Email": "={{ $('Review Calls').item.json.Email }}",
            "email_text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('email_text', ``, 'string') }}",
            "email_subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('email_subject', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Call Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Call Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Business Type",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Business Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Project",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_overview",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_overview",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tech_stack",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "tech_stack",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_updates",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_updates",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "primary_solution",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "primary_solution",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "solution_2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "solution_2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "solution_3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "solution_3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_subject",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email_subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_text",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email_text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sms",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sms",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 236449331,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit#gid=236449331",
          "cachedResultName": "Meeting Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4/edit?usp=drivesdk",
          "cachedResultName": "Mock Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "7635b101-9cb1-41ef-8bb2-6de975e0506d",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1632,
        448
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f4378265-7e99-4028-987b-7af6565ab390",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        592
      ],
      "parameters": {
        "width": 528,
        "height": 384,
        "content": "## Tavily Guide \nSetting up the Tavily Node\n\n**Get API Key** \u2192 Sign up at Tavily and copy your API key.\n\n**Save in n8n** \u2192 Go to Settings \u2192 Credentials, create a Tavily API credential, and paste the key.\n\n**Configure Node** \u2192 In the Company Research (Tavily) node:\n\nSet Authentication to your Tavily API credentials.\n\nFor Query, map the company field (e.g. ={{$json[\"Company\"]}}).\n\nKeep search_depth = basic, include_answer = true, include_raw_content = true, max_results = 3.\n\n**Test** \u2192 Run the node with a sample company to confirm results."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c4bce4a5-ebb6-435f-9bb4-e2016b4a7064",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Review Calls": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Product List": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Success Stories": {
      "ai_tool": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Update Prospect Research": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Company Research (Tavily)": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Update Follow-up Messages": {
      "ai_tool": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Review Calls",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n template automates prospect research and personalized follow-up writing right after a sales call is booked.

Source: https://n8n.io/workflows/7491/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Google Sheets Setup Connect your Google account via OAuth2 in the "Review Calls", "Product List", "Testimonials Tool", "Update Sheet", and "Update Sheets 2" nodes. Duplicate the mock Google Sheet (ID:

Agent, OpenAI Chat, Tool Http Request +3
AI & RAG

Sales Assistant Build. Uses manualTrigger, agent, lmChatOpenAi, toolHttpRequest. Event-driven trigger; 13 nodes.

Agent, OpenAI Chat, Tool Http Request +3
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

🧠 Gwen – The AI Voice Marketing Agent Gwen is your intelligent voice-powered marketing assistant built in n8n. She combines the power of OpenAI, ElevenLabs, and automation workflows to handle content

Tool Workflow, Memory Buffer Window, Agent +10
AI & RAG

This workflow is perfect for creators, solopreneurs, and personal brands who want to consistently publish bold, high-performing content on X (Twitter) — without writing a single line themselves. After

OpenAI Chat, Memory Buffer Window, Tool Workflow +10