{
  "name": "flowsulting · Anfrage → fertiges Angebot",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "angebot/anfrage",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "angebote-t1",
      "name": "Anfrage kommt rein",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ],
      "webhookId": "angebote-t1"
    },
    {
      "parameters": {
        "text": "={{ $json.text || $json.body }}",
        "attributes": {
          "attributes": [
            {
              "name": "positionen",
              "description": "Liste der benötigten Leistungspositionen",
              "required": true
            },
            {
              "name": "objektart",
              "description": "Art des Objekts",
              "required": true
            },
            {
              "name": "dringlichkeit",
              "description": "Wie eilig",
              "required": true
            }
          ]
        }
      },
      "id": "angebote-a1",
      "name": "Leistungen ableiten",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "typeVersion": 1,
      "position": [
        280,
        0
      ]
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "PREISLISTE_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list"
        },
        "options": {}
      },
      "id": "angebote-a2",
      "name": "Ihre Preisliste lesen",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        560,
        0
      ]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "Schreibe ein Angebot aus diesen Positionen und Preisen. Struktur: Anschreiben, Positionstabelle, Summe, Gültigkeit, nächster Schritt. Ton: {{ $json.hausstil }}.\n\n{{ JSON.stringify($json.positionen) }}",
        "messages": {}
      },
      "id": "angebote-a3",
      "name": "Angebot schreiben",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.5,
      "position": [
        840,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "version": 2
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c1",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.summe }}",
              "rightValue": 3000
            }
          ]
        },
        "options": {}
      },
      "id": "angebote-b1",
      "name": "Über Freigabegrenze?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1120,
        0
      ]
    },
    {
      "parameters": {},
      "id": "angebote-h1",
      "name": "Freigabe Inhaber",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1400,
        -200
      ]
    },
    {
      "parameters": {
        "fromEmail": "info@flowsulting.de",
        "toEmail": "={{ $json.kunde_email }}",
        "subject": "Ihr Angebot von {{ $json.firma }}",
        "emailFormat": "html",
        "html": "={{ $json.html }}",
        "options": {}
      },
      "id": "angebote-e1",
      "name": "Senden + Nachfass legen",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        1680,
        0
      ],
      "retryOnFail": true,
      "maxTries": 3,
      "waitBetweenTries": 2000
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini",
          "mode": "list"
        },
        "options": {
          "temperature": 0.2
        }
      },
      "id": "angebote-llm",
      "name": "KI-Modell",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.1,
      "position": [
        280,
        260
      ]
    }
  ],
  "connections": {
    "Anfrage kommt rein": {
      "main": [
        [
          {
            "node": "Leistungen ableiten",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Leistungen ableiten": {
      "main": [
        [
          {
            "node": "Ihre Preisliste lesen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ihre Preisliste lesen": {
      "main": [
        [
          {
            "node": "Angebot schreiben",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Angebot schreiben": {
      "main": [
        [
          {
            "node": "Über Freigabegrenze?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Über Freigabegrenze?": {
      "main": [
        [
          {
            "node": "Freigabe Inhaber",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Senden + Nachfass legen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Freigabe Inhaber": {
      "main": [
        [
          {
            "node": "Senden + Nachfass legen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "KI-Modell": {
      "ai_languageModel": [
        [
          {
            "node": "Leistungen ableiten",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Angebot schreiben",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": [
    {
      "name": "flowsulting"
    },
    {
      "name": "Vertrieb & Angebote"
    }
  ]
}
