{
  "name": "KyndredAI · Clasificar mensajes con IA (Claude) → enrutar",
  "nodes": [
    {
      "parameters": {
        "content": "# 🔷 KyndredAI · Clasificar mensajes con IA → enrutar\n\nRecibe un mensaje (formulario, contacto, WhatsApp…), deja que **Claude** lo clasifique en **ventas / soporte / otro** con urgencia y resumen, y lo **enruta** a la rama correcta.\n\n**Cómo funciona:** Webhook recibe el mensaje → Claude clasifica con salida estructurada → Switch lo manda a la rama según la categoría.\n\n**Necesitás:** una credencial de **Anthropic (Claude)** en n8n.\n\n**Setup:** seguí los pasos ① ② ③ de abajo. Cada rama termina en un nodo *No Operation* — conectá ahí tu acción real (CRM, ticket, aviso).\n\nProbado en n8n ~v2.26 (2026) · self-hosted o cloud · kyndredai.com",
        "height": 340,
        "width": 860,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [0, 0],
      "id": "a1a1a1a1-1111-4111-8111-aaaaaaaaaaaa",
      "name": "README"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "kyndredai-mensaje",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [40, 440],
      "id": "a2a2a2a2-2222-4222-8222-aaaaaaaaaaaa",
      "name": "Recibir mensaje (Webhook)",
      "webhookId": "a2b2c2d2-2222-4222-8222-aaaaaaaaaaaa"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Sos un clasificador de mensajes entrantes para una PyME. Clasificá el mensaje en UNA categoría: \"ventas\" (quiere comprar, cotizar o contratar), \"soporte\" (problema o ayuda con algo ya comprado) u \"otro\". Indicá la urgencia (alta / media / baja) y un resumen de una línea.\n\nMensaje de {{ $json.body.nombre }} <{{ $json.body.email }}>:\n{{ $json.body.mensaje }}",
        "hasOutputParser": true
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [360, 440],
      "id": "a3a3a3a3-3333-4333-8333-aaaaaaaaaaaa",
      "name": "Clasificar con Claude"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "claude-haiku-4-5-20251001",
          "mode": "list",
          "cachedResultName": "Claude Haiku 4.5"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.4,
      "position": [300, 680],
      "id": "a4a4a4a4-4444-4444-8444-aaaaaaaaaaaa",
      "name": "Claude (modelo)"
    },
    {
      "parameters": {
        "schemaType": "fromJson",
        "jsonSchemaExample": "{\n  \"categoria\": \"ventas\",\n  \"urgencia\": \"alta\",\n  \"resumen\": \"Pide cotización para 50 unidades\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [500, 680],
      "id": "a5a5a5a5-5555-4555-8555-aaaaaaaaaaaa",
      "name": "Formato de salida"
    },
    {
      "parameters": {
        "mode": "rules",
        "rules": {
          "values": [
            {
              "conditions": {
                "options": { "caseSensitive": false, "leftValue": "", "typeValidation": "loose", "version": 2 },
                "conditions": [
                  { "id": "c0000001-0000-4000-8000-000000000001", "leftValue": "={{ $json.output.categoria }}", "rightValue": "ventas", "operator": { "type": "string", "operation": "equals" } }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "ventas"
            },
            {
              "conditions": {
                "options": { "caseSensitive": false, "leftValue": "", "typeValidation": "loose", "version": 2 },
                "conditions": [
                  { "id": "c0000002-0000-4000-8000-000000000002", "leftValue": "={{ $json.output.categoria }}", "rightValue": "soporte", "operator": { "type": "string", "operation": "equals" } }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "soporte"
            },
            {
              "conditions": {
                "options": { "caseSensitive": false, "leftValue": "", "typeValidation": "loose", "version": 2 },
                "conditions": [
                  { "id": "c0000003-0000-4000-8000-000000000003", "leftValue": "={{ $json.output.categoria }}", "rightValue": "otro", "operator": { "type": "string", "operation": "equals" } }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "otro"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [680, 440],
      "id": "a6a6a6a6-6666-4666-8666-aaaaaaaaaaaa",
      "name": "Enrutar por categoría"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [960, 300],
      "id": "a7a7a7a7-7777-4777-8777-aaaaaaaaaaaa",
      "name": "→ Ventas (a tu CRM)"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [960, 440],
      "id": "a8a8a8a8-8888-4888-8888-aaaaaaaaaaaa",
      "name": "→ Soporte (crear ticket)"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [960, 580],
      "id": "a9a9a9a9-9999-4999-8999-aaaaaaaaaaaa",
      "name": "→ Otro (revisar)"
    },
    {
      "parameters": {
        "content": "## ① Conectá tu fuente\n\nApuntá tu formulario / contacto / WhatsApp a este Webhook (**POST**).\n\nCampos esperados en el body:\n• nombre\n• email\n• mensaje\n\n*Tip:* **Listen for test event** + un POST de prueba.",
        "height": 300,
        "width": 260,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [0, 1000],
      "id": "b1b1b1b1-1111-4111-8111-bbbbbbbbbbbb",
      "name": "Setup 1"
    },
    {
      "parameters": {
        "content": "## ② Conectá Claude\n\n1. Abrí **Claude (modelo)** → Credential → *Create new* → pegá tu **API key de Anthropic**.\n2. Modelo por defecto: **Haiku 4.5** (barato, ideal para clasificar). Podés cambiarlo.\n\n💡 Para clasificar, un modelo chico alcanza y sobra — reservá los grandes para generar texto.",
        "height": 300,
        "width": 280,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [300, 1000],
      "id": "b2b2b2b2-2222-4222-8222-bbbbbbbbbbbb",
      "name": "Setup 2"
    },
    {
      "parameters": {
        "content": "## ③ Conectá cada rama\n\nCada salida termina en un nodo **No Operation** (placeholder). Reemplazá / conectá tu acción real:\n• **Ventas** → tu CRM / aviso al vendedor\n• **Soporte** → crear ticket / responder\n• **Otro** → revisar manual\n\nClaude devuelve `categoria`, `urgencia` y `resumen` (los podés usar en cada rama).",
        "height": 320,
        "width": 300,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [640, 1000],
      "id": "b3b3b3b3-3333-4333-8333-bbbbbbbbbbbb",
      "name": "Setup 3"
    }
  ],
  "connections": {
    "Recibir mensaje (Webhook)": {
      "main": [[{ "node": "Clasificar con Claude", "type": "main", "index": 0 }]]
    },
    "Claude (modelo)": {
      "ai_languageModel": [[{ "node": "Clasificar con Claude", "type": "ai_languageModel", "index": 0 }]]
    },
    "Formato de salida": {
      "ai_outputParser": [[{ "node": "Clasificar con Claude", "type": "ai_outputParser", "index": 0 }]]
    },
    "Clasificar con Claude": {
      "main": [[{ "node": "Enrutar por categoría", "type": "main", "index": 0 }]]
    },
    "Enrutar por categoría": {
      "main": [
        [{ "node": "→ Ventas (a tu CRM)", "type": "main", "index": 0 }],
        [{ "node": "→ Soporte (crear ticket)", "type": "main", "index": 0 }],
        [{ "node": "→ Otro (revisar)", "type": "main", "index": 0 }]
      ]
    }
  },
  "active": false,
  "settings": { "executionOrder": "v1" },
  "pinData": {},
  "tags": []
}
