{
  "id": "PvcEnJDre7QTh3Xy",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automate NGO Aid Request Management with Telegram, GPT-4, and Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "e93ae817-3f4b-49dc-8fe8-821170633c69",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        80,
        -80
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "56283c02-e027-47c0-94ab-02745a082f80",
      "name": "Route Message Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        240,
        -80
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "dc5471a7-7a28-43e7-8666-1842cba51c95",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.text }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Audio",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "4a94e9ac-99ac-4187-b7d3-6de1a71506dc",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.voice.file_id }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "10c260a8-4987-42ec-bca2-b3192147b702",
      "name": "Fetch Audio File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        380,
        60
      ],
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file"
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "950d8c4e-1f99-40cc-8434-f54693806d0f",
      "name": "Transcribe Voice Message",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        540,
        60
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "38ebb5b9-d13f-4587-8717-42f324ef74e2",
      "name": "Extract Text Message",
      "type": "n8n-nodes-base.set",
      "position": [
        460,
        -180
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d7c9be19-c1c4-4287-ac0e-7a2be9732a51",
              "name": "text",
              "type": "string",
              "value": "={{ $json.message.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4,
      "alwaysOutputData": false
    },
    {
      "id": "59a1eb8b-38f3-478f-8a71-3990cf2df204",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        840,
        -100
      ],
      "parameters": {
        "text": "= here is request from beneficiary: {{ $json.text }}",
        "options": {
          "systemMessage": "You are the NGO TPM team leader. The user has requested help. Categorize the request, and please suggest an action for the TPM team to take\n\u0627\u0643\u062a\u0628 \u062f\u0627\u0626\u0645\u0627\u064b \u0628\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629\nThe output should be like\n{\n  \"category\": \"\u0645\u0634\u0643\u0644\u0629 \u0641\u064a \u062a\u0648\u0632\u064a\u0639 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0627\u062a\",\n  \"action\": \"\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0641\u0631\u0642 \u0627\u0644\u062a\u0648\u0632\u064a\u0639 \u0644\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0633\u0628\u0628 \u0639\u062f\u0645 \u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0627\u062a \u0625\u0644\u0649 \u0627\u0644\u0642\u0631\u064a\u0629 \u0648\u0627\u0644\u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u0644\u0627\u0632\u0645\u0629 \u0644\u062d\u0644 \u0627\u0644\u0645\u0634\u0643\u0644\u0629.\"\n}\n\n\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "3c9aaed8-6956-4bd4-89a0-610e7e4e2982",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        840,
        120
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c66af39a-150f-4a37-92dc-601e5b3879a5",
      "name": "Send Confirmation Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1640,
        -80
      ],
      "parameters": {
        "text": "=\u062a\u0645 \u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0637\u0644\u0628\u0643 \u0627\u0646\u0647 \u0647\u0646\u0627\u0644\u0643 {{ $('AI Agent').item.json.output.category }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "625e6f44-7bbe-416b-9912-9b8fc3545f89",
      "name": "Save Audio Request to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1440,
        -200
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $('Telegram Trigger').item.json.message.message_id }}",
            "action": "={{ $json.output.action }}",
            "category": "={{ $json.output.category }}\n",
            "last name": "={{ $('Telegram Trigger').item.json.message.chat.last_name }}",
            "First name": "={{ $('Telegram Trigger').item.json.message.chat.first_name }}",
            "Transcription": "={{ $('Transcribe Voice Message').item.json.text }}",
            "Telegram User Name": "={{ $('Telegram Trigger').item.json.message.chat.username }}"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Text",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Transcription",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Transcription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "First name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "last name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Telegram User Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Telegram User Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JKCLCjfm3xIFg5YH0EH9qK4W69jjeX673dFxaHfVRzo/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1JKCLCjfm3xIFg5YH0EH9qK4W69jjeX673dFxaHfVRzo/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "7d7b8310-c0cf-433c-932f-97219f37bec3",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1020,
        120
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"category\": \"\u0645\u0634\u0643\u0644\u0629 \u0641\u064a \u062a\u0648\u0632\u064a\u0639 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0627\u062a\",\n  \"action\": \"\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0641\u0631\u0642 \u0627\u0644\u062a\u0648\u0632\u064a\u0639 \u0644\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0633\u0628\u0628 \u0639\u062f\u0645 \u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0627\u062a \u0625\u0644\u0649 \u0627\u0644\u0642\u0631\u064a\u0629 \u0648\u0627\u0644\u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u0644\u0627\u0632\u0645\u0629 \u0644\u062d\u0644 \u0627\u0644\u0645\u0634\u0643\u0644\u0629.\"\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "ab338a5f-51ac-4ebc-a668-59ddec459d9b",
      "name": "Route to Appropriate Sheet",
      "type": "n8n-nodes-base.switch",
      "position": [
        1200,
        -100
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Audio",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5b7518a8-578a-4fd6-8240-0b72f073ca76",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('Telegram Trigger').item.json.message.voice.file_id }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "def32c5a-8ffc-46a1-9e2f-68d161eb5436",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('Telegram Trigger').item.json.message.text }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "06ef0f7b-63a3-4427-a2a5-1d059a54ebc4",
      "name": "Save Text Request to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1440,
        -20
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $('Telegram Trigger').item.json.message.message_id }}",
            "Text": "={{ $('Telegram Trigger').item.json.message.text }}",
            "action": "={{ $json.output.action }}",
            "category": "={{ $json.output.category }}\n",
            "last name": "={{ $('Telegram Trigger').item.json.message.chat.last_name }}",
            "First name": "={{ $('Telegram Trigger').item.json.message.chat.first_name }}",
            "Telegram User Name": "={{ $('Telegram Trigger').item.json.message.chat.username }}"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Text",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Transcription",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Transcription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "First name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "last name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Telegram User Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Telegram User Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JKCLCjfm3xIFg5YH0EH9qK4W69jjeX673dFxaHfVRzo/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1JKCLCjfm3xIFg5YH0EH9qK4W69jjeX673dFxaHfVRzo/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b3d1915c-e70f-491a-b9d9-736820d48adf",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Route to Appropriate Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Audio File": {
      "main": [
        [
          {
            "node": "Transcribe Voice Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Route Message Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Route Message Type": {
      "main": [
        [
          {
            "node": "Extract Text Message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Fetch Audio File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Text Message": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe Voice Message": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route to Appropriate Sheet": {
      "main": [
        [
          {
            "node": "Save Audio Request to Sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Save Text Request to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Text Request to Sheet": {
      "main": [
        [
          {
            "node": "Send Confirmation Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Audio Request to Sheet": {
      "main": [
        [
          {
            "node": "Send Confirmation Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}