AutomationFlowsAI & RAG › Analyze High-priority Tenders From Airtable to Slack for Go/no-go Approval

Analyze High-priority Tenders From Airtable to Slack for Go/no-go Approval

ByRahul Joshi @rahul08 on n8n.io

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…

Cron / scheduled trigger★★★★☆ complexityAI-powered23 nodesOutput Parser StructuredOpenAI ChatMemory Buffer WindowAgentAirtableSlackGmailError Trigger
AI & RAG Trigger: Cron / scheduled Nodes: 23 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "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.

Pro

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 →

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

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

Gmail, Typeform Trigger, WhatsApp Trigger +8
AI & RAG

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

Form Trigger, Agent, OpenAI Chat +11
AI & RAG

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

ClickUp, Agent, Output Parser Structured +5
AI & RAG

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

Airtable, OpenAI Chat, Memory Buffer Window +5
AI & RAG

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

HTTP Request, Slack, OpenAI Chat +4