WARNING: Genesis additions not found at e:\genesis-system\setup\antigravity_profile_additions.ps1 dYs? Antigravity Terminal Ready === Step 1: Test API key - List existing workflows === SUCCESS - API key works! Existing workflows: { "data": [ { "updatedAt": "2026-01-05T01:33:39.674Z", "createdAt": "2026-01-05T01:33:39.674Z", "id": "mOxY2ZR0IKHll2Mr", "name": "Genesis MCP Sync", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "schedule_trigger", "name": "Every 15 Minutes", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": "250 300" }, { "parameters": "@{method=POST; url=https://systematic-invite-cloth-terms.trycloudflare.com/mcp-sync; options=}", "id": "flush_sync", "name": "Flush MCP Queue", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "500 300" }, { "parameters": "@{url=https://systematic-invite-cloth-terms.trycloudflare.com/mcp-status; options=}", "id": "get_status", "name": "Get Status", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "750 300" }, { "parameters": "@{conditions=}", "id": "check_failures", "name": "Failures \u003e 3?", "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": "1000 300" }, { "parameters": "@{method=POST; url=https://slack.com/api/chat.postMessage; sendHeaders=True; headerParameters=; sendBody=True; bodyParameters=}", "id": "slack_alert", "name": "Send Alert", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "1250 200" } ], "connections": { "Every 15 Minutes": { "main": "System.Object[]" }, "Flush MCP Queue": { "main": "System.Object[]" }, "Get Status": { "main": "System.Object[]" }, "Failures \u003e 3?": { "main": "System.Object[] System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:Every 15 Minutes": { "recurrenceRules": "" } }, "meta": null, "pinData": null, "versionId": "863bc968-48fa-4a38-8e02-3865fe420e51", "activeVersionId": "863bc968-48fa-4a38-8e02-3865fe420e51", "triggerCount": 1, "shared": [ { "updatedAt": "2026-01-05T01:33:39.674Z", "createdAt": "2026-01-05T01:33:39.674Z", "role": "workflow:owner", "workflowId": "mOxY2ZR0IKHll2Mr", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-01-05T01:33:39.679Z", "createdAt": "2026-01-05T01:33:39.679Z", "versionId": "863bc968-48fa-4a38-8e02-3865fe420e51", "workflowId": "mOxY2ZR0IKHll2Mr", "nodes": [ "@{parameters=; id=schedule_trigger; name=Every 15 Minutes; type=n8n-nodes-base.scheduleTrigger; typeVersion=1.2; position=System.Object[]}", "@{parameters=; id=flush_sync; name=Flush MCP Queue; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=get_status; name=Get Status; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=check_failures; name=Failures \u003e 3?; type=n8n-nodes-base.if; typeVersion=2.2; position=System.Object[]}", "@{parameters=; id=slack_alert; name=Send Alert; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}" ], "connections": { "Every 15 Minutes": "@{main=System.Object[]}", "Flush MCP Queue": "@{main=System.Object[]}", "Get Status": "@{main=System.Object[]}", "Failures \u003e 3?": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-30T20:22:00.946Z", "createdAt": "2025-12-30T20:22:00.946Z", "id": "zEDmMrFnCAFqXgwf", "name": "Genesis Email Drip Sequence", "active": true, "isArchived": false, "nodes": [ { "id": "webhook-trigger", "name": "New Subscriber Webhook", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": "0 300", "parameters": "@{httpMethod=POST; path=email-sequence-start; responseMode=onReceived}" }, { "id": "extract-subscriber", "name": "Extract Subscriber Data", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "220 300", "parameters": "@{jsCode=const data = $json.body || $json;\n\nconst sequence = [\n { day: 0, subject: \u0027Welcome to Genesis!\u0027, template: \u0027welcome\u0027 },\n { day: 3, subject: \u0027Your first steps to success\u0027, template: \u0027getting_started\u0027 },\n { day: 7, subject: \u0027See how others achieved 300% growth\u0027, template: \u0027case_study\u0027 },\n { day: 10, subject: \u0027Exclusive offer just for you\u0027, template: \u0027offer\u0027 },\n { day: 14, subject: \u0027Last chance - Your offer expires soon\u0027, template: \u0027urgency\u0027 }\n];\n\nreturn [{\n json: {\n email: data.email,\n firstName: data.firstName || data.name?.split(\u0027 \u0027)[0] || \u0027Friend\u0027,\n lastName: data.lastName || data.name?.split(\u0027 \u0027).slice(1).join(\u0027 \u0027) || \u0027\u0027,\n company: data.company || \u0027\u0027,\n sequenceStep: 0,\n sequence: sequence,\n currentEmail: sequence[0],\n startedAt: new Date().toISOString(),\n source: data.source || \u0027signup\u0027\n }\n}];}" }, { "id": "generate-email", "name": "Generate Email Content", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 300", "parameters": "@{jsCode=const subscriber = $json;\nconst email = subscriber.currentEmail;\n\nconst templates = {\n welcome: `Hi ${subscriber.firstName},\n\nWelcome aboard! We\u0027re thrilled to have you join us.\n\nHere\u0027s what you can expect:\n Powerful automation tools\n Revenue-generating workflows\n 24/7 autonomous operation\n\nReady to get started? Just reply to this email with your biggest challenge.\n\nBest,\nThe Genesis Team`,\n\n getting_started: `Hey ${subscriber.firstName},\n\nHope you\u0027re settling in well! Here are 3 quick wins to get you started:\n\n1. Set up your first lead capture workflow\n2. Connect your payment processor\n3. Create your email sequences\n\nNeed help? Our team is standing by.\n\nCheers,\nGenesis`,\n\n case_study: `${subscriber.firstName},\n\nWant to see real results?\n\nOne of our users increased their lead conversion by 300% in just 30 days using Genesis workflows.\n\nThe secret? Automated lead scoring and instant follow-up.\n\nClick here to read the full case study.\n\nTo your success,\nGenesis`,\n\n offer: `${subscriber.firstName},\n\nAs a valued early adopter, we have something special for you:\n\n?? 20% OFF your first 3 months\n\nUse code: GENESIS20\n\nThis offer is exclusive to you and expires in 4 days.\n\nGrab it now,\nGenesis`,\n\n urgency: `${subscriber.firstName},\n\nFinal reminder: Your 20% discount expires TONIGHT.\n\nCode: GENESIS20\n\nAfter midnight, the offer is gone forever.\n\nDon\u0027t miss out,\nGenesis`\n};\n\nreturn [{\n json: {\n ...subscriber,\n emailSubject: email.subject,\n emailBody: templates[email.template] || templates.welcome,\n sendAt: new Date().toISOString()\n }\n}];}" }, { "id": "slack-notification", "name": "Slack: Email Sent", "type": "n8n-nodes-base.slack", "typeVersion": 2.2, "position": "660 300", "parameters": "@{authentication=oAuth2; channel=general; text=?? *Email Sequence Update*\n\nRecipient: {{ $json.email }}\nStep: {{ $json.sequenceStep + 1 }}/5\nSubject: {{ $json.emailSubject }}\n\n_Next email in {{ $json.currentEmail.day }} days_}" } ], "connections": { "New Subscriber Webhook": { "main": "System.Object[]" }, "Extract Subscriber Data": { "main": "System.Object[]" }, "Generate Email Content": { "main": "System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": null, "meta": null, "pinData": null, "versionId": "c7cefe48-a788-41de-909e-b8fa6c74f8ff", "activeVersionId": "c7cefe48-a788-41de-909e-b8fa6c74f8ff", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-30T20:22:00.946Z", "createdAt": "2025-12-30T20:22:00.946Z", "role": "workflow:owner", "workflowId": "zEDmMrFnCAFqXgwf", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-30T20:22:00.950Z", "createdAt": "2025-12-30T20:22:00.950Z", "versionId": "c7cefe48-a788-41de-909e-b8fa6c74f8ff", "workflowId": "zEDmMrFnCAFqXgwf", "nodes": [ "@{id=webhook-trigger; name=New Subscriber Webhook; type=n8n-nodes-base.webhook; typeVersion=2; position=System.Object[]; parameters=}", "@{id=extract-subscriber; name=Extract Subscriber Data; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=generate-email; name=Generate Email Content; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=slack-notification; name=Slack: Email Sent; type=n8n-nodes-base.slack; typeVersion=2.2; position=System.Object[]; parameters=}" ], "connections": { "New Subscriber Webhook": "@{main=System.Object[]}", "Extract Subscriber Data": "@{main=System.Object[]}", "Generate Email Content": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-29T20:05:08.989Z", "createdAt": "2025-12-29T10:13:16.817Z", "id": "VLzda3uCD5SJuaho", "name": "Genesis Evolution Sprint Trigger", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "trigger", "name": "30-Min Evolution Check", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": "250 300" }, { "parameters": "@{method=POST; url=https://slack.com/api/chat.postMessage; sendHeaders=True; headerParameters=; sendBody=True; bodyParameters=}", "id": "slack", "name": "Evolution Reminder", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "500 300" } ], "connections": { "30-Min Evolution Check": { "main": "System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:30-Min Evolution Check": { "recurrenceRules": "" } }, "meta": null, "pinData": null, "versionId": "a0cb69d0-cad8-4391-b7f8-5fe934c329da", "activeVersionId": "a0cb69d0-cad8-4391-b7f8-5fe934c329da", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-29T10:13:16.817Z", "createdAt": "2025-12-29T10:13:16.817Z", "role": "workflow:owner", "workflowId": "VLzda3uCD5SJuaho", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-29T10:32:51.251Z", "createdAt": "2025-12-29T10:32:51.251Z", "versionId": "a0cb69d0-cad8-4391-b7f8-5fe934c329da", "workflowId": "VLzda3uCD5SJuaho", "nodes": [ "@{parameters=; id=trigger; name=30-Min Evolution Check; type=n8n-nodes-base.scheduleTrigger; typeVersion=1.2; position=System.Object[]}", "@{parameters=; id=slack; name=Evolution Reminder; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}" ], "connections": { "30-Min Evolution Check": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-19T16:36:47.473Z", "createdAt": "2026-02-19T16:36:47.169Z", "id": "mFgjCuAdssui233H", "name": "Genesis Rate Limit Reset Auto-Trigger", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "cron-8pm", "name": "8:01 PM Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1, "position": "240 300" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Genesis Rate Limit Reset - Spawn Agent Sessions\n// Triggers at 8:01pm when API rate limits reset\n\nconst timestamp = new Date().toISOString();\nconst sessions = [\n {\n name: \u0027aiva-daemon\u0027,\n command: \u0027cd /mnt/e/genesis-system \u0026\u0026 python3 AIVA/aiva_daemon.py\u0027,\n type: \u0027daemon\u0027,\n priority: 1\n },\n {\n name: \u0027claude-code-evolve\u0027,\n command: \u0027cd /mnt/e/genesis-system \u0026\u0026 claude --continue\u0027,\n type: \u0027agent\u0027,\n priority: 2\n },\n {\n name: \u0027gemini-swarm\u0027,\n command: \u0027cd /mnt/e/genesis-system \u0026\u0026 python3 core/genesis_execution_layer.py\u0027,\n type: \u0027swarm\u0027,\n priority: 3\n }\n];\n\nreturn sessions.map(s =\u003e ({\n json: {\n ...s,\n triggered_at: timestamp,\n reason: \u0027rate_limit_reset\u0027\n }\n}));}", "id": "prepare-sessions", "name": "Prepare Agent Sessions", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "460 300" }, { "parameters": "@{command=={{ $json.command }}}", "id": "spawn-session", "name": "Spawn Session", "type": "n8n-nodes-base.executeCommand", "typeVersion": 1, "position": "680 300" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Log results\nconst results = $input.all().map(item =\u003e ({\n name: item.json.name,\n status: item.json.exitCode === 0 ? \u0027spawned\u0027 : \u0027failed\u0027,\n timestamp: new Date().toISOString()\n}));\n\nreturn [{\n json: {\n event: \u0027rate_limit_reset_trigger\u0027,\n sessions_spawned: results.length,\n results: results,\n next_trigger: \u002720:01 tomorrow\u0027\n }\n}];}", "id": "log-results", "name": "Log Results", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "900 300" } ], "connections": { "8:01 PM Trigger": { "main": "System.Object[]" }, "Prepare Agent Sessions": { "main": "System.Object[]" }, "Spawn Session": { "main": "System.Object[]" } }, "settings": { "executionOrder": "v1" }, "staticData": { "node:8:01 PM Trigger": { "recurrenceRules": "" } }, "meta": { "description": "Triggers at 8:01pm when API rate limits reset. Spawns AIVA daemon, Claude Code sessions, and Gemini swarm to maximize resource utilization. Zero idle time.", "created_by": "Genesis Alpha Evolve", "created_at": "2026-02-11" }, "pinData": null, "versionId": "017b608a-5b89-4df9-af12-4b10aae2935e", "activeVersionId": "017b608a-5b89-4df9-af12-4b10aae2935e", "triggerCount": 1, "shared": [ { "updatedAt": "2026-02-19T16:36:47.169Z", "createdAt": "2026-02-19T16:36:47.169Z", "role": "workflow:owner", "workflowId": "mFgjCuAdssui233H", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-19T16:36:47.169Z", "createdAt": "2026-02-19T16:36:47.169Z", "versionId": "017b608a-5b89-4df9-af12-4b10aae2935e", "workflowId": "mFgjCuAdssui233H", "nodes": [ "@{parameters=; id=cron-8pm; name=8:01 PM Trigger; type=n8n-nodes-base.scheduleTrigger; typeVersion=1; position=System.Object[]}", "@{parameters=; id=prepare-sessions; name=Prepare Agent Sessions; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=spawn-session; name=Spawn Session; type=n8n-nodes-base.executeCommand; typeVersion=1; position=System.Object[]}", "@{parameters=; id=log-results; name=Log Results; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}" ], "connections": { "8:01 PM Trigger": "@{main=System.Object[]}", "Prepare Agent Sessions": "@{main=System.Object[]}", "Spawn Session": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-20T16:33:57.755Z", "createdAt": "2025-12-30T20:20:32.079Z", "id": "mVuA2YEh4X06NS3O", "name": "Genesis Lead Capture Pipeline", "active": true, "isArchived": false, "nodes": [ { "id": "webhook-trigger", "name": "Lead Form Webhook", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": "0 300", "parameters": "@{httpMethod=POST; path=genesis-lead-capture; responseMode=onReceived; responseData=allEntries}", "webhookId": "genesis-lead-capture" }, { "id": "validate-lead", "name": "Validate Lead Data", "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": "220 300", "parameters": "@{conditions=}" }, { "id": "score-lead", "name": "Score Lead (BANT)", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 200", "parameters": "@{jsCode=const lead = $json.body || $json;\nlet score = 0;\n\n// Budget scoring (0-25)\nconst budgetMap = {\n \u0027$50k+\u0027: 25, \u0027$25k-50k\u0027: 20, \u0027$10k-25k\u0027: 15, \u0027$5k-10k\u0027: 10, \u0027Under $5k\u0027: 5\n};\nscore += budgetMap[lead.budget] || 5;\n\n// Authority scoring (0-25)\nconst decisionMakers = [\u0027CEO\u0027, \u0027CTO\u0027, \u0027VP\u0027, \u0027Director\u0027, \u0027Owner\u0027, \u0027Founder\u0027];\nif (decisionMakers.some(title =\u003e (lead.jobTitle || \u0027\u0027).includes(title))) {\n score += 25;\n} else if ((lead.jobTitle || \u0027\u0027).includes(\u0027Manager\u0027)) {\n score += 15;\n} else {\n score += 5;\n}\n\n// Need/urgency scoring (0-25)\nconst timelineMap = {\n \u0027Immediate\u0027: 25, \u00271-3 months\u0027: 20, \u00273-6 months\u0027: 15, \u00276+ months\u0027: 10\n};\nscore += timelineMap[lead.timeline] || 10;\n\n// Company size scoring (0-25)\nconst sizeMap = {\n \u0027500+\u0027: 25, \u0027100-500\u0027: 20, \u002750-100\u0027: 15, \u002710-50\u0027: 10, \u00271-10\u0027: 5\n};\nscore += sizeMap[lead.companySize] || 10;\n\n// Determine tier\nlet tier = \u0027Cold\u0027;\nlet emoji = \u0027??\u0027;\nif (score \u003e= 75) { tier = \u0027Hot\u0027; emoji = \u0027??\u0027; }\nelse if (score \u003e= 50) { tier = \u0027Warm\u0027; emoji = \u0027???\u0027; }\n\nreturn [{\n json: {\n email: lead.email,\n name: lead.name || \u0027Unknown\u0027,\n company: lead.company || \u0027Not provided\u0027,\n jobTitle: lead.jobTitle || \u0027Not provided\u0027,\n budget: lead.budget || \u0027Not provided\u0027,\n timeline: lead.timeline || \u0027Not provided\u0027,\n companySize: lead.companySize || \u0027Not provided\u0027,\n message: lead.message || \u0027\u0027,\n source: lead.source || \u0027direct\u0027,\n leadScore: score,\n leadTier: tier,\n tierEmoji: emoji,\n scoredAt: new Date().toISOString()\n }\n}];}" }, { "id": "route-by-tier", "name": "Route by Lead Tier", "type": "n8n-nodes-base.switch", "typeVersion": 3, "position": "660 200", "parameters": "@{mode=rules; rules=; options=}" }, { "id": "slack-hot-lead", "name": "Slack: Hot Lead Alert", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "880 100", "parameters": "@{operation=executeQuery; query=INSERT INTO widget_leads (id, name, email, phone, status, notes, created_at)\nVALUES (\n gen_random_uuid()::text,\n COALESCE({{ $json[\"name\"] }}, {{ $json[\"contactName\"] }}, \u0027\u0027),\n COALESCE({{ $json[\"email\"] }}, \u0027\u0027),\n COALESCE({{ $json[\"phone\"] }}, {{ $json[\"phoneNumber\"] }}, \u0027\u0027),\n \u0027hot\u0027,\n CONCAT(\u0027Score:\u0027, {{ $json[\"leadScore\"] }}, \u0027/100 Source:\u0027, {{ $json[\"source\"] }}, \u0027 \u0027, {{ $json[\"company\"] }}),\n NOW()\n)\nON CONFLICT DO NOTHING; options=}", "credentials": "@{postgres=}" }, { "id": "slack-warm-lead", "name": "Slack: Warm Lead", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "880 200", "parameters": "@{operation=executeQuery; query=INSERT INTO widget_leads (id, name, email, phone, status, notes, created_at)\nVALUES (\n gen_random_uuid()::text,\n COALESCE({{ $json[\"name\"] }}, {{ $json[\"contactName\"] }}, \u0027\u0027),\n COALESCE({{ $json[\"email\"] }}, \u0027\u0027),\n COALESCE({{ $json[\"phone\"] }}, {{ $json[\"phoneNumber\"] }}, \u0027\u0027),\n \u0027warm\u0027,\n CONCAT(\u0027Score:\u0027, {{ $json[\"leadScore\"] }}, \u0027/100 Source:\u0027, {{ $json[\"source\"] }}, \u0027 \u0027, {{ $json[\"company\"] }}),\n NOW()\n)\nON CONFLICT DO NOTHING; options=}", "credentials": "@{postgres=}" }, { "id": "slack-cold-lead", "name": "Slack: Cold Lead", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "880 300", "parameters": "@{operation=executeQuery; query=INSERT INTO widget_leads (id, name, email, phone, status, notes, created_at)\nVALUES (\n gen_random_uuid()::text,\n COALESCE({{ $json[\"name\"] }}, {{ $json[\"contactName\"] }}, \u0027\u0027),\n COALESCE({{ $json[\"email\"] }}, \u0027\u0027),\n COALESCE({{ $json[\"phone\"] }}, {{ $json[\"phoneNumber\"] }}, \u0027\u0027),\n \u0027cold\u0027,\n CONCAT(\u0027Score:\u0027, {{ $json[\"leadScore\"] }}, \u0027/100 Source:\u0027, {{ $json[\"source\"] }}, \u0027 \u0027, {{ $json[\"company\"] }}),\n NOW()\n)\nON CONFLICT DO NOTHING; options=}", "credentials": "@{postgres=}" }, { "id": "invalid-lead", "name": "Log Invalid Lead", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": "440 400", "parameters": "@{mode=manual; fields=}" } ], "connections": { "Lead Form Webhook": { "main": "System.Object[]" }, "Validate Lead Data": { "main": "System.Object[] System.Object[]" }, "Score Lead (BANT)": { "main": "System.Object[]" }, "Route by Lead Tier": { "main": "System.Object[] System.Object[] System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": null, "meta": null, "pinData": null, "versionId": "e8a6705d-ade0-448c-8f96-90d680bcf2fc", "activeVersionId": "e8a6705d-ade0-448c-8f96-90d680bcf2fc", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-30T20:20:32.079Z", "createdAt": "2025-12-30T20:20:32.079Z", "role": "workflow:owner", "workflowId": "mVuA2YEh4X06NS3O", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-20T16:33:57.756Z", "createdAt": "2026-02-20T16:33:57.756Z", "versionId": "e8a6705d-ade0-448c-8f96-90d680bcf2fc", "workflowId": "mVuA2YEh4X06NS3O", "nodes": [ "@{id=webhook-trigger; name=Lead Form Webhook; type=n8n-nodes-base.webhook; typeVersion=2; position=System.Object[]; parameters=; webhookId=genesis-lead-capture}", "@{id=validate-lead; name=Validate Lead Data; type=n8n-nodes-base.if; typeVersion=2.2; position=System.Object[]; parameters=}", "@{id=score-lead; name=Score Lead (BANT); type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=route-by-tier; name=Route by Lead Tier; type=n8n-nodes-base.switch; typeVersion=3; position=System.Object[]; parameters=}", "@{id=slack-hot-lead; name=Slack: Hot Lead Alert; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}", "@{id=slack-warm-lead; name=Slack: Warm Lead; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}", "@{id=slack-cold-lead; name=Slack: Cold Lead; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}", "@{id=invalid-lead; name=Log Invalid Lead; type=n8n-nodes-base.set; typeVersion=3.4; position=System.Object[]; parameters=}" ], "connections": { "Lead Form Webhook": "@{main=System.Object[]}", "Validate Lead Data": "@{main=System.Object[]}", "Score Lead (BANT)": "@{main=System.Object[]}", "Route by Lead Tier": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-20T16:29:46.211Z", "createdAt": "2025-12-27T06:18:28.566Z", "id": "R4CAWEqCX7mt8FGU", "name": "Chat with Postgresql Database", "active": true, "isArchived": false, "nodes": [ { "id": "6501a54f-a68c-452d-b353-d7e871ca3780", "name": "When chat message received", "type": "@n8n/n8n-nodes-langchain.chatTrigger", "position": "-300 -80", "webhookId": "cf1de04f-3e38-426c-89f0-3bdb110a5dcf", "parameters": "@{options=}", "typeVersion": 1.1 }, { "id": "cd32221b-2a36-408d-b57e-8115fcd810c9", "name": "AI Agent", "type": "@n8n/n8n-nodes-langchain.agent", "position": "0 -80", "parameters": "@{agent=openAiFunctionsAgent; options=}", "typeVersion": 1.7 }, { "id": "8accbeeb-7eaf-4e9e-aabc-de8ab3a0459b", "name": "OpenAI Chat Model", "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "position": "-60 160", "parameters": "@{model=; options=}", "credentials": "@{openAiApi=}", "typeVersion": 1.2 }, { "id": "11f2013f-a080-4c9e-8773-c90492e2c628", "name": "Get Table Definition", "type": "n8n-nodes-base.postgresTool", "position": "780 140", "parameters": "@{query=select\n c.column_name,\n c.data_type,\n c.is_nullable,\n c.column_default,\n tc.constraint_type,\n ccu.table_name AS referenced_table,\n ccu.column_name AS referenced_column\nfrom\n information_schema.columns c\nLEFT join\n information_schema.key_column_usage kcu\n ON c.table_name = kcu.table_name\n AND c.column_name = kcu.column_name\nLEFT join\n information_schema.table_constraints tc\n ON kcu.constraint_name = tc.constraint_name\n AND tc.constraint_type = \u0027FOREIGN KEY\u0027\nLEFT join\n information_schema.constraint_column_usage ccu\n ON tc.constraint_name = ccu.constraint_name\nwhere\n c.table_name = \u0027{{ $fromAI(\"table_name\") }}\u0027\n AND c.table_schema = \u0027{{ $fromAI(\"schema_name\") }}\u0027\norder by\n c.ordinal_position; options=; operation=executeQuery; descriptionType=manual; toolDescription=Get table definition to find all columns and types}", "credentials": "@{postgres=}", "typeVersion": 2.5 }, { "id": "760bc9bc-0057-4088-b3f0-3ee37b3519df", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": "-300 -240", "parameters": "@{color=5; width=560; height=120; content=### ????? Setup\n1. Add your **postgresql** and **OpenAI** credentials.\n2. Click **Chat** button and start asking questions to your database.\n3. Activate the workflow and you can make the chat publicly available.}", "typeVersion": 1 }, { "id": "0df33341-c859-4a54-b6d9-a99670e8d76d", "name": "Chat History", "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", "position": "120 160", "parameters": "", "typeVersion": 1.3 }, { "id": "4938b22e-f187-4ca0-b9f1-60835e823799", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": "360 300", "parameters": "@{color=7; width=562; height=156; content=??? Tools Used:\n1. Execute SQL Query: Used to execute any query generated by the agent.\n2. Get DB Schema and Tables List: It returns the list of all the tables with its schema name.\n3. Get Table Definition: It returns table details like column names, foreign keys and more of a particular table in a schema.}", "typeVersion": 1 }, { "id": "39780c78-4fbc-403e-a220-aa6a4b06df8c", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": "-100 300", "parameters": "@{color=7; width=162; height=99; content=?? You can exchange this with any other chat model of your choice.}", "typeVersion": 1 }, { "id": "28a5692c-5003-46cb-9a09-b7867734f446", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": "100 300", "parameters": "@{color=7; width=162; height=159; content=?? You can change how many number of messages to keep using `Context Window Length` option. It\u0027s 5 by default.}", "typeVersion": 1 }, { "id": "c18ced71-6330-4ba0-9c52-1bb5852b3039", "name": "Execute SQL Query", "type": "n8n-nodes-base.postgresTool", "position": "380 140", "parameters": "@{query={{ $fromAI(\"sql_query\", \"SQL Query\") }}; options=; operation=executeQuery; descriptionType=manual; toolDescription=Get all the data from Postgres, make sure you append the tables with correct schema. Every table is associated with some schema in the database.}", "credentials": "@{postgres=}", "typeVersion": 2.5 }, { "id": "557623c6-e499-48a6-a066-744f64f8b6f3", "name": "Get DB Schema and Tables List", "type": "n8n-nodes-base.postgresTool", "position": "580 140", "parameters": "@{query=SELECT \n table_schema,\n table_name\nFROM information_schema.tables\nWHERE table_type = \u0027BASE TABLE\u0027\n AND table_schema NOT IN (\u0027pg_catalog\u0027, \u0027information_schema\u0027)\nORDER BY table_schema, table_name;; options=; operation=executeQuery; descriptionType=manual; toolDescription=Get list of all tables with their schema in the database}", "credentials": "@{postgres=}", "typeVersion": 2.5 } ], "connections": { "Chat History": { "ai_memory": "System.Object[]" }, "Execute SQL Query": { "ai_tool": "System.Object[]" }, "OpenAI Chat Model": { "ai_languageModel": "System.Object[]" }, "Get Table Definition": { "ai_tool": "System.Object[]" }, "When chat message received": { "main": "System.Object[]" }, "Get DB Schema and Tables List": { "ai_tool": "System.Object[]" } }, "settings": { "executionOrder": "v1", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": null, "meta": null, "pinData": null, "versionId": "63c562cf-6ac4-4538-9b9c-74205161bc17", "activeVersionId": "63c562cf-6ac4-4538-9b9c-74205161bc17", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-27T06:18:28.566Z", "createdAt": "2025-12-27T06:18:28.566Z", "role": "workflow:owner", "workflowId": "R4CAWEqCX7mt8FGU", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-20T16:29:46.215Z", "createdAt": "2026-02-20T16:29:46.215Z", "versionId": "63c562cf-6ac4-4538-9b9c-74205161bc17", "workflowId": "R4CAWEqCX7mt8FGU", "nodes": [ "@{id=6501a54f-a68c-452d-b353-d7e871ca3780; name=When chat message received; type=@n8n/n8n-nodes-langchain.chatTrigger; position=System.Object[]; webhookId=cf1de04f-3e38-426c-89f0-3bdb110a5dcf; parameters=; typeVersion=1.1}", "@{id=cd32221b-2a36-408d-b57e-8115fcd810c9; name=AI Agent; type=@n8n/n8n-nodes-langchain.agent; position=System.Object[]; parameters=; typeVersion=1.7}", "@{id=8accbeeb-7eaf-4e9e-aabc-de8ab3a0459b; name=OpenAI Chat Model; type=@n8n/n8n-nodes-langchain.lmChatOpenAi; position=System.Object[]; parameters=; credentials=; typeVersion=1.2}", "@{id=11f2013f-a080-4c9e-8773-c90492e2c628; name=Get Table Definition; type=n8n-nodes-base.postgresTool; position=System.Object[]; parameters=; credentials=; typeVersion=2.5}", "@{id=760bc9bc-0057-4088-b3f0-3ee37b3519df; name=Sticky Note; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}", "@{id=0df33341-c859-4a54-b6d9-a99670e8d76d; name=Chat History; type=@n8n/n8n-nodes-langchain.memoryBufferWindow; position=System.Object[]; parameters=; typeVersion=1.3}", "@{id=4938b22e-f187-4ca0-b9f1-60835e823799; name=Sticky Note3; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}", "@{id=39780c78-4fbc-403e-a220-aa6a4b06df8c; name=Sticky Note1; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}", "@{id=28a5692c-5003-46cb-9a09-b7867734f446; name=Sticky Note2; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}", "@{id=c18ced71-6330-4ba0-9c52-1bb5852b3039; name=Execute SQL Query; type=n8n-nodes-base.postgresTool; position=System.Object[]; parameters=; credentials=; typeVersion=2.5}", "@{id=557623c6-e499-48a6-a066-744f64f8b6f3; name=Get DB Schema and Tables List; type=n8n-nodes-base.postgresTool; position=System.Object[]; parameters=; credentials=; typeVersion=2.5}" ], "connections": { "Chat History": "@{ai_memory=System.Object[]}", "Execute SQL Query": "@{ai_tool=System.Object[]}", "OpenAI Chat Model": "@{ai_languageModel=System.Object[]}", "Get Table Definition": "@{ai_tool=System.Object[]}", "When chat message received": "@{main=System.Object[]}", "Get DB Schema and Tables List": "@{ai_tool=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-27T04:12:29.885Z", "createdAt": "2025-12-27T04:12:29.885Z", "id": "gA7WNCleWfvdAMmG", "name": "Genesis Discovery Notifier", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "schedule-trigger", "name": "Every 6 Hours", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": "0 0" }, { "parameters": "@{method=POST; url=https://hooks.slack.com/services/WEBHOOK_URL; sendBody=True; bodyParameters=}", "id": "http-request", "name": "Notify Slack", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "220 0" } ], "connections": { "Every 6 Hours": { "main": "System.Object[]" } }, "settings": { "executionOrder": "v1", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:Every 6 Hours": { "recurrenceRules": "12" } }, "meta": null, "pinData": null, "versionId": "2fae337f-9dd5-412e-b48d-dc56ad9154fa", "activeVersionId": "2fae337f-9dd5-412e-b48d-dc56ad9154fa", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-27T04:12:29.885Z", "createdAt": "2025-12-27T04:12:29.885Z", "role": "workflow:owner", "workflowId": "gA7WNCleWfvdAMmG", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-27T04:12:29.895Z", "createdAt": "2025-12-27T04:12:29.895Z", "versionId": "2fae337f-9dd5-412e-b48d-dc56ad9154fa", "workflowId": "gA7WNCleWfvdAMmG", "nodes": [ "@{parameters=; id=schedule-trigger; name=Every 6 Hours; type=n8n-nodes-base.scheduleTrigger; typeVersion=1.2; position=System.Object[]}", "@{parameters=; id=http-request; name=Notify Slack; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}" ], "connections": { "Every 6 Hours": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-20T16:35:44.360Z", "createdAt": "2025-12-30T20:21:47.826Z", "id": "VRIk6dAuKzfXOAIe", "name": "Genesis Stripe Payment Handler", "active": true, "isArchived": false, "nodes": [ { "id": "stripe-trigger", "name": "Stripe Payment Events", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": "0 300", "parameters": "@{httpMethod=POST; path=stripe-webhook; responseMode=onReceived}" }, { "id": "switch-event", "name": "Route Payment Event", "type": "n8n-nodes-base.switch", "typeVersion": 3, "position": "220 300", "parameters": "@{mode=rules; rules=; options=}" }, { "id": "process-success", "name": "Process Successful Payment", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 100", "parameters": "@{jsCode=const event = $json.body || $json;\nconst charge = event.data?.object || {};\n\nreturn [{\n json: {\n eventType: \u0027charge.succeeded\u0027,\n amount: (charge.amount / 100).toFixed(2),\n currency: (charge.currency || \u0027usd\u0027).toUpperCase(),\n customerEmail: charge.receipt_email || charge.billing_details?.email,\n customerName: charge.billing_details?.name || \u0027Customer\u0027,\n paymentId: charge.id,\n description: charge.description || \u0027Payment received\u0027,\n timestamp: new Date().toISOString()\n }\n}];}" }, { "id": "process-failure", "name": "Process Failed Payment", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 250", "parameters": "@{jsCode=const event = $json.body || $json;\nconst charge = event.data?.object || {};\n\nreturn [{\n json: {\n eventType: \u0027charge.failed\u0027,\n amount: (charge.amount / 100).toFixed(2),\n currency: (charge.currency || \u0027usd\u0027).toUpperCase(),\n customerEmail: charge.receipt_email || charge.billing_details?.email,\n customerName: charge.billing_details?.name || \u0027Customer\u0027,\n failureCode: charge.failure_code,\n failureMessage: charge.failure_message,\n paymentId: charge.id,\n timestamp: new Date().toISOString()\n }\n}];}" }, { "id": "process-invoice-failed", "name": "Process Invoice Failure", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 400", "parameters": "@{jsCode=const event = $json.body || $json;\nconst invoice = event.data?.object || {};\n\nreturn [{\n json: {\n eventType: \u0027invoice.payment_failed\u0027,\n invoiceId: invoice.id,\n amount: (invoice.amount_due / 100).toFixed(2),\n customerEmail: invoice.customer_email,\n subscriptionId: invoice.subscription,\n attemptCount: invoice.attempt_count,\n nextAttempt: invoice.next_payment_attempt ? new Date(invoice.next_payment_attempt * 1000).toISOString() : \u0027No retry scheduled\u0027,\n timestamp: new Date().toISOString()\n }\n}];}" }, { "id": "process-subscription", "name": "Process New Subscription", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 550", "parameters": "@{jsCode=const event = $json.body || $json;\nconst subscription = event.data?.object || {};\n\nreturn [{\n json: {\n eventType: \u0027subscription.created\u0027,\n subscriptionId: subscription.id,\n customerId: subscription.customer,\n status: subscription.status,\n planName: subscription.items?.data?.[0]?.price?.nickname || \u0027Standard Plan\u0027,\n amount: ((subscription.items?.data?.[0]?.price?.unit_amount || 0) / 100).toFixed(2),\n interval: subscription.items?.data?.[0]?.price?.recurring?.interval || \u0027month\u0027,\n startDate: new Date(subscription.start_date * 1000).toISOString(),\n timestamp: new Date().toISOString()\n }\n}];}" }, { "id": "slack-success", "name": "Slack: Payment Received", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "660 100", "parameters": "@{operation=executeQuery; query=INSERT INTO aiva_n8n_events (event_type, workflow_id, status, triggered_at) VALUES (\u0027payment_received\u0027, \u0027genesis-stripe-handler\u0027, \u0027processed\u0027, NOW()); options=}", "credentials": "@{postgres=}" }, { "id": "slack-failed", "name": "Slack: Payment Failed", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "660 250", "parameters": "@{operation=executeQuery; query=INSERT INTO aiva_n8n_events (event_type, workflow_id, status, triggered_at) VALUES (\u0027payment_failed\u0027, \u0027genesis-stripe-handler\u0027, \u0027processed\u0027, NOW()); options=}", "credentials": "@{postgres=}" }, { "id": "slack-invoice-failed", "name": "Slack: Invoice Failed", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "660 400", "parameters": "@{operation=executeQuery; query=INSERT INTO aiva_n8n_events (event_type, workflow_id, status, triggered_at) VALUES (\u0027invoice_failed\u0027, \u0027genesis-stripe-handler\u0027, \u0027processed\u0027, NOW()); options=}", "credentials": "@{postgres=}" }, { "id": "slack-subscription", "name": "Slack: New Subscription", "type": "n8n-nodes-base.postgres", "typeVersion": 2.4, "position": "660 550", "parameters": "@{operation=executeQuery; query=INSERT INTO aiva_n8n_events (event_type, workflow_id, status, triggered_at) VALUES (\u0027subscription_new\u0027, \u0027genesis-stripe-handler\u0027, \u0027processed\u0027, NOW()); options=}", "credentials": "@{postgres=}" } ], "connections": { "Stripe Payment Events": { "main": "System.Object[]" }, "Route Payment Event": { "main": "System.Object[] System.Object[] System.Object[] System.Object[]" }, "Process Successful Payment": { "main": "System.Object[]" }, "Process Failed Payment": { "main": "System.Object[]" }, "Process Invoice Failure": { "main": "System.Object[]" }, "Process New Subscription": { "main": "System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": null, "meta": null, "pinData": null, "versionId": "31156f1b-562a-4c33-b1ee-49bea73d74bb", "activeVersionId": "31156f1b-562a-4c33-b1ee-49bea73d74bb", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-30T20:21:47.826Z", "createdAt": "2025-12-30T20:21:47.826Z", "role": "workflow:owner", "workflowId": "VRIk6dAuKzfXOAIe", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-20T16:35:44.361Z", "createdAt": "2026-02-20T16:35:44.361Z", "versionId": "31156f1b-562a-4c33-b1ee-49bea73d74bb", "workflowId": "VRIk6dAuKzfXOAIe", "nodes": [ "@{id=stripe-trigger; name=Stripe Payment Events; type=n8n-nodes-base.webhook; typeVersion=2; position=System.Object[]; parameters=}", "@{id=switch-event; name=Route Payment Event; type=n8n-nodes-base.switch; typeVersion=3; position=System.Object[]; parameters=}", "@{id=process-success; name=Process Successful Payment; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=process-failure; name=Process Failed Payment; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=process-invoice-failed; name=Process Invoice Failure; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=process-subscription; name=Process New Subscription; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]; parameters=}", "@{id=slack-success; name=Slack: Payment Received; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}", "@{id=slack-failed; name=Slack: Payment Failed; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}", "@{id=slack-invoice-failed; name=Slack: Invoice Failed; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}", "@{id=slack-subscription; name=Slack: New Subscription; type=n8n-nodes-base.postgres; typeVersion=2.4; position=System.Object[]; parameters=; credentials=}" ], "connections": { "Stripe Payment Events": "@{main=System.Object[]}", "Route Payment Event": "@{main=System.Object[]}", "Process Successful Payment": "@{main=System.Object[]}", "Process Failed Payment": "@{main=System.Object[]}", "Process Invoice Failure": "@{main=System.Object[]}", "Process New Subscription": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-27T10:21:11.917Z", "createdAt": "2025-12-27T10:21:11.917Z", "id": "iUvDjRqvlddnMlqB", "name": "Genesis Continuous Evolution", "active": true, "isArchived": false, "nodes": [ { "id": "schedule", "name": "Every 2 Hours", "type": "n8n-nodes-base.scheduleTrigger", "position": "0 0", "parameters": "@{rule=}", "typeVersion": 1.2 }, { "id": "alpha_trigger", "name": "Trigger Alpha Team", "type": "n8n-nodes-base.httpRequest", "position": "250 -100", "parameters": "@{url=https://kinan--genesis-alpha-evolution-trigger.modal.run; method=POST; sendBody=True; bodyParameters=; options=}", "typeVersion": 4.2 }, { "id": "beta_trigger", "name": "Trigger Beta Team", "type": "n8n-nodes-base.httpRequest", "position": "250 100", "parameters": "@{url=https://kinan--genesis-beta-memory-trigger.modal.run; method=POST; sendBody=True; bodyParameters=; options=}", "typeVersion": 4.2 }, { "id": "wait", "name": "Wait 2 Minutes", "type": "n8n-nodes-base.wait", "position": "500 0", "parameters": "@{amount=2; unit=minutes}", "typeVersion": 1.1 }, { "id": "alpha_status", "name": "Get Alpha Status", "type": "n8n-nodes-base.httpRequest", "position": "700 -100", "parameters": "@{url=https://kinan--genesis-alpha-evolution-status.modal.run; method=GET; options=}", "typeVersion": 4.2 }, { "id": "beta_status", "name": "Get Beta Status", "type": "n8n-nodes-base.httpRequest", "position": "700 100", "parameters": "@{url=https://kinan--genesis-beta-memory-status.modal.run; method=GET; options=}", "typeVersion": 4.2 }, { "id": "merge", "name": "Merge Results", "type": "n8n-nodes-base.merge", "position": "900 0", "parameters": "@{mode=combine; combineBy=combineAll}", "typeVersion": 3.1 }, { "id": "sticky1", "name": "Info", "type": "n8n-nodes-base.stickyNote", "position": "-200 -200", "parameters": "@{width=400; height=200; content=## Genesis Continuous Evolution\n\nTriggers Alpha and Beta teams every 2 hours:\n\n**Alpha Team**: Discovery, Research, Integration\n**Beta Team**: Memory, Optimization, Reporting\n\nBoth teams run 3 Haiku agents in parallel.\nEstimated cost: ~$0.003 per cycle (~$0.036/day)}", "typeVersion": 1 } ], "connections": { "Every 2 Hours": { "main": "System.Object[]" }, "Trigger Alpha Team": { "main": "System.Object[]" }, "Trigger Beta Team": { "main": "System.Object[]" }, "Wait 2 Minutes": { "main": "System.Object[]" }, "Get Alpha Status": { "main": "System.Object[]" }, "Get Beta Status": { "main": "System.Object[]" } }, "settings": { "executionOrder": "v1", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:Every 2 Hours": { "recurrenceRules": "16" } }, "meta": null, "pinData": null, "versionId": "af40e5d2-bfed-4c4d-9fdb-487a6b5f694a", "activeVersionId": "af40e5d2-bfed-4c4d-9fdb-487a6b5f694a", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-27T10:21:11.917Z", "createdAt": "2025-12-27T10:21:11.917Z", "role": "workflow:owner", "workflowId": "iUvDjRqvlddnMlqB", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-27T10:21:11.922Z", "createdAt": "2025-12-27T10:21:11.922Z", "versionId": "af40e5d2-bfed-4c4d-9fdb-487a6b5f694a", "workflowId": "iUvDjRqvlddnMlqB", "nodes": [ "@{id=schedule; name=Every 2 Hours; type=n8n-nodes-base.scheduleTrigger; position=System.Object[]; parameters=; typeVersion=1.2}", "@{id=alpha_trigger; name=Trigger Alpha Team; type=n8n-nodes-base.httpRequest; position=System.Object[]; parameters=; typeVersion=4.2}", "@{id=beta_trigger; name=Trigger Beta Team; type=n8n-nodes-base.httpRequest; position=System.Object[]; parameters=; typeVersion=4.2}", "@{id=wait; name=Wait 2 Minutes; type=n8n-nodes-base.wait; position=System.Object[]; parameters=; typeVersion=1.1}", "@{id=alpha_status; name=Get Alpha Status; type=n8n-nodes-base.httpRequest; position=System.Object[]; parameters=; typeVersion=4.2}", "@{id=beta_status; name=Get Beta Status; type=n8n-nodes-base.httpRequest; position=System.Object[]; parameters=; typeVersion=4.2}", "@{id=merge; name=Merge Results; type=n8n-nodes-base.merge; position=System.Object[]; parameters=; typeVersion=3.1}", "@{id=sticky1; name=Info; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}" ], "connections": { "Every 2 Hours": "@{main=System.Object[]}", "Trigger Alpha Team": "@{main=System.Object[]}", "Trigger Beta Team": "@{main=System.Object[]}", "Wait 2 Minutes": "@{main=System.Object[]}", "Get Alpha Status": "@{main=System.Object[]}", "Get Beta Status": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-01-05T07:06:19.971Z", "createdAt": "2026-01-05T01:33:13.710Z", "id": "AZZocGCVG5LKDcZn", "name": "Genesis Health Monitor", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "schedule_trigger", "name": "Every 5 Minutes", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": "250 300" }, { "parameters": "@{url=https://genesis-api.adaptigenai.com/health; options=}", "id": "get_health", "name": "Get Health Status", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "500 300" }, { "parameters": "@{jsCode=const health = items[0].json;\nreturn [{ json: health }];}", "id": "process_health", "name": "Process Health", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "750 300" }, { "parameters": "@{conditions=}", "id": "check_healthy", "name": "Is Unhealthy?", "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": "1000 300" }, { "parameters": "@{method=POST; url=https://slack.com/api/chat.postMessage; sendHeaders=True; headerParameters=; sendBody=True; bodyParameters=}", "id": "slack_alert", "name": "Send Slack Alert", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "1250 200" }, { "parameters": "@{method=POST; url=https://genesis-api.adaptigenai.com/pulse; options=}", "id": "trigger_pulse", "name": "Trigger Recovery Pulse", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "1250 400" } ], "connections": { "Every 5 Minutes": { "main": "System.Object[]" }, "Get Health Status": { "main": "System.Object[]" }, "Process Health": { "main": "System.Object[]" }, "Is Unhealthy?": { "main": "System.Object[] System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:Every 5 Minutes": { "recurrenceRules": "" } }, "meta": null, "pinData": null, "versionId": "65a32530-ed04-4d59-b7d9-4ea46ac53611", "activeVersionId": "65a32530-ed04-4d59-b7d9-4ea46ac53611", "triggerCount": 1, "shared": [ { "updatedAt": "2026-01-05T01:33:13.710Z", "createdAt": "2026-01-05T01:33:13.710Z", "role": "workflow:owner", "workflowId": "AZZocGCVG5LKDcZn", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-01-05T07:06:19.972Z", "createdAt": "2026-01-05T07:06:19.972Z", "versionId": "65a32530-ed04-4d59-b7d9-4ea46ac53611", "workflowId": "AZZocGCVG5LKDcZn", "nodes": [ "@{parameters=; id=schedule_trigger; name=Every 5 Minutes; type=n8n-nodes-base.scheduleTrigger; typeVersion=1.2; position=System.Object[]}", "@{parameters=; id=get_health; name=Get Health Status; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=process_health; name=Process Health; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=check_healthy; name=Is Unhealthy?; type=n8n-nodes-base.if; typeVersion=2.2; position=System.Object[]}", "@{parameters=; id=slack_alert; name=Send Slack Alert; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=trigger_pulse; name=Trigger Recovery Pulse; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}" ], "connections": { "Every 5 Minutes": "@{main=System.Object[]}", "Get Health Status": "@{main=System.Object[]}", "Process Health": "@{main=System.Object[]}", "Is Unhealthy?": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-19T16:36:48.137Z", "createdAt": "2026-02-19T16:36:47.830Z", "id": "LlYC3MqqzKtYjeI6", "name": "YouTube Scout - Nightly Knowledge Harvester", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "schedule-trigger", "name": "Schedule (Every 2hrs 8pm-4am AEST)", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.1, "position": "240 300" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Check if we\u0027re in the scout window (8pm - 4am AEST)\nconst now = new Date();\n\n// Convert to AEST (Australia/Sydney)\nconst aestTime = new Date(now.toLocaleString(\u0027en-US\u0027, { timeZone: \u0027Australia/Sydney\u0027 }));\nconst hour = aestTime.getHours();\n\n// Scout window: 20:00 (8pm) to 04:00 (4am) AEST\nconst inScoutWindow = hour \u003e= 20 || hour \u003c 4;\n\nif (!inScoutWindow) {\n return [{ json: { skip: true, reason: `Outside scout window (AEST hour: ${hour})` } }];\n}\n\nreturn [{ json: { skip: false, hour: hour, timezone: \u0027AEST\u0027, timestamp: now.toISOString() } }];}", "id": "check-time-window", "name": "Check Time Window", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "460 300" }, { "parameters": "@{conditions=}", "id": "should-run", "name": "Should Run?", "type": "n8n-nodes-base.if", "typeVersion": 1, "position": "680 300" }, { "parameters": "@{command=cd /mnt/e/genesis-system \u0026\u0026 /mnt/e/genesis-system/.venv/bin/python -c \"\nimport sys\nsys.path.insert(0, \u0027skills\u0027)\nfrom youtube_scout_skill import YouTubeScoutSkill\n\nscout = YouTubeScoutSkill()\nresults = scout.run_nightly_scout(max_videos=10, hours_lookback=24)\n\nimport json\nprint(json.dumps(results, default=str))\n\"}", "id": "run-scout", "name": "Run YouTube Scout", "type": "n8n-nodes-base.executeCommand", "typeVersion": 1, "position": "900 200" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Parse scout results\nconst stdout = $input.first().json.stdout;\nlet results;\n\ntry {\n // Find the JSON output (skip any print statements before it)\n const jsonMatch = stdout.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n results = JSON.parse(jsonMatch[0]);\n } else {\n results = { error: \u0027No JSON output found\u0027, raw: stdout };\n }\n} catch (e) {\n results = { error: e.message, raw: stdout };\n}\n\nreturn [{ json: results }];}", "id": "parse-results", "name": "Parse Results", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "1120 200" }, { "parameters": "@{conditions=}", "id": "has-tasks", "name": "Has New Tasks?", "type": "n8n-nodes-base.if", "typeVersion": 1, "position": "1340 200" }, { "parameters": "@{command=cd /mnt/e/genesis-system \u0026\u0026 /mnt/e/genesis-system/.venv/bin/python -c \"\nimport json\nfrom pathlib import Path\n\n# Load the YouTube insight tasks\ntasks_file = Path(\u0027/mnt/e/genesis-system/loop/youtube_insight_tasks.json\u0027)\nif tasks_file.exists():\n with open(tasks_file) as f:\n data = json.load(f)\n \n pending = [t for t in data.get(\u0027tasks\u0027, []) if t.get(\u0027status\u0027) == \u0027pending\u0027]\n \n # Select top 3 high-priority tasks for immediate RWL execution\n high_priority = [t for t in pending if t.get(\u0027priority\u0027) == \u0027high\u0027][:3]\n \n if high_priority:\n # Dispatch to RWL queue\n rwl_queue = Path(\u0027/mnt/e/genesis-system/loop/rwl_queue.json\u0027)\n existing = []\n if rwl_queue.exists():\n with open(rwl_queue) as f:\n existing = json.load(f).get(\u0027queue\u0027, [])\n \n for task in high_priority:\n rwl_task = {\n \u0027id\u0027: task[\u0027id\u0027],\n \u0027title\u0027: task[\u0027title\u0027],\n \u0027description\u0027: task[\u0027description\u0027],\n \u0027source\u0027: \u0027youtube_scout\u0027,\n \u0027priority\u0027: task[\u0027priority\u0027],\n \u0027created_at\u0027: task[\u0027created_at\u0027]\n }\n existing.append(rwl_task)\n \n with open(rwl_queue, \u0027w\u0027) as f:\n json.dump({\u0027queue\u0027: existing, \u0027updated\u0027: __import__(\u0027datetime\u0027).datetime.now().isoformat()}, f, indent=2)\n \n print(json.dumps({\u0027dispatched\u0027: len(high_priority), \u0027tasks\u0027: [t[\u0027title\u0027] for t in high_priority]}))\n else:\n print(json.dumps({\u0027dispatched\u0027: 0, \u0027message\u0027: \u0027No high-priority tasks\u0027}))\nelse:\n print(json.dumps({\u0027dispatched\u0027: 0, \u0027message\u0027: \u0027No tasks file found\u0027}))\n\"}", "id": "dispatch-rwl", "name": "Dispatch to RWL Queue", "type": "n8n-nodes-base.executeCommand", "typeVersion": 1, "position": "1560 100" }, { "parameters": "@{method=POST; url=={{ $env.SLACK_WEBHOOK_URL || \u0027https://hooks.slack.com/services/placeholder\u0027 }}; sendBody=True; specifyBody=json; jsonBody=={{ JSON.stringify({\n text: `*YouTube Scout Complete* :movie_camera:\\n\\n*Stats:*\\n- Videos scanned: ${$json.stats?.videos_scanned || 0}\\n- Relevant videos: ${$json.stats?.videos_relevant || 0}\\n- Insights extracted: ${$json.stats?.insights_extracted || 0}\\n- Tasks created: ${$json.stats?.tasks_created || 0}\\n\\n*Top Videos:*\\n${($json.top_videos || []).slice(0, 3).map(v =\u003e \u0027- \u0027 + v.title).join(\u0027\\\\n\u0027) || \u0027None\u0027}\\n\\n_Run time: ${new Date().toLocaleString()}_`\n}) }}}", "id": "notify-slack", "name": "Notify Slack", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4, "position": "1560 300", "continueOnFail": true }, { "parameters": "", "id": "skip-node", "name": "Skip (Outside Window)", "type": "n8n-nodes-base.noOp", "typeVersion": 1, "position": "900 400" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Log successful completion\nconst fs = require(\u0027fs\u0027);\nconst logPath = \u0027/mnt/e/genesis-system/logs/n8n_youtube_scout.log\u0027;\nconst logEntry = `${new Date().toISOString()} - Scout complete: ${$json.stats?.tasks_created || 0} tasks created\\n`;\n\ntry {\n fs.appendFileSync(logPath, logEntry);\n} catch (e) {\n // Ignore log errors\n}\n\nreturn [{ json: { ...($json || {}), logged: true } }];}", "id": "log-completion", "name": "Log Completion", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "1780 200" } ], "connections": { "Schedule (Every 2hrs 8pm-4am)": { "main": "System.Object[]" }, "Check Time Window": { "main": "System.Object[]" }, "Should Run?": { "main": "System.Object[] System.Object[]" }, "Run YouTube Scout": { "main": "System.Object[]" }, "Parse Results": { "main": "System.Object[]" }, "Has New Tasks?": { "main": "System.Object[] System.Object[]" }, "Dispatch to RWL Queue": { "main": "System.Object[]" }, "Notify Slack": { "main": "System.Object[]" } }, "settings": { "executionOrder": "v1" }, "staticData": { "node:Schedule (Every 2hrs 8pm-4am AEST)": { "recurrenceRules": "16" } }, "meta": null, "pinData": null, "versionId": "64e4f4d6-eb40-443f-bf87-32d59df202dd", "activeVersionId": "64e4f4d6-eb40-443f-bf87-32d59df202dd", "triggerCount": 1, "shared": [ { "updatedAt": "2026-02-19T16:36:47.830Z", "createdAt": "2026-02-19T16:36:47.830Z", "role": "workflow:owner", "workflowId": "LlYC3MqqzKtYjeI6", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-19T16:36:47.830Z", "createdAt": "2026-02-19T16:36:47.830Z", "versionId": "64e4f4d6-eb40-443f-bf87-32d59df202dd", "workflowId": "LlYC3MqqzKtYjeI6", "nodes": [ "@{parameters=; id=schedule-trigger; name=Schedule (Every 2hrs 8pm-4am AEST); type=n8n-nodes-base.scheduleTrigger; typeVersion=1.1; position=System.Object[]}", "@{parameters=; id=check-time-window; name=Check Time Window; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=should-run; name=Should Run?; type=n8n-nodes-base.if; typeVersion=1; position=System.Object[]}", "@{parameters=; id=run-scout; name=Run YouTube Scout; type=n8n-nodes-base.executeCommand; typeVersion=1; position=System.Object[]}", "@{parameters=; id=parse-results; name=Parse Results; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=has-tasks; name=Has New Tasks?; type=n8n-nodes-base.if; typeVersion=1; position=System.Object[]}", "@{parameters=; id=dispatch-rwl; name=Dispatch to RWL Queue; type=n8n-nodes-base.executeCommand; typeVersion=1; position=System.Object[]}", "@{parameters=; id=notify-slack; name=Notify Slack; type=n8n-nodes-base.httpRequest; typeVersion=4; position=System.Object[]; continueOnFail=True}", "@{parameters=; id=skip-node; name=Skip (Outside Window); type=n8n-nodes-base.noOp; typeVersion=1; position=System.Object[]}", "@{parameters=; id=log-completion; name=Log Completion; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}" ], "connections": { "Schedule (Every 2hrs 8pm-4am)": "@{main=System.Object[]}", "Check Time Window": "@{main=System.Object[]}", "Should Run?": "@{main=System.Object[]}", "Run YouTube Scout": "@{main=System.Object[]}", "Parse Results": "@{main=System.Object[]}", "Has New Tasks?": "@{main=System.Object[]}", "Dispatch to RWL Queue": "@{main=System.Object[]}", "Notify Slack": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-29T10:34:53.672Z", "createdAt": "2025-12-29T10:34:53.672Z", "id": "ZBBYpF1kU0QIhSAq", "name": "Genesis Memory Maintenance", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "daily_trigger", "name": "Daily Maintenance", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": "250 300" }, { "parameters": "@{method=POST; url=https://slack.com/api/chat.postMessage; sendHeaders=True; headerParameters=; sendBody=True; bodyParameters=}", "id": "slack_notify", "name": "Notify Slack", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "500 300" } ], "connections": { "Daily Maintenance": { "main": "System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:Daily Maintenance": { "recurrenceRules": "0" } }, "meta": null, "pinData": null, "versionId": "e2cbaeeb-b03e-404d-99f7-392fd558c5b4", "activeVersionId": "e2cbaeeb-b03e-404d-99f7-392fd558c5b4", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-29T10:34:53.672Z", "createdAt": "2025-12-29T10:34:53.672Z", "role": "workflow:owner", "workflowId": "ZBBYpF1kU0QIhSAq", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-29T10:34:53.678Z", "createdAt": "2025-12-29T10:34:53.678Z", "versionId": "e2cbaeeb-b03e-404d-99f7-392fd558c5b4", "workflowId": "ZBBYpF1kU0QIhSAq", "nodes": [ "@{parameters=; id=daily_trigger; name=Daily Maintenance; type=n8n-nodes-base.scheduleTrigger; typeVersion=1.2; position=System.Object[]}", "@{parameters=; id=slack_notify; name=Notify Slack; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}" ], "connections": { "Daily Maintenance": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-19T16:36:46.706Z", "createdAt": "2026-02-19T16:36:46.395Z", "id": "1btPRmAEYMW3HNu2", "name": "Genesis Continuous Agent Spawner (15min)", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "cron-15min", "name": "Every 15 Minutes", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1, "position": "240 300" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Check if we should spawn agents\n// Skip if rate-limited (between midnight and 8pm)\nconst hour = new Date().getHours();\nconst isRateLimited = hour \u003e= 0 \u0026\u0026 hour \u003c 20;\n\nif (isRateLimited) {\n return [{\n json: {\n action: \u0027skip\u0027,\n reason: \u0027Rate limits active until 8pm\u0027,\n next_window: \u002720:00 today\u0027,\n current_hour: hour\n }\n }];\n}\n\n// Check active sessions\nreturn [{\n json: {\n action: \u0027spawn\u0027,\n reason: \u0027Rate limits clear - maximizing resources\u0027,\n current_hour: hour,\n timestamp: new Date().toISOString()\n }\n}];}", "id": "check-rate-limits", "name": "Check Rate Limits", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "460 300" }, { "parameters": "@{conditions=}", "id": "should-spawn", "name": "Should Spawn?", "type": "n8n-nodes-base.if", "typeVersion": 1, "position": "680 300" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Determine what agents to spawn based on current state\nconst agents = [\n {\n name: \u0027claude-code-continue\u0027,\n command: \u0027cd /mnt/e/genesis-system \u0026\u0026 tmux has-session -t genesis 2\u003e/dev/null || tmux new-session -d -s genesis \"claude --continue\"\u0027,\n check: \u0027tmux has-session -t genesis 2\u003e/dev/null \u0026\u0026 echo running || echo stopped\u0027\n },\n {\n name: \u0027aiva-health-check\u0027,\n command: \u0027cd /mnt/e/genesis-system \u0026\u0026 python3 -c \"from AIVA.health_check import quick_check; quick_check()\" 2\u003e/dev/null || echo \"AIVA health check not available\"\u0027,\n check: \u0027pgrep -f aiva_daemon \u0026\u0026 echo running || echo stopped\u0027\n }\n];\n\nreturn agents.map(a =\u003e ({ json: a }));}", "id": "select-agents", "name": "Select Agents to Spawn", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "900 200" }, { "parameters": "@{command=={{ $json.check }}}", "id": "check-status", "name": "Check Agent Status", "type": "n8n-nodes-base.executeCommand", "typeVersion": 1, "position": "1120 200" }, { "parameters": "@{mode=runOnceForAllItems; jsCode=// Only spawn if not already running\nconst items = $input.all();\nconst toSpawn = items.filter(item =\u003e {\n const stdout = (item.json.stdout || \u0027\u0027).trim();\n return stdout === \u0027stopped\u0027 || stdout === \u0027\u0027;\n});\n\nif (toSpawn.length === 0) {\n return [{\n json: {\n status: \u0027all_running\u0027,\n message: \u0027All agents already active\u0027,\n timestamp: new Date().toISOString()\n }\n }];\n}\n\nreturn toSpawn.map(item =\u003e ({\n json: {\n name: item.json.name,\n command: item.json.command,\n status: \u0027spawning\u0027\n }\n}));}", "id": "filter-stopped", "name": "Filter Stopped Agents", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "1340 200" } ], "connections": { "Every 15 Minutes": { "main": "System.Object[]" }, "Check Rate Limits": { "main": "System.Object[]" }, "Should Spawn?": { "main": "System.Object[] System.Object[]" }, "Select Agents to Spawn": { "main": "System.Object[]" }, "Check Agent Status": { "main": "System.Object[]" } }, "settings": { "executionOrder": "v1" }, "staticData": { "node:Every 15 Minutes": { "recurrenceRules": "" } }, "meta": { "description": "Runs every 15 minutes. Checks if rate limits are clear (after 8pm), then spawns any stopped agents. Zero idle time policy. Checks tmux sessions and process state before spawning to avoid duplicates.", "created_by": "Genesis Alpha Evolve", "created_at": "2026-02-11" }, "pinData": null, "versionId": "e064b2ff-66d9-4697-b239-93a4bc7a6cc7", "activeVersionId": "e064b2ff-66d9-4697-b239-93a4bc7a6cc7", "triggerCount": 1, "shared": [ { "updatedAt": "2026-02-19T16:36:46.395Z", "createdAt": "2026-02-19T16:36:46.395Z", "role": "workflow:owner", "workflowId": "1btPRmAEYMW3HNu2", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-19T16:36:46.395Z", "createdAt": "2026-02-19T16:36:46.395Z", "versionId": "e064b2ff-66d9-4697-b239-93a4bc7a6cc7", "workflowId": "1btPRmAEYMW3HNu2", "nodes": [ "@{parameters=; id=cron-15min; name=Every 15 Minutes; type=n8n-nodes-base.scheduleTrigger; typeVersion=1; position=System.Object[]}", "@{parameters=; id=check-rate-limits; name=Check Rate Limits; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=should-spawn; name=Should Spawn?; type=n8n-nodes-base.if; typeVersion=1; position=System.Object[]}", "@{parameters=; id=select-agents; name=Select Agents to Spawn; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=check-status; name=Check Agent Status; type=n8n-nodes-base.executeCommand; typeVersion=1; position=System.Object[]}", "@{parameters=; id=filter-stopped; name=Filter Stopped Agents; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}" ], "connections": { "Every 15 Minutes": "@{main=System.Object[]}", "Check Rate Limits": "@{main=System.Object[]}", "Should Spawn?": "@{main=System.Object[]}", "Select Agents to Spawn": "@{main=System.Object[]}", "Check Agent Status": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-01-09T23:49:57.983Z", "createdAt": "2026-01-09T23:49:57.983Z", "id": "bA0GsmctfZ3rDnfS", "name": "Genesis Claude Bridge", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{httpMethod=POST; path=claude-bridge; responseMode=lastNode; options=}", "id": "webhook1", "name": "Webhook", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": "250 300" }, { "parameters": "@{assignments=; options=}", "id": "set1", "name": "Set Response", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": "500 300" } ], "connections": { "Webhook": { "main": "System.Object[]" } }, "settings": { "executionOrder": "v1", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": null, "meta": null, "pinData": null, "versionId": "94f02fe9-71e3-4b51-bddc-06fe4f4c0094", "activeVersionId": "94f02fe9-71e3-4b51-bddc-06fe4f4c0094", "triggerCount": 1, "shared": [ { "updatedAt": "2026-01-09T23:49:57.983Z", "createdAt": "2026-01-09T23:49:57.983Z", "role": "workflow:owner", "workflowId": "bA0GsmctfZ3rDnfS", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-01-09T23:49:57.987Z", "createdAt": "2026-01-09T23:49:57.987Z", "versionId": "94f02fe9-71e3-4b51-bddc-06fe4f4c0094", "workflowId": "bA0GsmctfZ3rDnfS", "nodes": [ "@{parameters=; id=webhook1; name=Webhook; type=n8n-nodes-base.webhook; typeVersion=2; position=System.Object[]}", "@{parameters=; id=set1; name=Set Response; type=n8n-nodes-base.set; typeVersion=3.4; position=System.Object[]}" ], "connections": { "Webhook": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-30T19:05:35.287Z", "createdAt": "2025-12-30T19:05:35.287Z", "id": "8FDOz03lpNreno9R", "name": "Genesis Gemini Research Agent", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "schedule-trigger", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": "0 300" }, { "parameters": "@{method=GET; url=https://newsapi.org/v2/everything; sendQuery=True; queryParameters=; options=}", "id": "fetch-ai-news", "name": "Fetch AI News", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "220 300" }, { "parameters": "@{method=GET; url=https://hacker-news.firebaseio.com/v0/topstories.json; options=}", "id": "fetch-hackernews", "name": "Fetch HackerNews", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "220 500" }, { "parameters": "@{jsCode=// Process and format news data from multiple sources\nconst newsApiData = $(\u0027Fetch AI News\u0027).item?.json || {};\nconst hnData = $(\u0027Fetch HackerNews\u0027).item?.json || [];\n\n// Process NewsAPI articles\nconst newsArticles = (newsApiData.articles || []).map(article =\u003e ({\n source: article.source?.name || \u0027Unknown\u0027,\n title: article.title,\n description: article.description,\n url: article.url,\n publishedAt: article.publishedAt,\n type: \u0027news\u0027\n}));\n\n// Filter AI-related HackerNews (top 10 story IDs for now)\nconst hnStoryIds = Array.isArray(hnData) ? hnData.slice(0, 10) : [];\n\n// Combine all sources\nconst combinedData = {\n timestamp: new Date().toISOString(),\n totalArticles: newsArticles.length,\n articles: newsArticles,\n hnTopStoryIds: hnStoryIds,\n researchQuery: \u0027AI developments, breakthroughs, new models, industry news\u0027\n};\n\n// Create prompt for Gemini analysis\nconst analysisPrompt = `You are Genesis, an autonomous AI research agent. Analyze the following AI news and developments:\n\n${JSON.stringify(newsArticles.slice(0, 15), null, 2)}\n\nProvide:\n1. EXECUTIVE SUMMARY: Key developments in 2-3 sentences\n2. HIGH PRIORITY ITEMS: Breakthroughs, major releases, or critical industry shifts (mark importance 1-10)\n3. TRENDS: Emerging patterns across sources\n4. ACTION ITEMS: Specific things to research deeper or act upon\n5. KNOWLEDGE BASE ENTRIES: Structured facts to store for future reference\n\nFormat your response as JSON with these exact keys: executiveSummary, highPriorityItems (array with title, description, importance), trends (array), actionItems (array), knowledgeBaseEntries (array with topic, fact, confidence)`;\n\nreturn {\n json: {\n ...combinedData,\n geminiPrompt: analysisPrompt\n }\n};}", "id": "process-data", "name": "Process News Data", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "440 400" }, { "parameters": "@{method=POST; url=https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent; sendQuery=True; queryParameters=; sendBody=True; specifyBody=json; jsonBody=={{ JSON.stringify({ contents: [{ parts: [{ text: $json.geminiPrompt }] }], generationConfig: { temperature: 0.7, maxOutputTokens: 4096 } }) }}; options=}", "id": "gemini-analysis", "name": "Gemini Analysis", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": "660 400" }, { "parameters": "@{jsCode=// Extract insights from Gemini response\nconst geminiResponse = $json;\nconst inputData = $(\u0027Process News Data\u0027).item.json;\n\nlet analysisResult = {\n success: false,\n executiveSummary: \u0027\u0027,\n highPriorityItems: [],\n trends: [],\n actionItems: [],\n knowledgeBaseEntries: [],\n rawResponse: \u0027\u0027\n};\n\ntry {\n // Extract text from Gemini response\n const responseText = geminiResponse?.candidates?.[0]?.content?.parts?.[0]?.text || \u0027\u0027;\n analysisResult.rawResponse = responseText;\n \n // Try to parse JSON from response\n const jsonMatch = responseText.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]);\n analysisResult = {\n success: true,\n executiveSummary: parsed.executiveSummary || \u0027\u0027,\n highPriorityItems: parsed.highPriorityItems || [],\n trends: parsed.trends || [],\n actionItems: parsed.actionItems || [],\n knowledgeBaseEntries: parsed.knowledgeBaseEntries || [],\n rawResponse: responseText\n };\n }\n} catch (e) {\n analysisResult.error = e.message;\n}\n\n// Determine if this needs immediate notification\nconst highPriorityCount = analysisResult.highPriorityItems.filter(item =\u003e item.importance \u003e= 8).length;\nconst needsNotification = highPriorityCount \u003e 0 || analysisResult.highPriorityItems.length \u003e= 3;\n\n// Format Slack message\nlet slackMessage = `*Genesis Research Report* - ${new Date().toISOString().split(\u0027T\u0027)[0]}\\n\\n`;\n\nif (analysisResult.executiveSummary) {\n slackMessage += `*Executive Summary:*\\n${analysisResult.executiveSummary}\\n\\n`;\n}\n\nif (analysisResult.highPriorityItems.length \u003e 0) {\n slackMessage += `*High Priority Items:*\\n`;\n analysisResult.highPriorityItems.forEach((item, i) =\u003e {\n const emoji = item.importance \u003e= 8 ? \u0027??\u0027 : item.importance \u003e= 6 ? \u0027?\u0027 : \u0027??\u0027;\n slackMessage += `${emoji} *${item.title}* (Priority: ${item.importance}/10)\\n ${item.description}\\n`;\n });\n slackMessage += \u0027\\n\u0027;\n}\n\nif (analysisResult.trends.length \u003e 0) {\n slackMessage += `*Emerging Trends:*\\n`;\n analysisResult.trends.forEach(trend =\u003e {\n slackMessage += ` ${trend}\\n`;\n });\n slackMessage += \u0027\\n\u0027;\n}\n\nif (analysisResult.actionItems.length \u003e 0) {\n slackMessage += `*Action Items:*\\n`;\n analysisResult.actionItems.forEach(item =\u003e {\n slackMessage += `? ${item}\\n`;\n });\n}\n\nreturn {\n json: {\n ...analysisResult,\n slackMessage,\n needsNotification,\n metadata: {\n processedAt: new Date().toISOString(),\n articlesAnalyzed: inputData.totalArticles,\n highPriorityCount\n }\n }\n};}", "id": "extract-insights", "name": "Extract Insights", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "880 400" }, { "parameters": "@{conditions=; options=}", "id": "check-priority", "name": "Check Priority", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": "1100 400" }, { "parameters": "@{select=channel; channelId=; text=={{ $json.slackMessage }}; otherOptions=}", "id": "slack-notification", "name": "Slack Notification", "type": "n8n-nodes-base.slack", "typeVersion": 2.2, "position": "1320 300", "credentials": "@{slackApi=}" }, { "parameters": "@{jsCode=// Store findings for Genesis knowledge base\nconst insights = $(\u0027Extract Insights\u0027).item.json;\n\nconst knowledgeEntry = {\n id: `genesis-research-${Date.now()}`,\n timestamp: new Date().toISOString(),\n type: \u0027ai-research-report\u0027,\n summary: insights.executiveSummary,\n highPriorityItems: insights.highPriorityItems,\n trends: insights.trends,\n actionItems: insights.actionItems,\n knowledgeBaseEntries: insights.knowledgeBaseEntries,\n metadata: insights.metadata\n};\n\n// Log for knowledge base storage\nconsole.log(\u0027Knowledge Base Entry:\u0027, JSON.stringify(knowledgeEntry, null, 2));\n\nreturn {\n json: {\n stored: true,\n entry: knowledgeEntry,\n message: \u0027Research findings stored in Genesis knowledge base\u0027\n }\n};}", "id": "store-knowledge", "name": "Store in Knowledge Base", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": "1320 500" } ], "connections": { "Schedule Trigger": { "main": "System.Object[]" }, "Fetch AI News": { "main": "System.Object[]" }, "Fetch HackerNews": { "main": "System.Object[]" }, "Process News Data": { "main": "System.Object[]" }, "Gemini Analysis": { "main": "System.Object[]" }, "Extract Insights": { "main": "System.Object[]" }, "Check Priority": { "main": "System.Object[] System.Object[]" }, "Slack Notification": { "main": "System.Object[]" } }, "settings": { "saveExecutionProgress": true, "saveManualExecutions": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all", "executionTimeout": 3600, "timezone": "UTC", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": { "node:Schedule Trigger": { "recurrenceRules": "18" } }, "meta": null, "pinData": null, "versionId": "f37caebb-3491-4d0a-8830-3d03de2187fc", "activeVersionId": "f37caebb-3491-4d0a-8830-3d03de2187fc", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-30T19:05:35.287Z", "createdAt": "2025-12-30T19:05:35.287Z", "role": "workflow:owner", "workflowId": "8FDOz03lpNreno9R", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-30T19:05:35.295Z", "createdAt": "2025-12-30T19:05:35.295Z", "versionId": "f37caebb-3491-4d0a-8830-3d03de2187fc", "workflowId": "8FDOz03lpNreno9R", "nodes": [ "@{parameters=; id=schedule-trigger; name=Schedule Trigger; type=n8n-nodes-base.scheduleTrigger; typeVersion=1.2; position=System.Object[]}", "@{parameters=; id=fetch-ai-news; name=Fetch AI News; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=fetch-hackernews; name=Fetch HackerNews; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=process-data; name=Process News Data; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=gemini-analysis; name=Gemini Analysis; type=n8n-nodes-base.httpRequest; typeVersion=4.2; position=System.Object[]}", "@{parameters=; id=extract-insights; name=Extract Insights; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}", "@{parameters=; id=check-priority; name=Check Priority; type=n8n-nodes-base.if; typeVersion=2; position=System.Object[]}", "@{parameters=; id=slack-notification; name=Slack Notification; type=n8n-nodes-base.slack; typeVersion=2.2; position=System.Object[]; credentials=}", "@{parameters=; id=store-knowledge; name=Store in Knowledge Base; type=n8n-nodes-base.code; typeVersion=2; position=System.Object[]}" ], "connections": { "Schedule Trigger": "@{main=System.Object[]}", "Fetch AI News": "@{main=System.Object[]}", "Fetch HackerNews": "@{main=System.Object[]}", "Process News Data": "@{main=System.Object[]}", "Gemini Analysis": "@{main=System.Object[]}", "Extract Insights": "@{main=System.Object[]}", "Check Priority": "@{main=System.Object[]}", "Slack Notification": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2025-12-27T06:18:51.818Z", "createdAt": "2025-12-27T06:18:51.818Z", "id": "vIkDiJrVaSex4ifC", "name": "Open Deep Research - AI-Powered Autonomous Research Workflow", "active": true, "isArchived": false, "nodes": [ { "id": "b7b70ba1-0267-4d2b-91f4-5cc4fd22fd03", "name": "Chat Message Trigger", "type": "@n8n/n8n-nodes-langchain.chatTrigger", "position": "-1940 160", "webhookId": "cb0b9dbe-1f35-441a-b062-29624b0ebc6a", "parameters": "@{options=}", "typeVersion": 1.1 }, { "id": "55a8a512-f2d4-4aed-93e5-dd9bfa2dcaad", "name": "Generate Search Queries using LLM", "type": "@n8n/n8n-nodes-langchain.chainLlm", "position": "-1760 160", "parameters": "@{text==User Query: {{ $(\u0027Chat Message Trigger\u0027).item.json.chatInput }}; messages=; promptType=define}", "typeVersion": 1.5 }, { "id": "5f92361a-b490-479d-8360-c87a100b470e", "name": "LLM Response Provider (OpenRouter)", "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter", "position": "-1760 700", "parameters": "@{model=google/gemini-2.0-flash-001; options=}", "credentials": "@{openRouterApi=}", "typeVersion": 1 }, { "id": "4ab360eb-858f-48b8-a00d-71867d4f0c93", "name": "Parse and Chunk JSON Data", "type": "n8n-nodes-base.code", "position": "-1420 160", "parameters": "@{jsCode=// Parse the input JSON string and split it into four chunks\nconst rawText = $json.text;\n\n// Remove Markdown JSON code blocks if present\nconst cleanedText = rawText.replace(/```json|```/g, \u0027\u0027).trim();\n\ntry {\n const jsonArray = JSON.parse(cleanedText);\n if (!Array.isArray(jsonArray)) {\n throw new Error(\u0027The JSON is not an array.\u0027);\n }\n const chunkSize = Math.ceil(jsonArray.length / 4);\n const chunks = [];\n for (let i = 0; i \u003c jsonArray.length; i += chunkSize) {\n chunks.push(jsonArray.slice(i, i + chunkSize));\n }\n return chunks.map(chunk =\u003e ({ json: { chunk } }));\n} catch (error) {\n return [{ json: { error: error.message } }];\n}\n}", "typeVersion": 2 }, { "id": "5a3ac393-8355-449f-93cb-b98e8bee9b80", "name": "Perform SerpAPI Search Request", "type": "n8n-nodes-base.httpRequest", "position": "-780 180", "parameters": "@{url=https://serpapi.com/search; options=; sendQuery=True; queryParameters=}", "typeVersion": 4.2 }, { "id": "dad82469-830d-40fb-9f6b-b9fefef41267", "name": "Perform Jina AI Analysis Request", "type": "n8n-nodes-base.httpRequest", "position": "80 160", "parameters": "@{url==https://r.jina.ai/{{ $json.url }}; options=; authentication=genericCredentialType; genericAuthType=httpHeaderAuth}", "credentials": "@{httpHeaderAuth=}", "typeVersion": 4.2 }, { "id": "e21bbdf6-a903-491e-920c-ef7576f9ce80", "name": "Format SerpAPI Organic Results", "type": "n8n-nodes-base.code", "position": "-460 140", "parameters": "@{jsCode=// Format the organic search results from SerpAPI\nconst results = $input.first().json.organic_results;\nif (results.length === 0) {\n return [{ json: { error: \u0027No search results found.\u0027 } }];\n}\nconst formattedResults = results.map(result =\u003e ({\n title: result.title || \u0027No title available\u0027,\n url: result.link || \u0027No link available\u0027,\n source: result.source || result.displayed_link || \u0027Unknown source\u0027\n}));\nreturn formattedResults.map(result =\u003e ({ json: result }));\n}", "typeVersion": 2 }, { "id": "a856c8e8-5c3c-4a2f-9086-66deee1afd06", "name": "Extract Relevant Context via LLM", "type": "@n8n/n8n-nodes-langchain.agent", "position": "-1280 520", "parameters": "@{text==User Queries: {{ $(\u0027Parse and Chunk JSON Data\u0027).all().map(item =\u003e item.json.chunk[0]).join(\u0027, \u0027) }}\nWebpage Contents: \n\"\"\"\n{{ $json.data }}\n\"\"\"; options=; promptType=define}", "typeVersion": 1.7 }, { "id": "6d5c6698-0b4f-438c-91b9-3597f5d3e904", "name": "Generate Comprehensive Research Report", "type": "@n8n/n8n-nodes-langchain.agent", "position": "-740 520", "parameters": "@{text==Extracted Contexts (Merged):\n\"\"\"\n{{ $json.output }}\n\"\"\"; options=; promptType=define}", "typeVersion": 1.7 }, { "id": "05fea6a1-791e-4980-8f2a-2960455066d7", "name": "Split Data for SerpAPI Batching", "type": "n8n-nodes-base.splitInBatches", "position": "-1100 160", "parameters": "@{options=}", "typeVersion": 3 }, { "id": "df00e7e8-99b8-484a-8047-869474fefee9", "name": "Split Data for Jina AI Batching", "type": "n8n-nodes-base.splitInBatches", "position": "-220 140", "parameters": "@{options=}", "typeVersion": 3 }, { "id": "2edc683b-65f7-40c3-a22d-7fbf5b67de0a", "name": "LLM Memory Buffer (Input Context)", "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", "position": "-1160 740", "parameters": "@{sessionKey=my_test_session; sessionIdType=customKey; contextWindowLength=20}", "typeVersion": 1.3 }, { "id": "23017ae7-72a7-45c7-8edf-d0ba72220675", "name": "LLM Memory Buffer (Report Context)", "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", "position": "-620 760", "parameters": "@{sessionKey=my_test_session; sessionIdType=customKey; contextWindowLength=20}", "typeVersion": 1.3 }, { "id": "6bc9533b-e265-47b3-b93a-3a4f86ba0541", "name": "Fetch Wikipedia Information", "type": "@n8n/n8n-nodes-langchain.toolWikipedia", "position": "-580 920", "parameters": "", "typeVersion": 1 }, { "id": "b25c148e-047d-40a7-8818-94c3504828dd", "name": "Sticky Note: SerpAPI Setup", "type": "n8n-nodes-base.stickyNote", "position": "-940 -20", "parameters": "@{color=7; width=420; height=140; content=## SerpAPI Setup Instructions\n1. Obtain your API key from https://serpapi.com/manage-api-key.\n2. Save your API key securely in n8n credentials (do not use plain text).}", "typeVersion": 1 }, { "id": "e69c9a85-31e4-42b9-a09a-683ec5bb97d1", "name": "Sticky Note: Jina AI Setup", "type": "n8n-nodes-base.stickyNote", "position": "-60 -40", "parameters": "@{color=7; width=420; height=140; content=## Jina AI Setup Instructions\n1. Obtain your API key from https://jina.ai/api-dashboard/key-manager.\n2. Configure your Jina AI credential in n8n to ensure secure API access.}", "typeVersion": 1 }, { "id": "dbd204e0-da8e-41d8-814b-f409a23e9573", "name": "Sticky Note: OpenRouter API Setup", "type": "n8n-nodes-base.stickyNote", "position": "-1680 460", "parameters": "@{color=7; width=300; height=180; content=## OpenRouter API Setup Instructions\n1. Obtain your API key from https://openrouter.ai/settings/keys.\n2. Set up your OpenRouter credential in n8n for secure integration.}", "typeVersion": 1 } ], "connections": { "Chat Message Trigger": { "main": "System.Object[]" }, "Parse and Chunk JSON Data": { "main": "System.Object[]" }, "Fetch Wikipedia Information": { "ai_tool": "System.Object[]" }, "Format SerpAPI Organic Results": { "main": "System.Object[]" }, "Perform SerpAPI Search Request": { "main": "System.Object[]" }, "Split Data for Jina AI Batching": { "main": "System.Object[] System.Object[]" }, "Split Data for SerpAPI Batching": { "main": "System.Object[] System.Object[]" }, "Extract Relevant Context via LLM": { "main": "System.Object[]" }, "Perform Jina AI Analysis Request": { "main": "System.Object[]" }, "Generate Search Queries using LLM": { "main": "System.Object[]" }, "LLM Memory Buffer (Input Context)": { "ai_memory": "System.Object[]" }, "LLM Memory Buffer (Report Context)": { "ai_memory": "System.Object[]" }, "LLM Response Provider (OpenRouter)": { "ai_languageModel": "System.Object[]" } }, "settings": { "executionOrder": "v1", "callerPolicy": "workflowsFromSameOwner", "availableInMCP": false }, "staticData": null, "meta": null, "pinData": null, "versionId": "568b343c-ddec-4676-8418-b18d034e10a3", "activeVersionId": "568b343c-ddec-4676-8418-b18d034e10a3", "triggerCount": 1, "shared": [ { "updatedAt": "2025-12-27T06:18:51.818Z", "createdAt": "2025-12-27T06:18:51.818Z", "role": "workflow:owner", "workflowId": "vIkDiJrVaSex4ifC", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2025-12-27T06:18:51.824Z", "createdAt": "2025-12-27T06:18:51.824Z", "versionId": "568b343c-ddec-4676-8418-b18d034e10a3", "workflowId": "vIkDiJrVaSex4ifC", "nodes": [ "@{id=b7b70ba1-0267-4d2b-91f4-5cc4fd22fd03; name=Chat Message Trigger; type=@n8n/n8n-nodes-langchain.chatTrigger; position=System.Object[]; webhookId=cb0b9dbe-1f35-441a-b062-29624b0ebc6a; parameters=; typeVersion=1.1}", "@{id=55a8a512-f2d4-4aed-93e5-dd9bfa2dcaad; name=Generate Search Queries using LLM; type=@n8n/n8n-nodes-langchain.chainLlm; position=System.Object[]; parameters=; typeVersion=1.5}", "@{id=5f92361a-b490-479d-8360-c87a100b470e; name=LLM Response Provider (OpenRouter); type=@n8n/n8n-nodes-langchain.lmChatOpenRouter; position=System.Object[]; parameters=; credentials=; typeVersion=1}", "@{id=4ab360eb-858f-48b8-a00d-71867d4f0c93; name=Parse and Chunk JSON Data; type=n8n-nodes-base.code; position=System.Object[]; parameters=; typeVersion=2}", "@{id=5a3ac393-8355-449f-93cb-b98e8bee9b80; name=Perform SerpAPI Search Request; type=n8n-nodes-base.httpRequest; position=System.Object[]; parameters=; typeVersion=4.2}", "@{id=dad82469-830d-40fb-9f6b-b9fefef41267; name=Perform Jina AI Analysis Request; type=n8n-nodes-base.httpRequest; position=System.Object[]; parameters=; credentials=; typeVersion=4.2}", "@{id=e21bbdf6-a903-491e-920c-ef7576f9ce80; name=Format SerpAPI Organic Results; type=n8n-nodes-base.code; position=System.Object[]; parameters=; typeVersion=2}", "@{id=a856c8e8-5c3c-4a2f-9086-66deee1afd06; name=Extract Relevant Context via LLM; type=@n8n/n8n-nodes-langchain.agent; position=System.Object[]; parameters=; typeVersion=1.7}", "@{id=6d5c6698-0b4f-438c-91b9-3597f5d3e904; name=Generate Comprehensive Research Report; type=@n8n/n8n-nodes-langchain.agent; position=System.Object[]; parameters=; typeVersion=1.7}", "@{id=05fea6a1-791e-4980-8f2a-2960455066d7; name=Split Data for SerpAPI Batching; type=n8n-nodes-base.splitInBatches; position=System.Object[]; parameters=; typeVersion=3}", "@{id=df00e7e8-99b8-484a-8047-869474fefee9; name=Split Data for Jina AI Batching; type=n8n-nodes-base.splitInBatches; position=System.Object[]; parameters=; typeVersion=3}", "@{id=2edc683b-65f7-40c3-a22d-7fbf5b67de0a; name=LLM Memory Buffer (Input Context); type=@n8n/n8n-nodes-langchain.memoryBufferWindow; position=System.Object[]; parameters=; typeVersion=1.3}", "@{id=23017ae7-72a7-45c7-8edf-d0ba72220675; name=LLM Memory Buffer (Report Context); type=@n8n/n8n-nodes-langchain.memoryBufferWindow; position=System.Object[]; parameters=; typeVersion=1.3}", "@{id=6bc9533b-e265-47b3-b93a-3a4f86ba0541; name=Fetch Wikipedia Information; type=@n8n/n8n-nodes-langchain.toolWikipedia; position=System.Object[]; parameters=; typeVersion=1}", "@{id=b25c148e-047d-40a7-8818-94c3504828dd; name=Sticky Note: SerpAPI Setup; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}", "@{id=e69c9a85-31e4-42b9-a09a-683ec5bb97d1; name=Sticky Note: Jina AI Setup; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}", "@{id=dbd204e0-da8e-41d8-814b-f409a23e9573; name=Sticky Note: OpenRouter API Setup; type=n8n-nodes-base.stickyNote; position=System.Object[]; parameters=; typeVersion=1}" ], "connections": { "Chat Message Trigger": "@{main=System.Object[]}", "Parse and Chunk JSON Data": "@{main=System.Object[]}", "Fetch Wikipedia Information": "@{ai_tool=System.Object[]}", "Format SerpAPI Organic Results": "@{main=System.Object[]}", "Perform SerpAPI Search Request": "@{main=System.Object[]}", "Split Data for Jina AI Batching": "@{main=System.Object[]}", "Split Data for SerpAPI Batching": "@{main=System.Object[]}", "Extract Relevant Context via LLM": "@{main=System.Object[]}", "Perform Jina AI Analysis Request": "@{main=System.Object[]}", "Generate Search Queries using LLM": "@{main=System.Object[]}", "LLM Memory Buffer (Input Context)": "@{ai_memory=System.Object[]}", "LLM Memory Buffer (Report Context)": "@{ai_memory=System.Object[]}", "LLM Response Provider (OpenRouter)": "@{ai_languageModel=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] }, { "updatedAt": "2026-02-19T16:36:48.819Z", "createdAt": "2026-02-19T16:36:48.437Z", "id": "d8DGMFPxIQ07aC0P", "name": "Genesis Memory MCP Sync", "active": true, "isArchived": false, "nodes": [ { "parameters": "@{rule=}", "id": "schedule-trigger", "name": "Every 15 Minutes", "type": "n8n-nodes-base.scheduleTrigger", "position": "240 300", "typeVersion": 1.1 }, { "parameters": "@{command=cd /mnt/e/genesis-system/core \u0026\u0026 python3 reliable_mcp_sync.py flush}", "id": "flush-sync", "name": "Flush MCP Sync Queue", "type": "n8n-nodes-base.executeCommand", "position": "460 300", "typeVersion": 1 }, { "parameters": "@{command=cd /mnt/e/genesis-system/core \u0026\u0026 python3 reliable_mcp_sync.py status}", "id": "get-status", "name": "Get Sync Status", "type": "n8n-nodes-base.executeCommand", "position": "680 300", "typeVersion": 1 }, { "parameters": "@{conditions=}", "id": "check-failures", "name": "Check Failures \u003e 3", "type": "n8n-nodes-base.if", "position": "900 300", "typeVersion": 2 }, { "parameters": "@{channel=#genesis-alerts; text=:warning: Genesis MCP Sync Alert: More than 3 failed syncs detected.\n\nStatus: {{ JSON.parse($json.stdout) }}; otherOptions=}", "id": "slack-alert", "name": "Send Slack Alert", "type": "n8n-nodes-base.slack", "position": "1120 200", "typeVersion": 2.1 } ], "connections": { "Every 15 Minutes": { "main": "System.Object[]" }, "Flush MCP Sync Queue": { "main": "System.Object[]" }, "Get Sync Status": { "main": "System.Object[]" }, "Check Failures \u003e 3": { "main": "System.Object[] System.Object[]" } }, "settings": { "executionOrder": "v1" }, "staticData": { "node:Every 15 Minutes": { "recurrenceRules": "" } }, "meta": null, "pinData": null, "versionId": "7090dc03-6bf7-4e7c-93af-cbc91ee4ff88", "activeVersionId": "7090dc03-6bf7-4e7c-93af-cbc91ee4ff88", "triggerCount": 1, "shared": [ { "updatedAt": "2026-02-19T16:36:48.437Z", "createdAt": "2026-02-19T16:36:48.437Z", "role": "workflow:owner", "workflowId": "d8DGMFPxIQ07aC0P", "projectId": "5kAO1vhaNBlQJGpW" } ], "activeVersion": { "updatedAt": "2026-02-19T16:36:48.437Z", "createdAt": "2026-02-19T16:36:48.437Z", "versionId": "7090dc03-6bf7-4e7c-93af-cbc91ee4ff88", "workflowId": "d8DGMFPxIQ07aC0P", "nodes": [ "@{parameters=; id=schedule-trigger; name=Every 15 Minutes; type=n8n-nodes-base.scheduleTrigger; position=System.Object[]; typeVersion=1.1}", "@{parameters=; id=flush-sync; name=Flush MCP Sync Queue; type=n8n-nodes-base.executeCommand; position=System.Object[]; typeVersion=1}", "@{parameters=; id=get-status; name=Get Sync Status; type=n8n-nodes-base.executeCommand; position=System.Object[]; typeVersion=1}", "@{parameters=; id=check-failures; name=Check Failures \u003e 3; type=n8n-nodes-base.if; position=System.Object[]; typeVersion=2}", "@{parameters=; id=slack-alert; name=Send Slack Alert; type=n8n-nodes-base.slack; position=System.Object[]; typeVersion=2.1}" ], "connections": { "Every 15 Minutes": "@{main=System.Object[]}", "Flush MCP Sync Queue": "@{main=System.Object[]}", "Get Sync Status": "@{main=System.Object[]}", "Check Failures \u003e 3": "@{main=System.Object[]}" }, "authors": "admin admin", "name": null, "description": null, "autosaved": false }, "tags": [ ] } ], "nextCursor": null } === Step 2: Read workflow file === Workflow name: TradiesVoice Client Provisioning Node count: 22 === Step 3: Check if workflow already exists === Not found in existing workflows. Proceeding with import... All existing workflow names: - Genesis MCP Sync (ID: mOxY2ZR0IKHll2Mr) - Genesis Email Drip Sequence (ID: zEDmMrFnCAFqXgwf) - Genesis Evolution Sprint Trigger (ID: VLzda3uCD5SJuaho) - Genesis Rate Limit Reset Auto-Trigger (ID: mFgjCuAdssui233H) - Genesis Lead Capture Pipeline (ID: mVuA2YEh4X06NS3O) - Chat with Postgresql Database (ID: R4CAWEqCX7mt8FGU) - Genesis Discovery Notifier (ID: gA7WNCleWfvdAMmG) - Genesis Stripe Payment Handler (ID: VRIk6dAuKzfXOAIe) - Genesis Continuous Evolution (ID: iUvDjRqvlddnMlqB) - Genesis Health Monitor (ID: AZZocGCVG5LKDcZn) - YouTube Scout - Nightly Knowledge Harvester (ID: LlYC3MqqzKtYjeI6) - Genesis Memory Maintenance (ID: ZBBYpF1kU0QIhSAq) - Genesis Continuous Agent Spawner (15min) (ID: 1btPRmAEYMW3HNu2) - Genesis Claude Bridge (ID: bA0GsmctfZ3rDnfS) - Genesis Gemini Research Agent (ID: 8FDOz03lpNreno9R) - Open Deep Research - AI-Powered Autonomous Research Workflow (ID: vIkDiJrVaSex4ifC) - Genesis Memory MCP Sync (ID: d8DGMFPxIQ07aC0P) === Step 4: Import workflow via api/v1 === api/v1 import FAILED: The remote server returned an error: (500) Internal Server Error. Error body: Trying with Authorization Bearer header... Bearer import also failed: The remote server returned an error: (500) Internal Server Error.