{
  "schema": "ldwf",
  "version": 1,
  "name": "Kunden FAQ Selfservice",
  "meta": {
    "exportedAt": "2025-11-16T17:00:19.557Z",
    "exporter": "client"
  },
  "graph": {
    "nodes": [
      {
        "type": "trigger",
        "data": {
          "comment": "📥 WORKFLOW-START: Kundenanfrage empfangen\n\n🎯 Beschreibung:\nDieser Trigger startet den Workflow, wenn eine Kundenanfrage eingeht. Aktuell als manueller Trigger konfiguriert für Tests.\n\n⚙️ Setup:\n1. Für Produktion: Ersetzen Sie diesen durch einen Integration-Trigger\n2. Optionen: E-Mail-Trigger (Gmail/Outlook), Zendesk-Ticket, Webhook, oder Formular\n3. Der Trigger sollte die Kundenanfrage als Text-Output liefern\n\n🎨 Personalisierung:\n- E-Mail: Nutzen Sie Gmail/Outlook 'New Email' Trigger\n- Support-System: Nutzen Sie Zendesk 'New Ticket' Trigger\n- Website: Nutzen Sie Webhook oder Form Trigger\n- Multi-Channel: Erstellen Sie separate Workflows pro Kanal",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "customerInquiry",
          "name": "Customer Inquiry Trigger",
          "kind": "manual"
        },
        "id": "7b15016f-8f23-4a08-96ad-989367f70f5a",
        "position": {
          "x": 10,
          "y": 4010
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "✅ PFAD A: Self-Service E-Mail versenden (Hohe Wahrscheinlichkeit)\n\n🎯 Beschreibung:\nSendet automatisch eine hilfreiche E-Mail mit FAQ-Links an den Kunden, wenn die Lösungswahrscheinlichkeit hoch ist (>70%).\n\n⚙️ Setup:\n1. Gmail-Integration bereits verbunden\n2. Empfänger: Wird automatisch vom LLM aus dem Kontext ermittelt\n3. Betreff: Wird vom LLM basierend auf der Anfrage generiert\n4. Text: Nutzt die vorbereitete Antwort vom Evaluation-Agent\n\n🎨 Personalisierung:\n- E-Mail-Provider: Wechseln Sie zu Outlook Email 'Send email' Action\n- Betreff anpassen: Ändern Sie subject.prompt für spezifischen Stil\n- CC/BCC: Fügen Sie weitere Felder hinzu (z.B. CC an Support-Team)\n- Template: Ändern Sie body.mode auf 'prompt' für HTML-Templates oder Signatur\n- Anhänge: Fügen Sie relevante Dokumente als Attachments hinzu\n- Tracking: Fügen Sie UTM-Parameter zu Links hinzu",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "sendSelfServiceResponse",
          "actionId": "7e540add-fe6d-44c2-b224-f7c384573cdf",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "to": {
                "mode": "auto",
                "value": null,
                "prompt": null
              },
              "body": {
                "mode": "manual",
                "value": "{{evaluateSolution.output.structured.customer_response}}",
                "prompt": null
              },
              "subject": {
                "mode": "prompt",
                "value": null,
                "prompt": "Create a helpful subject line about the customer's inquiry"
              }
            }
          }
        },
        "id": "327eee84-eb42-4196-93ea-bd1e97d610ef",
        "position": {
          "x": 2780,
          "y": 3820
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "🎫 PFAD B: Support-Ticket erstellen (Niedrige Wahrscheinlichkeit)\n\n🎯 Beschreibung:\nErstellt ein Ticket im Support-System, wenn die FAQ-Artikel nicht ausreichen (≤70%). Das Ticket enthält vollständigen Kontext für das Support-Team.\n\n⚙️ Setup:\n1. WICHTIG: Wählen Sie Ihre Zendesk-Verbindung aus (aktuell nicht konfiguriert)\n2. Betreff: Hauptanliegen des Kunden\n3. Beschreibung: Detaillierter Kontext inkl. Analyse und niedriger Wahrscheinlichkeit\n4. Priorität: Basiert auf der Urgency-Analyse\n\n🎨 Personalisierung:\n- Ticketing-System: Ersetzen Sie durch Linear, Jira, Service Now etc.\n- Zuweisung: Fügen Sie 'assignee' Feld hinzu basierend auf Kategorie\n- Tags: Fügen Sie 'tags' Feld hinzu (z.B. 'ai-routed', Kategorie-Name)\n- Custom Fields: Nutzen Sie Zendesk Custom Fields für zusätzliche Daten\n- Auto-Reply: Fügen Sie eine E-Mail-Action hinzu, um Kunden über Ticket-Erstellung zu informieren\n- SLA: Setzen Sie SLA basierend auf Urgency-Level",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "createSupportTicket",
          "actionId": "85d615e7-84d2-4f0a-a155-de2e2d7a9d60",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "subject": {
                "mode": "manual",
                "value": "{{analyzeInquiry.output.structured.main_concern}}",
                "prompt": null
              },
              "priority": {
                "mode": "manual",
                "value": "{{analyzeInquiry.output.structured.urgency}}",
                "prompt": null
              },
              "description": {
                "mode": "prompt",
                "value": null,
                "prompt": "Create a detailed ticket description including the customer's inquiry, the analysis results, and why this requires human support (low solution probability from FAQ search)"
              }
            }
          }
        },
        "id": "3ee83b78-8a75-4c81-9f2e-ef9a7d39b7d6",
        "position": {
          "x": 2780,
          "y": 4960
        }
      },
      {
        "type": "add",
        "data": {
          "comment": "🔀 Pfade zusammenführen\n\n🎯 Beschreibung:\nFührt beide Workflow-Pfade (Self-Service + Ticket-Erstellung) wieder zusammen, bevor das CRM aktualisiert wird.\n\n⚙️ Setup:\nKeine Konfiguration erforderlich - dieser Node wartet auf beide möglichen Pfade und führt dann zum CRM-Update.\n\n🎨 Info:\nDieser Merge-Point stellt sicher, dass unabhängig vom gewählten Pfad immer das CRM aktualisiert wird.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Merge Paths",
          "fromLeftHandle": false
        },
        "id": "cc316a7a-3b82-4fc9-bdea-4b166efbea14",
        "position": {
          "x": 3324,
          "y": 4010
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "📊 SCHRITT 5: CRM-Tracking & Kundenzufriedenheit\n\n🎯 Beschreibung:\nAktualisiert den Kundenkontakt im CRM mit Informationen über diese Support-Interaktion. Trackt Zufriedenheit und Workflow-Performance.\n\n⚙️ Setup:\n1. WICHTIG: Wählen Sie Ihre HubSpot-Verbindung aus (aktuell nicht konfiguriert)\n2. Contact ID: Wird automatisch vom LLM ermittelt\n3. Properties: Umfassende Update-Anweisungen für relevante Felder\n\n🎨 Personalisierung:\n- CRM-System: Ersetzen Sie durch Salesforce, Pipedrive, etc.\n- Custom Properties: Passen Sie die Update-Anweisungen an Ihre CRM-Felder an:\n  * last_support_interaction_date\n  * support_interaction_type (self_service / escalated)\n  * ai_solution_probability\n  * inquiry_category\n  * customer_satisfaction_score\n- Analytics: Fügen Sie Tracking für Metriken hinzu (Resolutionsrate, Antwortzeit)\n- Follow-up: Fügen Sie eine Delay + Satisfaction Survey Action hinzu\n- Reporting: Erstellen Sie Dashboard-Updates basierend auf Kategorien\n- Segmentierung: Taggen Sie Kontakte basierend auf Self-Service-Fähigkeit",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "updateCrmContact",
          "actionId": "51e2db30-e866-4881-a5c0-533b14755cf6",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "contactId": {
                "mode": "auto",
                "value": null,
                "prompt": null
              },
              "properties": {
                "mode": "prompt",
                "value": null,
                "prompt": "Update the contact with information about this support interaction:\n- Track that a customer inquiry was processed\n- Note whether it was resolved via self-service (high probability) or escalated to support team (low probability)\n- Record the inquiry category: {{analyzeInquiry.output.structured.category}}\n- Update last contact date and interaction type\n- Add any relevant notes about the solution probability score: {{evaluateSolution.output.structured.solution_probability}}%"
              }
            }
          }
        },
        "id": "ec52847b-4fed-4620-8856-2c85147e6edb",
        "position": {
          "x": 3852,
          "y": 4010
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "🤖 SCHRITT 3: Lösungswahrscheinlichkeit bewerten\n\n🎯 Beschreibung:\nDieser Agent bewertet, ob die gefundenen FAQ-Artikel die Kundenanfrage ausreichend beantworten können. Gibt einen Wahrscheinlichkeits-Score (0-100%) zurük.\n\n⚙️ Setup:\n1. Bewertungsskala ist im Prompt definiert (90-100% = Perfekt, 70-89% = Gut, etc.)\n2. Bei hoher Wahrscheinlichkeit (>70%) wird automatisch eine Kundenantwort vorbereitet\n3. Output-Schema enthält Score, Assessment und vorbereitete Antwort\n\n🎨 Personalisierung:\n- Schwellenwert anpassen: Ändern Sie die Bewertungsskala im Prompt (z.B. strenger/lockerer)\n- Antwort-Stil: Passen Sie den Prompt an, um formellere/informellere Antworten zu generieren\n- Zusätzliche Kriterien: Fügen Sie Bewertungsfaktoren hinzu (z.B. Aktualität der Artikel, Vollständigkeit)\n- Sprache: Erweitern Sie den Prompt für mehrsprachige Antworten\n- Marken-Ton: Definieren Sie Ihren Brand Voice im Prompt",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "evaluateSolution",
          "assistantId": null,
          "mode": "create",
          "name": "Evaluate Solution Probability",
          "prompt": {
            "mode": "manual",
            "value": "Evaluate whether the FAQ articles found can adequately answer the customer's inquiry.\n\nCustomer's Main Concern: {{analyzeInquiry.output.structured.main_concern}}\n\nFAQ Search Results: {{searchFaq.output}}\n\nYour task:\n1. Review the FAQ articles found and assess their relevance to the customer's inquiry\n2. Determine if the articles provide a complete and satisfactory answer\n3. Calculate a solution probability score from 0-100%:\n - 90-100%: Perfect match, articles fully answer the question\n - 70-89%: Good match, articles mostly answer the question\n - 50-69%: Partial match, articles provide some relevant information\n - 30-49%: Weak match, articles are loosely related\n - 0-29%: Poor match, articles don't adequately address the inquiry\n4. If solution probability is high (>70%), prepare a customer-friendly response with the relevant FAQ links\n\nBe thorough and accurate in your assessment."
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "e7af5781-2bac-46d3-9506-7abe7a3a54f6",
              "name": "solution_probability",
              "description": "Probability score (0-100) that the FAQ articles can solve the customer's issue",
              "type": "number",
              "required": true
            },
            {
              "id": "61491a22-09d4-4707-989f-d1549b3f892d",
              "name": "assessment",
              "description": "Detailed assessment of why this probability score was given",
              "type": "string",
              "required": true
            },
            {
              "id": "5914261c-1cda-4d2b-be1b-d556d373083c",
              "name": "customer_response",
              "description": "Draft response to send to customer with FAQ links (if probability > 70%)",
              "type": "string",
              "required": false
            },
            {
              "id": "0ab8db7c-14a2-4a10-9e3b-ab3f717cbb33",
              "name": "relevant_articles",
              "description": "List of the most relevant FAQ article titles or URLs",
              "type": "string",
              "required": false
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "e7da9d32-1097-43b1-9c1c-50c57a6d80e1",
        "position": {
          "x": 1660,
          "y": 4010
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "🤖 SCHRITT 1: KI-Analyse der Kundenanfrage\n\n🎯 Beschreibung:\nDieser Agent analysiert die eingehende Kundenanfrage und extrahiert wichtige Informationen:\n- Hauptanliegen des Kunden\n- Suchbegriffe für FAQ-Suche\n- Kategorie (Technical, Billing, etc.)\n- Dringlichkeitsstufe\n\n⚙️ Setup:\n1. LLM-Modell ist bereits konfiguriert (Standard-Modell)\n2. Output-Schema definiert strukturierte Daten für nachfolgende Schritte\n3. Keine Tools erforderlich - reine Textanalyse\n\n🎨 Personalisierung:\n- Kategorien anpassen: Ändern Sie die 'category' Optionen im Output-Schema\n- Weitere Felder: Fügen Sie z.B. 'customer_sentiment', 'language', 'product' hinzu\n- Prompt erweitern: Fügen Sie branchenspezifische Analysekriterien hinzu\n- Multi-Language: Erweitern Sie den Prompt für mehrsprachige Anfragen",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "analyzeInquiry",
          "assistantId": null,
          "mode": "create",
          "name": "Analyze Customer Inquiry",
          "prompt": {
            "mode": "manual",
            "value": "Analyze the following customer inquiry and extract the main concern.\n\nCustomer Inquiry: {{customerInquiry.output}}\n\nYour task:\n1. Identify the primary issue or question the customer is asking about\n2. Extract key topics and keywords that will help search for relevant FAQ articles\n3. Categorize the inquiry type (technical issue, billing question, feature request, general inquiry, etc.)\n4. Note any urgency indicators or sentiment\n\nProvide a clear analysis that will help route this inquiry to the right resources."
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "d41bb271-48a0-47b6-8cb4-62b83301da30",
              "name": "main_concern",
              "description": "The primary concern or question from the customer",
              "type": "string",
              "required": true
            },
            {
              "id": "fdf64dc7-c8df-43be-b2a5-2a2d110b740b",
              "name": "search_keywords",
              "description": "Key search terms to find relevant FAQ articles",
              "type": "string",
              "required": true
            },
            {
              "id": "0b08953d-1a0d-4d3b-a72b-7a50203b8097",
              "name": "category",
              "description": "Type of inquiry",
              "type": "select",
              "required": true,
              "options": [
                "Technical Issue",
                "Billing Question",
                "Feature Request",
                "General Inquiry",
                "Account Management"
              ]
            },
            {
              "id": "a0908a49-0f77-44fc-bb4c-1392872cc649",
              "name": "urgency",
              "description": "Urgency level of the inquiry",
              "type": "select",
              "required": true,
              "options": [
                "High",
                "Medium",
                "Low"
              ]
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "fc1e8ce8-c822-4e7d-9ad9-d0c338f50bab",
        "position": {
          "x": 540,
          "y": 4010
        }
      },
      {
        "type": "file_search",
        "data": {
          "comment": "📚 SCHRITT 2: FAQ-Datenbank durchsuchen\n\n🎯 Beschreibung:\nDurchsucht Ihre Knowledge Base (FAQ, Help Center, Dokumentation) nach relevanten Artikeln basierend auf den extrahierten Suchbegriffen.\n\n⚙️ Setup:\n1. WICHTIG: Wählen Sie einen Knowledge Folder aus (aktuell nicht konfiguriert)\n2. Laden Sie Ihre FAQ-Artikel, Help-Center-Dokumente in einen Knowledge Folder hoch\n3. Maximal 10 Ergebnisse werden zurückgegeben\n\n🎨 Personalisierung:\n- Ergebnisanzahl: Ändern Sie 'maxResults' (1-50) für mehr/weniger Artikel\n- Mehrere Quellen: Fügen Sie weitere File Search Nodes für verschiedene Knowledge Folders hinzu (z.B. getrennt nach Produkten)\n- Suchstrategie: Ändern Sie query.mode auf 'prompt' für spezifischere Suchanweisungen\n- Filter: Organisieren Sie Knowledge Folders nach Themen/Produkten für gezieltere Suche",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Search FAQ Database",
          "slug": "searchFaq",
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "knowledgeFolderId": null,
          "query": {
            "mode": "manual",
            "value": "{{analyzeInquiry.output.structured.search_keywords}}",
            "prompt": null
          },
          "maxResults": 10
        },
        "id": "99d72633-27b4-4024-a06a-e6b5d57da1d2",
        "position": {
          "x": 1100,
          "y": 4010
        }
      },
      {
        "type": "condition",
        "data": {
          "comment": "⚔️ SCHRITT 4: Routing-Entscheidung (70% Schwellenwert)\n\n🎯 Beschreibung:\nVerzweigt den Workflow basierend auf der Lösungswahrscheinlichkeit:\n- HOCH (>70%): Self-Service-Antwort senden\n- NIEDRIG (≤70%): Support-Ticket erstellen\n\n⚙️ Setup:\n1. Schwellenwert aktuell bei 70% konfiguriert\n2. Beide Pfade führen später zum CRM-Update zusammen\n3. Bedingungen basieren auf dem solution_probability Score\n\n🎨 Personalisierung:\n- Schwellenwert anpassen: Ändern Sie '70' in den Condition Values (z.B. 80% für höhere Qualität, 60% für mehr Automatisierung)\n- Drei Pfade: Fügen Sie eine dritte Bedingung hinzu (z.B. 50-70% = 'Teilweise hilfreich' mit gemischter Antwort)\n- Zusätzliche Kriterien: Kombinieren Sie mit Urgency-Level (z.B. High Urgency immer zu Support)\n- A/B Testing: Erstellen Sie parallele Workflows mit verschiedenen Schwellenwerten",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Check Solution Probability",
          "slug": "checkProbability",
          "mode": "manual",
          "outputMode": "single",
          "modelId": "64776bd9-4c58-42d0-8301-2c8a4566e68c",
          "forceSelectBranch": false,
          "conditions": [
            {
              "id": "7a833b59-5957-45ff-99cd-6963cd795fee",
              "name": "High Probability (>70%)",
              "value": "{{evaluateSolution.output.structured.solution_probability > 70}}",
              "prompt": null
            },
            {
              "id": "86e118ea-053b-4438-9d13-3a91dcc08f30",
              "name": "Low Probability (≤70%)",
              "value": "{{evaluateSolution.output.structured.solution_probability <= 70}}",
              "prompt": null
            }
          ]
        },
        "id": "d2f8c691-be15-4291-97e3-6074e2669c9a",
        "position": {
          "x": 2220,
          "y": 4010
        }
      }
    ],
    "edges": [
      {
        "id": "0e598382-9ea0-45b7-956a-7fd746dcf1cb",
        "source": "7b15016f-8f23-4a08-96ad-989367f70f5a",
        "target": "fc1e8ce8-c822-4e7d-9ad9-d0c338f50bab",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "28a1cd8a-af56-4e51-a5cf-547cbd9a9223",
        "source": "fc1e8ce8-c822-4e7d-9ad9-d0c338f50bab",
        "target": "99d72633-27b4-4024-a06a-e6b5d57da1d2",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "5f8b882d-b306-4301-8c87-863b3154e479",
        "source": "d2f8c691-be15-4291-97e3-6074e2669c9a",
        "target": "327eee84-eb42-4196-93ea-bd1e97d610ef",
        "animated": false,
        "sourceHandle": "output-condition",
        "targetHandle": "input-default",
        "conditionId": "7a833b59-5957-45ff-99cd-6963cd795fee"
      },
      {
        "id": "43470725-689e-4e0d-b907-bfe9c6083f06",
        "source": "99d72633-27b4-4024-a06a-e6b5d57da1d2",
        "target": "e7da9d32-1097-43b1-9c1c-50c57a6d80e1",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "f084e3e3-7c05-4173-9ab4-8217b0e7ef39",
        "source": "e7da9d32-1097-43b1-9c1c-50c57a6d80e1",
        "target": "d2f8c691-be15-4291-97e3-6074e2669c9a",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "1477bb6f-e506-44f6-8340-3db9096030e8",
        "source": "d2f8c691-be15-4291-97e3-6074e2669c9a",
        "target": "3ee83b78-8a75-4c81-9f2e-ef9a7d39b7d6",
        "animated": false,
        "sourceHandle": "output-condition",
        "targetHandle": "input-default",
        "conditionId": "86e118ea-053b-4438-9d13-3a91dcc08f30"
      },
      {
        "id": "a2a56c20-0811-44b7-818d-babc296fd272",
        "source": "327eee84-eb42-4196-93ea-bd1e97d610ef",
        "target": "cc316a7a-3b82-4fc9-bdea-4b166efbea14",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "3ee83b78-8a75-4c81-9f2e-ef9a7d39b7d6",
        "source": "3ee83b78-8a75-4c81-9f2e-ef9a7d39b7d6",
        "target": "cc316a7a-3b82-4fc9-bdea-4b166efbea14",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "3c3facff-e6cf-467a-98cc-43fb6b7124a7",
        "source": "cc316a7a-3b82-4fc9-bdea-4b166efbea14",
        "target": "ec52847b-4fed-4620-8856-2c85147e6edb",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      }
    ]
  }
}