{
  "schema": "ldwf",
  "version": 1,
  "name": "Vertragsprüfung",
  "meta": {
    "exportedAt": "2025-11-16T16:58:53.671Z",
    "exporter": "client"
  },
  "graph": {
    "nodes": [
      {
        "type": "trigger",
        "data": {
          "comment": "📋 SCHRITT 1: Vertrags-Überwachung\n\nBESCHREIBUNG:\nDieser Trigger überwacht einen spezifischen Google Drive-Ordner auf neue Dateien. Sobald ein neuer Vertrag (PDF oder DOCX) hochgeladen wird, startet der Workflow automatisch.\n\nSETUP:\n1. Verbinden Sie Ihr Google Drive-Konto\n2. Wählen Sie den Ordner aus, in dem neue Verträge abgelegt werden\n3. Optional: Filtern Sie nach Dateitypen (PDF, DOCX)\n\nPERSONALISIERUNG:\n• Ändern Sie den überwachten Ordner je nach Ihrer Ordnerstruktur\n• Fügen Sie Filter für bestimmte Dateinamen hinzu (z.B. nur Dateien mit 'Vertrag' im Namen)\n• Nutzen Sie Unterordner für verschiedene Vertragsarten (Lieferanten, Kunden, Dienstleister)",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "newContract",
          "kind": "integration",
          "integrationId": "027a1624-8691-4c3d-aeb9-9c179f2ac101",
          "triggerId": "371fdf5d-92e5-4e88-ade2-ca91334366af",
          "params": []
        },
        "id": "b7c8fe43-a929-4bab-8675-e3f6225fe747",
        "position": {
          "x": 20,
          "y": 10850
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "📥 SCHRITT 2: Vertrag herunterladen\n\nBESCHREIBUNG:\nLädt die Vertragsdatei aus Google Drive herunter und macht sie für die weitere Verarbeitung verfügbar. Die Datei wird automatisch für die KI-Analyse bereitgestellt.\n\nSETUP:\n1. Keine zusätzliche Konfiguration erforderlich\n2. Die Datei-ID wird automatisch vom Trigger übernommen\n\nPERSONALISIERUNG:\n• Dieser Schritt funktioniert automatisch\n• Bei Bedarf können Sie hier eine Bestätigung aktivieren (requiresConfirmation: true)\n• Für große Dateien können Sie Timeouts anpassen",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "getContractFile",
          "actionId": "19b9204a-21b2-4951-a33d-ab07c9087f1b",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "64776bd9-4c58-42d0-8301-2c8a4566e68c",
            "fields": {
              "itemId": {
                "mode": "prompt",
                "prompt": "Extract the file ID from the trigger output to download the contract file"
              }
            }
          }
        },
        "id": "ae6ef8ce-4062-4482-bf1c-f890d6152824",
        "position": {
          "x": 560,
          "y": 10850
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "⚖️ SCHRITT 4: Rechtliche Risikoanalyse\n\nBESCHREIBUNG:\nEin spezialisierter KI-Agent bewertet die extrahierten Vertragsdaten und identifiziert potenzielle rechtliche Risiken. Er erstellt eine Zusammenfassung und gibt konkrete Handlungsempfehlungen.\n\nSETUP:\n1. Nutzt die strukturierten Daten aus Schritt 3\n2. Führt automatische Risikoanalyse durch\n3. Bewertet Risiken nach Schweregrad (hoch/mittel/niedrig)\n\nPERSONALISIERUNG:\n• Ergänzen Sie den Prompt um unternehmens-spezifische Risiko-Kriterien\n• Fügen Sie Compliance-Anforderungen hinzu (DSGVO, Branchenstandards)\n• Definieren Sie eigene Risiko-Kategorien im Output Schema\n• Integrieren Sie Knowledge-Base mit internen Richtlinien\n• Passen Sie die Risikobewertung an Ihre Risikoappetit-Matrix an",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "analyzeLegalRisks",
          "assistantId": null,
          "mode": "create",
          "name": "Legal Risk Analyzer",
          "prompt": {
            "mode": "manual",
            "value": "Basierend auf den extrahierten Vertragsinformationen:\n\nLaufzeit: {{extractContractTerms.output.structured.laufzeit}}\nKündigungsfrist: {{extractContractTerms.output.structured.kuendigungsfrist}}\nKosten: {{extractContractTerms.output.structured.kosten}}\nHaftungsklauseln: {{extractContractTerms.output.structured.haftungsklauseln}}\nVertragsparteien: {{extractContractTerms.output.structured.vertragsparteien}}\n\nFühre eine umfassende rechtliche Risikoanalyse durch:\n\n1. Identifiziere potenzielle rechtliche Risiken und problematische Klauseln\n2. Bewerte die Schwere der Risiken (hoch, mittel, niedrig)\n3. Erstelle eine kompakte Zusammenfassung des Vertrags für das Legal-Team\n4. Gib konkrete Handlungsempfehlungen\n\nSei kritisch und präzise in deiner Analyse."
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "9cf67926-022c-4e5b-9f7f-8edef8462510",
              "name": "risiken",
              "description": "Identifizierte rechtliche Risiken mit Schweregrad",
              "type": "string",
              "required": true
            },
            {
              "id": "c32769c5-ffd0-4793-b6db-7016e1ce37de",
              "name": "zusammenfassung",
              "description": "Kompakte Zusammenfassung des Vertrags",
              "type": "string",
              "required": true
            },
            {
              "id": "3f7e130c-d593-4411-b470-db687b0c0c37",
              "name": "handlungsempfehlungen",
              "description": "Konkrete Empfehlungen für das Legal-Team",
              "type": "string",
              "required": true
            },
            {
              "id": "a676f5cd-547b-4e66-88d4-244836e7e561",
              "name": "output",
              "description": "Gesamtbericht der Risikoanalyse",
              "type": "string",
              "required": true
            },
            {
              "id": "7188e72c-53b9-4e2f-9e40-fd151aa9f3f4",
              "name": "success",
              "description": "Ob die Analyse erfolgreich war",
              "type": "boolean",
              "required": true
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "2dd61fbc-408e-4ada-b704-ac8d0f5f7d0e",
        "position": {
          "x": 1680,
          "y": 10850
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "💾 SCHRITT 5: Dokumentation in Notion\n\nBESCHREIBUNG:\nErstellt automatisch eine strukturierte Notion-Seite mit allen extrahierten Informationen, der Zusammenfassung und der Risikoanalyse. Dient als zentrale Dokumentation für das Legal-Team.\n\nSETUP:\n1. Verbinden Sie Ihr Notion-Workspace\n2. Die Seite wird standardmäßig im Workspace-Root erstellt\n3. Optional: Wählen Sie eine spezifische Datenbank oder Seite als Parent\n\nPERSONALISIERUNG:\n• Ändern Sie 'parentId' um Seiten in einer spezifischen Datenbank zu erstellen\n• Passen Sie das Seiten-Template an (Abschnitte, Formatierung)\n• Fügen Sie zusätzliche Felder hinzu (Status, Priorität, Verantwortlicher)\n• Ändern Sie das Icon (📝 → ⚖️, 📄, 🔒)\n• Nutzen Sie Notion-Datenbanken für besseres Tracking und Filterung\n• Verlinken Sie die Original-Vertragsdatei aus Google Drive",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "saveToNotion",
          "actionId": "7dba4335-2c76-4648-82ab-5a731759245d",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "icon": {
                "mode": "manual",
                "value": "📝"
              },
              "title": {
                "mode": "prompt",
                "prompt": "Create a descriptive title for the contract analysis page based on the contract parties and date"
              },
              "content": {
                "mode": "prompt",
                "prompt": "Create a well-structured Notion page content with the following sections:\n\n# Vertragsanalyse\n\n## Vertragsinformationen\n- Laufzeit: {{extractContractTerms.output.structured.laufzeit}}\n- Kündigungsfrist: {{extractContractTerms.output.structured.kuendigungsfrist}}\n- Kosten: {{extractContractTerms.output.structured.kosten}}\n- Haftungsklauseln: {{extractContractTerms.output.structured.haftungsklauseln}}\n- Vertragsparteien: {{extractContractTerms.output.structured.vertragsparteien}}\n\n## Zusammenfassung\n{{analyzeLegalRisks.output.structured.zusammenfassung}}\n\n## Rechtliche Risiken\n{{analyzeLegalRisks.output.structured.risiken}}\n\n## Handlungsempfehlungen\n{{analyzeLegalRisks.output.structured.handlungsempfehlungen}}"
              },
              "parentId": {
                "mode": "manual",
                "value": "workspace"
              },
              "parentType": {
                "mode": "manual",
                "value": "page_id"
              },
              "createInPersonalRoot": {
                "mode": "manual",
                "value": "{{ true }}"
              }
            }
          }
        },
        "id": "4f7677f7-245c-4e8b-8c89-ad897e3b9e43",
        "position": {
          "x": 2240,
          "y": 10850
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "🔍 SCHRITT 3: Key Terms Extraktion\n\nBESCHREIBUNG:\nEin KI-Agent analysiert den Vertrag und extrahiert strukturiert die wichtigsten Vertragsbestandteile: Laufzeit, Kündigungsfrist, Kosten, Haftungsklauseln und Vertragsparteien.\n\nSETUP:\n1. Der Agent ist vorkonfiguriert und einsatzbereit\n2. Verwendet GPT-4 für präzise Extraktion\n3. Gibt strukturierte Daten aus (Output Schema)\n\nPERSONALISIERUNG:\n• Fügen Sie weitere Felder im Output Schema hinzu (z.B. 'Gerichtsstand', 'Datenschutzklauseln', 'SLA-Vereinbarungen')\n• Passen Sie den Prompt an Ihre spezifischen Vertragstypen an\n• Ändern Sie das KI-Modell für schnellere/günstigere Verarbeitung\n• Erweitern Sie die Extraktion um branchenspezifische Klauseln",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "extractContractTerms",
          "assistantId": null,
          "mode": "create",
          "name": "Contract Terms Extractor",
          "prompt": {
            "mode": "manual",
            "value": "Analysiere den Vertrag und extrahiere die folgenden wichtigen Vertragsbestandteile:\n\n1. Laufzeit (Vertragsbeginn und -ende)\n2. Kündigungsfrist (Fristen und Bedingungen)\n3. Kosten (alle finanziellen Verpflichtungen, Zahlungsmodalitäten)\n4. Haftungsklauseln (Haftungsbeschränkungen, Garantien)\n5. Vertragsparteien (alle beteiligten Parteien mit vollständigen Namen)\n\nSei präzise und strukturiert in deiner Extraktion. Wenn eine Information nicht im Vertrag vorhanden ist, gib dies explizit an."
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "abd13eaa-9cb5-4cc9-8f2c-32afc6fdcce6",
              "name": "laufzeit",
              "description": "Vertragslaufzeit mit Beginn und Ende",
              "type": "string",
              "required": true
            },
            {
              "id": "02d1e5de-3777-4fa1-8f2a-97eee26e4e3f",
              "name": "kuendigungsfrist",
              "description": "Kündigungsfristen und -bedingungen",
              "type": "string",
              "required": true
            },
            {
              "id": "df427e03-72d1-44cf-a5f8-3d538f0edee3",
              "name": "kosten",
              "description": "Alle finanziellen Verpflichtungen und Zahlungsmodalitäten",
              "type": "string",
              "required": true
            },
            {
              "id": "27370737-db34-4ce6-88d4-d1d8c5fddaa0",
              "name": "haftungsklauseln",
              "description": "Haftungsbeschränkungen und Garantien",
              "type": "string",
              "required": true
            },
            {
              "id": "fa11e242-5107-4f93-b570-3b547639273c",
              "name": "vertragsparteien",
              "description": "Alle beteiligten Parteien mit vollständigen Namen",
              "type": "string",
              "required": true
            },
            {
              "id": "b7e320f3-123a-4c97-bcc4-3f22a64992bc",
              "name": "output",
              "description": "Zusammenfassung der extrahierten Informationen",
              "type": "string",
              "required": true
            },
            {
              "id": "a15fad87-bb3a-416c-b92a-98b24ac66dd1",
              "name": "success",
              "description": "Ob die Extraktion erfolgreich war",
              "type": "boolean",
              "required": true
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "f6977f4a-1950-4926-b4f9-aff78527fe83",
        "position": {
          "x": 1120,
          "y": 10850
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "📢 SCHRITT 6: Team-Benachrichtigung\n\nBESCHREIBUNG:\nBenachrichtigt das Legal-Team automatisch per Slack (oder alternativ Gmail), dass ein neuer Vertrag zur Review bereitsteht. Die Nachricht enthält eine Kurzzusammenfassung und die wichtigsten Risiken.\n\nSETUP:\n1. Verbinden Sie Slack (oder wechseln Sie zu Gmail)\n2. Passen Sie den Channel-Namen an (#legal → Ihr Channel)\n3. Die Nachricht wird automatisch generiert\n\nPERSONALISIERUNG:\n• Ändern Sie 'channelId' zum gewünschten Slack-Channel\n• Wechseln Sie zu Gmail: Ersetzen Sie diese Action durch 'Send Email'\n• Erweitern Sie die Nachricht um @mentions für bestimmte Personen\n• Fügen Sie einen Link zur Notion-Seite hinzu\n• Nutzen Sie Conditional Logic um nur bei hohen Risiken zu benachrichtigen\n• Senden Sie unterschiedliche Nachrichten basierend auf Risiko-Level\n• Fügen Sie Microsoft Teams als alternative Benachrichtigung hinzu",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "notifyLegalTeam",
          "actionId": "26a39d11-d5fe-4f46-b776-973dd20b8147",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "text": {
                "mode": "prompt",
                "prompt": "Create a professional Slack message to notify the legal team about a new contract that needs review. Include:\n- A brief summary from {{analyzeLegalRisks.output.structured.zusammenfassung}}\n- Key risks identified: {{analyzeLegalRisks.output.structured.risiken}}\n- Mention that the full analysis is available in Notion\n- Keep it concise and actionable"
              },
              "channelId": {
                "mode": "manual",
                "value": "#legal"
              }
            }
          }
        },
        "id": "97f997df-7e51-4b3f-9e41-0482753fad29",
        "position": {
          "x": 2800,
          "y": 10850
        }
      }
    ],
    "edges": [
      {
        "id": "b2443655-292e-4d8b-97b8-4a0161d58cc9",
        "source": "b7c8fe43-a929-4bab-8675-e3f6225fe747",
        "target": "ae6ef8ce-4062-4482-bf1c-f890d6152824",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "f0272b5e-a57d-45a8-a5af-f037fa77bf7e",
        "source": "ae6ef8ce-4062-4482-bf1c-f890d6152824",
        "target": "f6977f4a-1950-4926-b4f9-aff78527fe83",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "0fa52a3d-01ad-4bb0-bbbc-540afe134090",
        "source": "f6977f4a-1950-4926-b4f9-aff78527fe83",
        "target": "2dd61fbc-408e-4ada-b704-ac8d0f5f7d0e",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "03da48cf-0418-48df-a411-4302f991f9d7",
        "source": "4f7677f7-245c-4e8b-8c89-ad897e3b9e43",
        "target": "97f997df-7e51-4b3f-9e41-0482753fad29",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "e7970804-cc0f-4218-a070-0ee55a08c2ce",
        "source": "2dd61fbc-408e-4ada-b704-ac8d0f5f7d0e",
        "target": "4f7677f7-245c-4e8b-8c89-ad897e3b9e43",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      }
    ]
  }
}