Génération automatisée de propositions
Ceci est unCRM, Multimodal AIworkflow d'automatisation du domainecontenant 7 nœuds.Utilise principalement des nœuds comme Airtable, GoogleDrive, GoogleSlides, OpenAi, ChatTrigger. Utiliser IA, Google Slides et Airtable pour générer des propositions clients à partir d'enregistrements d'appels
- •Clé API Airtable
- •Informations d'identification Google Drive API
- •Clé API OpenAI
Nœuds utilisés (7)
Catégorie
{
"id": "otddSxeWQtI5yxc7",
"meta": {
"instanceId": "e73c77a832a4af1fdbfd95e61201dd65dffb85871e88031e3f1475c5661e7b54",
"templateCredsSetupCompleted": true
},
"name": "proposal generation on autopilot",
"tags": [],
"nodes": [
{
"id": "add01d77-c169-41f9-9bce-51462e2a44ab",
"name": "Remplacer le texte dans une présentation",
"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": {
"id": "b1bhhccZCOnXFEVb",
"name": "Google Slides account"
}
},
"typeVersion": 2
},
{
"id": "41fe6c9c-88bd-4c36-a64c-7dac0268e456",
"name": "Copier le fichier",
"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": {
"id": "JB10qqMjiksmdbv3",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "9e79d395-57f9-4afb-9d35-75dda74e6561",
"name": "Partager le fichier",
"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": {
"id": "JB10qqMjiksmdbv3",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "0579e838-85ac-4cae-a7d4-c2c42203a47e",
"name": "Mettre à jour l'enregistrement",
"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": {
"id": "lkjke5yaq35WzzkG",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "12130334-d35d-4bf6-92dd-0c45641d6001",
"name": "Note adhésive",
"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": "Envoyer un message à un modèle",
"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": {
"id": "iuyzWhX2JGVK5PCn",
"name": "OpenAI Hostinger"
}
},
"typeVersion": 1.8
},
{
"id": "eea034a6-93dd-4fff-9fe2-d0189c5f7b2b",
"name": "À la réception d'un message de chat",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
304,
0
],
"webhookId": "65c61e2a-f47e-4a83-a34b-4a92e7f09baa",
"parameters": {
"options": {}
},
"typeVersion": 1.3
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "9e6caf82-55ec-4fe2-9de1-55fd2bbe0ac6",
"connections": {
"41fe6c9c-88bd-4c36-a64c-7dac0268e456": {
"main": [
[
{
"node": "add01d77-c169-41f9-9bce-51462e2a44ab",
"type": "main",
"index": 0
}
]
]
},
"9e79d395-57f9-4afb-9d35-75dda74e6561": {
"main": [
[
{
"node": "0579e838-85ac-4cae-a7d4-c2c42203a47e",
"type": "main",
"index": 0
}
]
]
},
"c5647c6c-362b-4868-ba0b-95a356e9d117": {
"main": [
[
{
"node": "41fe6c9c-88bd-4c36-a64c-7dac0268e456",
"type": "main",
"index": 0
}
]
]
},
"eea034a6-93dd-4fff-9fe2-d0189c5f7b2b": {
"main": [
[
{
"node": "c5647c6c-362b-4868-ba0b-95a356e9d117",
"type": "main",
"index": 0
}
]
]
},
"add01d77-c169-41f9-9bce-51462e2a44ab": {
"main": [
[
{
"node": "9e79d395-57f9-4afb-9d35-75dda74e6561",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - CRM, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Ilyass Kanissi
@ilyassI design and build custom no-code and low-code automations using n8n to help businesses save hours of manual work, streamline operations, and create clean, scalable workflows.
Partager ce workflow