AutomationFlowsAI & RAG › Neotravel — Agent Devis

Neotravel — Agent Devis

NeoTravel — Agent Devis. Uses agent, lmChatVercelAiGateway, memoryBufferWindow, toolHttpRequest. Webhook trigger; 6 nodes.

Webhook trigger★★☆☆☆ complexityAI-powered6 nodesAgentLm Chat Vercel Ai GatewayMemory Buffer WindowTool Http Request
AI & RAG Trigger: Webhook Nodes: 6 Complexity: ★★☆☆☆ AI nodes: yes Added:

This workflow follows the Agent → Memory Buffer Window 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
{
  "name": "NeoTravel \u2014 Agent Devis",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "neotravel-chat-webhook-001/chat",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "chat-trigger-001",
      "name": "When chat message received",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        1136,
        240
      ]
    },
    {
      "parameters": {
        "options": {
          "systemMessage": "Tu es Alex, conseiller commercial virtuel de NeoTravel, sp\u00e9cialiste des transferts en autocar.\n\nTa mission : \u00e9tablir un devis de transfert en collectant les informations du client une par une,\nen appelant le moteur de calcul, puis en pr\u00e9sentant le r\u00e9sultat clairement.\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nCOLLECTE D'INFORMATIONS \u2014 UNE \u00c0 LA FOIS, DANS L'ORDRE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u00c9tape 1 \u2014 DISTANCE\n  Si le client mentionne des noms de villes (ex : \"Paris \u2192 Lyon\", \"Bordeaux \u2192 Biarritz\") :\n  \u2192 Appelle IMM\u00c9DIATEMENT l'outil calculer_distance avec les noms des deux villes.\n  \u2192 La r\u00e9ponse contient distanceKm : utilise cette valeur directement, sans la confirmer avec le client.\n  \u2192 Passe imm\u00e9diatement \u00e0 l'\u00e9tape suivante.\n  Si le client donne directement un nombre de km :\n  \u2192 Utilise ce nombre tel quel, sans appeler calculer_distance.\n  Si la destination est inconnue ou ambigu\u00eb :\n  \u2192 Demande uniquement les villes de d\u00e9part et d'arriv\u00e9e.\n\n\u00c9tape 2 \u2014 PASSAGERS\n  Demande : \"Combien de passagers voyagent ?\"\n\n\u00c9tape 3 \u2014 TYPE DE TRANSFERT\n  Demande : \"S'agit-il d'un transfert simple (aller uniquement) ou aller-retour ?\"\n  \u2192 Convertis en : \"simple\" ou \"aller_retour\"\n\n\u00c9tape 4 \u2014 DATE DE D\u00c9PART\n  Demande : \"Quelle est la date de d\u00e9part souhait\u00e9e ?\"\n  \u2192 Convertis toujours la date au format YYYY-MM-DD avant d'appeler l'outil.\n    Exemple : \"le 15 ao\u00fbt\" \u2192 \"2026-08-15\"\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nAPPEL DE L'OUTIL calculer_devis\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nD\u00e8s que les 4 informations sont collect\u00e9es (distanceKm, nombrePassagers, typeTransfert, dateDepart),\nappelle IMM\u00c9DIATEMENT l'outil calculer_devis.\nN'annonce pas que tu vas calculer \u2014 appelle directement l'outil.\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nTRAITEMENT DE LA R\u00c9PONSE DE L'OUTIL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nCAS 1 \u2014 { \"type\": \"prix\" }\n  Pr\u00e9sente le devis d\u00e9taill\u00e9 ainsi, en incluant les \u00e9tapes de calcul :\n  \"Voici votre devis NeoTravel :\n  D\u00e9tail du calcul :\n  [Affiche ici chaque ligne du tableau 'details' fourni par l'outil (label et montant)]\n\n  Prix HT   : [prixHT] \u20ac\n  TVA (10%) : [tva] \u20ac\n  Prix TTC  : [prixTTC] \u20ac\n\n  Ce devis est valable 30 jours.\"\n\nCAS 2 \u2014 { \"type\": \"cas_complexe\" }\n  R\u00e9ponds : \"Votre demande n\u00e9cessite une \u00e9tude personnalis\u00e9e. Un conseiller NeoTravel vous contactera dans les 24 heures.\"\n\nCAS 3 \u2014 { \"type\": \"erreur_validation\" }\n  Reformule poliment la question correspondant au champ invalide.\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nR\u00c8GLES ABSOLUES\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n1. Ne JAMAIS donner un prix sans avoir appel\u00e9 l'outil calculer_devis.\n2. Ne JAMAIS inventer ou estimer un tarif.\n3. Ne JAMAIS demander plusieurs informations en m\u00eame temps.\n4. Ne JAMAIS traiter un cas complexe (>85 passagers) sans escalader."
        },
        "promptType": "define",
        "text": "={{ $json.body.chatInput }}"
      },
      "id": "ai-agent-001",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.7,
      "position": [
        1376,
        240
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "vercel-model-001",
      "name": "Vercel AI Gateway Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatVercelAiGateway",
      "typeVersion": 1,
      "position": [
        1232,
        432
      ],
      "credentials": {
        "vercelAiGatewayApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $json.body.sessionId }}",
        "windowSize": 10
      },
      "id": "memory-001",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        1376,
        448
      ]
    },
    {
      "parameters": {
        "name": "calculer_distance",
        "description": "Calcule la distance routi\u00e8re r\u00e9elle en kilom\u00e8tres entre deux villes fran\u00e7aises. Appelle cet outil d\u00e8s que le client mentionne des noms de villes. Retourne distanceKm (entier).",
        "method": "POST",
        "url": "http://127.0.0.1:3001/distance",
        "sendBody": true,
        "specifyBody": "keypairs",
        "bodyParameters": {
          "parameters": [
            {
              "name": "villeDepart",
              "value": "Nom de la ville de d\u00e9part, ex: Paris, Bordeaux, Marseille",
              "parameterType": "ai"
            },
            {
              "name": "villeArrivee",
              "value": "Nom de la ville arriv\u00e9e, ex: Lyon, Biarritz, Nice",
              "parameterType": "ai"
            }
          ]
        },
        "options": {}
      },
      "id": "http-distance-001",
      "name": "calculer_distance",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "typeVersion": 1.1,
      "position": [
        1536,
        448
      ]
    },
    {
      "parameters": {
        "name": "calculer_devis",
        "description": "Calcule le prix du devis NeoTravel pour un transfert en autocar. Appelle cet outil uniquement quand tu as les 4 informations : distanceKm (nombre de km), nombrePassagers (nombre de passagers), typeTransfert (exactement simple ou aller_retour), dateDepart (format YYYY-MM-DD). R\u00e8gles tarifaires : Forfait jusqu'\u00e0 180km (ex: 10km=250\u20ac, 180km=900\u20ac), au-del\u00e0: (KMx2)x2.5\u20ac. Aller-retour : x2. Saisonnalit\u00e9 : basse (-7%), moyenne (0%), haute (+10%), tr\u00e8s haute (+15%). D\u00e9lai : <=14J (+10%), 14-30J (+5%), 30-90J (-5%), >90J (-10%). Capacit\u00e9 : <=19 (-5%), 20-53 (0%), 54-63 (+15%), 64-67 (+20%), 68-85 (+40%). Marge commerciale : 15%.",
        "method": "POST",
        "url": "http://127.0.0.1:3001/devis",
        "sendBody": true,
        "specifyBody": "keypairs",
        "bodyParameters": {
          "parameters": [
            {
              "name": "distanceKm",
              "value": "Distance en kilom\u00e8tres entre d\u00e9part et destination, nombre entier",
              "parameterType": "ai"
            },
            {
              "name": "nombrePassagers",
              "value": "Nombre total de passagers, nombre entier",
              "parameterType": "ai"
            },
            {
              "name": "typeTransfert",
              "value": "Type de trajet : simple pour aller uniquement, aller_retour pour aller-retour",
              "parameterType": "ai"
            },
            {
              "name": "dateDepart",
              "value": "Date de d\u00e9part au format YYYY-MM-DD, exemple 2026-08-15",
              "parameterType": "ai"
            },
            {
              "name": "userEmail",
              "value": "={{ $('When chat message received').first().json.body.userEmail }}",
              "parameterType": "fixed"
            }
          ]
        },
        "options": {}
      },
      "id": "http-devis-001",
      "name": "calculer_devis",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "typeVersion": 1.1,
      "position": [
        1696,
        448
      ]
    }
  ],
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vercel AI Gateway Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "calculer_distance": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "calculer_devis": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": true
  }
}

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

NeoTravel — Agent Devis. Uses agent, lmChatVercelAiGateway, memoryBufferWindow, toolHttpRequest. Webhook trigger; 6 nodes.

Source: https://github.com/Dirimo/Neotravel/blob/9084520e4ab7aaaae1c35ee95489352e95f46ace/n8n/workflow.json — 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

N8N Workflow. Uses httpRequest, toolHttpRequest, memoryBufferWindow, lmChatGoogleGemini. Webhook trigger; 13 nodes.

HTTP Request, Tool Http Request, Memory Buffer Window +2
AI & RAG

Somar.IA SaaS - Agente Autônomo WhatsApp (Gemini). Uses agent, lmChatGoogleGemini, memoryBufferWindow, toolHttpRequest. Webhook trigger; 7 nodes.

Agent, Google Gemini Chat, Memory Buffer Window +2
AI & RAG

Lead capture agent Hubspot. Uses agent, toolHttpRequest, lmChatOpenAi, memoryBufferWindow. Webhook trigger; 6 nodes.

Agent, Tool Http Request, OpenAI Chat +1
AI & RAG

AI Support Chatbot. Uses agent, lmChatOpenAi, memoryBufferWindow, toolHttpRequest. Webhook trigger; 6 nodes.

Agent, OpenAI Chat, Memory Buffer Window +1
AI & RAG

L&D_AgentsAI_ATIVO. Uses httpRequest, agent, googleCalendarTool, toolSerpApi. Webhook trigger; 93 nodes.

HTTP Request, Agent, Google Calendar Tool +9