{
  "name": "Kleiner Assistent — Vorlage",
  "nodes": [
    {
      "parameters": {
        "content": "## Bevor das läuft — vier Dinge\n\n**1. Zugänge verbinden**\nBei Claude, Slack und Google Sheets jeweils dein eigenes Konto auswählen.\n\n**2. Sheet und Kanal wählen**\nIn beiden Sheet-Bausteinen dein Log-Tabellenblatt aus der Liste wählen,\nim Slack-Baustein deinen Kanal. Das Sheet braucht diese Spalten:\nDatum · Absender · Betreff · Kategorie · Zusammenfassung · Aktion\n\n**3. Platzhalter im System-Prompt ersetzen**\n[DEIN NAME], [DEINE ROLLE], [DEINE FIRMA] — und der Satz dazu, was ihr tut.\nDas ist kein Beiwerk: Ohne diesen Kontext antwortet er generisch.\n\n**4. Chat einmal auslösen, BEVOR du Felder zuordnest**\nn8n zeigt die Felder eines Auslösers erst nach dem ersten Lauf. Sonst\nordnest du gegen leere Auswahllisten zu.\n\n### Der wichtigste Satz\nDie Beschreibung an einem Werkzeug ist Teil des Prompts — das Modell sieht\nnur Name und Beschreibung. Steht dort nicht, WANN er es nicht nehmen soll,\ngreift er es zur falschen Zeit.\n\nMehr dazu: agent-erstellen.distart.de/bauplan",
        "height": 520,
        "width": 460,
        "color": 4
      },
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "Anleitung",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -560,
        -80
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "3f1a9c22-1d4e-4b7a-9f01-a1b2c3d40001",
      "name": "Chat-Eingabe",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.chatInput }}",
        "options": {
          "systemMessage": "Du bist der Assistent von [DEIN NAME] bei [DEINE FIRMA].\n\n## Dein Job\nDu nimmst Anfragen entgegen, die per Chat hereinkommen, ordnest sie ein und sorgst dafür, dass nichts verlorengeht.\n\n## Was du wissen musst\n- Heute ist {{ $now.format('dd.MM.yyyy') }}.\n- [DEIN NAME] ist [DEINE ROLLE] bei [DEINE FIRMA].\n- [DEINE FIRMA] macht [WAS IHR TUT — ein Satz, damit er den Kontext kennt].\n- Ton: klar, freundlich, auf Augenhöhe. Keine Floskeln, kein Behördendeutsch.\n\n## Wie du arbeitest\n1. Lies die Anfrage und entscheide, was sie wirklich braucht.\n2. Kommt es auf die Vorgeschichte an, schau zuerst im Log nach — sonst nicht.\n3. Nutze nur die Werkzeuge, die nötig sind — nicht jedes bei jeder Anfrage.\n4. Trage JEDE Anfrage am Ende ins Aktivitäts-Log ein. Ohne Ausnahme.\n\n## Deine Grenzen\n- Du entscheidest nichts Verbindliches: keine Zusagen, keine Termine, keine Preise.\n- Fehlen dir Informationen oder ist die Anfrage unklar, meldest du dich per Slack bei [DEIN NAME], statt zu raten.\n- Antworte am Schluss in 2-3 Sätzen, was du getan hast und warum.",
          "maxIterations": 20
        }
      },
      "id": "3f1a9c22-1d4e-4b7a-9f01-a1b2c3d40002",
      "name": "Assistent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        344,
        0
      ]
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "claude-sonnet-4-6"
        },
        "options": {
          "maxTokensToSample": 4096,
          "temperature": 0.2
        }
      },
      "id": "3f1a9c22-1d4e-4b7a-9f01-a1b2c3d40003",
      "name": "Claude",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        224,
        224
      ]
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Postet eine kurze Nachricht in deinem Slack-Channel. NUTZEN, wenn die Anfrage unklar ist und du entscheiden musst, oder wenn etwas passiert ist, von dem du sofort wissen solltest oder wenn er dich darum bittet. NICHT nutzen, wenn du die Anfrage selbst sauber erledigen konntest — dann genügt der Log-Eintrag. Halte dich an 1-3 Sätze.",
        "authentication": "oAuth2",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "text": "={{ $fromAI('nachricht', 'Kurze Nachricht an dich: worum es geht und warum du es ihm vorlegst statt selbst zu entscheiden. 1-3 Sätze.', 'string') }}",
        "otherOptions": {}
      },
      "id": "3f1a9c22-1d4e-4b7a-9f01-a1b2c3d40004",
      "name": "Slack-Meldung",
      "type": "n8n-nodes-base.slackTool",
      "typeVersion": 2.2,
      "position": [
        352,
        224
      ]
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Trägt die Anfrage ins Aktivitäts-Log ein (Audit-Trail). IMMER als LETZTEN Schritt aufrufen — bei jeder Anfrage, unabhängig davon, was du sonst getan hast.",
        "operation": "append",
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Datum": "={{ $now.format('yyyy-MM-dd HH:mm') }}",
            "Absender": "=Chat",
            "Betreff": "={{ $('Chat-Eingabe').item.json.chatInput }}",
            "Kategorie": "={{ $fromAI('kategorie', 'Genau ein Wort, das die Anfrage einordnet, z.B. Termin, Projekt, Rückfrage, Info', 'string') }}",
            "Zusammenfassung": "={{ $fromAI('zusammenfassung', 'Deine 1-2-Satz-Zusammenfassung der Anfrage', 'string') }}",
            "Aktion": "={{ $fromAI('aktion', 'Was du getan hast, kurz. Zum Beispiel: nur protokolliert / per Slack eskaliert', 'string') }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Datum",
              "displayName": "Datum",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Absender",
              "displayName": "Absender",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Betreff",
              "displayName": "Betreff",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Kategorie",
              "displayName": "Kategorie",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Zusammenfassung",
              "displayName": "Zusammenfassung",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Aktion",
              "displayName": "Aktion",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "id": "3f1a9c22-1d4e-4b7a-9f01-a1b2c3d40005",
      "name": "Aktivitäts-Log",
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.7,
      "position": [
        480,
        224
      ]
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Liest die bisherigen Einträge aus dem Aktivitäts-Log. NUTZEN, wenn es auf die Vorgeschichte ankommt: ob es zu einer Person oder einem Thema schon einen Eintrag gab, oder wenn jemand nach dem bisherigen Stand fragt. NICHT nutzen, wenn die Anfrage offensichtlich neu ist — das kostet nur Zeit. Immer VOR dem Schreiben nachschlagen, nie danach.",
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.7,
      "position": [
        608,
        224
      ],
      "id": "166ba7cd-acf0-4b93-a6e2-d38c79a1b054",
      "name": "Log lesen"
    }
  ],
  "connections": {
    "Chat-Eingabe": {
      "main": [
        [
          {
            "node": "Assistent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude": {
      "ai_languageModel": [
        [
          {
            "node": "Assistent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Slack-Meldung": {
      "ai_tool": [
        [
          {
            "node": "Assistent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Aktivitäts-Log": {
      "ai_tool": [
        [
          {
            "node": "Assistent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Log lesen": {
      "ai_tool": [
        [
          {
            "node": "Assistent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "timezone": "Europe/Berlin",
    "saveManualExecutions": true
  }
}
