{
  "name": "BookFinder-AI",
  "nodes": [
    {
      "parameters": {
        "method": "POST",
        "url": "http://192.168.18.6:3000/content",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"url\": \"https://books.toscrape.com\"\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        80,
        0
      ],
      "id": "72e6d7c0-3cc7-4870-bd68-0be8a75f497b",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "titulo",
              "cssSelector": ".product_pod h3 a",
              "returnValue": "attribute",
              "attribute": "title",
              "returnArray": true
            },
            {
              "key": "preco",
              "cssSelector": ".price_color",
              "returnArray": true
            },
            {
              "key": "avaliacao",
              "cssSelector": ".star-rating ",
              "returnValue": "attribute",
              "returnArray": true
            },
            {
              "key": "estoque",
              "cssSelector": ".instock.availability",
              "returnArray": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        288,
        0
      ],
      "id": "4fad767e-7e5d-4779-aa53-7aea49782cc3",
      "name": "HTML"
    },
    {
      "parameters": {
        "fieldToSplitOut": "titulo, preco, estoque, avaliacao",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        768,
        -16
      ],
      "id": "767059cc-cf1c-49de-80bc-9a57f669258f",
      "name": "Split Out"
    },
    {
      "parameters": {
        "formTitle": "Livros",
        "formDescription": "escolha !",
        "formFields": {
          "values": [
            {
              "fieldLabel": "qual livro ?",
              "fieldName": "Livro",
              "requiredField": true
            },
            {
              "fieldLabel": "Email",
              "fieldType": "email",
              "fieldName": "Email",
              "requiredField": true
            },
            {
              "fieldLabel": "Nome",
              "fieldName": "Nome",
              "requiredField": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.5,
      "position": [
        -176,
        0
      ],
      "id": "d81f8a6c-e121-490d-88cf-0c0e4b66317a",
      "name": "On form submission"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "c2aab603-cef8-4f75-aa90-b58a358a6e2f",
              "leftValue": "={{ $json.titulo.includes($('On form submission').item.json.Livro) }}",
              "rightValue": "={{ $json.titulo }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "or"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        528,
        0
      ],
      "id": "88a43c86-1944-4570-9ed8-51593691e913",
      "name": "If"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Dados do livro:\nT\u00edtulo: {{ $json.titulo }}\nPre\u00e7o: {{ $json.preco }}\nDisponibilidade: {{ $json.estoque }}\nAvalia\u00e7\u00e3o: {{ $json.avaliacao }}\nNome do interessado: {{ $('On form submission').item.json.Nome }}\n\nCom base nesses dados, escreva o e-mail para a pessoa interessada neste livro.",
        "needsFallback": true,
        "options": {
          "systemMessage": "Voc\u00ea \u00e9 um Consultor de Livros especializado, com profundo conhecimento sobre literatura, g\u00eaneros liter\u00e1rios e o mercado editorial. Sua miss\u00e3o \u00e9 apresentar livros de forma envolvente, calorosa e profissional para pessoas que est\u00e3o em busca de sua pr\u00f3xima leitura.\n\n## SEU PAPEL\n\nVoc\u00ea recebe dados estruturados de um livro (t\u00edtulo, pre\u00e7o, disponibilidade em estoque, avalia\u00e7\u00e3o em estrelas, e deve transformar esses dados em um e-mail personalizado, persuasivo e agrad\u00e1vel de ler, destinado a uma pessoa que demonstrou interesse nesse livro.\n\n## TOM E ESTILO\n\n- Escreva de forma cordial, entusiasmada mas natural \u2014 nunca exagerada ou artificial\n- Use linguagem acess\u00edvel, evitando jarg\u00f5es liter\u00e1rios excessivos\n- Seja caloroso e pessoal, como um livreiro experiente que genuinamente ama recomendar boas leituras\n- Mantenha um tom profissional, mas nunca frio ou rob\u00f3tico\n- Adapte o n\u00edvel de formalidade ao contexto (assuma tom respeitoso, mas cordial, como \"voc\u00ea\", n\u00e3o \"senhor/senhora\", a menos que instru\u00eddo de outra forma)\n\n## ESTRUTURA DO E-MAIL\n\n1. **Sauda\u00e7\u00e3o personalizada** \u2014 cumprimente a pessoa de forma calorosa\n2. **Abertura envolvente** \u2014 conecte o livro ao interesse demonstrado pela pessoa\n3. **Apresenta\u00e7\u00e3o do livro** \u2014 t\u00edtulo, e se dispon\u00edvel, autor\n4. **Corpo persuasivo** \u2014 destaque os pontos fortes do livro com base nos dados recebidos:\n   - Se houver avalia\u00e7\u00e3o em estrelas, mencione-a de forma natural (ex: \"muito bem avaliado pelos leitores\")\n   - Se houver pre\u00e7o, apresente-o de forma clara, sem parecer que est\u00e1 \"empurrando uma venda\"\n   - Se houver informa\u00e7\u00e3o de estoque, informe a disponibilidade com honestidade (evite criar falso senso de urg\u00eancia se n\u00e3o for real)\n5. **Fechamento com chamada para a\u00e7\u00e3o** \u2014 convide a pessoa a saber mais, finalizar a compra, ou responder o e-mail com d\u00favidas\n6. **Assinatura cordial**\n\n## REGRAS IMPORTANTES\n\n- **NUNCA invente informa\u00e7\u00f5es** que n\u00e3o estejam nos dados recebidos (sinopse, autor, pr\u00eamios, etc.). Se um dado n\u00e3o foi fornecido, simplesmente n\u00e3o o mencione \u2014 n\u00e3o crie suposi\u00e7\u00f5es ou invente detalhes para \"completar\" o texto.\n- **Seja honesto sobre disponibilidade**: se o livro estiver fora de estoque, comunique isso com transpar\u00eancia e, se fizer sentido, sugira que a pessoa seja avisada quando ele retornar.\n- **N\u00e3o seja insistente ou usar t\u00e1ticas de press\u00e3o agressivas** (ex: \"compre agora ou perca para sempre!\"). Prefira uma abordagem consultiva, n\u00e3o comercial-agressiva.\n- **Respeite direitos autorais**: n\u00e3o reproduza trechos, resenhas ou sinopses de terceiros; escreva sempre com suas pr\u00f3prias palavras.\n- Se os dados recebidos estiverem incompletos ou amb\u00edguos, escreva um e-mail mais enxuto em vez de preencher lacunas com suposi\u00e7\u00f5es.\n- Mantenha o e-mail em um tamanho razo\u00e1vel \u2014 nem muito curto (parecendo autom\u00e1tico), nem excessivamente longo (cansativo de ler). Busque equil\u00edbrio.\n\n## FORMATO DE SA\u00cdDA\n\nGere o e-mail completo, incluindo:\n- Assunto do e-mail (linha separada, come\u00e7ando com \"Assunto:\")\n- Corpo do e-mail formatado e pronto para envio\n\n## EXEMPLO DE ENTRADA QUE VOC\u00ca PODE RECEBER\n\n```json\n{\n  \"titulo\": \"A Light in the Attic\",\n  \"preco\": \"\u00a351.77\",\n  \"estoque\": \"In stock\",\n  \"avaliacao\": \"Three\"\n}\n```\n\nUse essas informa\u00e7\u00f5es para compor a mensagem, sempre em portugu\u00eas (a menos que instru\u00eddo de outra forma), adaptando o texto ao contexto espec\u00edfico de cada livro recebido."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [
        1184,
        -16
      ],
      "id": "d5050f34-ae81-4509-ad42-499a3827a5e7",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "model": "llama-3.3-70b-versatile",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "typeVersion": 1,
      "position": [
        992,
        208
      ],
      "id": "000d6e0e-8913-423f-9be3-3343ce310341",
      "name": "Groq Chat Model",
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [
        1168,
        208
      ],
      "id": "c61024af-2a4a-4d60-b2fd-9904d756d4a4",
      "name": "Google Gemini Chat Model",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('On form submission').item.json.Email }}",
        "contextWindowLength": 50
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        1392,
        176
      ],
      "id": "f5da8ecf-c724-4a63-9bc5-c07375a14910",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json.Email }}",
        "subject": "=Sua Procura do livro: {{ $('On form submission').item.json.Livro }}",
        "message": "=n\u00e3o achamos esse livro, mas temos outros titulos que podem te agradar como: {{ $('HTML').item.json.titulo }}",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        576,
        240
      ],
      "id": "0631e71f-185f-4fc7-b27d-1fdcae189362",
      "name": "Send a message",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json.Email }}",
        "subject": "=Livro:  {{ $('On form submission').item.json.Livro }}",
        "message": "={{ $json.output }}",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        1504,
        -16
      ],
      "id": "1686fc55-ab43-4c5a-b03c-5b87fbb134b8",
      "name": "Send a message1",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "include": "specifiedFields",
        "fieldsToInclude": "titulo, preco, estoque, avaliacao",
        "options": {
          "includeBinaries": false
        }
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        976,
        -16
      ],
      "id": "d5cb764f-3f64-49d3-8fc2-aaf8a957be4c",
      "name": "Aggregate"
    }
  ],
  "connections": {
    "HTTP Request": {
      "main": [
        [
          {
            "node": "HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 1
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate"
  },
  "versionId": "92702227-2420-45d5-b352-d5f6a41bfa1d",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "xxoc1UZ3AL1s0PEn",
  "tags": []
}