AutomationFlowsAI & RAG › Automate Sales Outreach with Openai, Tavily & Google Sheets for Prospect…

Automate Sales Outreach with Openai, Tavily & Google Sheets for Prospect…

Original n8n title: Automate Sales Outreach with Openai, Tavily & Google Sheets for Prospect Research

ByLeeWei @leeweihernandez07 on n8n.io

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: ) to your drive and update the in all Google Sheets nodes to match your copy's…

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

This workflow corresponds to n8n.io template #8014 — 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": "PN2BI4GGD6HE5lcu",
  "name": "\u2699\ufe0f Automate Prospect Research and Personalized Outreach for Sales Calls",
  "tags": [],
  "nodes": [
    {
      "id": "7dc4bbec-dae0-459f-840b-909b9bc46e5a",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        256,
        -80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a7ab2ed8-4b80-43c8-9ee6-f5df7f30fcb9",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        688,
        -80
      ],
      "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": "# Overview  \nYou are an AI agent responsible for gathering company data and updating a Google Sheet with structured output.  \n\n## Context  \n- After generating output, you must call the **Update Sheet** tool with six specific fields.  \n- Do not skip this step or simply return JSON. The tool must be called explicitly to trigger the Google Sheet update.  \n\n## Instructions  \n1. Accept and parse the input fields.  \n2. Use the **Tavily** tool to gather and summarize:  \n   - `company_overview`  \n   - `tech_stack`  \n   - `company_updates`  \n3. Use the **Product List** tool to identify:  \n   - `primary_solution`  \n   - `solution_2`  \n   - `solution_3`  \n4. Format all results as valid JSON with exactly six fields.  \n5. Immediately call the **Update Sheet** tool using the structure shown below.  \n\n## Tools  \n- **Tavily**: Use to research company background, tech stack, and updates.  \n- **Product List**: Use to find relevant products based on business type and project.  \n- **Update Sheet**: Required to write the six outputs into Google Sheets.  \n\n## Examples  \n### Example Input  \n```json\n{\n  \"Name\": \"Acme Inc.\",\n  \"Website\": \"https://www.acme.com\",\n  \"Business Type\": \"E-commerce\",\n  \"Project\": \"Streamlining logistics with automation\"\n}\n```  \n\n### Example Tavily Summary  \n```json\n{\n  \"company_overview\": \"Acme 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 Result  \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 Tool Call  \n```json\n{\n  \"tool_call\": {\n    \"tool\": \"Update Sheet\",\n    \"parameters\": {\n      \"company_overview\": \"Acme 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)  \n1. Parse and validate input fields.  \n2. Use Tavily to collect:  \n   - company_overview  \n   - tech_stack  \n   - company_updates  \n3. Use Product List to determine:  \n   - primary_solution  \n   - solution_2  \n   - solution_3  \n4. Combine results into a valid JSON object using exact field names.  \n5. Call the Update Sheet tool using that object.  \n\n## Final Notes  \n- Return only valid JSON \u2014 no extra text or descriptions.  \n- Always include all six fields, even if data is limited.  \n- Use of the Update Sheet tool is mandatory to complete the task.  \n---\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "bd083da2-6ad3-410e-a651-4ad3a8330bb2",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        544,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "ef3cb50c-32c4-4ff4-9964-1a2192966ffb",
      "name": "Tavily",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        656,
        144
      ],
      "parameters": {
        "url": "https://api.tavily.com/search",
        "method": "POST",
        "jsonBody": "{\n    \"api_key\": \"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\",\n    \"query\": \"{searchTerm}\",\n    \"search_depth\": \"basic\",\n    \"include_answer\": true,\n    \"topic\": \"news\",\n    \"include_raw_content\": true,\n    \"max_results\": 3\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": "210bb30f-aa00-4a35-9d7c-1865611d52f7",
      "name": "Product List",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        768,
        288
      ],
      "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"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "dd39dd98-d366-4329-9e38-547123f0914b",
      "name": "Update Sheet",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        880,
        224
      ],
      "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"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "3ed64385-9943-46e0-b9c6-0db5de32b94e",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        976,
        128
      ],
      "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": "77d1ddb7-4a7f-436e-8fd2-1d5aa5720481",
      "name": "Sales Writing Assistant",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1184,
        -80
      ],
      "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": "# Overview  \nYou are a Sales Writing Assistant AI agent responsible for generating a short, personal, and persuasive email, subject line, and SMS right after a prospect books a call. The format must feel handcrafted and human, while integrating strong personalization and a sharp testimonial to build conviction fast.  \n\n## Context  \n- The prospect should feel like the message was written specifically for them\u2014not templated or generic.  \n- The core structure focuses on one key problem they face, followed by immediate proof that we\u2019ve solved that problem for someone just like them.  \n- Messaging must be short, clean, confident, and natural\u2014written like a thoughtful sales rep, not a marketer.  \n- SMS should be simple, friendly, and casual.  \n- Final output must also be logged in a Google Sheet.  \n\n## Instructions  \n1. Analyze the input fields to identify:  \n   - Prospect\u2019s first name, company, business type, and project  \n   - Their specific pain point or goal  \n   - Tech stack or approach they\u2019re using to solve it  \n2. Use the Testimonials Tool to find a success story with a company similar in size, industry, or problem. Pull:  \n   - Company name  \n   - Business type  \n   - Specific result  \n   - Outcome  \n   - Solution used  \n3. Draft a subject line like:  \n   - \u201cExcited to connect, (first name)\u201d  \n4. Write the email using the following exact structure and voice:  \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 Nolan\n   ```\n5. Draft the SMS message using this format:  \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:  \n   - Subject  \n   - Email  \n   - Text Message  \n\n## Tools  \n- Testimonials Tool: For pulling relevant proof points  \n- Email Agent: For formatting and polishing  \n- Update Sheets 2: To store outputs  \n\n## Examples  \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 who runs 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 Nolan  \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)  \n1. Parse all inputs and identify:  \n   - Name  \n   - Specific problem or goal  \n   - Relevant testimonial  \n2. Draft:  \n   - Subject line using first name  \n   - Email using the provided structure and tone  \n   - SMS with natural tone  \n3. Output fields:  \n   - Output Subject  \n   - Output Email  \n   - Output Text Message  \n4. Use Update Sheets 2 to store the following:  \n   - Name  \n   - Email  \n   - Company Name  \n   - Subject  \n   - Email Body  \n   - SMS Message  \n\n## Final Notes  \n- Use clean, minimal formatting\u2014no fluff, no pitchy language.  \n- The testimonial is central\u2014tie it directly to the prospect\u2019s challenge.  \n- The tone should sound like a proactive, thoughtful rep who did their homework.  \n---\n\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "cbfff133-26cf-4664-941f-f16e3f7d6941",
      "name": "Review Calls",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        480,
        -80
      ],
      "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"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "2b18954c-9d14-47db-9883-1b44f5b44b8c",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1136,
        160
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "30ea88b4-5c47-4301-9255-8a2744e776cf",
      "name": "Testimonials Tool",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1264,
        320
      ],
      "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"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "30a1b721-3131-4a33-b655-f2fcb749c816",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1488,
        128
      ],
      "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": "8bb34416-b063-47db-bf67-c5df5e0b9cfa",
      "name": "Update Sheets 2",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1408,
        272
      ],
      "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"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "51640668-4212-4a55-92cb-e71829734de1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -400
      ],
      "parameters": {
        "width": 464,
        "height": 768,
        "content": "### \u2699\ufe0f Sales Assistant Build: Automate Prospect Research and Personalized Outreach for Sales Calls\n\n### \ud83e\uddd1\u200d\ud83d\udcbb Author: [LeeWei]\n\n---\n\n### \ud83d\ude80 Steps to Connect:\n\n1. **Google Sheets Setup**\n    - Connect your Google account via OAuth2 in the \"Review Calls\", \"Product List\", \"Testimonials Tool\", \"Update Sheet\", and \"Update Sheets 2\" nodes.\n    - Duplicate the mock Google Sheet (ID: `1u3WMJwYGwZewW1IztY8dfbEf5yBQxVh8oH7LQp4rAk4`) to your drive and update the `documentId` in all Google Sheets nodes to match your copy's ID.\n    - Ensure the sheet has tabs for \"Meeting Data\", \"Products\", and \"Success Stories\" populated with your data.\n    - Setup time: ~5 minutes.\n\n2. **OpenAI API Key**\n    - Go to [OpenAI](https://platform.openai.com/) and generate your API key.\n    - Paste this key into the credentials for both \"OpenAI Chat Model\" and \"OpenAI Chat Model1\" nodes.\n    - Setup time: ~2 minutes.\n\n3. **Tavily API Key**\n    - Sign up at [Tavily](https://tavily.com/) and get your API key.\n    - In the \"Tavily\" node, replace the placeholder `api_key` in the JSON body with your key (e.g., `\"api_key\": \"your-tavily-key-here\"`).\n    - Setup time: ~3 minutes.\n\n---\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "bcde15ce-da96-4ef2-a57a-41f595a3d490",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        -400
      ],
      "parameters": {
        "width": 640,
        "height": 304,
        "content": "\n### How it Works\n\n\u2022 Triggers on a new sales call booking (manual for testing).  \n\u2022 Pulls prospect details from Google Sheets and researches their company, tech stack, and updates using Tavily.  \n\u2022 Matches relevant products/solutions from your product list and updates the sheet.  \n\u2022 Generates personalized email confirmation (subject + body) and SMS using testimonials for relevance.  \n\u2022 Updates the sheet with the outreach content for easy follow-up.\n\nSetup takes ~10-15 minutes total. All nodes are pre-configured\u2014edit only the fields above. Detailed notes (e.g., prompt tweaks) are in sticky notes within the workflow.\n)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "4e4ba2bb-63bb-467c-bd53-fa2faee83424",
  "connections": {
    "Tavily": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Product List": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Review Calls": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Sheet": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Sheets 2": {
      "ai_tool": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Testimonials Tool": {
      "ai_tool": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Sales Writing Assistant",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Review Calls",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

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: ) to your drive and update the in all Google Sheets nodes to match your copy's…

Source: https://n8n.io/workflows/8014/ — 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

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

Agent, OpenAI Chat, Output Parser Structured +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