
AI-Powered Government Grant Tracker (RSS → AI → Google Sheets → Email)
Description
Categories
🤖 AI & Machine Learning
Nodes Used
n8n-nodes-base.coden8n-nodes-base.gmailn8n-nodes-base.aggregaten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
PriceFree
Views0
Last Updated11/28/2025
workflow.json
{
"id": "Xfowxya7kKDiUr5y",
"meta": {
"instanceId": "15d6057a37b8367f33882dd60593ee5f6cc0c59310ff1dc66b626d726083b48d",
"templateCredsSetupCompleted": true
},
"name": "AI-Powered Government Grant Tracker (RSS → AI → Google Sheets → Email)",
"tags": [],
"nodes": [
{
"id": "9be1ad43-b4b0-4223-a9a2-631a134484cd",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-864,
272
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "ffd925ae-7676-4c30-be79-2878a4aa62d6",
"name": "Note: Schedule",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
64
],
"parameters": {
"content": "$23F0 Schedule\n$2022 Entry point of the workflow.\n$2022 Set how often this flow runs (hourly, daily, weekly, etc.)."
},
"typeVersion": 1
},
{
"id": "90dce3e8-d660-4411-902f-13b176333222",
"name": "RSS Feed Reader",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
-624,
272
],
"parameters": {
"url": "https://www.mhlw.go.jp/stf/news.rdf",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "cfd7041d-fbde-42f6-89b0-b39460c6776c",
"name": "Note: RSS",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
64
],
"parameters": {
"content": "$D83D$DCF0 RSS Feed\n$2022 Fetch grant-related updates from MHLW RSS.\n$2022 You may add more RSS feeds if needed."
},
"typeVersion": 1
},
{
"id": "c85d5656-0343-4e6a-8104-013424368c31",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-368,
272
],
"parameters": {
"options": {},
"batchSize": 10
},
"typeVersion": 3
},
{
"id": "0fedea6b-8217-4189-8cb2-25b15c29a1c9",
"name": "Note: Loop",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
64
],
"parameters": {
"content": "$D83D$DD01 Batching\n$2022 Process feed items in batches.\n$2022 Helps with stability and API rate limits."
},
"typeVersion": 1
},
{
"id": "6f1a0649-c2bf-44f3-8243-585fee01414b",
"name": "Text Classifier",
"type": "@n8n/n8n-nodes-langchain.textClassifier",
"position": [
-32,
272
],
"parameters": {
"options": {
"fallback": "Other"
},
"inputText": "={{ $json.title + ' ' + ($json.contentSnippet || '') }}",
"categories": {
"categories": [
{
"category": "Grant/Subsidy",
"description": "Grants, subsidies, public calls"
},
{
"category": "Labor-related",
"description": "Labor safety, regulations, press, stats"
},
{
"category": "Other",
"description": "Does not fit above categories"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "0dd41ed9-0f12-429a-906f-a78384891402",
"name": "Note: Classifier",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
528
],
"parameters": {
"content": "$D83C$DFF7$FE0F AI Classification\n$2022 Categorize each item by title/summary.\n$2022 Used for filtering or routing later."
},
"typeVersion": 1
},
{
"id": "0f563981-9c30-4f89-945c-6a446e364103",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
400,
256
],
"parameters": {
"text": "={{ $json }}",
"options": {
"systemMessage": "You are an expert at summarizing and structuring information about public grants.\n\nFrom the given RSS item fields, extract and return a JSON object with the keys below:\n1. title $2013 grant title\n2. summary $2013 brief summary (~100 chars)\n3. deadline $2013 application deadline (or 'Unknown')\n4. amount $2013 grant amount (or 'Unknown')\n5. target $2013 target audience / eligible organizations\n6. url $2013 original URL\n7. published_date $2013 published date\n\nReturn ONLY valid JSON."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3
},
{
"id": "2b53adec-a2da-4f65-96f2-0585a4f81a2a",
"name": "Note: Agent",
"type": "n8n-nodes-base.stickyNote",
"position": [
688,
256
],
"parameters": {
"content": "$D83E$DD16 AI Extraction\n$2022 Convert each feed item into a consistent JSON structure.\n$2022 Extract deadline/amount/target/URL/published date."
},
"typeVersion": 1
},
{
"id": "ef62fda4-b56d-4869-a3de-5a5ad9843390",
"name": "OpenRouter Chat Model (for Agent)",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
256,
480
],
"parameters": {
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "WtdunUssMGBTNQ1g",
"name": "OpenRouter account 8"
}
},
"typeVersion": 1
},
{
"id": "f6ce135e-2002-4d32-8620-6304f3ce73be",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
592,
464
],
"parameters": {
"jsonSchemaExample": "{\n \"title\": \"SME Productivity Enhancement Subsidy (Round 3)\",\n \"summary\": \"Supports SMEs' investment in digitalization and efficiency improvements.\",\n \"deadline\": \"2025-11-29\",\n \"amount\": \"Up to 10M JPY ($2264 2/3)\",\n \"target\": \"SMEs / small businesses\",\n \"url\": \"https://example.go.jp/subsidy/2025/productivity3\",\n \"published_date\": \"2025-11-01\"\n}\n"
},
"typeVersion": 1.3
},
{
"id": "3621d5ed-6ed4-4287-99b1-d44e26036184",
"name": "Note: Parser",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
592
],
"parameters": {
"content": "$D83E$DDE9 Output Parser\n$2022 Provides an example schema to keep keys consistent.\n$2022 Helps prevent malformed JSON."
},
"typeVersion": 1
},
{
"id": "966724ab-6925-42c3-94b4-b13d6af7fb3f",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-32,
64
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "タイトル",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "タイトル",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "項目",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "項目",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "項目2",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "項目2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "項目3",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "項目3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "項目4",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "項目4",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Title"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s-xgCvMeTWaDGCDtE2n3NM3pztOFF9mvI_9X0scLDkE/edit#gid=0",
"cachedResultName": "Grants"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1s-xgCvMeTWaDGCDtE2n3NM3pztOFF9mvI_9X0scLDkE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s-xgCvMeTWaDGCDtE2n3NM3pztOFF9mvI_9X0scLDkE/edit#gid=0",
"cachedResultName": "Grant DB (replace Spreadsheet ID if needed)"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "DD9kr62pjq8JtBXr",
"name": "Google Sheets account 9"
}
},
"typeVersion": 4.7
},
{
"id": "164fd4a8-9910-4a79-8a35-6d3a1c0f37a4",
"name": "Note: Sheets",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-160
],
"parameters": {
"content": "$D83D$DCCA Google Sheets Upsert\n$2022 Append or update rows keyed by Title.\n$2022 Adjust column headers to your sheet."
},
"typeVersion": 1
},
{
"id": "b8db7ba6-0e8d-4171-a279-b474f3ba8ae0",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
224,
64
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "6db518c4-f00c-4b58-b3f5-75c12e04b1f3",
"name": "Note: Aggregate",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-160
],
"parameters": {
"content": "$D83D$DCE6 Aggregate\n$2022 Combine newly processed items for reporting.\n$2022 Pass a single payload downstream."
},
"typeVersion": 1
},
{
"id": "c952b25c-6120-4023-8f1d-93af54f05f25",
"name": "Code in JavaScript",
"type": "n8n-nodes-base.code",
"position": [
496,
64
],
"parameters": {
"jsCode": "const items = $input.item.json.data;\nlet html = `\n<html>\n<head>\n<style>\n body { font-family: sans-serif; }\n table { border-collapse: collapse; width: 100%; }\n th, td { border: 1px solid #dddddd; text-align: left; padding: 8px; }\n th { background-color: #f2f2f2; }\n</style>\n</head>\n<body>\n <h2>New Grants Found</h2>\n <table>\n <tr>\n <th>Title</th><th>Summary</th><th>URL</th><th>Deadline</th><th>Amount</th><th>Target</th><th>Published</th>\n </tr>\n`;\nfor (const item of items) {\n html += `\n <tr>\n <td>${item['Title'] ?? ''}</td>\n <td>${item['Summary'] ?? ''}</td>\n <td><a href=\"${item['URL'] ?? '#'}\">${item['URL'] ?? ''}</a></td>\n <td>${item['Deadline'] ?? ''}</td>\n <td>${item['Amount'] ?? ''}</td>\n <td>${item['Target'] ?? ''}</td>\n <td>${item['Published'] ?? ''}</td>\n </tr>\n `;\n}\nhtml += `\n </table>\n</body>\n</html>\n`;\nreturn { html_body: html };\n"
},
"typeVersion": 2
},
{
"id": "0e919d3f-c1b1-4bac-bffb-6fee0e940d68",
"name": "Note: HTML",
"type": "n8n-nodes-base.stickyNote",
"position": [
416,
-160
],
"parameters": {
"content": "$D83E$DDF1 HTML Builder\n$2022 Generate an HTML table for the email body.\n$2022 Customize columns and styles as needed."
},
"typeVersion": 1
},
{
"id": "a54b9677-d86c-4cdb-8ae8-594d78fa416d",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
800,
64
],
"webhookId": "6a18672d-289d-4b70-8750-92cf6c3550db",
"parameters": {
"sendTo": "[email protected]",
"message": "={{ $json.html_body }}",
"options": {},
"subject": "New Grants Detected"
},
"credentials": {
"gmailOAuth2": {
"id": "tj1MavzyLpLBCc17",
"name": "Gmail account 22"
}
},
"typeVersion": 2.1
},
{
"id": "f493550a-3865-4862-9fe1-4e300c37711c",
"name": "Note: Gmail",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-160
],
"parameters": {
"content": "$2709$FE0F Gmail\n$2022 Send the HTML summary to your recipients.\n$2022 Replace 'sendTo' and subject per environment."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "779997b6-160c-4bf4-9e2e-8c2cd6531632",
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
],
[
{
"node": "Text Classifier",
"type": "main",
"index": 0
}
]
]
},
"RSS Feed Reader": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Text Classifier": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "RSS Feed Reader",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"OpenRouter Chat Model (for Agent)": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}