AutomationFlowsAI & RAG › Planning Assistant 2

Planning Assistant 2

Planning Assistant 2. Uses httpRequest, chainLlm, lmChatMistralCloud, outputParserStructured. Webhook trigger; 5 nodes.

Webhook trigger★★☆☆☆ complexityAI-powered5 nodesHTTP RequestChain LlmLm Chat Mistral CloudOutput Parser Structured
AI & RAG Trigger: Webhook Nodes: 5 Complexity: ★★☆☆☆ AI nodes: yes Added:

This workflow follows the Chainllm → HTTP Request 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": "Planning Assistant 2",
  "nodes": [
    {
      "parameters": {
        "method": "POST",
        "url": "http://pa-liferay:8080/o/graphql",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "{    c{       vehicules{         items {           vehiculeId           immatriculation           marque           modele           capaciteChargement         }       },       commandes{       \titems{           commandeId           adresse           volumeContenant         }       }   }   }"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -320,
        -40
      ],
      "id": "b6a3a2b3-831e-4832-948f-9888affc9dee",
      "name": "Get Commandes and Vehicules",
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.data }}",
        "hasOutputParser": true,
        "messages": {
          "messageValues": [
            {
              "message": "Vous \u00eates un plannificateur d'itin\u00e9raire.\nVous devez utiliser les donn\u00e9es de trafic pour vous proposer le meilleur ordre de passage.\nVous recevez une liste de v\u00e9hicules et une liste de commandes avec des adresses sous format JSON, voici un exemple :\n{\n  \"data\": {\n    \"c\": {\n      \"vehicules\": {\n        \"items\": [\n          {\n            \"vehiculeId\": 1, //ID du v\u00e9hicule\n            \"immatriculation\": \"IJ-123-KL\",\n            \"marque\": \"Iveco\",\n            \"modele\": \"Daily\",\n            \"capaciteChargement\": 19 //capacit\u00e9 de chargement en metre cube (m3)\n          },\n          {\n            \"vehiculeId\": 2, //ID du v\u00e9hicule\n            \"immatriculation\": \"EF-456-GH\",\n            \"marque\": \"Peugeot\",\n            \"modele\": \"Boxer\",\n            \"capaciteChargement\": 15 //capacit\u00e9 de chargement en metre cube (m3)\n          }\n        ]\n      },\n      \"commandes\": {\n        \"items\": [\n          {\n            \"commandeId\": 10, //Id de la commande\n            \"adresse\": \"2 Rue Adolphe Pegoud, 78140 V\u00e9lizy-Villacoublay\", //adresse \n            \"volumeContenant\": 5 //volume du contenant \u00e0 ramasser par le v\u00e9hicule en metre cube (m3)\n          },\n          {\n            \"commandeId\": 20, //Id de la commande\n            \"adresse\": \"33 Av. Henri Dunant, 91200 Athis-Mons\", //adresse\n            \"volumeContenant\": 10 //volume du contenant \u00e0 ramasser par le v\u00e9hicule en metre cube (m3)\n          },\n          {\n            \"commandeId\": 30, //Id de la commande\n            \"adresse\": \"24 Rue Arago, 93000 Bobigny\", //adresse\n            \"volumeContenant\": 2 //volume du contenant \u00e0 ramasser par le v\u00e9hicule en metre cube (m3)\n          }\n        ]\n      }\n    }\n  }\n}//fin de l'exemple JSON\nVous devez planifier un itin\u00e9raire de passage pour chaque v\u00e9hicule afin de ramasser un certain volume de contenant \npour les commandes de la liste celon l'adresse fournie. \nIl faut suivre les r\u00e8gles suivantes :\n- Chaque v\u00e9hicule peut rouler entre 8:00 et 20:00.\n- Chaque v\u00e9hicule poss\u00e8de une capacit\u00e9 de chargement \u00e0 ne pas d\u00e9passer tout au long de sont trajet.\n- Chaque v\u00e9hicule doit partir de l'adresse suivante : 7 Rue Touzet Gaillard, 93400 Saint-Ouen-sur-Seine.\n- Un seul passage d'un seul v\u00e9hicule \u00e0 l'adresse d'une commande suffit pour un ramassage.\nCrit\u00e8res d'optimisation :\n- Minimiser la distance totale et le nombre de v\u00e9hicules utilis\u00e9s.\n\nVous devez me fournir un ordre de passage pour chaque v\u00e9hicule.\nLe r\u00e9sultat doit \u00eatre au format JSON comme l'exemple suivant :\n{\n  \"data\": {\n    \"c\": {\n      \"plannings\": {\n        \"items\": [\n          {\n            \"ordrePassage\": 1, \n            \"vehiculeId\": 1,//ID du v\u00e9hicule\n            \"commandeId\": 20 //Id de la commande\n          },\n\t\t  {\n            \"ordrePassage\": 2, //Ordre de passage\n            \"vehiculeId\": 1,//ID du v\u00e9hicule\n            \"commandeId\": 10 //Id de la commande\n          },\n\t\t  {\n            \"ordrePassage\": 1, //Ordre de passage\n            \"vehiculeId\": 2,//ID du v\u00e9hicule\n            \"commandeId\": 30 //Id de la commande\n          }\n        ]\n      }\n    }\n  }\n}//fin exemple du r\u00e9sultat\n"
            }
          ]
        }
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        -100,
        -40
      ],
      "id": "36489579-e468-4559-a1c1-38425383412f",
      "name": "Basic LLM Chain"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
      "typeVersion": 1,
      "position": [
        -100,
        160
      ],
      "id": "399fbd1c-6bdc-4cbb-89a3-e0056c57b2fb",
      "name": "Mistral Cloud Chat Model",
      "credentials": {
        "mistralCloudApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"data\": {\n    \"c\": {\n      \"plannings\": {\n        \"items\": [\n          {\n            \"ordrePassage\": 1,\n            \"vehiculeId\": 36422,\n            \"commandeId\": 36428\n          },\n          {\n            \"ordrePassage\": 2,\n            \"vehiculeId\": 36422,\n            \"commandeId\": 36430\n          }\n        ]\n      }\n    }\n  }\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        80,
        180
      ],
      "id": "cadaf807-8269-455d-898e-339c8bcda52c",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "8a27cb55-c030-4275-b9fb-7a458de08cbb",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        -500,
        -40
      ],
      "id": "89989384-0121-4fdb-a710-93f88c278e57",
      "name": "Webhook"
    }
  ],
  "connections": {
    "Get Commandes and Vehicules": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mistral Cloud Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "92f3fc11-49b7-45b9-a6dd-9b23059c876b",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "A6j7D3AEueidE9Rv",
  "tags": []
}

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

Planning Assistant 2. Uses httpRequest, chainLlm, lmChatMistralCloud, outputParserStructured. Webhook trigger; 5 nodes.

Source: https://github.com/jpdacunha/liferay-planning-assistant/blob/34dd571417cff07dfa13ff64a0bb7b377ae9aa38/runtime/n8n/archive/Planning_Assistant_2.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

My workflow 53. Uses formTrigger, httpRequest, lmChatOpenAi, form. Event-driven trigger; 74 nodes.

Form Trigger, HTTP Request, OpenAI Chat +15
AI & RAG

Episode 23: UGC with nanobanana. Uses lmChatOpenAi, lmChatOllama, lmChatDeepSeek, lmChatOpenRouter. Event-driven trigger; 74 nodes.

OpenAI Chat, Ollama Chat, Lm Chat Deep Seek +12
AI & RAG

The "Short Content" automation is a powerful, all-in-one solution designed to streamline the creation of short videos for social media, marketing, or personal projects. Leveraging cutting-edge AI tool

Chain Llm, Output Parser Structured, OpenAI Chat +4
AI & RAG

🔥 LIMITED-TIME OFFER: AI Video Automation (Previously \$59) Previously Template

Chain Llm, Output Parser Structured, OpenAI Chat +4
AI & RAG

Resume Screening & Behavioral Interviews with Gemini, Elevenlabs, & Notion ATS copy. Uses outputParserStructured, chainLlm, googleDrive, stickyNote. Webhook trigger; 67 nodes.

Output Parser Structured, Chain Llm, Google Drive +9