{"id":"BMI5WkmyU8nZqfII","meta":{"instanceId":"workflow-dfbced78","versionId":"1.0.0","createdAt":"2025-09-29T07:07:51.049378","updatedAt":"2025-09-29T07:07:51.049395","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"modelo do chatbot","nodes":[{"id":"trigger-885df201","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"position":[100,100],"parameters":{}},{"id":"c6e454af-70a1-4c65-8450-8159f7fc738b","name":"If Node","type":"n8n-nodes-base.if","position":[160,560],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"7ea831a4-0e20-4725-a6f5-3dc2f41f1cf4","operator":{"type":"object","operation":"exists","singleValue":true},"leftValue":"={{ $json.leadData }}","rightValue":""},{"id":"ccb46339-4e43-42e6-aa45-d5a0cbd62214","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"","rightValue":""}]}},"typeVersion":2,"notes":"This if node performs automated tasks as part of the workflow."},{"id":"2221736f-ef99-4ac8-8a81-51af6d4e7dcd","name":"Edit Fields1","type":"n8n-nodes-base.set","position":[440,960],"parameters":{"options":{},"assignments":{"assignments":[{"id":"19a16867-b574-4b99-82f1-a86752b7fe9f","name":"chatInput","type":"string","value":"=\"Hello, just so you can get to know me, with no intention of a response, please save this information in your memory. My name is {{ $json.leadData.name }}. I am {{ $json.leadData.age }} years old and currently live in {{ $json.leadData.city }}, {{ $json.leadData.state }}. My profession is {{ $json.leadData.profession }}, and my education level is {{ $json.leadData.educationLevel }}.\nIf I’m part of an adhesion group and have an entity, it would be {{ $json.leadData.entity }}.\n\nI am using a {{ $json.leadData.deviceType }} device to access this through the {{ $json.leadData.channel }} channel. At the moment, I am looking for a health insurance plan of type {{ $json.leadData.quotationType }}.\""},{"id":"0df8d578-8332-4cde-9044-489de16ab390","name":"session_id","type":"string","value":"={{ $json.session_id }}"}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"6aa1b3a4-0e6a-4312-9d9f-f67c4bf8f443","name":"Edit Fields2","type":"n8n-nodes-base.set","position":[920,960],"parameters":{"options":{},"assignments":{"assignments":[{"id":"19a16867-b574-4b99-82f1-a86752b7fe9f","name":"chatInput","type":"string","value":"={{ $('Chat Trigger').item.json.chatInput}}"},{"id":"0df8d578-8332-4cde-9044-489de16ab390","name":"session_id","type":"string","value":"={{ $('Chat Trigger').item.json.session_id }}"}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"6afe6158-7a8b-4a83-a778-6fd28e2a11af","name":"OpenAI","type":"n8n-nodes-base.noOp","position":[600,960],"parameters":{"options":{},"resource":"assistant","assistantId":{"__rl":true,"mode":"list","value":"asst_numdCoMZPQ6GwfiJg5drg9hr","cachedResultName":"Chat IA - Testes - Dezembro - APIS"}},"credentials":{"openAiApi":{"id":"FW1FWHcMcwemQ1kZ","name":"OpenAi account"}},"typeVersion":1,"notes":"This openAi node performs automated tasks as part of the workflow."},{"id":"4b961f1d-7da2-4a0b-98e3-7ec35ee14335","name":"Chat Trigger","type":"n8n-nodes-base.noOp","position":[-20,560],"webhookId":"1f83e8ac-d465-454a-8327-cef7f0149cb1","parameters":{"public":true,"options":{},"initialMessages":"Olá 👋\nSou Jovelino, o serviço de IA do Joov, me mande sua pergunta e responderei em seguida! :)"},"typeVersion":1,"notes":"This chatTrigger node performs automated tasks as part of the workflow."},{"id":"dccdb07f-97db-4a5a-9b09-02a5de65246e","name":"Postgres Chat Memory","type":"n8n-nodes-base.noOp","position":[640,720],"parameters":{"tableName":"aimessages","sessionKey":"YOUR_CREDENTIAL_HERE","sessionIdType":"customKey","contextWindowLength":30},"credentials":{"postgres":{"id":"M1cYa0bOSX1nfczy","name":"Postgres account"}},"typeVersion":1,"notes":"This memoryPostgresChat node performs automated tasks as part of the workflow."},{"id":"553dd27b-ab06-4605-99e0-8f15735cfff3","name":"Postgres Chat Memory1","type":"n8n-nodes-base.noOp","position":[760,1160],"parameters":{"tableName":"aimessages","sessionKey":"YOUR_CREDENTIAL_HERE","sessionIdType":"customKey","contextWindowLength":1},"credentials":{"postgres":{"id":"M1cYa0bOSX1nfczy","name":"Postgres account"}},"typeVersion":1,"notes":"This memoryPostgresChat node performs automated tasks as part of the workflow."},{"id":"0103fb97-c691-4bd3-b26d-85aaa9774594","name":"Products in Daatabase","type":"n8n-nodes-base.mySqlTool","position":[1460,600],"parameters":{"query":"SELECT * \nFROM Products p \nWHERE \n cityQuery = '{{ $fromAI(\"cityQuery\") }}' AND \n state = '{{ $fromAI(\"state\") }}' AND \n modality = 'PME' AND \n removed = 0 AND \n ({{ $fromAI(\"holderCount\") || 1 }} + {{ $fromAI(\"dependentsCount\") || 0 }}) BETWEEN p.minLifeAmount AND p.maxLifeAmount AND\n (CASE\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 0 AND 18 THEN priceAtAge0To18\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 19 AND 23 THEN priceAtAge19To23\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 24 AND 28 THEN priceAtAge24To28\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 29 AND 33 THEN priceAtAge29To33\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 34 AND 38 THEN priceAtAge34To38\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 39 AND 43 THEN priceAtAge39To43\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 44 AND 48 THEN priceAtAge44To48\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 49 AND 53 THEN priceAtAge49To53\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 54 AND 58 THEN priceAtAge54To58\n ELSE priceAtAge59To199\n END) IS NOT NULL\nORDER BY \n (CASE\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 0 AND 18 THEN priceAtAge0To18\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 19 AND 23 THEN priceAtAge19To23\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 24 AND 28 THEN priceAtAge24To28\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 29 AND 33 THEN priceAtAge29To33\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 34 AND 38 THEN priceAtAge34To38\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 39 AND 43 THEN priceAtAge39To43\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 44 AND 48 THEN priceAtAge44To48\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 49 AND 53 THEN priceAtAge49To53\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 54 AND 58 THEN priceAtAge54To58\n ELSE priceAtAge59To199\n END) ASC, \n createdAt DESC\nLIMIT 3;\n","options":{"detailedOutput":true},"operation":"executeQuery","descriptionType":"manual","toolDescription":"// Search for the X product bla bla bla"},"credentials":{"mySql":{"id":"lkGJt8aNB0azyaGy","name":"MySQL account 2"}},"typeVersion":2.4,"notes":"This mySqlTool node performs automated tasks as part of the workflow."},{"id":"0cdfd89f-eb9e-4b6c-90d1-1cf8d6ed96bb","name":"Knowledge Base","type":"n8n-nodes-base.noOp","position":[1340,600],"parameters":{"url":"{{ $env.WEBHOOK_URL }}{modalidade}&estado=SP&cidade={city}&operadora={operadora}","toolDescription":"Here you will find the knowlegde base of my shop and bla bla bla Use this when they ask for price, whatever i want."},"typeVersion":1,"notes":"This toolHttpRequest node performs automated tasks as part of the workflow."},{"id":"393f792a-4eff-4b33-aac0-025fc622a4b3","name":"External API","type":"n8n-nodes-base.noOp","position":[1200,600],"parameters":{"url":"{{ $env.WEBHOOK_URL }}","method":"POST","jsonBody":"={\n \"name\": \"{{json.name}}\",\n \"birthdate\": \"{{json.birthdate }}\"\n}","sendBody":true,"specifyBody":"json","toolDescription":"Pegue o nome completo em camel case, exemplo: Fernanda Melo, e a data de nacimento nesse formato: 1990-03-28"},"typeVersion":1,"notes":"This toolHttpRequest node performs automated tasks as part of the workflow."},{"id":"7ce7a5e7-6238-4479-a26f-bdcde1784188","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1160,414],"parameters":{"color":5,"width":436.73182569600795,"height":367.7413881276459,"content":"TOOLS"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"df6737ca-c588-48fc-9761-2a5307841298","name":"OpenAI2","type":"n8n-nodes-base.noOp","position":[460,460],"parameters":{"text":"={{ $json.chatInput }}","prompt":"define","options":{},"resource":"assistant","assistantId":{"__rl":true,"mode":"list","value":"asst_x2qfc7EuoPv7XGOL84ClEZ3L","cachedResultName":"PINE"}},"credentials":{"openAiApi":{"id":"FW1FWHcMcwemQ1kZ","name":"OpenAi account"}},"typeVersion":1,"notes":"This openAi node performs automated tasks as part of the workflow."}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"d1dc3988-6677-47c9-b91a-6875c7b6151d","connections":{"Knowledge Base":{"main":[[],[],[],[],[],[],[],[],[]]},"External API":{"main":[[],[],[],[],[],[],[],[],[]]},"OpenAI":{"main":[[]]},"OpenAI2":{"main":[[]]}},"description":"Automated workflow: modelo do chatbot. This workflow integrates 9 different services: stickyNote, toolHttpRequest, mySqlTool, memoryPostgresChat, set. It contains 18 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: modelo do chatbot. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}