AutomationFlowsAI & RAG › Generate AI Sales Battle Cards with Olostep, Gemini, and Google Docs

Generate AI Sales Battle Cards with Olostep, Gemini, and Google Docs

ByYasser Sami @yassersami on n8n.io

This n8n template automatically generates high-quality sales battle cards for any prospect company using real-time research and AI. It analyzes company news, website content, and your product’s value proposition to create personalized outreach hooks, talk tracks, and objection…

Event trigger★★★★☆ complexityAI-powered22 nodesN8N Nodes OlostepGoogle GeminiForm TriggerHTTP RequestGoogle Drive
AI & RAG Trigger: Event Nodes: 22 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Form Trigger → Google Drive 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": "DcMrQDrRcqk8Zga0",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Sales Battle Card",
  "tags": [
    {
      "id": "xRJNyiRIpAsEzL8y",
      "name": "Olostep",
      "createdAt": "2026-01-31T11:17:46.807Z",
      "updatedAt": "2026-01-31T11:17:46.807Z"
    }
  ],
  "nodes": [
    {
      "id": "7f489ca8-02d8-4de5-b91d-db09dbe4485e",
      "name": "Company research",
      "type": "n8n-nodes-olostep.olostepScrape",
      "position": [
        176,
        0
      ],
      "parameters": {
        "task": "=Find me the newst {{ $json['Company Name'] }} news, {{ $json['Company Name'] }} challenges, {{ $json['Company Name'] }} hiring.",
        "resource": "answer"
      },
      "credentials": {
        "olostepScrapeApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5f3ef6e7-2c6a-4081-95e0-5eeb5a663c1b",
      "name": "Research Analyzer",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        592,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Research Data: {{ $('Company research').item.json.result.result }}\n\nValue Proposition: {{ $('On form submission').item.json['Value proposition'] }}"
            },
            {
              "role": "model",
              "content": "=You are a professional research analyzer.\n\nAnalyze the provided research data regarding the prospect company and compare it against our product value proposition.\n\nI. Critical Business Triggers Identify 2-3 specific events from the research (e.g., a new product launch, a hiring surge in support, a recent round of funding, or public complaints about their response times) that make our solution relevant right now.\n\nII. The Value Match For each trigger identified, explain exactly how our product solves the specific pressure that event creates."
            }
          ]
        },
        "jsonOutput": true,
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "a313cd2e-6950-40b0-bf60-6b3122d4ed95",
      "name": "Pitch Assets generator",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        912,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Value match analysis: {{ $json.content.parts.last().text }}\nLanding page content: {{ $('Scrape company website').item.json.markdown_content }}"
            },
            {
              "role": "model",
              "content": "=Based on the Business Triggers and Value Match analysis provided, generate the following sales assets:\n\nI. The 'Hook' (Email/LinkedIn Opener) Write a 2-sentence opening line for a cold outreach that references a specific piece of news from the analysis or an important information from their landing page and ties it directly to our primary benefit.\n\nII. High-Impact Talk Tracks Provide two 'Value-Based Questions' the salesperson should ask to highlight the prospect's current pain (e.g., 'How is the current support team handling the volume from the new launch?').\n\nIII. Predicted Objection & Rebuttal Identify the most likely reason this specific company would say 'No' (e.g., 'We just hired people' or 'We value the human touch') and provide a 1-sentence pivot that reframes our AI as a tool for 'Empowering humans' rather than replacing them.\n\nProvide the output in clean Markdown without any extraneous text."
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "6c818d9b-1d2e-4eea-af74-7403371cf152",
      "name": "Sales battle card generator",
      "type": "@n8n/n8n-nodes-langchain.googleGemini",
      "position": [
        1232,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "models/gemini-2.5-flash",
          "cachedResultName": "models/gemini-2.5-flash"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Value Match Analysis: {{ $('Research Analyzer').item.json.content.parts.last().text }}\nPitch Assets: {{ $json.content.parts.last().text }}\n\nSources: {{ $('Company research').item.json.sources }}"
            },
            {
              "role": "model",
              "content": "=You are a Sales Enablement specialist. Combine the provided analysis and pitch assets into a professional, one-page Sales Battle Card for {{ $('On form submission').item.json['Company Name'] }}.\n\nStructure the report with the following headers:\n\nSales Battle Card: [Company Name]\n\nExecutive Summary (Why Reach Out Now?)\n\n[Combine the Triggers and Value Match into a cohesive 3-sentence summary]\n\nOutreach Assets (The Hook & Talk Tracks)\n\n[Insert the Email Opener and Value-Based Questions]\n\nObjection Handling\n\n[Insert the Predicted Objection and the Pivot]\n\nResearch Sources\n\n[List the source URLs provided in the research data]\n\nFormat the entire output as clean Markdown ready for a Google Docs Writer node. Do not include any meta-commentary."
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2ce5a26f-b44b-4257-9802-fdb1361b3ff6",
      "name": "Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        -16,
        224
      ],
      "parameters": {
        "mode": "markdownToHtml",
        "options": {
          "tables": true,
          "simplifiedAutoLink": true,
          "completeHTMLDocument": true
        },
        "markdown": "={{ $json.content.parts.last().text }}"
      },
      "typeVersion": 1
    },
    {
      "id": "189640be-4560-4450-8762-074b07fde8c0",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -16,
        0
      ],
      "parameters": {
        "options": {},
        "formTitle": "Sales Battle Card for a prospect",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Company Name",
              "placeholder": "Olostep"
            },
            {
              "fieldLabel": "Company website URL",
              "placeholder": "olostep.com"
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Value proposition"
            }
          ]
        },
        "formDescription": "Please enter the company information"
      },
      "typeVersion": 2.5
    },
    {
      "id": "de11c4a2-d5be-4d62-82ed-be30cd76be50",
      "name": "Transfer HTML to Doc",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        736,
        224
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/drive/v3/files/{{ $json.id }}/copy?fields=id,name,mimeType,webViewLink",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"name\":     \"Sales Battle Card for {{ $('On form submission').item.json['Company Name'] }}\",\n  \"mimeType\": \"application/vnd.google-apps.document\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googleDriveOAuth2Api"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cf35b5ea-7815-452f-b26c-b8c632469372",
      "name": "Generate HTML Binary File",
      "type": "n8n-nodes-base.code",
      "position": [
        352,
        224
      ],
      "parameters": {
        "jsCode": "// Loop over alle items\nreturn $input.all().map(item => {\n  const html = $input.first().json.data;            // jouw HTML-string\n  // Zet \u2018m om naar een Buffer\n  item.binary = {\n    htmlFile: {\n      data: Buffer.from(html, 'utf8').toString('base64'),\n      mimeType: 'text/html',\n      fileName: 'output.html'\n    }\n  };\n  // Je hebt verder geen JSON nodig, dus ruim op:\n  return { json: {}, binary: item.binary };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "0476ce85-dd9c-4fe3-9365-6f4f043227ef",
      "name": "html content",
      "type": "n8n-nodes-base.set",
      "position": [
        160,
        224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "69cee206-3799-4624-b7f0-b1882e81e38a",
              "name": "data",
              "type": "string",
              "value": "={{ $json.data }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b0b2be56-63e4-4eeb-8888-59ee8f6731cf",
      "name": "Share link & email",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1152,
        224
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Transfer HTML to Doc').item.json.id }}"
        },
        "options": {
          "emailMessage": "=Hey,\n\nYour \"Sales Battle Card for {{ $('On form submission').item.json['Company Name'] }}\" file is ready, find it at this link."
        },
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "reader",
            "type": "user",
            "emailAddress": "user@example.com"
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a72b2002-4875-42ea-9ab5-5867a377474a",
      "name": "Delete html file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        944,
        224
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Upload html file').item.json.id }}"
        },
        "options": {},
        "operation": "deleteFile"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "139067e9-8b6c-4acf-8613-02af566cff92",
      "name": "Upload html file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        544,
        224
      ],
      "parameters": {
        "name": "working isa",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultUrl": "https://drive.google.com/drive",
          "cachedResultName": "/ (Root folder)"
        },
        "inputDataFieldName": "htmlFile"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a419e677-fbf2-4111-ad1a-c66aa0c4b7c8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -496
      ],
      "parameters": {
        "width": 672,
        "height": 1968,
        "content": "# AI Sales Battle Card Generator (Research + Personalized Pitch Assets)  \n\nThis n8n template automatically generates **high-quality sales battle cards** for any prospect company using real-time research and AI.  \nIt analyzes company news, website content, and your product\u2019s value proposition to create **personalized outreach hooks, talk tracks, and objection handling** \u2014 all delivered as a ready-to-use document.\n\n## Who\u2019s it for  \n- Sales reps and SDRs preparing for outreach  \n- Founders doing high-quality cold outreach  \n- Sales teams building personalized pitches at scale  \n- Agencies doing outbound lead generation  \n- Anyone who wants deeper, research-driven sales conversations  \n\n## How it works / What it does  \n1. **Form Input**  \n   - Enter:  \n     - Company name  \n     - Company website URL  \n     - Your product\u2019s value proposition  \n\n2. **Company Research (Olostep)**  \n   - Searches for the latest company news, hiring trends, and challenges.  \n   - Identifies signals like growth, funding, or operational pressure.\n\n3. **Website Scraping**  \n   - Scrapes the company\u2019s website to understand positioning, messaging, and offerings.\n\n4. **AI Research Analysis**  \n   - AI identifies:  \n     - Key business triggers (why now?)  \n     - Opportunities where your product fits  \n   - Maps your value proposition to real company needs.\n\n5. **Pitch Asset Generation**  \n   - Generates personalized sales assets:  \n     - Cold outreach hook (email/LinkedIn opener)  \n     - High-impact discovery questions  \n     - Likely objection + smart rebuttal  \n\n6. **Battle Card Generation**  \n   - Combines everything into a structured **Sales Battle Card** including:  \n     - Executive summary  \n     - Outreach assets  \n     - Objection handling  \n     - Research sources  \n\n7. **Document Creation (Google Docs)**  \n   - Converts the output into a clean document.  \n   - Automatically creates a Google Doc with the final battle card.\n\n8. **Share & Notify**  \n   - Shares the document via Google Drive.  \n   - Sends an email with the link to the generated battle card.\n\nThis workflow turns raw company data into a **ready-to-use sales playbook in minutes**.\n\n## How to set up  \n1. Import the template into your n8n workspace.  \n2. Add your **Olostep API key**.  \n3. Connect your **Google Drive** account.  \n4. Add your **AI model provider** (Gemini or OpenAI).  \n5. Run the form and generate your first battle card.\n\n## Requirements  \n- n8n account (cloud or self-hosted)  \n- Olostep API key  \n- Google Drive / Google Docs access  \n- AI model provider (Gemini or OpenAI)  \n\n## How to customize the workflow  \n- Adjust prompts to match your sales style or industry.  \n- Add CRM integration (HubSpot, Salesforce).  \n- Generate multiple variations of outreach hooks.  \n- Add scoring for lead qualification.  \n- Store battle cards in Notion or a database.  \n\n---\n\nThis template helps you go from generic outreach to highly personalized, research-driven sales conversations instantly."
      },
      "typeVersion": 1
    },
    {
      "id": "62b9b03d-6c06-448c-9b48-cead0ce439f0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -96
      ],
      "parameters": {
        "color": 7,
        "height": 240,
        "content": "## Input Form \nEnter company name, website, and your value proposition."
      },
      "typeVersion": 1
    },
    {
      "id": "75d71310-319b-4ceb-999c-7b48d3b41ee0",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 368,
        "height": 240,
        "content": "## Company Research \nOlostep finds news, hiring trends, and business signals. Then scrapes the company website\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ccaabf73-3fac-42a5-80d5-27de448b3838",
      "name": "Scrape company website",
      "type": "n8n-nodes-olostep.olostepScrape",
      "position": [
        384,
        0
      ],
      "parameters": {
        "url_to_scrape": "={{ $('On form submission').item.json['Company website URL'] }}"
      },
      "credentials": {
        "olostepScrapeApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b970020f-4217-4a66-967f-a6eece15609f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 336,
        "height": 240,
        "content": "## AI Analysis \nIdentifies business triggers and matches them with your value."
      },
      "typeVersion": 1
    },
    {
      "id": "db1a66cb-ae91-4d96-bea6-b7b6bc15e6f0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 240,
        "content": "## Pitch Assets \nGenerates outreach hook, questions, and objection handling."
      },
      "typeVersion": 1
    },
    {
      "id": "3116902d-dcbc-420b-a460-6944ae029433",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1184,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 240,
        "content": "## Battle Card \nCombines everything into a structured sales document."
      },
      "typeVersion": 1
    },
    {
      "id": "120812ea-f1dd-4618-8334-6cee95f95d57",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        144
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 240,
        "content": "## Share & Notify\nShares the doc and sends an email with the link."
      },
      "typeVersion": 1
    },
    {
      "id": "1d8dd28f-e150-41ad-b0b2-d25e58a57e64",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        144
      ],
      "parameters": {
        "color": 7,
        "width": 576,
        "height": 240,
        "content": "## Markdown to HTML\nConverts Markdown content into HTML and creates an HTML binary file."
      },
      "typeVersion": 1
    },
    {
      "id": "dd02b784-830a-4550-83e8-5461aba5215a",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        144
      ],
      "parameters": {
        "color": 7,
        "width": 592,
        "height": 240,
        "content": "## Upload The File\nUploads the HTML file then converts it to google doc format and re-upload the file. And then deletes the old HTML file."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "a45fe48b-e6f0-443a-beff-33d72872c3e7",
  "connections": {
    "Markdown": {
      "main": [
        [
          {
            "node": "html content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "html content": {
      "main": [
        [
          {
            "node": "Generate HTML Binary File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Company research": {
      "main": [
        [
          {
            "node": "Scrape company website",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete html file": {
      "main": [
        [
          {
            "node": "Share link & email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload html file": {
      "main": [
        [
          {
            "node": "Transfer HTML to Doc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Research Analyzer": {
      "main": [
        [
          {
            "node": "Pitch Assets generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Company research",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transfer HTML to Doc": {
      "main": [
        [
          {
            "node": "Delete html file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pitch Assets generator": {
      "main": [
        [
          {
            "node": "Sales battle card generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape company website": {
      "main": [
        [
          {
            "node": "Research Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate HTML Binary File": {
      "main": [
        [
          {
            "node": "Upload html file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sales battle card generator": {
      "main": [
        [
          {
            "node": "Markdown",
            "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 automatically generates high-quality sales battle cards for any prospect company using real-time research and AI. It analyzes company news, website content, and your product’s value proposition to create personalized outreach hooks, talk tracks, and objection…

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

Understand your customers before you build for them. This workflow, Market Segmentation: Buyer Persona Pain Point Report, automates the grueling process of primary market research. By scraping real-wo

Form Trigger, Google Gemini, N8N Nodes Olostep +3
AI & RAG

Stop spending hours manually repurposing long-form content. The Content Atomizer.json workflow takes a single article URL and automatically "atomizes" it into high-authority LinkedIn posts, Twitter (X

Form Trigger, Google Gemini, N8N Nodes Olostep +2
AI & RAG

Establish yourself as a thought leader by answering the questions that everyone else is ignoring. The Content Authority Roadmap workflow automates deep-dive research into Reddit, Quora, and niche foru

Form Trigger, N8N Nodes Olostep, Google Gemini +2
AI & RAG

Stop guessing what to build next. The Competitive Roadmap & Trend Arbitrage workflow acts as your automated R&D department. It compares your current product capabilities against real-time market data,

Form Trigger, N8N Nodes Olostep, Google Gemini +2
AI & RAG

This workflow automates the creation of AI-generated viral selfie images with celebrities using Nano Banana Pro Edit via RunPod, generates engaging social media captions, and publishes the content to

HTTP Request, Form Trigger, N8N Nodes Postiz +2