{
  "schema": "ldwf",
  "version": 1,
  "name": "Meeting-Briefing",
  "meta": {
    "exportedAt": "2025-11-16T16:44:26.748Z",
    "exporter": "client"
  },
  "graph": {
    "nodes": [
      {
        "type": "web_search",
        "data": {
          "comment": "🌐 SCHRITT 3a: Firmen-News recherchieren (parallel)\n\nFührt eine Web-Suche nach aktuellen News über das Unternehmen des Kontakts durch.\n\n⚙️ WIE ES FUNKTIONIERT:\n• Die KI extrahiert automatisch den Firmennamen aus den HubSpot-Kontaktdaten\n• Sucht nach aktuellen News, Pressemitteilungen, Entwicklungen\n• Läuft PARALLEL zu Schritt 3b (Person/LinkedIn)\n\n💡 ERGEBNIS:\nLiefert relevante News-Artikel mit Titel, URL und Zusammenfassung für das Briefing.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Company News Search",
          "slug": "companyNewsSearch",
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "query": {
            "mode": "prompt",
            "value": null,
            "prompt": "Search for recent news about the company from the contact data. Include the company name in the search query."
          }
        },
        "id": "89e46138-76cd-4635-ba47-00d0d3d94877",
        "position": {
          "x": 1680,
          "y": 400
        }
      },
      {
        "type": "web_search",
        "data": {
          "comment": "👤 SCHRITT 3b: Person/LinkedIn recherchieren (parallel)\n\nSucht nach LinkedIn-Profil und aktuellen Updates zur Kontaktperson.\n\n⚙️ WIE ES FUNKTIONIERT:\n• Die KI extrahiert Name und Firma aus den HubSpot-Daten\n• Sucht nach LinkedIn-Profil, Posts, Karriere-Updates\n• Läuft PARALLEL zu Schritt 3a (Firmen-News)\n\n💡 ERGEBNIS:\nLiefert persönliche Insights: LinkedIn-Aktivitäten, Positionswechsel, veröffentlichte Inhalte - perfekt für persönliche Gesprächseinstiege.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Person LinkedIn Search",
          "slug": "personLinkedinSearch",
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "query": {
            "mode": "prompt",
            "value": null,
            "prompt": "Search for LinkedIn profile and recent updates about the person from the contact data. Include their name and company in the search."
          }
        },
        "id": "33b1489e-4ea5-42c7-81d2-d57d633d48b5",
        "position": {
          "x": 1680,
          "y": 780
        }
      },
      {
        "type": "trigger",
        "data": {
          "comment": "🎯 WORKFLOW-START: Neuer Kundentermin\n\nDieser Trigger startet den Workflow automatisch, wenn ein neuer Termin in Google Calendar erstellt wird.\n\n📋 SETUP:\n• Verbinden Sie Ihren Google Calendar Account\n• Fügen Sie eine Suchquery hinzu, um nur Kundentermine zu filtern (z.B. 'Kunde' im Titel oder spezifischer Kalendername)\n• Der Trigger liefert alle Termin-Details: Titel, Teilnehmer, Zeit, Notizen\n\n💡 TIPP: Nutzen Sie eine konsistente Namenskonvention für Kundentermine (z.B. 'Kunde:' als Präfix), damit der Filter zuverlässig funktioniert.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "newCustomerAppointment",
          "kind": "integration",
          "integrationId": "f8588690-d4e7-476b-9550-31a607880430",
          "triggerId": "2c1951ac-dd75-467b-9250-e25ab23497d2",
          "requiresConnection": true,
          "connectionId": null,
          "params": []
        },
        "id": "12fa0e15-db20-4292-aa11-520425dde274",
        "position": {
          "x": 20,
          "y": 590
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "🔍 SCHRITT 1: Kontakt im CRM finden\n\nSucht automatisch den Kontakt in HubSpot basierend auf den Termin-Teilnehmern aus dem Kalender.\n\n📋 SETUP:\n• Verbinden Sie Ihren HubSpot Account\n• Die KI sucht automatisch nach E-Mail oder Name der Teilnehmer\n• Abgerufene Daten: Name, Firma, Position, Telefon, Website, Lifecycle Stage\n\n⚙️ WIE ES FUNKTIONIERT:\nDie Search Query ist auf 'auto' gesetzt - die KI analysiert die Termin-Teilnehmer und sucht automatisch den passenden Kontakt in HubSpot.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "findContact",
          "actionId": "f6f066df-a438-4c06-a1ed-5859dafb3843",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "limit": {
                "mode": "manual",
                "value": "1",
                "prompt": null
              },
              "properties": {
                "mode": "manual",
                "value": "{{ [\"email\", \"firstname\", \"lastname\", \"company\", \"jobtitle\", \"phone\", \"website\", \"lifecyclestage\"] }}",
                "prompt": null
              },
              "searchQuery": {
                "mode": "auto",
                "value": null,
                "prompt": null
              }
            }
          }
        },
        "id": "67607b99-6a83-4edd-9092-26cd93036cd5",
        "position": {
          "x": 560,
          "y": 590
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "📊 SCHRITT 2: Letzte Interaktionen abrufen\n\nHolt die letzten 5 Aktivitäten und Interaktionen des Kontakts aus HubSpot (E-Mails, Anrufe, Meetings, Notizen).\n\n📋 SETUP:\n• Verwendet dieselbe HubSpot-Verbindung wie Schritt 1\n• Die Kontakt-ID wird automatisch vom vorherigen Schritt übernommen\n\n⚙️ WIE ES FUNKTIONIERT:\nDie KI identifiziert automatisch die richtige Kontakt-ID aus dem vorherigen 'Find Contact' Schritt und ruft die komplette Engagement-Historie ab.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "getContactEngagement",
          "actionId": "2bffcc97-d20f-43a5-aa5c-8240e6e1eaed",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "id": {
                "mode": "auto",
                "value": null,
                "prompt": null
              }
            }
          }
        },
        "id": "378bc7e3-eb26-4c0c-9ca6-ce076fa18c1c",
        "position": {
          "x": 1120,
          "y": 590
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "✉️ SCHRITT 5: Briefing per E-Mail versenden\n\nVersendet das fertige Briefing automatisch per Gmail an den zuständigen Vertriebsmitarbeiter.\n\n📋 SETUP:\n• Gmail-Verbindung ist bereits konfiguriert\n• Empfänger wird automatisch ermittelt (z.B. Termin-Organisator oder zugewiesener Owner)\n\n📧 E-MAIL-INHALT:\n• Betreff: 'Briefing: [Termin-Titel]' (automatisch generiert)\n• Body: Das vollständige formatierte Briefing vom KI-Agent\n• Format: Professionell strukturiert mit allen 5 Briefing-Abschnitten\n\n💡 TIPP: Das Briefing wird direkt nach Termin-Erstellung versendet - ideal für spontan gebuchte Meetings!",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "sendBriefingEmail",
          "actionId": "7e540add-fe6d-44c2-b224-f7c384573cdf",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "mailBody": {
                "mode": "manual",
                "value": "{{briefingGenerator.output.structured.briefing}}",
                "prompt": null
              },
              "mailSubject": {
                "mode": "prompt",
                "value": null,
                "prompt": "Create an email subject in the format: 'Briefing: [Appointment Title]' using the appointment title from the calendar event"
              },
              "mailRecipient": {
                "mode": "auto",
                "value": null,
                "prompt": null
              }
            }
          }
        },
        "id": "d152f607-f03f-44d7-862a-0e97651bec08",
        "position": {
          "x": 2784,
          "y": 590
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "🤖 SCHRITT 4: KI-Briefing erstellen\n\nEin KI-Agent analysiert ALLE gesammelten Daten und erstellt ein strukturiertes, professionelles Termin-Briefing.\n\n📋 INPUT-DATEN:\n• Termin-Details (Titel, Zeit, Teilnehmer)\n• Kontaktdaten aus HubSpot (Firma, Position, Status)\n• Letzte 5 Interaktionen\n• Aktuelle Firmen-News\n• LinkedIn-Updates der Person\n\n📄 BRIEFING-STRUKTUR:\n1. Termin-Übersicht\n2. Kundenkontext (Firma, Position, Lifecycle)\n3. Letzte Interaktionen (Zusammenfassung)\n4. Aktuelle Entwicklungen (News + LinkedIn)\n5. Gesprächsthemen & Handlungsempfehlungen\n\n💡 Der Agent wartet automatisch, bis BEIDE Web-Searches abgeschlossen sind (Merge-Point).",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "briefingGenerator",
          "assistantId": null,
          "mode": "create",
          "name": "Briefing Generator",
          "prompt": {
            "mode": "manual",
            "value": "Du bist ein Vertriebs-Assistent und erstellst ein kompaktes Termin-Briefing für einen Kundentermin.\n\nVERFÜGBARE DATEN:\n- Termin-Details: {{newCustomerAppointment.output}}\n- Kontaktdaten: {{findContact.output}}\n- Letzte Interaktionen: {{getContactEngagement.output}}\n- Firmen-News: {{companyNewsSearch.output}}\n- LinkedIn/Person Updates: {{personLinkedinSearch.output}}\n\nERSTELLE EIN STRUKTURIERTES BRIEFING MIT:\n\n1. **Termin-Übersicht**\n   - Titel, Datum/Zeit, Teilnehmer\n\n2. **Kundenkontext**\n   - Firmendaten, Position des Kontakts\n   - Lifecycle Stage und Status\n\n3. **Letzte Interaktionen** (max. 5)\n   - Zusammenfassung der letzten Aktivitäten\n\n4. **Aktuelle Entwicklungen**\n   - Relevante News zur Firma\n   - LinkedIn-Updates der Person\n\n5. **Gesprächsthemen & Handlungsempfehlungen**\n   - Relevante Themen basierend auf allen Daten\n   - Offene Punkte aus vergangenen Interaktionen\n   - Empfohlene Gesprächseinstiege\n\nFormatiere das Briefing übersichtlich und professionell.",
            "prompt": null
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "ebdc005f-7332-4ee4-96ae-df53e0e54831",
              "name": "briefing",
              "description": "Das vollständige formatierte Briefing",
              "type": "string",
              "required": true
            },
            {
              "id": "601d9147-ad62-4ab7-b4aa-95bc700bf426",
              "name": "success",
              "description": "Ob das Briefing erfolgreich erstellt wurde",
              "type": "boolean",
              "required": true
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "20dba006-9f64-4a0b-9ff7-495c02895593",
        "position": {
          "x": 2240,
          "y": 590
        }
      }
    ],
    "edges": [
      {
        "id": "c6e156a3-7c15-4759-bfb9-1c4c4f98560a",
        "source": "378bc7e3-eb26-4c0c-9ca6-ce076fa18c1c",
        "target": "33b1489e-4ea5-42c7-81d2-d57d633d48b5",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "3e64f0e2-ca80-481f-8c1c-5df38135415e",
        "source": "89e46138-76cd-4635-ba47-00d0d3d94877",
        "target": "20dba006-9f64-4a0b-9ff7-495c02895593",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "c7f7a25c-9d0f-40d8-bf9d-8281229e0fc7",
        "source": "33b1489e-4ea5-42c7-81d2-d57d633d48b5",
        "target": "20dba006-9f64-4a0b-9ff7-495c02895593",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "3389cac0-5fd9-4c61-a9ec-ae794ff26cad",
        "source": "20dba006-9f64-4a0b-9ff7-495c02895593",
        "target": "d152f607-f03f-44d7-862a-0e97651bec08",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "fc7e967f-40f7-4be7-b403-f86dc46bc683",
        "source": "12fa0e15-db20-4292-aa11-520425dde274",
        "target": "67607b99-6a83-4edd-9092-26cd93036cd5",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "d347337e-973c-458d-bfd4-56a828b36063",
        "source": "67607b99-6a83-4edd-9092-26cd93036cd5",
        "target": "378bc7e3-eb26-4c0c-9ca6-ce076fa18c1c",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "fd656d16-dc96-460e-bd32-e3032191a3a6",
        "source": "378bc7e3-eb26-4c0c-9ca6-ce076fa18c1c",
        "target": "89e46138-76cd-4635-ba47-00d0d3d94877",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      }
    ]
  }
}