# workflow_versions

workflow_id: OdeuWNZyu146BSaB
workflow_name: Test_U4-05
trigger: partial_update
created_at: 2026-02-16 09:48:31
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:07.318Z","createdAt":"2026-02-16T09:48:07.318Z","id":"OdeuWNZyu146BSaB","name":"Test_U4-05","description":null,"active":false,"isArchived":false,"nodes":[{"id":"trigger","name":"Execute Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1.1,"parameters":{"inputSource":"passthrough"},"position":[0,0]},{"id":"prepare","name":"Prepare Input","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Validate and prepare input for SEO planning\nconst input = $input.first().json;\n\n// Validate required fields\nif (!input.original_content) {\n  throw new Error('Missing required field: original_content');\n}\nif (!input.focus_keyphrase) {\n  throw new Error('Missing required field: focus_keyphrase');\n}\nif (!Array.isArray(input.[REDACTED])) {\n  throw new Error('Missing required field: [REDACTED]');\n}\n\n// Truncate content if too long\nconst maxContentLength = 6000;\nlet content = input.original_content;\nif (content.length > maxContentLength) {\n  content = content.substring(0, maxContentLength) + '\\n\\n[Content truncated...]';\n}\n\nreturn [{\n  json: {\n    original_content: content,\n    original_title: input.original_title || '',\n    focus_keyphrase: input.focus_keyphrase,\n    [REDACTED]: input.[REDACTED]\n  }\n}];"},"position":[220,0]},{"id":"openai","name":"SEO Planning","type":"@n8n/n8n-nodes-langchain.openAi","typeVersion":1.8,"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o","cachedResultName":"GPT-4O"},"options":{"maxTokens":"[REDACTED]","temperature":0.5,"responseFormat":"json_object"},"messages":{"values":[{"role":"system","content":"Eres un redactor SEO experto especializado en planificación de contenido optimizado para Yoast SEO. Tu trabajo es crear metadatos SEO perfectos y un outline detallado para artículos de blog.\n\nREGLAS YOAST SEO (CRÍTICAS):\n\n1. TÍTULO SEO:\n   - Máximo 60 caracteres (ideal: 50-60)\n   - DEBE incluir la focus keyphrase\n   - Preferiblemente la keyphrase al inicio\n   - Atractivo y clickeable\n\n2. META DESCRIPTION:\n   - Máximo 155 caracteres (ideal: 145-155)\n   - DEBE incluir la focus keyphrase\n   - Llamada a la acción o resumen atractivo\n\n3. SLUG:\n   - Solo minúsculas, guiones medios, sin acentos\n   - Incluir la focus keyphrase\n   - Máximo 5-6 palabras\n   - Sin palabras vacías (el, la, de, etc.)\n\n4. OUTLINE (H2/H3):\n   - Al menos 1 H2 debe incluir la focus keyphrase\n   - Entre 4-7 secciones H2\n   - Cada H2 puede tener 2-4 H3 subsecciones\n   - Incluir keywords secundarias naturalmente\n\nRespuesta OBLIGATORIA en formato JSON válido."},{"role":"user","content":"=Crea los metadatos SEO y outline para este artículo:\n\nCONTENIDO ORIGINAL:\nTítulo: {{ $json.original_title }}\nContenido: {{ $json.original_content }}\n\nKEYWORDS SEO:\nFocus Keyphrase: {{ $json.focus_keyphrase }}\nKeywords Secundarias: {{ $json.[REDACTED].join(', ') }}\n\n---\n\nGenera:\n1. Título SEO optimizado (≤60 chars, incluye focus keyphrase)\n2. Meta description atractiva (≤155 chars, incluye focus keyphrase)\n3. Slug SEO-friendly (sin acentos, minúsculas, guiones)\n4. Outline completo con estructura H2/H3\n\nResponde ÚNICAMENTE con JSON en este formato:\n{\n  \"titulo_seo\": \"string max 60 chars\",\n  \"meta_description\": \"string max 155 chars\",\n  \"slug\": \"slug-sin-acentos\",\n  \"outline\": [\n    {\"nivel\": \"H2\", \"texto\": \"Sección principal\", \"incluye_keyword\": true},\n    {\"nivel\": \"H3\", \"texto\": \"Subsección\", \"incluye_keyword\": false}\n  ]\n}"}]},"resource":"text","operation":"message"},"position":[440,0]},{"id":"check_success","name":"Check AI Success","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"check_error","operator":{"type":"boolean","operation":"false"},"leftValue":"={{ $json.error }}","rightValue":""}]}},"position":[660,0]},{"id":"parse_response","name":"Parse AI Response","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Parse and validate OpenAI response for SEO Planning\nconst input = $input.first().json;\n\nlet parsed;\ntry {\n  if (typeof input.message?.content === 'string') {\n    parsed = JSON.parse(input.message.content);\n  } else if (typeof input.content === 'string') {\n    parsed = JSON.parse(input.content);\n  } else if (input.message?.content) {\n    parsed = input.message.content;\n  } else {\n    parsed = input;\n  }\n} catch (e) {\n  throw new Error('Failed to parse AI response: ' + e.message);\n}\n\n// Validate required fields\nif (!parsed.titulo_seo) {\n  throw new Error('Missing titulo_seo in AI response');\n}\nif (!parsed.meta_description) {\n  throw new Error('Missing meta_description in AI response');\n}\nif (!parsed.slug) {\n  throw new Error('Missing slug in AI response');\n}\nif (!Array.isArray(parsed.outline) || parsed.outline.length < 4) {\n  throw new Error('outline must be an array with at least 4 items');\n}\n\n// Enforce limits\nlet titulo_seo = parsed.titulo_seo;\nif (titulo_seo.length > 60) {\n  titulo_seo = titulo_seo.substring(0, 57) + '...';\n}\n\nlet meta_description = parsed.meta_description;\nif (meta_description.length > 155) {\n  meta_description = meta_description.substring(0, 152) + '...';\n}\n\n// Clean slug\nlet slug = parsed.slug\n  .toLowerCase()\n  .normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') // Remove accents\n  .replace(/[^a-z0-9-]/g, '-')\n  .replace(/-+/g, '-')\n  .replace(/^-|-$/g, '');\n\nreturn [{\n  json: {\n    titulo_seo,\n    meta_description,\n    slug,\n    outline: parsed.outline\n  }\n}];"},"position":[880,-100]},{"id":"success_response","name":"Format Success Response","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","options":{},"assignments":{"assignments":[{"id":"success","name":"success","type":"boolean","value":true},{"id":"workflow","name":"workflow","type":"string","value":"[REDACTED]"},{"id":"data","name":"data","type":"object","value":"={{ $json }}"},{"id":"error","name":"error","type":"object","value":null},{"id":"timestamp","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"}]}},"position":[1100,-100]},{"id":"error_response","name":"Format Error Response","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","options":{},"assignments":{"assignments":[{"id":"success","name":"success","type":"boolean","value":false},{"id":"workflow","name":"workflow","type":"string","value":"[REDACTED]"},{"id":"data","name":"data","type":"object","value":null},{"id":"error","name":"error","type":"object","value":"={{ { message: $json.error?.message || 'AI processing failed', code: 'AI_ERROR' } }}"},{"id":"timestamp","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"}]}},"position":[880,100]}],"connections":{"SEO Planning":{"main":[[{"node":"Check AI Success","type":"main","index":0}]]},"Prepare Input":{"main":[[{"node":"SEO Planning","type":"main","index":0}]]},"Check AI Success":{"main":[[{"node":"Parse AI Response","type":"main","index":0}],[{"node":"Format Error Response","type":"main","index":0}]]},"Parse AI Response":{"main":[[{"node":"Format Success Response","type":"main","index":0}]]},"Execute Workflow Trigger":{"main":[[{"node":"Prepare Input","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"34ac64a4-d9a4-407c-b3fc-8009b8dd0a16","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:07.318Z","createdAt":"2026-02-16T09:48:07.318Z","role":"workflow:owner","workflowId":"OdeuWNZyu146BSaB","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"http_request","name":"HTTP Request","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"method":"POST","url":"https://example.com/webhook","options":{"timeout":5000},"sendHeaders":true,"specifyHeaders":"manual","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]},"sendBody":true,"bodyParameters":{"parameters":[{"name":"data","value":"{{ $json }}"}]}},"position":[660,120]}},{"type":"addNode","node":{"id":"slack","name":"Slack Notification","type":"n8n-nodes-base.slack","typeVersion":3.1,"parameters":{"channel":"#general","text":"SEO Planning Results: {{ $json.titulo_seo }}","attachments":{"attachmentsJson":"[{\"color\": \"#36a64f\", \"fields\": [{\"title\": \"Title\", \"value\": \"{{ $json.titulo_seo }}\", \"short\": true}, {\"title\": \"Meta Description\", \"value\": \"{{ $json.meta_description }}\", \"short\": false}, {\"title\": \"Slug\", \"value\": \"{{ $json.slug }}\", \"short\": true}]}]"},"options":{}},"position":[660,280]}},{"type":"addNode","node":{"id":"email_send","name":"Send Email","type":"n8n-nodes-base.emailSend","typeVersion":2.3,"parameters":{"from":"workflow@example.com","to":"team@example.com","subject":"SEO Planning Results: {{ $json.titulo_seo }}","text":"SEO Planning Complete!\n\nTitle: {{ $json.titulo_seo }}\nMeta Description: {{ $json.meta_description }}\nSlug: {{ $json.slug }}\n\nOutline: {{ $json.outline }}","options":{}},"position":[660,440]}},{"type":"addConnection","source":"check_success","target":"http_request"},{"type":"addConnection","source":"check_success","target":"slack"},{"type":"addConnection","source":"check_success","target":"email_send"}]


workflow_id: wakmeW9oIGMDHmpy
workflow_name: Test_U4-09
trigger: partial_update
created_at: 2026-02-16 09:48:36
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:23.236Z","createdAt":"2026-02-16T09:48:23.236Z","id":"wakmeW9oIGMDHmpy","name":"Test_U4-09","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Daily at 10 AM","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 10 * * *"}]}},"position":[240,340]},{"id":"manual-trigger","name":"Manual Test","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,180]},{"id":"generate-dates","name":"Generate Search Dates","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const results = [];\nconst today = new Date();\n\nfor (let outboundDays = 7; outboundDays <= 90; outboundDays++) {\n  const outboundDate = new Date(today);\n  outboundDate.setDate(today.getDate() + outboundDays);\n  \n  const dayOfWeek = outboundDate.getDay();\n  if (dayOfWeek !== 5 && dayOfWeek !== 6) continue;\n  \n  const stayOptions = [7, 10, 14];\n  \n  for (const stayDays of stayOptions) {\n    const returnDate = new Date(outboundDate);\n    returnDate.setDate(outboundDate.getDate() + stayDays);\n    \n    results.push({\n      json: {\n        origin: \"CPH\",\n        destination: \"SGN\",\n        outboundDate: outboundDate.toISOString().split('T')[0],\n        returnDate: returnDate.toISOString().split('T')[0],\n        stayDays: stayDays,\n        maxPriceDKK: 20000,\n        searchIndex: results.length + 1\n      }\n    });\n  }\n}\n\nconsole.log(`Generated ${results.length} searches`);\nreturn results.slice(0, 1);"},"position":[460,260]},{"id":"search-google-flights","name":"Search Google Flights","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"[REDACTED]","options":{"timeout":10000}},"position":[680,260]},{"id":"parse-results","name":"Parse Results","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const item = $input.item;\nconst searchParams = item.json.searchParams || $('Generate Search Dates').first().json;\n\nif (!item.json || !item.json.body) {\n  console.log('No response');\n  return [];\n}\n\nconst html = typeof item.json.body === 'string' ? item.json.body : '';\nconst priceMatches = html.match(/([\\d,]+)\\s*(?:kr|DKK)/gi) || [];\n\nif (priceMatches.length === 0) {\n  console.log('No prices found');\n  return [];\n}\n\nconst maxPriceDKK = searchParams.maxPriceDKK || 20000;\nconst results = [];\n\nfor (const priceText of priceMatches.slice(0, 5)) {\n  const priceMatch = priceText.match(/([\\d,]+)/);\n  if (!priceMatch) continue;\n  \n  const priceNum = parseInt(priceMatch[1].replace(/,/g, ''));\n  \n  if (priceNum < maxPriceDKK) {\n    results.push({\n      json: {\n        outboundDate: searchParams.outboundDate,\n        returnDate: searchParams.returnDate,\n        stayDays: searchParams.stayDays,\n        price: priceNum,\n        priceText: priceText,\n        currency: 'DKK',\n        platform: 'Google Flights',\n        searchUrl: `https://www.google.com/travel/flights?hl=en&curr=DKK&q=Flights%20to%20${searchParams.destination}%20from%20${searchParams.origin}%20on%20${searchParams.outboundDate}%20through%20${searchParams.returnDate}%20business%20class`\n      }\n    });\n    break;\n  }\n}\n\nreturn results;"},"position":[900,180]},{"id":"format-telegram","name":"Format Telegram","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"message","name":"message","type":"string","value":"={{ \"✈️ BUSINESS CLASS DEAL FOUND!\\n\\n🎯 CPH → SGN → CPH\\n📅 Out: \" + $json.outboundDate + \"\\n📅 Return: \" + $json.returnDate + \"\\n⏱️ Stay: \" + $json.stayDays + \" days\\n\\n💰 Price: \" + $json.price + \" DKK\\n✅ Under 20,000 DKK threshold!\\n🌐 Platform: \" + $json.platform + \"\\n\\n🔗 Search:\\n\" + $json.searchUrl }}"}]}},"position":[1120,180]},{"id":"send-telegram","name":"Send Telegram","type":"n8n-nodes-base.telegram","typeVersion":1.2,"parameters":{"text":"={{ $json.message }}","chatId":"-5094808424","operation":"sendMessage","additionalFields":{}},"position":[1340,180]},{"id":"handle-errors","name":"Handle Errors","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const items = $input.all();\nfor (const item of items) {\n  const errorData = item.json || {};\n  const errorMsg = errorData.error || errorData.message || 'Unknown error';\n  console.error(`Search failed: ${errorMsg}`);\n}\nreturn [];"},"position":[900,380]}],"connections":{"Manual Test":{"main":[[{"node":"Generate Search Dates","type":"main","index":0}]]},"Parse Results":{"main":[[{"node":"Format Telegram","type":"main","index":0}]]},"Daily at 10 AM":{"main":[[{"node":"Generate Search Dates","type":"main","index":0}]]},"Format Telegram":{"main":[[{"node":"Send Telegram","type":"main","index":0}]]},"Generate Search Dates":{"main":[[{"node":"Search Google Flights","type":"main","index":0}]]},"Search Google Flights":{"main":[[{"node":"Parse Results","type":"main","index":0}],[{"node":"Handle Errors","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"5ef14331-5c93-488a-9798-d070065d2a03","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:23.237Z","createdAt":"2026-02-16T09:48:23.237Z","role":"workflow:owner","workflowId":"wakmeW9oIGMDHmpy","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"audit-log","name":"Audit Log","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"timestamp","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"},{"id":"workflowId","name":"workflowId","type":"string","value":"={{ $workflow.id }}"},{"id":"workflowName","name":"workflowName","type":"string","value":"={{ $workflow.name }}"},{"id":"executionId","name":"executionId","type":"string","value":"={{ $execution.id }}"},{"id":"origin","name":"origin","type":"string","value":"={{ $json.origin }}"},{"id":"destination","name":"destination","type":"string","value":"={{ $json.destination }}"},{"id":"outboundDate","name":"outboundDate","type":"string","value":"={{ $json.outboundDate }}"},{"id":"returnDate","name":"returnDate","type":"string","value":"={{ $json.returnDate }}"},{"id":"price","name":"price","type":"number","value":"={{ $json.price }}"},{"id":"stayDays","name":"stayDays","type":"number","value":"={{ $json.stayDays }}"},{"id":"platform","name":"platform","type":"string","value":"={{ $json.platform }}"}]},"includeOtherFields":true},"position":[1100,400]}},{"type":"addConnection","source":"Parse Results","target":"Audit Log"}]


workflow_id: yc5Vm5TpFhds1VgM
workflow_name: Test_U4-11
trigger: partial_update
created_at: 2026-02-16 09:48:38
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:26.467Z","createdAt":"2026-02-16T09:48:26.467Z","id":"yc5Vm5TpFhds1VgM","name":"Test_U4-11","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-1","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"agent","httpMethod":"POST","responseCode":200,"responseData":"firstEntryJson","responseMode":"lastNode"},"position":[200,300]},{"id":"openai-1","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion":1.3,"parameters":{"model":{"resourceLocator":"gpt-4o-mini"},"options":{"temperature":0.7}},"position":[450,300]},{"id":"agent-1","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","typeVersion":3,"parameters":{"text":"={{ $json.message }}","options":{"systemMessage":"你是一个专业的AI助手，能够回答用户的问题、提供建议和执行各种任务。请尽可能提供准确和有用的回答。"},"promptType":"define"},"position":[700,300]},{"id":"respond-1","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":2.1,"parameters":{"respondWith":"json"},"position":[950,300]}],"connections":{"Webhook":{"main":[[{"node":"OpenAI Chat Model","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"OpenAI Chat Model":{"main":[[{"node":"AI Agent","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"884697d9-d1dd-4768-b10d-5311ee281ea0","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:26.467Z","createdAt":"2026-02-16T09:48:26.467Z","role":"workflow:owner","workflowId":"yc5Vm5TpFhds1VgM","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"switch-1","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":1.2,"parameters":{"dataType":"string","value1":"={{ $json.customerTier }}","rules":{"rules":[{"operation":"equal","value":"premium"},{"operation":"equal","value":"enterprise"}]},"fallbackOutput":"true"},"position":[550,300]}},{"type":"removeConnection","source":"OpenAI Chat Model","target":"AI Agent"},{"type":"addConnection","source":"OpenAI Chat Model","target":"Switch"},{"type":"addConnection","source":"Switch","target":"AI Agent"}]


workflow_id: mtX2yO0OZDjVMd2h
workflow_name: Test_U4-10
trigger: partial_update
created_at: 2026-02-16 09:48:39
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:25.555Z","createdAt":"2026-02-16T09:48:25.555Z","id":"mtX2yO0OZDjVMd2h","name":"Test_U4-10","description":null,"active":false,"isArchived":false,"nodes":[{"id":"manual-trigger-1","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[200,300]},{"id":"set-topics-1","name":"Set Topics","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"id":"topics-field","name":"topics","type":"string","value":"[\"örnek konu 1\",\"örnek konu 2\"]"}]},"includeOtherFields":false},"position":[420,300]},{"id":"ai-instagram-pack-1","name":"AI Instagram Pack","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion":1.3,"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-2024-08-06","cachedResultName":"gpt-4o-2024-08-06"},"options":{}},"position":[680,300]},{"id":"set-json-output-1","name":"Set JSON Output","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"id":"content-json","name":"content_json","type":"string","value":"={{ $json[\"data\"] ?? $json[\"result\"] ?? $json }}"}]},"includeOtherFields":true},"position":[940,300]},{"id":"write-files-1","name":"Write Files","type":"n8n-nodes-base.writeBinaryFile","typeVersion":1,"parameters":{"fileName":"={{ $json[\"file_name\"] || \"[REDACTED].txt\" }}","dataPropertyName":"data"},"position":[1200,300]}],"connections":{"Set Topics":{"main":[[{"node":"AI Instagram Pack","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Set Topics","type":"main","index":0}]]},"Set JSON Output":{"main":[[{"node":"Write Files","type":"main","index":0}]]},"AI Instagram Pack":{"main":[[{"node":"Set JSON Output","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"83b82edf-c2dc-4265-b394-3985f13c4a63","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:25.555Z","createdAt":"2026-02-16T09:48:25.555Z","role":"workflow:owner","workflowId":"mtX2yO0OZDjVMd2h","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"error-trigger-1","name":"Error Trigger","type":"n8n-nodes-base.errorTrigger","typeVersion":1,"parameters":{},"position":[420,500]}},{"type":"addNode","node":{"id":"retry-queue-1","name":"Retry Queue","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"id":"failed-item","name":"failed_item","type":"string","value":"={{ $json.execution.id }}"},{"id":"error-message","name":"error_message","type":"string","value":"={{ $json.execution.error?.message }}"},{"id":"timestamp","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"}]},"includeOtherFields":false},"position":[680,500]}},{"type":"addConnection","source":"Error Trigger","target":"Retry Queue"}]


workflow_id: R3MFUmMRzZ80uCMt
workflow_name: Test_U4-12
trigger: partial_update
operations: [{"type":"addConnection","source":"Document Upload Trigger","target":"Respond"}]
created_at: 2026-02-16 09:48:40
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:33.516Z","createdAt":"2026-02-16T09:48:33.516Z","id":"R3MFUmMRzZ80uCMt","name":"Test_U4-12","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook","name":"Document Upload Trigger","type":"n8n-nodes-base.webhook","typeVersion":1.2,"parameters":{"path":"grace-extract-doc","responseMode":"responseNode"},"position":[250,300]},{"id":"gemini","name":"Extract with Gemini","type":"n8n-nodes-base.httpRequest","typeVersion":4,"parameters":{"url":"=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent","method":"POST","sendBody":true,"contentType":"json","bodyParameters":{"parameters":[{"name":"contents","value":"={{ [{parts: [{text: 'Extract W-2 data: ' + $json.filename}]}] }}"}]}},"position":[450,300]},{"id":"save","name":"Save to Database","type":"n8n-nodes-base.set","typeVersion":3,"parameters":{"mode":"manual","assignments":{"assignments":[{"id":"status","name":"status","type":"string","value":"extracted"}]},"duplicateItem":false},"position":[650,300]},{"id":"respond","name":"Respond","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"parameters":{"respondWith":"json","responseBody":"={{ {status: 'success', client: $json.client} }}"},"position":[850,300]}],"connections":{"Save to Database":{"main":[[{"node":"Respond","type":"main","index":0}]]},"Extract with Gemini":{"main":[[{"node":"Save to Database","type":"main","index":0}]]},"Document Upload Trigger":{"main":[[{"node":"Extract with Gemini","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"173e78ac-d20f-496f-8fe1-fcdbd31f1d81","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:33.516Z","createdAt":"2026-02-16T09:48:33.516Z","role":"workflow:owner","workflowId":"R3MFUmMRzZ80uCMt","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}


workflow_id: yc5Vm5TpFhds1VgM
workflow_name: Test_U4-11
trigger: partial_update
created_at: 2026-02-16 09:48:42
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:26.467Z","createdAt":"2026-02-16T09:48:26.467Z","id":"yc5Vm5TpFhds1VgM","name":"Test_U4-11","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-1","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"agent","httpMethod":"POST","responseCode":200,"responseData":"firstEntryJson","responseMode":"lastNode"},"position":[200,300]},{"id":"openai-1","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion":1.3,"parameters":{"model":{"resourceLocator":"gpt-4o-mini"},"options":{"temperature":0.7}},"position":[450,300]},{"id":"agent-1","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","typeVersion":3,"parameters":{"text":"={{ $json.message }}","options":{"systemMessage":"你是一个专业的AI助手，能够回答用户的问题、提供建议和执行各种任务。请尽可能提供准确和有用的回答。"},"promptType":"define"},"position":[700,300]},{"id":"respond-1","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":2.1,"parameters":{"respondWith":"json"},"position":[950,300]}],"connections":{"Webhook":{"main":[[{"node":"OpenAI Chat Model","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"OpenAI Chat Model":{"main":[[{"node":"AI Agent","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"884697d9-d1dd-4768-b10d-5311ee281ea0","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:26.467Z","createdAt":"2026-02-16T09:48:26.467Z","role":"workflow:owner","workflowId":"yc5Vm5TpFhds1VgM","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"removeConnection","source":"Switch","target":"AI Agent"},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":0}]


workflow_id: RUsG1p3dQWmwpza9
workflow_name: Test_U4-08
trigger: partial_update
created_at: 2026-02-16 09:48:42
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:18.057Z","createdAt":"2026-02-16T09:48:18.057Z","id":"RUsG1p3dQWmwpza9","name":"Test_U4-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"48eaec19-0086-4338-93b9-70b356a6281d","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"8639a794-f913-4927-a63d-0d05ebfeb0e5","name":"Notion - Get Today Deployments","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"simple":false,"filters":{"conditions":[{"key":"오늘배포예정|formula","condition":"equals","returnType":"checkbox","checkboxValue":true},{"key":"상태|status","condition":"does_not_equal","statusValue":"릴리즈"}]},"options":{"sort":{"sortValue":[{"key":"배포일(찐)|formula","direction":"ascending"}]}},"resource":"databasePage","matchType":"allFilters","operation":"getAll","databaseId":"[REDACTED]","filterType":"manual"},"position":[460,300]},{"id":"c994aa5c-c14a-4463-86ee-6a486d12aa9a","name":"Slack - User Lookup","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/api/users.lookupByEmail","options":{},"sendQuery":true,"authentication":"[REDACTED]","queryParameters":{"parameters":[{"name":"email","value":"={{ $json.properties['태스크 오너'].people[0].person.email }}"}]},"nodeCredentialType":"[REDACTED]"},"position":[680,300]},{"id":"3e108a3d-41cf-4813-a87d-4bc22ad67b5e","name":"Format Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"[REDACTED_TOKEN]","name":"message","type":"string","value":"=• 작업자 : <@{{ $json.user.id }}>\n• 작업 : <{{ $('Notion - Get Today Deployments').item.json.url }}|{{ $('Notion - Get Today Deployments').item.json.properties['작업'].title[0].text.content }}>\n• 상태 : {{ $('Notion - Get Today Deployments').item.json.properties['상태'].status.name }}\n\n"},{"id":"task-count-id","name":"taskCount","type":"number","value":"={{ $('Notion - Get Today Deployments').all().length }}"}]}},"position":[900,300]},{"id":"dff69e4e-df62-47bd-8932-21c1682269e1","name":"Aggregate Messages","type":"n8n-nodes-base.aggregate","typeVersion":1,"parameters":{"options":{},"aggregate":"[REDACTED]"},"position":[1120,300]},{"id":"prepare-final-msg-id","name":"Prepare Final Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"combined-message-id","name":"combinedMessage","type":"string","value":"={{ $json.data.map(item => item.message).join('') }}"},{"id":"task-count-final-id","name":"taskCount","type":"number","value":"={{ $json.data[0].taskCount }}"}]}},"position":[1340,300]},{"id":"32d5acc2-f143-4fa4-b4ed-afdee1c79a0d","name":"Slack - Send Main Message","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"text":"=[ZEP]\n오늘 배포 예정 작업은 {{ $json.taskCount }}개 입니다.","select":"channel","channelId":{"__rl":true,"mode":"id","value":"C08PLE5CF4K"},"otherOptions":{}},"position":[1560,300]},{"id":"slack-thread-reply-id","name":"Slack - Thread Reply","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"ts":"={{ $('Slack - Send Main Message').item.json.ts }}","text":"={{ $('Prepare Final Message').item.json.combinedMessage }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"C08PLE5CF4K"},"messageType":"reply","otherOptions":{}},"position":[1780,300]}],"connections":{"Manual Trigger":{"main":[[{"node":"Notion - Get Today Deployments","type":"main","index":0}]]},"Aggregate Messages":{"main":[[{"node":"Prepare Final Message","type":"main","index":0}]]},"Format Message":{"main":[[{"node":"Aggregate Messages","type":"main","index":0}]]},"Prepare Final Message":{"main":[[{"node":"Slack - Send Main Message","type":"main","index":0}]]},"Slack - User Lookup":{"main":[[{"node":"Format Message","type":"main","index":0}]]},"Slack - Send Main Message":{"main":[[{"node":"Slack - Thread Reply","type":"main","index":0}]]},"Notion - Get Today Deployments":{"main":[[{"node":"Slack - User Lookup","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"017329a9-cf85-41a0-959e-9b8a72864c55","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:18.058Z","createdAt":"2026-02-16T09:48:18.058Z","role":"workflow:owner","workflowId":"RUsG1p3dQWmwpza9","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"priority-route-if","name":"Check Priority","type":"n8n-nodes-base.if","typeVersion":1,"parameters":{"data1":"={{ $json.properties['중요도'] || $json.properties['priority'] }}","operation":"equal","data2":"=\"높음\" || =\"high\" || =\"High\"","options":{}},"position":[580,300]}}]


workflow_id: RUsG1p3dQWmwpza9
workflow_name: Test_U4-08
trigger: partial_update
created_at: 2026-02-16 09:48:46
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:18.057Z","createdAt":"2026-02-16T09:48:18.057Z","id":"RUsG1p3dQWmwpza9","name":"Test_U4-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"48eaec19-0086-4338-93b9-70b356a6281d","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"8639a794-f913-4927-a63d-0d05ebfeb0e5","name":"Notion - Get Today Deployments","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"simple":false,"filters":{"conditions":[{"key":"오늘배포예정|formula","condition":"equals","returnType":"checkbox","checkboxValue":true},{"key":"상태|status","condition":"does_not_equal","statusValue":"릴리즈"}]},"options":{"sort":{"sortValue":[{"key":"배포일(찐)|formula","direction":"ascending"}]}},"resource":"databasePage","matchType":"allFilters","operation":"getAll","databaseId":"[REDACTED]","filterType":"manual"},"position":[460,300]},{"id":"c994aa5c-c14a-4463-86ee-6a486d12aa9a","name":"Slack - User Lookup","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/api/users.lookupByEmail","options":{},"sendQuery":true,"authentication":"[REDACTED]","queryParameters":{"parameters":[{"name":"email","value":"={{ $json.properties['태스크 오너'].people[0].person.email }}"}]},"nodeCredentialType":"[REDACTED]"},"position":[680,300]},{"id":"3e108a3d-41cf-4813-a87d-4bc22ad67b5e","name":"Format Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"[REDACTED_TOKEN]","name":"message","type":"string","value":"=• 작업자 : <@{{ $json.user.id }}>\n• 작업 : <{{ $('Notion - Get Today Deployments').item.json.url }}|{{ $('Notion - Get Today Deployments').item.json.properties['작업'].title[0].text.content }}>\n• 상태 : {{ $('Notion - Get Today Deployments').item.json.properties['상태'].status.name }}\n\n"},{"id":"task-count-id","name":"taskCount","type":"number","value":"={{ $('Notion - Get Today Deployments').all().length }}"}]}},"position":[900,300]},{"id":"dff69e4e-df62-47bd-8932-21c1682269e1","name":"Aggregate Messages","type":"n8n-nodes-base.aggregate","typeVersion":1,"parameters":{"options":{},"aggregate":"[REDACTED]"},"position":[1120,300]},{"id":"prepare-final-msg-id","name":"Prepare Final Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"combined-message-id","name":"combinedMessage","type":"string","value":"={{ $json.data.map(item => item.message).join('') }}"},{"id":"task-count-final-id","name":"taskCount","type":"number","value":"={{ $json.data[0].taskCount }}"}]}},"position":[1340,300]},{"id":"32d5acc2-f143-4fa4-b4ed-afdee1c79a0d","name":"Slack - Send Main Message","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"text":"=[ZEP]\n오늘 배포 예정 작업은 {{ $json.taskCount }}개 입니다.","select":"channel","channelId":{"__rl":true,"mode":"id","value":"C08PLE5CF4K"},"otherOptions":{}},"position":[1560,300]},{"id":"slack-thread-reply-id","name":"Slack - Thread Reply","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"ts":"={{ $('Slack - Send Main Message').item.json.ts }}","text":"={{ $('Prepare Final Message').item.json.combinedMessage }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"C08PLE5CF4K"},"messageType":"reply","otherOptions":{}},"position":[1780,300]}],"connections":{"Manual Trigger":{"main":[[{"node":"Notion - Get Today Deployments","type":"main","index":0}]]},"Aggregate Messages":{"main":[[{"node":"Prepare Final Message","type":"main","index":0}]]},"Format Message":{"main":[[{"node":"Aggregate Messages","type":"main","index":0}]]},"Prepare Final Message":{"main":[[{"node":"Slack - Send Main Message","type":"main","index":0}]]},"Slack - User Lookup":{"main":[[{"node":"Format Message","type":"main","index":0}]]},"Slack - Send Main Message":{"main":[[{"node":"Slack - Thread Reply","type":"main","index":0}]]},"Notion - Get Today Deployments":{"main":[[{"node":"Slack - User Lookup","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"017329a9-cf85-41a0-959e-9b8a72864c55","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:18.058Z","createdAt":"2026-02-16T09:48:18.058Z","role":"workflow:owner","workflowId":"RUsG1p3dQWmwpza9","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"removeConnection","source":"Notion - Get Today Deployments","target":"Slack - User Lookup"},{"type":"addConnection","source":"Notion - Get Today Deployments","target":"Check Priority"},{"type":"addConnection","source":"Check Priority","target":"Slack - User Lookup"}]


workflow_id: s9rP8w7tJIBNFKMX
workflow_name: Test_U5-03
trigger: partial_update
created_at: 2026-02-16 09:48:46
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:38.764Z","createdAt":"2026-02-16T09:48:38.764Z","id":"s9rP8w7tJIBNFKMX","name":"Test_U5-03","description":null,"active":false,"isArchived":false,"nodes":[{"id":"node1","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"salma-v2","options":{},"httpMethod":"POST","responseMode":"responseNode"},"position":[100,300]},{"id":"node2","name":"Extract Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const body = $input.item.json.body || $input.item.json;\nconst conversation = body.conversation || {};\nconst message = body.content || '';\nconst messageType = body.message_type;\n\nif (messageType === 1 || messageType === 'outgoing') {\n  return [];\n}\n\nlet phone = (body?.sender?.phone_number || body?.sender?.identifier || '').toString().replace(/\\D/g, '');\nif (phone.startsWith('0')) phone = '212' + phone.substring(1);\nif (!phone.startsWith('212') && phone.length > 0) phone = '212' + phone;\n\nconst isVoice = body.content_type === 'audio' || message.includes('00:00 /');\n\nreturn [{\n  json: {\n    phone,\n    message: isVoice ? '[رسالة صوتية]' : message,\n    is_voice: isVoice,\n    conversation_id: conversation.id || body.conversation_id,\n    account_id: body?.account?.id || 1\n  }\n}];"},"position":[320,300]},{"id":"node3","name":"Build Context","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"raw","jsonOutput":"={\n  \"phone\": \"{{ $json.phone }}\",\n  \"message\": \"{{ $json.message }}\",\n  \"is_voice\": {{ $json.is_voice }},\n  \"conversation_id\": {{ $json.conversation_id }},\n  \"account_id\": {{ $json.account_id }},\n  \"lead_state\": {\n    \"name\": null,\n    \"city\": null,\n    \"course_type\": null,\n    \"stage\": \"GREETING\"\n  },\n  \"is_first_message\": true\n}"},"position":[540,300]},{"id":"node4","name":"Search RAG","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"http://[domain]/search","method":"POST","options":{},"jsonBody":"={\"query\": \"{{ $json.message }}\", \"limit\": 4}","sendBody":true,"specifyBody":"json"},"position":[760,300]},{"id":"node5","name":"AI Agent","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/v1/chat/completions","method":"POST","options":{},"jsonBody":"={\n  \"model\": \"gpt-4o-mini\",\n  \"temperature\": 0.7,\n  \"max_tokens\": 500,\n  \"messages\": [\n    {\"role\": \"system\", \"content\": \"أنتِ سلمى، المساعدة البيعية في مركز KeyTechnology للتكوين في القنيطرة.\\n\\nالقواعد:\\n1. تكلمي بالدارجة المغربية\\n2. ردود قصيرة (2-4 جمل)\\n3. لا تكرري الأسئلة\\n\\nالدورات: صناعة المحتوى، التسويق الرقمي، الذكاء الاصطناعي، محو الأمية الرقمية\\nالأسعار: 600 درهم جماعي، 1500 درهم فردي\\n\\nالمدن القريبة: القنيطرة، سلا، الرباط، تمارة\\nالمدن البعيدة: الدار البيضاء، فاس، طنجة... (أونلاين فقط)\\n\\nأرجعي JSON:\\n{\\\"reply_text\\\": \\\"ردك\\\", \\\"action\\\": \\\"none\\\"}\"},\n    {\"role\": \"user\", \"content\": \"الرسالة: {{ $('Build Context').item.json.message }}\\n\\nمعلومات RAG:\\n{{ $json.results ? $json.results.map(r => r.title + ': ' + r.content.substring(0,200)).join('\\\\n') : 'لا توجد' }}\\n\\n{{ $('Build Context').item.json.is_first_message ? 'هذه أول رسالة - رحبي واسألي عن المدينة' : '' }}\\n{{ $('Build Context').item.json.is_voice ? 'رسالة صوتية - اطلبي الكتابة' : '' }}\"}\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"[REDACTED]","nodeCredentialType":"[REDACTED]"},"position":[980,300]},{"id":"node6","name":"Parse Response","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const ai = $input.item.json;\nconst ctx = $('Build Context').item.json;\n\nlet text = '';\nif (ai.choices?.[0]?.message?.content) {\n  text = ai.choices[0].message.content;\n} else {\n  text = JSON.stringify(ai);\n}\n\nlet parsed;\ntry {\n  const match = text.match(/\\{[\\s\\S]*\\}/);\n  parsed = match ? JSON.parse(match[0]) : { reply_text: text };\n} catch(e) {\n  parsed = { reply_text: 'عذراً، وقع مشكل. راسلنا على 0660976295' };\n}\n\nreturn [{\n  json: {\n    reply_text: parsed.reply_text || '',\n    action: parsed.action || 'none',\n    conversation_id: ctx.conversation_id,\n    account_id: ctx.account_id,\n    phone: ctx.phone\n  }\n}];"},"position":[1200,300]},{"id":"node7","name":"Reply Chatwoot","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://chatwoot.habertech.top/api/v1/accounts/{{ $json.account_id }}/conversations/{{ $json.conversation_id }}/messages","method":"POST","options":{},"jsonBody":"={\"content\": {{ JSON.stringify($json.reply_text) }}, \"message_type\": \"outgoing\"}","sendBody":true,"specifyBody":"json","authentication":"[REDACTED]","nodeCredentialType":"[REDACTED]"},"position":[1420,300]},{"id":"node8","name":"Response OK","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"parameters":{"respondWith":"json","responseBody":"={\"status\": \"ok\", \"reply\": {{ JSON.stringify($('Parse Response').item.json.reply_text) }}}"},"position":[1640,300]}],"connections":{"Webhook":{"main":[[{"node":"Extract Data","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Parse Response","type":"main","index":0}]]},"Search RAG":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Extract Data":{"main":[[{"node":"Build Context","type":"main","index":0}]]},"Build Context":{"main":[[{"node":"Search RAG","type":"main","index":0}]]},"Parse Response":{"main":[[{"node":"Reply Chatwoot","type":"main","index":0}]]},"Reply Chatwoot":{"main":[[{"node":"Response OK","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"c9ae8143-f502-4d7a-97ad-c9a69ab220f3","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:38.764Z","createdAt":"2026-02-16T09:48:38.764Z","role":"workflow:owner","workflowId":"s9rP8w7tJIBNFKMX","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"node_loop","name":"Batch Loop","type":"n8n-nodes-base.splitInBatches","typeVersion":3.3,"parameters":{"batchSize":1,"options":{}},"position":[220,300]}},{"type":"addConnection","source":"Extract Data","target":"Batch Loop"},{"type":"removeConnection","source":"Extract Data","target":"Build Context"},{"type":"addConnection","source":"Batch Loop","target":"Build Context"}]


workflow_id: rWDvdlvRIPnEnz4A
workflow_name: Test_U4-06
trigger: partial_update
created_at: 2026-02-16 09:48:48
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:14.867Z","createdAt":"2026-02-16T09:48:14.867Z","id":"rWDvdlvRIPnEnz4A","name":"Test_U4-06","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-input","name":"Webhook Input","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"process-order","httpMethod":"POST","responseMode":"lastNode"},"position":[240,300]},{"id":"set-prepare","name":"Prepare Request","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"orderId","value":"={{ $json.body.order_id }}","type":"string"},{"name":"customerEmail","value":"={{ $json.body.email }}","type":"string"},{"name":"amount","value":"={{ $json.body.amount }}","type":"number"},{"name":"timestamp","value":"={{ new Date().toISOString() }}","type":"string"}]}},"position":[460,300]},{"id":"http-payment","name":"Process Payment","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://api.stripe.com/v1/charges","method":"POST","sendHeaders":true,"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer sk_test_xxx"}]},"sendBody":true,"bodyParameters":{"parameters":[{"name":"amount","value":"={{ $json.amount }}"},{"name":"currency","value":"usd"},{"name":"source","value":"tok_visa"}]},"options":{}},"position":[680,300]},{"id":"code-validate","name":"Validate Response","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const response = $input.first().json;\nconst isValid = response.status === 'succeeded' && response.amount > 0;\nreturn [{\n  json: {\n    ...response,\n    isValid,\n    validatedAt: new Date().toISOString()\n  }\n}];"},"position":[900,300]},{"id":"if-check-payment","name":"Payment Valid?","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"conditions":{"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true"},"leftValue":"={{ $json.isValid }}"}]}},"position":[1120,300]},{"id":"http-fulfillment","name":"Send to Fulfillment","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://api.example.com/fulfillment/orders","method":"POST","sendBody":true,"specifyBody":"json","jsonBody":"={{ JSON.stringify({ orderId: $json.orderId, chargeId: $json.id }) }}","options":{}},"position":[1340,200]},{"id":"set-success","name":"Format Success","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"status","value":"success","type":"string"},{"name":"message","value":"Order processed successfully","type":"string"},{"name":"orderId","value":"={{ $json.orderId }}","type":"string"}]}},"position":[1560,200]},{"id":"respond-result","name":"Return Result","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.5,"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify($json) }}"},"position":[1780,300]}],"connections":{"Webhook Input":{"main":[[{"node":"Prepare Request","type":"main","index":0}]]},"Prepare Request":{"main":[[{"node":"Process Payment","type":"main","index":0}]]},"Process Payment":{"main":[[{"node":"Validate Response","type":"main","index":0}]]},"Validate Response":{"main":[[{"node":"Payment Valid?","type":"main","index":0}]]},"Payment Valid?":{"main":[[{"node":"Send to Fulfillment","type":"main","index":0}],[{"node":"Return Result","type":"main","index":0}]]},"Send to Fulfillment":{"main":[[{"node":"Format Success","type":"main","index":0}]]},"Format Success":{"main":[[{"node":"Return Result","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"9b94d1ad-95fd-40c3-a79f-7167250c7841","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:14.867Z","createdAt":"2026-02-16T09:48:14.867Z","role":"workflow:owner","workflowId":"rWDvdlvRIPnEnz4A","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"error-trigger","name":"Error Trigger","type":"n8n-nodes-base.errorTrigger","typeVersion":1,"parameters":{},"position":[680,500]}},{"type":"addNode","node":{"id":"set-error","name":"Format Error","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"status","value":"error","type":"string"},{"name":"message","value":"={{ $json.error.message }}","type":"string"},{"name":"orderId","value":"={{ $json.orderId }}","type":"string"}]}},"position":[900,500]}},{"type":"addConnection","source":"Process Payment","target":"Error Trigger"},{"type":"addConnection","source":"Send to Fulfillment","target":"Error Trigger"},{"type":"addConnection","source":"Error Trigger","target":"Format Error"},{"type":"addConnection","source":"Format Error","target":"Return Result"}]


workflow_id: yc5Vm5TpFhds1VgM
workflow_name: Test_U4-11
trigger: partial_update
created_at: 2026-02-16 09:48:52
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:26.467Z","createdAt":"2026-02-16T09:48:26.467Z","id":"yc5Vm5TpFhds1VgM","name":"Test_U4-11","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-1","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"agent","httpMethod":"POST","responseCode":200,"responseData":"firstEntryJson","responseMode":"lastNode"},"position":[200,300]},{"id":"openai-1","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion":1.3,"parameters":{"model":{"resourceLocator":"gpt-4o-mini"},"options":{"temperature":0.7}},"position":[450,300]},{"id":"agent-1","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","typeVersion":3,"parameters":{"text":"={{ $json.message }}","options":{"systemMessage":"你是一个专业的AI助手，能够回答用户的问题、提供建议和执行各种任务。请尽可能提供准确和有用的回答。"},"promptType":"define"},"position":[700,300]},{"id":"respond-1","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":2.1,"parameters":{"respondWith":"json"},"position":[950,300]}],"connections":{"Webhook":{"main":[[{"node":"OpenAI Chat Model","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"OpenAI Chat Model":{"main":[[{"node":"AI Agent","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"884697d9-d1dd-4768-b10d-5311ee281ea0","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:26.467Z","createdAt":"2026-02-16T09:48:26.467Z","role":"workflow:owner","workflowId":"yc5Vm5TpFhds1VgM","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"switch-1","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":1.2,"parameters":{"dataType":"string","value1":"={{ $json.customerTier }}","rules":{"rules":[{"operation":"equal","value":"premium"},{"operation":"equal","value":"enterprise"}]},"fallbackOutput":"true"},"position":[550,300]}},{"type":"removeConnection","source":"OpenAI Chat Model","target":"AI Agent"},{"type":"addConnection","source":"OpenAI Chat Model","target":"Switch"},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":0},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":1},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":2}]


workflow_id: LroIDqDr1jSnbJjH
workflow_name: Test_U5-01
trigger: partial_update
created_at: 2026-02-16 09:48:53
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:34.130Z","createdAt":"2026-02-16T09:48:34.130Z","id":"LroIDqDr1jSnbJjH","name":"Test_U5-01","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook_trigger","name":"Tool Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"zoho-lead-erstellen","options":{},"httpMethod":"POST","responseMode":"responseNode"},"position":[200,300]},{"id":"normalize_input","name":"Normalize Input","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"first_name","name":"first_name","type":"string","value":"={{ $json.body?.first_name || $json.first_name || $json.body?.vorname || $json.vorname || '' }}"},{"id":"last_name","name":"last_name","type":"string","value":"={{ $json.body?.last_name || $json.last_name || $json.body?.nachname || $json.nachname || 'Unbekannt' }}"},{"id":"email","name":"email","type":"string","value":"={{ $json.body?.email || $json.email || '' }}"},{"id":"phone","name":"phone","type":"string","value":"={{ $json.body?.phone || $json.phone || $json.body?.telefon || $json.telefon || '' }}"},{"id":"company","name":"company","type":"string","value":"={{ $json.body?.company || $json.company || $json.body?.firma || $json.firma || '' }}"},{"id":"description","name":"description","type":"string","value":"={{ $json.body?.description || $json.description || $json.body?.notizen || $json.notizen || 'Lead erstellt durch KI-Telefonagent' }}"},{"id":"lead_source","name":"lead_source","type":"string","value":"={{ $json.body?.lead_source || $json.lead_source || 'KI-Telefonagent' }}"},{"id":"is_test","name":"is_test","type":"boolean","value":"={{ $json.body?._test || $json._test || false }}"}]}},"position":[420,300]},{"id":"check_test","name":"Is Test Mode?","type":"n8n-nodes-base.if","typeVersion":2.2,"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.is_test }}","rightValue":true}]}},"position":[640,300]},{"id":"mock_response","name":"Mock Response","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"success","name":"success","type":"boolean","value":true},{"id":"test_mode","name":"test_mode","type":"boolean","value":true},{"id":"message","name":"message","type":"string","value":"TEST MODE: Lead wurde NICHT in Zoho erstellt"},{"id":"lead_data","name":"lead_data","type":"object","value":"={{ $('Normalize Input').item.json }}"}]}},"position":[860,200]},{"id":"zoho_create","name":"Zoho CRM - Create Lead","type":"n8n-nodes-base.zohoCrm","typeVersion":1,"parameters":{"resource":"lead","operation":"create","additionalFields":{"Email":"={{ $json.email }}","Phone":"={{ $json.phone }}","Company":"={{ $json.company || 'Privat' }}","Last_Name":"={{ $json.last_name }}","First_Name":"={{ $json.first_name }}","Description":"={{ $json.description }}","Lead_Source":"={{ $json.lead_source }}"}},"position":[860,400]},{"id":"format_response","name":"Format Response","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForEachItem","jsCode":"const input = $('Normalize Input').item.json;\nconst response = $json;\n\nreturn {\n  json: {\n    success: true,\n    message: 'Lead wurde erfolgreich in Zoho CRM erstellt.',\n    lead_id: response.id || response.details?.id,\n    lead_details: {\n      name: `${input.first_name} ${input.last_name}`.trim(),\n      email: input.email,\n      phone: input.phone,\n      company: input.company,\n      source: input.lead_source\n    }\n  }\n};"},"position":[1080,400]},{"id":"respond_webhook","name":"Respond","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"parameters":{"options":{"responseCode":200},"respondWith":"json","responseBody":"={{ $json }}"},"position":[1300,300]}],"connections":{"Tool Webhook":{"main":[[{"node":"Normalize Input","type":"main","index":0}]]},"Is Test Mode?":{"main":[[{"node":"Mock Response","type":"main","index":0}],[{"node":"Zoho CRM - Create Lead","type":"main","index":0}]]},"Mock Response":{"main":[[{"node":"Respond","type":"main","index":0}]]},"Format Response":{"main":[[{"node":"Respond","type":"main","index":0}]]},"Normalize Input":{"main":[[{"node":"Is Test Mode?","type":"main","index":0}]]},"Zoho CRM - Create Lead":{"main":[[{"node":"Format Response","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"64351e99-570e-4c40-8afa-6842fd963412","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:34.131Z","createdAt":"2026-02-16T09:48:34.131Z","role":"workflow:owner","workflowId":"LroIDqDr1jSnbJjH","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"error_trigger","name":"Error Handler","type":"n8n-nodes-base.errorTrigger","typeVersion":1,"parameters":{"maxRetries":3,"waitBetweenRetries":{"amount":5,"unit":"minutes"},"options":{"errorTriggerType":"allErrors"}},"position":[1300,300]}},{"type":"addNode","node":{"id":"retry_success","name":"Retry Success","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"success","name":"success","type":"boolean","value":true},{"id":"message","name":"message","type":"string","value":"Lead wurde nach Retry erfolgreich erstellt."},{"id":"retry_count","name":"retry_count","type":"integer","value":"={{ $json.retryAttemptCount || 0 }}"}]}},"position":[1520,200]}},{"type":"addNode","node":{"id":"retry_failed","name":"Retry Failed","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"success","name":"success","type":"boolean","value":false},{"id":"message","name":"message","type":"string","value":"Lead Erstellung fehlgeschlagen nach mehreren Versuchen."},{"id":"error","name":"error","type":"string","value":"={{ $json.error?.message || $json.error || 'Unbekannter Fehler' }}"}]}},"position":[1520,400]}},{"type":"addConnection","source":"format_response","target":"Error Handler"},{"type":"addConnection","source":"Error Handler","target":"Retry Success"},{"type":"addConnection","source":"Error Handler","target":"Retry Failed"}]


workflow_id: RUsG1p3dQWmwpza9
workflow_name: Test_U4-08
trigger: partial_update
created_at: 2026-02-16 09:48:54
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:18.057Z","createdAt":"2026-02-16T09:48:18.057Z","id":"RUsG1p3dQWmwpza9","name":"Test_U4-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"48eaec19-0086-4338-93b9-70b356a6281d","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"8639a794-f913-4927-a63d-0d05ebfeb0e5","name":"Notion - Get Today Deployments","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"simple":false,"filters":{"conditions":[{"key":"오늘배포예정|formula","condition":"equals","returnType":"checkbox","checkboxValue":true},{"key":"상태|status","condition":"does_not_equal","statusValue":"릴리즈"}]},"options":{"sort":{"sortValue":[{"key":"배포일(찐)|formula","direction":"ascending"}]}},"resource":"databasePage","matchType":"allFilters","operation":"getAll","databaseId":"[REDACTED]","filterType":"manual"},"position":[460,300]},{"id":"c994aa5c-c14a-4463-86ee-6a486d12aa9a","name":"Slack - User Lookup","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/api/users.lookupByEmail","options":{},"sendQuery":true,"authentication":"[REDACTED]","queryParameters":{"parameters":[{"name":"email","value":"={{ $json.properties['태스크 오너'].people[0].person.email }}"}]},"nodeCredentialType":"[REDACTED]"},"position":[680,300]},{"id":"3e108a3d-41cf-4813-a87d-4bc22ad67b5e","name":"Format Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"[REDACTED_TOKEN]","name":"message","type":"string","value":"=• 작업자 : <@{{ $json.user.id }}>\n• 작업 : <{{ $('Notion - Get Today Deployments').item.json.url }}|{{ $('Notion - Get Today Deployments').item.json.properties['작업'].title[0].text.content }}>\n• 상태 : {{ $('Notion - Get Today Deployments').item.json.properties['상태'].status.name }}\n\n"},{"id":"task-count-id","name":"taskCount","type":"number","value":"={{ $('Notion - Get Today Deployments').all().length }}"}]}},"position":[900,300]},{"id":"dff69e4e-df62-47bd-8932-21c1682269e1","name":"Aggregate Messages","type":"n8n-nodes-base.aggregate","typeVersion":1,"parameters":{"options":{},"aggregate":"[REDACTED]"},"position":[1120,300]},{"id":"prepare-final-msg-id","name":"Prepare Final Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"combined-message-id","name":"combinedMessage","type":"string","value":"={{ $json.data.map(item => item.message).join('') }}"},{"id":"task-count-final-id","name":"taskCount","type":"number","value":"={{ $json.data[0].taskCount }}"}]}},"position":[1340,300]},{"id":"32d5acc2-f143-4fa4-b4ed-afdee1c79a0d","name":"Slack - Send Main Message","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"text":"=[ZEP]\n오늘 배포 예정 작업은 {{ $json.taskCount }}개 입니다.","select":"channel","channelId":{"__rl":true,"mode":"id","value":"C08PLE5CF4K"},"otherOptions":{}},"position":[1560,300]},{"id":"slack-thread-reply-id","name":"Slack - Thread Reply","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"ts":"={{ $('Slack - Send Main Message').item.json.ts }}","text":"={{ $('Prepare Final Message').item.json.combinedMessage }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"C08PLE5CF4K"},"messageType":"reply","otherOptions":{}},"position":[1780,300]}],"connections":{"Manual Trigger":{"main":[[{"node":"Notion - Get Today Deployments","type":"main","index":0}]]},"Aggregate Messages":{"main":[[{"node":"Prepare Final Message","type":"main","index":0}]]},"Format Message":{"main":[[{"node":"Aggregate Messages","type":"main","index":0}]]},"Prepare Final Message":{"main":[[{"node":"Slack - Send Main Message","type":"main","index":0}]]},"Slack - User Lookup":{"main":[[{"node":"Format Message","type":"main","index":0}]]},"Slack - Send Main Message":{"main":[[{"node":"Slack - Thread Reply","type":"main","index":0}]]},"Notion - Get Today Deployments":{"main":[[{"node":"Slack - User Lookup","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"017329a9-cf85-41a0-959e-9b8a72864c55","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:18.058Z","createdAt":"2026-02-16T09:48:18.058Z","role":"workflow:owner","workflowId":"RUsG1p3dQWmwpza9","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"priority-if-node-001","name":"Check Priority","type":"n8n-nodes-base.if","typeVersion":1,"parameters":{"data1":"={{ $json.properties['중요도'] || $json.properties['priority'] }}","operation":"equal","data2":"=\"높음\" || =\"high\" || =\"High\"","options":{}},"position":[580,300]}},{"type":"removeConnection","source":"Notion - Get Today Deployments","target":"Slack - User Lookup"},{"type":"addConnection","source":"Notion - Get Today Deployments","target":"Check Priority"},{"type":"addConnection","source":"Check Priority","target":"Slack - User Lookup"}]


workflow_id: MPF4D1SBKQ4hnPfO
workflow_name: Test_U5-02
trigger: partial_update
created_at: 2026-02-16 09:48:55
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:36.639Z","createdAt":"2026-02-16T09:48:36.639Z","id":"MPF4D1SBKQ4hnPfO","name":"Test_U5-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Weekly Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtHour":2,"weeksInterval":1,"triggerAtMinute":0,"triggerAtDayOfWeek":1}]}},"position":[250,300]},{"id":"get-databases","name":"Lister toutes les databases Notion","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"resource":"database","operation":"getAll","returnAll":true},"position":[450,300]},{"id":"loop-databases","name":"Pour chaque database","type":"n8n-nodes-base.splitInBatches","typeVersion":3,"parameters":{"options":{},"batchSize":1},"position":[650,300]},{"id":"get-pages","name":"Get Database Pages","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"options":{},"resource":"databasePage","operation":"getAll","returnAll":true,"databaseId":"[REDACTED]"},"position":[850,300]},{"id":"format-json","name":"Formater en JSON","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const databaseName = $('Lister toutes les databases Notion').item.json.title[0]?.plain_text || 'Database';\nconst timestamp = new Date().toISOString().split('T')[0];\nconst pages = $input.all();\n\nconst backup = {\n  database: databaseName,\n  exportDate: timestamp,\n  totalPages: pages.length,\n  pages: pages.map(item => item.json)\n};\n\nreturn {\n  json: {\n    fileName: `notion-backup-${databaseName.replace(/\\s+/g, '-')}-${timestamp}.json`,\n    content: JSON.stringify(backup, null, 2)\n  }\n};","language":"javaScript"},"position":[1050,300]},{"id":"upload-to-drive","name":"Uploader sur Google Drive","type":"n8n-nodes-base.googleDrive","typeVersion":3,"parameters":{"name":"={{ $json.fileName }}","driveId":{"mode":"list","value":"MyDrive"},"options":{"parentId":""},"folderId":{"mode":"list","value":""},"operation":"upload"},"position":[1250,300]},{"id":"end-loop","name":"Fin de boucle","type":"n8n-nodes-base.noOp","typeVersion":1,"parameters":{},"position":[1450,300]}],"connections":{"Formater en JSON":{"main":[[{"node":"Uploader sur Google Drive","type":"main","index":0}]]},"Pour chaque database":{"main":[[{"node":"Get Database Pages","type":"main","index":0}],[{"node":"Fin de boucle","type":"main","index":0}]]},"Weekly Trigger":{"main":[[{"node":"Lister toutes les databases Notion","type":"main","index":0}]]},"Uploader sur Google Drive":{"main":[[{"node":"Pour chaque database","type":"main","index":0}]]},"Get Database Pages":{"main":[[{"node":"Formater en JSON","type":"main","index":0}]]},"Lister toutes les databases Notion":{"main":[[{"node":"Pour chaque database","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"94d92b3a-e1d2-448f-a64b-c123084ca9ed","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:36.640Z","createdAt":"2026-02-16T09:48:36.640Z","role":"workflow:owner","workflowId":"MPF4D1SBKQ4hnPfO","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"removeNode","nodeName":"Pour chaque database"},{"type":"removeNode","nodeName":"Fin de boucle"},{"type":"addNode","node":{"id":"split-databases","name":"Splitter les databases","type":"n8n-nodes-base.splitInBatches","typeVersion":3,"parameters":{"options":{"batchSize":1}},"position":[650,300]}},{"type":"addConnection","source":"Lister toutes les databases Notion","target":"Splitter les databases"},{"type":"addConnection","source":"Splitter les databases","target":"Get Database Pages"},{"type":"addConnection","source":"Uploader sur Google Drive","target":"Splitter les databases"},{"type":"removeConnection","source":"Pour chaque database","target":"Get Database Pages"},{"type":"removeConnection","source":"Pour chaque database","target":"Fin de boucle"},{"type":"removeConnection","source":"Get Database Pages","target":"Formater en JSON"},{"type":"removeConnection","source":"Uploader sur Google Drive","target":"Pour chaque database"},{"type":"removeConnection","source":"Lister toutes les databases Notion","target":"Pour chaque database"}]


workflow_id: MPF4D1SBKQ4hnPfO
workflow_name: Test_U5-02
trigger: partial_update
created_at: 2026-02-16 09:49:02
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:36.639Z","createdAt":"2026-02-16T09:48:36.639Z","id":"MPF4D1SBKQ4hnPfO","name":"Test_U5-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Weekly Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtHour":2,"weeksInterval":1,"triggerAtMinute":0,"triggerAtDayOfWeek":1}]}},"position":[250,300]},{"id":"get-databases","name":"Lister toutes les databases Notion","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"resource":"database","operation":"getAll","returnAll":true},"position":[450,300]},{"id":"loop-databases","name":"Pour chaque database","type":"n8n-nodes-base.splitInBatches","typeVersion":3,"parameters":{"options":{},"batchSize":1},"position":[650,300]},{"id":"get-pages","name":"Get Database Pages","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"options":{},"resource":"databasePage","operation":"getAll","returnAll":true,"databaseId":"[REDACTED]"},"position":[850,300]},{"id":"format-json","name":"Formater en JSON","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const databaseName = $('Lister toutes les databases Notion').item.json.title[0]?.plain_text || 'Database';\nconst timestamp = new Date().toISOString().split('T')[0];\nconst pages = $input.all();\n\nconst backup = {\n  database: databaseName,\n  exportDate: timestamp,\n  totalPages: pages.length,\n  pages: pages.map(item => item.json)\n};\n\nreturn {\n  json: {\n    fileName: `notion-backup-${databaseName.replace(/\\s+/g, '-')}-${timestamp}.json`,\n    content: JSON.stringify(backup, null, 2)\n  }\n};","language":"javaScript"},"position":[1050,300]},{"id":"upload-to-drive","name":"Uploader sur Google Drive","type":"n8n-nodes-base.googleDrive","typeVersion":3,"parameters":{"name":"={{ $json.fileName }}","driveId":{"mode":"list","value":"MyDrive"},"options":{"parentId":""},"folderId":{"mode":"list","value":""},"operation":"upload"},"position":[1250,300]},{"id":"end-loop","name":"Fin de boucle","type":"n8n-nodes-base.noOp","typeVersion":1,"parameters":{},"position":[1450,300]}],"connections":{"Formater en JSON":{"main":[[{"node":"Uploader sur Google Drive","type":"main","index":0}]]},"Pour chaque database":{"main":[[{"node":"Get Database Pages","type":"main","index":0}],[{"node":"Fin de boucle","type":"main","index":0}]]},"Weekly Trigger":{"main":[[{"node":"Lister toutes les databases Notion","type":"main","index":0}]]},"Uploader sur Google Drive":{"main":[[{"node":"Pour chaque database","type":"main","index":0}]]},"Get Database Pages":{"main":[[{"node":"Formater en JSON","type":"main","index":0}]]},"Lister toutes les databases Notion":{"main":[[{"node":"Pour chaque database","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"94d92b3a-e1d2-448f-a64b-c123084ca9ed","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:36.640Z","createdAt":"2026-02-16T09:48:36.640Z","role":"workflow:owner","workflowId":"MPF4D1SBKQ4hnPfO","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"removeConnection","source":"Lister toutes les databases Notion","target":"Pour chaque database"},{"type":"removeConnection","source":"Get Database Pages","target":"Formater en JSON"},{"type":"removeConnection","source":"Formater en JSON","target":"Uploader sur Google Drive"},{"type":"removeConnection","source":"Uploader sur Google Drive","target":"Pour chaque database"},{"type":"addConnection","source":"Lister toutes les databases Notion","target":"Splitter les databases"},{"type":"addConnection","source":"Splitter les databases","target":"Get Database Pages"},{"type":"addConnection","source":"Get Database Pages","target":"Formater en JSON"},{"type":"addConnection","source":"Formater en JSON","target":"Uploader sur Google Drive"},{"type":"addConnection","source":"Uploader sur Google Drive","target":"Splitter les databases"}]


workflow_id: yc5Vm5TpFhds1VgM
workflow_name: Test_U4-11
trigger: partial_update
created_at: 2026-02-16 09:49:03
workflow_snapshot:
[cell repeats an earlier one in this file: 2784 characters]

operations:
  [{"type":"addNode","node":{"id":"switch-1","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":1.2,"parameters":{"dataType":"string","value1":"={{ $json.customerTier }}","rules":{"rules":[{"operation":"equal","value":"premium"},{"operation":"equal","value":"enterprise"}]},"fallbackOutput":"true"},"position":[550,300]}},{"type":"removeConnection","source":"OpenAI Chat Model","target":"AI Agent"},{"type":"addConnection","source":"OpenAI Chat Model","target":"Switch"},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":0},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":2}]


workflow_id: StzKYaE5PEEFvmd1
workflow_name: Test_U5-06
trigger: partial_update
created_at: 2026-02-16 09:49:03
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:50.045Z","createdAt":"2026-02-16T09:48:50.045Z","id":"StzKYaE5PEEFvmd1","name":"Test_U5-06","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"webhook/verify-magic-link","httpMethod":"POST","responseMode":"responseNode"},"position":[240,300]},{"id":"query-magic-link","name":"Query Magic Link","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"=SELECT id, email, token, expires_at, used FROM magic_links WHERE [REDACTED]}}' LIMIT 1;","options":{},"operation":"executeQuery"},"position":[460,300]},{"id":"validate-link","name":"Validate Link","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"const rows = $input.all();\n\nif (rows.length === 0 || !rows[0].json) {\n  return [{\n    json: {\n      valid: false,\n      email: null,\n      error: 'Invalid [REDACTED]}\n  }];\n}\n\nconst link = rows[0].json;\nconst now = new Date();\nconst expiresAt = new Date(link.expires_at);\n\nif (link.used) {\n  return [{\n    json: {\n      valid: false,\n      email: link.email,\n      error: '[REDACTED]}\n  }];\n}\n\nif (now > expiresAt) {\n  return [{\n    json: {\n      valid: false,\n      email: link.email,\n      error: '[REDACTED]}\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    email: link.email,\n    link_id: link.id\n  }\n}];"},"position":[680,300]},{"id":"mark-used","name":"Mark as Used","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"=UPDATE magic_links SET used = true WHERE id = {{ $json.link_id }};","options":{},"operation":"executeQuery"},"position":[900,300]},{"id":"respond","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"parameters":{"respondWith":"json","responseBody":"={{ { valid: $json.valid, email: $json.email, error: $json.error } }}"},"position":[1120,300]}],"connections":{"Webhook":{"main":[[{"node":"Query Magic Link","type":"main","index":0}]]},"Mark as Used":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"Validate Link":{"main":[[{"node":"Mark as Used","type":"main","index":0}]]},"Query Magic Link":{"main":[[{"node":"Validate Link","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"2920aea0-d669-4de3-8573-c8d07a1f79b1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:50.047Z","createdAt":"2026-02-16T09:48:50.047Z","role":"workflow:owner","workflowId":"StzKYaE5PEEFvmd1","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"switch","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":4,"parameters":{"dataType":"boolean","value1":"={{ $json.valid }}","rules":{"rules":[{"output1":"valid","output2":"invalid"}]},"fallbackOutput":"invalid"},"position":[820,300]}},{"type":"removeConnection","source":"Validate Link","target":"Mark as Used"},{"type":"addConnection","source":"Validate Link","target":"Switch"},{"type":"addConnection","source":"Switch","target":"Mark as Used"},{"type":"addConnection","source":"Switch","target":"Respond to Webhook"}]


workflow_id: Ohagsgad6pyxLe8P
workflow_name: Test_U5-08
trigger: partial_update
created_at: 2026-02-16 09:49:06
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:51.869Z","createdAt":"2026-02-16T09:48:51.869Z","id":"Ohagsgad6pyxLe8P","name":"Test_U5-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"read-file","name":"Read Text File","type":"n8n-nodes-base.readWriteFile","typeVersion":1,"parameters":{"operation":"read","fileSelector":"/files/xiaoxiao.txt"},"position":[240,300]},{"id":"convert-to-srt","name":"Convert to SRT","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// 读取文本内容\nconst textContent = $input.all()[0].json.data;\n\n// 将文本按行分割并转换为SRT格式\nconst lines = textContent.split('\\n').filter(line => line.trim() !== '');\nlet srtContent = '';\n\nlines.forEach((line, index) => {\n  const startTime = index * 2; // 每行2秒\n  const endTime = (index + 1) * 2;\n  \n  const startTimeStr = formatTime(startTime);\n  const endTimeStr = formatTime(endTime);\n  \n  srtContent += `${index + 1}\\n`;\n  srtContent += `${startTimeStr} --> ${endTimeStr}\\n`;\n  srtContent += `${line}\\n\\n`;\n});\n\nfunction formatTime(seconds) {\n  const hours = Math.floor(seconds / 3600);\n  const minutes = Math.floor((seconds % 3600) / 60);\n  const secs = Math.floor(seconds % 60);\n  const millis = Math.floor((seconds % 60 - secs) * 1000);\n  \n  return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')},${String(millis).padStart(3, '0')}`;\n}\n\nreturn [{\n  json: {\n    srtContent: srtContent,\n    fileName: 'xiaoxiao.srt'\n  }\n}];"},"position":[460,300]},{"id":"write-srt","name":"Write SRT File","type":"n8n-nodes-base.readWriteFile","typeVersion":1,"parameters":{"fileName":"/siles/xiaoxiao.srt","operation":"write","dataPropertyName":"data"},"position":[680,300]},{"id":"execute-ffmpeg","name":"Execute FFmpeg","type":"n8n-nodes-base.executeCommand","typeVersion":1,"parameters":{"command":"ffmpeg -i /siles/xiaoxiao.srt -c:a aac -b:a 192k /siles/xiaoxiao.aac"},"position":[900,300]}],"connections":{"Write SRT File":{"main":[[{"node":"Execute FFmpeg","type":"main","index":0}]]},"Read Text File":{"main":[[{"node":"Convert to SRT","type":"main","index":0}]]},"Convert to SRT":{"main":[[{"node":"Write SRT File","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"f6706998-d95d-47d6-babd-e37e208ac0aa","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:51.869Z","createdAt":"2026-02-16T09:48:51.869Z","role":"workflow:owner","workflowId":"Ohagsgad6pyxLe8P","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"checkpoint","name":"Checkpoint","type":"n8n-nodes-base.wait","typeVersion":1,"parameters":{"amount":60,"unit":"hours","resume":"webhook","webhookVariable":"resume"},"position":[570,300]}},{"type":"addConnection","source":"Convert to SRT","target":"Checkpoint"},{"type":"removeConnection","source":"Convert to SRT","target":"Write SRT File"},{"type":"addConnection","source":"Checkpoint","target":"Write SRT File"}]


workflow_id: StzKYaE5PEEFvmd1
workflow_name: Test_U5-06
trigger: partial_update
created_at: 2026-02-16 09:49:07
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:50.045Z","createdAt":"2026-02-16T09:48:50.045Z","id":"StzKYaE5PEEFvmd1","name":"Test_U5-06","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"webhook/verify-magic-link","httpMethod":"POST","responseMode":"responseNode"},"position":[240,300]},{"id":"query-magic-link","name":"Query Magic Link","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"=SELECT id, email, token, expires_at, used FROM magic_links WHERE [REDACTED]}}' LIMIT 1;","options":{},"operation":"executeQuery"},"position":[460,300]},{"id":"validate-link","name":"Validate Link","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"const rows = $input.all();\n\nif (rows.length === 0 || !rows[0].json) {\n  return [{\n    json: {\n      valid: false,\n      email: null,\n      error: 'Invalid [REDACTED]}\n  }];\n}\n\nconst link = rows[0].json;\nconst now = new Date();\nconst expiresAt = new Date(link.expires_at);\n\nif (link.used) {\n  return [{\n    json: {\n      valid: false,\n      email: link.email,\n      error: '[REDACTED]}\n  }];\n}\n\nif (now > expiresAt) {\n  return [{\n    json: {\n      valid: false,\n      email: link.email,\n      error: '[REDACTED]}\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    email: link.email,\n    link_id: link.id\n  }\n}];"},"position":[680,300]},{"id":"mark-used","name":"Mark as Used","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"=UPDATE magic_links SET used = true WHERE id = {{ $json.link_id }};","options":{},"operation":"executeQuery"},"position":[900,300]},{"id":"respond","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"parameters":{"respondWith":"json","responseBody":"={{ { valid: $json.valid, email: $json.email, error: $json.error } }}"},"position":[1120,300]}],"connections":{"Webhook":{"main":[[{"node":"Query Magic Link","type":"main","index":0}]]},"Mark as Used":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"Validate Link":{"main":[[{"node":"Mark as Used","type":"main","index":0}]]},"Query Magic Link":{"main":[[{"node":"Validate Link","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"2920aea0-d669-4de3-8573-c8d07a1f79b1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:50.047Z","createdAt":"2026-02-16T09:48:50.047Z","role":"workflow:owner","workflowId":"StzKYaE5PEEFvmd1","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Switch","updates":{"parameters":{"dataType":"boolean","value1":"={{ $json.valid }}","rules":{"rules":[{"output1":"valid","output2":"invalid","conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"value":true}}]},"fallbackOutput":"invalid"}}}]


workflow_id: t9uyQiRaZ7xkvyGk
workflow_name: Test_U5-05
trigger: partial_update
created_at: 2026-02-16 09:49:08
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:49.219Z","createdAt":"2026-02-16T09:48:49.219Z","id":"t9uyQiRaZ7xkvyGk","name":"Test_U5-05","description":null,"active":false,"isArchived":false,"nodes":[{"id":"1","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[-400,200]},{"id":"2","name":"Set Policy + Pools","type":"n8n-nodes-base.set","typeVersion":2,"parameters":{"values":{"json":[{"name":"pools","value":[{"name":"pool-1","apiUrl":"[REDACTED]"},{"name":"pool-2","apiUrl":"[REDACTED]"},{"name":"pool-3","apiUrl":"[REDACTED]"},{"name":"pool-4","apiUrl":"[REDACTED]"}]}],"string":[{"name":"policy","value":"bk_daily"}]},"keepOnlySet":true},"position":[-160,200]},{"id":"3","name":"Fan Out Pools","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const { pools, policy } = $json;\nif (!Array.isArray(pools)) {\n  return [];\n}\nreturn pools.map(p => ({ json: { ...p, policy } }));","language":"JavaScript"},"position":[80,200]},{"id":"4","name":"Call Backup Xen Pool","type":"n8n-nodes-base.executeWorkflow","typeVersion":1,"parameters":{"mode":"each","workflowId":"QWt6mjRRQWyC4X5Q"},"position":[360,200]}],"connections":{"Fan Out Pools":{"main":[[{"node":"Call Backup Xen Pool","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Set Policy + Pools","type":"main","index":0}]]},"Set Policy + Pools":{"main":[[{"node":"Fan Out Pools","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"afa2eadf-4bbc-4cc6-8d5b-886c718cb73e","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:49.220Z","createdAt":"2026-02-16T09:48:49.220Z","role":"workflow:owner","workflowId":"t9uyQiRaZ7xkvyGk","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"5","name":"Check Pool Condition","type":"n8n-nodes-base.if","typeVersion":1,"parameters":{"conditions":{"string":[{"value1":"={{ $json.name }}","operation":"isNotEmpty"}]},"combineConditions":"all"},"position":[220,200]}},{"type":"removeConnection","source":"Fan Out Pools","target":"Call Backup Xen Pool"},{"type":"addConnection","source":"Fan Out Pools","target":"Check Pool Condition"},{"type":"addConnection","source":"Check Pool Condition","target":"Call Backup Xen Pool"}]


workflow_id: yc5Vm5TpFhds1VgM
workflow_name: Test_U4-11
trigger: partial_update
created_at: 2026-02-16 09:49:10
workflow_snapshot:
[cell repeats an earlier one in this file: 2784 characters]

operations:
  [{"type":"addNode","node":{"id":"switch-1","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":1.2,"parameters":{"dataType":"string","value1":"={{ $json.customerTier }}","rules":{"rules":[{"operation":"equal","value":"premium"}]},"fallbackOutput":"true"},"position":[550,300]}},{"type":"removeConnection","source":"OpenAI Chat Model","target":"AI Agent"},{"type":"addConnection","source":"OpenAI Chat Model","target":"Switch"},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":0},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":1}]


workflow_id: MPF4D1SBKQ4hnPfO
workflow_name: Test_U5-02
trigger: partial_update
created_at: 2026-02-16 09:49:13
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:36.639Z","createdAt":"2026-02-16T09:48:36.639Z","id":"MPF4D1SBKQ4hnPfO","name":"Test_U5-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Weekly Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtHour":2,"weeksInterval":1,"triggerAtMinute":0,"triggerAtDayOfWeek":1}]}},"position":[250,300]},{"id":"get-databases","name":"Lister toutes les databases Notion","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"resource":"database","operation":"getAll","returnAll":true},"position":[450,300]},{"id":"loop-databases","name":"Pour chaque database","type":"n8n-nodes-base.splitInBatches","typeVersion":3,"parameters":{"options":{},"batchSize":1},"position":[650,300]},{"id":"get-pages","name":"Get Database Pages","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"options":{},"resource":"databasePage","operation":"getAll","returnAll":true,"databaseId":"[REDACTED]"},"position":[850,300]},{"id":"format-json","name":"Formater en JSON","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const databaseName = $('Lister toutes les databases Notion').item.json.title[0]?.plain_text || 'Database';\nconst timestamp = new Date().toISOString().split('T')[0];\nconst pages = $input.all();\n\nconst backup = {\n  database: databaseName,\n  exportDate: timestamp,\n  totalPages: pages.length,\n  pages: pages.map(item => item.json)\n};\n\nreturn {\n  json: {\n    fileName: `notion-backup-${databaseName.replace(/\\s+/g, '-')}-${timestamp}.json`,\n    content: JSON.stringify(backup, null, 2)\n  }\n};","language":"javaScript"},"position":[1050,300]},{"id":"upload-to-drive","name":"Uploader sur Google Drive","type":"n8n-nodes-base.googleDrive","typeVersion":3,"parameters":{"name":"={{ $json.fileName }}","driveId":{"mode":"list","value":"MyDrive"},"options":{"parentId":""},"folderId":{"mode":"list","value":""},"operation":"upload"},"position":[1250,300]},{"id":"end-loop","name":"Fin de boucle","type":"n8n-nodes-base.noOp","typeVersion":1,"parameters":{},"position":[1450,300]}],"connections":{"Formater en JSON":{"main":[[{"node":"Uploader sur Google Drive","type":"main","index":0}]]},"Pour chaque database":{"main":[[{"node":"Get Database Pages","type":"main","index":0}],[{"node":"Fin de boucle","type":"main","index":0}]]},"Weekly Trigger":{"main":[[{"node":"Lister toutes les databases Notion","type":"main","index":0}]]},"Uploader sur Google Drive":{"main":[[{"node":"Pour chaque database","type":"main","index":0}]]},"Get Database Pages":{"main":[[{"node":"Formater en JSON","type":"main","index":0}]]},"Lister toutes les databases Notion":{"main":[[{"node":"Pour chaque database","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"94d92b3a-e1d2-448f-a64b-c123084ca9ed","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:36.640Z","createdAt":"2026-02-16T09:48:36.640Z","role":"workflow:owner","workflowId":"MPF4D1SBKQ4hnPfO","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Pour chaque database","updates":{"parameters":{"options":{"batchSize":0}}}}]


workflow_id: StzKYaE5PEEFvmd1
workflow_name: Test_U5-06
trigger: partial_update
created_at: 2026-02-16 09:49:14
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:50.045Z","createdAt":"2026-02-16T09:48:50.045Z","id":"StzKYaE5PEEFvmd1","name":"Test_U5-06","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"webhook/verify-magic-link","httpMethod":"POST","responseMode":"responseNode"},"position":[240,300]},{"id":"query-magic-link","name":"Query Magic Link","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"=SELECT id, email, token, expires_at, used FROM magic_links WHERE [REDACTED]}}' LIMIT 1;","options":{},"operation":"executeQuery"},"position":[460,300]},{"id":"validate-link","name":"Validate Link","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"const rows = $input.all();\n\nif (rows.length === 0 || !rows[0].json) {\n  return [{\n    json: {\n      valid: false,\n      email: null,\n      error: 'Invalid [REDACTED]}\n  }];\n}\n\nconst link = rows[0].json;\nconst now = new Date();\nconst expiresAt = new Date(link.expires_at);\n\nif (link.used) {\n  return [{\n    json: {\n      valid: false,\n      email: link.email,\n      error: '[REDACTED]}\n  }];\n}\n\nif (now > expiresAt) {\n  return [{\n    json: {\n      valid: false,\n      email: link.email,\n      error: '[REDACTED]}\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    email: link.email,\n    link_id: link.id\n  }\n}];"},"position":[680,300]},{"id":"mark-used","name":"Mark as Used","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"=UPDATE magic_links SET used = true WHERE id = {{ $json.link_id }};","options":{},"operation":"executeQuery"},"position":[900,300]},{"id":"respond","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"parameters":{"respondWith":"json","responseBody":"={{ { valid: $json.valid, email: $json.email, error: $json.error } }}"},"position":[1120,300]}],"connections":{"Webhook":{"main":[[{"node":"Query Magic Link","type":"main","index":0}]]},"Mark as Used":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"Validate Link":{"main":[[{"node":"Mark as Used","type":"main","index":0}]]},"Query Magic Link":{"main":[[{"node":"Validate Link","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"2920aea0-d669-4de3-8573-c8d07a1f79b1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:50.047Z","createdAt":"2026-02-16T09:48:50.047Z","role":"workflow:owner","workflowId":"StzKYaE5PEEFvmd1","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"switch","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":4,"parameters":{"dataType":"boolean","value1":"={{ $json.valid }}","rules":{"rules":[{"output1":"valid","output2":"invalid","conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"value":true}}]},"fallbackOutput":"invalid"},"position":[820,300]}},{"type":"removeConnection","source":"Validate Link","target":"Mark as Used"},{"type":"addConnection","source":"Validate Link","target":"Switch"},{"type":"addConnection","source":"Switch","target":"Mark as Used"},{"type":"addConnection","source":"Switch","target":"Respond to Webhook"}]


workflow_id: elTyUFZ2WPq7a8Qd
workflow_name: Test_U5-07
trigger: partial_update
created_at: 2026-02-16 09:49:17
workflow_snapshot:
  {"updatedAt":"2026-02-16T09:48:50.956Z","createdAt":"2026-02-16T09:48:50.956Z","id":"elTyUFZ2WPq7a8Qd","name":"Test_U5-07","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"[REDACTED]","options":{"onError":"[REDACTED]"},"httpMethod":"POST","responseMode":"responseNode"},"position":[250,300]},{"id":"query-notion-tasks","name":"Query Notion Tasks","type":"n8n-nodes-base.notion","typeVersion":2,"parameters":{"sort":{"sortValue":[{"key":"Priority Matrix","direction":"ascending"},{"key":"Deadline Date","direction":"ascending"}]},"limit":50,"filters":{"conditions":[{"key":"Status","condition":"anyOf","returnWhen":["Not started","In progress","Inbox"]},{"key":"Priority Matrix","value":"Priority 1","condition":"contains"},{"key":"Urgent","value":true,"condition":"checkbox"}]},"resource":"databasePage","matchType":"anyFilter","operation":"getAll","returnAll":false,"databaseId":"[REDACTED]","filterType":"manual"},"position":[450,300]},{"id":"format-tasks","name":"Format Task List","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const items = $input.all();\n\nif (items.length === 0) {\n  return [{\n    formattedTasks: '✅ No priority tasks! You\\'re all caught up.',\n    taskCount: 0\n  }];\n}\n\nlet output = `📋 Priority Tasks (${items.length} tasks)\\n\\n`;\n\nconst priority1 = [];\nconst urgent = [];\nconst other = [];\n\nitems.forEach(item => {\n  const props = item.json.properties;\n  const name = props.Name?.title?.[0]?.plain_text || 'Untitled';\n  const priority = props['Priority Matrix']?.select?.name || '';\n  const isUrgent = props.Urgent?.checkbox || false;\n  const deadline = props['Deadline Date']?.date?.start || '';\n  const doDate = props['Do Dates']?.date?.start || '';\n  \n  const taskLine = `□ ${name}`;\n  const meta = [];\n  if (deadline) meta.push(`Deadline: ${deadline}`);\n  if (doDate) meta.push(`Do: ${doDate}`);\n  const fullLine = meta.length > 0 ? `${taskLine} (${meta.join(', ')})` : taskLine;\n  \n  if (priority.includes('Priority 1')) {\n    priority1.push(fullLine);\n  } else if (isUrgent) {\n    urgent.push(fullLine);\n  } else {\n    other.push(fullLine);\n  }\n});\n\nif (priority1.length > 0) {\n  output += 'PRIORITY 1 - DO NOW:\\n';\n  priority1.forEach(t => output += t + '\\n');\n  output += '\\n';\n}\n\nif (urgent.length > 0) {\n  output += 'URGENT:\\n';\n  urgent.forEach(t => output += t + '\\n');\n  output += '\\n';\n}\n\nif (other.length > 0) {\n  output += 'OTHER:\\n';\n  other.forEach(t => output += t + '\\n');\n}\n\nreturn [{\n  formattedTasks: output.trim(),\n  taskCount: items.length\n}];","language":"javaScript"},"position":[650,300]},{"id":"respond-with-tasks","name":"Respond with Task List","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"parameters":{"options":{"responseData":"={{ {\"tasks\": $json.formattedTasks, \"count\": $json.taskCount} }}"}},"position":[850,300]}],"connections":{"Webhook":{"main":[[{"node":"Query Notion Tasks","type":"main","index":0}]]},"Format Task List":{"main":[[{"node":"Respond with Task List","type":"main","index":0}]]},"Query Notion Tasks":{"main":[[{"node":"Format Task List","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"d0d914ab-8232-4988-ab6b-00607cab454c","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T09:48:50.957Z","createdAt":"2026-02-16T09:48:50.957Z","role":"workflow:owner","workflowId":"elTyUFZ2WPq7a8Qd","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"split-in-batches","name":"Split In Batches","type":"n8n-nodes-base.splitInBatches","typeVersion":3,"parameters":{"batchSize":1},"position":[550,300]}},{"type":"addNode","node":{"id":"process-branch-1","name":"Process Branch 1","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Process each item in branch 1\nconst item = $input.first();\nreturn item;","language":"javaScript"},"position":[750,200]}},{"type":"addNode","node":{"id":"process-branch-2","name":"Process Branch 2","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Process each item in branch 2\nconst item = $input.first();\nreturn item;","language":"javaScript"},"position":[750,400]}},{"type":"addNode","node":{"id":"aggregate-results","name":"Aggregate Results","type":"n8n-nodes-base.aggregate","typeVersion":1,"parameters":{"aggregate":{"aggregations":[{"aggregationFunction":"append","name":"results","property":""}]},"options":{"includeOtherFields":true}},"position":[950,300]}},{"type":"removeConnection","source":"Query Notion Tasks","target":"Format Task List"},{"type":"addConnection","source":"Query Notion Tasks","target":"Split In Batches"},{"type":"addConnection","source":"Split In Batches","target":"Process Branch 1"},{"type":"addConnection","source":"Split In Batches","target":"Process Branch 2"},{"type":"addConnection","source":"Process Branch 1","target":"Aggregate Results"},{"type":"addConnection","source":"Process Branch 2","target":"Aggregate Results"},{"type":"addConnection","source":"Aggregate Results","target":"Format Task List"}]


workflow_id: yc5Vm5TpFhds1VgM
workflow_name: Test_U4-11
trigger: partial_update
created_at: 2026-02-16 09:49:19
workflow_snapshot:
[cell repeats an earlier one in this file: 2784 characters]

operations:
  [{"type":"addNode","node":{"id":"switch-1","name":"Switch","type":"n8n-nodes-base.switch","typeVersion":1.2,"parameters":{"dataType":"string","value1":"={{ $json.customerTier }}","rules":{"rules":[{"operation":"equal","value":"premium"}]},"fallbackOutput":"true"},"position":[550,300]}},{"type":"removeConnection","source":"OpenAI Chat Model","target":"AI Agent"},{"type":"addConnection","source":"OpenAI Chat Model","target":"Switch"},{"type":"addConnection","source":"Switch","target":"AI Agent","sourceIndex":0}]


workflow_id: wdiRsy9yYGvexVQk
workflow_name: Test_U1-04
trigger: partial_update
operations: [{"type":"updateNode","nodeName":"Search Hotels","updates":{"parameters":{"method":"POST"}}}]
created_at: 2026-02-16 10:13:03
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:12:56.574Z","createdAt":"2026-02-16T10:12:56.574Z","id":"wdiRsy9yYGvexVQk","name":"Test_U1-04","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1,"parameters":{"rule":{"interval":[{"field":"days","seconds":86400}]}},"position":[0,0]},{"id":"get-recent-flights","name":"Get Recent Flights","type":"n8n-nodes-base.supabase","typeVersion":1,"parameters":{"filters":{"created_at":{"value":"={{$today.minus(1, 'day').format('yyyy-MM-dd')}}","operator":">="}},"tableId":"flight_deals","operation":"getAll","returnAll":true},"position":[200,0]},{"id":"split-in-batches","name":"SplitInBatches","type":"n8n-nodes-base.splitInBatches","typeVersion":1,"parameters":{"options":{},"batchSize":1},"position":[400,0]},{"id":"get-destination-details","name":"Get Destination Details","type":"n8n-nodes-base.supabase","typeVersion":1,"parameters":{"filters":{"iata_code":{"value":"={{$node[\"SplitInBatches\"].json[\"destination\"]}}","operator":"eq"}},"tableId":"destinations","operation":"getAll","returnAll":false},"position":[600,0]},{"id":"search-hotels","name":"Search Hotels","type":"n8n-nodes-base.httpRequest","typeVersion":1,"parameters":{"url":"https://[domain]/search","method":"GET","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"engine","value":"google_hotels"},{"name":"q","value":"={{$node[\"Get Destination Details\"].json[\"name\"]}}"},{"name":"check_in_date","value":"={{$node[\"SplitInBatches\"].json[\"departure_date\"]}}"},{"name":"check_out_date","value":"={{$node[\"SplitInBatches\"].json[\"return_date\"]}}"},{"name":"api_key","value":"YOUR_SERPAPI_KEY"},{"name":"currency","value":"EUR"}]}},"position":[800,0]},{"id":"process-hotels","name":"Process Hotels","type":"n8n-nodes-base.code","typeVersion":1,"parameters":{"jsCode":"const results = [];\nconst destId = $node[\"Get Destination Details\"].json.id;\nconst hotels = $input.all()[0].json.properties || [];\n\nfor (const hotel of hotels) {\n  results.push({\n    destination_id: destId,\n    name: hotel.name,\n    type: 'hotel',\n    price_per_night: hotel.rate_per_night ? hotel.rate_per_night.lowest : 0,\n    rating: hotel.overall_rating,\n    booking_url: hotel.link,\n    image_url: hotel.images ? hotel.images[0].thumbnail : null\n  });\n}\nreturn results;"},"position":[1000,0]},{"id":"save-accommodations","name":"Save Accommodations","type":"n8n-nodes-base.supabase","typeVersion":1,"parameters":{"columns":"destination_id, name, type, price_per_night, rating, booking_url, image_url","tableId":"accommodations","operation":"upsert"},"position":[1200,0]}],"connections":{"Search Hotels":{"main":[[{"node":"Process Hotels","type":"main","index":0}]]},"Process Hotels":{"main":[[{"node":"Save Accommodations","type":"main","index":0}]]},"SplitInBatches":{"main":[[{"node":"Get Destination Details","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get Recent Flights","type":"main","index":0}]]},"Get Recent Flights":{"main":[[{"node":"SplitInBatches","type":"main","index":0}]]},"Save Accommodations":{"main":[[{"node":"SplitInBatches","type":"main","index":0}]]},"Get Destination Details":{"main":[[{"node":"Search Hotels","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"debaaece-f3c1-43aa-9e4b-9a2e3918bd64","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:12:56.575Z","createdAt":"2026-02-16T10:12:56.575Z","role":"workflow:owner","workflowId":"wdiRsy9yYGvexVQk","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}


workflow_id: UmNrKI6RFXIQsiu7
workflow_name: Test_U1-03
trigger: partial_update
created_at: 2026-02-16 10:13:05
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:12:55.966Z","createdAt":"2026-02-16T10:12:55.966Z","id":"UmNrKI6RFXIQsiu7","name":"Test_U1-03","description":null,"active":false,"isArchived":false,"nodes":[{"id":"manual-trigger","name":"Inicio Manual","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"set-user-idea","name":"Entrada de Texto","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"user_idea_field","name":"user_idea","type":"string","value":"Un astronauta caminando en Marte al atardecer"}]}},"position":[460,300]},{"id":"http-openai-enhance","name":"Mejorar Prompt con IA","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/v1/chat/completions","method":"POST","options":{},"jsonBody":"={\n  \"model\": \"gpt-4o-mini\",\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"Eres un experto en crear prompts detallados para generadores de video IA. Toma la idea del usuario y conviértela en un prompt descriptivo en inglés, agregando detalles de iluminación, estilo cinematográfico, movimiento de cámara y atmósfera. Responde SOLO con el prompt mejorado, sin explicaciones adicionales.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"{{ $json.user_idea }}\"\n    }\n  ],\n  \"temperature\": 0.7,\n  \"max_tokens\": 200\n}","sendBody":true,"specifyBody":"json","authentication":"[REDACTED]","nodeCredentialType":"[REDACTED]"},"position":[680,300]},{"id":"extract-prompt","name":"Extraer Prompt Generado","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"enhanced_prompt","name":"enhanced_prompt","type":"string","value":"={{ $json.choices[0].message.content }}"}]}},"position":[900,300]},{"id":"http-nanobanana","name":"Generar Video en Nanobanana","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/generate","method":"POST","options":{"timeout":120000},"jsonBody":"={\n  \"prompt\": \"{{ $json.enhanced_prompt }}\",\n  \"duration\": 5,\n  \"resolution\": \"1280x720\",\n  \"style\": \"cinematic\"\n}","sendBody":true,"specifyBody":"json","authentication":"[REDACTED]","genericAuthType":"[REDACTED]"},"position":[1120,300]},{"id":"resultado-final","name":"Resultado Final","type":"n8n-nodes-base.noOp","typeVersion":1,"parameters":{},"position":[1340,300]}],"connections":{"Inicio Manual":{"main":[[{"node":"Entrada de Texto","type":"main","index":0}]]},"Entrada de Texto":{"main":[[{"node":"Mejorar Prompt con IA","type":"main","index":0}]]},"Mejorar Prompt con IA":{"main":[[{"node":"Extraer Prompt Generado","type":"main","index":0}]]},"Extraer Prompt Generado":{"main":[[{"node":"Generar Video en Nanobanana","type":"main","index":0}]]},"Generar Video en Nanobanana":{"main":[[{"node":"Resultado Final","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"dbda94cf-f5bb-48c9-a61b-322feaf69ac4","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:12:55.966Z","createdAt":"2026-02-16T10:12:55.966Z","role":"workflow:owner","workflowId":"UmNrKI6RFXIQsiu7","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Mejorar Prompt con IA","updates":{"parameters":{"options":{"headers":{"X-API-Version":"2"}}}}}]


workflow_id: sfYaBSQcAIGWriDE
workflow_name: Test_U1-01
trigger: partial_update
created_at: 2026-02-16 10:13:06
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:12:54.142Z","createdAt":"2026-02-16T10:12:54.142Z","id":"sfYaBSQcAIGWriDE","name":"Test_U1-01","description":null,"active":false,"isArchived":false,"nodes":[{"id":"cal-trigger","name":"Cal.com Booking","type":"n8n-nodes-base.calTrigger","typeVersion":1,"parameters":{"events":["BOOKING_CREATED"]},"position":[0,300]},{"id":"find-candidate","name":"Find Candidate","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT * FROM [REDACTED] WHERE phone = '{{ $json.payload.responses.phone.value }}' OR email = '{{ $json.payload.responses.email.value }}' LIMIT 1","options":{},"operation":"executeQuery"},"position":[250,300]},{"id":"has-candidate","name":"Candidate Found?","type":"n8n-nodes-base.if","typeVersion":2.2,"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"check-id","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.id }}"}]}},"position":[500,300]},{"id":"update-stage","name":"Update to Stage 4","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"UPDATE [REDACTED] SET current_stage = 4, interview_time = '{{ $('Cal.com Booking').item.json.payload.startTime }}', updated_at = NOW() WHERE id = '{{ $json.id }}'","options":{},"operation":"executeQuery"},"position":[750,200]},{"id":"send-confirm","name":"Send Confirmation SMS","type":"n8n-nodes-base.httpRequest","typeVersion":4,"parameters":{"url":"https://[domain]/conversations/messages","method":"POST","options":{},"jsonBody":"={\n  \"type\": \"SMS\",\n  \"contactId\": \"{{ $('Find Candidate').item.json.ghl_contact_id }}\",\n  \"message\": \"Awesome! Your interview is confirmed for {{ $('Cal.com Booking').item.json.payload.startTime }}. We'll send a reminder the day before. See you then!\"\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"[REDACTED]","headerParameters":{"parameters":[{"name":"Version","value":"2021-07-28"}]},"nodeCredentialType":"[REDACTED]"},"position":[1000,200]},{"id":"log-booking","name":"Log Booking","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"INSERT INTO [REDACTED] (candidate_id, direction, message, stage_at_time) VALUES ('{{ $('Find Candidate').item.json.id }}', 'system', 'Interview booked via Cal.com for {{ $('Cal.com Booking').item.json.payload.startTime }}', 4)","options":{},"operation":"executeQuery"},"position":[1250,200]}],"connections":{"Find Candidate":{"main":[[{"node":"Candidate Found?","type":"main","index":0}]]},"Cal.com Booking":{"main":[[{"node":"Find Candidate","type":"main","index":0}]]},"Candidate Found?":{"main":[[{"node":"Update to Stage 4","type":"main","index":0}],[]]},"Update to Stage 4":{"main":[[{"node":"Send Confirmation SMS","type":"main","index":0}]]},"Send Confirmation SMS":{"main":[[{"node":"Log Booking","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"6d6393bd-fb37-4c3f-923a-e3dfa79b19f5","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:12:54.143Z","createdAt":"2026-02-16T10:12:54.143Z","role":"workflow:owner","workflowId":"sfYaBSQcAIGWriDE","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Find Candidate","updates":{"parameters":{"query":"SELECT * FROM events_v2 WHERE phone = '{{ $json.payload.responses.phone.value }}' OR email = '{{ $json.payload.responses.email.value }}' LIMIT 1"}}}]


workflow_id: KPRA0eB6rA2Uv5Zc
workflow_name: Test_U1-07
trigger: partial_update
created_at: 2026-02-16 10:13:07
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:00.517Z","createdAt":"2026-02-16T10:13:00.517Z","id":"KPRA0eB6rA2Uv5Zc","name":"Test_U1-07","description":null,"active":false,"isArchived":false,"nodes":[{"id":"slack-webhook-1","name":"Slack Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"slack-pdf-upload","options":{},"httpMethod":"POST","responseMode":"lastNode"},"position":[250,300]},{"id":"read-pdf-1","name":"Read PDF","type":"n8n-nodes-base.readPDF","typeVersion":1,"parameters":{"encrypted":false,"binaryPropertyName":"data"},"position":[450,300]},{"id":"extract-info-1","name":"Information Extractor","type":"@n8n/n8n-nodes-langchain.informationExtractor","typeVersion":1.2,"parameters":{"text":"={{ $json.text }}","schemaType":"fromJson","jsonSchemaExample":"{\n  \"工事名\": \"〇〇マンション改修工事\",\n  \"工事項目\": [\n    {\n      \"工事内容\": \"壁紙張替\",\n      \"数量\": 50,\n      \"単位\": \"㎡\",\n      \"単価\": 1500,\n      \"備考\": \"リビング・寝室\"\n    }\n  ]\n}"},"position":[650,300]},{"id":"split-items-1","name":"Split Out Items","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// 抽出されたデータから工事項目を分割\nconst items = $input.all();\nconst result = [];\n\nfor (const item of items) {\n  const 工事名 = item.json.工事名 || '';\n  const 工事項目 = item.json.工事項目 || [];\n  \n  // 各工事項目を個別のアイテムとして出力\n  for (const 項目 of 工事項目) {\n    result.push({\n      json: {\n        工事名: 工事名,\n        摘要: 項目.工事内容 || '',\n        数量: parseFloat(項目.数量) || 0,\n        単位: 項目.単位 || '',\n        単価: parseFloat(項目.単価) || 0,\n        備考: 項目.備考 || ''\n      }\n    });\n  }\n}\n\nreturn result;"},"position":[850,300]},{"id":"create-notion-1","name":"Create Notion Page","type":"n8n-nodes-base.notion","typeVersion":2.2,"parameters":{"title":"={{ $json.摘要 }}","resource":"databasePage","operation":"create","databaseId":"[REDACTED]","propertiesUi":{"propertyValues":[{"key":"数量","numberValue":"={{ $json.数量 }}"},{"key":"単位","richTextValue":"={{ $json.単位 }}"},{"key":"単価","numberValue":"={{ $json.単価 }}"},{"key":"備考","richTextValue":"={{ $json.備考 }}"}]}},"position":[1050,300]}],"connections":{"Read PDF":{"main":[[{"node":"Information Extractor","type":"main","index":0}]]},"Slack Webhook":{"main":[[{"node":"Read PDF","type":"main","index":0}]]},"Split Out Items":{"main":[[{"node":"Create Notion Page","type":"main","index":0}]]},"Information Extractor":{"main":[[{"node":"Split Out Items","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"a910e05d-0a0c-4364-aef1-782c0a5c4268","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:00.518Z","createdAt":"2026-02-16T10:13:00.518Z","role":"workflow:owner","workflowId":"KPRA0eB6rA2Uv5Zc","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Slack Webhook","updates":{"parameters":{"path":"/api/v2/webhooks"}}}]


workflow_id: KArqsrVF2AoqzjmS
workflow_name: Test_U1-06
trigger: partial_update
created_at: 2026-02-16 10:13:10
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:12:59.006Z","createdAt":"2026-02-16T10:12:59.006Z","id":"KArqsrVF2AoqzjmS","name":"Test_U1-06","description":null,"active":false,"isArchived":false,"nodes":[{"id":"manual-trigger","name":"Inicio Manual","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[100,300]},{"id":"read-sheets","name":"Leer Barrios","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"options":{},"operation":"read","sheetName":{"mode":"name","value":"Hoja1"},"documentId":{"mode":"id","value":"[REDACTED]"}},"position":[300,300]},{"id":"loop-barrios","name":"Loop Barrios","type":"n8n-nodes-base.splitInBatches","typeVersion":3,"parameters":{"options":{},"batchSize":1},"position":[500,300]},{"id":"google-maps-search","name":"Buscar Dentistas en Maps","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"=https://maps.googleapis.com/maps/api/place/textsearch/json","method":"GET","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"query","value":"=dentistas en {{ $json.Barrio }}"},{"name":"key","value":"[REDACTED]"}]}},"position":[700,300]},{"id":"split-results","name":"Separar Resultados","type":"n8n-nodes-base.splitOut","typeVersion":1,"parameters":{"options":{},"fieldToSplitOut":"results"},"position":[900,300]},{"id":"get-place-details","name":"Obtener Detalles Dentista","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"=https://maps.googleapis.com/maps/api/place/details/json","method":"GET","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"place_id","value":"={{ $json.place_id }}"},{"name":"fields","value":"name,[REDACTED],website,formatted_address"},{"name":"key","value":"[REDACTED]"}]}},"position":[1100,300]},{"id":"extract-data","name":"Extraer Datos","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForEachItem","jsCode":"// Extraer datos del dentista\nconst result = $input.item.json.result || {};\n\nreturn {\n  json: {\n    nombre: result.name || 'N/A',\n    telefono: result.[REDACTED] || 'N/A',\n    direccion: result.formatted_address || 'N/A',\n    web: result.website || 'N/A',\n    barrio_origen: $('Loop Barrios').item.json.Barrio || 'N/A'\n  }\n};"},"position":[1300,300]},{"id":"write-sheets","name":"Guardar en Sheets","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"columns":{"value":{},"mappingMode":"autoMapInputData"},"options":{},"operation":"append","sheetName":{"mode":"name","value":"Dentistas"},"documentId":{"mode":"id","value":"[REDACTED]"}},"position":[1500,300]},{"id":"no-op","name":"Continuar Loop","type":"n8n-nodes-base.noOp","typeVersion":1,"parameters":{},"position":[1700,300]}],"connections":{"Leer Barrios":{"main":[[{"node":"Loop Barrios","type":"main","index":0}]]},"Loop Barrios":{"main":[[{"node":"Buscar Dentistas en Maps","type":"main","index":0}],[]]},"Extraer Datos":{"main":[[{"node":"Guardar en Sheets","type":"main","index":0}]]},"Inicio Manual":{"main":[[{"node":"Leer Barrios","type":"main","index":0}]]},"Continuar Loop":{"main":[[{"node":"Loop Barrios","type":"main","index":0}]]},"Guardar en Sheets":{"main":[[{"node":"Continuar Loop","type":"main","index":0}]]},"Separar Resultados":{"main":[[{"node":"Obtener Detalles Dentista","type":"main","index":0}]]},"Buscar Dentistas en Maps":{"main":[[{"node":"Separar Resultados","type":"main","index":0}]]},"Obtener Detalles Dentista":{"main":[[{"node":"Extraer Datos","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"4fcbcbe7-14de-4833-a1ea-465fbbc03070","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:12:59.006Z","createdAt":"2026-02-16T10:12:59.006Z","role":"workflow:owner","workflowId":"KArqsrVF2AoqzjmS","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Obtener Detalles Dentista","updates":{"parameters":{"url":"=https://maps.googleapis.com/maps/api/place/details/json","method":"GET","options":{"headers":{"X-API-Version":"2"}},"sendQuery":true,"queryParameters":{"parameters":[{"name":"place_id","value":"={{ $json.place_id }}"},{"name":"fields","value":"name,phone_number,website,formatted_address"},{"name":"key","value":"[REDACTED]"}]}}}}]


workflow_id: 5oBDm0oBOlCqFSAU
workflow_name: Test_U1-02
trigger: partial_update
created_at: 2026-02-16 10:13:11
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:12:55.054Z","createdAt":"2026-02-16T10:12:55.054Z","id":"5oBDm0oBOlCqFSAU","name":"Test_U1-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"b2c3d4e5-f6g7-8901-bcde-f12345678901","name":"Scrape Homepage Brands","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/en/","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}]}},"position":[460,300]},{"id":"c3d4e5f6-g7h8-9012-cdef-123456789012","name":"Extract Brand Links","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// OPTION A : Liste temporaire de 3 marques pour test\nconst naBrands = [\n  { name: 'Toyota', id: 'toyota-12', minYear: 1960 },\n  { name: 'Honda', id: 'honda-12', minYear: 1973 },\n  { name: 'Mazda', id: 'mazda-12', minYear: 1971 }\n];\n\nconsole.log(`✅ Returning ${naBrands.length} test brands`);\n\nreturn naBrands.map(brand => ({\n  json: {\n    brandUrl: `https://www.auto-data.net/en/${brand.id}`,\n    brandName: brand.name.toLowerCase(),\n    minYear: brand.minYear\n  }\n}));"},"position":[680,300]},{"id":"d4e5f6g7-h8i9-0123-defg-234567890123","name":"Scrape Brand Page","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"={{ $json.brandUrl }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}]}},"position":[900,300]},{"id":"e5f6g7h8-i9j0-1234-efgh-345678901234","name":"Extract Models from Brand","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// OPTION A : 1 modèle fixe par marque pour test\nconst brandData = $('Extract Brand Links').item.json;\nconst brandName = brandData.brandName;\nconst minYear = brandData.minYear;\n\nconsole.log(\"=== Extract Models (Test Mode) ===\");\nconsole.log(\"Brand:\", brandName);\n\nconst testModels = {\n  'toyota': [\n    { url: '/en/[REDACTED_TOKEN]', name: 'Toyota Camry 2024', year: 2024 }\n  ],\n  'honda': [\n    { url: '/en/[REDACTED_TOKEN]', name: 'Honda Accord 2024', year: 2024 }\n  ],\n  'mazda': [\n    { url: '/en/[REDACTED_TOKEN]', name: 'Mazda3 2024', year: 2024 }\n  ]\n};\n\nconst brandKey = brandName ? brandName.toLowerCase() : '';\nconst models = testModels[brandKey] || [];\n\nconsole.log(`✅ Returning ${models.length} test model(s) for ${brandName}`);\n\nif (models.length === 0) {\n  return [];\n}\n\nreturn models.map(model => ({\n  json: {\n    modelUrl: 'https://www.auto-data.net' + model.url,\n    modelName: model.name,\n    brand: brandName,\n    year: model.year\n  }\n}));"},"position":[1120,300]},{"id":"f6g7h8i9-j0k1-2345-fghi-456789012345","name":"Scrape Model Details","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"={{ $json.modelUrl }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}]}},"position":[1340,300]},{"id":"g7h8i9j0-k1l2-3456-ghij-567890123456","name":"Extract 33 Technical Specs","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Extraction des 33 specs techniques\nconst scrapedData = $input.first().json;\nconst modelData = $('Extract Models from Brand').item.json;\n\nconsole.log(\"=== Extract 33 Technical Specs ===\");\nconsole.log(\"Model:\", modelData.modelName);\nconsole.log(\"HTML available:\", !!scrapedData.data);\n\nconst html = scrapedData.data || '';\n\nif (!html || html.length < 100) {\n  console.log(\"⚠️ No HTML data received\");\n  return [{\n    json: {\n      model_name: modelData.modelName,\n      version_name: 'N/A',\n      year_range: modelData.year ? modelData.year.toString() : 'N/A',\n      is_multi_year: false,\n      start_of_production: 'N/A',\n      [REDACTED]: 'N/A',\n      body_type: 'N/A',\n      seats: 'N/A',\n      doors: 'N/A',\n      [REDACTED]: 'N/A',\n      [REDACTED]: 'N/A',\n      [REDACTED]: 'N/A',\n      fuel_type: 'N/A',\n      fuel_tank_capacity: 'N/A',\n      acceleration: 'N/A',\n      max_speed: 'N/A',\n      power: 'N/A',\n      torque: 'N/A',\n      max_engine_speed: 'N/A',\n      engine_layout: 'N/A',\n      engine_displacement: 'N/A',\n      cylinders: 'N/A',\n      [REDACTED]: 'N/A',\n      valves_per_cylinder: 'N/A',\n      fuel_injection: 'N/A',\n      engine_aspiration: 'N/A',\n      curb_weight: 'N/A',\n      trunk_space: 'N/A',\n      length: 'N/A',\n      width: 'N/A',\n      height: 'N/A',\n      drive_wheel: 'N/A',\n      transmission: 'N/A',\n      tire_size: 'N/A',\n      data_source_url: modelData.modelUrl,\n      scrape_date: new Date().toISOString().split('T')[0],\n      data_completeness: 0\n    }\n  }];\n}\n\nfunction extractValue(labels) {\n  for (const label of labels) {\n    const regex = new RegExp(`${label}[^<]*?([\\\\d.,]+\\\\s*[a-zA-Z/°]+)`, 'i');\n    const match = html.match(regex);\n    if (match) return match[1].trim();\n  }\n  return 'N/A';\n}\n\nfunction combineUnits(labels) {\n  const values = [];\n  for (const label of labels) {\n    const regex = new RegExp(`${label}[^<]*?([\\\\d.,]+\\\\s*[a-zA-Z/°]+)`, 'gi');\n    let match;\n    while ((match = regex.exec(html)) !== null) {\n      const value = match[1].trim();\n      if (!values.includes(value)) values.push(value);\n    }\n  }\n  return values.length > 0 ? values.join(' / ') : 'N/A';\n}\n\nconst specs = {\n  model_name: modelData.modelName,\n  version_name: extractValue(['Version', 'Trim', 'Model variant']),\n  year_range: modelData.year ? modelData.year.toString() : 'N/A',\n  is_multi_year: false,\n  start_of_production: extractValue(['Start of production', 'Production start']),\n  [REDACTED]: extractValue(['Powertrain', 'Powertrain architecture']),\n  body_type: extractValue(['Body type', 'Body']),\n  seats: extractValue(['Seats', 'Seating capacity']),\n  doors: extractValue(['Doors', 'Number of doors']),\n  [REDACTED]: combineUnits(['Fuel consumption.*urban', 'City fuel economy']),\n  [REDACTED]: combineUnits(['Fuel consumption.*extra', 'Highway fuel economy']),\n  [REDACTED]: combineUnits(['Fuel consumption.*combined', 'Combined fuel economy']),\n  fuel_type: extractValue(['Fuel type', 'Fuel']),\n  fuel_tank_capacity: combineUnits(['Fuel tank capacity', 'Tank capacity']),\n  acceleration: combineUnits(['Acceleration 0.*100', 'Acceleration', '0-100']),\n  max_speed: combineUnits(['Maximum speed', 'Max speed', 'Top speed']),\n  power: combineUnits(['Power', 'Maximum power', 'Horsepower', 'HP']),\n  torque: combineUnits(['Torque', 'Maximum torque']),\n  max_engine_speed: combineUnits(['Maximum engine speed', 'Max RPM']),\n  engine_layout: extractValue(['Engine layout', 'Engine position']),\n  engine_displacement: combineUnits(['Engine displacement', 'Displacement']),\n  cylinders: extractValue(['Number of cylinders', 'Cylinders']),\n  [REDACTED]: extractValue(['Engine configuration', 'Configuration']),\n  valves_per_cylinder: extractValue(['Valves per cylinder', 'Valves']),\n  fuel_injection: extractValue(['Fuel injection', 'Injection system']),\n  engine_aspiration: extractValue(['Engine aspiration', 'Aspiration']),\n  curb_weight: combineUnits(['Curb weight', 'Weight', 'Kerb weight']),\n  trunk_space: combineUnits(['Trunk.*space', 'Boot space', 'Cargo']),\n  length: combineUnits(['Length']),\n  width: combineUnits(['Width']),\n  height: combineUnits(['Height']),\n  drive_wheel: extractValue(['Drive wheel', 'Drivetrain', 'Drive type']),\n  transmission: extractValue(['Transmission', 'Gearbox']),\n  tire_size: extractValue(['Tire size', 'Tyre size']),\n  data_source_url: modelData.modelUrl,\n  scrape_date: new Date().toISOString().split('T')[0]\n};\n\nconst totalFields = 33;\nconst filledFields = Object.values(specs).filter(v => v && v !== 'N/A' && v !== '').length;\nspecs.data_completeness = Math.round((filledFields / totalFields) * 100);\n\nconsole.log(`✅ Extracted ${filledFields}/${totalFields} specs (${specs.data_completeness}% complete)`);\n\nreturn [{ json: specs }];"},"position":[1560,300]}],"connections":{"Manual Trigger":{"main":[[{"node":"Scrape Homepage Brands","type":"main","index":0}]]},"Scrape Brand Page":{"main":[[{"node":"Extract Models from Brand","type":"main","index":0}]]},"Extract Brand Links":{"main":[[{"node":"Scrape Brand Page","type":"main","index":0}]]},"Scrape Model Details":{"main":[[{"node":"Extract 33 Technical Specs","type":"main","index":0}]]},"Scrape Homepage Brands":{"main":[[{"node":"Extract Brand Links","type":"main","index":0}]]},"Extract Models from Brand":{"main":[[{"node":"Scrape Model Details","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"2bcf4a5e-0cd3-4e12-9afa-44698f7bb7aa","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:12:55.055Z","createdAt":"2026-02-16T10:12:55.055Z","role":"workflow:owner","workflowId":"5oBDm0oBOlCqFSAU","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Scrape Homepage Brands","updates":{"parameters":{"method":"POST","url":"https://[domain]/en/","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}]}}}}]


workflow_id: GD5sgR0PWaDPOtqd
workflow_name: Test_U1-10
trigger: partial_update
created_at: 2026-02-16 10:13:15
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:08.212Z","createdAt":"2026-02-16T10:13:08.212Z","id":"GD5sgR0PWaDPOtqd","name":"Test_U1-10","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger","name":"Webhook Evolution API","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"[REDACTED]","httpMethod":"POST","responseMode":"responseNode"},"position":[0,300]},{"id":"respond-webhook","name":"Respond Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"parameters":{"respondWith":"json","responseBody":"={ \"status\": \"received\" }"},"position":[200,300]},{"id":"filter-messages","name":"Filtrar Mensagens","type":"n8n-nodes-base.if","typeVersion":2.2,"parameters":{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"is-not-group","operator":{"type":"string","operation":"notContains"},"leftValue":"={{ $json.data?.key?.remoteJid }}","rightValue":"@g.us"},{"id":"is-not-status","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.data?.key?.remoteJid }}","rightValue":"status@broadcast"},{"id":"is-not-from-me","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.data?.key?.fromMe }}","rightValue":false},{"id":"has-message","operator":{"type":"string","operation":"isNotEmpty","singleValue":true},"leftValue":"={{ $json.data?.message?.conversation || $json.data?.message?.extendedTextMessage?.text }}","rightValue":""}]}},"position":[400,300]},{"id":"process-message","name":"Processar Mensagem","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const data = $input.first().json;\n\n// Extract data from Evolution API webhook\nconst phone = data.data?.key?.remoteJid?.replace('@s.whatsapp.net', '') || '';\nconst messageRaw = data.data?.message?.conversation || data.data?.message?.extendedTextMessage?.text || '';\nconst message = messageRaw.trim().toLowerCase();\nconst pushName = data.data?.pushName || 'Usuário';\nconst instance = data.instance || '';\n\n// Identify command\nlet command = 'unknown';\nif (message === 'ajuda' || message === '/ajuda') {\n  command = 'ajuda';\n} else if (message === 'alertas' || message === '/alertas') {\n  command = 'alertas';\n} else if (message === 'parar' || message === '/parar') {\n  command = 'parar';\n}\n\nreturn [{\n  json: {\n    phone,\n    message,\n    messageOriginal: messageRaw.trim(),\n    pushName,\n    instance,\n    command\n  }\n}];"},"position":[600,200]}],"connections":{"Respond Webhook":{"main":[[{"node":"Filtrar Mensagens","type":"main","index":0}]]},"Filtrar Mensagens":{"main":[[{"node":"Processar Mensagem","type":"main","index":0}],[]]},"Webhook Evolution API":{"main":[[{"node":"Respond Webhook","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"abc8f234-88b3-450b-ad83-355f426f8013","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:08.213Z","createdAt":"2026-02-16T10:13:08.213Z","role":"workflow:owner","workflowId":"GD5sgR0PWaDPOtqd","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Webhook Evolution API","updates":{"parameters":{"path":"/api/v2/webhooks"}}}]


workflow_id: h3KkQOGJaeBXi06g
workflow_name: Test_U1-08
trigger: partial_update
created_at: 2026-02-16 10:13:23
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:02.337Z","createdAt":"2026-02-16T10:13:02.337Z","id":"h3KkQOGJaeBXi06g","name":"Test_U1-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"workflow-trigger","name":"Execute Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1.1,"parameters":{"inputSource":"workflowInputs","workflowInputs":{"values":[{"name":"event_type","type":"string"},{"name":"message","type":"string"}]}},"position":[0,0]},{"id":"format-message","name":"Format Message","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const eventType = $input.first().json.event_type;\nconst message = $input.first().json.message;\n\nconst emojiMap = {\n  'started': '🚀',\n  'completed': '✅',\n  'error': '❌',\n  'info': 'ℹ️',\n  'warning': '⚠️'\n};\n\nconst emoji = emojiMap[eventType] || 'ℹ️';\nconst timestamp = new Date().toISOString();\n\nconst embed = {\n  title: `${emoji} Dev Team v4 - ${eventType.charAt(0).toUpperCase() + eventType.slice(1)}`,\n  description: message,\n  color: eventType === 'completed' ? 0x00ff00 : eventType === 'error' ? 0xff0000 : eventType === 'warning' ? 0xffaa00 : 0x0099ff,\n  timestamp: timestamp,\n  footer: { text: 'Agentic Dev Team v4.0' }\n};\n\nreturn { json: { embeds: [embed], content: `${emoji} **${eventType.toUpperCase()}**: ${message}` } };","language":"javaScript"},"position":[250,0]},{"id":"send-discord","name":"Send Discord Message","type":"n8n-nodes-base.discord","typeVersion":2,"parameters":{"content":"={{ $json.content }}","options":{},"resource":"message","operation":"send","authentication":"[REDACTED]"},"position":[500,0]},{"id":"return-success","name":"Return Success","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"return { json: { success: true, message: 'Discord notification sent' } };","language":"javaScript"},"position":[750,0]},{"id":"sticky-note-1","name":"Documentation","type":"n8n-nodes-base.stickyNote","typeVersion":1,"parameters":{"color":7,"width":300,"height":200,"content":"## 📢 Discord Notifier v4\n\n### Event Types\n- `started` 🚀\n- `completed` ✅\n- `error` ❌\n- `warning` ⚠️\n- `info` ℹ️\n\n### Setup\nConfigure Discord webhook credential"},"position":[-200,-150]}],"connections":{"Format Message":{"main":[[{"node":"Send Discord Message","type":"main","index":0}]]},"Send Discord Message":{"main":[[{"node":"Return Success","type":"main","index":0}]]},"Execute Workflow Trigger":{"main":[[{"node":"Format Message","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"decf46b8-c63e-4782-986f-08d0da9c6fc8","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:02.337Z","createdAt":"2026-02-16T10:13:02.337Z","role":"workflow:owner","workflowId":"h3KkQOGJaeBXi06g","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"webhook-trigger","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":1,"parameters":{"httpMethod":"POST","path":"api/v2/webhooks","responseMode":"onReceived","options":{"rawBody":false}},"position":[0,0]}},{"type":"addConnection","source":"Webhook","target":"Format Message"}]


workflow_id: Ab6DpnE1LFSRbPrB
workflow_name: Test_U1-09
trigger: partial_update
created_at: 2026-02-16 10:13:27
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:03.251Z","createdAt":"2026-02-16T10:13:03.251Z","id":"Ab6DpnE1LFSRbPrB","name":"Test_U1-09","description":null,"active":false,"isArchived":false,"nodes":[{"id":"workflow-trigger-node","name":"Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1.1,"parameters":{},"position":[-304,32]},{"id":"validate-input-node","name":"Validate Input","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Validate input schema\nconst items = $input.all();\nconst out = [];\n\nfor (const item of items) {\n  let { userId, clientId, roleName, action, subAction } = item.json;\n  \n  if (!userId || !clientId || !roleName || !action || !subAction) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'INVALID_INPUT',\n        error: 'Missing required fields',\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  if (typeof userId !== 'number' || typeof clientId !== 'number') {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'INVALID_INPUT',\n        error: 'userId and clientId must be numbers',\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  const validRoles = ['viewer', 'editor', 'approver', 'admin'];\n  if (!validRoles.includes(roleName)) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'INVALID_INPUT',\n        error: `Invalid role: ${roleName}`,\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  // Normalize action/subAction to uppercase for RBAC checks\n  action = action.toUpperCase();\n  subAction = subAction.toUpperCase();\n  \n  if (!/^[A-Z0-9_]{2,10}$/.test(action) || !/^[A-Z0-9_]{2,12}$/.test(subAction)) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'INVALID_INPUT',\n        error: 'Invalid action/subAction format',\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  out.push({ json: { ...item.json, action, subAction } });\n}\n\nreturn out;"},"position":[-112,32]},{"id":"check-user-client-status-node","name":"Check User & Client Status","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"query":"SELECT \n  u.id as user_id,\n  u.telegram_id,\n  u.display_name,\n  c.id as client_id,\n  c.name as client_name,\n  c.status as client_status,\n  ucr.role\nFROM app_user u\nJOIN user_client_role ucr ON u.id = ucr.user_id\nJOIN client c ON ucr.client_id = c.id\nWHERE u.id = $1 AND c.id = $2\nLIMIT 1;","options":{"queryParameters":"={{ [ $json.userId, $json.clientId ] }}"},"operation":"executeQuery"},"position":[96,32]},{"id":"check-status-role-node","name":"Check Status & Role","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Check user/client status and role\nconst items = $input.all();\nconst out = [];\n\nfor (const item of items) {\n  const input = item.json;\n  const dbResult = $node['Check User & Client Status'].json;\n  \n  // Check if user/client found\n  if (!dbResult || !dbResult.user_id) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'USER_NOT_FOUND',\n        userId: input.userId,\n        clientId: input.clientId,\n        roleName: input.roleName,\n        action: input.action,\n        subAction: input.subAction\n      }\n    });\n    continue;\n  }\n  \n  // Check client status\n  if (dbResult.client_status !== 'active') {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'CLIENT_SUSPENDED',\n        userId: input.userId,\n        clientId: input.clientId,\n        roleName: input.roleName,\n        action: input.action,\n        subAction: input.subAction\n      }\n    });\n    continue;\n  }\n  \n  // Verify role matches\n  if (dbResult.role !== input.roleName) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'ROLE_MISMATCH',\n        error: `Expected role ${input.roleName}, got ${dbResult.role}`,\n        userId: input.userId,\n        clientId: input.clientId,\n        roleName: input.roleName,\n        action: input.action,\n        subAction: input.subAction\n      }\n    });\n    continue;\n  }\n  \n  // Status OK, pass through with DB data\n  out.push({\n    json: {\n      ...input,\n      dbRole: dbResult.role,\n      clientStatus: dbResult.client_status,\n      userName: dbResult.display_name,\n      clientName: dbResult.client_name\n    }\n  });\n}\n\nreturn out;"},"position":[304,32]},{"id":"check-rbac-permissions-node","name":"Check RBAC Permissions","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// RBAC permission matrix\nconst items = $input.all();\nconst out = [];\n\n// Permission matrix: action -> subAction -> [allowed roles]\nconst permissions = {\n  VIEW: {\n    POSTS: ['viewer', 'editor', 'approver', 'admin'],\n    POST: ['viewer', 'editor', 'approver', 'admin'],\n    DASHBOARD: ['viewer', 'editor', 'approver', 'admin']\n  },\n  CREATE: {\n    POST: ['editor', 'approver', 'admin'],\n    POSTS: ['editor', 'approver', 'admin']\n  },\n  EDIT: {\n    POST: ['editor', 'approver', 'admin']\n  },\n  DELETE: {\n    POST: ['admin']\n  },\n  CLIENT: {\n    LIST: ['viewer', 'editor', 'approver', 'admin'],\n    SWITCH: ['viewer', 'editor', 'approver', 'admin']\n  },\n  STATE: {\n    LIST: ['viewer', 'editor', 'approver', 'admin'],\n    FILTER: ['viewer', 'editor', 'approver', 'admin'],\n    VIEW: ['viewer', 'editor', 'approver', 'admin']\n  },\n  NEW: {\n    START: ['editor', 'approver', 'admin'],\n    CREATE: ['editor', 'approver', 'admin'],\n    FORMAT: ['editor', 'approver', 'admin']\n  },\n  MEDIA: {\n    LIST: ['viewer', 'editor', 'approver', 'admin'],\n    UPLOAD: ['editor', 'approver', 'admin'],\n    SELECT: ['editor', 'approver', 'admin'],\n    DELETE: ['admin']\n  },\n  COPY: {\n    GENERATE: ['editor', 'approver', 'admin'],\n    EDIT: ['editor', 'approver', 'admin'],\n    SAVE: ['editor', 'approver', 'admin']\n  },\n  PLAN: {\n    VIEW: ['viewer', 'editor', 'approver', 'admin'],\n    EDIT: ['editor', 'approver', 'admin'],\n    APPROVE: ['approver', 'admin'],\n    REJECT: ['approver', 'admin']\n  },\n  TIME: {\n    PICK: ['editor', 'approver', 'admin'],\n    BEST: ['editor', 'approver', 'admin'],\n    CONFIRM: ['editor', 'approver', 'admin']\n  },\n  ADMIN: {\n    '*': ['admin']  // All admin actions require admin role\n  }\n};\n\nfor (const item of items) {\n  const { action, subAction, roleName, userId, clientId } = item.json;\n  \n  // Check if action exists\n  if (!permissions[action]) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'UNKNOWN_ACTION',\n        error: `Unknown action: ${action}`,\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  // Check if subAction exists (or wildcard)\n  const allowedRoles = permissions[action][subAction] || permissions[action]['*'];\n  if (!allowedRoles) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: 'UNKNOWN_SUBACTION',\n        error: `Unknown subAction: ${action}.${subAction}`,\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  // Check if role is allowed\n  if (!allowedRoles.includes(roleName)) {\n    out.push({\n      json: {\n        authorized: false,\n        reason: '[REDACTED]',\n        error: `Role ${roleName} not allowed for ${action}.${subAction}`,\n        userId, clientId, roleName, action, subAction\n      }\n    });\n    continue;\n  }\n  \n  // Permission granted\n  out.push({ json: item.json });\n}\n\nreturn out;"},"position":[496,32]},{"id":"get-feature-flags-node","name":"Get Feature Flags","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"query":"SELECT coalesce(jsonb_object_agg(key, value), '{}'::jsonb) as features\nFROM feature_flag\nWHERE client_id = $1;","options":{"queryParameters":"={{ [ $json.clientId ] }}"},"operation":"executeQuery"},"position":[704,32]},{"id":"check-feature-flags-node","name":"Check Feature Flags","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Check feature flag requirements\nconst items = $input.all();\nconst out = [];\n\n// Feature flag requirements: action -> subAction -> required flag\nconst featureRequirements = {\n  COPY: {\n    GENERATE: '[REDACTED]'\n  },\n  TIME: {\n    BEST: 'best_time_enabled'\n  },\n  PLAN: {\n    AUTO_PUBLISH: '[REDACTED]'\n  }\n};\n\nfor (const item of items) {\n  const { action, subAction, userId, clientId, roleName } = item.json;\n  const features = $node['Get Feature Flags'].json.features || {};\n  \n  // Check if action requires feature flag\n  const requiredFlag = featureRequirements[action]?.[subAction];\n  \n  if (requiredFlag) {\n    const flagValue = features[requiredFlag];\n    \n    // Check if flag is enabled (value is \"true\" string or true boolean)\n    if (flagValue !== 'true' && flagValue !== true) {\n      out.push({\n        json: {\n          authorized: false,\n          reason: 'FEATURE_DISABLED',\n          error: `Feature ${requiredFlag} is not enabled`,\n          userId, clientId, roleName, action, subAction\n        }\n      });\n      continue;\n    }\n  }\n  \n  // Feature check passed\n  out.push({ json: { ...item.json, features } });\n}\n\nreturn out;"},"position":[896,32]},{"id":"get-usage-quotas-node","name":"Get Usage Quotas","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"query":"SELECT metric, \"limit\", used, period_start\nFROM usage_quota\nWHERE client_id = $1 AND period_start = date_trunc('month', CURRENT_DATE);","options":{"queryParameters":"={{ [ $json.clientId ] }}"},"operation":"executeQuery"},"position":[1104,32]},{"id":"check-usage-quotas-node","name":"Check Usage Quotas","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Check usage quota limits\nconst items = $input.all();\nconst out = [];\n\n// Quota requirements: action -> subAction -> metric\nconst quotaRequirements = {\n  NEW: {\n    CREATE: 'posts_per_month'\n  },\n  COPY: {\n    GENERATE: 'ai_tokens_per_month'\n  }\n};\n\nfor (const item of items) {\n  const { action, subAction, userId, clientId, roleName } = item.json;\n  const quotas = $node['Get Usage Quotas'].json || [];\n  \n  // Check if action requires quota check\n  const requiredMetric = quotaRequirements[action]?.[subAction];\n  \n  if (requiredMetric) {\n    const quota = quotas.find(q => q.metric === requiredMetric);\n    \n    if (quota) {\n      // Check if quota exceeded\n      if (quota.used >= quota.limit) {\n        out.push({\n          json: {\n            authorized: false,\n            reason: 'QUOTA_EXCEEDED',\n            error: `Quota ${requiredMetric} exceeded (${quota.used}/${quota.limit})`,\n            userId, clientId, roleName, action, subAction\n          }\n        });\n        continue;\n      }\n    }\n  }\n  \n  // Quota check passed\n  out.push({ json: item.json });\n}\n\nreturn out;"},"position":[1296,32]},{"id":"return-authorized-node","name":"Return Authorized","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Return authorization success\nconst items = $input.all();\nconst out = [];\n\nfor (const item of items) {\n  const { userId, clientId, roleName, action, subAction } = item.json;\n  \n  out.push({\n    json: {\n      authorized: true,\n      userId,\n      clientId,\n      roleName,\n      action,\n      subAction\n    }\n  });\n}\n\nreturn out;"},"position":[1504,32]}],"connections":{"Validate Input":{"main":[[{"node":"Check User & Client Status","type":"main","index":0}]]},"Get Usage Quotas":{"main":[[{"node":"Check Usage Quotas","type":"main","index":0}]]},"Workflow Trigger":{"main":[[{"node":"Validate Input","type":"main","index":0}]]},"Get Feature Flags":{"main":[[{"node":"Check Feature Flags","type":"main","index":0}]]},"Check Usage Quotas":{"main":[[{"node":"Return Authorized","type":"main","index":0}]]},"Check Feature Flags":{"main":[[{"node":"Get Usage Quotas","type":"main","index":0}]]},"Check Status & Role":{"main":[[{"node":"Check RBAC Permissions","type":"main","index":0}]]},"Check RBAC Permissions":{"main":[[{"node":"Get Feature Flags","type":"main","index":0}]]},"Check User & Client Status":{"main":[[{"node":"Check Status & Role","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"886766c3-56cd-47cf-8e32-21b47fa54110","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:03.252Z","createdAt":"2026-02-16T10:13:03.252Z","role":"workflow:owner","workflowId":"Ab6DpnE1LFSRbPrB","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Get Usage Quotas","updates":{"parameters":{"table":"events_v2"}}}]


workflow_id: Y73F6WpAODKUaY6u
workflow_name: Test_U1-13
trigger: partial_update
created_at: 2026-02-16 10:13:48
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:42.703Z","createdAt":"2026-02-16T10:13:42.703Z","id":"Y73F6WpAODKUaY6u","name":"Test_U1-13","description":null,"active":false,"isArchived":false,"nodes":[{"id":"manual-trigger","name":"When clicking \"Execute workflow\"","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,304]},{"id":"read-draft-posts","name":"Read Draft Post Ideas","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"options":{},"operation":"read","sheetName":{"__rl":true,"mode":"list","value":1976204573},"documentId":{"__rl":true,"mode":"list","value":"[REDACTED]"}},"position":[460,304]},{"id":"generate-search-query","name":"AI: Generate Search Query","type":"@n8n/n8n-nodes-langchain.openAi","typeVersion":2,"parameters":{"responses":{"values":[{"role":"system","content":"You are a research assistant specializing in life science industry intelligence.\n\nYour task: Generate a targeted web search query to find articles, reports, or analyses that validate a specific market theme.\n\n**QUERY REQUIREMENTS:**\n- Focus on the THEME and business activity (not specific companies)\n- Include relevant years (2024, 2025)\n- Include industry terms (biotech, life science, CRO, CDMO, pharma)\n- Keep queries concise (10-15 words max)\n\n**EXAMPLES:**\n\nTheme: M&A Activity\nSub-theme: Service & Tech Consolidation\n✅ GOOD: \"biotech M&A consolidation 2024 2025 CRO CDMO acquisitions report\"\n❌ BAD: \"SomaLogic Clario acquisitions\" (too specific)\n\nTheme: Facility Investments\nSub-theme: Manufacturing Capacity Expansion\n✅ GOOD: \"life science facility investment manufacturing expansion 2024 2025\"\n\nTheme: Strategic Partnerships\nSub-theme: AI-Driven Drug Discovery\n✅ GOOD: \"AI drug discovery partnerships biotech 2024 2025 collaboration trends\"\n\n**OUTPUT FORMAT:**\n{\"searchQuery\": \"your search query here\"}"},{"content":"=**Theme:** {{ $json.Theme }}\n**Sub-Theme:** {{ $json.Sub_Theme }}\n**Description:** {{ $json.[REDACTED] }}\n\n**Generate a web search query to find articles/reports validating this theme.**\n\nOUTPUT: JSON with searchQuery"}]}},"position":[680,304]},{"id":"parse-search-query","name":"Parse Search Query","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const items = $input.all();\nconst output = [];\n\nfor (const item of items) {\n  const aiOutput = item.json;\n  \n  let searchQuery = '';\n  \n  // Parse AI response\n  try {\n    if (aiOutput.output && Array.isArray(aiOutput.output)) {\n      const text = aiOutput.output[0].content[0].text;\n      let jsonStr = text.replace(/^```json\\s*/, '').replace(/```\\s*$/, '').trim();\n      const parsed = JSON.parse(jsonStr.match(/\\{[\\s\\S]*\\}/)[0]);\n      searchQuery = parsed.searchQuery || '';\n    }\n  } catch (e) {\n    searchQuery = '';\n  }\n  \n  output.push({\n    json: {\n      ...item.json,\n      searchQuery: searchQuery\n    }\n  });\n}\n\nreturn output;"},"position":[900,304]},{"id":"web-search","name":"Search Web for Reports","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","method":"GET","options":{},"authentication":"[REDACTED]","genericAuthType":"[REDACTED]"},"position":[1120,304]},{"id":"validate-reports","name":"AI: Validate Reports","type":"@n8n/n8n-nodes-langchain.openAi","typeVersion":2,"parameters":{"modelId":{"__rl":true,"mode":"list","value":"chatgpt-4o-latest"},"responses":{"values":[{"role":"system","content":"You are a fact-checking analyst for market intelligence.\n\n**YOUR TASK:**\nReview search results and determine if they VALIDATE or CONTRADICT the proposed market theme.\n\n**VALIDATION CRITERIA:**\n✅ SUPPORTS: Article discusses similar trends, patterns, or activities in the theme\n✅ SUPPORTS: Statistics, quotes, or analysis align with the theme\n✅ SUPPORTS: Timing matches (2024-2025 timeframe)\n\n❌ CONTRADICTS: Article says opposite trend (e.g., theme says M&A up, article says M&A down)\n❌ CONTRADICTS: Article is outdated (2020-2022) and landscape has changed\n\n⚠️ NEUTRAL: Article is tangentially related but doesn't validate the specific pattern\n\n**YOUR OUTPUT:**\n{\n  \"verdict\": \"SUPPORTS\" or \"CONTRADICTS\" or \"NEUTRAL\",\n  \"bestSource\": {\n    \"title\": \"Article title\",\n    \"url\": \"https://...\",\n    \"excerpt\": \"Key quote or stat that validates the theme (1-2 sentences)\",\n    \"relevanceScore\": 1-10\n  },\n  \"reasoning\": \"Why this source validates/contradicts the theme (1 sentence)\"\n}\n\n**IF NO GOOD SOURCES:**\n{\n  \"verdict\": \"NO_EVIDENCE\",\n  \"bestSource\": null,\n  \"reasoning\": \"No credible sources found to validate this theme\"\n}"},{"content":"=**THEME TO VALIDATE:**\nTheme: {{ $json.Theme }}\nSub-Theme: {{ $json.Sub_Theme }}\nDescription: {{ $json.[REDACTED] }}\nCompany Count: {{ $json.Company_Count }}\n\n**SEARCH RESULTS:**\n{{ JSON.stringify($json.web?.results || [], null, 2) }}\n\n**YOUR TASK:**\n1. Review these search results\n2. Determine if they SUPPORT, CONTRADICT, or are NEUTRAL to the theme\n3. Pick the BEST source (most credible, most relevant)\n4. Extract a key excerpt that validates the theme\n\n**OUTPUT:** JSON with verdict, bestSource, and reasoning"}]}},"position":[1340,304]},{"id":"format-validation","name":"Format Validation Results","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const items = $input.all();\nconst output = [];\n\nfor (const item of items) {\n  const aiOutput = item.json;\n  \n  let validation = null;\n  \n  // Parse AI validation\n  try {\n    if (aiOutput.output && Array.isArray(aiOutput.output)) {\n      const text = aiOutput.output[0].content[0].text;\n      let jsonStr = text.replace(/^```json\\s*/, '').replace(/```\\s*$/, '').trim();\n      validation = JSON.parse(jsonStr.match(/\\{[\\s\\S]*\\}/)[0]);\n    }\n  } catch (e) {\n    validation = {\n      verdict: 'ERROR',\n      bestSource: null,\n      reasoning: 'Failed to parse validation'\n    };\n  }\n  \n  output.push({\n    json: {\n      Rank: item.json.Rank,\n      Theme: item.json.Theme,\n      Sub_Theme: item.json.Sub_Theme,\n      [REDACTED]: item.json.[REDACTED],\n      Company_Count: item.json.Company_Count,\n      Post_Excerpt: item.json.Post_Excerpt,\n      Companies: item.json.Companies,\n      Reasoning: item.json.Reasoning,\n      Market_Insight: item.json.Market_Insight,\n      GTM_Connection: item.json.GTM_Connection,\n      Generated_Date: item.json.Generated_Date,\n      \n      // Validation fields\n      Validation_Status: validation.verdict,\n      Report_Title: validation.bestSource?.title || '',\n      Report_URL: validation.bestSource?.url || '',\n      Report_Excerpt: validation.bestSource?.excerpt || '',\n      Report_Relevance: validation.bestSource?.relevanceScore || 0,\n      [REDACTED]: validation.reasoning || ''\n    }\n  });\n}\n\nreturn output;"},"position":[1560,304]},{"id":"filter-supported","name":"Filter: Only SUPPORTS","type":"n8n-nodes-base.filter","typeVersion":2,"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"filter-supports","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.Validation_Status }}","rightValue":"SUPPORTS"}]}},"position":[1780,304]},{"id":"save-validated","name":"Save Validated Posts","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"columns":{"schema":[{"id":"Rank","type":"string","displayName":"Rank"},{"id":"Theme","type":"string","displayName":"Theme"},{"id":"Sub_Theme","type":"string","displayName":"Sub_Theme"},{"id":"[REDACTED]","type":"string","displayName":"[REDACTED]"},{"id":"Company_Count","type":"string","displayName":"Company_Count"},{"id":"Post_Excerpt","type":"string","displayName":"Post_Excerpt"},{"id":"Companies","type":"string","displayName":"Companies"},{"id":"Reasoning","type":"string","displayName":"Reasoning"},{"id":"Market_Insight","type":"string","displayName":"Market_Insight"},{"id":"GTM_Connection","type":"string","displayName":"GTM_Connection"},{"id":"Generated_Date","type":"string","displayName":"Generated_Date"},{"id":"Report_Title","type":"string","displayName":"Report_Title"},{"id":"Report_URL","type":"string","displayName":"Report_URL"},{"id":"Report_Excerpt","type":"string","displayName":"Report_Excerpt"},{"id":"Report_Relevance","type":"string","displayName":"Report_Relevance"},{"id":"[REDACTED]","type":"string","displayName":"[REDACTED]"}],"mappingMode":"autoMapInputData","matchingColumns":[]},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"Validated Posts"},"documentId":{"__rl":true,"mode":"list","value":"[REDACTED]"}},"position":[2000,304]}],"connections":{"Parse Search Query":{"main":[[{"node":"Search Web for Reports","type":"main","index":0}]]},"AI: Validate Reports":{"main":[[{"node":"Format Validation Results","type":"main","index":0}]]},"Filter: Only SUPPORTS":{"main":[[{"node":"Save Validated Posts","type":"main","index":0}]]},"Read Draft Post Ideas":{"main":[[{"node":"AI: Generate Search Query","type":"main","index":0}]]},"Search Web for Reports":{"main":[[{"node":"AI: Validate Reports","type":"main","index":0}]]},"AI: Generate Search Query":{"main":[[{"node":"Parse Search Query","type":"main","index":0}]]},"Format Validation Results":{"main":[[{"node":"Filter: Only SUPPORTS","type":"main","index":0}]]},"When clicking \"Execute workflow\"":{"main":[[{"node":"Read Draft Post Ideas","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"dca3f8dc-aa8c-4a2e-b6df-22e8b0a1934c","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:42.703Z","createdAt":"2026-02-16T10:13:42.703Z","role":"workflow:owner","workflowId":"Y73F6WpAODKUaY6u","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Search Web for Reports","updates":{"parameters":{"url":"https://api.production.com/v2"}}}]


workflow_id: BPxZrkSoGVAZbWrD
workflow_name: Test_U1-11
trigger: partial_update
created_at: 2026-02-16 10:13:51
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:40.038Z","createdAt":"2026-02-16T10:13:40.038Z","id":"BPxZrkSoGVAZbWrD","name":"Test_U1-11","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook1","name":"Webhook Trigger","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"execute-update","httpMethod":"POST","responseMode":"lastNode"},"position":[240,300]},{"id":"backup1","name":"Backup Workflows","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","options":{"allowUnauthorizedCerts":"[REDACTED]"},"authentication":"[REDACTED]","nodeCredentialType":"[REDACTED]"},"position":[460,300]},{"id":"create1","name":"Create Backup File","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const workflowData = $input.first().json.data;\nconst formattedJson = JSON.stringify(workflowData, null, 2);\nconst fileName = `n8n-backup-${new Date().toISOString().split('T')[0]}.json`;\nreturn [{ json: { fileName: fileName }, binary: { data: { data: Buffer.from(formattedJson).toString('base64'), mimeType: 'application/json', fileName: fileName } } }];"},"position":[680,300]},{"id":"email1","name":"Send Backup Email","type":"n8n-nodes-base.emailSend","typeVersion":2.1,"parameters":{"options":{"attachments":"data"},"subject":"=n8n Backup - {{ $json.fileName }}","toEmail":"wlcnash@gmail.com","fromEmail":"wlcnash@gmail.com"},"position":[900,300]},{"id":"prepare1","name":"Prepare Upgrade","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const version = $input.first().json.body.version;\nconst approvedBy = $input.first().json.body.approvedBy;\nreturn [{ json: { newImage: 'n8nio/n8n:' + version, version: version, approvedBy: approvedBy } }];"},"position":[1120,300]},{"id":"apply1","name":"Apply Upgrade","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","body":"={{ JSON.stringify({ spec: { template: { spec: { containers: [{ name: 'n8n', image: $json.newImage }] } } } }) }}","method":"PATCH","options":{"allowUnauthorizedCerts":"[REDACTED]"},"sendBody":true,"contentType":"raw","sendHeaders":true,"authentication":"[REDACTED]","rawContentType":"application/[REDACTED]+json","genericAuthType":"[REDACTED]","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/[REDACTED]+json"}]}},"position":[1340,300]},{"id":"success1","name":"Send Success to Discord","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","body":"={{ JSON.stringify({ content: '🔔 ✅ **n8n Successfully Updated** 🔔', embeds: [{ description: 'n8n updated to **' + $('Prepare Upgrade').item.json.version + '** by ' + $('Prepare Upgrade').item.json.approvedBy + '\\n\\nBackup emailed. Deployment restarting.', color: 3066993 }] }) }}","method":"POST","options":{},"sendBody":true,"contentType":"raw","rawContentType":"application/json"},"position":[1560,300]}],"connections":{"Apply Upgrade":{"main":[[{"node":"Send Success to Discord","type":"main","index":0}]]},"Prepare Upgrade":{"main":[[{"node":"Apply Upgrade","type":"main","index":0}]]},"Webhook Trigger":{"main":[[{"node":"Backup Workflows","type":"main","index":0}]]},"Backup Workflows":{"main":[[{"node":"Create Backup File","type":"main","index":0}]]},"Send Backup Email":{"main":[[{"node":"Prepare Upgrade","type":"main","index":0}]]},"Create Backup File":{"main":[[{"node":"Send Backup Email","type":"main","index":0}]]},"Send Success to Discord":{"main":[[]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"69ec2ae5-3350-435a-a544-2f13e1a94f33","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:40.038Z","createdAt":"2026-02-16T10:13:40.038Z","role":"workflow:owner","workflowId":"BPxZrkSoGVAZbWrD","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Send Success to Discord","updates":{"parameters":{"method":"POST"}}}]


workflow_id: j4mpQ8J4gLuJXqXE
workflow_name: Test_U1-12
trigger: partial_update
created_at: 2026-02-16 10:13:51
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:41.044Z","createdAt":"2026-02-16T10:13:41.044Z","id":"j4mpQ8J4gLuJXqXE","name":"Test_U1-12","description":null,"active":false,"isArchived":false,"nodes":[{"id":"manual-trigger","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"list-tables","name":"List All Tables","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  table_schema,\n  table_name,\n  (SELECT COUNT(*) FROM information_schema.columns WHERE columns.table_schema = tables.table_schema AND columns.table_name = tables.table_name) as column_count\nFROM information_schema.tables\nWHERE table_schema NOT IN ('pg_catalog', 'information_schema')\nORDER BY table_schema, table_name;","options":{},"operation":"executeQuery"},"position":[460,200]},{"id":"show-workflow-cache","name":"Show Workflow Cache","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  cache_key,\n  LEFT(cache_value, 200) as cache_preview,\n  metadata,\n  LENGTH(cache_value) as cache_size_bytes,\n  created_at,\n  updated_at\nFROM public.workflow_cache\nORDER BY updated_at DESC;","options":{},"operation":"executeQuery"},"position":[460,380]},{"id":"show-sessions-count","name":"Show Sessions Summary","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  session_id,\n  user_id,\n  COUNT(*) as total_messages,\n  SUM(CASE WHEN vote = 1 THEN 1 ELSE 0 END) as thumbs_up,\n  SUM(CASE WHEN vote = -1 THEN 1 ELSE 0 END) as thumbs_down,\n  MIN(created_at) as first_message,\n  MAX(created_at) as last_message\nFROM pulse_ai.sessions\nGROUP BY session_id, user_id\nORDER BY last_message DESC\nLIMIT 20;","options":{},"operation":"executeQuery"},"position":[460,560]},{"id":"show-recent-qa","name":"Show Recent Q&A","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  session_id,\n  user_id,\n  LEFT(question, 100) as question_preview,\n  LEFT(answer, 100) as answer_preview,\n  step_state,\n  vote,\n  created_at\nFROM pulse_ai.sessions\nORDER BY created_at DESC\nLIMIT 50;","options":{},"operation":"executeQuery"},"position":[680,200]},{"id":"show-user-profiles","name":"Show User Profiles","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  user_id,\n  email,\n  mall_id,\n  profile,\n  created_at\nFROM pulse_ai.user_profiles\nORDER BY created_at DESC;","options":{},"operation":"executeQuery"},"position":[680,380]},{"id":"show-chat-memory","name":"Show Chat Memory (n8n)","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  session_id,\n  type,\n  LEFT(content, 150) as content_preview,\n  created_at\nFROM public.[REDACTED]\nORDER BY created_at DESC\nLIMIT 50;","options":{},"operation":"executeQuery"},"position":[680,560]},{"id":"extract-dict-summary","name":"Extract Dictionary Summary","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"WITH dict_data AS (\n  SELECT \n    cache_key,\n    cache_value::json as dict_json\n  FROM public.workflow_cache\n  WHERE cache_key = '[REDACTED]'\n)\nSELECT \n  cache_key,\n  jsonb_object_keys((dict_json->'[REDACTED]')::jsonb) as table_name\nFROM dict_data\nLIMIT 100;","options":{},"operation":"executeQuery"},"position":[900,200]},{"id":"database-stats","name":"Database Statistics","type":"n8n-nodes-base.postgres","typeVersion":2.5,"parameters":{"query":"SELECT \n  'Total Sessions' as metric,\n  COUNT(DISTINCT session_id)::text as value\nFROM pulse_ai.sessions\nUNION ALL\nSELECT \n  'Total Q&A Pairs' as metric,\n  COUNT(*)::text as value\nFROM pulse_ai.sessions\nUNION ALL\nSELECT \n  'Total Users' as metric,\n  COUNT(*)::text as value\nFROM pulse_ai.user_profiles\nUNION ALL\nSELECT \n  'Cached Dictionaries' as metric,\n  COUNT(*)::text as value\nFROM public.workflow_cache\nUNION ALL\nSELECT \n  'Total Votes' as metric,\n  COUNT(*)::text as value\nFROM pulse_ai.sessions\nWHERE vote != 0;","options":{},"operation":"executeQuery"},"position":[900,380]},{"id":"format-report","name":"Format Report","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Aggregate all results into a comprehensive report\nconst allItems = $input.all();\n\nconst report = {\n  timestamp: new Date().toISOString(),\n  database: 'PostgreSQL - KLP AI Dashboard',\n  sections: {\n    tables: allItems[0]?.json || [],\n    cache: allItems[1]?.json || [],\n    sessions_summary: allItems[2]?.json || [],\n    recent_qa: allItems[3]?.json || [],\n    user_profiles: allItems[4]?.json || [],\n    chat_memory: allItems[5]?.json || [],\n    dictionary_tables: allItems[6]?.json || [],\n    statistics: allItems[7]?.json || []\n  },\n  summary: {\n    total_tables: (allItems[0]?.json || []).length,\n    total_sessions: (allItems[2]?.json || []).length,\n    total_users: (allItems[4]?.json || []).length,\n    cache_entries: (allItems[1]?.json || []).length\n  }\n};\n\nconsole.log('\\n' + '='.repeat(80));\nconsole.log('📊 POSTGRESQL DATABASE INSPECTION REPORT');\nconsole.log('='.repeat(80));\nconsole.log(`Generated: ${report.timestamp}`);\nconsole.log('\\n🗄️  DATABASE TABLES:');\nreport.sections.tables.forEach(t => {\n  console.log(`   - ${t.table_schema}.${t.table_name} (${t.column_count} columns)`);\n});\n\nconsole.log('\\n💾 WORKFLOW CACHE:');\nreport.sections.cache.forEach(c => {\n  console.log(`   - ${c.cache_key}: ${(c.cache_size_bytes / 1024).toFixed(2)} KB`);\n  console.log(`     Updated: ${c.updated_at}`);\n});\n\nconsole.log('\\n👥 ACTIVE SESSIONS (Last 20):');\nreport.sections.sessions_summary.slice(0, 5).forEach(s => {\n  console.log(`   - ${s.session_id} (${s.user_id || 'anonymous'})`);\n  console.log(`     Messages: ${s.total_messages}, 👍 ${s.thumbs_up}, 👎 ${s.thumbs_down}`);\n  console.log(`     Last activity: ${s.last_message}`);\n});\n\nconsole.log('\\n📈 DATABASE STATISTICS:');\nreport.sections.statistics.forEach(stat => {\n  console.log(`   ${stat.metric}: ${stat.value}`);\n});\n\nconsole.log('\\n' + '='.repeat(80) + '\\n');\n\nreturn [{ json: report }];"},"position":[1120,300]}],"connections":{"Manual Trigger":{"main":[[{"node":"List All Tables","type":"main","index":0},{"node":"Show Workflow Cache","type":"main","index":0},{"node":"Show Sessions Summary","type":"main","index":0},{"node":"Show Recent Q&A","type":"main","index":0},{"node":"Show User Profiles","type":"main","index":0},{"node":"Show Chat Memory (n8n)","type":"main","index":0},{"node":"Extract Dictionary Summary","type":"main","index":0},{"node":"Database Statistics","type":"main","index":0}]]},"List All Tables":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Show Recent Q&A":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Show User Profiles":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Database Statistics":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Show Workflow Cache":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Show Sessions Summary":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Show Chat Memory (n8n)":{"main":[[{"node":"Format Report","type":"main","index":0}]]},"Extract Dictionary Summary":{"main":[[{"node":"Format Report","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"2cade884-4a04-406c-8969-e5d7ae9fe33e","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:41.045Z","createdAt":"2026-02-16T10:13:41.045Z","role":"workflow:owner","workflowId":"j4mpQ8J4gLuJXqXE","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Show Recent Q&A","updates":{"parameters":{"query":"SELECT \n  session_id,\n  user_id,\n  LEFT(question, 100) as question_preview,\n  LEFT(answer, 100) as answer_preview,\n  step_state,\n  vote,\n  created_at\nFROM events_v2\nORDER BY created_at DESC\nLIMIT 50;"}}}]


workflow_id: r5fXe0hIYvAHIgn2
workflow_name: Test_U1-14
trigger: partial_update
created_at: 2026-02-16 10:13:52
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:46.842Z","createdAt":"2026-02-16T10:13:46.842Z","id":"r5fXe0hIYvAHIgn2","name":"Test_U1-14","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-tool","name":"Quando chamado","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"send-whatsapp","options":{},"httpMethod":"POST","responseMode":"lastNode"},"position":[240,300]},{"id":"code-format","name":"Processar Dados","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Extrair parâmetros do input\nconst inputData = $input.item.json;\nconst numero = inputData.numero || inputData.number || '';\nconst texto = inputData.texto || inputData.text || '';\n\n// Validar parâmetros\nif (!texto || texto.trim() === '') {\n  throw new Error('Parâmetro \"texto\" é obrigatório');\n}\n\nif (!numero || numero.trim() === '') {\n  throw new Error('Parâmetro \"numero\" é obrigatório');\n}\n\n// Formatar número para WhatsApp\nlet numeroFormatado = numero.toString();\n\n// Se já tem @s.whatsapp.net, usar como está\nif (numeroFormatado.includes('@s.whatsapp.net')) {\n  return {\n    numero: numeroFormatado,\n    texto: texto.trim()\n  };\n}\n\n// Remover caracteres especiais\nnumeroFormatado = numeroFormatado.replace(/[^0-9]/g, '');\n\n// Adicionar código do país (55 para Brasil) se não tiver\nif (!numeroFormatado.startsWith('55')) {\n  numeroFormatado = '55' + numeroFormatado;\n}\n\n// Adicionar sufixo do WhatsApp\nnumeroFormatado = numeroFormatado + '@s.whatsapp.net';\n\nreturn {\n  numero: numeroFormatado,\n  texto: texto.trim()\n};"},"position":[460,300]},{"id":"http-send","name":"Enviar WhatsApp","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","method":"POST","options":{},"jsonBody":"={{ { \"number\": $json.numero, \"text\": $json.texto } }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"apikey","value":"[REDACTED]"},{"name":"Content-Type","value":"application/json"}]}},"position":[680,300]},{"id":"code-response","name":"Formatar Resposta","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Verificar se a requisição foi bem sucedida\nconst statusCode = $input.item.json.statusCode || 200;\n\nif (statusCode >= 200 && statusCode < 300) {\n  return {\n    success: true,\n    message: '✅ Mensagem enviada com sucesso!'\n  };\n} else {\n  return {\n    success: false,\n    message: '❌ Erro ao enviar mensagem: ' + JSON.stringify($input.item.json)\n  };\n}"},"position":[900,300]}],"connections":{"Quando chamado":{"main":[[{"node":"Processar Dados","type":"main","index":0}]]},"Enviar WhatsApp":{"main":[[{"node":"Formatar Resposta","type":"main","index":0}]]},"Processar Dados":{"main":[[{"node":"Enviar WhatsApp","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"438b74e8-1ddf-4660-a62d-c46ab9b0ded5","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:46.844Z","createdAt":"2026-02-16T10:13:46.844Z","role":"workflow:owner","workflowId":"r5fXe0hIYvAHIgn2","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Enviar WhatsApp","updates":{"parameters":{"url":"https://api.production.com/v2"}}}]


workflow_id: Mi0hi2z1orCP0MO3
workflow_name: Test_U1-15
trigger: partial_update
created_at: 2026-02-16 10:13:57
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:50.573Z","createdAt":"2026-02-16T10:13:50.573Z","id":"Mi0hi2z1orCP0MO3","name":"Test_U1-15","description":null,"active":false,"isArchived":false,"nodes":[{"id":"trigger-manual","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[-400,0]},{"id":"calculate-dates","name":"Calculate Date Range","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Calculate previous month's date range\nconst now = new Date();\nconst firstDayOfThisMonth = new Date(now.getFullYear(), now.getMonth(), 1);\nconst lastDayOfLastMonth = new Date(firstDayOfThisMonth.getTime() - 1);\nconst firstDayOfLastMonth = new Date(lastDayOfLastMonth.getFullYear(), lastDayOfLastMonth.getMonth(), 1);\nconst endOfLastMonth = new Date(lastDayOfLastMonth.getFullYear(), lastDayOfLastMonth.getMonth() + 1, 0, 23, 59, 59);\n\n// Format dates for Stripe API (Unix timestamp)\nconst startTimestamp = Math.floor(firstDayOfLastMonth.getTime() / 1000);\nconst endTimestamp = Math.floor(endOfLastMonth.getTime() / 1000);\n\n// Format date for Xero (YYYY-MM-DD)\nconst journalDate = endOfLastMonth.toISOString().split('T')[0];\n\n// Get month name\nconst monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst monthName = monthNames[lastDayOfLastMonth.getMonth()];\n\nreturn [{\n  json: {\n    startTimestamp: startTimestamp,\n    endTimestamp: endTimestamp,\n    startDate: firstDayOfLastMonth.toISOString().split('T')[0],\n    endDate: endOfLastMonth.toISOString().split('T')[0],\n    journalDate: journalDate,\n    monthName: monthName\n  }\n}];","language":"javaScript"},"position":[0,0]},{"id":"create-stripe-report","name":"Create Stripe Balance Report","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/v1/reporting/report_runs","method":"POST","options":{},"sendBody":true,"contentType":"form-urlencoded","authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"report_type","value":"balance"},{"name":"parameters[interval_start]","value":"={{ $json.startTimestamp }}"},{"name":"parameters[interval_end]","value":"={{ $json.endTimestamp }}"},{"name":"parameters[currency]","value":"nzd"}]},"nodeCredentialType":"[REDACTED]"},"position":[400,0]},{"id":"wait-for-report","name":"Wait for Report Completion","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Check if report is ready, if not wait and poll\nconst reportRun = $input.item.json;\n\nif (reportRun.status === 'succeeded') {\n  return [{ json: reportRun }];\n} else if (reportRun.status === 'pending' || reportRun.status === 'running') {\n  // In a real implementation, you'd want to add a Wait node and loop back\n  // For now, we'll return the report_run_id to check status\n  return [{ json: { reportRunId: reportRun.id, status: reportRun.status, needsPolling: true } }];\n} else {\n  throw new Error(`Report generation failed with status: ${reportRun.status}`);\n}","language":"javaScript"},"position":[800,0]},{"id":"get-report-data","name":"Get Stripe Report Data","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.stripe.com/v1/reporting/report_runs/{{ $json.id }}/file","method":"GET","options":{"response":{"response":{"responseFormat":"file"}}},"authentication":"[REDACTED]","nodeCredentialType":"[REDACTED]"},"position":[1200,0]},{"id":"parse-report","name":"Parse Stripe Report","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Parse the CSV report data\n// Based on Stripe Balance report structure\nconst reportData = $input.item.json.data || $input.item.json;\n\n// Initialize amounts\nlet sales = 0;\nlet refunds = 0;\nlet [REDACTED] = 0;\nlet saasFees = 0;\nlet balance = 0;\n\n// If we have CSV data, parse it\nif (typeof reportData === 'string') {\n  // CSV parsing logic would go here\n  // For now, we'll structure the data based on typical Stripe balance report fields\n  const lines = reportData.split('\\n');\n  // Parse CSV and extract values\n  // This is a placeholder - actual parsing depends on Stripe report format\n}\n\n// For now, return structure with placeholders\n// In production, parse actual CSV/JSON from Stripe\nreturn [{\n  json: {\n    sales: sales,\n    refunds: refunds,\n    [REDACTED]: [REDACTED],\n    saasFees: saasFees,\n    balance: balance,\n    monthName: $('Calculate Date Range').item.json.monthName,\n    journalDate: $('Calculate Date Range').item.json.journalDate\n  }\n}];","language":"javaScript"},"position":[1600,0]},{"id":"transform-for-xero","name":"Transform Data for Xero","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Transform Stripe data into Xero Manual Journal format\nconst data = $input.item.json;\nconst monthName = data.monthName;\n\n// Calculate GST amounts (15%)\nconst gstRate = 0.15;\n\n// Sales: Credit, Account 200, 15% GST on Income\nconst salesAmount = Math.abs(data.sales || 0);\nconst salesGST = salesAmount * gstRate / (1 + gstRate);\nconst salesNet = salesAmount - salesGST;\n\n// Refunds: Debit, Account 200, 15% GST on Income\nconst refundsAmount = Math.abs(data.refunds || 0);\nconst refundsGST = refundsAmount * gstRate / (1 + gstRate);\nconst refundsNet = refundsAmount - refundsGST;\n\n// Payment processing fees: Debit, Account 405, No GST\nconst paymentFeesAmount = Math.abs(data.[REDACTED] || 0);\n\n// SaaS fees: Debit, Account 406, 15% GST on Expenses\nconst saasFeesAmount = Math.abs(data.saasFees || 0);\nconst saasFeesGST = saasFeesAmount * gstRate / (1 + gstRate);\nconst saasFeesNet = saasFeesAmount - saasFeesGST;\n\n// Balance: Debit, Account 640, No GST\nconst balanceAmount = Math.abs(data.balance || 0);\n\n// Build journal lines\nconst journalLines = [];\n\n// 1. Sales\nif (salesAmount > 0) {\n  journalLines.push({\n    Description: `${monthName} Stripe Transactions - Sales`,\n    AccountCode: '200',\n    TaxType: 'GST on Income',\n    LineAmount: salesNet,\n    TaxAmount: salesGST\n  });\n}\n\n// 2. Refunds\nif (refundsAmount > 0) {\n  journalLines.push({\n    Description: `${monthName} Stripe Transactions - Refunds`,\n    AccountCode: '200',\n    TaxType: 'GST on Income',\n    LineAmount: -refundsNet, // Negative for debit\n    TaxAmount: -refundsGST\n  });\n}\n\n// 3. Payment processing fees\nif (paymentFeesAmount > 0) {\n  journalLines.push({\n    Description: `${monthName} Stripe Transactions - Stripe payment processing fees`,\n    AccountCode: '405',\n    TaxType: 'No GST',\n    LineAmount: -paymentFeesAmount, // Negative for debit\n    TaxAmount: 0\n  });\n}\n\n// 4. SaaS fees\nif (saasFeesAmount > 0) {\n  journalLines.push({\n    Description: `${monthName} Stripe Transactions - Stripe SaaS fees`,\n    AccountCode: '406',\n    TaxType: 'GST on Expenses',\n    LineAmount: -saasFeesNet, // Negative for debit\n    TaxAmount: -saasFeesGST\n  });\n}\n\n// 5. Balance\nif (balanceAmount > 0) {\n  journalLines.push({\n    Description: `${monthName} Stripe Transactions - Stripe Balance`,\n    AccountCode: '640',\n    TaxType: 'No GST',\n    LineAmount: -balanceAmount, // Negative for debit\n    TaxAmount: 0\n  });\n}\n\nreturn [{\n  json: {\n    ManualJournals: [{\n      Narration: `${monthName} Stripe Transactions`,\n      Date: data.journalDate,\n      JournalLines: journalLines,\n      [REDACTED]: true\n    }]\n  }\n}];","language":"javaScript"},"position":[2000,0]},{"id":"create-xero-journal","name":"Create Xero Manual Journal","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/api.xro/2.0/ManualJournals","body":"={{ JSON.stringify($json) }}","method":"POST","options":{},"sendBody":true,"contentType":"json","authentication":"[REDACTED]","nodeCredentialType":"[REDACTED]"},"position":[2400,0]},{"id":"check-errors","name":"Check for Errors","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"error-check","operator":{"type":"number","operation":"notEqual"},"leftValue":"={{ $json.statusCode }}","rightValue":"200"}]}},"position":[2800,0]}],"connections":{"Manual Trigger":{"main":[[{"node":"Calculate Date Range","type":"main","index":0}]]},"Parse Stripe Report":{"main":[[{"node":"Transform Data for Xero","type":"main","index":0}]]},"Calculate Date Range":{"main":[[{"node":"Create Stripe Balance Report","type":"main","index":0}]]},"Get Stripe Report Data":{"main":[[{"node":"Parse Stripe Report","type":"main","index":0}]]},"Transform Data for Xero":{"main":[[{"node":"Create Xero Manual Journal","type":"main","index":0}]]},"Create Xero Manual Journal":{"main":[[{"node":"Check for Errors","type":"main","index":0}]]},"Wait for Report Completion":{"main":[[{"node":"Get Stripe Report Data","type":"main","index":0}]]},"Create Stripe Balance Report":{"main":[[{"node":"Wait for Report Completion","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"e001ee12-da9e-46d7-a12f-0309b1a9bcd9","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:50.574Z","createdAt":"2026-02-16T10:13:50.574Z","role":"workflow:owner","workflowId":"Mi0hi2z1orCP0MO3","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Get Stripe Report Data","updates":{"parameters":{"method":"POST"}}}]


workflow_id: s8xrepisA7hmNbpM
workflow_name: Test_U2-02
trigger: partial_update
created_at: 2026-02-16 10:14:09
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:54.829Z","createdAt":"2026-02-16T10:13:54.829Z","id":"s8xrepisA7hmNbpM","name":"Test_U2-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule2","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":24}]}},"position":[240,300]},{"id":"http4","name":"Get Cases For Deletion","type":"n8n-nodes-base.httpRequest","typeVersion":4,"parameters":{"url":"[REDACTED]","method":"GET","sendQuery":true,"authentication":"[REDACTED]","genericAuthType":"[REDACTED]","queryParameters":{"parameters":[{"name":"status","value":"eq.Complete"},{"name":"deletion_date","value":"lte.={{ new Date().toISOString() }}"},{"name":"select","value":"*"}]}},"position":[460,300]},{"id":"http5","name":"Get Uploaded Files","type":"n8n-nodes-base.httpRequest","typeVersion":4,"parameters":{"url":"[REDACTED]","method":"GET","sendQuery":true,"authentication":"[REDACTED]","genericAuthType":"[REDACTED]","queryParameters":{"parameters":[{"name":"case_id","value":"eq.={{ $json.id }}"},{"name":"select","value":"*"}]}},"position":[680,300]},{"id":"function3","name":"Delete Files","type":"n8n-nodes-base.function","typeVersion":1,"parameters":{"functionCode":"const caseId = $('Get Cases For Deletion').first().json.id;\nconst files = $input.all()[0].json;\nconst [REDACTED],\n      url: `https://[REDACTED].supabase.co/storage/v1/object/case-files/${file.file_path}`,\n      headers: {\n        '[REDACTED],\n        'Authorization': `[REDACTED]\n      }\n    });\n  } catch (error) {\n    console.log(`Failed to delete ${file.file_path}:`, error.message);\n  }\n}\n\nreturn [{json: {caseId, deletedCount: files.length}}];"},"position":[900,300]},{"id":"http6","name":"Mark Archived","type":"n8n-nodes-base.httpRequest","typeVersion":4,"parameters":{"url":"[REDACTED]","method":"PATCH","sendBody":true,"sendQuery":true,"authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"status","value":"Archived/Deleted"},{"name":"deletion_executed","value":"={{ new Date().toISOString() }}"}]},"genericAuthType":"[REDACTED]","queryParameters":{"parameters":[{"name":"id","value":"eq.={{ $json.caseId }}"}]}},"position":[1120,300]}],"connections":{"Delete Files":{"main":[[{"node":"Mark Archived","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get Cases For Deletion","type":"main","index":0}]]},"Get Uploaded Files":{"main":[[{"node":"Delete Files","type":"main","index":0}]]},"Get Cases For Deletion":{"main":[[{"node":"Get Uploaded Files","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"85830d20-af0f-4286-af4f-9d5f39c74fe3","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:54.829Z","createdAt":"2026-02-16T10:13:54.829Z","role":"workflow:owner","workflowId":"s8xrepisA7hmNbpM","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"noop_log","name":"Log Execution Start","type":"n8n-nodes-base.noOp","typeVersion":1,"parameters":{"options":{"continueOnFail":false}},"position":[340,300],"onFirst":"all"}},{"type":"addConnection","source":"Schedule Trigger","target":"Log Execution Start"}]


workflow_id: hwWOCevoz3sAVUKm
workflow_name: Test_U2-03
trigger: partial_update
created_at: 2026-02-16 10:14:15
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:56.050Z","createdAt":"2026-02-16T10:13:56.050Z","id":"hwWOCevoz3sAVUKm","name":"Test_U2-03","description":null,"active":false,"isArchived":false,"nodes":[{"id":"f2569714-7c15-4d91-ad2a-e8ae1ccfe2e0","name":"When Executed by Another Workflow","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1.1,"parameters":{"workflowInputs":{"values":[{"name":"prompt"}]}},"position":[0,0]},{"id":"72af5994-6eb6-4532-8f18-07b32e5c05b2","name":"Validate prompt","type":"n8n-nodes-base.if","typeVersion":1,"parameters":{"conditions":{"string":[{"value1":"={{ $json.prompt }}","operation":"isEmpty"}]}},"position":[200,0]},{"id":"99c65f8c-1b9a-4f09-81e0-11aa8f367c2e","name":"Set Error","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"[REDACTED_TOKEN]","name":"error","type":"boolean","value":"true"},{"id":"[REDACTED_TOKEN]","name":"message","type":"string","value":"Prompt is required"}]}},"position":[400,-80]},{"id":"7d0253ff-2b87-4b40-b5b0-7683c9d3f712","name":"GPT 4.1-mini4","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","typeVersion":1,"parameters":{"options":{}},"position":[200,200]},{"id":"73637581-f917-4695-a0d6-a5b4a9f29082","name":"Web Agent","type":"@n8n/n8n-nodes-langchain.agent","typeVersion":2.2,"parameters":{"text":"={{ $json.prompt }}","onError":"continueErrorOutput","options":{"systemMessage":"=# Overview\\nYou are a web research assistant. Your responsibilities include conducting quick web searches, performing deeper research, and retrieving current weather information. \\n\\n## Web Search & Research \\n   - Use Tavily for quick factual lookups, recent news, or verifying specific pieces of information.  \\n   - Use Perplexity when a question requires deeper research, multiple perspectives, or synthesized answers from various sources.  \\n\\n## Weather Information  \\n   - Use Open Weather Map to retrieve current weather data, including temperature, conditions, and forecasts for a given location."},"promptType":"define","needsFallback":false,"returnIntermediateSteps":true},"position":[400,200]},{"id":"311bd7b8-28e2-49f9-a533-b6da70ff4dcc","name":"Tavily","type":"@tavily/n8n-nodes-tavily.tavilyTool","typeVersion":1,"parameters":{"query":"={{ /*[REDACTED_TOKEN]*/ $fromAI(\"Query\", \"\", \"string\") }}","options":{}},"position":[620,120]},{"id":"61cc33fb-0ce6-48b4-bcfa-fcb72304a566","name":"Perplexity","type":"n8n-nodes-base.perplexityTool","typeVersion":1,"parameters":{"model":"sonar","options":{},"messages":{"message":[{"content":"={{ /*[REDACTED_TOKEN]*/ $fromAI(\"message0_Text\", \"\", \"string\") }}"}]},"requestOptions":{}},"position":[620,200]},{"id":"36ec5f66-95a4-4fc6-8e12-4e7229724fa8","name":"OpenWeatherMap","type":"n8n-nodes-base.openWeatherMapTool","typeVersion":1,"parameters":{"format":"imperial","cityName":"={{ /*[REDACTED_TOKEN]*/ $fromAI(\"City\", \"City name, no state\", \"string\") }}","language":"en"},"position":[620,280]}],"connections":{"Web Agent":{"main":[[{"node":"Tavily","type":"main","index":0}],[{"node":"Perplexity","type":"main","index":0}],[{"node":"OpenWeatherMap","type":"main","index":0}]],"ai_tool":[[{"node":"Tavily","type":"ai_tool","index":0}],[{"node":"Perplexity","type":"ai_tool","index":0}],[{"node":"OpenWeatherMap","type":"ai_tool","index":0}]]},"GPT 4.1-mini4":{"ai_languageModel":[[{"node":"Web Agent","type":"ai_languageModel","index":0}]]},"Validate prompt":{"main":[[{"node":"Set Error","type":"main","index":0}],[{"node":"Web Agent","type":"main","index":0}]]},"When Executed by Another Workflow":{"main":[[{"node":"Validate prompt","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"7a9912f0-95be-4b30-bf29-c04fff556de9","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:56.050Z","createdAt":"2026-02-16T10:13:56.050Z","role":"workflow:owner","workflowId":"hwWOCevoz3sAVUKm","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"additional-filter-001","name":"Additional Data Validation","type":"n8n-nodes-base.if","typeVersion":1,"parameters":{"conditions":{"string":[{"value1":"={{ $json.prompt }}","operation":"lengthGreaterThan","value2":"10"}]}},"position":[300,100]}},{"type":"removeConnection","source":"Validate prompt","target":"Web Agent"},{"type":"addConnection","source":"Validate prompt","target":"Additional Data Validation"},{"type":"addConnection","source":"Additional Data Validation","target":"Web Agent"}]


workflow_id: 1vItdCiMT8TLKQ6o
workflow_name: Test_U2-01
trigger: partial_update
created_at: 2026-02-16 10:14:17
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:13:54.529Z","createdAt":"2026-02-16T10:13:54.529Z","id":"1vItdCiMT8TLKQ6o","name":"Test_U2-01","description":null,"active":false,"isArchived":false,"nodes":[{"id":"trigger","name":"Hourly Check","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":1}]}},"position":[250,300]},{"id":"check","name":"Check What To Send","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const now = new Date();\nconst hour = now.getHours();\nconst day = now.getDay();\nconst date = now.getDate();\nconst month = now.getMonth() + 1;\n\nlet type = null;\n\nif (hour === 9 && date === 1 && [1, 4, 7, 10].includes(month)) {\n  type = 'quarterly';\n} else if (hour === 9 && date === 1) {\n  type = 'monthly';\n} else if (hour === 13 && day === 0) {\n  type = 'weekly';\n} else if (hour === 8) {\n  type = 'daily';\n}\n\nif (!type) {\n  return [];\n}\n\nreturn [{ json: { type, timestamp: now.toISOString() } }];"},"position":[450,300]},{"id":"switch","name":"Route By Type","type":"n8n-nodes-base.switch","typeVersion":2,"parameters":{"options":{},"conditions":{"string":[{"value1":"={{ $json.type }}","value2":"daily"},{"value1":"={{ $json.type }}","value2":"weekly"},{"value1":"={{ $json.type }}","value2":"monthly"},{"value1":"={{ $json.type }}","value2":"quarterly"}]}},"position":[650,300]},{"id":"daily","name":"Daily Message","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const today = new Date();\nconst day = today.toLocaleDateString('en-US', { weekday: 'long' });\nconst date = today.toDateString();\n\nreturn [{ json: {\n  chat_id: '6468387961',\n  text: `Good morning, Shelly! 🌅\\n\\n${day}, ${date}\\n\\nYour daily reminder:\\n✅ Build. Ship. Scale.\\n✅ Simple Plan on track\\n✅ CHS infrastructure growing\\n✅ You've got this!\\n\\n💪 Focus today: Make progress, not perfection.`,\n  parse_mode: 'Markdown'\n}}];"},"position":[850,200]},{"id":"weekly","name":"Weekly Message","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const today = new Date();\nconst date = today.toDateString();\n\nreturn [{ json: {\n  chat_id: '6468387961',\n  text: `Good afternoon, Shelly! 📊\\n\\n*WEEKLY REVIEW* - ${date}\\n\\n📅 *THIS WEEK'S FOCUS:*\\n• Simple Plan beta launch prep\\n• CHS infrastructure documentation\\n• Client check-ins\\n\\n🎯 *PROJECT STATUS:*\\n• Simple Plan: Beta testing phase\\n• CHS: Template system building\\n• IDLW/Glen: Partnership systems\\n\\n💪 *Remember:* Progress over perfection.\\n\\n📆 Check your calendar for upcoming meetings!`,\n  parse_mode: 'Markdown'\n}}];"},"position":[850,300]},{"id":"monthly","name":"Monthly Message","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const today = new Date();\nconst month = today.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n\nreturn [{ json: {\n  chat_id: '6468387961',\n  text: `Monthly Check-in for ${month} 🗓️\\n\\n*LAST MONTH YOU:*\\n• Built CHS infrastructure foundations\\n• Advanced Simple Plan project\\n• Strengthened automation systems\\n\\n*THIS MONTH FOCUS ON:*\\n• Client deliverables\\n• Revenue generation\\n• System documentation\\n\\n🎯 *Q4 2025 GOALS STATUS:*\\n• Track towards monthly income targets\\n• Build reusable client systems\\n• Strengthen partnerships\\n\\n💪 Keep building momentum!`,\n  parse_mode: 'Markdown'\n}}];"},"position":[850,400]},{"id":"quarterly","name":"Quarterly Message","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const today = new Date();\nconst quarter = Math.floor((today.getMonth()) / 3) + 1;\nconst year = today.getFullYear();\n\nreturn [{ json: {\n  chat_id: '6468387961',\n  text: `🚀 *QUARTERLY PLANNING SESSION*\\n\\nQ${quarter} ${year} Planning Time!\\n\\n*REVIEW LAST QUARTER:*\\n• What worked?\\n• What didn't?\\n• Key wins\\n• Lessons learned\\n\\n*PLAN THIS QUARTER:*\\n• Revenue goals\\n• Client priorities\\n• Infrastructure builds\\n• Partnership focus\\n\\n📋 *ACTION ITEM:*\\nBlock 2 hours this week for deep quarterly planning.\\n\\nReply with your Q${quarter} focus areas!`,\n  parse_mode: 'Markdown'\n}}];"},"position":[850,500]},{"id":"telegram","name":"Send to Telegram","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","method":"POST","options":{},"sendBody":true,"contentType":"json","authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"chat_id","value":"={{ $json.chat_id }}"},{"name":"text","value":"={{ $json.text }}"},{"name":"parse_mode","value":"={{ $json.parse_mode }}"}]}},"position":[1050,300]}],"connections":{"Hourly Check":{"main":[[{"node":"Check What To Send","type":"main","index":0}]]},"Daily Message":{"main":[[{"node":"Send to Telegram","type":"main","index":0}]]},"Route By Type":{"main":[[{"node":"Daily Message","type":"main","index":0}],[{"node":"Weekly Message","type":"main","index":0}],[{"node":"Monthly Message","type":"main","index":0}],[{"node":"Quarterly Message","type":"main","index":0}]]},"Weekly Message":{"main":[[{"node":"Send to Telegram","type":"main","index":0}]]},"Monthly Message":{"main":[[{"node":"Send to Telegram","type":"main","index":0}]]},"Quarterly Message":{"main":[[{"node":"Send to Telegram","type":"main","index":0}]]},"Check What To Send":{"main":[[{"node":"Route By Type","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"465216e5-a23f-47f6-9da1-f49094d55495","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:13:54.529Z","createdAt":"2026-02-16T10:13:54.529Z","role":"workflow:owner","workflowId":"1vItdCiMT8TLKQ6o","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"slack-notify","name":"Slack Notification","type":"n8n-nodes-base.slack","typeVersion":3.2,"parameters":{"channel":"6468387961","text":"Workflow completed successfully","additionalFields":{}},"position":[1050,300]}},{"type":"addConnection","source":"Daily Message","target":"Slack Notification"},{"type":"addConnection","source":"Weekly Message","target":"Slack Notification"},{"type":"addConnection","source":"Monthly Message","target":"Slack Notification"}]


workflow_id: kUTyay9oCQyDeDQL
workflow_name: Test_U2-07
trigger: partial_update
created_at: 2026-02-16 10:14:25
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:09.400Z","createdAt":"2026-02-16T10:14:09.400Z","id":"kUTyay9oCQyDeDQL","name":"Test_U2-07","description":null,"active":false,"isArchived":false,"nodes":[{"id":"Cron_Trigger","name":"Daily Check","type":"n8n-nodes-base.cron","typeVersion":1,"parameters":{"options":{"timezone":"Europe/London"},"triggerTimes":[{"mode":"custom","cronExpression":"15 10 * * *"}]},"position":[200,300]},{"id":"Function_PrepareWindow","name":"Prepare Target Window","type":"n8n-nodes-base.function","typeVersion":2,"parameters":{"functionCode":"const now = new Date();\nconst year = now.getUTCFullYear();\nconst dec21ThisYear = new Date(Date.UTC(year, 11, 21, 0, 0, 0));\nconst startYear = now <= dec21ThisYear ? year : year + 1;\nconst start = new Date(Date.UTC(startYear, 11, 21, 0, 0, 0));\nconst end = new Date(Date.UTC(startYear + 1, 0, 2, 23, 59, 59));\nconst label = `${start.toISOString().slice(0, 10)} → ${end.toISOString().slice(0, 10)}`;\nreturn [{ json: { start: start.toISOString(), end: end.toISOString(), label, startYear } }];"},"position":[420,300]},{"id":"Http_FetchCalendar","name":"Fetch Calendar","type":"n8n-nodes-base.httpRequest","typeVersion":1,"parameters":{"url":"[REDACTED]","responseFormat":"json","queryParametersUi":{"parameter":[{"name":"_format","value":"extended"},{"name":"start_datetime._gte","value":"={{$json.start}}"},{"name":"start_datetime._lte","value":"={{$json.end}}"}]}},"position":[620,300]},{"id":"Function_Filter","name":"Filter Availability","type":"n8n-nodes-base.function","typeVersion":2,"parameters":{"functionCode":"const range = $node[\"Prepare Target Window\"].json;\nconst calendar = items[0].json?.calendar?._data ?? [];\nconst excluded = new Set([\"sold_out\",\"not_on_sale\",\"in_the_past\",\"closed\",\"cancelled\"]);\nconst matches = calendar\n  .map(entry => {\n    const status = entry.status ?? entry.state ?? \"\";\n    const dateIso = entry.start_datetime ?? entry.startDatetime ?? entry.date ?? null;\n    const display = dateIso\n      ? new Date(dateIso).toLocaleString(\"en-GB\", { timeZone: \"Europe/London\", dateStyle: \"medium\", timeStyle: \"short\" })\n      : (entry.date ?? \"Unknown slot\");\n    return {\n      status,\n      dateIso,\n      display,\n      raw: entry,\n    };\n  })\n  .filter(entry => entry.status && !excluded.has(entry.status));\nreturn [{ json: { range, matches, count: matches.length } }];"},"position":[820,300]},{"id":"If_Availability","name":"Availability?","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"conditions":{"number":[{"value1":"={{$json.count}}","value2":0,"operation":"larger"}]}},"position":[1020,300]},{"id":"Function_Compose","name":"Compose Telegram Message","type":"n8n-nodes-base.function","typeVersion":2,"parameters":{"functionCode":"const { matches, range } = items[0].json;\nconst lines = matches.map(entry => {\n  const status = entry.status ? entry.status.replace(/_/g, \" \") : \"available\";\n  return `• ${entry.display} — ${status}`;\n});\nconst text = [\n  \"🎟️ Horizon 22 tickets available!\",\n  `Window: ${range.label}`,\n  \"\",\n  lines.join(\"\\n\"),\n  \"\",\n  \"Book: https://tickets.horizon22.co.uk/events/[REDACTED]\"\n].filter(Boolean).join(\"\\n\");\nreturn [{ json: { text, matches } }];"},"position":[1240,200]},{"id":"Telegram_Send","name":"Send Telegram","type":"n8n-nodes-base.telegram","typeVersion":1,"parameters":{"text":"={{$json.text}}","chatId":"YOUR_CHAT_ID","additionalFields":{"parseMode":"Markdown"}},"position":[1460,200]},{"id":"Function_NoAvailability","name":"No Availability Log","type":"n8n-nodes-base.function","typeVersion":2,"parameters":{"functionCode":"const range = $node[\"Prepare Target Window\"].json;\nreturn [{ json: { message: `No Horizon 22 tickets available for ${range.label}` } }];"},"position":[1240,420]}],"connections":{"Daily Check":{"main":[[{"node":"Prepare Target Window","type":"main","index":0}]]},"Availability?":{"main":[[{"node":"Compose Telegram Message","type":"main","index":0}],[{"node":"No Availability Log","type":"main","index":0}]]},"Fetch Calendar":{"main":[[{"node":"Filter Availability","type":"main","index":0}]]},"Filter Availability":{"main":[[{"node":"Availability?","type":"main","index":0}]]},"Prepare Target Window":{"main":[[{"node":"Fetch Calendar","type":"main","index":0}]]},"Compose Telegram Message":{"main":[[{"node":"Send Telegram","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"7b285232-eaff-40d5-bf53-9449a767b26a","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:09.400Z","createdAt":"2026-02-16T10:14:09.400Z","role":"workflow:owner","workflowId":"kUTyay9oCQyDeDQL","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"Discord_Send","name":"Send Discord Backup","type":"n8n-nodes-base.discord","typeVersion":1,"parameters":{"text":"={{$json.text}}","additionalFields":{}},"position":[1460,400]}},{"type":"addConnection","source":"Compose Telegram Message","target":"Send Discord Backup"}]


workflow_id: U3ONfciwOqVghZDC
workflow_name: Test_U2-04
trigger: partial_update
created_at: 2026-02-16 10:14:26
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:03.026Z","createdAt":"2026-02-16T10:14:03.026Z","id":"U3ONfciwOqVghZDC","name":"Test_U2-04","description":null,"active":false,"isArchived":false,"nodes":[{"id":"workflow_trigger","name":"Execute Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1,"parameters":{},"position":[240,400]},{"id":"get_telegram_file","name":"Get Telegram File Info","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.telegram.org/bot{{ $env.TELEGRAM_BOT_TOKEN }}/getFile?file_id={{ $json.voice_file_id }}","method":"GET","options":{},"authentication":"[REDACTED]"},"position":[460,400]},{"id":"download_audio","name":"Download Audio File","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.telegram.org/file/bot{{ $env.TELEGRAM_BOT_TOKEN }}/{{ $json.result.file_path }}","method":"GET","options":{"response":{"response":{"responseFormat":"file"}}},"authentication":"[REDACTED]"},"position":[680,400]},{"id":"transcribe_whisper","name":"Transcribe with Whisper","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/v1/audio/transcriptions","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"file","value":"={{ $binary.data }}"},{"name":"model","value":"whisper-1"},{"name":"response_format","value":"json"}]},"nodeCredentialType":"[REDACTED]"},"position":[900,400]},{"id":"prepare_log_data","name":"Prepare Log Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Extract input data\nconst triggerData = $('Execute Workflow Trigger').item.json;\nconst transcript = $json.text || '';\n\n// Detect language from transcript\nlet detectedLanguage = 'en';\nif (/[а-яА-ЯёЁ]/.test(transcript)) {\n  detectedLanguage = 'ru';\n} else if (/[\\u0600-\\u06FF]/.test(transcript)) {\n  detectedLanguage = 'ar';\n}\n\n// Prepare data for Google Sheets logging\nconst timestamp = new Date().toISOString();\nconst chatId = triggerData.chat_id || '';\nconst userId = triggerData.user_id || '';\nconst firstName = triggerData.first_name || 'Unknown';\nconst messageId = triggerData.message_id || '';\nconst isAdmin = triggerData.is_admin || false;\n\n// Format for Google Sheets\nreturn {\n  json: {\n    // For Google Sheets append\n    timestamp: timestamp,\n    chat_id: chatId,\n    user_id: userId,\n    first_name: firstName,\n    message_id: messageId,\n    message_type: 'voice',\n    message_content: transcript,\n    detected_language: detectedLanguage,\n    is_admin: isAdmin,\n    \n    // For workflow output\n    _output: {\n      transcribed_text: transcript,\n      detected_language: detectedLanguage,\n      voice_file_id: triggerData.voice_file_id || '',\n      success: true,\n      timestamp: timestamp\n    }\n  }\n};"},"position":[1120,400]},{"id":"log_to_sheets","name":"Log to Google Sheets","type":"n8n-nodes-base.googleSheets","typeVersion":4.5,"parameters":{"columns":{"value":{"chat_id":"={{ $json.chat_id }}","user_id":"={{ $json.user_id }}","is_admin":"={{ $json.is_admin }}","timestamp":"={{ $json.timestamp }}","first_name":"={{ $json.first_name }}","message_id":"={{ $json.message_id }}","message_type":"={{ $json.message_type }}","message_content":"={{ $json.message_content }}","detected_language":"={{ $json.detected_language }}"},"mappingMode":"defineBelow"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"conversation_log"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_SPREADSHEET_ID"}},"position":[1340,400]},{"id":"return_output","name":"Return Transcript","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Return clean output to calling workflow\nconst outputData = $('Prepare Log Data').item.json._output;\n\nreturn {\n  json: outputData\n};"},"position":[1560,400]}],"connections":{"Prepare Log Data":{"main":[[{"node":"Log to Google Sheets","type":"main","index":0}]]},"Download Audio File":{"main":[[{"node":"Transcribe with Whisper","type":"main","index":0}]]},"Log to Google Sheets":{"main":[[{"node":"Return Transcript","type":"main","index":0}]]},"Get Telegram File Info":{"main":[[{"node":"Download Audio File","type":"main","index":0}]]},"Transcribe with Whisper":{"main":[[{"node":"Prepare Log Data","type":"main","index":0}]]},"Execute Workflow Trigger":{"main":[[{"node":"Get Telegram File Info","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"32822767-81af-411e-8650-5587e18bec91","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:03.027Z","createdAt":"2026-02-16T10:14:03.027Z","role":"workflow:owner","workflowId":"U3ONfciwOqVghZDC","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"check_status","name":"Check Response Status","type":"n8n-nodes-base.if","typeVersion":1.1,"parameters":{"data1":"={{ $json.ok }}","operation":"equal","data2":true},"position":[580,400]}}]


workflow_id: RBB4ogcYmBh3dG09
workflow_name: Test_U2-05
trigger: partial_update
created_at: 2026-02-16 10:14:26
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:07.583Z","createdAt":"2026-02-16T10:14:07.583Z","id":"RBB4ogcYmBh3dG09","name":"Test_U2-05","description":null,"active":false,"isArchived":false,"nodes":[{"id":"trigger","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[50,100]},{"id":"input-config","name":"Set Blog Configuration","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"blog_topic","type":"string","value":"Why Indian SMEs Need AI-Powered Automation in 2025"},{"name":"category","type":"string","value":"AI"},{"name":"tags","type":"string","value":"[\"AI\", \"Automation\", \"SME\", \"Business\", \"Productivity\"]"},{"name":"focus_keyword","type":"string","value":"AI automation for Indian SMEs"},{"name":"author_id","type":"string","value":"3213"},{"name":"excerpt_hint","type":"string","value":"Discover how Indian small businesses are transforming operations with AI automation. Learn practical strategies to save costs and increase efficiency."},{"name":"image_prompt","type":"string","value":"Professional illustration of Indian business team using AI automation technology, modern office, digital transformation, laptop screens showing dashboards, blue and green colors, realistic style"}]}},"position":[250,100]},{"id":"generate-blog-content","name":"Generate Blog Content","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","typeVersion":1,"parameters":{"model":"gemini-2.0-flash","options":{},"messages":{"values":[{"type":"text","message":"=You are a professional tech blogger writing for Indian SMEs. Write a 2000-2500 word blog post about: {{$node[\"input-config\"].json.blog_topic}}\n\nStyle Requirements:\n- Use contractions naturally (don't, won't, it's)\n- Include 2-3 personal anecdotes or real examples from Indian business context\n- Mix short and long sentences\n- Add rhetorical questions naturally\n- Use 1-2% keyword density for: {{$node[\"input-config\"].json.focus_keyword}}\n- Pass Flesch Readability Score: 62-68 (conversational but professional)\n- Include 2-3 internal links in [markdown format]\n- 2-3 external authoritative links\n- Structure: Hook → Problem → Solution → Examples → Actionable Tips → Conclusion\n- Avoid lists at the start, use prose\n- Write in Markdown format with proper H1, H2, H3 headings\n\nContent must pass Originality.ai & GPTZero as human-written.\n\nGenerate ONLY the markdown content, no meta tags or frontmatter."}]}},"position":[450,100]},{"id":"extract-content","name":"Extract and Clean Content","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"content_markdown","type":"string","value":"={{$node[\"[REDACTED]\"].json.text}}"},{"name":"word_count","type":"expression","value":"={{$node[\"[REDACTED]\"].json.text.split(' ').length}}"},{"name":"read_time","type":"expression","value":"={{Math.ceil($node[\"extract-content\"].json.word_count / 200)}}"}]}},"position":[650,100]},{"id":"generate-image","name":"Generate Featured Image","type":"@n8n/n8n-nodes-langchain.googleGemini","typeVersion":1,"parameters":{"modelId":{"mode":"list","value":"models/gemini-2.0-flash"},"messages":{"values":[{"type":"text","message":"Generate a detailed image generation prompt for: {{$node[\"input-config\"].json.image_prompt}}\n\nThe image should be 1200x630 pixels (16:9 ratio), professional, and suitable for a tech blog featured image.\n\nReturn ONLY the enhanced prompt, nothing else."}]}},"position":[850,100]},{"id":"upload-image-unsplash","name":"Get Image URL","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","method":"GET","options":{"headers":{"Accept-Version":"v1"}},"authentication":"[REDACTED]","genericAuthType":"[REDACTED]"},"position":[1050,100]},{"id":"prepare-baserow-fields","name":"Prepare Baserow Fields","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"title","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic}}"},{"name":"slug","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '')}}"},{"name":"content","type":"expression","value":"={{$node[\"extract-content\"].json.content_markdown}}"},{"name":"excerpt","type":"expression","value":"={{$node[\"input-config\"].json.excerpt_hint}}"},{"name":"featured_image","type":"expression","value":"={{$node[\"[REDACTED]\"].json.urls.regular}}"},{"name":"alt_text","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic}} - {{$node[\"input-config\"].json.category}}"},{"name":"og_image","type":"expression","value":"={{$node[\"[REDACTED]\"].json.urls.regular}}"},{"name":"twitter_card","type":"string","value":"summary_large_image"},{"name":"meta_title","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic.substring(0, 60)}}"},{"name":"meta_description","type":"expression","value":"={{$node[\"input-config\"].json.excerpt_hint.substring(0, 155)}}"},{"name":"focus_keyword","type":"expression","value":"={{$node[\"input-config\"].json.focus_keyword}}"},{"name":"canonical_url","type":"expression","value":"=https://arisegulf.com/blog/{{$node[\"[REDACTED]\"].json.slug}}"},{"name":"no_index","type":"boolean","value":"false"},{"name":"categories","type":"expression","value":"={{$node[\"input-config\"].json.category}}"},{"name":"tags","type":"expression","value":"={{$node[\"input-config\"].json.tags}}"},{"name":"language","type":"string","value":"English"},{"name":"reading_level","type":"string","value":"Intermediate"},{"name":"source","type":"string","value":"Manual"},{"name":"word_count","type":"expression","value":"={{$node[\"extract-content\"].json.word_count}}"},{"name":"read_time","type":"expression","value":"={{$node[\"extract-content\"].json.read_time}}"},{"name":"status","type":"string","value":"Published"},{"name":"published_date","type":"expression","value":"={{new Date().toISOString().split('T')[0]}}"},{"name":"publish_time","type":"string","value":"09:00"},{"name":"author","type":"string","value":"3213"},{"name":"publish_to_social","type":"boolean","value":"true"}]}},"position":[1250,100]},{"id":"post-to-baserow","name":"POST to Baserow","type":"n8n-nodes-base.baserow","typeVersion":3,"parameters":{"columns":[{"columnName":"Title","columnValue":"={{$node[\"[REDACTED]\"].json.title}}"},{"columnName":"Slug","columnValue":"={{$node[\"[REDACTED]\"].json.slug}}"},{"columnName":"Content","columnValue":"={{$node[\"[REDACTED]\"].json.content}}"},{"columnName":"Excerpt","columnValue":"={{$node[\"[REDACTED]\"].json.excerpt}}"},{"columnName":"Featured_Image","columnValue":"={{$node[\"[REDACTED]\"].json.featured_image}}"},{"columnName":"Alt_Text","columnValue":"={{$node[\"[REDACTED]\"].json.alt_text}}"},{"columnName":"OG_Image","columnValue":"={{$node[\"[REDACTED]\"].json.og_image}}"},{"columnName":"Twitter_Card","columnValue":"={{$node[\"[REDACTED]\"].json.twitter_card}}"},{"columnName":"Meta_Title","columnValue":"={{$node[\"[REDACTED]\"].json.meta_title}}"},{"columnName":"Meta_Description","columnValue":"={{$node[\"[REDACTED]\"].json.meta_description}}"},{"columnName":"Focus_Keyword","columnValue":"={{$node[\"[REDACTED]\"].json.focus_keyword}}"},{"columnName":"Canonical_URL","columnValue":"={{$node[\"[REDACTED]\"].json.canonical_url}}"},{"columnName":"No_Index","columnValue":"={{$node[\"[REDACTED]\"].json.no_index}}"},{"columnName":"Categories","columnValue":"={{$node[\"[REDACTED]\"].json.categories}}"},{"columnName":"Tags","columnValue":"={{$node[\"[REDACTED]\"].json.tags}}"},{"columnName":"Language","columnValue":"={{$node[\"[REDACTED]\"].json.language}}"},{"columnName":"Reading_Level","columnValue":"={{$node[\"[REDACTED]\"].json.reading_level}}"},{"columnName":"Source","columnValue":"={{$node[\"[REDACTED]\"].json.source}}"},{"columnName":"Word_Count","columnValue":"={{$node[\"[REDACTED]\"].json.word_count}}"},{"columnName":"Read_Time","columnValue":"={{$node[\"[REDACTED]\"].json.read_time}}"},{"columnName":"Status","columnValue":"={{$node[\"[REDACTED]\"].json.status}}"},{"columnName":"Published_Date","columnValue":"={{$node[\"[REDACTED]\"].json.published_date}}"},{"columnName":"Author","columnValue":"3213"},{"columnName":"Publish_to_Social","columnValue":"true"}],"tableId":761,"operation":"create","databaseId":"[REDACTED]"},"position":[1450,100]},{"id":"success-notification","name":"Success Notification","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"success_message","type":"string","value":"=✅ Blog Post Published!\n\nTitle: {{$node[\"[REDACTED]\"].json.title}}\nSlug: {{$node[\"[REDACTED]\"].json.slug}}\nWord Count: {{$node[\"[REDACTED]\"].json.word_count}}\nRead Time: {{$node[\"[REDACTED]\"].json.read_time}} min\n\n🔗 Link: https://arisegulf.com/blog/{{$node[\"[REDACTED]\"].json.slug}}\n\nBaserow Row ID: {{$node[\"post-to-baserow\"].json.id}}"}]}},"position":[1650,100]}],"connections":{"Set Blog Configuration":{"main":[[{"node":"Generate Blog Content","type":"main","index":0}]]},"Extract and Clean Content":{"main":[[{"node":"Generate Featured Image","type":"main","index":0}]]},"POST to Baserow":{"main":[[{"node":"Success Notification","type":"main","index":0}]]},"Get Image URL":{"main":[[{"node":"Prepare Baserow Fields","type":"main","index":0}]]},"Generate Featured Image":{"main":[[{"node":"Get Image URL","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Set Blog Configuration","type":"main","index":0}]]},"Generate Blog Content":{"main":[[{"node":"Extract and Clean Content","type":"main","index":0}]]},"Prepare Baserow Fields":{"main":[[{"node":"POST to Baserow","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"cc5d1a2f-fe73-4738-9756-0c641fece635","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:07.583Z","createdAt":"2026-02-16T10:14:07.583Z","role":"workflow:owner","workflowId":"RBB4ogcYmBh3dG09","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"email-notification","name":"Send Completion Email","type":"nodes-base.emailSend","typeVersion":2,"parameters":{"from":"n8n@yourdomain.com","to":"your-email@example.com","subject":"Blog Generation Completed","body":"The blog post has been successfully generated!\n\nTopic: {{$node[\"input-config\"].json.blog_topic}}\nWord Count: {{$node[\"extract-content\"].json.word_count}}\nRead Time: {{$node[\"extract-content\"].json.read_time}} minutes","options":{}},"position":[1250,100]}},{"type":"addConnection","source":"Get Image URL","target":"Send Completion Email"}]


workflow_id: itf2J6lc9fPZNfwa
workflow_name: Test_U2-08
trigger: partial_update
created_at: 2026-02-16 10:14:27
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:11.219Z","createdAt":"2026-02-16T10:14:11.219Z","id":"itf2J6lc9fPZNfwa","name":"Test_U2-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"3dda3281-1a64-4fbb-9b6d-de636f1a465b","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"*/5 * * * *"}]}},"position":[880,240]},{"id":"8b24efec-162c-408b-aaf6-6f1c870ba9ae","name":"If","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"[REDACTED_TOKEN]","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.title }}","rightValue":"Uptime-Kuma"},{"id":"[REDACTED_TOKEN]","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.title }}","rightValue":"Watchtower"}]}},"position":[1328,240]},{"id":"af40e988-3943-47da-a5db-fbff65defb27","name":"Get many messages","type":"n8n-nodes-base.gotify","typeVersion":1,"parameters":{"operation":"getAll","returnAll":true},"position":[1104,240]},{"id":"c4e476f0-2403-4352-9641-26f236f1e2ea","name":"Delete a message","type":"n8n-nodes-base.gotify","typeVersion":1,"parameters":{"messageId":"={{ $json.id }}","operation":"delete"},"position":[1616,64]},{"id":"f795c997-1667-43ed-885c-163b98f4aa9f","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","typeVersion":1,"parameters":{"errorMessage":"Message does not match cleanup filters (title must equal 'Uptime-Kuma' or contain 'Watchtower')"},"position":[1536,336]}],"connections":{"If":{"main":[[{"node":"Delete a message","type":"main","index":0}],[{"node":"Stop and Error","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get many messages","type":"main","index":0}]]},"Get many messages":{"main":[[{"node":"If","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"b7e962b3-e2c8-445d-9c32-b7bfed0cb9c1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:11.219Z","createdAt":"2026-02-16T10:14:11.219Z","role":"workflow:owner","workflowId":"itf2J6lc9fPZNfwa","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"db_logging_node","name":"Database Logging","type":"nodes-base.mySql","typeVersion":3.1,"parameters":{"operation":"execute","query":"INSERT INTO workflow_logs (workflow_name, trigger_time, message_title, action, status) VALUES ('Test_U2-08', NOW(), '{{ $json.title }}', 'message_cleanup', 'executed')"},"position":[1472,240]}},{"type":"addConnection","source":"If","target":"Database Logging"}]


workflow_id: oZRvHaIgeopADGds
workflow_name: Test_U2-06
trigger: partial_update
created_at: 2026-02-16 10:14:30
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:08.184Z","createdAt":"2026-02-16T10:14:08.184Z","id":"oZRvHaIgeopADGds","name":"Test_U2-06","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"add-task","httpMethod":"POST","responseMode":"responseNode"},"position":[0,0]},{"id":"ollama-request","name":"Parse with Ollama","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"http://[domain]/api/generate","method":"POST","options":{},"jsonBody":"={\n  \"model\": \"gemma2:2b\",\n  \"prompt\": \"You are a task parser. Extract task details from the user's input and return ONLY valid JSON with no other text.\\n\\nRules:\\n- task: the action to do (clean, concise)\\n- due_string: Todoist-compatible date string like 'today', 'tomorrow at 2pm', 'every weekday at 2pm', 'next Tuesday', 'every month on the 1st'\\n- priority: 1-4 (4=urgent, 1=low) - default to 1 unless they say urgent/important/asap\\n\\nUser input: {{ $json.body.task }}\\n\\nRespond with ONLY this JSON format:\\n{\\\"task\\\": \\\"...\\\", \\\"due_string\\\": \\\"...\\\", \\\"priority\\\": 1}\",\n  \"stream\": false\n}","sendBody":true,"specifyBody":"json"},"position":[220,0]},{"id":"parse-response","name":"Parse LLM Response","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"const response = $input.first().json.response;\n\n// Clean up the response - remove any markdown or extra text\nlet cleaned = response.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n\n// Parse the JSON\nconst parsed = JSON.parse(cleaned);\n\nreturn [{\n  json: {\n    content: parsed.task,\n    due_string: parsed.due_string,\n    priority: parsed.priority || 1\n  }\n}];","language":"javaScript"},"position":[440,0]},{"id":"todoist-create","name":"Create Todoist Task","type":"n8n-nodes-base.todoist","typeVersion":2.1,"parameters":{"content":"={{ $json.content }}","options":{"priority":"={{ $json.priority }}","dueString":"={{ $json.due_string }}"},"project":{"mode":"id","value":""},"resource":"task","operation":"create"},"position":[660,0]},{"id":"respond-webhook","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"parameters":{"respondWith":"json","responseBody":"={\n  \"status\": \"success\",\n  \"task\": \"{{ $('Parse LLM Response').item.json.content }}\",\n  \"due\": \"{{ $('Parse LLM Response').item.json.due_string }}\"\n}"},"position":[880,0]}],"connections":{"Webhook":{"main":[[{"node":"Parse with Ollama","type":"main","index":0}]]},"Parse with Ollama":{"main":[[{"node":"Parse LLM Response","type":"main","index":0}]]},"Parse LLM Response":{"main":[[{"node":"Create Todoist Task","type":"main","index":0}]]},"Create Todoist Task":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"9283e01e-2d91-48a2-8e1f-2865d091460e","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:08.185Z","createdAt":"2026-02-16T10:14:08.185Z","role":"workflow:owner","workflowId":"oZRvHaIgeopADGds","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"set-node","name":"Transform Data","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","duplicateItem":false,"assignments":{"assignments":[{"id":"content","name":"content","value":"={{ $json.content }}","type":"string"},{"id":"due_string","name":"due_string","value":"={{ $json.due_string }}","type":"string"},{"id":"priority","name":"priority","value":"={{ $json.priority }}","type":"number"}]},"includeOtherFields":false,"options":{"dotNotation":true}},"position":[560,0]}},{"type":"removeConnection","source":"Parse LLM Response","target":"Create Todoist Task"},{"type":"addConnection","source":"Parse LLM Response","target":"Transform Data"},{"type":"addConnection","source":"Transform Data","target":"Create Todoist Task"}]


workflow_id: J9shGobln9NVQUAm
workflow_name: Test_U2-09
trigger: partial_update
created_at: 2026-02-16 10:14:32
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:21.718Z","createdAt":"2026-02-16T10:14:21.718Z","id":"J9shGobln9NVQUAm","name":"Test_U2-09","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":5}]}},"position":[240,300]},{"id":"check-unraid","name":"Check Unraid Server","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"http://[domain]","method":"GET","options":{"timeout":5000,"redirect":{"redirect":{}}}},"position":[460,200]},{"id":"check-pihole","name":"Check Pi-hole DNS","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"http://[domain]/admin","method":"GET","options":{"timeout":5000,"redirect":{"redirect":{}}}},"position":[460,300]},{"id":"check-heating","name":"Check Heating Server","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"http://[domain]","method":"GET","options":{"timeout":5000,"redirect":{"redirect":{}}}},"position":[460,400]},{"id":"aggregate-results","name":"Aggregate Server Status","type":"n8n-nodes-base.function","typeVersion":1,"parameters":{"functionCode":"const results = [];\nconst timestamp = new Date().toISOString();\n\nfor (const item of items) {\n  const serverName = item.json.node || 'Unknown';\n  const isOnline = !item.json.error && item.json.statusCode >= 200 && item.json.statusCode < 400;\n  const statusCode = item.json.statusCode || 'N/A';\n  const responseTime = item.json.responseTime || 'N/A';\n  \n  results.push({\n    server: serverName,\n    status: isOnline ? 'Online ✅' : 'Offline ❌',\n    statusCode: statusCode,\n    responseTime: responseTime,\n    timestamp: timestamp,\n    error: item.json.error || null\n  });\n}\n\nconst offlineServers = results.filter(r => r.status.includes('Offline'));\nconst hasIssues = offlineServers.length > 0;\n\nreturn [{\n  json: {\n    timestamp: timestamp,\n    servers: results,\n    summary: {\n      total: results.length,\n      online: results.length - offlineServers.length,\n      offline: offlineServers.length,\n      hasIssues: hasIssues\n    },\n    offlineServers: offlineServers\n  }\n}];"},"position":[680,300]},{"id":"check-issues","name":"Check for Issues","type":"n8n-nodes-base.if","typeVersion":2.2,"parameters":{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-1","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.summary.hasIssues }}","rightValue":true}]}},"position":[900,300]},{"id":"send-alert-slack","name":"Send Alert to Slack","type":"n8n-nodes-base.slack","typeVersion":2.3,"parameters":{"text":"=🚨 *Server Health Alert*\\n\\n*Timestamp:* {{ $json.timestamp }}\\n*Status:* {{ $json.summary.offline }} of {{ $json.summary.total }} servers offline\\n\\n*Offline Servers:*\\n{{ $json.offlineServers.map(s => `• ${s.server}: ${s.error || 'Connection failed'}`).join('\\n') }}\\n\\n_Automated monitoring via n8n_","channel":"#server-alerts","resource":"message","operation":"post","attachments":[],"otherOptions":{}},"position":[1120,200]},{"id":"log-status","name":"Log Status (All Good)","type":"n8n-nodes-base.function","typeVersion":1,"parameters":{"functionCode":"console.log('✅ All servers online:', $json.summary);\nreturn items;"},"position":[1120,400]}],"connections":{"Check for Issues":{"main":[[{"node":"Send Alert to Slack","type":"main","index":0}],[{"node":"Log Status (All Good)","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Check Unraid Server","type":"main","index":0},{"node":"Check Pi-hole DNS","type":"main","index":0},{"node":"Check Heating Server","type":"main","index":0}]]},"Check Pi-hole DNS":{"main":[[{"node":"Aggregate Server Status","type":"main","index":0}]]},"Check Unraid Server":{"main":[[{"node":"Aggregate Server Status","type":"main","index":0}]]},"Check Heating Server":{"main":[[{"node":"Aggregate Server Status","type":"main","index":0}]]},"Aggregate Server Status":{"main":[[{"node":"Check for Issues","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"0ccca64a-41c5-4fa2-9c3e-fd6af4dfb601","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:21.718Z","createdAt":"2026-02-16T10:14:21.718Z","role":"workflow:owner","workflowId":"J9shGobln9NVQUAm","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"delay-before-api","name":"Delay Before API","type":"n8n-nodes-base.delay","typeVersion":1.2,"parameters":{"amount":5,"unit":"seconds"},"position":[340,300]}},{"type":"removeConnection","source":"Schedule Trigger","target":"Check Unraid Server"},{"type":"removeConnection","source":"Schedule Trigger","target":"Check Pi-hole DNS"},{"type":"removeConnection","source":"Schedule Trigger","target":"Check Heating Server"},{"type":"addConnection","source":"Schedule Trigger","target":"Delay Before API"},{"type":"addConnection","source":"Delay Before API","target":"Check Unraid Server"},{"type":"addConnection","source":"Delay Before API","target":"Check Pi-hole DNS"},{"type":"addConnection","source":"Delay Before API","target":"Check Heating Server"}]


workflow_id: itf2J6lc9fPZNfwa
workflow_name: Test_U2-08
trigger: partial_update
created_at: 2026-02-16 10:14:33
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:11.219Z","createdAt":"2026-02-16T10:14:11.219Z","id":"itf2J6lc9fPZNfwa","name":"Test_U2-08","description":null,"active":false,"isArchived":false,"nodes":[{"id":"3dda3281-1a64-4fbb-9b6d-de636f1a465b","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"*/5 * * * *"}]}},"position":[880,240]},{"id":"8b24efec-162c-408b-aaf6-6f1c870ba9ae","name":"If","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"[REDACTED_TOKEN]","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.title }}","rightValue":"Uptime-Kuma"},{"id":"[REDACTED_TOKEN]","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.title }}","rightValue":"Watchtower"}]}},"position":[1328,240]},{"id":"af40e988-3943-47da-a5db-fbff65defb27","name":"Get many messages","type":"n8n-nodes-base.gotify","typeVersion":1,"parameters":{"operation":"getAll","returnAll":true},"position":[1104,240]},{"id":"c4e476f0-2403-4352-9641-26f236f1e2ea","name":"Delete a message","type":"n8n-nodes-base.gotify","typeVersion":1,"parameters":{"messageId":"={{ $json.id }}","operation":"delete"},"position":[1616,64]},{"id":"f795c997-1667-43ed-885c-163b98f4aa9f","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","typeVersion":1,"parameters":{"errorMessage":"Message does not match cleanup filters (title must equal 'Uptime-Kuma' or contain 'Watchtower')"},"position":[1536,336]}],"connections":{"If":{"main":[[{"node":"Delete a message","type":"main","index":0}],[{"node":"Stop and Error","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get many messages","type":"main","index":0}]]},"Get many messages":{"main":[[{"node":"If","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"b7e962b3-e2c8-445d-9c32-b7bfed0cb9c1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:11.219Z","createdAt":"2026-02-16T10:14:11.219Z","role":"workflow:owner","workflowId":"itf2J6lc9fPZNfwa","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"db_logging_node","name":"Database Logging","type":"n8n-nodes-base.mySql","typeVersion":3.1,"parameters":{"operation":"execute","query":"INSERT INTO workflow_logs (workflow_name, trigger_time, message_title, action, status) VALUES ('Test_U2-08', NOW(), '{{ $json.title }}', 'message_cleanup', 'executed')"},"position":[1472,240]}},{"type":"addConnection","source":"If","target":"Database Logging"}]


workflow_id: RBB4ogcYmBh3dG09
workflow_name: Test_U2-05
trigger: partial_update
created_at: 2026-02-16 10:14:33
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:07.583Z","createdAt":"2026-02-16T10:14:07.583Z","id":"RBB4ogcYmBh3dG09","name":"Test_U2-05","description":null,"active":false,"isArchived":false,"nodes":[{"id":"trigger","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[50,100]},{"id":"input-config","name":"Set Blog Configuration","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"blog_topic","type":"string","value":"Why Indian SMEs Need AI-Powered Automation in 2025"},{"name":"category","type":"string","value":"AI"},{"name":"tags","type":"string","value":"[\"AI\", \"Automation\", \"SME\", \"Business\", \"Productivity\"]"},{"name":"focus_keyword","type":"string","value":"AI automation for Indian SMEs"},{"name":"author_id","type":"string","value":"3213"},{"name":"excerpt_hint","type":"string","value":"Discover how Indian small businesses are transforming operations with AI automation. Learn practical strategies to save costs and increase efficiency."},{"name":"image_prompt","type":"string","value":"Professional illustration of Indian business team using AI automation technology, modern office, digital transformation, laptop screens showing dashboards, blue and green colors, realistic style"}]}},"position":[250,100]},{"id":"generate-blog-content","name":"Generate Blog Content","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","typeVersion":1,"parameters":{"model":"gemini-2.0-flash","options":{},"messages":{"values":[{"type":"text","message":"=You are a professional tech blogger writing for Indian SMEs. Write a 2000-2500 word blog post about: {{$node[\"input-config\"].json.blog_topic}}\n\nStyle Requirements:\n- Use contractions naturally (don't, won't, it's)\n- Include 2-3 personal anecdotes or real examples from Indian business context\n- Mix short and long sentences\n- Add rhetorical questions naturally\n- Use 1-2% keyword density for: {{$node[\"input-config\"].json.focus_keyword}}\n- Pass Flesch Readability Score: 62-68 (conversational but professional)\n- Include 2-3 internal links in [markdown format]\n- 2-3 external authoritative links\n- Structure: Hook → Problem → Solution → Examples → Actionable Tips → Conclusion\n- Avoid lists at the start, use prose\n- Write in Markdown format with proper H1, H2, H3 headings\n\nContent must pass Originality.ai & GPTZero as human-written.\n\nGenerate ONLY the markdown content, no meta tags or frontmatter."}]}},"position":[450,100]},{"id":"extract-content","name":"Extract and Clean Content","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"content_markdown","type":"string","value":"={{$node[\"[REDACTED]\"].json.text}}"},{"name":"word_count","type":"expression","value":"={{$node[\"[REDACTED]\"].json.text.split(' ').length}}"},{"name":"read_time","type":"expression","value":"={{Math.ceil($node[\"extract-content\"].json.word_count / 200)}}"}]}},"position":[650,100]},{"id":"generate-image","name":"Generate Featured Image","type":"@n8n/n8n-nodes-langchain.googleGemini","typeVersion":1,"parameters":{"modelId":{"mode":"list","value":"models/gemini-2.0-flash"},"messages":{"values":[{"type":"text","message":"Generate a detailed image generation prompt for: {{$node[\"input-config\"].json.image_prompt}}\n\nThe image should be 1200x630 pixels (16:9 ratio), professional, and suitable for a tech blog featured image.\n\nReturn ONLY the enhanced prompt, nothing else."}]}},"position":[850,100]},{"id":"upload-image-unsplash","name":"Get Image URL","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","method":"GET","options":{"headers":{"Accept-Version":"v1"}},"authentication":"[REDACTED]","genericAuthType":"[REDACTED]"},"position":[1050,100]},{"id":"prepare-baserow-fields","name":"Prepare Baserow Fields","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"title","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic}}"},{"name":"slug","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '')}}"},{"name":"content","type":"expression","value":"={{$node[\"extract-content\"].json.content_markdown}}"},{"name":"excerpt","type":"expression","value":"={{$node[\"input-config\"].json.excerpt_hint}}"},{"name":"featured_image","type":"expression","value":"={{$node[\"[REDACTED]\"].json.urls.regular}}"},{"name":"alt_text","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic}} - {{$node[\"input-config\"].json.category}}"},{"name":"og_image","type":"expression","value":"={{$node[\"[REDACTED]\"].json.urls.regular}}"},{"name":"twitter_card","type":"string","value":"summary_large_image"},{"name":"meta_title","type":"expression","value":"={{$node[\"input-config\"].json.blog_topic.substring(0, 60)}}"},{"name":"meta_description","type":"expression","value":"={{$node[\"input-config\"].json.excerpt_hint.substring(0, 155)}}"},{"name":"focus_keyword","type":"expression","value":"={{$node[\"input-config\"].json.focus_keyword}}"},{"name":"canonical_url","type":"expression","value":"=https://arisegulf.com/blog/{{$node[\"[REDACTED]\"].json.slug}}"},{"name":"no_index","type":"boolean","value":"false"},{"name":"categories","type":"expression","value":"={{$node[\"input-config\"].json.category}}"},{"name":"tags","type":"expression","value":"={{$node[\"input-config\"].json.tags}}"},{"name":"language","type":"string","value":"English"},{"name":"reading_level","type":"string","value":"Intermediate"},{"name":"source","type":"string","value":"Manual"},{"name":"word_count","type":"expression","value":"={{$node[\"extract-content\"].json.word_count}}"},{"name":"read_time","type":"expression","value":"={{$node[\"extract-content\"].json.read_time}}"},{"name":"status","type":"string","value":"Published"},{"name":"published_date","type":"expression","value":"={{new Date().toISOString().split('T')[0]}}"},{"name":"publish_time","type":"string","value":"09:00"},{"name":"author","type":"string","value":"3213"},{"name":"publish_to_social","type":"boolean","value":"true"}]}},"position":[1250,100]},{"id":"post-to-baserow","name":"POST to Baserow","type":"n8n-nodes-base.baserow","typeVersion":3,"parameters":{"columns":[{"columnName":"Title","columnValue":"={{$node[\"[REDACTED]\"].json.title}}"},{"columnName":"Slug","columnValue":"={{$node[\"[REDACTED]\"].json.slug}}"},{"columnName":"Content","columnValue":"={{$node[\"[REDACTED]\"].json.content}}"},{"columnName":"Excerpt","columnValue":"={{$node[\"[REDACTED]\"].json.excerpt}}"},{"columnName":"Featured_Image","columnValue":"={{$node[\"[REDACTED]\"].json.featured_image}}"},{"columnName":"Alt_Text","columnValue":"={{$node[\"[REDACTED]\"].json.alt_text}}"},{"columnName":"OG_Image","columnValue":"={{$node[\"[REDACTED]\"].json.og_image}}"},{"columnName":"Twitter_Card","columnValue":"={{$node[\"[REDACTED]\"].json.twitter_card}}"},{"columnName":"Meta_Title","columnValue":"={{$node[\"[REDACTED]\"].json.meta_title}}"},{"columnName":"Meta_Description","columnValue":"={{$node[\"[REDACTED]\"].json.meta_description}}"},{"columnName":"Focus_Keyword","columnValue":"={{$node[\"[REDACTED]\"].json.focus_keyword}}"},{"columnName":"Canonical_URL","columnValue":"={{$node[\"[REDACTED]\"].json.canonical_url}}"},{"columnName":"No_Index","columnValue":"={{$node[\"[REDACTED]\"].json.no_index}}"},{"columnName":"Categories","columnValue":"={{$node[\"[REDACTED]\"].json.categories}}"},{"columnName":"Tags","columnValue":"={{$node[\"[REDACTED]\"].json.tags}}"},{"columnName":"Language","columnValue":"={{$node[\"[REDACTED]\"].json.language}}"},{"columnName":"Reading_Level","columnValue":"={{$node[\"[REDACTED]\"].json.reading_level}}"},{"columnName":"Source","columnValue":"={{$node[\"[REDACTED]\"].json.source}}"},{"columnName":"Word_Count","columnValue":"={{$node[\"[REDACTED]\"].json.word_count}}"},{"columnName":"Read_Time","columnValue":"={{$node[\"[REDACTED]\"].json.read_time}}"},{"columnName":"Status","columnValue":"={{$node[\"[REDACTED]\"].json.status}}"},{"columnName":"Published_Date","columnValue":"={{$node[\"[REDACTED]\"].json.published_date}}"},{"columnName":"Author","columnValue":"3213"},{"columnName":"Publish_to_Social","columnValue":"true"}],"tableId":761,"operation":"create","databaseId":"[REDACTED]"},"position":[1450,100]},{"id":"success-notification","name":"Success Notification","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"success_message","type":"string","value":"=✅ Blog Post Published!\n\nTitle: {{$node[\"[REDACTED]\"].json.title}}\nSlug: {{$node[\"[REDACTED]\"].json.slug}}\nWord Count: {{$node[\"[REDACTED]\"].json.word_count}}\nRead Time: {{$node[\"[REDACTED]\"].json.read_time}} min\n\n🔗 Link: https://arisegulf.com/blog/{{$node[\"[REDACTED]\"].json.slug}}\n\nBaserow Row ID: {{$node[\"post-to-baserow\"].json.id}}"}]}},"position":[1650,100]}],"connections":{"Set Blog Configuration":{"main":[[{"node":"Generate Blog Content","type":"main","index":0}]]},"Extract and Clean Content":{"main":[[{"node":"Generate Featured Image","type":"main","index":0}]]},"POST to Baserow":{"main":[[{"node":"Success Notification","type":"main","index":0}]]},"Get Image URL":{"main":[[{"node":"Prepare Baserow Fields","type":"main","index":0}]]},"Generate Featured Image":{"main":[[{"node":"Get Image URL","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Set Blog Configuration","type":"main","index":0}]]},"Generate Blog Content":{"main":[[{"node":"Extract and Clean Content","type":"main","index":0}]]},"Prepare Baserow Fields":{"main":[[{"node":"POST to Baserow","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"cc5d1a2f-fe73-4738-9756-0c641fece635","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:07.583Z","createdAt":"2026-02-16T10:14:07.583Z","role":"workflow:owner","workflowId":"RBB4ogcYmBh3dG09","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"email-notification","name":"Send Completion Email","type":"n8n-nodes-base.emailSend","typeVersion":2,"parameters":{"from":"n8n@yourdomain.com","to":"your-email@example.com","subject":"Blog Generation Completed","body":"The blog post has been successfully generated!\n\nTopic: {{$node[\"input-config\"].json.blog_topic}}\nWord Count: {{$node[\"extract-content\"].json.word_count}}\nRead Time: {{$node[\"extract-content\"].json.read_time}} minutes","options":{}},"position":[1250,100]}},{"type":"addConnection","source":"Get Image URL","target":"Send Completion Email"}]


workflow_id: U3ONfciwOqVghZDC
workflow_name: Test_U2-04
trigger: partial_update
created_at: 2026-02-16 10:14:36
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:03.026Z","createdAt":"2026-02-16T10:14:03.026Z","id":"U3ONfciwOqVghZDC","name":"Test_U2-04","description":null,"active":false,"isArchived":false,"nodes":[{"id":"workflow_trigger","name":"Execute Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1,"parameters":{},"position":[240,400]},{"id":"get_telegram_file","name":"Get Telegram File Info","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.telegram.org/bot{{ $env.TELEGRAM_BOT_TOKEN }}/getFile?file_id={{ $json.voice_file_id }}","method":"GET","options":{},"authentication":"[REDACTED]"},"position":[460,400]},{"id":"download_audio","name":"Download Audio File","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.telegram.org/file/bot{{ $env.TELEGRAM_BOT_TOKEN }}/{{ $json.result.file_path }}","method":"GET","options":{"response":{"response":{"responseFormat":"file"}}},"authentication":"[REDACTED]"},"position":[680,400]},{"id":"transcribe_whisper","name":"Transcribe with Whisper","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/v1/audio/transcriptions","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"file","value":"={{ $binary.data }}"},{"name":"model","value":"whisper-1"},{"name":"response_format","value":"json"}]},"nodeCredentialType":"[REDACTED]"},"position":[900,400]},{"id":"prepare_log_data","name":"Prepare Log Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Extract input data\nconst triggerData = $('Execute Workflow Trigger').item.json;\nconst transcript = $json.text || '';\n\n// Detect language from transcript\nlet detectedLanguage = 'en';\nif (/[а-яА-ЯёЁ]/.test(transcript)) {\n  detectedLanguage = 'ru';\n} else if (/[\\u0600-\\u06FF]/.test(transcript)) {\n  detectedLanguage = 'ar';\n}\n\n// Prepare data for Google Sheets logging\nconst timestamp = new Date().toISOString();\nconst chatId = triggerData.chat_id || '';\nconst userId = triggerData.user_id || '';\nconst firstName = triggerData.first_name || 'Unknown';\nconst messageId = triggerData.message_id || '';\nconst isAdmin = triggerData.is_admin || false;\n\n// Format for Google Sheets\nreturn {\n  json: {\n    // For Google Sheets append\n    timestamp: timestamp,\n    chat_id: chatId,\n    user_id: userId,\n    first_name: firstName,\n    message_id: messageId,\n    message_type: 'voice',\n    message_content: transcript,\n    detected_language: detectedLanguage,\n    is_admin: isAdmin,\n    \n    // For workflow output\n    _output: {\n      transcribed_text: transcript,\n      detected_language: detectedLanguage,\n      voice_file_id: triggerData.voice_file_id || '',\n      success: true,\n      timestamp: timestamp\n    }\n  }\n};"},"position":[1120,400]},{"id":"log_to_sheets","name":"Log to Google Sheets","type":"n8n-nodes-base.googleSheets","typeVersion":4.5,"parameters":{"columns":{"value":{"chat_id":"={{ $json.chat_id }}","user_id":"={{ $json.user_id }}","is_admin":"={{ $json.is_admin }}","timestamp":"={{ $json.timestamp }}","first_name":"={{ $json.first_name }}","message_id":"={{ $json.message_id }}","message_type":"={{ $json.message_type }}","message_content":"={{ $json.message_content }}","detected_language":"={{ $json.detected_language }}"},"mappingMode":"defineBelow"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"conversation_log"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_SPREADSHEET_ID"}},"position":[1340,400]},{"id":"return_output","name":"Return Transcript","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Return clean output to calling workflow\nconst outputData = $('Prepare Log Data').item.json._output;\n\nreturn {\n  json: outputData\n};"},"position":[1560,400]}],"connections":{"Prepare Log Data":{"main":[[{"node":"Log to Google Sheets","type":"main","index":0}]]},"Download Audio File":{"main":[[{"node":"Transcribe with Whisper","type":"main","index":0}]]},"Log to Google Sheets":{"main":[[{"node":"Return Transcript","type":"main","index":0}]]},"Get Telegram File Info":{"main":[[{"node":"Download Audio File","type":"main","index":0}]]},"Transcribe with Whisper":{"main":[[{"node":"Prepare Log Data","type":"main","index":0}]]},"Execute Workflow Trigger":{"main":[[{"node":"Get Telegram File Info","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"32822767-81af-411e-8650-5587e18bec91","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:03.027Z","createdAt":"2026-02-16T10:14:03.027Z","role":"workflow:owner","workflowId":"U3ONfciwOqVghZDC","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addConnection","source":"Get Telegram File Info","target":"Check Response Status"},{"type":"addConnection","source":"Check Response Status","target":"Download Audio File","sourceOutput":"0"},{"type":"addConnection","source":"Check Response Status","target":"Return Transcript","sourceOutput":"1"}]


workflow_id: U3ONfciwOqVghZDC
workflow_name: Test_U2-04
trigger: partial_update
created_at: 2026-02-16 10:14:41
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:03.026Z","createdAt":"2026-02-16T10:14:03.026Z","id":"U3ONfciwOqVghZDC","name":"Test_U2-04","description":null,"active":false,"isArchived":false,"nodes":[{"id":"workflow_trigger","name":"Execute Workflow Trigger","type":"n8n-nodes-base.executeWorkflowTrigger","typeVersion":1,"parameters":{},"position":[240,400]},{"id":"get_telegram_file","name":"Get Telegram File Info","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.telegram.org/bot{{ $env.TELEGRAM_BOT_TOKEN }}/getFile?file_id={{ $json.voice_file_id }}","method":"GET","options":{},"authentication":"[REDACTED]"},"position":[460,400]},{"id":"download_audio","name":"Download Audio File","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"=https://api.telegram.org/file/bot{{ $env.TELEGRAM_BOT_TOKEN }}/{{ $json.result.file_path }}","method":"GET","options":{"response":{"response":{"responseFormat":"file"}}},"authentication":"[REDACTED]"},"position":[680,400]},{"id":"transcribe_whisper","name":"Transcribe with Whisper","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/v1/audio/transcriptions","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"file","value":"={{ $binary.data }}"},{"name":"model","value":"whisper-1"},{"name":"response_format","value":"json"}]},"nodeCredentialType":"[REDACTED]"},"position":[900,400]},{"id":"prepare_log_data","name":"Prepare Log Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Extract input data\nconst triggerData = $('Execute Workflow Trigger').item.json;\nconst transcript = $json.text || '';\n\n// Detect language from transcript\nlet detectedLanguage = 'en';\nif (/[а-яА-ЯёЁ]/.test(transcript)) {\n  detectedLanguage = 'ru';\n} else if (/[\\u0600-\\u06FF]/.test(transcript)) {\n  detectedLanguage = 'ar';\n}\n\n// Prepare data for Google Sheets logging\nconst timestamp = new Date().toISOString();\nconst chatId = triggerData.chat_id || '';\nconst userId = triggerData.user_id || '';\nconst firstName = triggerData.first_name || 'Unknown';\nconst messageId = triggerData.message_id || '';\nconst isAdmin = triggerData.is_admin || false;\n\n// Format for Google Sheets\nreturn {\n  json: {\n    // For Google Sheets append\n    timestamp: timestamp,\n    chat_id: chatId,\n    user_id: userId,\n    first_name: firstName,\n    message_id: messageId,\n    message_type: 'voice',\n    message_content: transcript,\n    detected_language: detectedLanguage,\n    is_admin: isAdmin,\n    \n    // For workflow output\n    _output: {\n      transcribed_text: transcript,\n      detected_language: detectedLanguage,\n      voice_file_id: triggerData.voice_file_id || '',\n      success: true,\n      timestamp: timestamp\n    }\n  }\n};"},"position":[1120,400]},{"id":"log_to_sheets","name":"Log to Google Sheets","type":"n8n-nodes-base.googleSheets","typeVersion":4.5,"parameters":{"columns":{"value":{"chat_id":"={{ $json.chat_id }}","user_id":"={{ $json.user_id }}","is_admin":"={{ $json.is_admin }}","timestamp":"={{ $json.timestamp }}","first_name":"={{ $json.first_name }}","message_id":"={{ $json.message_id }}","message_type":"={{ $json.message_type }}","message_content":"={{ $json.message_content }}","detected_language":"={{ $json.detected_language }}"},"mappingMode":"defineBelow"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"conversation_log"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_SPREADSHEET_ID"}},"position":[1340,400]},{"id":"return_output","name":"Return Transcript","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Return clean output to calling workflow\nconst outputData = $('Prepare Log Data').item.json._output;\n\nreturn {\n  json: outputData\n};"},"position":[1560,400]}],"connections":{"Prepare Log Data":{"main":[[{"node":"Log to Google Sheets","type":"main","index":0}]]},"Download Audio File":{"main":[[{"node":"Transcribe with Whisper","type":"main","index":0}]]},"Log to Google Sheets":{"main":[[{"node":"Return Transcript","type":"main","index":0}]]},"Get Telegram File Info":{"main":[[{"node":"Download Audio File","type":"main","index":0}]]},"Transcribe with Whisper":{"main":[[{"node":"Prepare Log Data","type":"main","index":0}]]},"Execute Workflow Trigger":{"main":[[{"node":"Get Telegram File Info","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"32822767-81af-411e-8650-5587e18bec91","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:03.027Z","createdAt":"2026-02-16T10:14:03.027Z","role":"workflow:owner","workflowId":"U3ONfciwOqVghZDC","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"check_status","name":"Check Response Status","type":"n8n-nodes-base.if","typeVersion":1.1,"parameters":{"data1":"={{ $json.ok }}","operation":"equal","data2":true},"position":[580,400]},"source":"Get Telegram File Info","target":"Check Response Status"},{"type":"addConnection","source":"Check Response Status","target":"Download Audio File","sourceOutput":"0"},{"type":"addConnection","source":"Check Response Status","target":"Return Transcript","sourceOutput":"1"}]


workflow_id: lOPQ6VbyPCyaegIs
workflow_name: Test_U3-03
trigger: partial_update
created_at: 2026-02-16 10:14:42
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:29.933Z","createdAt":"2026-02-16T10:14:29.933Z","id":"lOPQ6VbyPCyaegIs","name":"Test_U3-03","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger-1","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":1}]}},"position":[240,300]},{"id":"postgres-read","name":"Read Active Users","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"operation":"executeQuery","query":"SELECT id, email, name, status, last_login FROM users WHERE status = 'active' AND last_login > NOW() - INTERVAL '7 days' ORDER BY last_login DESC LIMIT 100;"},"position":[460,300]},{"id":"transform-users","name":"Transform User Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const users = $input.all();\nreturn users.map(item => ({\n  json: {\n    userId: item.json.id,\n    email: item.json.email,\n    displayName: item.json.name,\n    isRecent: new Date(item.json.last_login) > new Date(Date.now() - 86400000),\n    processedAt: new Date().toISOString()\n  }\n}));"},"position":[680,300]},{"id":"check-users","name":"Has Users?","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"conditions":{"combinator":"and","conditions":[{"operator":{"type":"number","operation":"gt"},"leftValue":"={{ $input.all().length }}","rightValue":0}]}},"position":[900,300]},{"id":"send-report","name":"Send Report","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://hooks.slack.com/services/T00/B00/xxx","method":"POST","sendBody":true,"bodyParameters":{"parameters":[{"name":"text","value":"={{ 'Active users report: ' + $input.all().length + ' users' }}"}]},"options":{}},"position":[1120,200]},{"id":"log-empty","name":"Log No Users","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"status","value":"no_active_users","type":"string"},{"name":"checkedAt","value":"={{ new Date().toISOString() }}","type":"string"}]}},"position":[1120,420]},{"id":"postgres-log","name":"Log Result","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"operation":"executeQuery","query":"INSERT INTO report_log (report_type, status, created_at) VALUES ('active_users', 'completed', NOW());"},"position":[1340,300]}],"connections":{"Schedule Trigger":{"main":[[{"node":"Read Active Users","type":"main","index":0}]]},"Read Active Users":{"main":[[{"node":"Transform User Data","type":"main","index":0}]]},"Transform User Data":{"main":[[{"node":"Has Users?","type":"main","index":0}]]},"Has Users?":{"main":[[{"node":"Send Report","type":"main","index":0}],[{"node":"Log No Users","type":"main","index":0}]]},"Send Report":{"main":[[{"node":"Log Result","type":"main","index":0}]]},"Log No Users":{"main":[[{"node":"Log Result","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"7a2f417c-4133-434e-a286-e5e232f64cc2","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:29.934Z","createdAt":"2026-02-16T10:14:29.934Z","role":"workflow:owner","workflowId":"lOPQ6VbyPCyaegIs","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Read Active Users","updates":{"type":"n8n-nodes-base.mySql","typeVersion":1.1,"parameters":{"operation":"executeQuery","query":"SELECT id, email, name, status, last_login FROM users WHERE status = 'active' AND last_login > DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY last_login DESC LIMIT 100;"}}},{"type":"updateNode","nodeName":"Log Result","updates":{"type":"n8n-nodes-base.mySql","typeVersion":1.1,"parameters":{"operation":"executeQuery","query":"INSERT INTO report_log (report_type, status, created_at) VALUES ('active_users', 'completed', NOW())"}}}]


workflow_id: u4tW26FVc73JOaPK
workflow_name: Test_U3-02
trigger: partial_update
created_at: 2026-02-16 10:14:44
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:28.507Z","createdAt":"2026-02-16T10:14:28.507Z","id":"u4tW26FVc73JOaPK","name":"Test_U3-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"manual-trigger-1","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,300]},{"id":"http-fetch-slack","name":"Fetch Slack Messages","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://slack.com/api/conversations.history","method":"GET","sendHeaders":true,"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer xoxb-your-token"}]},"sendQuery":true,"queryParameters":{"parameters":[{"name":"channel","value":"C01234567"},{"name":"limit","value":"10"}]},"options":{}},"position":[460,300]},{"id":"format-messages","name":"Format Messages","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const messages = $input.first().json.messages || [];\nreturn messages.map(m => ({\n  json: {\n    text: m.text,\n    user: m.user,\n    timestamp: m.ts,\n    date: new Date(parseFloat(m.ts) * 1000).toISOString()\n  }\n}));"},"position":[680,300]},{"id":"set-summary","name":"Create Summary","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","assignments":{"assignments":[{"name":"messageCount","value":"={{ $input.all().length }}","type":"number"},{"name":"fetchedAt","value":"={{ new Date().toISOString() }}","type":"string"}]}},"position":[900,300]}],"connections":{"Manual Trigger":{"main":[[{"node":"Fetch Slack Messages","type":"main","index":0}]]},"Fetch Slack Messages":{"main":[[{"node":"Format Messages","type":"main","index":0}]]},"Format Messages":{"main":[[{"node":"Create Summary","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"8d3ff845-3953-40bb-aed3-68b5545839a0","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:28.507Z","createdAt":"2026-02-16T10:14:28.507Z","role":"workflow:owner","workflowId":"u4tW26FVc73JOaPK","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"removeNode","nodeName":"Fetch Slack Messages"},{"type":"addNode","node":{"id":"slack-node-1","name":"Slack Messages","type":"n8n-nodes-base.slack","typeVersion":2.4,"parameters":{"resource":"message","operation":"history","channel":"C01234567","additionalFields":{"limit":10}},"position":[460,300]}},{"type":"addConnection","source":"Manual Trigger","target":"Slack Messages"}]


workflow_id: EQUyY5gDCo8GYe2V
workflow_name: Test_U2-10
trigger: partial_update
created_at: 2026-02-16 10:14:45
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:22.630Z","createdAt":"2026-02-16T10:14:22.630Z","id":"EQUyY5gDCo8GYe2V","name":"Test_U2-10","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-posthog","name":"Webhook","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"posthog","httpMethod":"POST","responseMode":"responseNode"},"position":[250,300]},{"id":"validate-token-posthog","name":"Validate Token","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const token = $input.item.json.headers['x-cli-token'];\nconst validToken = '[REDACTED]';\n\nif (token !== validToken) {\n  throw new Error('Invalid authentication token');\n}\n\nconst payload = $input.item.json.body;\nreturn { json: payload };"},"position":[450,300]},{"id":"http-posthog","name":"PostHog API","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/capture/","method":"POST","jsonBody":"={\n  \"api_key\": \"[REDACTED_TOKEN]\",\n  \"event\": \"{{ $json.event }}\",\n  \"distinct_id\": \"{{ $json.distinct_id }}\",\n  \"properties\": {{ $json.properties }}\n}","sendBody":true,"specifyBody":"json"},"position":[650,300]},{"id":"respond-posthog","name":"Respond to Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"parameters":{"options":{}},"position":[850,300]}],"connections":{"Webhook":{"main":[[{"node":"Validate Token","type":"main","index":0}]]},"PostHog API":{"main":[[{"node":"Respond to Webhook","type":"main","index":0}]]},"Validate Token":{"main":[[{"node":"PostHog API","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"4b72df8a-2c8f-4a03-817a-9ede15601d66","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:22.630Z","createdAt":"2026-02-16T10:14:22.630Z","role":"workflow:owner","workflowId":"EQUyY5gDCo8GYe2V","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"merge-results","name":"Merge Results","type":"n8n-nodes-base.merge","typeVersion":3.1,"parameters":{"mode":"merge"},"position":[550,300]}},{"type":"addConnection","source":"Validate Token","target":"Merge Results"},{"type":"addConnection","source":"Merge Results","target":"PostHog API"}]


workflow_id: zijbGo5541A59nBn
workflow_name: Test_U3-01
trigger: partial_update
created_at: 2026-02-16 10:14:51
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:25.680Z","createdAt":"2026-02-16T10:14:25.680Z","id":"zijbGo5541A59nBn","name":"Test_U3-01","description":null,"active":false,"isArchived":false,"nodes":[{"id":"Cron_Trending","name":"Cron: Trending","type":"n8n-nodes-base.cron","typeVersion":1,"parameters":{"triggerTimes":{"item":[{"mode":"everyX","unit":"minutes","value":15}]}},"position":[260,300]},{"id":"DB_Ensure_Tables","name":"DB: Ensure Tables","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"query":"CREATE TABLE IF NOT EXISTS public.[REDACTED] (\n  id TEXT PRIMARY KEY,\n  video_url TEXT NOT NULL,\n  niche TEXT,\n  region TEXT,\n  like_count BIGINT,\n  comment_count BIGINT,\n  share_count BIGINT,\n  collected_at TIMESTAMPTZ DEFAULT NOW(),\n  [REDACTED] TIMESTAMPTZ,\n  comments_status TEXT\n);\n\nCREATE TABLE IF NOT EXISTS public.[REDACTED] (\n  id TEXT PRIMARY KEY,\n  video_id TEXT NOT NULL,\n  comment_text TEXT,\n  author_username TEXT,\n  like_count BIGINT,\n  created_at TIMESTAMPTZ,\n  collected_at TIMESTAMPTZ DEFAULT NOW()\n);\n\nCREATE INDEX IF NOT EXISTS [REDACTED] ON public.[REDACTED](video_id);\n","operation":"executeQuery"},"position":[540,300]},{"id":"Guardrail_Feed_Limit","name":"Guardrail: Feed Limit","type":"n8n-nodes-base.function","typeVersion":1,"parameters":{"functionCode":"const items = $input.all();\nconst globalData = this.[REDACTED]('global');\nconst key = 'feedRateGuardrail';\nconst LIMIT = 280;\nconst WINDOW_DAYS = 30;\nconst now = new Date();\n\nif (!globalData[key]) {\n  globalData[key] = {};\n}\n\nconst guard = globalData[key];\n\nif (!guard.resetAt || now > new Date(guard.resetAt)) {\n  guard.resetAt = new Date(now.getTime() + WINDOW_DAYS * 24 * 60 * 60 * 1000).toISOString();\n  guard.count = 0;\n}\n\nif (typeof guard.count !== 'number') {\n  guard.count = 0;\n}\n\nif (guard.count >= LIMIT) {\n  throw new Error('Feed API monthly limit reached. Blocking further calls.');\n}\n\nguard.count += 1;\n\nreturn items;\n"},"position":[820,300]},{"id":"HTTP_Fetch_Trending","name":"HTTP: Fetch Trending","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"[REDACTED]","options":{"fullResponse":false},"httpMethod":"GET","responseFormat":"json","queryParametersUi":{"parameter":[{"name":"region","value":"us"},{"name":"count","value":"10"}]},"headerParametersUi":{"parameter":[{"name":"x-rapidapi-key","value":"={{$env.[REDACTED]}}"},{"name":"x-rapidapi-host","value":"={{$env.[REDACTED]}}"}]}},"position":[1080,300]},{"id":"Function_Normalize_Trending","name":"Function: Normalize Trending","type":"n8n-nodes-base.function","typeVersion":1,"parameters":{"functionCode":"const items = $input.all();\nif (!items.length) {\n  return items;\n}\n\nconst source = items[0].json ?? {};\nconst candidates = [];\n\nconst possibleArrays = [\n  source.data,\n  source.result,\n  source.videos,\n  source.aweme_list,\n  source.itemList,\n  source.items,\n];\n\nfor (const arr of possibleArrays) {\n  if (Array.isArray(arr)) {\n    candidates.push(...arr);\n  }\n}\n\nif (!candidates.length && source.video_list && typeof source.video_list === 'object') {\n  candidates.push(...Object.values(source.video_list));\n}\n\nconst escapeText = (value) => {\n  if (value === undefined || value === null) return null;\n  if (typeof value !== 'string') return String(value);\n  return value;\n};\n\nconst output = [];\n\nfor (const raw of candidates) {\n  if (!raw || typeof raw !== 'object') continue;\n\n  const stats = raw.statistics || raw.stats || {};\n  const author = raw.author || {};\n  const id = raw.id || raw.video_id || raw.aweme_id || raw.aweme?.id || raw.video?.id;\n  if (!id) continue;\n\n  let videoUrl = raw.video_url || raw.share_url || raw.play_url || raw.share_url_long;\n  if (!videoUrl && author.unique_id) {\n    videoUrl = `https://www.tiktok.com/@${author.unique_id}/video/${id}`;\n  }\n\n  const hashtags = Array.isArray(raw.hashtags)\n    ? raw.hashtags.map((h) => h.name || h.title).filter(Boolean)\n    : Array.isArray(raw.challenge_info)\n      ? raw.challenge_info.map((h) => h.challenge_name).filter(Boolean)\n      : [];\n\n  const niche = hashtags.length ? hashtags[0] : raw.category || raw.desc || null;\n\n  output.push({\n    json: {\n      id,\n      video_url: videoUrl || null,\n      niche,\n      region: raw.region || source.region || 'us',\n      like_count: raw.like_count ?? stats.diggCount ?? stats.likeCount ?? stats.play_count ?? 0,\n      comment_count: raw.comment_count ?? stats.commentCount ?? 0,\n      share_count: raw.share_count ?? stats.shareCount ?? 0,\n      comments_status: raw.comments_status || 'pending'\n    }\n  });\n}\n\nreturn output;\n"},"position":[1330,300]},{"id":"DB_Upsert_Trending","name":"DB: Upsert Trending","type":"n8n-nodes-base.postgres","typeVersion":2.6,"parameters":{"table":{"mode":"name","value":"[REDACTED]"},"schema":{"mode":"name","value":"public"},"dataMode":"autoMapInputData","operation":"upsert","columnToMatchOn":"id"},"position":[1580,300]}],"connections":{"Cron: Trending":{"main":[[{"node":"DB: Ensure Tables","type":"main","index":0}]]},"DB: Ensure Tables":{"main":[[{"node":"Guardrail: Feed Limit","type":"main","index":0}]]},"HTTP: Fetch Trending":{"main":[[{"node":"Function: Normalize Trending","type":"main","index":0}]]},"Guardrail: Feed Limit":{"main":[[{"node":"HTTP: Fetch Trending","type":"main","index":0}]]},"Function: Normalize Trending":{"main":[[{"node":"DB: Upsert Trending","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"811ee23b-fd7a-4821-99b6-f7f85e8dff7e","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:25.681Z","createdAt":"2026-02-16T10:14:25.681Z","role":"workflow:owner","workflowId":"zijbGo5541A59nBn","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"Validate_Data","name":"Validate Data","type":"n8n-nodes-base.function","typeVersion":1,"parameters":{"functionCode":"const items = $input.all();\nconst validatedItems = [];\n\nfor (const item of items) {\n  const data = item.json;\n  \n  // Validate required fields\n  const errors = [];\n  \n  // Check for empty or invalid data\n  if (!data || typeof data !== 'object') {\n    errors.push('Invalid data structure');\n  }\n  \n  // Validate required fields based on expected data shape\n  if (!data.id) {\n    errors.push('Missing required field: id');\n  }\n  \n  if (errors.length > 0) {\n    console.log('Validation errors:', errors);\n    continue; // Skip invalid items\n  }\n  \n  validatedItems.push(item);\n}\n\nif (validatedItems.length === 0) {\n  throw new Error('No valid data to process after validation');\n}\n\nreturn validatedItems;"},"position":[400,300]}},{"type":"addConnection","source":"Cron: Trending","target":"Validate Data"},{"type":"addConnection","source":"Validate Data","target":"DB: Ensure Tables"},{"type":"removeConnection","source":"Cron: Trending","target":"DB: Ensure Tables"}]


workflow_id: WT5rKEjFtw4f0uKO
workflow_name: Test_U4-02
trigger: partial_update
created_at: 2026-02-16 10:14:55
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:45.607Z","createdAt":"2026-02-16T10:14:45.607Z","id":"WT5rKEjFtw4f0uKO","name":"Test_U4-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger-001","name":"Webhook Trigger","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"test-foodtracker","options":{},"httpMethod":"POST","responseMode":"lastNode"},"position":[250,300]},{"id":"prepare-test-message-001","name":"Prepare Test Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","options":{"includeBinary":false},"assignments":{"assignments":[{"id":"msg-id","name":"message","type":"object","value":"={{ { message_id: 99999, from: { id: 682776858, is_bot: false, first_name: 'TestUser' }, chat: { id: 682776858, first_name: 'TestUser', type: 'private' }, date: Math.floor(Date.now() / 1000), text: $json.test_message || 'запиши 200г курицы' } }}"}]},"duplicateItem":false},"position":[450,300]},{"id":"call-foodtracker-001","name":"Call FoodTracker","type":"n8n-nodes-base.executeWorkflow","typeVersion":1.2,"parameters":{"mode":"once","source":"database","options":{"waitForSubWorkflow":true},"workflowId":"sw3Qs3Fe3JahEbbW"},"position":[650,300]},{"id":"extract-result-001","name":"Extract Result","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Extract result from FoodTracker execution\nconst inputData = $input.all();\n\nreturn [{\n  json: {\n    test_status: 'success',\n    input_received: inputData.length > 0 ? inputData[0].json : null,\n    result_summary: 'FoodTracker processed test message',\n    timestamp: new Date().toISOString(),\n    note: 'Check FoodTracker execution logs for full processing details'\n  }\n}];"},"position":[850,300]}],"connections":{"Webhook Trigger":{"main":[[{"node":"Prepare Test Message","type":"main","index":0}]]},"Call FoodTracker":{"main":[[{"node":"Extract Result","type":"main","index":0}]]},"Prepare Test Message":{"main":[[{"node":"Call FoodTracker","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"620b1a94-de89-4d65-b7b3-ece82b0131f1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:45.607Z","createdAt":"2026-02-16T10:14:45.607Z","role":"workflow:owner","workflowId":"WT5rKEjFtw4f0uKO","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"send-email-001","name":"Send Email","type":"n8n-nodes-base.gmail","typeVersion":1.2,"parameters":{"operation":"send","from":"czlonkowski@gmail.com","to":"czlonkowski@gmail.com","subject":"FoodTracker Test Result","body":"={{ JSON.stringify($json) }}","options":{}},"position":[1050,250]}},{"type":"addNode","node":{"id":"send-slack-001","name":"Send Slack Message","type":"n8n-nodes-base.slack","typeVersion":1.1,"parameters":"{\"operation\":\"sendMessage\",\"channel\":\"#general\",\"text\":\"={{ JSON.stringify($json) }}\",\"options\":{}}","position":[1050,400]}},{"type":"addConnection","source":"Extract Result","target":"Send Email"},{"type":"addConnection","source":"Extract Result","target":"Send Slack Message"}]


workflow_id: mr49jzpz817VeCd2
workflow_name: Test_U3-04
trigger: partial_update
created_at: 2026-02-16 10:14:55
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:30.544Z","createdAt":"2026-02-16T10:14:30.544Z","id":"mr49jzpz817VeCd2","name":"Test_U3-04","description":null,"active":false,"isArchived":false,"nodes":[{"id":"eb0f56d8-a923-4a38-84f4-9bfa5a1e7cd1","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"days","daysInterval":1,"triggerAtHour":9}]}},"position":[250,300]},{"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","name":"Fetch Etsy Search Results","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/search?q=christmas&explicit=1&order=most_relevant","method":"GET","options":{"response":{"response":{"responseFormat":"text"}}},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}]}},"position":[450,300]},{"id":"b2c3d4e5-f678-9012-bcde-f12345678901","name":"Extract Product Data","type":"n8n-nodes-base.htmlExtract","typeVersion":1,"parameters":{"sourceData":"json","dataPropertyName":"data","extractionValues":{"values":[{"key":"productTitle","cssSelector":"h3.[REDACTED]","returnArray":true,"returnValue":"text"},{"key":"price","cssSelector":"span.currency-value","returnArray":true,"returnValue":"text"},{"key":"productUrl","cssSelector":"a.listing-link","returnArray":true,"returnValue":"attribute","attributeName":"href"},{"key":"shopName","cssSelector":"p.[REDACTED]","returnArray":true,"returnValue":"text"},{"key":"reviewCount","cssSelector":"span.wt-text-caption","returnArray":true,"returnValue":"text"}]}},"position":[650,300]},{"id":"c3d4e5f6-7890-1234-cdef-123456789012","name":"Format Product Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const products = [];\nconst titles = $input.first().json.productTitle || [];\nconst prices = $input.first().json.price || [];\nconst urls = $input.first().json.productUrl || [];\nconst shops = $input.first().json.shopName || [];\nconst reviews = $input.first().json.reviewCount || [];\n\nconst maxLength = Math.min(titles.length, prices.length, urls.length, 20);\n\nfor (let i = 0; i < maxLength; i++) {\n  products.push({\n    title: titles[i],\n    price: prices[i],\n    url: 'https://www.etsy.com' + urls[i],\n    shop: shops[i] || 'N/A',\n    reviews: reviews[i] || 'N/A',\n    extractedDate: new Date().toISOString()\n  });\n}\n\nreturn products.map(p => ({ json: p }));"},"position":[850,300]},{"id":"d4e5f678-9012-3456-def0-123456789013","name":"Aggregate Products","type":"n8n-nodes-base.aggregate","typeVersion":1,"parameters":{"aggregate":"[REDACTED]"},"position":[1050,300]},{"id":"e5f67890-1234-5678-ef01-123456789014","name":"Analyze Trends with AI","type":"n8n-nodes-base.openAi","typeVersion":1.1,"parameters":{"prompt":{"messages":[{"role":"user","content":"=Analyze these Etsy Christmas products and provide insights:\n\n{{ JSON.stringify($json.data, null, 2) }}\n\nProvide:\n1. Top 5 trending product categories\n2. Price range analysis\n3. Most popular keywords\n4. Recommendations for sellers\n5. Market opportunities\n\nFormat as structured JSON with keys: categories, priceRange, keywords, recommendations, opportunities"}]},"options":{"maxTokens":"[REDACTED]","temperature":0.7},"resource":"chat","operation":"complete"},"position":[1250,250]},{"id":"f6789012-3456-7890-f012-123456789015","name":"Format AI Analysis","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const aiResponse = $input.first().json.choices[0].message.content;\nlet analysis;\n\ntry {\n  const jsonMatch = aiResponse.match(/\\{[\\s\\S]*\\}/);\n  if (jsonMatch) {\n    analysis = JSON.parse(jsonMatch[0]);\n  } else {\n    analysis = { rawAnalysis: aiResponse };\n  }\n} catch (e) {\n  analysis = { rawAnalysis: aiResponse };\n}\n\nanalysis.timestamp = new Date().toISOString();\nanalysis.productCount = $('Aggregate Products').first().json.data.length;\n\nreturn [{ json: analysis }];"},"position":[1450,250]},{"id":"01234567-89ab-cdef-0123-456789abcdef","name":"Save Products to Google Sheets","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"columns":{"mappingMode":"autoMapInputData"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":""},"documentId":{"__rl":true,"mode":"list","value":""}},"position":[1250,400]},{"id":"12345678-9abc-def0-1234-56789abcdef0","name":"Save AI Analysis to Google Sheets","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"columns":{"value":{"keywords":"={{ JSON.stringify($json.keywords) }}","timestamp":"={{ $json.timestamp }}","categories":"={{ JSON.stringify($json.categories) }}","priceRange":"={{ JSON.stringify($json.priceRange) }}","productCount":"={{ $json.productCount }}","opportunities":"={{ JSON.stringify($json.opportunities) }}","recommendations":"={{ JSON.stringify($json.recommendations) }}"},"schema":[{"id":"timestamp","type":"string","display":true,"required":false,"displayName":"timestamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"productCount","type":"number","display":true,"required":false,"displayName":"productCount","defaultMatch":false,"canBeUsedToMatch":true},{"id":"categories","type":"string","display":true,"required":false,"displayName":"categories","defaultMatch":false,"canBeUsedToMatch":true},{"id":"priceRange","type":"string","display":true,"required":false,"displayName":"priceRange","defaultMatch":false,"canBeUsedToMatch":true},{"id":"keywords","type":"string","display":true,"required":false,"displayName":"keywords","defaultMatch":false,"canBeUsedToMatch":true},{"id":"recommendations","type":"string","display":true,"required":false,"displayName":"recommendations","defaultMatch":false,"canBeUsedToMatch":true},{"id":"opportunities","type":"string","display":true,"required":false,"displayName":"opportunities","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[]},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":""},"documentId":{"__rl":true,"mode":"list","value":""}},"position":[1650,250]}],"connections":{"Schedule Trigger":{"main":[[{"node":"Fetch Etsy Search Results","type":"main","index":0}]]},"Aggregate Products":{"main":[[{"node":"Analyze Trends with AI","type":"main","index":0},{"node":"Save Products to Google Sheets","type":"main","index":0}]]},"Format AI Analysis":{"main":[[{"node":"Save AI Analysis to Google Sheets","type":"main","index":0}]]},"Format Product Data":{"main":[[{"node":"Aggregate Products","type":"main","index":0}]]},"Extract Product Data":{"main":[[{"node":"Format Product Data","type":"main","index":0}]]},"Analyze Trends with AI":{"main":[[{"node":"Format AI Analysis","type":"main","index":0}]]},"Fetch Etsy Search Results":{"main":[[{"node":"Extract Product Data","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"bc994ee0-27b2-462e-a35d-e5dbf3422346","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:30.544Z","createdAt":"2026-02-16T10:14:30.544Z","role":"workflow:owner","workflowId":"mr49jzpz817VeCd2","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"name":"Transform Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Transform and clean the product data\nconst products = $input.all().map(item => item.json);\n\n// Filter out invalid entries\nconst validProducts = products.filter(p => \n  p.title && p.price && p.url && p.title !== 'N/A'\n);\n\n// Normalize and transform data\nconst transformed = validProducts.map(p => ({\n  ...p,\n  // Clean price - remove currency symbols and normalize\n  priceNumeric: parseFloat(p.price.replace(/[^0-9.]/g, '')) || 0,\n  // Normalize URL\n  url: p.url.startsWith('http') ? p.url : 'https://www.etsy.com' + p.url,\n  // Add transformation timestamp\n  transformedAt: new Date().toISOString()\n}));\n\n\n// Sort by price\ntransformed.sort((a, b) => b.priceNumeric - a.priceNumeric);\n\nreturn transformed.map(p => ({ json: p }));"},"position":[950,300]}},{"type":"removeConnection","source":"Format Product Data","target":"Aggregate Products"},{"type":"addConnection","source":"Format Product Data","target":"Transform Data"},{"type":"addConnection","source":"Transform Data","target":"Aggregate Products"}]


workflow_id: uSfTdDI8YHaiyP24
workflow_name: Test_U4-01
trigger: partial_update
created_at: 2026-02-16 10:14:57
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:41.919Z","createdAt":"2026-02-16T10:14:41.919Z","id":"uSfTdDI8YHaiyP24","name":"Test_U4-01","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger","name":"Webhook - Receber Pergunta","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"shopify-ai-agent","httpMethod":"POST","responseCode":200,"responseData":"firstEntryJson","responseMode":"lastNode"},"position":[100,300]},{"id":"openai-chat","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion":1.3,"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o-mini"}},"position":[200,400]},{"id":"ai-agent","name":"AI Agent - Processar Pergunta","type":"@n8n/n8n-nodes-langchain.agent","typeVersion":3,"parameters":{"text":"={{ $json.question }}","onError":"continueErrorOutput","options":{"systemMessage":"Você é um assistente especializado em suporte ao cliente para uma loja Shopify. Use as informações disponíveis para responder perguntas sobre produtos, pedidos, políticas da loja e outras informações relevantes. Seja preciso, útil e profissional. Se não tiver certeza sobre algo, diga que vai verificar e forneça informações de contato."},"promptType":"define"},"position":[400,300]},{"id":"shopify-get-products","name":"Shopify - Buscar Produtos","type":"n8n-nodes-base.shopify","typeVersion":1,"parameters":{"resource":"product","operation":"getAll","authentication":"[REDACTED]"},"position":[600,200]},{"id":"shopify-get-orders","name":"Shopify - Buscar Pedidos","type":"n8n-nodes-base.shopify","typeVersion":1,"parameters":{"resource":"order","operation":"getAll","authentication":"[REDACTED]"},"position":[600,400]},{"id":"respond-to-webhook","name":"Responder ao Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"parameters":{"options":{"responseCode":200,"responseData":"={{ $json.response }}"}},"position":[800,300]},{"id":"vector-store-insert","name":"Vector Store - Salvar Dados","type":"@n8n/n8n-nodes-langchain.vectorStoreInMemoryInsert","typeVersion":1,"parameters":{"memoryKey":"[REDACTED]","clearStore":false},"position":[400,500]}],"connections":{"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent - Processar Pergunta","type":"ai_languageModel","index":0}]]},"Shopify - Buscar Pedidos":{"main":[[{"node":"Vector Store - Salvar Dados","type":"main","index":0}]]},"Shopify - Buscar Produtos":{"main":[[{"node":"Vector Store - Salvar Dados","type":"main","index":0}]]},"Webhook - Receber Pergunta":{"main":[[{"node":"AI Agent - Processar Pergunta","type":"main","index":0}]]},"AI Agent - Processar Pergunta":{"main":[[{"node":"Shopify - Buscar Produtos","type":"main","index":0},{"node":"Shopify - Buscar Pedidos","type":"main","index":0}],[{"node":"Responder ao Webhook","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"a304ac53-4068-45ed-8d07-a9a7ca68b1b4","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:41.919Z","createdAt":"2026-02-16T10:14:41.919Z","role":"workflow:owner","workflowId":"uSfTdDI8YHaiyP24","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"slack-notify","name":"Slack - Notificar","type":"n8n-nodes-base.slack","typeVersion":1.2,"parameters":{"channel":"#general","text":"={{ $json.response }}","otherOptions":{"username":"n8n Bot"}},"options":{}},"position":[800,500]},{"type":"addConnection","source":"AI Agent - Processar Pergunta","target":"Slack - Notificar"}]


workflow_id: WT5rKEjFtw4f0uKO
workflow_name: Test_U4-02
trigger: partial_update
created_at: 2026-02-16 10:14:58
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:45.607Z","createdAt":"2026-02-16T10:14:45.607Z","id":"WT5rKEjFtw4f0uKO","name":"Test_U4-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger-001","name":"Webhook Trigger","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"test-foodtracker","options":{},"httpMethod":"POST","responseMode":"lastNode"},"position":[250,300]},{"id":"prepare-test-message-001","name":"Prepare Test Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","options":{"includeBinary":false},"assignments":{"assignments":[{"id":"msg-id","name":"message","type":"object","value":"={{ { message_id: 99999, from: { id: 682776858, is_bot: false, first_name: 'TestUser' }, chat: { id: 682776858, first_name: 'TestUser', type: 'private' }, date: Math.floor(Date.now() / 1000), text: $json.test_message || 'запиши 200г курицы' } }}"}]},"duplicateItem":false},"position":[450,300]},{"id":"call-foodtracker-001","name":"Call FoodTracker","type":"n8n-nodes-base.executeWorkflow","typeVersion":1.2,"parameters":{"mode":"once","source":"database","options":{"waitForSubWorkflow":true},"workflowId":"sw3Qs3Fe3JahEbbW"},"position":[650,300]},{"id":"extract-result-001","name":"Extract Result","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Extract result from FoodTracker execution\nconst inputData = $input.all();\n\nreturn [{\n  json: {\n    test_status: 'success',\n    input_received: inputData.length > 0 ? inputData[0].json : null,\n    result_summary: 'FoodTracker processed test message',\n    timestamp: new Date().toISOString(),\n    note: 'Check FoodTracker execution logs for full processing details'\n  }\n}];"},"position":[850,300]}],"connections":{"Webhook Trigger":{"main":[[{"node":"Prepare Test Message","type":"main","index":0}]]},"Call FoodTracker":{"main":[[{"node":"Extract Result","type":"main","index":0}]]},"Prepare Test Message":{"main":[[{"node":"Call FoodTracker","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"620b1a94-de89-4d65-b7b3-ece82b0131f1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:45.607Z","createdAt":"2026-02-16T10:14:45.607Z","role":"workflow:owner","workflowId":"WT5rKEjFtw4f0uKO","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"updateNode","nodeName":"Send Slack Message","updates":{"parameters":{"operation":"sendMessage","channel":"#general","text":"={{ JSON.stringify($json) }}","options":{}}}}]


workflow_id: rVV82xvu0WJHaDRC
workflow_name: Test_U4-03
trigger: partial_update
created_at: 2026-02-16 10:14:58
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:49.870Z","createdAt":"2026-02-16T10:14:49.870Z","id":"rVV82xvu0WJHaDRC","name":"Test_U4-03","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook_waseller","name":"IN_Webhook Waseller","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"credito-odonto-lead","httpMethod":"POST","responseMode":"onReceived"},"position":[100,300]},{"id":"normalize_payload","name":"UTIL_Normalize Payload","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const payload = $json.body || $json;\nconst data = payload.data || {};\nconst message = data.message || {};\nconst phoneRaw = data.phoneNumber || data.number || data.key?.remoteJid?.replace(/@.+/, '') || '';\nconst phoneClean = phoneRaw.replace(/[^0-9]/g, '');\nconst phoneE164 = phoneClean ? (phoneClean.startsWith('55') ? '+' + phoneClean : '+55' + phoneClean) : '';\nlet messageText = message.text || message.conversation || '';\nlet messageType = 'text';\nconst pushName = data.senderName || data.pushName || 'Cliente';\nconst messageId = data.messageId || data.key?.id || `msg_${Date.now()}`;\nreturn [{json: {phone_clean: phoneClean, phone_e164: phoneE164, whatsapp_phone: phoneRaw, push_name: pushName, message_text: messageText, message_type: messageType, message_id: messageId, ts_received: new Date().toISOString()}}];"},"position":[300,300]},{"id":"check_duplicate","name":"LOGIC_Check Duplicate","type":"n8n-nodes-base.dataTable","typeVersion":1,"parameters":{"filters":{"message_id":"={{ $json.message_id }}"},"tableId":"sWh62cB9yCOhdOBG","operation":"get"},"position":[500,300]},{"id":"is_duplicate","name":"LOGIC_Is Duplicate?","type":"n8n-nodes-base.if","typeVersion":2,"parameters":{"conditions":{"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true"},"leftValue":"={{ $json.length > 0 }}"}]}},"position":[700,300]},{"id":"get_lead","name":"DATA_Get Lead","type":"n8n-nodes-base.dataTable","typeVersion":1,"parameters":{"filters":{"phone_e164":"={{ $json.phone_e164 }}"},"tableId":"uJ90yubjM9hi3Tlv","operation":"get"},"position":[900,200]},{"id":"healthcheck_sentinel","name":"OUT_HealthCheck Sentinel","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"return [{json: {status: 'parte_0_ok', nodes_active: 6, timestamp: new Date().toISOString(), workflow_id: $workflowId, execution_id: $executionId}}];"},"position":[1100,300]}],"connections":{"DATA_Get Lead":{"main":[[{"node":"OUT_HealthCheck Sentinel","type":"main","index":0}]]},"IN_Webhook Waseller":{"main":[[{"node":"UTIL_Normalize Payload","type":"main","index":0}]]},"LOGIC_Is Duplicate?":{"main":[[{"node":"DATA_Get Lead","type":"main","index":0}],[{"node":"DATA_Get Lead","type":"main","index":0}]]},"LOGIC_Check Duplicate":{"main":[[{"node":"LOGIC_Is Duplicate?","type":"main","index":0}]]},"UTIL_Normalize Payload":{"main":[[{"node":"LOGIC_Check Duplicate","type":"main","index":0}]]},"OUT_HealthCheck Sentinel":{"main":[[]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"1eef12e8-b29c-495b-8d30-cb4b7ae533c2","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:49.871Z","createdAt":"2026-02-16T10:14:49.871Z","role":"workflow:owner","workflowId":"rVV82xvu0WJHaDRC","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"logging_node","name":"LOG_Execution Log","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Log workflow execution details\nconst executionInfo = {\n  workflow_id: $workflowId,\n  execution_id: $executionId,\n  trigger: 'Webhook Waseller',\n  timestamp: new Date().toISOString(),\n  input_data: $json\n};\n\nconsole.log('Workflow Execution:', JSON.stringify(executionInfo, null, 2));\n\nreturn [{json: executionInfo}];"},"position":[300,500]}},{"type":"addConnection","source":"IN_Webhook Waseller","target":"LOG_Execution Log"}]


workflow_id: lg3fhAVTRoUyYXQ0
workflow_name: Test_U3-05
trigger: partial_update
created_at: 2026-02-16 10:15:00
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:37.537Z","createdAt":"2026-02-16T10:14:37.537Z","id":"lg3fhAVTRoUyYXQ0","name":"Test_U3-05","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger","name":"CodeREADr Postback","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"codereadr-postback","options":{},"httpMethod":"POST","responseData":"firstEntryJson","responseMode":"lastNode"},"position":[240,300]},{"id":"parse-scan","name":"Parse CodeREADr Data","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Parse CodeREADr postback data\nconst body = $input.item.json.body;\n\n// Extract barcode from various possible fields\nconst barcode = body.value || body.barcode_value || body.barcode || '';\n\nreturn {\n  barcode: barcode,\n  scanId: body.tid || '',\n  userId: body.user_id || '',\n  username: body.username || 'unknown',\n  timestamp: body.timestamp || new Date().toISOString(),\n  serviceId: body.service_id || '',\n  deviceId: body.device_id || ''\n};"},"position":[460,300]},{"id":"lookup-product","name":"Lookup in NCFootwear Sheet","type":"n8n-nodes-base.googleSheets","typeVersion":4.7,"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.barcode }}","lookupColumn":"Barcode"}]},"operation":"read","sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"[REDACTED]"}},"position":[680,300]},{"id":"check-found","name":"Product Found?","type":"n8n-nodes-base.if","typeVersion":2.1,"parameters":{"conditions":{"options":{"combineOperation":"any"},"conditions":[{"id":"empty-check","operator":{"type":"object","operation":"empty"},"leftValue":"={{ $json }}","rightValue":""}]}},"position":[900,300]},{"id":"respond-not-found","name":"Response - Not Found","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const barcode = $('Parse CodeREADr Data').item.json.barcode;\n\nreturn {\n  xml: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xml>\n  <status>0</status>\n  <message>❌ Product not found: ${barcode}</message>\n</xml>`\n};"},"position":[1120,140]},{"id":"create-clover-item","name":"Create in Clover","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"[REDACTED]","method":"POST","options":{},"sendBody":true,"contentType":"json","authentication":"[REDACTED]","bodyParameters":{"parameters":[{"name":"name","value":"={{ $('Lookup in NCFootwear Sheet').item.json.ProductName || $('Lookup in NCFootwear Sheet').item.json.Name || 'Unknown Product' }}"},{"name":"price","value":"={{ Math.round(Number($('Lookup in NCFootwear Sheet').item.json.Price || 0) * 100) }}"},{"name":"code","value":"={{ $('Parse CodeREADr Data').item.json.barcode }}"},{"name":"sku","value":"={{ $('Lookup in NCFootwear Sheet').item.json.SKU || $('Lookup in NCFootwear Sheet').item.json.sku || '' }}"}]},"genericAuthType":"[REDACTED]"},"position":[1120,460]},{"id":"respond-success","name":"Response - Success","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const product = $('Lookup in NCFootwear Sheet').item.json;\nconst productName = product.ProductName || product.Name || 'Product';\nconst price = product.Price || '0.00';\n\nreturn {\n  xml: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xml>\n  <status>1</status>\n  <message>✅ ${productName} - $${price}</message>\n  <record>Added to Clover</record>\n</xml>`\n};"},"position":[1340,460]}],"connections":{"Product Found?":{"main":[[{"node":"Response - Not Found","type":"main","index":0}],[{"node":"Create in Clover","type":"main","index":0}]]},"Create in Clover":{"main":[[{"node":"Response - Success","type":"main","index":0}]]},"CodeREADr Postback":{"main":[[{"node":"Parse CodeREADr Data","type":"main","index":0}]]},"Parse CodeREADr Data":{"main":[[{"node":"Lookup in NCFootwear Sheet","type":"main","index":0}]]},"Lookup in NCFootwear Sheet":{"main":[[{"node":"Product Found?","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"26c275b1-6bf5-4452-aaad-4702408185b4","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:37.538Z","createdAt":"2026-02-16T10:14:37.538Z","role":"workflow:owner","workflowId":"lg3fhAVTRoUyYXQ0","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"slack-notify","name":"Slack Notification","type":"n8n-nodes-base.slack","typeVersion":1.1,"parameters":{"channel":"#general","text":"={{ $('Parse CodeREADr Data').item.json.barcode }} - {{ $('Lookup in NCFootwear Sheet').item.json.ProductName || $('Lookup in NCFootwear Sheet').item.json.Name }} added to Clover","options":{}},"position":[1340,300]}},{"type":"addConnection","source":"Create in Clover","target":"Slack Notification"}]


workflow_id: uSfTdDI8YHaiyP24
workflow_name: Test_U4-01
trigger: partial_update
created_at: 2026-02-16 10:15:03
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:41.919Z","createdAt":"2026-02-16T10:14:41.919Z","id":"uSfTdDI8YHaiyP24","name":"Test_U4-01","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger","name":"Webhook - Receber Pergunta","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"shopify-ai-agent","httpMethod":"POST","responseCode":200,"responseData":"firstEntryJson","responseMode":"lastNode"},"position":[100,300]},{"id":"openai-chat","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","typeVersion":1.3,"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o-mini"}},"position":[200,400]},{"id":"ai-agent","name":"AI Agent - Processar Pergunta","type":"@n8n/n8n-nodes-langchain.agent","typeVersion":3,"parameters":{"text":"={{ $json.question }}","onError":"continueErrorOutput","options":{"systemMessage":"Você é um assistente especializado em suporte ao cliente para uma loja Shopify. Use as informações disponíveis para responder perguntas sobre produtos, pedidos, políticas da loja e outras informações relevantes. Seja preciso, útil e profissional. Se não tiver certeza sobre algo, diga que vai verificar e forneça informações de contato."},"promptType":"define"},"position":[400,300]},{"id":"shopify-get-products","name":"Shopify - Buscar Produtos","type":"n8n-nodes-base.shopify","typeVersion":1,"parameters":{"resource":"product","operation":"getAll","authentication":"[REDACTED]"},"position":[600,200]},{"id":"shopify-get-orders","name":"Shopify - Buscar Pedidos","type":"n8n-nodes-base.shopify","typeVersion":1,"parameters":{"resource":"order","operation":"getAll","authentication":"[REDACTED]"},"position":[600,400]},{"id":"respond-to-webhook","name":"Responder ao Webhook","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"parameters":{"options":{"responseCode":200,"responseData":"={{ $json.response }}"}},"position":[800,300]},{"id":"vector-store-insert","name":"Vector Store - Salvar Dados","type":"@n8n/n8n-nodes-langchain.vectorStoreInMemoryInsert","typeVersion":1,"parameters":{"memoryKey":"[REDACTED]","clearStore":false},"position":[400,500]}],"connections":{"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent - Processar Pergunta","type":"ai_languageModel","index":0}]]},"Shopify - Buscar Pedidos":{"main":[[{"node":"Vector Store - Salvar Dados","type":"main","index":0}]]},"Shopify - Buscar Produtos":{"main":[[{"node":"Vector Store - Salvar Dados","type":"main","index":0}]]},"Webhook - Receber Pergunta":{"main":[[{"node":"AI Agent - Processar Pergunta","type":"main","index":0}]]},"AI Agent - Processar Pergunta":{"main":[[{"node":"Shopify - Buscar Produtos","type":"main","index":0},{"node":"Shopify - Buscar Pedidos","type":"main","index":0}],[{"node":"Responder ao Webhook","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"a304ac53-4068-45ed-8d07-a9a7ca68b1b4","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:41.919Z","createdAt":"2026-02-16T10:14:41.919Z","role":"workflow:owner","workflowId":"uSfTdDI8YHaiyP24","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"slack-notify","name":"Slack - Notificar","type":"n8n-nodes-base.slack","typeVersion":1.2,"parameters":{"channel":"#general","text":"={{ $json.response }}","otherOptions":{"username":"n8n Bot"}},"position":[800,500]}},{"type":"addConnection","source":"AI Agent - Processar Pergunta","target":"Slack - Notificar"}]


workflow_id: Ced5o9DD8Td41O0b
workflow_name: Test_U4-07
trigger: partial_update
created_at: 2026-02-16 10:15:06
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:54.352Z","createdAt":"2026-02-16T10:14:54.352Z","id":"Ced5o9DD8Td41O0b","name":"Test_U4-07","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Daily at 8 AM","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.3,"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":24,"triggerAtHour":8}]}},"position":[250,300]},{"id":"http-news","name":"Fetch Top News","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"https://newsapi.org/v2/top-headlines?country=us&pageSize=5&apiKey=[REDACTED]","method":"GET","options":{},"authentication":"[REDACTED]"},"position":[500,300]},{"id":"code-format","name":"Format News","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const articles = $input.item.json.articles || [];\n\nlet emailBody = '<h1>📰 Daily Top News</h1>';\nemailBody += '<p>Here are today\\'s top headlines:</p>';\n\narticles.forEach((article, index) => {\n  emailBody += `\n    <div style=\"margin: 20px 0; padding: 15px; border-left: 3px solid #0066cc;\">\n      <h2 style=\"color: #0066cc;\">${index + 1}. ${article.title}</h2>\n      <p><strong>Source:</strong> ${article.source.name}</p>\n      <p>${article.description || 'No description available.'}</p>\n      <p><a href=\"${article.url}\" target=\"_blank\" style=\"color: #0066cc;\">Read More →</a></p>\n    </div>\n  `;\n});\n\nemailBody += '<hr><p style=\"color: #666; font-size: 12px;\">This is an automated daily news digest.</p>';\n\nreturn {\n  subject: `📰 Daily Top News - ${new Date().toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}`,\n  body: emailBody\n};","language":"javaScript"},"position":[750,300]},{"id":"gmail-send","name":"Send via Gmail","type":"n8n-nodes-base.gmail","typeVersion":2.1,"parameters":{"sendTo":"your-email@gmail.com","message":"={{ $json.body }}","options":{},"subject":"={{ $json.subject }}","resource":"message","emailType":"html","operation":"send"},"position":[1000,300]}],"connections":{"Format News":{"main":[[{"node":"Send via Gmail","type":"main","index":0}]]},"Daily at 8 AM":{"main":[[{"node":"Fetch Top News","type":"main","index":0}]]},"Fetch Top News":{"main":[[{"node":"Format News","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"4c59662b-6af2-4b22-ad4a-c2cc0dbec7a0","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:54.352Z","createdAt":"2026-02-16T10:14:54.352Z","role":"workflow:owner","workflowId":"Ced5o9DD8Td41O0b","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"success-confirm","name":"Success Confirmation","type":"n8n-nodes-base.noOp","typeVersion":1.2,"parameters":{"options":{}},"position":[1250,300]}},{"type":"addConnection","source":"Send via Gmail","target":"Success Confirmation"}]


workflow_id: WT5rKEjFtw4f0uKO
workflow_name: Test_U4-02
trigger: partial_update
created_at: 2026-02-16 10:15:07
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:45.607Z","createdAt":"2026-02-16T10:14:45.607Z","id":"WT5rKEjFtw4f0uKO","name":"Test_U4-02","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-trigger-001","name":"Webhook Trigger","type":"n8n-nodes-base.webhook","typeVersion":2,"parameters":{"path":"test-foodtracker","options":{},"httpMethod":"POST","responseMode":"lastNode"},"position":[250,300]},{"id":"prepare-test-message-001","name":"Prepare Test Message","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"mode":"manual","options":{"includeBinary":false},"assignments":{"assignments":[{"id":"msg-id","name":"message","type":"object","value":"={{ { message_id: 99999, from: { id: 682776858, is_bot: false, first_name: 'TestUser' }, chat: { id: 682776858, first_name: 'TestUser', type: 'private' }, date: Math.floor(Date.now() / 1000), text: $json.test_message || 'запиши 200г курицы' } }}"}]},"duplicateItem":false},"position":[450,300]},{"id":"call-foodtracker-001","name":"Call FoodTracker","type":"n8n-nodes-base.executeWorkflow","typeVersion":1.2,"parameters":{"mode":"once","source":"database","options":{"waitForSubWorkflow":true},"workflowId":"sw3Qs3Fe3JahEbbW"},"position":[650,300]},{"id":"extract-result-001","name":"Extract Result","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"mode":"runOnceForAllItems","jsCode":"// Extract result from FoodTracker execution\nconst inputData = $input.all();\n\nreturn [{\n  json: {\n    test_status: 'success',\n    input_received: inputData.length > 0 ? inputData[0].json : null,\n    result_summary: 'FoodTracker processed test message',\n    timestamp: new Date().toISOString(),\n    note: 'Check FoodTracker execution logs for full processing details'\n  }\n}];"},"position":[850,300]}],"connections":{"Webhook Trigger":{"main":[[{"node":"Prepare Test Message","type":"main","index":0}]]},"Call FoodTracker":{"main":[[{"node":"Extract Result","type":"main","index":0}]]},"Prepare Test Message":{"main":[[{"node":"Call FoodTracker","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"620b1a94-de89-4d65-b7b3-ece82b0131f1","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:45.607Z","createdAt":"2026-02-16T10:14:45.607Z","role":"workflow:owner","workflowId":"WT5rKEjFtw4f0uKO","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"send-email-001","name":"Send Email","type":"n8n-nodes-base.gmail","typeVersion":1.2,"parameters":{"operation":"send","from":"czlonkowski@gmail.com","to":"czlonkowski@gmail.com","subject":"FoodTracker Test Result","body":"={{ JSON.stringify($json) }}","options":{}},"position":[1050,250]}},{"type":"addNode","node":{"id":"send-slack-001","name":"Send Slack Message","type":"n8n-nodes-base.slack","typeVersion":1.1,"parameters":{"operation":"sendMessage","channel":"#general","text":"={{ JSON.stringify($json) }}","options":{}},"position":[1050,400]}},{"type":"addConnection","source":"Extract Result","target":"Send Email"},{"type":"addConnection","source":"Extract Result","target":"Send Slack Message"}]


workflow_id: vSxEywNcmCO9Vk5m
workflow_name: Test_U4-12
trigger: partial_update
operations: [{"type":"addConnection","source":"Document Upload Trigger","target":"Respond"}]
created_at: 2026-02-16 10:15:20
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:15:12.106Z","createdAt":"2026-02-16T10:15:12.106Z","id":"vSxEywNcmCO9Vk5m","name":"Test_U4-12","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook","name":"Document Upload Trigger","type":"n8n-nodes-base.webhook","typeVersion":1.2,"parameters":{"path":"grace-extract-doc","responseMode":"responseNode"},"position":[250,300]},{"id":"gemini","name":"Extract with Gemini","type":"n8n-nodes-base.httpRequest","typeVersion":4,"parameters":{"url":"=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent","method":"POST","sendBody":true,"contentType":"json","bodyParameters":{"parameters":[{"name":"contents","value":"={{ [{parts: [{text: 'Extract W-2 data: ' + $json.filename}]}] }}"}]}},"position":[450,300]},{"id":"save","name":"Save to Database","type":"n8n-nodes-base.set","typeVersion":3,"parameters":{"mode":"manual","assignments":{"assignments":[{"id":"status","name":"status","type":"string","value":"extracted"}]},"duplicateItem":false},"position":[650,300]},{"id":"respond","name":"Respond","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"parameters":{"respondWith":"json","responseBody":"={{ {status: 'success', client: $json.client} }}"},"position":[850,300]}],"connections":{"Save to Database":{"main":[[{"node":"Respond","type":"main","index":0}]]},"Extract with Gemini":{"main":[[{"node":"Save to Database","type":"main","index":0}]]},"Document Upload Trigger":{"main":[[{"node":"Extract with Gemini","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"a8e68e25-5086-4922-b066-3ee223b8fb17","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:15:12.106Z","createdAt":"2026-02-16T10:15:12.106Z","role":"workflow:owner","workflowId":"vSxEywNcmCO9Vk5m","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}


workflow_id: 00qLK0uISERIblb9
workflow_name: Test_U4-09
trigger: partial_update
created_at: 2026-02-16 10:15:22
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:15:05.432Z","createdAt":"2026-02-16T10:15:05.432Z","id":"00qLK0uISERIblb9","name":"Test_U4-09","description":null,"active":false,"isArchived":false,"nodes":[{"id":"schedule-trigger","name":"Daily at 10 AM","type":"n8n-nodes-base.scheduleTrigger","typeVersion":1.2,"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 10 * * *"}]}},"position":[240,340]},{"id":"manual-trigger","name":"Manual Test","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"parameters":{},"position":[240,180]},{"id":"generate-dates","name":"Generate Search Dates","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const results = [];\nconst today = new Date();\n\nfor (let outboundDays = 7; outboundDays <= 90; outboundDays++) {\n  const outboundDate = new Date(today);\n  outboundDate.setDate(today.getDate() + outboundDays);\n  \n  const dayOfWeek = outboundDate.getDay();\n  if (dayOfWeek !== 5 && dayOfWeek !== 6) continue;\n  \n  const stayOptions = [7, 10, 14];\n  \n  for (const stayDays of stayOptions) {\n    const returnDate = new Date(outboundDate);\n    returnDate.setDate(outboundDate.getDate() + stayDays);\n    \n    results.push({\n      json: {\n        origin: \"CPH\",\n        destination: \"SGN\",\n        outboundDate: outboundDate.toISOString().split('T')[0],\n        returnDate: returnDate.toISOString().split('T')[0],\n        stayDays: stayDays,\n        maxPriceDKK: 20000,\n        searchIndex: results.length + 1\n      }\n    });\n  }\n}\n\nconsole.log(`Generated ${results.length} searches`);\nreturn results.slice(0, 1);"},"position":[460,260]},{"id":"search-google-flights","name":"Search Google Flights","type":"n8n-nodes-base.httpRequest","typeVersion":4.3,"parameters":{"url":"[REDACTED]","options":{"timeout":10000}},"position":[680,260]},{"id":"parse-results","name":"Parse Results","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const item = $input.item;\nconst searchParams = item.json.searchParams || $('Generate Search Dates').first().json;\n\nif (!item.json || !item.json.body) {\n  console.log('No response');\n  return [];\n}\n\nconst html = typeof item.json.body === 'string' ? item.json.body : '';\nconst priceMatches = html.match(/([\\d,]+)\\s*(?:kr|DKK)/gi) || [];\n\nif (priceMatches.length === 0) {\n  console.log('No prices found');\n  return [];\n}\n\nconst maxPriceDKK = searchParams.maxPriceDKK || 20000;\nconst results = [];\n\nfor (const priceText of priceMatches.slice(0, 5)) {\n  const priceMatch = priceText.match(/([\\d,]+)/);\n  if (!priceMatch) continue;\n  \n  const priceNum = parseInt(priceMatch[1].replace(/,/g, ''));\n  \n  if (priceNum < maxPriceDKK) {\n    results.push({\n      json: {\n        outboundDate: searchParams.outboundDate,\n        returnDate: searchParams.returnDate,\n        stayDays: searchParams.stayDays,\n        price: priceNum,\n        priceText: priceText,\n        currency: 'DKK',\n        platform: 'Google Flights',\n        searchUrl: `https://www.google.com/travel/flights?hl=en&curr=DKK&q=Flights%20to%20${searchParams.destination}%20from%20${searchParams.origin}%20on%20${searchParams.outboundDate}%20through%20${searchParams.returnDate}%20business%20class`\n      }\n    });\n    break;\n  }\n}\n\nreturn results;"},"position":[900,180]},{"id":"format-telegram","name":"Format Telegram","type":"n8n-nodes-base.set","typeVersion":3.4,"parameters":{"options":{},"assignments":{"assignments":[{"id":"message","name":"message","type":"string","value":"={{ \"✈️ BUSINESS CLASS DEAL FOUND!\\n\\n🎯 CPH → SGN → CPH\\n📅 Out: \" + $json.outboundDate + \"\\n📅 Return: \" + $json.returnDate + \"\\n⏱️ Stay: \" + $json.stayDays + \" days\\n\\n💰 Price: \" + $json.price + \" DKK\\n✅ Under 20,000 DKK threshold!\\n🌐 Platform: \" + $json.platform + \"\\n\\n🔗 Search:\\n\" + $json.searchUrl }}"}]}},"position":[1120,180]},{"id":"send-telegram","name":"Send Telegram","type":"n8n-nodes-base.telegram","typeVersion":1.2,"parameters":{"text":"={{ $json.message }}","chatId":"-5094808424","operation":"sendMessage","additionalFields":{}},"position":[1340,180]},{"id":"handle-errors","name":"Handle Errors","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"const items = $input.all();\nfor (const item of items) {\n  const errorData = item.json || {};\n  const errorMsg = errorData.error || errorData.message || 'Unknown error';\n  console.error(`Search failed: ${errorMsg}`);\n}\nreturn [];"},"position":[900,380]}],"connections":{"Manual Test":{"main":[[{"node":"Generate Search Dates","type":"main","index":0}]]},"Parse Results":{"main":[[{"node":"Format Telegram","type":"main","index":0}]]},"Daily at 10 AM":{"main":[[{"node":"Generate Search Dates","type":"main","index":0}]]},"Format Telegram":{"main":[[{"node":"Send Telegram","type":"main","index":0}]]},"Generate Search Dates":{"main":[[{"node":"Search Google Flights","type":"main","index":0}]]},"Search Google Flights":{"main":[[{"node":"Parse Results","type":"main","index":0}],[{"node":"Handle Errors","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"f59b9fe3-4c21-4668-a682-a186282be211","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:15:05.433Z","createdAt":"2026-02-16T10:15:05.433Z","role":"workflow:owner","workflowId":"00qLK0uISERIblb9","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"id":"audit-log","name":"Audit Log","type":"n8n-nodes-base.readWriteFile","typeVersion":2,"parameters":{"fileName":"audit.log","operation":"append","options":{"fromEmail":""},"dataPropertyName":"data"},"position":[900,400]}},{"type":"addConnection","source":"Parse Results","target":"Audit Log"}]


workflow_id: 6rdAY7svno7DwEl9
workflow_name: Test_U4-04
trigger: partial_update
created_at: 2026-02-16 10:15:22
workflow_snapshot:
  {"updatedAt":"2026-02-16T10:14:50.921Z","createdAt":"2026-02-16T10:14:50.921Z","id":"6rdAY7svno7DwEl9","name":"Test_U4-04","description":null,"active":false,"isArchived":false,"nodes":[{"id":"webhook-start","name":"Start Point","type":"n8n-nodes-base.webhook","typeVersion":2.1,"parameters":{"path":"chat-validation","options":{},"responseMode":"streaming"},"position":[300,400]},{"id":"message-processor","name":"Message Processor","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Message Receipt Processing\nconst inputData = items[0].json;\n\nconst messageData = {\n  messageId: inputData.messageId || `msg_${Date.now()}`,\n  timestamp: new Date().toISOString(),\n  chatSession: inputData.chatSession || 'default',\n  message: inputData.message || inputData.query || 'Test message',\n  userId: inputData.userId || 'user_001',\n  channel: inputData.channel || 'web',\n  messageReceived: true,\n  receivedAt: new Date().toISOString()\n};\n\n// Add validation flags\nmessageData.validation = {\n  messageFormat: messageData.message && messageData.message.length > 0,\n  sessionValid: messageData.chatSession !== null,\n  userIdValid: messageData.userId !== null,\n  timestampValid: true\n};\n\nreturn [{ json: messageData }];"},"position":[500,400]},{"id":"system-health-check","name":"System Health Check","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"parameters":{"url":"https://[domain]/post","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({\n  action: 'chat_health_check',\n  timestamp: $now,\n  session: $json.chatSession,\n  checks: {\n    api_status: 'active',\n    database_connection: 'healthy',\n    response_time: Math.random() * 100 + 50,\n    memory_usage: Math.random() * 80 + 10\n  }\n}) }}","sendBody":true,"contentType":"json"},"position":[700,400]},{"id":"chat-processor","name":"Chat Processor","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Chat Request Processing and Response Generation\nconst messageData = items[0].json;\nconst healthData = items[1] ? items[1].json : { json: { checks: {} } };\n\n// Process the chat request\nconst processedRequest = {\n  originalMessage: messageData.message,\n  processedAt: new Date().toISOString(),\n  sessionId: messageData.chatSession,\n  userId: messageData.userId,\n  messageId: messageData.messageId,\n  \n  // System status from health check\n  systemHealth: healthData.json ? healthData.json.checks : {\n    api_status: 'active',\n    database_connection: 'healthy',\n    response_time: 75,\n    memory_usage: 45\n  },\n  \n  // Generate chat response based on input\n  generatedResponse: {\n    type: 'text',\n    content: [REDACTED](messageData.message),\n    confidence: Math.random() * 0.4 + 0.6, // 0.6 - 1.0\n    processingTime: Math.random() * 200 + 100,\n    responseId: `resp_${Date.now()}`,\n    timestamp: new Date().toISOString()\n  },\n  \n  // Validation results\n  validationResults: {\n    messageFormatValid: messageData.validation.messageFormat,\n    sessionValid: messageData.validation.sessionValid,\n    systemHealthy: healthData.json ? healthData.json.checks.api_status === 'active' : true,\n    responseGenerated: true,\n    overallScore: [REDACTED](messageData, healthData)\n  }\n};\n\n// Helper function to generate contextual chat responses\nfunction [REDACTED](inputMessage) {\n  const message = inputMessage.toLowerCase();\n  \n  if (message.includes('hello') || message.includes('hi')) {\n    return 'Hello! How can I assist you today?';\n  } else if (message.includes('help')) {\n    return 'I\\'m here to help! What do you need assistance with?';\n  } else if (message.includes('weather')) {\n    return 'I can help you with weather information. What location are you interested in?';\n  } else if (message.includes('time')) {\n    return `The current time is ${new Date().toLocaleTimeString()}.`;\n  } else if (message.includes('thank')) {\n    return 'You\\'re welcome! Is there anything else I can help you with?';\n  } else {\n    return `I understand you said: \"${inputMessage}\". How can I help you with that?`;\n  }\n}\n\n// Calculate overall validation score\nfunction [REDACTED](messageData, healthData) {\n  let score = 0;\n  let maxScore = 0;\n  \n  // Message validation (25 points)\n  maxScore += 25;\n  if (messageData.validation.messageFormat) score += 25;\n  \n  // Session validation (25 points)\n  maxScore += 25;\n  if (messageData.validation.sessionValid) score += 25;\n  \n  // System health (25 points)\n  maxScore += 25;\n  if (healthData.json && healthData.json.checks.api_status === 'active') {\n    score += 25;\n  } else {\n    score += 25; // Default assumption\n  }\n  \n  // Response generation (25 points)\n  maxScore += 25;\n  score += 25; // Always true in this context\n  \n  return Math.round((score / maxScore) * 100);\n}\n\nreturn [{ json: processedRequest }];"},"position":[900,400]},{"id":"response-formatter","name":"Response Formatter","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Response Formatting for Delivery\nconst processedData = items[0].json;\n\n// Format the final response for chat interface\nconst formattedResponse = {\n  // Chat response data\n  chatResponse: {\n    messageId: processedData.generatedResponse.responseId,\n    replyTo: processedData.messageId,\n    sessionId: processedData.sessionId,\n    userId: processedData.userId,\n    content: processedData.generatedResponse.content,\n    type: processedData.generatedResponse.type,\n    timestamp: processedData.generatedResponse.timestamp,\n    confidence: processedData.generatedResponse.confidence,\n    processingTime: processedData.generatedResponse.processingTime\n  },\n  \n  // Validation summary\n  validationSummary: {\n    overallScore: processedData.validationResults.overallScore,\n    status: processedData.validationResults.overallScore >= 80 ? 'PASS' : 'FAIL',\n    checks: {\n      messageFormat: processedData.validationResults.messageFormatValid ? 'PASS' : 'FAIL',\n      sessionValid: processedData.validationResults.sessionValid ? 'PASS' : 'FAIL',\n      systemHealth: processedData.validationResults.systemHealthy ? 'PASS' : 'FAIL',\n      responseGenerated: processedData.validationResults.responseGenerated ? 'PASS' : 'FAIL'\n    },\n    recommendations: [REDACTED](processedData.validationResults)\n  },\n  \n  // System metrics\n  systemMetrics: {\n    healthStatus: processedData.systemHealth,\n    validationTimestamp: new Date().toISOString(),\n    processingComplete: true\n  },\n  \n  // Approval required flag\n  requiresApproval: processedData.validationResults.overallScore < 90,\n  approvalReason: processedData.validationResults.overallScore < 90 ? \n    'Validation score below 90% threshold' : null,\n  \n  // Delivery metadata\n  deliveryInfo: {\n    readyForDelivery: true,\n    deliveryMethod: 'chat_interface',\n    priority: processedData.validationResults.overallScore >= 95 ? 'high' : 'normal',\n    [REDACTED]: new Date(Date.now() + 1000).toISOString()\n  }\n};\n\n// Generate recommendations based on validation results\nfunction [REDACTED](validationResults) {\n  const recommendations = [];\n  \n  if (!validationResults.messageFormatValid) {\n    recommendations.push('Improve message format validation');\n  }\n  \n  if (!validationResults.sessionValid) {\n    recommendations.push('Verify chat session management');\n  }\n  \n  if (!validationResults.systemHealthy) {\n    recommendations.push('Check system health and connectivity');\n  }\n  \n  if (validationResults.overallScore < 80) {\n    recommendations.push('Review and improve overall chat system performance');\n  }\n  \n  if (recommendations.length === 0) {\n    recommendations.push('All systems operating optimally');\n  }\n  \n  return recommendations;\n}\n\nreturn [{ json: formattedResponse }];"},"position":[1100,400]},{"id":"approval-checkpoint","name":"Review Checkpoint","type":"n8n-nodes-base.wait","typeVersion":1.1,"parameters":{"resume":"webhook","options":{"rawBody":true}},"position":[1300,400]},{"id":"approval-decision","name":"Decision Point","type":"n8n-nodes-base.if","typeVersion":2.2,"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"[REDACTED]","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.body.action }}","rightValue":"approved"}]}},"position":[1500,400]},{"id":"delivery-processor","name":"Delivery Processor","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Final Response Delivery (Approved Path)\nconst originalData = items[0].json;\nconst approvalData = items[1].json;\n\n// Create final delivery response\nconst finalResponse = {\n  status: 'delivered',\n  timestamp: new Date().toISOString(),\n  deliveryId: `delivery_${Date.now()}`,\n  \n  // Original chat response\n  chatResponse: originalData.chatResponse,\n  \n  // Delivery confirmation\n  [REDACTED]: {\n    approved: true,\n    approvedAt: approvalData.body ? approvalData.body.timestamp : new Date().toISOString(),\n    approvedBy: approvalData.body ? approvalData.body.approver : 'system',\n    deliveryMethod: 'chat_interface',\n    deliveryStatus: 'completed'\n  },\n  \n  // Final validation summary\n  finalValidation: {\n    ...originalData.validationSummary,\n    approvalStatus: 'approved',\n    deliveryCompleted: true\n  },\n  \n  // System completion\n  systemStatus: {\n    workflowCompleted: true,\n    completedAt: new Date().toISOString(),\n    totalProcessingTime: originalData.chatResponse.processingTime,\n    finalScore: originalData.validationSummary.overallScore\n  },\n  \n  // Success message\n  message: 'Chat functionality validation completed successfully. Response delivered to user.',\n  \n  // Next actions\n  nextActions: [\n    'Monitor chat response effectiveness',\n    'Log interaction for analytics',\n    'Update chat system metrics'\n  ]\n};\n\nreturn [{ json: finalResponse }];"},"position":[1700,320]},{"id":"rejection-handler","name":"Rejection Handler","type":"n8n-nodes-base.code","typeVersion":2,"parameters":{"jsCode":"// Rejection Handler (Rejected Path)\nconst originalData = items[0].json;\nconst rejectionData = items[1].json;\n\n// Create rejection response\nconst rejectionResponse = {\n  status: 'rejected',\n  timestamp: new Date().toISOString(),\n  rejectionId: `rejection_${Date.now()}`,\n  \n  // Original data reference\n  originalRequest: {\n    messageId: originalData.chatResponse.messageId,\n    sessionId: originalData.chatResponse.sessionId,\n    userId: originalData.chatResponse.userId\n  },\n  \n  // Rejection details\n  rejectionInfo: {\n    rejected: true,\n    rejectedAt: rejectionData.body ? rejectionData.body.timestamp : new Date().toISOString(),\n    rejectedBy: rejectionData.body ? rejectionData.body.rejector : 'system',\n    reason: rejectionData.body ? rejectionData.body.reason : 'Failed validation requirements',\n    validationScore: originalData.validationSummary.overallScore\n  },\n  \n  // Alternative actions\n  alternativeActions: [\n    'Review and improve chat response quality',\n    'Re-run validation with updated parameters',\n    'Escalate to human operator',\n    'Use fallback response template'\n  ],\n  \n  // System status\n  systemStatus: {\n    workflowCompleted: true,\n    completedAt: new Date().toISOString(),\n    status: '[REDACTED]'\n  },\n  \n  // Failure message\n  message: 'Chat response rejected. Alternative processing required.',\n  \n  // Recommended next steps\n  recommendations: originalData.validationSummary.recommendations\n};\n\nreturn [{ json: rejectionResponse }];"},"position":[1700,480]},{"id":"final-response","name":"Final Response","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"parameters":{"options":{},"respondWith":"json","responseBody":"={{ JSON.stringify({\n  workflowCompleted: true,\n  timestamp: $now,\n  result: $json,\n  processingStatus: 'completed'\n}, null, 2) }}"},"position":[1900,400]}],"connections":{"Start Point":{"main":[[{"node":"Message Processor","type":"main","index":0}]]},"Chat Processor":{"main":[[{"node":"Response Formatter","type":"main","index":0}]]},"Decision Point":{"main":[[{"node":"Delivery Processor","type":"main","index":0}],[{"node":"Rejection Handler","type":"main","index":0}]]},"Message Processor":{"main":[[{"node":"System Health Check","type":"main","index":0},{"node":"Chat Processor","type":"main","index":0}]]},"Rejection Handler":{"main":[[{"node":"Final Response","type":"main","index":0}]]},"Review Checkpoint":{"main":[[{"node":"Decision Point","type":"main","index":0}]]},"Delivery Processor":{"main":[[{"node":"Final Response","type":"main","index":0}]]},"Response Formatter":{"main":[[{"node":"Review Checkpoint","type":"main","index":0}]]},"System Health Check":{"main":[[{"node":"Chat Processor","type":"main","index":1}]]}},"settings":{"executionOrder":"v1","saveDataErrorExecution":"all","saveDataSuccessExecution":"all","saveManualExecutions":true,"saveExecutionProgress":true,"callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"c1436a92-9bbd-4a68-93c3-7f7504a46038","activeVersionId":null,"versionCounter":1,"triggerCount":0,"shared":[{"updatedAt":"2026-02-16T10:14:50.921Z","createdAt":"2026-02-16T10:14:50.921Z","role":"workflow:owner","workflowId":"6rdAY7svno7DwEl9","projectId":"IEtLGz5ifmZLQuqt","project":{"updatedAt":"2026-01-27T07:13:02.277Z","createdAt":"2026-01-27T07:09:56.520Z","id":"IEtLGz5ifmZLQuqt","name":"a a <czlonkowski@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectRelations":[{"updatedAt":"2026-01-27T07:09:56.520Z","createdAt":"2026-01-27T07:09:56.520Z","userId":"b6749013-2e56-48f1-a40e-1f6178895b17","projectId":"IEtLGz5ifmZLQuqt","user":{"updatedAt":"2026-02-16T03:05:32.000Z","createdAt":"2026-01-27T07:09:56.466Z","id":"b6749013-2e56-48f1-a40e-1f6178895b17","email":"czlonkowski@gmail.com","firstName":"a","lastName":"a","personalizationAnswers":{"version":"v4","personalization_survey_submitted_at":"2026-01-27T07:13:08.058Z","personalization_survey_n8n_version":"2.4.6"},"settings":{"userActivated":false},"disabled":false,"mfaEnabled":false,"lastActiveAt":"2026-02-16","isPending":false}}]}}],"tags":[],"activeVersion":null}

operations:
  [{"type":"addNode","node":{"name":"Payload Type Switch","type":"n8n-nodes-base.switch","typeVersion":1,"position":[900,400]}}]


