AutomationFlowsAI & RAG › AI-Powered Grant Application Router

AI-Powered Grant Application Router

Original n8n title: Grant Application Routing

Grant Application Routing. Uses stickyNote, textSplitterCharacterTextSplitter, embeddingsOpenAi, vectorStoreSupabase. Webhook trigger; 12 nodes.

Webhook trigger★★★☆☆ complexityAI-powered12 nodesText Splitter Character Text SplitterOpenAI EmbeddingsSupabase Vector StoreTool Vector StoreMemory Buffer WindowOpenAI ChatAgentGoogle Sheets
AI & RAG Trigger: Webhook Nodes: 12 Complexity: ★★★☆☆ AI nodes: yes Added:

This workflow follows the Agent → OpenAI Embeddings recipe pattern — see all workflows that pair these two integrations.

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 →

Download .json
{
  "name": "Grant Application Routing",
  "nodes": [
    {
      "parameters": {
        "content": "Automated workflow: Grant Application Routing",
        "height": 530,
        "width": 1100,
        "color": 5
      },
      "id": "617b027d-f07d-4f02-991e-e0849d539894",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -480,
        -240
      ]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "grant-application-routing"
      },
      "id": "dde8f45d-7cd6-4fd7-9f9d-251cd9c77c83",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        -300,
        0
      ]
    },
    {
      "parameters": {
        "chunkSize": 400,
        "chunkOverlap": 40
      },
      "id": "b245846a-bd59-42e8-8e2b-dc0a52250848",
      "name": "Text Splitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
      "typeVersion": 1,
      "position": [
        -130,
        0
      ]
    },
    {
      "parameters": {
        "model": "text-embedding-3-small",
        "options": {}
      },
      "id": "85d8d786-d82d-44aa-baf7-44b2012aedcb",
      "name": "Embeddings",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1,
      "position": [
        70,
        0
      ],
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "mode": "insert",
        "options": {},
        "indexName": "grant_application_routing"
      },
      "id": "d8b6b087-21de-4f50-9bfc-e838d9065861",
      "name": "Supabase Insert",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1,
      "position": [
        270,
        0
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "indexName": "grant_application_routing"
      },
      "id": "c5d0fbe8-a21a-4565-a08c-e138c83e498d",
      "name": "Supabase Query",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1,
      "position": [
        270,
        -180
      ],
      "credentials": {
        "supabaseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "name": "Supabase",
        "description": "Vector context"
      },
      "id": "8e30a670-ca06-4755-9de3-5a7ce685e436",
      "name": "Vector Tool",
      "type": "@n8n/n8n-nodes-langchain.toolVectorStore",
      "typeVersion": 1,
      "position": [
        450,
        -180
      ]
    },
    {
      "parameters": {},
      "id": "429f791a-5173-4481-8962-4ece4084d641",
      "name": "Window Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        450,
        -40
      ]
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "3eafa51a-284f-40cd-af6b-267a1901b9d6",
      "name": "Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1,
      "position": [
        450,
        -340
      ],
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "Process the following data for task 'Grant Application Routing':\n\n{{ $json }}",
        "options": {
          "systemMessage": "You are an assistant for Grant Application Routing"
        }
      },
      "id": "492a65b2-b17e-41f4-9cb3-a33434ec9b22",
      "name": "RAG Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1,
      "position": [
        720,
        -40
      ]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "SHEET_ID",
          "mode": "list",
          "cachedResultName": "Grant Application Routing"
        },
        "sheetName": {
          "__rl": true,
          "value": "Log",
          "mode": "list",
          "cachedResultName": "Log"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Status": "={{$json[\"RAG Agent\"].text}}"
          },
          "schema": []
        }
      },
      "id": "92aa830c-345d-4c2f-9995-def7960bcb61",
      "name": "Append Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [
        930,
        -40
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "channel": "#alerts",
        "text": "Grant Application Routing error: {$json.error.message}"
      },
      "id": "bbb4a1df-650b-459b-8306-35a8d6daeb50",
      "name": "Slack Alert",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 1,
      "position": [
        930,
        120
      ],
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Text Splitter",
            "type": "main",
            "index": 0
          },
          {
            "node": "Window Memory",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Text Splitter": {
      "main": [
        [
          {
            "node": "Embeddings",
            "type": "main",
            "index": 0
          }
        ]
      ],
      "ai_textSplitter": [
        [
          {
            "node": "Supabase Insert",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings": {
      "ai_embedding": [
        [
          {
            "node": "Supabase Insert",
            "type": "ai_embedding",
            "index": 0
          },
          {
            "node": "Supabase Query",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Insert": {
      "ai_document": [
        []
      ]
    },
    "Supabase Query": {
      "ai_vectorStore": [
        [
          {
            "node": "Vector Tool",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "Vector Tool": {
      "ai_tool": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Window Memory": {
      "ai_memory": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "RAG Agent": {
      "main": [
        [
          {
            "node": "Append Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ],
      "onError": [
        [
          {
            "node": "Slack Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "triggerCount": 1
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Grant Application Routing. Uses stickyNote, textSplitterCharacterTextSplitter, embeddingsOpenAi, vectorStoreSupabase. Webhook trigger; 12 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

RAG_AI_Agent_PDFs_Excel. Uses lmChatOpenAi, documentDefaultDataLoader, embeddingsOpenAi, toolVectorStore. Webhook trigger; 28 nodes.

OpenAI Chat, Document Default Data Loader, OpenAI Embeddings +7
AI & RAG

RAG AI Agent. Uses lmChatOpenAi, memoryBufferWindow, googleDrive, documentDefaultDataLoader. Webhook trigger; 20 nodes.

OpenAI Chat, Memory Buffer Window, Google Drive +8
AI & RAG

Sales Automation, Artificial Intelligence, CRM Operations, Coaching & Training, AI Agents (RAG)

HTTP Request, Agent, OpenAI Chat +8
AI & RAG

Calendar Event Auto-tag. Uses stickyNote, textSplitterCharacterTextSplitter, embeddingsOpenAi, vectorStoreWeaviate. Webhook trigger; 12 nodes.

Text Splitter Character Text Splitter, OpenAI Embeddings, Weaviate Vector Store +6
AI & RAG

Idea to IG Carousel. Uses stickyNote, textSplitterCharacterTextSplitter, embeddingsOpenAi, vectorStoreWeaviate. Webhook trigger; 12 nodes.

Text Splitter Character Text Splitter, OpenAI Embeddings, Weaviate Vector Store +6