AutomationFlowsAI & RAG › Generate Client Proposals From Call Transcripts with Ai, Google Slides and…

Generate Client Proposals From Call Transcripts with Ai, Google Slides and…

Original n8n title: Generate Client Proposals From Call Transcripts with Ai, Google Slides and Airtable

ByIlyass Kanissi @ilyass on n8n.io

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.

Chat trigger trigger★★★★☆ complexityAI-powered7 nodesGoogle SlidesGoogle DriveAirtableOpenAIChat Trigger
AI & RAG Trigger: Chat trigger Nodes: 7 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "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.

Pro

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 →

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 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

Chat Trigger, Memory Postgres Chat, Tool Workflow +20
AI & RAG

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

Google Gemini, OpenAI, Chat Trigger +3
AI & RAG

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

Google Sheets, Gmail, Chat Trigger +2
AI & RAG

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

Chat Trigger, HTTP Request, OpenAI
AI & RAG

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

Tool Code, Chat Trigger, OpenAI +2