This workflow corresponds to n8n.io template #11526 — we link there as the canonical source.
This workflow follows the Agent → Airtable 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 →
{
"id": "nJczKJtEWmzqltAb",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Analyze high-priority tenders from Airtable to Slack for Go/No-Go approval",
"tags": [],
"nodes": [
{
"id": "2d6c2104-638f-4610-ad67-28c27b711445",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-144,
128
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "cf09573d-ce4e-4fd0-8380-a7d95bd4ee24",
"name": "Parse AI Output (Structured JSON)",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
560,
352
],
"parameters": {
"jsonSchemaExample": "{\n \"urgency\": \"High | Medium | Low | Review Required\",\n \"priorityScore\": 1,\n \"summary\": \"Short executive-ready description\",\n \"goNoGo\": \"Go | No-Go\",\n \"reason\": \"Why this priority was assigned\"\n}\n"
},
"typeVersion": 1.3
},
{
"id": "c59eaac9-4d1c-445a-8557-e95234a46840",
"name": "AI Model: GPT-4 Priority Engine",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
304,
352
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {
"temperature": 0.7
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "ac5156e6-89d8-4caa-bdf5-a26b42886c39",
"name": "AI Memory: Priority Context",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
432,
352
],
"parameters": {
"sessionKey": "=\"AI Agenda\"",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "47a57079-fa4a-4500-b777-8c4e1adfcf94",
"name": "AI Agent OpenAI \u2014 RFP Summary + Scoring with JSON output",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
368,
128
],
"parameters": {
"text": "=Tender Details:\n- Tender Reference: {{ $json.TenderRefNo }}\n- Company: {{ $json[\"Company Name\"] }}\n- Country: {{ $json.Country }}\n- State: {{ $json.State }}\n- City: {{ $json.City }}\n- Tender Brief: {{ $json.TenderBrief }}\n- Opening Date: {{ $json[\"Opening Date\"] }}\n- Closing Date: {{ $json[\"Closing Date\"] }}\n- Link: {{ $json[\"Description Link\"] }}\n- Original Source: {{ $json.Original_Source }}\n- Status: {{ $json.Status }}\n\nEvaluation Rules:\n- Short deadlines (less than 3 days left) \u2192 High urgency\n- High-value technical/government tenders \u2192 High opportunity\n- New markets or compliance concerns \u2192 Higher risk\n- Private small tenders with long deadlines \u2192 Lower urgency\n",
"options": {
"systemMessage": "=You are an expert in procurement and tender evaluation. \nYour job is to analyze tenders and produce a priority score, clear summary, and decision recommendation.\n\nRULES:\n- Respond ONLY in valid JSON according to the schema provided\n- Do NOT include any commentary outside JSON format\n- Determine urgency: High / Medium / Low\n- Evaluate business opportunity and risk\n- If critical data like closing date is missing \u2192 urgency = \"Review Required\"\n- Highlight why the tender is important or risky\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "b3e3c54d-5cbd-44de-bb09-ff7952e2d1d4",
"name": "Format Data From AI Agent",
"type": "n8n-nodes-base.set",
"position": [
768,
128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4e7e185e-3c18-4804-a33a-14400226d351",
"name": "Urgency",
"type": "string",
"value": "={{ $json.output.urgency }}"
},
{
"id": "35348b68-c1f0-463b-a78f-a67ceda00416",
"name": "PriorityScore",
"type": "number",
"value": "={{ $json.output.priorityScore }}"
},
{
"id": "5ffe5538-de01-470d-ab09-6af9ea7e4d6f",
"name": "Summary",
"type": "string",
"value": "={{ $json.output.summary }}"
},
{
"id": "3e48b97e-94b4-4bd0-bfe7-4b552134084e",
"name": "goNoGo",
"type": "string",
"value": "={{ $json.output.goNoGo }}"
},
{
"id": "3b0bcadd-cf94-49d9-ae28-330f7a156f21",
"name": "Reason",
"type": "string",
"value": "={{ $json.output.reason }}"
},
{
"id": "0cf88632-3467-42e1-b34f-40147e69e036",
"name": "AirtableURL",
"type": "string",
"value": "=https://airtable.com/appJvCVz7mUkqNQwx/tblEX8rbZIv5xYAwb/viw56bw9zmEwRevO7/{{ $('Fetch Pending Record From Airtable').item.json.id }}?blocks=hide"
},
{
"id": "fc8f1a4c-5f6d-411e-af1e-e388108bdaa1",
"name": "TenderRefNo",
"type": "string",
"value": "={{ $('Fetch Pending Record From Airtable').item.json.TenderRefNo }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "202670d9-dd42-493b-a934-f01c70e5f418",
"name": "Check Priority",
"type": "n8n-nodes-base.if",
"position": [
992,
128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e58454e5-72b1-46a2-9c0e-0729a9694498",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Urgency }}",
"rightValue": "High"
},
{
"id": "640124ab-7419-4c45-97a4-47986f7dd747",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.PriorityScore }}",
"rightValue": 70
},
{
"id": "9ea4094c-b2d4-4881-a57f-7d9c58b4d3fc",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.goNoGo }}",
"rightValue": "Go"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "590fa14f-7e38-411b-ab98-ae767d8d6ab2",
"name": "Update Pending Status",
"type": "n8n-nodes-base.airtable",
"position": [
1664,
224
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appJvCVz7mUkqNQwx",
"cachedResultUrl": "https://airtable.com/appJvCVz7mUkqNQwx",
"cachedResultName": "Tender Info"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblEX8rbZIv5xYAwb",
"cachedResultUrl": "https://airtable.com/appJvCVz7mUkqNQwx/tblEX8rbZIv5xYAwb",
"cachedResultName": "Tender Details"
},
"columns": {
"value": {
"Status": "Approved",
"TenderRefNo": "={{ $('Check Priority').item.json.TenderRefNo }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TenderRefNo",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "TenderRefNo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TcNo",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "TcNo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TenderProcId",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "TenderProcId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "State",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "State",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "City",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "City",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TenderBrief",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "TenderBrief",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tender Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Tender Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Opening Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Opening Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Closing Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Closing Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Original_Source",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Original_Source",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description Link",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Description Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Priority",
"type": "options",
"display": true,
"options": [
{
"name": "Low",
"value": "Low"
},
{
"name": "Medium",
"value": "Medium"
},
{
"name": "High",
"value": "High"
}
],
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Priority",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Summary",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "AI Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Reason",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "AI Reason",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Pending",
"value": "Pending"
},
{
"name": "Approved",
"value": "Approved"
},
{
"name": "Rejected",
"value": "Rejected"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"TenderRefNo"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "088a5b61-23c0-4dc5-aac4-c408867e030b",
"name": "Fetch Pending Record From Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
80,
128
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appJvCVz7mUkqNQwx",
"cachedResultUrl": "https://airtable.com/appJvCVz7mUkqNQwx",
"cachedResultName": "Tender Info"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblEX8rbZIv5xYAwb",
"cachedResultUrl": "https://airtable.com/appJvCVz7mUkqNQwx/tblEX8rbZIv5xYAwb",
"cachedResultName": "Tender Details"
},
"options": {},
"operation": "search",
"filterByFormula": "AND( {Priority} = \"High\", {Status} = \"Pending\" )"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "c2551c4b-21ed-4ec0-b11f-d01895bca412",
"name": "Send Tender Details and wait for response",
"type": "n8n-nodes-base.slack",
"position": [
1216,
32
],
"parameters": {
"select": "channel",
"message": "=\ud83d\udccc *Tender Analysis Ready* \n\nRef No:{{ $json.TenderRefNo }}\nSummary: {{ $json.Summary }}\nGoNoGo: {{ $json.goNoGo }}\nReason:{{ $json.Reason }} \nPriorityScore:{{ $json.PriorityScore }}\n\n\n\ud83d\udc49 Review on Airtable: {{ $json.AirtableURL }}\n",
"options": {},
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09GNB90TED",
"cachedResultName": "general-information"
},
"operation": "sendAndWait",
"approvalOptions": {
"values": {
"approvalType": "double",
"approveLabel": "Accept",
"disapproveLabel": "Reject"
}
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "0489e0b7-5d86-47d5-b26c-918c4ec61770",
"name": "Send Message",
"type": "n8n-nodes-base.slack",
"position": [
1216,
224
],
"parameters": {
"text": "There is No Priority Tender Available .",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09GNB90TED",
"cachedResultName": "general-information"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "9a36b7b8-a215-47b4-bc26-0d2e1726e5c7",
"name": "Check Approved",
"type": "n8n-nodes-base.if",
"position": [
1440,
32
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3340fc50-9b37-4554-9b26-57fbf7573b55",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data.approved }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1501fa6a-6202-417a-9648-82a56a1fe7b2",
"name": "Update Approved Status",
"type": "n8n-nodes-base.airtable",
"position": [
1664,
32
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appJvCVz7mUkqNQwx",
"cachedResultUrl": "https://airtable.com/appJvCVz7mUkqNQwx",
"cachedResultName": "Tender Info"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblEX8rbZIv5xYAwb",
"cachedResultUrl": "https://airtable.com/appJvCVz7mUkqNQwx/tblEX8rbZIv5xYAwb",
"cachedResultName": "Tender Details"
},
"columns": {
"value": {
"Status": "Approved",
"TenderRefNo": "={{ $('Check Priority').item.json.TenderRefNo }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TenderRefNo",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "TenderRefNo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TcNo",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "TcNo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TenderProcId",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "TenderProcId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "State",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "State",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "City",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "City",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "TenderBrief",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "TenderBrief",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tender Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Tender Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Opening Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Opening Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Closing Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Closing Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Original_Source",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Original_Source",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description Link",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Description Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Priority",
"type": "options",
"display": true,
"options": [
{
"name": "Low",
"value": "Low"
},
{
"name": "Medium",
"value": "Medium"
},
{
"name": "High",
"value": "High"
}
],
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Priority",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Summary",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "AI Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Reason",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "AI Reason",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Pending",
"value": "Pending"
},
{
"name": "Approved",
"value": "Approved"
},
{
"name": "Rejected",
"value": "Rejected"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"TenderRefNo"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "10302eab-5c03-4fe1-a7b3-077e630fdeec",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-608
],
"parameters": {
"width": 512,
"height": 544,
"content": "## Tender Summary Generator for Management Approval \n\n**How it works**\n\nThis workflow evaluates high-priority tenders already stored in Airtable and prepares an executive-ready summary for management approval. AI reviews each tender\u2019s urgency, value and risk, and generates a clean JSON report. The highest-scoring tenders are sent directly to Slack for review, where decision-makers can approve or reject in one click. Approved opportunities are instantly updated in Airtable and a confirmation email is sent to the bid team for next steps.\n\nTender Summary Generator for Ma\u2026\n\n**Setup steps**\n\nConnect Airtable and set correct Base + Table for tender data\n\nAdd OpenAI and Slack credentials\n\nUpdate Priority filter in Airtable search if needed\n\nCustomize Slack approval labels or messaging\n\nEnable schedule trigger after initial test run"
},
"typeVersion": 1
},
{
"id": "2d054e4c-1c87-4e0b-894b-cd9652ef37ef",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-16
],
"parameters": {
"color": 2,
"width": 480,
"height": 304,
"content": "## \ud83d\udce1 Trigger & Fetch Pending Tenders\n\nDaily trigger checks Airtable for tenders marked High Priority and still Pending approval. These are routed for AI evaluation.\nNodes: Schedule Trigger \u2192 Fetch Pending Record From Airtable"
},
"typeVersion": 1
},
{
"id": "a114b90e-8d46-46b5-b07f-b2145f815dae",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
-48
],
"parameters": {
"color": 2,
"width": 656,
"height": 544,
"content": "## \ud83e\udde0 AI Analysis & Summary\n\nEvaluates urgency, business opportunity, and risks. Produces a short management-quality summary and Go/No-Go decision in JSON.\nNodes: AI Model, AI Agent, AI Memory, Parse JSON Output, Format AI Result"
},
"typeVersion": 1
},
{
"id": "0898f511-d8f1-44aa-880f-be8c1761f6dc",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
-96
],
"parameters": {
"color": 2,
"width": 608,
"height": 480,
"content": "## \ud83c\udfdb Management Approval Flow\n\nHigh-value tenders are shared to Slack with Approve/Reject options. Decisions drive automated updates.\nNodes: Check Priority \u2192 Slack Approval \u2192 Check Approved"
},
"typeVersion": 1
},
{
"id": "0b55517e-3c9b-4625-879d-e920e7c49db2",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
-400
],
"parameters": {
"color": 2,
"height": 800,
"content": "## \ud83d\udcca Status Update & Notifications\n\nApproved tenders are marked in Airtable and emailed for action. If no qualified tenders exist, a notice is sent to Slack.\nNodes: Update Status, Send Email, Send Message (fallback)"
},
"typeVersion": 1
},
{
"id": "c5f95a5e-20da-4362-b7be-478220e22239",
"name": "Send Confirmation Mail",
"type": "n8n-nodes-base.gmail",
"position": [
1664,
-160
],
"parameters": {
"sendTo": "user@example.com",
"message": "=Hello Team,\n\nThe following tender has been approved by management for bid preparation and submission:\n\n\ud83d\udccc Tender Reference:{{ $('Check Priority').item.json.TenderRefNo }}\n\n\ud83d\udd0e Summary:\n{{ $('Check Priority').item.json.Summary }}\n\n\ud83d\udcc8 Priority Score: {{ $('Check Priority').item.json.PriorityScore }}\n\ud83d\udcdd Recommendation: {{ $('Check Priority').item.json.goNoGo }} \n\nNext Steps:\n\u2022 Assign proposal owner\n\u2022 Collect technical and financial requirements\n\u2022 Confirm submission process and documentation needs\n\nYou can review full tender details here:\n{{ $('Check Priority').item.json.AirtableURL }}\n\nPlease proceed with procurement and bid formalities.\n\nRegards, \nProcurement Automation System",
"options": {},
"subject": "=Tender Approved: {{ $('Check Priority').item.json.TenderRefNo }} \u2014 Proceed with Bid",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "f09ce67b-200f-47cd-a823-ab72c39c2fb4",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1888,
192
],
"parameters": {
"color": 3,
"width": 304,
"height": 192,
"content": "## \ud83d\udd10 Credentials & Security\n\nStore tokens securely in n8n credentials. Replace personal emails and workspace links with placeholders before publishing."
},
"typeVersion": 1
},
{
"id": "e6daded6-b58e-4d50-8e42-21102e13ca8e",
"name": "Error Handler Trigger",
"type": "n8n-nodes-base.errorTrigger",
"position": [
-192,
1024
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d628b44f-8124-4a2f-9919-c9b7b1e7c3e5",
"name": "Slack: Send Error Alert",
"type": "n8n-nodes-base.slack",
"position": [
176,
1024
],
"parameters": {
"text": "=\u274c *Error in API Error Catalog Workflow* *Node:* {{ $json.node.name }} *Message:* {{ $json.error.message }} *Time:* {{ $json.timestamp }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": ""
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "1fa02a3b-04f9-4c64-8fbb-58c6e1005054",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
848
],
"parameters": {
"color": 2,
"width": 672,
"height": 336,
"content": "## \ud83d\udea8 Error Handling \n\n \nCatches any workflow failure and posts an alert to Slack. \nIncludes node name, error message, and timestamp for quick debugging.\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "f1aed48d-34e4-4dd1-b1f5-aaeb20e5025c",
"connections": {
"Check Approved": {
"main": [
[
{
"node": "Send Confirmation Mail",
"type": "main",
"index": 0
},
{
"node": "Update Approved Status",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Pending Status",
"type": "main",
"index": 0
}
]
]
},
"Check Priority": {
"main": [
[
{
"node": "Send Tender Details and wait for response",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Message",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Fetch Pending Record From Airtable",
"type": "main",
"index": 0
}
]
]
},
"Error Handler Trigger": {
"main": [
[
{
"node": "Slack: Send Error Alert",
"type": "main",
"index": 0
}
]
]
},
"Format Data From AI Agent": {
"main": [
[
{
"node": "Check Priority",
"type": "main",
"index": 0
}
]
]
},
"AI Memory: Priority Context": {
"ai_memory": [
[
{
"node": "AI Agent OpenAI \u2014 RFP Summary + Scoring with JSON output",
"type": "ai_memory",
"index": 0
}
]
]
},
"AI Model: GPT-4 Priority Engine": {
"ai_languageModel": [
[
{
"node": "AI Agent OpenAI \u2014 RFP Summary + Scoring with JSON output",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Parse AI Output (Structured JSON)": {
"ai_outputParser": [
[
{
"node": "AI Agent OpenAI \u2014 RFP Summary + Scoring with JSON output",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Fetch Pending Record From Airtable": {
"main": [
[
{
"node": "AI Agent OpenAI \u2014 RFP Summary + Scoring with JSON output",
"type": "main",
"index": 0
}
]
]
},
"Send Tender Details and wait for response": {
"main": [
[
{
"node": "Check Approved",
"type": "main",
"index": 0
}
]
]
},
"AI Agent OpenAI \u2014 RFP Summary + Scoring with JSON output": {
"main": [
[
{
"node": "Format Data From AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
airtableTokenApigmailOAuth2openAiApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Streamline management decision-making by automatically evaluating high-priority tenders, generating AI-powered executive summaries, and routing them for approval inside Slack. 🤖📩 This workflow pulls pending tenders from Airtable, uses GPT-4o-mini to evaluate urgency, business…
Source: https://n8n.io/workflows/11526/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n-powered workflow automates the entire lifecycle of real estate lead intake, qualification, routing, assignment, and reporting across multiple channels. It brings WhatsApp inquiries and websit
This workflow automates end-to-end sustainability lifecycle management for corporate sustainability teams, ESG governance officers, and circular economy programme leads. It addresses the challenge of
Automate your team's daily stand-ups with AI-powered morning briefs, directly pulled from ClickUp tasks and shared via Slack and Gmail every morning. ☀️📋💬 Triggers automatically at 9:15 AM each mornin
Automate your content repurposing workflow by transforming long-form articles, blogs, and newsletters into short, high-signal, AI-ready social media snippets. ✍️🤖 This workflow fetches pending content
Monitor daily brand visibility and reputation with an automated AI-powered mention tracker. 🔍🤖 This workflow checks Hacker News every morning for new stories matching your brand keyword, classifies ea