This workflow corresponds to n8n.io template #7558 — we link there as the canonical source.
This workflow follows the Airtable → 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 →
{
"id": "otddSxeWQtI5yxc7",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "proposal generation on autopilot",
"tags": [],
"nodes": [
{
"id": "add01d77-c169-41f9-9bce-51462e2a44ab",
"name": "Replace text in a presentation",
"type": "n8n-nodes-base.googleSlides",
"position": [
1024,
0
],
"parameters": {
"textUi": {
"textValues": [
{
"text": "{Company Name}",
"replaceText": "={{ $('Message a model').item.json.message.content.company }}",
"pageObjectIds": [
"p"
]
},
{
"text": "{client}",
"replaceText": "={{ $('Message a model').item.json.message.content.client }}",
"pageObjectIds": [
"p"
]
},
{
"text": "{project_title}",
"replaceText": "={{ $('Message a model').item.json.message.content.project_title }}",
"pageObjectIds": [
"g1f88252dc4_0_83"
]
},
{
"text": "{Goals}",
"replaceText": "={{ $('Message a model').item.json.message.content.goals }}",
"pageObjectIds": [
"g1f88252dc4_0_83"
]
},
{
"text": "{deliverables}",
"replaceText": "={{ $('Message a model').item.json.message.content.deliverables }}",
"pageObjectIds": [
"g1f88252dc4_0_83"
]
},
{
"text": "{timeline}",
"replaceText": "={{ $('Message a model').item.json.message.content.timeline_weeks }}",
"pageObjectIds": [
"g3643e9e2554_0_12"
]
},
{
"text": "{budget}",
"replaceText": "={{ $('Message a model').item.json.message.content.budget_usd }}",
"pageObjectIds": [
"g3643e9e2554_0_12"
]
}
]
},
"options": {},
"operation": "replaceText",
"presentationId": "={{ $json.id }}"
},
"credentials": {
"googleSlidesOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "41fe6c9c-88bd-4c36-a64c-7dac0268e456",
"name": "Copy file",
"type": "n8n-nodes-base.googleDrive",
"position": [
816,
0
],
"parameters": {
"name": "={{ $json.message.content.company }} proposal",
"fileId": {
"__rl": true,
"mode": "list",
"value": "11FCrQCmvjck3eKHMGeDF0wGf0TDyUB78FLsyR0graKI",
"cachedResultUrl": "https://docs.google.com/presentation/d/11FCrQCmvjck3eKHMGeDF0wGf0TDyUB78FLsyR0graKI/edit?usp=drivesdk",
"cachedResultName": "Consulting proposal"
},
"options": {},
"operation": "copy"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "9e79d395-57f9-4afb-9d35-75dda74e6561",
"name": "Share file",
"type": "n8n-nodes-base.googleDrive",
"position": [
1232,
0
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.presentationId }}"
},
"options": {},
"operation": "share",
"permissionsUi": {
"permissionsValues": {
"role": "reader",
"type": "user",
"emailAddress": "={{ $('Message a model').item.json.message.content.email }}"
}
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "0579e838-85ac-4cae-a7d4-c2c42203a47e",
"name": "Update record",
"type": "n8n-nodes-base.airtable",
"position": [
1440,
0
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appZS6usU96byHXU3",
"cachedResultUrl": "https://airtable.com/appZS6usU96byHXU3",
"cachedResultName": "New Lead"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblROcPRoSG3aMwhT",
"cachedResultUrl": "https://airtable.com/appZS6usU96byHXU3/tblROcPRoSG3aMwhT",
"cachedResultName": "New Leads Pipeline"
},
"columns": {
"value": {
"Email": "={{ $('Message a model').item.json.message.content.email }}",
"LeadStatus": "Proposal sent"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Assignee",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Assignee",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Desision",
"type": "options",
"display": true,
"options": [
{
"name": "Exploring",
"value": "Exploring"
},
{
"name": "Comparing Agencies",
"value": "Comparing Agencies"
},
{
"name": "Ready to Start",
"value": "Ready to Start"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Desision",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LeadStatus",
"type": "options",
"display": true,
"options": [
{
"name": "Website Form",
"value": "Website Form"
},
{
"name": "Attended",
"value": "Attended"
},
{
"name": "Didn't Attend",
"value": "Didn't Attend"
},
{
"name": "Meeting Rescheduled",
"value": "Meeting Rescheduled"
},
{
"name": "Follow Up 1",
"value": "Follow Up 1"
},
{
"name": "Follow Up 2",
"value": "Follow Up 2"
},
{
"name": "Follow Up 3",
"value": "Follow Up 3"
},
{
"name": "Lost -No Response",
"value": "Lost -No Response"
},
{
"name": "Won",
"value": "Won"
},
{
"name": "Proposal sent",
"value": "Proposal sent"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "LeadStatus",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "12130334-d35d-4bf6-92dd-0c45641d6001",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-160,
-96
],
"parameters": {
"color": 5,
"width": 320,
"height": 352,
"content": "## Guide\n\nCreate you openai api key here: https://platform.openai.com/settings/organization/api-keys\n\nSetup credentials, Oauth, and scopes for google drive / slides here: https://console.cloud.google.com/\n\nCreate Airtable Token here: https://airtable.com/create/tokens\nalso make sure you got a filed for lead status so it gets updated after the proposal is sent\n\n\n"
},
"typeVersion": 1
},
{
"id": "c5647c6c-362b-4868-ba0b-95a356e9d117",
"name": "Message a model",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
480,
0
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "Extract the following variables from the discovery call script and format them as JSON. Use the exact keys below: \n\n**Variables to Extract:** \n- Client email \n- Company name \n- Client name \n- Project title \n- Project goals \n- Deliverables \n- Timeline (in weeks) \n- Budget (in USD) \n\n**Output Requirements:** \n- Strictly use this JSON structure (no deviations): \n```json\n{\n \"email\": \"value_from_script\",\n \"company\": \"value_from_script\",\n \"client\": \"value_from_script\",\n \"project_title\": \"value_from_script\",\n \"goals\": \"value_from_script\",\n \"deliverables\": \"value_from_script\",\n \"timeline_weeks\": \"value_from_script\",\n \"budget_usd\": \"value_from_script\"\n}"
},
{
"content": "={{ $json.chatInput }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "eea034a6-93dd-4fff-9fe2-d0189c5f7b2b",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
304,
0
],
"parameters": {
"options": {}
},
"typeVersion": 1.3
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "9e6caf82-55ec-4fe2-9de1-55fd2bbe0ac6",
"connections": {
"Copy file": {
"main": [
[
{
"node": "Replace text in a presentation",
"type": "main",
"index": 0
}
]
]
},
"Share file": {
"main": [
[
{
"node": "Update record",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Copy file",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Replace text in a presentation": {
"main": [
[
{
"node": "Share file",
"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.
airtableTokenApigoogleDriveOAuth2ApigoogleSlidesOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically convert sales call transcripts into professional client proposals by extracting key details with AI, dynamically populating Google Slides templates, and tracking progress in Airtable, all in one seamless workflow.
Source: https://n8n.io/workflows/7558/ — 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.
This workflow acts as a 24/7 sales agent, engaging leads across WhatsApp, Instagram, Facebook, Telegram, and your website. It intelligently transcribes audio messages, answers questions using a knowle
This workflow is for: People who want to quickly launch simple landing pages without paying monthly fees to landing page creators. It’s ideal for rapid prototyping, generation of large amounts of land
Most career advice is generic. This workflow builds a fully personalized AI coaching system that remembers every user, adapts to their career stage and goals, detects what kind of help they need, and
Automate the creation of high-performing YouTube Shorts in minutes! Content Creators: Generate engaging short videos effortlessly. Marketing Agencies: Produce client-ready content quickly. Business Ow
I prepared a comprehensive guide demonstrating how to build a multi-level retrieval AI agent in n8n that smartly narrows down search results first by file descriptions, then retrieves detailed vector