{
  "name": "Après le rendez-vous — Meet, ChatGPT, HubSpot, Docs, Slack, Gmail",
  "nodes": [
    {
      "parameters": {
        "content": "## Après le rendez-vous — le devis part pendant que le client rentre\n**1. Transcription** — Google Meet dépose la transcription dans Drive (« Meet Recordings ») à la fin de la réunion.\n\n**2. Lecture** — ChatGPT en tire le besoin : postes, quantités, budget, délai, objections, prochaine étape.\n\n**3. CRM** — l'affaire HubSpot du client est retrouvée et mise à jour : montant, étape, notes.\n\n**4. Devis** — la grille tarifaire (Google Sheets) chiffre les postes ; le modèle Google Docs est copié, rempli, exporté en PDF.\n\n**5. Validation** — le commercial reçoit le devis sur Slack. Un clic : Gmail l'envoie au client, HubSpot passe l'affaire à « Devis envoyé ».\n\nVariables : `DOSSIER_TRANSCRIPTIONS`, `GRILLE_ID`, `MODELE_DEVIS_ID`, `DOSSIER_DEVIS`.",
        "height": 470,
        "width": 560
      },
      "id": "78957497-b1dd-5e85-ad7d-7c2052ce61bf",
      "name": "Lisez-moi",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-460, -560]
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "specificFolder",
        "folderToWatch": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $env.DOSSIER_TRANSCRIPTIONS }}"
        },
        "event": "fileCreated",
        "options": {}
      },
      "id": "719b7ecb-3120-519e-b6b7-257435ba5a89",
      "name": "Drive · nouvelle transcription",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "typeVersion": 1,
      "position": [-400, 0],
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "",
          "name": "Drive commercial"
        }
      }
    },
    {
      "parameters": {
        "operation": "get",
        "documentURL": "={{ $json.id }}",
        "simple": true
      },
      "id": "6757965b-7e29-53eb-94d7-54ad31c698b2",
      "name": "Docs · lire la transcription",
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [-160, 0],
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "",
          "name": "Drive commercial"
        }
      }
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4o",
          "mode": "list",
          "cachedResultName": "GPT-4O"
        },
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "Tu lis la transcription d'un rendez-vous commercial. Renvoie un objet JSON : entreprise, contact_email, postes (tableau de { reference, quantite, precision } pris dans la grille tarifaire fournie), budget (nombre ou null), delai, objections (tableau), prochaine_etape. Retiens uniquement ce que le client a dit ou accepté."
            },
            {
              "role": "user",
              "content": "={{ $json.content }}"
            }
          ]
        },
        "jsonOutput": true,
        "options": {
          "temperature": 0.1
        }
      },
      "id": "38f67beb-d0f7-5b50-916d-6c9bdea002a7",
      "name": "ChatGPT · extraire le besoin",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [80, 0],
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "OpenAI commercial"
        }
      }
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $env.GRILLE_ID }}"
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Tarifs"
        },
        "options": {}
      },
      "id": "0c8c30c0-d581-5e4d-ad3d-60b9d6015da6",
      "name": "Sheets · grille tarifaire",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [320, 0],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "Drive commercial"
        }
      },
      "executeOnce": true
    },
    {
      "parameters": {
        "jsCode": "const besoin = $('ChatGPT · extraire le besoin').first().json.message.content;\nconst grille = Object.fromEntries($input.all().map((l) => [l.json.reference, l.json]));\nconst lignes = besoin.postes\n  .filter((p) => grille[p.reference])\n  .map((p) => ({\n    designation: grille[p.reference].designation,\n    quantite: p.quantite,\n    unitaire: Number(grille[p.reference].prix_ht),\n    total: p.quantite * Number(grille[p.reference].prix_ht),\n  }));\nconst ht = lignes.reduce((s, l) => s + l.total, 0);\nreturn [{ json: { ...besoin, lignes, ht, tva: ht * 0.2, ttc: ht * 1.2, numero: `D-${$now.toFormat('yyyy')}-${$execution.id}` } }];"
      },
      "id": "f687d528-0a6d-52d4-a3b1-4e4d6a44f0d1",
      "name": "Chiffrer le devis",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [560, 0]
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "deal",
        "operation": "search",
        "filterGroupsUi": {
          "filterGroupsValues": [
            {
              "filtersUi": {
                "filterValues": [
                  {
                    "propertyName": "dealname",
                    "operator": "CONTAINS_TOKEN",
                    "value": "={{ $json.entreprise }}"
                  }
                ]
              }
            }
          ]
        },
        "additionalFields": {}
      },
      "id": "651d20df-7aca-5692-bfc5-e97c69951103",
      "name": "HubSpot · retrouver l'affaire",
      "type": "n8n-nodes-base.hubspot",
      "typeVersion": 2.1,
      "position": [800, 0],
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "",
          "name": "HubSpot"
        }
      }
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "deal",
        "operation": "update",
        "dealId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "updateFields": {
          "amount": "={{ $('Chiffrer le devis').first().json.ht }}",
          "description": "={{ `${$('Chiffrer le devis').first().json.delai} · objections : ${$('Chiffrer le devis').first().json.objections.join(' ; ')}` }}"
        }
      },
      "id": "5827fe71-0b5d-59fe-8541-4d81a500e5fd",
      "name": "HubSpot · mettre l'affaire à jour",
      "type": "n8n-nodes-base.hubspot",
      "typeVersion": 2.1,
      "position": [1040, 0],
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "",
          "name": "HubSpot"
        }
      }
    },
    {
      "parameters": {
        "operation": "copy",
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $env.MODELE_DEVIS_ID }}"
        },
        "name": "={{ `${$('Chiffrer le devis').first().json.numero} — ${$('Chiffrer le devis').first().json.entreprise}` }}",
        "sameFolder": false,
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $env.DOSSIER_DEVIS }}"
        },
        "options": {}
      },
      "id": "0c9acc22-8a3c-55f2-ab0c-cd5b7959c79f",
      "name": "Drive · copier le modèle",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [1280, 0],
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "",
          "name": "Drive commercial"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentURL": "={{ $json.id }}",
        "actionsUi": {
          "actionFields": [
            {
              "action": "replaceAll",
              "text": "{{client}}",
              "replaceText": "={{ $('Chiffrer le devis').first().json.entreprise }}"
            },
            {
              "action": "replaceAll",
              "text": "{{numero}}",
              "replaceText": "={{ $('Chiffrer le devis').first().json.numero }}"
            },
            {
              "action": "replaceAll",
              "text": "{{lignes}}",
              "replaceText": "={{ $('Chiffrer le devis').first().json.lignes.map(l => `${l.quantite} × ${l.designation} — ${l.total.toLocaleString('fr-FR')} € HT`).join('\\n') }}"
            },
            {
              "action": "replaceAll",
              "text": "{{total}}",
              "replaceText": "={{ $('Chiffrer le devis').first().json.ttc.toLocaleString('fr-FR', { style: 'currency', currency: 'EUR' }) }}"
            }
          ]
        }
      },
      "id": "de62f219-6604-569d-a842-2ed1851c25e6",
      "name": "Docs · remplir le devis",
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [1520, 0],
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "",
          "name": "Drive commercial"
        }
      }
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Drive · copier le modèle').first().json.id }}"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "application/pdf"
            }
          },
          "fileName": "={{ $('Chiffrer le devis').first().json.numero }}.pdf"
        }
      },
      "id": "9606a253-aaf0-5077-8bc3-94c6fa04145a",
      "name": "Drive · exporter en PDF",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [1760, 0],
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "",
          "name": "Drive commercial"
        }
      }
    },
    {
      "parameters": {
        "operation": "sendAndWait",
        "select": "user",
        "user": {
          "__rl": true,
          "mode": "username",
          "value": "={{ $env.COMMERCIAL_SLACK }}"
        },
        "message": "={{ `Devis ${$('Chiffrer le devis').first().json.numero} pour ${$('Chiffrer le devis').first().json.entreprise} : ${$('Chiffrer le devis').first().json.ttc.toLocaleString('fr-FR')} € TTC. https://docs.google.com/document/d/${$('Drive · copier le modèle').first().json.id}` }}",
        "approvalOptions": {
          "values": {
            "approvalType": "double",
            "approveLabel": "Envoyer",
            "disapproveLabel": "Je le reprends"
          }
        },
        "options": {}
      },
      "id": "b7aa906a-b92d-55ca-9916-dedc051e6c74",
      "name": "Slack · relire et envoyer",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [2000, 0],
      "credentials": {
        "slackApi": {
          "id": "",
          "name": "Slack commercial"
        }
      },
      "webhookId": "0d48ece2-d11f-54ae-a844-3742ed199014"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose"
          },
          "conditions": [
            {
              "id": "envoyer",
              "leftValue": "={{ $json.data.approved }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "rightValue": ""
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "1af4b02e-8a9f-5a1a-bdc9-f3ba5134695f",
      "name": "Envoyer ?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [2240, 0]
    },
    {
      "parameters": {
        "sendTo": "={{ $('Chiffrer le devis').first().json.contact_email }}",
        "subject": "={{ `Votre devis ${$('Chiffrer le devis').first().json.numero}` }}",
        "emailType": "text",
        "message": "={{ `Bonjour,\\n\\nMerci pour notre échange de cet après-midi. Vous trouverez ci-joint le devis correspondant : ${$('Chiffrer le devis').first().json.prochaine_etape}.\\n\\nBien à vous,` }}",
        "options": {
          "attachmentsUi": {
            "attachmentsBinary": [
              {
                "property": "data"
              }
            ]
          }
        }
      },
      "id": "d71e780f-83de-534c-8b0c-1b8297f90b8a",
      "name": "Gmail · envoyer au client",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [2480, -80],
      "credentials": {
        "gmailOAuth2": {
          "id": "",
          "name": "Gmail commercial"
        }
      }
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "deal",
        "operation": "update",
        "dealId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('HubSpot · retrouver l\\'affaire').first().json.id }}"
        },
        "updateFields": {
          "stage": "contractsent"
        }
      },
      "id": "ff80511b-4bd4-5497-8d6f-b45a2b6a5c2e",
      "name": "HubSpot · devis envoyé",
      "type": "n8n-nodes-base.hubspot",
      "typeVersion": 2.1,
      "position": [2720, -80],
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "",
          "name": "HubSpot"
        }
      }
    }
  ],
  "connections": {
    "Drive · nouvelle transcription": {
      "main": [
        [
          {
            "node": "Docs · lire la transcription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Docs · lire la transcription": {
      "main": [
        [
          {
            "node": "ChatGPT · extraire le besoin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ChatGPT · extraire le besoin": {
      "main": [
        [
          {
            "node": "Sheets · grille tarifaire",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sheets · grille tarifaire": {
      "main": [
        [
          {
            "node": "Chiffrer le devis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Chiffrer le devis": {
      "main": [
        [
          {
            "node": "HubSpot · retrouver l'affaire",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HubSpot · retrouver l'affaire": {
      "main": [
        [
          {
            "node": "HubSpot · mettre l'affaire à jour",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HubSpot · mettre l'affaire à jour": {
      "main": [
        [
          {
            "node": "Drive · copier le modèle",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Drive · copier le modèle": {
      "main": [
        [
          {
            "node": "Docs · remplir le devis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Docs · remplir le devis": {
      "main": [
        [
          {
            "node": "Drive · exporter en PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Drive · exporter en PDF": {
      "main": [
        [
          {
            "node": "Slack · relire et envoyer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack · relire et envoyer": {
      "main": [
        [
          {
            "node": "Envoyer ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Envoyer ?": {
      "main": [
        [
          {
            "node": "Gmail · envoyer au client",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail · envoyer au client": {
      "main": [
        [
          {
            "node": "HubSpot · devis envoyé",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "timezone": "Europe/Paris"
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  }
}
