AutomationFlowsAI & RAG › Backup Analysis Anna

Backup Analysis Anna

Backup Analysis Anna. Uses httpRequest, lmChatOpenRouter, memoryBufferWindow, telegram. Event-driven trigger; 42 nodes.

Event trigger★★★★★ complexityAI-powered42 nodesHTTP RequestOpenRouter ChatMemory Buffer WindowTelegramOutput Parser StructuredTelegram TriggerSupabase ToolExecute Workflow Trigger
AI & RAG Trigger: Event Nodes: 42 Complexity: ★★★★★ AI nodes: yes Added:

This workflow follows the Agent → Execute Workflow Trigger recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "updatedAt": "2025-09-10T16:50:26.000Z",
  "createdAt": "2025-08-20T18:39:51.868Z",
  "id": "Oz1klRdsrlykSSSb",
  "name": "Backup Analysis Anna",
  "active": true,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "url": "=https://api.firecrawl.dev/v1/extract/{{ $(\"Request\").item.json.id }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1632,
        608
      ],
      "id": "65ca2aed-4e7c-45db-90dd-234044954195",
      "name": "Get Data",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        },
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const data = $input.first().json.data;\n\nconst hasData = Array.isArray(data)\n  ? data.length > 0\n  : typeof data === 'object' && data !== null && Object.keys(data).length > 0;\n\nreturn { status: hasData };"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1824,
        608
      ],
      "id": "2b8267c0-ac7b-48e9-beb2-63c6777e34a1",
      "name": "Check Status"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "ec7e1f39-a030-411f-9ca5-ef8632663c49",
              "leftValue": "={{ $json.status }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "or"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        2000,
        608
      ],
      "id": "64108982-af4e-4d61-a788-0900cac294b0",
      "name": "If Successful"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.firecrawl.dev/v1/extract",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "prompt",
              "value": "={{ $json.prompt }} {{ $json.urls[0] }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1440,
        608
      ],
      "id": "a3b84a22-541a-4e88-a60b-c3f17050ab18",
      "name": "Request",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        },
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": "openai/gpt-4.1",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        32,
        256
      ],
      "id": "484d6833-4ede-4729-9c41-db4745af9bd8",
      "name": "OpenRouter Chat Model",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Message Anna').item.json.message.chat.id }}"
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        2208,
        144
      ],
      "id": "91e423e1-7597-490c-9354-06f853fc7f0c",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
        "text": "={{ $json.output.analyseAnnaAnswer }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        560,
        -16
      ],
      "id": "534dddde-f783-4ce4-9429-ba196e371ff5",
      "name": "Answer User",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"userMessage\": \"Analysiere alle Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen-Angebote.\",\n  \"analyseAnnaAnswer\": \"Analyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen-Angebote auf den Webseiten.\",\n  \"website\": [\n    \"https://www.solarexperte-brb.de\",\n    \"https://www.sonnenkraft-technik.de\",\n    \"https://www.solarteam-ost.de\"\n  ],\n  \"userGoal\": \"W\u00e4rmepumpen-Angebote finden\",\n  \"startResearch\": true,\n  \"isSingleCompany\": false\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.2,
      "position": [
        672,
        256
      ],
      "id": "5e1c079a-5820-477a-be3a-d3394308bb18",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1.2,
      "position": [
        -160,
        -16
      ],
      "id": "02ad7413-2f57-4841-b441-ab3b99400dbf",
      "name": "Message Anna",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "disabled": true
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "51746dd0-2087-430b-aef5-76424ac07607",
              "name": "supabaseProjectID",
              "value": "nythxjdfrrtdvlhxndjg",
              "type": "string"
            },
            {
              "id": "6775cd0c-e308-4cc2-8230-db33a6c7a190",
              "name": "bearerToken",
              "value": "",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": true,
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        48,
        -16
      ],
      "id": "3b9fa25c-cf5d-496c-b99f-448d13611079",
      "name": "ENV"
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "german_companies",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "state",
              "condition": "ilike",
              "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        144,
        352
      ],
      "id": "e4450935-61d3-4a98-b2b1-a88519fc15af",
      "name": "Get_Companies_By_State",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "german_companies",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "city",
              "condition": "ilike",
              "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        352,
        352
      ],
      "id": "88f06e14-b9a3-43a0-a677-008f785d837a",
      "name": "Get_Companies_By_City",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "german_companies",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "district",
              "condition": "ilike",
              "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        544,
        352
      ],
      "id": "88c49d5a-b4cd-4fc9-9baa-b0b7c9433f44",
      "name": "Get_Companies_By_District",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "german_companies",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "industry",
              "condition": "ilike",
              "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        448,
        192
      ],
      "id": "c833c2bd-2ce6-4260-ba27-384eb586f682",
      "name": "Get_Companies_By_Industry",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "german_companies",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "company",
              "condition": "ilike",
              "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        240,
        192
      ],
      "id": "c683f1af-3c00-4da9-a59d-2ed17f152aa2",
      "name": "Get_Companies_By_Name",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "userMessage"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        -160,
        -176
      ],
      "id": "1ce28331-85d6-4975-8506-b8bf5c432c99",
      "name": "Team Leader"
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "GPT-4.1"
        },
        "messages": {
          "values": [
            {
              "content": "=\nDu bist ein API-Request-Generator f\u00fcr FireCrawl.\n\nDeine Aufgabe: Erstelle ein JSON-Objekt, das als Request-Body f\u00fcr eine FireCrawl-Abfrage dient \u2013 basierend auf dem strukturierten Input einer vorangegangenen Analyse.\n\n## Input\n\nDas folgende JSON-Objekt sollst du verarbeiten:\n\n{{ $('Analyse Anna').all().toJsonString() }}\n\n## Deine Aufgabe\n\nErstelle daraus ein JSON im FireCrawl-Format:\n\n{\n  \"urls\": [...],\n  \"prompt\": \"...\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      ...\n    },\n    \"required\": [...]\n  }\n}\n\n### Regeln f\u00fcr das Format:\n\n1. **urls**: direkt aus `website` \u00fcbernehmen (Das Array sollte immer nur eine url haben, fals doch mehree drin sind nehme die erste)\n2. **prompt**: formuliere einen pr\u00e4zisen englischen Extraktionsbefehl, z.\u202fB.  \n   - \u201eExtract the CEO name\u201c  \n   - \u201eFind the job page URL\u201c  \n   - \u201eSearch for career opportunities on the site\u201c  \n3. **schema**: Erzeuge passende Properties im JSON-Schema-Stil, je nachdem, was der Nutzer wissen will.  \n   - z.\u202fB. `{ \"ceo_name\": { \"type\": \"string\" } }`  \n   - oder `{ \"job_page_url\": { \"type\": \"string\" } }`  \n   - Falls mehrere Infos gew\u00fcnscht sind: mehrere Properties  \n4. **required**: Alle Keys aus `properties` m\u00fcssen hier gelistet werden  \n5. Kein Text au\u00dferhalb des JSON \u2013 gib ausschlie\u00dflich das finale JSON-Objekt zur\u00fcck.\n\n## Beispiele\n\n### Beispiel 1 (nur CEO)\n\nInput:\n{\n  \"userGoal\": \"Finde den Gesch\u00e4ftsf\u00fchrer\",\n  \"website\": [\"https://firma-a.de\"]\n}\n\nOutput:\n{\n  \"urls\": [\"https://firma-a.de\"],\n  \"prompt\": \"Extract the CEO name\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"ceo_name\": {\n        \"type\": \"string\"\n      }\n    },\n    \"required\": [\"ceo_name\"]\n  }\n}\n\n### Beispiel 2 (mehrere Infos)\n\nInput:\n{\n  \"userGoal\": \"Finde den Gesch\u00e4ftsf\u00fchrer, seine E-Mail und Telefonnummer\",\n  \"website\": [\"https://firma-b.de\"]\n}\n\nOutput:\n{\n  \"urls\": [\"https://firma-b.de\"],\n  \"prompt\": \"Extract the CEO name, the CEO email and the CEO phone number\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"ceo_name\": {\n        \"type\": \"string\"\n      },\n      \"ceo_email\": {\n        \"type\": \"string\"\n      },\n      \"ceo_phone\": {\n        \"type\": \"string\"\n      }\n    },\n    \"required\": [\"ceo_name\", \"ceo_email\", \"ceo_phone\"]\n  }\n}\n\n## Besondere Hinweise\n\n- Nutze ausschlie\u00dflich englische Begriffe im `prompt` und in den `schema`-Feldern  \n- Keine allgemeinen Texte oder Kommentare \u2013 nur das finale JSON  \n- Wenn das Ziel unklar ist, nimm eine sinnvolle, m\u00f6glichst spezifische englische Beschreibung als `prompt` (z.\u202fB. \u201eTry to find out what services the company offers\u201c)\n",
              "role": "system"
            }
          ]
        },
        "jsonOutput": true,
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        448,
        608
      ],
      "id": "a2228688-4a69-488d-abfa-50cc0945f9c5",
      "name": "Build Request",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "4d17cc19-9718-4ca8-8a95-71655e348f07",
              "leftValue": "={{ $('Analyse Anna').item.json.output.website }}",
              "rightValue": "",
              "operator": {
                "type": "array",
                "operation": "notEmpty",
                "singleValue": true
              }
            },
            {
              "id": "fc028b7e-c3fe-4730-93e7-46a4f7030dfa",
              "leftValue": "={{ $('Analyse Anna').item.json.output.userGoal }}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              }
            },
            {
              "id": "664fa3e0-b57a-4f48-abe2-abed4edb9fdf",
              "leftValue": "={{ $('Analyse Anna').item.json.output.startResearch }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1584,
        368
      ],
      "id": "e443bcc2-6d1c-47ca-98aa-31f718e76a45",
      "name": "Start Analysing"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        256,
        752
      ],
      "id": "753b3eef-2c3d-4464-ab69-7e75ca139381",
      "name": "Loop Over Companies"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.message.text }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=# Rolle\n\nDu bist AnalyseAnna \u2013 eine digitale Recherche- und Analyse-Expertin. Pr\u00e4zise, professionell und l\u00f6sungsorientiert. Dein Job: aus Anweisungen wie \u201eAnalysiere ...\u201c eine fundierte Recherche starten \u2013 auf Basis einer firmenspezifischen Datenbank.\n\n# Was du brauchst\n\n- Einen **Firmennamen**, eine **Branche**, einen **Ortsteil**, eine **Stadt** oder ein **Bundesland**  \n- Ein konkretes **Analyse-Ziel**: Was soll genau herausgefunden werden?  \n  (z.\u202fB. \u201eAnalysiere alle Webseiten auf W\u00e4rmepumpen-Angebote\u201c oder \u201eSchau, ob die Firmen Stellenangebote auf ihrer Seite haben\u201c)\n\n\ud83d\udccc Die Eingabe ist meistens eine direkte Anweisung, z.\u202fB.:\n> \u201eAnalysiere Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen\u201c\n> \u201eAnalysiere diese Firma: XYZ GmbH auf Karriere-Seite und Dienstleistungen\u201c\n\nFalls etwas unklar ist: sachlich und konkret nachfragen.\n\n# Wichtiger Hinweis\n\nWenn keine konkrete Firma angegeben ist, sondern z.\u202fB. eine Branche oder ein Ort:\n- Hole **alle passenden Firmen aus der Datenbank**\n- Und analysiere **jede dieser Firmen einzeln**\n\nKeine pauschale Branchenrecherche \u2013 du arbeitest immer **firmenspezifisch**.\n\n# Tools\n\n- **Get_Companies_By_Name** \u2013 f\u00fcr einzelne Firmen  \n- **Get_Companies_By_Industry** \u2013 f\u00fcr Branchen  \n- **Get_Companies_By_State** \u2013 f\u00fcr Bundesl\u00e4nder  \n- **Get_Companies_By_City** \u2013 f\u00fcr St\u00e4dte  \n- **Get_Companies_By_District** \u2013 f\u00fcr Stadtteile  \n\nImmer das Tool nutzen, das zur Nutzereingabe passt. Wenn nicht eindeutig: R\u00fcckfrage stellen.\n\n# Webseiten-Info\n\nDie Analyse erfolgt **auf Basis der Unternehmenswebseiten**.  \nDiese werden aus dem Feld `website` in der Datenbank extrahiert.  \nAlle Tools liefern Daten im gleichen Format, inklusive des Felds `website`.\n\nDu erstellst ein **Array aus URLs**, auf denen dann gescraped wird.\n\n# Flag f\u00fcr Einzelfirma\n\nSetze das Feld `isSingleCompany`:\n\n- `true`, wenn **nur eine Website vorhanden** ist **oder** wenn die Nutzereingabe klar auf **eine bestimmte Firma** zielt (z.\u202fB. \u201eAnalysiere die XYZ GmbH ...\u201c)  \n- `false`, wenn mehrere Webseiten vorhanden sind **und** keine eindeutige Einzelfirma genannt ist\n\n# Antwortstil\n\n- Professionell, klar, sachlich  \n- Keine Umgangssprache oder Floskeln  \n- Beispiel: \u201eAnalyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen.\u201c\n\n# Ziel\n\n- Eingabe auswerten und verstehen: Firma, Branche oder Region?  \n- Analyse-Ziel erkennen  \n- Passendes Tool aufrufen  \n- Webseiten-Array vorbereiten  \n- Erst wenn alles vollst\u00e4ndig ist: `startResearch = true`\n\n# Sonderfall: Smalltalk oder irrelevante Nachricht\n\nWenn die Nachricht **nicht analyserelevant** ist (z.\u202fB. \u201eWie geht\u2019s dir?\u201c), antworte locker, aber mit Stil:\n\n**Beispiel:**\n\n> Guten Morgen, Chef! Mir geht\u2019s bestens \u2013 bereit f\u00fcr den n\u00e4chsten Auftrag.  \n> Soll ich direkt wieder mit der Analyse von Firmen starten?\n\n# Beispiel Output\n\n{\n  \"userMessage\": \"Analysiere alle Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen-Angebote.\",\n  \"analyseAnnaAnswer\": \"Analyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen-Angebote auf den Webseiten.\",\n  \"website\": [\n    \"https://www.solarexperte-brb.de\",\n    \"https://www.sonnenkraft-technik.de\",\n    \"https://www.solarteam-ost.de\"\n  ],\n  \"userGoal\": \"W\u00e4rmepumpen-Angebote finden\",\n  \"startResearch\": true,\n  \"isSingleCompany\": false\n}\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        224,
        -16
      ],
      "id": "7256e2ea-2e60-48c6-b7e2-d3c1ddfd20e4",
      "name": "Analyse Anna"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "6e8ddfac-5c09-42c8-b176-9a0a7da41ad7",
              "leftValue": "={{ $('Analyse Anna').item.json.output.isSingleCompany }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        -160,
        608
      ],
      "id": "85df995f-79d5-4646-bfbd-cefa81614833",
      "name": "Analyse A Single Company"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "6e8ddfac-5c09-42c8-b176-9a0a7da41ad7",
              "leftValue": "={{ $('Analyse Anna').item.json.output.isSingleCompany }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        2432,
        496
      ],
      "id": "e1f331ae-81ce-4d9a-b5ae-61b7b5541cc7",
      "name": "Analyse A Single Company1"
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "GPT-4.1"
        },
        "messages": {
          "values": [
            {
              "content": "=Du bist \"Analyse Anna\", eine freundliche, professionelle KI-Assistentin, die Ergebnisse von Webseitenanalysen zusammenfasst und als Textnachricht zur\u00fcckgibt. Dein Stil ist sachlich, aber freundlich.\n\n## Ziel\n\nFormuliere eine passende Antwort auf Basis folgender Informationen:\n\n1. **Initialer Analyse-Wunsch des Nutzers** (siehe \"initialRequest\")\n2. **Ergebnisse der FireCrawl-Analyse** (siehe \"result\")\n\nDu gibst **nur** ein JSON-Objekt mit folgendem Format zur\u00fcck:\n\n```json\n{\n  \"analyseAnnaSuccessAnswer\": \"...\"\n}\n```\n\n## Regeln\n\n- Antworte auf Deutsch.\n- Starte nicht mit einer Begr\u00fc\u00dfung \u2013 du antwortest mitten in einer laufenden Konversation.\n- Gehe freundlich, aber kurz auf das Ziel des Nutzers ein.\n- Formuliere klar, was du herausgefunden hast.\n- Nenne dabei die gefundenen Informationen direkt (z.\u202fB. Name, Position, Link etc.)\n- Verwende keine Platzhalter.\n- Schreibe so, als w\u00fcrde \"Anna\" in einem Telegram-Chat antworten \u2013 direkt, aber professionell.\n- Kein Text au\u00dferhalb des JSON!\n\n### Input:\n\ninitialRequest:\n\n{{ $('Analyse Anna').all().toJsonString() }}\n\nresult:\n\n{{ $('Get Data').item.json.data.toJsonString() }}",
              "role": "system"
            }
          ]
        },
        "jsonOutput": true,
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        2640,
        464
      ],
      "id": "f1d82ad8-f509-4086-939b-a26905812a82",
      "name": "Build Answer",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
        "text": "={{ $json.message.content.analyseAnnaSuccessAnswer }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        2960,
        464
      ],
      "id": "c95e7be8-9c1c-4e94-89a3-1d401d932d17",
      "name": "Inform User",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        3072,
        656
      ],
      "id": "8c68dcaf-d682-4b97-ae30-ea4b67bc98fd",
      "name": "OpenRouter Chat Model1",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "tableId": "german_companies",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "website",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        3232,
        656
      ],
      "id": "0fc66767-1291-4e75-98fb-9cd77f38e214",
      "name": "Get_Company",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Du bist AnalyseAnna \u2013 eine digitale Recherche- und Analyse-Expertin. Pr\u00e4zise, professionell und l\u00f6sungsorientiert. Dein Job: Unternehmensdaten in einer Datenbank zu aktualisieren.\n\n# Tools\n\n1. **Get_Company** - Liefert gespeicherte Unternehmensdaten aus der Datenbank zur angegebenen Webseite.\n2. **Update_CEO** - Aktualisiert das column `ceo_name`\n3. **Update_Email** - Aktualisiert das column `email`\n2. **Save_Analysis** - Speichert sonstige in der Analyse herausgefundene informationen als string im column `analysis`\n\n## Ziel\n\nBasierend auf der vorhandenen Webseite und den Ergebnissen einer FireCrawl-Analyse sollst du die gespeicherten Unternehmensdaten aktualisieren.\n\n## Regeln\n\n- Die Webseite ist bereits bekannt (du musst `Get_Company` **nur nutzen, wenn du bestehende Daten vergleichen m\u00f6chtest**).\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. ceo_name), aktualisiere diese \u00fcber `Update_CEO`.\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. email), aktualisiere diese \u00fcber `Update_Email`.\n- Wenn neue zus\u00e4tzliche Informationen aus FireCrawl vorliegen, speicher eine diese mit `Save_Analysis` \n- Verwende keine Platzhalter.\n- Gib am Ende deiner Aktionen eine kurze Erkl\u00e4rung ab was du gemacht hast.\n\n## Input\n\nfirecrawlResult:\n\n{{ $('Get Data').item.json.data.toJsonString() }}\n\ncompanyWebsite:\n\n{{ $('Analyse Anna').first().json.output.website[0] }}",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        3120,
        464
      ],
      "id": "21fd9617-981f-4093-afdc-d5ef9a701a80",
      "name": "Update Agent"
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "german_companies",
        "filters": {
          "conditions": [
            {
              "keyName": "website",
              "condition": "eq",
              "keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "ceo_name",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues1_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        3392,
        656
      ],
      "id": "ee045e78-4384-447a-81f1-abd64c3a3032",
      "name": "Update_CEO",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "german_companies",
        "filters": {
          "conditions": [
            {
              "keyName": "website",
              "condition": "eq",
              "keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "email",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        3152,
        784
      ],
      "id": "847d7b26-14f3-4ef0-a9e9-68abd707fe7c",
      "name": "Update_Email",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "german_companies",
        "filters": {
          "conditions": [
            {
              "keyName": "website",
              "condition": "eq",
              "keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "analysis",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        3312,
        784
      ],
      "id": "5fd3ec08-9bb7-460b-b2cb-5871538a84de",
      "name": "Save_Analysis",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
        "text": "Ich habe Ihnen die analysierten Informationen in der Datenbank aktualisiert.",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        3472,
        464
      ],
      "id": "3cde1ee0-23ca-4044-8861-de74d2ab575f",
      "name": "Inform User1",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        2592,
        1008
      ],
      "id": "ff279539-1cbe-4dcb-bd9b-aecb671440c2",
      "name": "OpenRouter Chat Model2",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "tableId": "german_companies",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "website",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        2752,
        1008
      ],
      "id": "aad9a925-deec-4290-a770-7e1848c77cc4",
      "name": "Get_Company1",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Du bist AnalyseAnna \u2013 eine digitale Recherche- und Analyse-Expertin. Pr\u00e4zise, professionell und l\u00f6sungsorientiert. Dein Job: Unternehmensdaten in einer Datenbank zu aktualisieren.\n\n# Tools\n\n1. **Get_Company** - Liefert gespeicherte Unternehmensdaten aus der Datenbank zur angegebenen Webseite.\n2. **Update_CEO** - Aktualisiert das column `ceo_name`\n3. **Update_Email** - Aktualisiert das column `email`\n2. **Save_Analysis** - Speichert sonstige in der Analyse herausgefundene informationen als string im column `analysis`\n\n## Ziel\n\nBasierend auf der vorhandenen Webseite und den Ergebnissen einer FireCrawl-Analyse sollst du die gespeicherten Unternehmensdaten aktualisieren.\n\n## Regeln\n\n- Die Webseite ist bereits bekannt (du musst `Get_Company` **nur nutzen, wenn du bestehende Daten vergleichen m\u00f6chtest**).\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. ceo_name), aktualisiere diese \u00fcber `Update_CEO`.\n- Wenn neue Informationen aus FireCrawl vorliegen (z.\u202fB. email), aktualisiere diese \u00fcber `Update_Email`.\n- Wenn neue zus\u00e4tzliche Informationen aus FireCrawl vorliegen, speicher eine diese mit `Save_Analysis` \n- Verwende keine Platzhalter.\n- Gib am Ende deiner Aktionen eine kurze Erkl\u00e4rung ab was du gemacht hast.\n\n## Input\n\nfirecrawlResult:\n\n{{ $('Get Data').item.json.data.toJsonString() }}\n\ncompanyWebsite:\n\n{{ $('Analyse Anna').first().json.output.website[0] }}",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        2640,
        784
      ],
      "id": "866bc480-9e2d-4235-a15b-c1c471319b78",
      "name": "Update Agent1"
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "german_companies",
        "filters": {
          "conditions": [
            {
              "keyName": "website",
              "condition": "eq",
              "keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "ceo_name",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues1_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        2912,
        1008
      ],
      "id": "d99092f5-7076-4623-b1a2-55de7c258c25",
      "name": "Update_CEO1",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "german_companies",
        "filters": {
          "conditions": [
            {
              "keyName": "website",
              "condition": "eq",
              "keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "email",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        2672,
        1152
      ],
      "id": "e64d5872-e238-413e-a74d-58e7fe79fa67",
      "name": "Update_Email1",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "german_companies",
        "filters": {
          "conditions": [
            {
              "keyName": "website",
              "condition": "eq",
              "keyValue": "={{ $('Build Request').item.json.message.content.urls[0] }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "email",
              "fieldValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fieldValues0_Field_Value', ``, 'string') }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabaseTool",
      "typeVersion": 1,
      "position": [
        2832,
        1152
      ],
      "id": "6f1fdb2c-1a0a-40ee-b171-e7b6d5c4279f",
      "name": "Save_Analysis1",
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
        "text": "Ich habe Ihnen die analysierten Informationen in der Datenbank aktualisiert.",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        544,
        816
      ],
      "id": "0cfaa217-47e0-4cd4-9863-be820809e818",
      "name": "Finished Task",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return $input.item.json.message.content;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        832,
        608
      ],
      "id": "d1322bb4-161d-40f4-97ae-6fd9881f7c40",
      "name": "Code"
    },
    {
      "parameters": {
        "fieldToSplitOut": "output.website",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        912,
        128
      ],
      "id": "11bdad08-b428-4a17-a220-7b08abc3b6df",
      "name": "Split Out"
    },
    {
      "parameters": {
        "jsCode": "return $input.all().map(item => {\n  return { json: { url: item.json[\"output.website\"] } };\n});"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1184,
        128
      ],
      "id": "af6efccf-f896-4704-b83f-bc5b9e2f0029",
      "name": "Code1"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        2208,
        704
      ],
      "id": "20661de5-68c4-475b-b9c5-f37faab1babe",
      "name": "Wait"
    }
  ],
  "connections": {
    "Get Data": {
      "main": [
        [
          {
            "node": "Check Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Status": {
      "main": [
        [
          {
            "node": "If Successful",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Successful": {
      "main": [
        [
          {
            "node": "Analyse A Single Company1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request": {
      "main": [
        [
          {
            "node": "Get Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_memory",
            "index": 0
          },
          {
            "node": "Update Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Message Anna": {
      "main": [
        [
          {
            "node": "ENV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ENV": {
      "main": [
        [
          {
            "node": "Analyse Anna",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get_Companies_By_State": {
      "ai_tool": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get_Companies_By_City": {
      "ai_tool": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get_Companies_By_District": {
      "ai_tool": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get_Companies_By_Industry": {
      "ai_tool": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get_Companies_By_Name": {
      "ai_tool": [
        [
          {
            "node": "Analyse Anna",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Answer User": {
      "main": [
        []
      ]
    },
    "Team Leader": {
      "main": [
        [
          {
            "node": "ENV",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Request": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Analysing": {
      "main": [
        [
          {
            "node": "Analyse A Single Company",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Companies": {
      "main": [
        [
          {
            "node": "Finished Task",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyse Anna": {
      "main": [
        [
          {
            "node": "Answer User",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyse A Single Company": {
      "main": [
        [
          {
            "node": "Build Request",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyse A Single Company1": {
      "main": [
        [
          {
            "node": "Build Answer",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Answer": {
      "main": [
        [
          {
            "node": "Inform User",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Inform User": {
      "main": [
        [
          {
            "node": "Update Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Update Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get_Company": {
      "ai_tool": [
        [
          {
            "node": "Update Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update_CEO": {
      "ai_tool": [
        [
          {
            "node": "Update Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update_Email": {
      "ai_tool": [
        [
          {
            "node": "Update Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Save_Analysis": {
      "ai_tool": [
        [
          {
            "node": "Update Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Agent": {
      "main": [
        [
          {
            "node": "Inform User1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Update Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get_Company1": {
      "ai_tool": [
        [
          {
            "node": "Update Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Agent1": {
      "main": [
        [
          {
            "node": "Loop Over Companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update_CEO1": {
      "ai_tool": [
        [
          {
            "node": "Update Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update_Email1": {
      "ai_tool": [
        [
          {
            "node": "Update Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Save_Analysis1": {
      "ai_tool": [
        [
          {
            "node": "Update Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Start Analysing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "e01503fb-67d2-49d3-8773-ca969ee6df1d",
  "activeVersionId": "e01503fb-67d2-49d3-8773-ca969ee6df1d",
  "triggerCount": 0,
  "shared": [
    {
      "updatedAt": "2025-08-20T18:39:51.877Z",
      "createdAt": "2025-08-20T18:39:51.877Z",
      "role": "workflow:owner",
      "workflowId": "Oz1klRdsrlykSSSb",
      "projectId": "B7QJE85HA2Vij1it"
    }
  ],
  "activeVersion": {
    "updatedAt": "2025-12-17T18:43:08.327Z",
    "createdAt": "2025-12-17T18:43:08.327Z",
    "versionId": "e01503fb-67d2-49d3-8773-ca969ee6df1d",
    "workflowId": "Oz1klRdsrlykSSSb",
    "nodes": [
      {
        "parameters": {
          "url": "=https://api.firecrawl.dev/v1/extract/{{ $(\"Request\").item.json.id }}",
          "authentication": "genericCredentialType",
          "genericAuthType": "httpBearerAuth",
          "options": {}
        },
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          1632,
          608
        ],
        "id": "65ca2aed-4e7c-45db-90dd-234044954195",
        "name": "Get Data",
        "credentials": {
          "httpHeaderAuth": {
            "id": "iye8Q4wTT5P3zqAN",
            "name": "Digistore Header Auth"
          },
          "httpBearerAuth": {
            "id": "SxECNeK5aZvVbEGa",
            "name": "FireCrawl Bearer Auth"
          }
        }
      },
      {
        "parameters": {
          "jsCode": "const data = $input.first().json.data;\n\nconst hasData = Array.isArray(data)\n  ? data.length > 0\n  : typeof data === 'object' && data !== null && Object.keys(data).length > 0;\n\nreturn { status: hasData };"
        },
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          1824,
          608
        ],
        "id": "2b8267c0-ac7b-48e9-beb2-63c6777e34a1",
        "name": "Check Status"
      },
      {
        "parameters": {
          "conditions": {
            "options": {
              "caseSensitive": true,
              "leftValue": "",
              "typeValidation": "strict",
              "version": 2
            },
            "conditions": [
              {
                "id": "ec7e1f39-a030-411f-9ca5-ef8632663c49",
                "leftValue": "={{ $json.status }}",
                "rightValue": "",
                "operator": {
                  "type": "boolean",
                  "operation": "true",
                  "singleValue": true
                }
              }
            ],
            "combinator": "or"
          },
          "options": {}
        },
        "type": "n8n-nodes-base.if",
        "typeVersion": 2.2,
        "position": [
          2000,
          608
        ],
        "id": "64108982-af4e-4d61-a788-0900cac294b0",
        "name": "If Successful"
      },
      {
        "parameters": {
          "method": "POST",
          "url": "https://api.firecrawl.dev/v1/extract",
          "authentication": "genericCredentialType",
          "genericAuthType": "httpBearerAuth",
          "sendBody": true,
          "bodyParameters": {
            "parameters": [
              {
                "name": "prompt",
                "value": "={{ $json.prompt }} {{ $json.urls[0] }}"
              }
            ]
          },
          "options": {}
        },
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          1440,
          608
        ],
        "id": "a3b84a22-541a-4e88-a60b-c3f17050ab18",
        "name": "Request",
        "credentials": {
          "httpHeaderAuth": {
            "id": "iye8Q4wTT5P3zqAN",
            "name": "Digistore Header Auth"
          },
          "httpBearerAuth": {
            "id": "SxECNeK5aZvVbEGa",
            "name": "FireCrawl Bearer Auth"
          }
        }
      },
      {
        "parameters": {
          "model": "openai/gpt-4.1",
          "options": {}
        },
        "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
        "typeVersion": 1,
        "position": [
          32,
          256
        ],
        "id": "484d6833-4ede-4729-9c41-db4745af9bd8",
        "name": "OpenRouter Chat Model",
        "credentials": {
          "openRouterApi": {
            "id": "kRKxZkSBiWUL3Xr4",
            "name": "OpenRouter account"
          }
        }
      },
      {
        "parameters": {
          "sessionIdType": "customKey",
          "sessionKey": "={{ $('Message Anna').item.json.message.chat.id }}"
        },
        "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "typeVersion": 1.3,
        "position": [
          2208,
          144
        ],
        "id": "91e423e1-7597-490c-9354-06f853fc7f0c",
        "name": "Simple Memory"
      },
      {
        "parameters": {
          "chatId": "={{ $('Message Anna').item.json.message.chat.id }}",
          "text": "={{ $json.output.analyseAnnaAnswer }}",
          "additionalFields": {
            "appendAttribution": false
          }
        },
        "type": "n8n-nodes-base.telegram",
        "typeVersion": 1.2,
        "position": [
          560,
          -16
        ],
        "id": "534dddde-f783-4ce4-9429-ba196e371ff5",
        "name": "Answer User",
        "webhookId": "06135021-087d-4558-be06-94de90f2f053",
        "credentials": {
          "telegramApi": {
            "id": "nZg2Mdzi4Olbxbrr",
            "name": "Analysis Anna Telegram"
          }
        }
      },
      {
        "parameters": {
          "jsonSchemaExample": "{\n  \"userMessage\": \"Analysiere alle Solartechnik-Firmen in Brandenburg auf W\u00e4rmepumpen-Angebote.\",\n  \"analyseAnnaAnswer\": \"Analyse der Solartechnik-Firmen in Brandenburg wird vorbereitet. Fokus: W\u00e4rmepumpen-Angebote auf den Webseiten.\",\n  \"website\": [\n    \"https://www.solarexperte-brb.de\",\n    \"https://www.sonnenkraft-technik.de\",\n    \"https://www.solarteam-ost.de\"\n  ],\n  \"userGoal\": \"W\u00e4rmepumpen-Angebote finden\",\n  \"startResearch\": true,\n  \"isSingleCompany\": false\n}"
        },
        "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
        "typeVersion": 1.2,
        "position": [
          672,
          256
        ],
        "id": "5e1c079a-5820-477a-be3a-d3394308bb18",
        "name": "Structured Output Parser"
      },
      {
        "parameters": {
          "updates": [
            "message"
          ],
          "additionalFields": {}
        },
        "type": "n8n-nodes-base.telegramTrigger",
        "typeVersion": 1.2,
        "position": [
          -160,
          -16
        ],
        "id": "02ad7413-2f57-4841-b441-ab3b99400dbf",
        "name": "Message Anna",
        "webhookId": "d7f347dd-476e-414b-a30c-357b366ce6d0",
        "credentials": {
          "telegramApi": {
            "id": "nZg2Mdzi4Olbxbrr",
            "name": "Analysis Anna Telegram"
          }
        },
        "disabled": true
      },
      {
        "parameters": {
          "assignments": {
            "assignments": [
              {
                "id": "51746dd0-2087-430b-aef5-76424ac07607",
                "name": "supabaseProjectID",
                "value": "nythxjdfrrtdvlhxndjg",
                "type": "string"
              },
              {
                "id": "6775cd0c-e308-4cc2-8230-db33a6c7a190",
                "name": "bearerToken",
                "value": "",
                "type": "string"
              }
            ]
          },
          "includeOtherFields": true,
          "options": {}
        },
        "type": "n8n-nodes-base.set",
        "typeVersion": 3.4,
        "position": [
          48,
          -16
        ],
        "id": "3b9fa25c-cf5d-496c-b99f-448d13611079",
        "name": "ENV"
      },
      {
        "parameters": {
          "operation": "getAll",
          "tableId": "german_companies",
          "returnAll": true,
          "filters": {
            "conditions": [
              {
                "keyName": "state",
                "condition": "ilike",
                "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
              }
            ]
          }
        },
        "type": "n8n-nodes-base.supabaseTool",
        "typeVersion": 1,
        "position": [
          144,
          352
        ],
        "id": "e4450935-61d3-4a98-b2b1-a88519fc15af",
        "name": "Get_Companies_By_State",
        "credentials": {
          "supabaseApi": {
            "id": "fdzgJDGuPA2JozKn",
            "name": "Supabase account"
          }
        }
      },
      {
        "parameters": {
          "operation": "getAll",
          "tableId": "german_companies",
          "returnAll": true,
          "filters": {
            "conditions": [
              {
                "keyName": "city",
                "condition": "ilike",
                "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
              }
            ]
          }
        },
        "type": "n8n-nodes-base.supabaseTool",
        "typeVersion": 1,
        "position": [
          352,
          352
        ],
        "id": "88f06e14-b9a3-43a0-a677-008f785d837a",
        "name": "Get_Companies_By_City",
        "credentials": {
          "supabaseApi": {
            "id": "fdzgJDGuPA2JozKn",
            "name": "Supabase account"
          }
        }
      },
      {
        "parameters": {
          "operation": "getAll",
          "tableId": "german_companies",
          "returnAll": true,
          "filters": {
            "conditions": [
              {
                "keyName": "district",
                "condition": "ilike",
                "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
              }
            ]
          }
        },
        "type": "n8n-nodes-base.supabaseTool",
        "typeVersion": 1,
        "position": [
          544,
          352
        ],
        "id": "88c49d5a-b4cd-4fc9-9baa-b0b7c9433f44",
        "name": "Get_Companies_By_District",
        "credentials": {
          "supabaseApi": {
            "id": "fdzgJDGuPA2JozKn",
            "name": "Supabase account"
          }
        }
      },
      {
        "parameters": {
          "operation": "getAll",
          "tableId": "german_companies",
          "returnAll": true,
          "filters": {
            "conditions": [
              {
                "keyName": "industry",
                "condition": "ilike",
                "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
              }
            ]
          }
        },
        "type": "n8n-nodes-base.supabaseTool",
        "typeVersion": 1,
        "position": [
          448,
          192
        ],
        "id": "c833c2bd-2ce6-4260-ba27-384eb586f682",
        "name": "Get_Companies_By_Industry",
        "credentials": {
          "supabaseApi": {
            "id": "fdzgJDGuPA2JozKn",
            "name": "Supabase account"
          }
        }
      },
      {
        "parameters": {
          "operation": "getAll",
          "tableId": "german_companies",
          "returnAll": true,
          "filters": {
            "conditions": [
              {
                "keyName": "company",
                "condition": "ilike",
                "keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Field_Value', ``, 'string') }}"
              }
            ]
          }
        },
        "type": "n8n-nodes-base.supabaseTool",
        "typeVersion": 1,
        "position": [
          240,
          192
        ],
        "id": "c683f1af-3c00-4da9-a59d-2ed17f152aa2",
        "name": "Get_Companies_By_Name",
        "credentials": {
          "supabaseApi": {
            "id": "fdzgJDGuPA2JozKn",
            "name": "Supabase account"
          }
        }
      },
      {
        "parameters": {
          "workflowInputs": {
            "values": [
              {
                "name": "userMessage"
              }
            ]
          }
        },
        "type": "n8n-nodes-base.executeWorkflowTrigger",
        "typeVersion": 1.1,
        "position": [
          -160,
          -176
        ],
        "id": "1ce28331-85d6-4975-8506-b8bf5c432c99",
        "name": "Team Leader"
      },
      {
        "parameters": {
          "modelId": {
            "__rl": true,
            "value": "gpt-4.1",
            "mode": "list",
            "cachedResultName": "GPT-4.1"
          },
          "messages": {
            "values": [
              {
                "content": "=\nDu bist ein API-Request-Generator f\u00fcr FireCrawl.\n\nDeine Aufgabe: Erstelle ein JSON-Objekt, das als Request-Body f\u00fcr eine FireCrawl-Abfrage dient \u2013 basierend auf dem strukturierten Input einer vorangegangenen Analyse.\n\n## Input\n\nDas folgende JSON-Objekt sollst du verarbeiten:\n\n{{ $('Analyse Anna').all().toJsonString() }}\n\n## Deine Aufgabe\n\nErstelle daraus ein JSON im FireCrawl-Format:\n\n{\n  \"urls\": [...],\n  \"prompt\": \"...\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      ...\n    },\n    \"required\": [...]\n  

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Backup Analysis Anna. Uses httpRequest, lmChatOpenRouter, memoryBufferWindow, telegram. Event-driven trigger; 42 nodes.

Source: https://github.com/adamhaley/megyk-automations/blob/main/workflows/Backup_Analysis_Anna.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C

Perplexity Tool, Memory Buffer Window, Agent +15
AI & RAG

Arvifund - Supabase (Fixed v6). Uses httpRequest, telegram, supabase, telegramTrigger. Event-driven trigger; 92 nodes.

HTTP Request, Telegram, Supabase +8
AI & RAG

Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.

HTTP Request, Telegram, Google Sheets +9
AI & RAG

Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.

HTTP Request, Telegram, Google Sheets +8