This workflow corresponds to n8n.io template #11794 — we link there as the canonical source.
This workflow follows the Airtable → Form Trigger 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 →
{
"id": "4DBt7jIiVg1kuEgv",
"name": "Qualify Insurance Leads using Vapi, GPT-4 Proposals and Airtable",
"tags": [],
"nodes": [
{
"id": "a02b2c97-e7d1-4315-afec-dd4228f8b15a",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1424,
-704
],
"parameters": {
"options": {},
"formTitle": "Harvex Insurance",
"formFields": {
"values": [
{
"fieldLabel": "name",
"placeholder": "Type name"
},
{
"fieldType": "email",
"fieldLabel": "Email",
"placeholder": "Type your Email"
},
{
"fieldType": "number",
"fieldLabel": "Phone Number",
"placeholder": "Type your phone number"
}
]
},
"formDescription": "Input your following details for an agent to get back to you !"
},
"typeVersion": 2.3
},
{
"id": "9127768b-f7ae-469c-8437-971c58ecf614",
"name": "Create a record",
"type": "n8n-nodes-base.airtable",
"position": [
-1136,
-704
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appLkiHBdG20uxDwJ",
"cachedResultUrl": "https://airtable.com/appLkiHBdG20uxDwJ",
"cachedResultName": "Leads"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblCyRuAtVAL3Y7sx",
"cachedResultUrl": "https://airtable.com/appLkiHBdG20uxDwJ/tblCyRuAtVAL3Y7sx",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"name": "={{ $json.name }}",
"Email": "={{ $json.Email }}",
"Phone number": "={{ $json[\"Phone Number\"].toString() }}"
},
"schema": [
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone number",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Phone number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Qualify",
"value": "Qualify"
},
{
"name": "Unqualified",
"value": "Unqualified"
}
],
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call summary",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Call summary",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"typecast": true
},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "0e4ef931-ae4e-4647-868c-d0c6e3b46cd6",
"name": "Vapi call",
"type": "n8n-nodes-base.httpRequest",
"position": [
-800,
-704
],
"parameters": {
"url": "https://api.vapi.ai/call/phone",
"method": "POST",
"options": {},
"jsonBody": "={\n \"assistantId:\" \\\"ENTER_ASSISTANT_ID_HERE\\\",\n \"phoneNumberId:\"\\\"ENTER_PHONE_NUMBER_ID_HERE\\\"\",\n \"customer\": {\n \"number\": \"{{ '+230' + $json.fields['Phone number']}}\",\n \"name\": \"{{$json.fields.name }}\"\n },\n \"assistantOverrides\": {\n \"variableValues\": {\n \"name\": \"{{ $json.fields.name }}\",\n \"email\": \"{{$json.fields.Email }}\"\n },\n \"server\": {\n \"url\": \"\"\n },\n \"serverMessages\": [\n \"end-of-call-report\"\n ]\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Authorization"
}
]
}
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
},
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.3
},
{
"id": "1e838f66-e4fa-46e5-82b2-133aeb2da118",
"name": "Post call",
"type": "n8n-nodes-base.webhook",
"position": [
-1648,
-192
],
"parameters": {
"path": "cf226daa-a404-4c24-a44a-33526891e5f2",
"options": {},
"httpMethod": "POST",
"responseMode": "lastNode"
},
"typeVersion": 2.1
},
{
"id": "12df5994-b37f-416d-9365-a2efef290d54",
"name": "Is Qualified ?",
"type": "n8n-nodes-base.if",
"position": [
-1232,
-192
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "471f687c-6e2d-4449-9201-9ec639847886",
"operator": {
"type": "string",
"operation": "regex"
},
"leftValue": "={{ $json.Success }}",
"rightValue": "true"
},
{
"id": "4be77afa-a65a-4173-8498-22c3c0857a38",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json['Type of Insurance'] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "455936e5-9174-4298-a101-eaea08aa27d0",
"name": "Update record1",
"type": "n8n-nodes-base.airtable",
"position": [
-1024,
-256
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appLkiHBdG20uxDwJ",
"cachedResultUrl": "https://airtable.com/appLkiHBdG20uxDwJ",
"cachedResultName": "Leads"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblCyRuAtVAL3Y7sx",
"cachedResultUrl": "https://airtable.com/appLkiHBdG20uxDwJ/tblCyRuAtVAL3Y7sx",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Email": "={{ $json.Email }}",
"Status": "Qualify",
"Call summary": "={{ $json['Call summary '] }}",
"Type of Insurance": "={{ $json['Type of Insurance'] }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone number",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Phone number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Qualify",
"value": "Qualify"
},
{
"name": "Unqualified",
"value": "Unqualified"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Type of Insurance",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Type of Insurance",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call summary",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Call summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "e230a822-80be-45e3-b129-8de107d43c85",
"name": "Send a message",
"type": "n8n-nodes-base.gmail",
"onError": "continueErrorOutput",
"position": [
-464,
-256
],
"parameters": {
"sendTo": "={{ $('Update record1').item.json.fields.Email }}",
"message": "={{ $json.output[0].content[0].text }}",
"options": {},
"subject": "Your insurance blueprint",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.1
},
{
"id": "d44d2932-c1c1-4abf-94b9-07e2c2ca34e2",
"name": "Send a message1",
"type": "n8n-nodes-base.slack",
"position": [
-656,
112
],
"parameters": {
"text": "=*Unqualified Lead Alert*\n\n*Name:* {{ $('Clean data').item.json.Name}}\n*Phone:* {{ $('Clean data').item.json['phone number'] }}\n\n*Call Summary:*\n{{ $('Clean data').item.json['Call summary '] }}\n*Reason:* Lead did not meet qualification criteria.",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0A2Z9HEKL7",
"cachedResultName": "all-harvex"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "6602b532-0c3a-4cb1-bded-a341f9534f64",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1488,
-848
],
"parameters": {
"color": 7,
"width": 864,
"height": 304,
"content": "## Lead Ingestion & Voice Trigger\nCaptures the lead from the form submitted then logs the data in Airtable followed by the phone call via Vapi."
},
"typeVersion": 1
},
{
"id": "3b3ad935-f422-4c66-aed9-f468cb7ac194",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1712,
-320
],
"parameters": {
"color": 7,
"width": 592,
"height": 272,
"content": "## Call Processing & Logic\nReceives the call summary and entity data from Vapi. It determines if the lead provided enough information to be considered as \"Qualified.\""
},
"typeVersion": 1
},
{
"id": "5c7fa027-2707-4da0-9fc4-5252e9ffc4d6",
"name": "Prepare Blueprint",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-816,
-256
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"responses": {
"values": [
{
"role": "system",
"content": "=You are Alex Mercer, a Senior Underwriter and Insurance Consultant at Harvex Insurance.\n\nYour task is to generate a professional \"Insurance Blueprint\" email for a prospective client based on the provided phone consultation summary.\nuse clients name {{ $json.fields.name }} and type of insurance {{ $json.fields['Type of Insurance'] }}\nand personal details provided from call summary.{{ $json.fields['Call summary'] }}\n\n### GUIDELINES:\n1. **Persona:** You are Alex Mercer. Your tone is professional, direct, and helpful. \n2. **Formatting:** \n - Use clean Markdown.\n - **MANDATORY:** You must present the \"Proposed Coverage Plan\" inside a Markdown Table.\n - **Style:** Avoid unnecessary punctuation (no exclamation marks, no excessive ellipses, no decorative symbols like '***'). Keep the text clean and orderly.\n - Do not use fluff words. Be concise.\n\n### EMAIL STRUCTURE:\n\n1. **Salutation:** Professional greeting.\n2. **Executive Summary:** A concise 1-2 sentence overview of their current situation and needs based on the call.\n3. **The Blueprint (Table):** \n - Create a table with two columns: \"Coverage Feature\" and \"Description/Benefit\". \n - Populate this based on the insurance type they requested (e.g., if Health, list Outpatient, Inpatient, Dental; if Auto, list Liability, Collision, etc.).\n4. **Key Benefits:** A simple bulleted list of 3 distinct advantages of choosing XYZ Insurance for this specific plan.\n5. **Next Steps:** Clear instruction on how to bind the coverage.\n6. **Sign-off:** \n Alex Mercer\n Senior Consultant\n Harvex Insurance\n\n### INPUT CONTEXT:\nUse the provided call summary and user details to generate this email. {{ $json.fields.name }}"
}
]
},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "bf44a008-0f2b-4b6b-8d82-eb965a6804ae",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2496,
-880
],
"parameters": {
"width": 656,
"height": 880,
"content": "## Qualify Insurance Leads using Vapi, GPT-4 Proposals and Airtable\n## What this workflow does\n\nThis workflow automates the \"speed-to-lead\" process for insurance brokers. When a prospective client submits a form, the workflow immediately triggers an AI voice agent (Vapi) to call them to gather missing requirements and qualify their interest. After the conversation, the workflow will generate a professional insurance proposal using OpenAI and email it to the client. If the lead is unqualified a slack notification is sent to the team.\n\n### Prerequisites\n\nVapi Account: To handle the AI voice conversation.\nOpenAI Account: To analyze the call and generate the proposal blueprint.\nAirtable: To store lead data and track status.\nGmail: To send the generated blueprint to the client.\nSlack: To receive team notifications for unqualified leads or system errors to take actions.\n\n### How it works\nLead Capture: A lead submits a contact form (Name, Email, Phone). The workflow creates a record in Airtable and immediately triggers a Vapi outbound call to the lead.\nCall Analysis: Once the call ends, Vapi sends a transcript and analysis back to n8n via a Webhook.\nQualification Logic: The workflow checks if the AI successfully identified the \"Type of Insurance\" desired by the client.\nIf Qualified: The workflow updates Airtable, uses OpenAI (GPT-4) to write a detailed \"Insurance Blueprint\" proposal, and emails it directly to the client.\nIf Unqualified: The workflow updates Airtable and sends a notification to a Slack channel explaining why the lead didn't qualify.\nError Handling: If the proposal email fails to send, a fallback alert is sent to Slack containing the proposal text for manual follow-up.\n\n### How to use\n\nSet your Vapi account and edit your system prompt\nSet up other accounts listed in prerequisites.\nConfigure the nodes in order.\n"
},
"typeVersion": 1
},
{
"id": "0044ea00-671d-44ef-b7bc-948d5c43211f",
"name": "Error Handling",
"type": "n8n-nodes-base.slack",
"position": [
-160,
-160
],
"parameters": {
"text": "=*CRITICAL ERROR: Email Failed* *Manual Action Required* The user: {{ $('Is Qualified ?').item.json.Name }}* Email: {{ $('Is Qualified ?').item.json.Email }} is qualified and a blueprint was generated, but the Email Node failed to send it.\n*COPY THE BLUEPRINT BELOW TO SEND MANUALLY:* --- {{ $('Prepare Blueprint').item.json.output[0].content[0].text }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0A2Z9HEKL7",
"cachedResultName": "all-harvex"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "93786273-3ce2-4ed7-b60b-38a04219f3f7",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
-384
],
"parameters": {
"color": 7,
"width": 752,
"height": 304,
"content": "## Qualified Lead Actions \nIf the lead is qualified, the CRM is updated by qualifying the person and GPT-4 is used to draft a custom insurance blueprint. This blueprint is sent to the qualified leads via email"
},
"typeVersion": 1
},
{
"id": "2bfc95eb-8abc-4156-8686-447eeb4cc4e4",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
0
],
"parameters": {
"color": 7,
"width": 592,
"height": 240,
"content": "## Unqualified Lead Actions\nIf the lead is unqualified the CRM updates and alerts the team via Slack with the reason for disqualification."
},
"typeVersion": 1
},
{
"id": "cf5c856f-2ab4-4282-93d4-f76317fc4474",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
-16
],
"parameters": {
"color": 7,
"width": 304,
"height": 128,
"content": "## Error Handling\nIf the email fails to send, this alerts the team via Slack with the generated proposal text so it can be sent manually."
},
"typeVersion": 1
},
{
"id": "6e792749-4302-494f-979e-cea409a3f17a",
"name": "Update record",
"type": "n8n-nodes-base.airtable",
"position": [
-1008,
112
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appLkiHBdG20uxDwJ",
"cachedResultUrl": "https://airtable.com/appLkiHBdG20uxDwJ",
"cachedResultName": "Leads"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblCyRuAtVAL3Y7sx",
"cachedResultUrl": "https://airtable.com/appLkiHBdG20uxDwJ/tblCyRuAtVAL3Y7sx",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"name": "={{ $json.Name }}",
"Email": "={{ $json.Email }}",
"Status": "Unqualified",
"Call summary": "={{ $json['Call summary '] }}",
"Phone number": "={{ $json['phone number'] }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone number",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Phone number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Qualify",
"value": "Qualify"
},
{
"name": "Unqualified",
"value": "Unqualified"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Type of Insurance",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Type of Insurance",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call summary",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Call summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "11fd4232-d010-4a82-8441-87d931a87a5c",
"name": "Clean data",
"type": "n8n-nodes-base.set",
"position": [
-1440,
-192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3ef69e3f-d0f3-4a2b-9053-09ff0a29c8b7",
"name": "Call summary ",
"type": "string",
"value": "={{ $json.body.message.analysis.summary }}"
},
{
"id": "0fd7150d-dcab-45d2-a3d6-ea34cab8b3ad",
"name": "Success",
"type": "string",
"value": "={{ $json.body.message.analysis.successEvaluation }}"
},
{
"id": "6a36be18-d14d-464e-be73-77067506e986",
"name": "date",
"type": "string",
"value": "={{ $json.body.message.artifact.variableValues.date }}"
},
{
"id": "7cf9a270-032d-42ba-a54c-2bc547bdb4a1",
"name": "Time",
"type": "string",
"value": "={{ $json.body.message.artifact.variableValues.time }}"
},
{
"id": "1dc62117-15c7-45a8-8555-a308293dd932",
"name": "Email",
"type": "string",
"value": "={{ $json.body.message.artifact.variableValues.email }}"
},
{
"id": "e81fc088-42ac-4d98-90f1-a707817458e2",
"name": "Name",
"type": "string",
"value": "={{ $json.body.message.assistant.variableValues.name }}"
},
{
"id": "dba3ea41-4800-4cf0-9cdb-4bb99a139d05",
"name": "phone number",
"type": "string",
"value": "={{ $json.body.message.call.customer.number }}"
},
{
"id": "7538ac1c-c843-46d1-8110-99b24cc4b713",
"name": "Type of Insurance",
"type": "string",
"value": "={{ $json.body.message.artifact.messages[4].message }}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": false,
"settings": {},
"versionId": "c3e7e4ab-8c7f-443d-8e00-3ab2460fd07c",
"connections": {
"Post call": {
"main": [
[
{
"node": "Clean data",
"type": "main",
"index": 0
}
]
]
},
"Clean data": {
"main": [
[
{
"node": "Is Qualified ?",
"type": "main",
"index": 0
}
]
]
},
"Update record": {
"main": [
[
{
"node": "Send a message1",
"type": "main",
"index": 0
}
]
]
},
"Is Qualified ?": {
"main": [
[
{
"node": "Update record1",
"type": "main",
"index": 0
}
],
[
{
"node": "Update record",
"type": "main",
"index": 0
}
]
]
},
"Send a message": {
"main": [
[],
[
{
"node": "Error Handling",
"type": "main",
"index": 0
}
]
]
},
"Update record1": {
"main": [
[
{
"node": "Prepare Blueprint",
"type": "main",
"index": 0
}
]
]
},
"Create a record": {
"main": [
[
{
"node": "Vapi call",
"type": "main",
"index": 0
}
]
]
},
"Prepare Blueprint": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Create a record",
"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.
airtableTokenApigmailOAuth2httpBasicAuthhttpHeaderAuthopenAiApislackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the "speed-to-lead" process for insurance agencies. It instantly triggers an AI voice call when a new lead comes in, qualifies their needs via conversation, and automatically generates and emails a personalized insurance proposal (Blueprint) using GPT-4.
Source: https://n8n.io/workflows/11794/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Some use cases: "Speed-to-Lead" optimization, lead enrichment, automated prospect research. Ingestion: A lead submits their details (Name, Email, Website) via a form. Intelligent scraping: The workflo
This template is perfect for digital agencies, SDRs, lead generators, or outreach teams that want to automatically convert LinkedIn company profiles into high-quality cold emails. If you spend too muc
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
What it is An automated LinkedIn content system that takes a simple form (idea + optional file), generates LinkedIn posts with OpenAI, stores them in Notion, builds Google Slides carousels, and auto-p
This workflow automatically turns any audio file uploaded to Google Drive into a complete podcast episode. It handles transcription, content generation, blog drafting, social copy creation, thumbnail