{
  "name": "Agente de IA con NovoProspect",
  "nodes": [
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.1,
      "position": [
        0,
        0
      ],
      "id": "f8281ed5-5c1b-4512-a886-39b27513dace",
      "name": "When chat message received",
      "webhookId": "35f212dc-0707-46c1-9c01-0e5f84794fbf"
    },
    {
      "parameters": {
        "options": {
          "systemMessage": "Eres el asistente virtual de [NOMBRE DE TU INMOBILIARIA]. Atiendes a clientes por chat en español, con un tono cálido y profesional.\n\nTu trabajo:\n1. Saluda, entiende qué busca el cliente (comprar o alquilar, zona, presupuesto, habitaciones, para cuándo) y pide su nombre y su teléfono o correo.\n2. Busca en el inventario con buscar_propiedades y da detalles con ver_propiedad. Solo ofrece lo que devuelvan las herramientas: nunca inventes precios, unidades ni amenidades.\n3. Antes de crear un lead, busca si ya existe con buscar_contacto (por teléfono o correo).\n4. Cuando tengas el nombre y un teléfono o correo, registra el lead con crear_lead e incluye en \"notes\" lo que busca. Si muestra interés en un proyecto, crea el negocio con crear_negocio.\n5. Cuando el cliente avance (pide una visita, recibe una propuesta…), mueve su negocio con mover_negocio usando los nombres de etapa de ver_embudos.\n6. Si pide hablar con una persona, o pregunta por comisiones, descuentos o temas legales, dile que un asesor lo contactará y deja una nota con agregar_nota_negocio.\n\nReglas:\n- No compartas datos de otros clientes.\n- Los precios van con su moneda (US$ o RD$).\n- Si una herramienta devuelve un error, dile al cliente con amabilidad que lo verificarás y sigue la conversación."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.7,
      "position": [
        320,
        0
      ],
      "id": "c98ee1c4-78e1-44a8-b7c6-3dc8e1d1ffb6",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        120,
        260
      ],
      "id": "7262583b-c15a-4ecc-b1f6-ce02c1b55f0d",
      "name": "Anthropic Chat Model"
    },
    {
      "parameters": {
        "contextWindowLength": 20
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        280,
        260
      ],
      "id": "748c9995-91c3-43a6-9fb9-ccfde6440284",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Busca propiedades y proyectos en el inventario. Devuelve nombre, precio, ubicación y, en los proyectos, el resumen de unidades disponibles (precio desde/hasta, m², habitaciones).",
        "method": "GET",
        "url": "=https://TU-DOMINIO/api/v1/propiedades",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "q",
              "value": "={{ $fromAI('q', 'zona, sector, nombre del proyecto o palabra clave; vacío si no aplica', 'string') }}"
            },
            {
              "name": "kind",
              "value": "={{ $fromAI('kind', 'proyecto o propiedad; vacío si no importa', 'string') }}"
            },
            {
              "name": "operation",
              "value": "={{ $fromAI('operation', 'venta o alquiler; vacío si no importa', 'string') }}"
            },
            {
              "name": "maxPrice",
              "value": "={{ $fromAI('maxPrice', 'presupuesto máximo como número sin comas; vacío si no lo dijo', 'string') }}"
            },
            {
              "name": "bedrooms",
              "value": "={{ $fromAI('bedrooms', 'habitaciones mínimas como número; vacío si no lo dijo', 'string') }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        440,
        260
      ],
      "id": "c8cf971a-6e14-4782-be6d-3c6de8c818af",
      "name": "buscar_propiedades",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Ficha completa de una propiedad o proyecto: descripción, amenidades, precios, monto de reserva, fecha de entrega, fotos y unidades disponibles.",
        "method": "GET",
        "url": "=https://TU-DOMINIO/api/v1/propiedades/{{ $fromAI('id', 'id o código de la propiedad devuelto por buscar_propiedades', 'string') }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        600,
        400
      ],
      "id": "d5aca0eb-a132-4b03-ab28-4f52c91f97c3",
      "name": "ver_propiedad",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Busca si el cliente ya existe en el CRM, por teléfono o correo. Úsala antes de crear un lead.",
        "method": "GET",
        "url": "=https://TU-DOMINIO/api/v1/contactos",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "phone",
              "value": "={{ $fromAI('phone', 'teléfono del cliente; vacío si no lo tienes', 'string') }}"
            },
            {
              "name": "email",
              "value": "={{ $fromAI('email', 'correo del cliente; vacío si no lo tienes', 'string') }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        760,
        260
      ],
      "id": "28cbf658-053b-46c4-9c6a-76430c1ad494",
      "name": "buscar_contacto",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Registra al cliente como lead en el CRM. Necesita el nombre y un teléfono o correo. Si ya existía, devuelve el mismo contacto (isNew: false).",
        "method": "POST",
        "url": "=https://TU-DOMINIO/api/v1/contactos",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"name\": \"{{ $fromAI('name', 'nombre completo del cliente', 'string') }}\",\n  \"phone\": \"{{ $fromAI('phone', 'teléfono del cliente o vacío', 'string') }}\",\n  \"email\": \"{{ $fromAI('email', 'correo del cliente o vacío', 'string') }}\",\n  \"source\": \"web\",\n  \"notes\": \"{{ $fromAI('notes', 'qué busca: operación, zona, presupuesto, habitaciones y plazo', 'string') }}\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        920,
        400
      ],
      "id": "490b122f-dfe2-4342-87a3-173cc62eb2fa",
      "name": "crear_lead",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Lista los embudos de venta y los nombres de sus etapas, en orden.",
        "method": "GET",
        "url": "=https://TU-DOMINIO/api/v1/embudos",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        1080,
        260
      ],
      "id": "9c48bc38-7773-48a1-a2d6-840051edae79",
      "name": "ver_embudos",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Busca los negocios abiertos de un contacto para saber en qué etapa están.",
        "method": "GET",
        "url": "=https://TU-DOMINIO/api/v1/negocios",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "contactId",
              "value": "={{ $fromAI('contactId', 'id del contacto', 'string') }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        1240,
        400
      ],
      "id": "92bc4a92-11ac-445e-9776-1ca0350b9392",
      "name": "buscar_negocios",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Crea un negocio (oportunidad) para un contacto que ya existe, por ejemplo cuando se interesa en un proyecto.",
        "method": "POST",
        "url": "=https://TU-DOMINIO/api/v1/negocios",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"contactId\": \"{{ $fromAI('contactId', 'id del contacto', 'string') }}\",\n  \"title\": \"{{ $fromAI('title', 'nombre del cliente y proyecto, p. ej. Ana Núñez - Torre Alba', 'string') }}\",\n  \"stageName\": \"{{ $fromAI('stageName', 'etapa según ver_embudos; vacío para la primera', 'string') }}\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        1400,
        260
      ],
      "id": "58ca0af1-f193-4883-a622-77d138bec239",
      "name": "crear_negocio",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Mueve un negocio a otra etapa de su embudo (p. ej. cuando el cliente pide una visita).",
        "method": "POST",
        "url": "=https://TU-DOMINIO/api/v1/negocios/{{ $fromAI('dealId', 'id del negocio', 'string') }}/mover",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"stageName\": \"{{ $fromAI('stageName', 'nombre exacto de la etapa según ver_embudos', 'string') }}\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        1560,
        400
      ],
      "id": "e3e2e38d-d8f8-4ff1-a420-0d65506074c8",
      "name": "mover_negocio",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Deja una nota para el agente humano en el negocio (pedidos especiales, preguntas que no puedes responder).",
        "method": "POST",
        "url": "=https://TU-DOMINIO/api/v1/negocios/{{ $fromAI('dealId', 'id del negocio', 'string') }}/notas",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"content\": \"{{ $fromAI('content', 'la nota para el agente', 'string') }}\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        1720,
        260
      ],
      "id": "66cdbddf-f43c-415a-9649-ede610372da2",
      "name": "agregar_nota_negocio",
      "credentials": {
        "httpHeaderAuth": {
          "id": "",
          "name": "NovoProspect API"
        }
      }
    }
  ],
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "buscar_propiedades": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ver_propiedad": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "buscar_contacto": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "crear_lead": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ver_embudos": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "buscar_negocios": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "crear_negocio": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "mover_negocio": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "agregar_nota_negocio": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  }
}
