The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Validator",
"nodes": [
{
"parameters": {
"promptType": "define",
"text": "= \"id\": \"{{ $json.body.id }}\",\n \"name\": \"{{ $json.body.name }}\",\n \"status\": \"{{ $json.body.review_status }}\",\n \"amount\": \"{{ $json.body.amount }}\",\n \"review_comment\": \"{{ $json.body.review_comment}}\"\n",
"hasOutputParser": true,
"options": {
"systemMessage": "=Du bist Sachbearbeiter einer Kranken-/Erstattungsstelle. \n\nAUSGABE: Nur JSON, keine Erkl\u00e4rungen, keine Fragen:\n{\"subject\":\"Betreff\",\"response\":\"HTML-Body\"}\n\nPFLICHT-REGEL: Wenn review_comment vorhanden \u2192 IMMER im Text verwenden! {{ $json.body.review_comment }}\n\nANREDE: \"Guten Tag [Name],\" (mit Titel falls vorhanden)\n\nL\u00c4NGE: E-Mails sollen ausf\u00fchrlich sein (mindestens 4-6 Abs\u00e4tze). F\u00fcge Kontext, Hintergrundinformationen und n\u00e4chste Schritte hinzu.\n\nSTATUS-REGELN:\n\nAPPROVED:\n- Einleitung: Freundlicher Einstieg + Bezug zum Antrag\n- Pr\u00fcfung best\u00e4tigen: \"Wir haben Ihren Antrag sorgf\u00e4ltig gepr\u00fcft. [review_comment].\"\n- Genehmigung: \"Wir freuen uns, Ihnen mitteilen zu k\u00f6nnen, dass wir Ihren Antrag in H\u00f6he von [Betrag] EUR genehmigen.\"\n- Auszahlung: \"Die Erstattung wird in den n\u00e4chsten [X] Werktagen auf Ihr Konto \u00fcberwiesen.\"\n- Abschluss: Weitere Hilfe anbieten + freundliche Gru\u00dfformel\n\nDECLINED:\n- Einleitung: Bezug zum Antrag nehmen\n- Pr\u00fcfung: \"Wir haben Ihren Antrag eingehend gepr\u00fcft.\"\n- Ablehnung mit Begr\u00fcndung: \"Leider m\u00fcssen wir Ihren Antrag ablehnen. [review_comment].\"\n- Hinweis: Welche Dokumente/Schritte n\u00f6tig w\u00e4ren (falls relevant)\n- Abschluss: Kontaktm\u00f6glichkeit anbieten + freundliche Gru\u00dfformel\n\nNEEDS_TALK:\n- Einleitung: Bezug zum Antrag + Dank f\u00fcr Einreichung\n- Grund nennen: \"Bei der Pr\u00fcfung Ihrer Unterlagen ist uns Folgendes aufgefallen: [review_comment].\"\n- Austausch erbitten: \"Um Ihren Antrag vollst\u00e4ndig bearbeiten zu k\u00f6nnen, ben\u00f6tigen wir einen kurzen Austausch mit Ihnen.\"\n- meeting_link einbinden: \"Bitte vereinbaren Sie einen Termin \u00fcber folgenden Link: [meeting_link]\" ODER \"Bitte nehmen Sie telefonisch oder per E-Mail Kontakt mit uns auf.\"\n- Was besprochen werden soll (falls aus review_comment ableitbar)\n- Abschluss: Freundliche Gru\u00dfformel\n\nBEISPIEL (NEEDS_TALK):\nInput: review_comment=\"Falsche daten angegeben\"\nOutput: \"<p>Guten Tag Thomas Weber,</p><p>vielen Dank f\u00fcr die Einreichung Ihres Erstattungsantrags. Wir haben Ihre Unterlagen gepr\u00fcft und m\u00f6chten mit Ihnen einige Details besprechen.</p><p>Bei der Pr\u00fcfung sind uns falsche Daten aufgefallen, die wir gemeinsam mit Ihnen kl\u00e4ren m\u00f6chten. Dies betrifft insbesondere [spezifische Details, falls ableitbar].</p><p>Um Ihren Antrag z\u00fcgig bearbeiten zu k\u00f6nnen, bitten wir Sie, zeitnah Kontakt mit uns aufzunehmen. So k\u00f6nnen wir die offenen Punkte gemeinsam kl\u00e4ren und Ihren Antrag abschlie\u00dfend bearbeiten.</p><p>Bei R\u00fcckfragen stehen wir Ihnen gerne zur Verf\u00fcgung.</p><p>Mit freundlichen Gr\u00fc\u00dfen<br>Ihr Erstattungsteam</p>\"\n\nTON: H\u00f6flich, ausf\u00fchrlich, professionell, empathisch. Strukturierte Abs\u00e4tze mit klarem Aufbau."
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [
1072,
-432
],
"id": "198f5065-2894-43df-9f28-017766727212",
"name": "AI Agent"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
"typeVersion": 1,
"position": [
1056,
-256
],
"id": "b8eca498-fa49-4ecd-af0b-681483aaebab",
"name": "DeepSeek Chat Model",
"credentials": {
"deepSeekApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "={{ $('Webhook').item.json.body.email }}",
"subject": "={{ $json.output.subject }}",
"message": "={{ $json.output.response }}",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
1424,
-432
],
"id": "448363a6-66b0-42eb-a22f-6f3565a1c311",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n \"subject\": \"string\",\n \"response\": \"string\"\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.3,
"position": [
1216,
-272
],
"id": "92629193-6c7a-4d5a-83a7-44175d91e4eb",
"name": "Structured Output Parser"
},
{
"parameters": {
"httpMethod": "POST",
"path": "283ddc36-c459-4662-b82f-1ac372dbcd1a",
"options": {
"allowedOrigins": "*"
}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
608,
-144
],
"id": "c09d45fa-ebd2-4971-bd4e-9d6570e8ad85",
"name": "Webhook"
}
],
"connections": {
"DeepSeek Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "26441f43-d4f5-4645-8c11-85880a3b5c0d",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "1YKrVnRrdQBA8Fk6",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
deepSeekApigmailOAuth2
About this workflow
Validator. Uses agent, lmChatDeepSeek, gmail, outputParserStructured. Webhook trigger; 5 nodes.
Source: https://github.com/jakobball/insurance-receipt-automation/blob/78946cdfaf2e84104e22928833d58e0679e8cb3b/workflows/Validator.json — original creator credit. Request a take-down →