AutomationFlowsAI & RAG › Monitor Iot Sustainability Compliance and Esg Reports with Openai, Airtable,…

Monitor Iot Sustainability Compliance and Esg Reports with Openai, Airtable,…

Original n8n title: Monitor Iot Sustainability Compliance and Esg Reports with Openai, Airtable, Slack and Gmail

ByCheng Siong Chin @cschin on n8n.io

This workflow automates IoT device compliance monitoring and anomaly detection for industrial operations. Designed for facility managers, quality assurance teams, and regulatory compliance officers, it solves the challenge of continuously monitoring sensor networks while…

Cron / scheduled trigger★★★★☆ complexityAI-powered22 nodesAgentOpenAI ChatOutput Parser StructuredSlackAirtableGmail
AI & RAG Trigger: Cron / scheduled Nodes: 22 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #12198 — 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": "ilc0dqRxI4mwYKdu",
  "name": "IoT-Integrated Energy & Sustainability Tracker with ESG Reporting",
  "tags": [],
  "nodes": [
    {
      "id": "1a5e744b-c3d6-4829-8c46-7e1aa408e1ab",
      "name": "Every 15 Minutes",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2112,
        256
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 15
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "87ff49df-25f9-4924-b44a-c423a0af75c4",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -1888,
        256
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "iotApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__IoT API endpoint URL__>"
            },
            {
              "id": "id-2",
              "name": "complianceThresholdEnergy",
              "type": "number",
              "value": 1000
            },
            {
              "id": "id-3",
              "name": "complianceThresholdWater",
              "type": "number",
              "value": 500
            },
            {
              "id": "id-4",
              "name": "complianceThresholdWaste",
              "type": "number",
              "value": 100
            },
            {
              "id": "id-5",
              "name": "alertEmail",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Alert recipient email address__>"
            },
            {
              "id": "id-6",
              "name": "esgReportEmail",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__ESG report recipient email address__>"
            },
            {
              "id": "id-7",
              "name": "slackChannel",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Slack channel ID for alerts__>"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "ee4abdc7-7fc2-45d6-8b56-6be6e94fb2f8",
      "name": "Parse and Structure IoT Data",
      "type": "n8n-nodes-base.code",
      "position": [
        -1456,
        256
      ],
      "parameters": {
        "jsCode": "// Parse and structure IoT sensor data\nconst items = $input.all();\nconst structuredData = [];\n\nfor (const item of items) {\n  const rawData = item.json;\n  \n  // Structure the IoT sensor data\n  const structured = {\n    timestamp: rawData.timestamp || new Date().toISOString(),\n    energyUsage: rawData.energyUsage || rawData.energy || 0,\n    waterUsage: rawData.waterUsage || rawData.water || 0,\n    wasteGenerated: rawData.wasteGenerated || rawData.waste || 0,\n    location: rawData.location || 'Unknown',\n    sensorId: rawData.sensorId || rawData.id || 'Unknown'\n  };\n  \n  structuredData.push({ json: structured });\n}\n\nreturn structuredData;"
      },
      "typeVersion": 2
    },
    {
      "id": "c261df18-be60-4199-8210-dbb7f3c768d4",
      "name": "Compliance Monitor Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1216,
        256
      ],
      "parameters": {
        "text": "=Analyze the following IoT sensor data for sustainability compliance:\n\nEnergy Usage: {{ $json.energyUsage }} kWh\nWater Usage: {{ $json.waterUsage }} liters\nWaste Generated: {{ $json.wasteGenerated }} kg\nLocation: {{ $json.location }}\nTimestamp: {{ $json.timestamp }}\n\nCompliance Thresholds:\n- Energy: {{ $('Workflow Configuration').first().json.complianceThresholdEnergy }} kWh\n- Water: {{ $('Workflow Configuration').first().json.complianceThresholdWater }} liters\n- Waste: {{ $('Workflow Configuration').first().json.complianceThresholdWaste }} kg",
        "options": {
          "systemMessage": "You are a sustainability compliance monitoring AI assistant.\n\nYour task is to:\n1. Analyze the provided IoT sensor data against compliance thresholds\n2. Determine if any metrics exceed regulatory limits\n3. Identify specific compliance violations\n4. Assess the severity of any violations (low, medium, high, critical)\n5. Provide compliance status and recommendations\n\nReturn your analysis in the structured JSON format defined by the output parser."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "7891ae3f-29c8-4834-a9ec-7fa9f33614d0",
      "name": "OpenAI Model - Compliance",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1216,
        480
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "0d315164-d830-4bb4-a2e1-0b679ef2b023",
      "name": "Compliance Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1088,
        480
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"isCompliant\": {\n\t\t\t\"type\": \"boolean\"\n\t\t},\n\t\t\"violations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"severity\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"recommendations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "15bacddb-4f7e-4732-99c7-e816ad54a040",
      "name": "Anomaly Detection Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -864,
        256
      ],
      "parameters": {
        "text": "=Predict anomalies and excessive usage patterns from this data:\n\nCurrent Reading:\nEnergy: {{ $json.energyUsage }} kWh\nWater: {{ $json.waterUsage }} liters\nWaste: {{ $json.wasteGenerated }} kg\nLocation: {{ $json.location }}\nTimestamp: {{ $json.timestamp }}\n\nCompliance Status: {{ $json.isCompliant }}\nViolations: {{ $json.violations }}",
        "options": {
          "systemMessage": "You are an AI-powered anomaly detection and predictive analytics assistant for sustainability monitoring.\n\nYour task is to:\n1. Analyze current usage patterns for energy, water, and waste\n2. Detect anomalies compared to expected baselines\n3. Predict potential excessive usage trends\n4. Identify equipment that may need maintenance\n5. Calculate risk scores for each resource type\n6. Recommend preventive actions\n\nReturn your analysis in the structured JSON format defined by the output parser."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "369a0f2f-2d8f-4d4f-bca6-1af3ff0a2d74",
      "name": "OpenAI Model - Anomaly",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -864,
        480
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "644c57dd-e62d-4f13-b0aa-1ac3329479d3",
      "name": "Anomaly Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -736,
        480
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"hasAnomaly\": true,\n\t\"anomalyType\": \"temperature spike\",\n\t\"riskScore\": 85,\n\t\"predictedIssues\": [\"equipment overheating\", \"potential failure\"],\n\t\"maintenanceRequired\": true,\n\t\"maintenanceRecommendations\": [\"inspect cooling system\", \"check sensor calibration\"]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "1d6db435-3ba0-4519-92f0-c237506a8853",
      "name": "Check for Issues",
      "type": "n8n-nodes-base.if",
      "position": [
        -512,
        256
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "boolean",
                "operation": "equals"
              },
              "leftValue": "={{ $('Anomaly Detection Agent').item.json.isCompliant }}",
              "rightValue": "false"
            },
            {
              "id": "id-2",
              "operator": {
                "type": "boolean",
                "operation": "equals"
              },
              "leftValue": "={{ $('Anomaly Detection Agent').item.json.hasAnomaly }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "5139d3cf-8716-432f-a02f-87813baac4a8",
      "name": "Prepare Alert Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -288,
        96
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "alertType",
              "type": "string",
              "value": "Issues Detected"
            },
            {
              "id": "id-2",
              "name": "location",
              "type": "string",
              "value": "={{ $json.location }}"
            },
            {
              "id": "id-3",
              "name": "timestamp",
              "type": "string",
              "value": "={{ $json.timestamp }}"
            },
            {
              "id": "id-4",
              "name": "complianceStatus",
              "type": "string",
              "value": "={{ $json.isCompliant ? 'Compliant' : 'Non-Compliant' }}"
            },
            {
              "id": "id-5",
              "name": "violations",
              "type": "string",
              "value": "={{ $json.violations }}"
            },
            {
              "id": "id-6",
              "name": "anomalyDetected",
              "type": "boolean",
              "value": "={{ $json.hasAnomaly }}"
            },
            {
              "id": "id-7",
              "name": "riskScore",
              "type": "number",
              "value": "={{ $json.riskScore }}"
            },
            {
              "id": "id-8",
              "name": "maintenanceNeeded",
              "type": "boolean",
              "value": "={{ $json.maintenanceRequired }}"
            },
            {
              "id": "id-9",
              "name": "recommendations",
              "type": "string",
              "value": "={{ JSON.stringify($json.maintenanceRecommendations) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b4228e21-4ea5-468c-a794-6ffad4800d2b",
      "name": "Send Slack Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        96
      ],
      "parameters": {
        "text": "=\ud83d\udea8 *Sustainability Alert*\n\n*Location:* {{ $json.location }}\n*Timestamp:* {{ $json.timestamp }}\n*Compliance:* {{ $json.complianceStatus }}\n*Anomaly:* {{ $json.anomalyDetected }}\n*Risk Score:* {{ $json.riskScore }}\n\n*Violations:* {{ $json.violations }}\n*Maintenance:* {{ $json.maintenanceNeeded }}\n*Recommendations:* {{ $json.recommendations }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration').first().json.slackChannel }}"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "b93fabd2-3a6d-4667-aaa4-8a2ca3658051",
      "name": "Aggregate Daily Data",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        -288,
        496
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "177288ae-829b-4107-ba85-1a32c6c26c01",
      "name": "ESG Report Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -64,
        496
      ],
      "parameters": {
        "text": "=Generate a comprehensive ESG (Environmental, Social, Governance) report based on the following aggregated sustainability data:\n\n{{ JSON.stringify($json) }}",
        "options": {
          "systemMessage": "You are an ESG reporting specialist AI assistant that creates comprehensive sustainability reports for investors and regulators.\n\nYour task is to:\n1. Analyze aggregated energy, water, and waste data\n2. Calculate key ESG metrics and KPIs\n3. Identify trends and patterns over the reporting period\n4. Assess compliance with environmental regulations\n5. Highlight achievements and areas for improvement\n6. Provide data-driven recommendations for sustainability goals\n7. Format the report professionally with sections for:\n   - Executive Summary\n   - Environmental Impact Metrics\n   - Compliance Status\n   - Trend Analysis\n   - Risk Assessment\n   - Recommendations\n   - Regulatory Compliance Statement\n\nGenerate a detailed HTML-formatted ESG report suitable for investors and regulatory bodies."
        },
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "b805a1ca-e22e-4c47-a002-f2ea72ea0bd0",
      "name": "OpenAI Model - ESG Report",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -64,
        688
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "a00b53f7-b65b-4279-9acc-70978935cb3f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        -288
      ],
      "parameters": {
        "color": 6,
        "width": 576,
        "height": 304,
        "content": "\n## Prerequisites\nIoT sensor platform API access, OpenAI API key, Gmail/Slack accounts\n## Use Cases\nManufacturing quality control, environmental compliance monitoring\n## Customization\nModify sensor polling frequency, adjust compliance rules, customize anomaly thresholds\n## Benefits\nContinuous compliance assurance, instant anomaly detection"
      },
      "typeVersion": 1
    },
    {
      "id": "335d005c-7a3c-4555-8364-3edbc061a985",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1264,
        -256
      ],
      "parameters": {
        "width": 416,
        "height": 192,
        "content": "## Setup Steps\n1. Configure AirTable credentials and set 15-minute schedule interval\n2. Add OpenAI API keys for compliance and anomaly detection agents, configure regulatory thresholds\n3. Set Gmail/Slack credentials for alerts and ESG report distribution"
      },
      "typeVersion": 1
    },
    {
      "id": "9b562fdb-0b8a-4792-988b-ea16744ff0f3",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2064,
        -256
      ],
      "parameters": {
        "width": 768,
        "height": 224,
        "content": "## How It Works\nThis workflow automates IoT device compliance monitoring and anomaly detection for industrial operations. Designed for facility managers, quality assurance teams, and regulatory compliance officers, it solves the challenge of continuously monitoring sensor networks while ensuring regulatory adherence and detecting operational issues in real-time.The system runs every 15 minutes, fetching IoT sensor data and structuring it for analysis. Dual AI agents evaluate compliance against regulatory standards and detect operational anomalies. Issues trigger immediate email and Slack alerts for rapid response. Daily data aggregates into comprehensive ESG reports with AI-generated insights, automatically emailed to stakeholders for transparency and audit trails."
      },
      "typeVersion": 1
    },
    {
      "id": "88b59bcc-b71a-4c4a-aaf8-c0c557293fab",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1264,
        64
      ],
      "parameters": {
        "color": 7,
        "width": 1760,
        "height": 800,
        "content": "## Intelligent Alert Routing & ESG Reporting\n\n**What:** Issues trigger email and Slack alerts for immediate action. \n\n**Why:** Alert fatigue from undifferentiated notifications delays responses. "
      },
      "typeVersion": 1
    },
    {
      "id": "2212e5b3-21d9-4db9-abae-a6e46b0b4efb",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2144,
        64
      ],
      "parameters": {
        "color": 7,
        "width": 864,
        "height": 416,
        "content": "## Real-Time Compliance & Anomaly Detection\n\n**What:** Fetches IoT sensor data every 15 minutes, parses and structures readings  \n\n**Why:** Manual sensor monitoring misses critical violations and anomalies.  "
      },
      "typeVersion": 1
    },
    {
      "id": "955e9e63-4e62-4f7b-a1c8-257501d7388b",
      "name": "Get IoT Data",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -1696,
        256
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {}
      },
      "typeVersion": 2.1
    },
    {
      "id": "49385d7b-8d68-4d69-842c-b451cd3755bb",
      "name": "\ud83d\udce7 Send Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        256,
        496
      ],
      "parameters": {
        "message": "= Report is attached",
        "options": {},
        "subject": "Send Report"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "ae987378-6f70-47ab-ae78-c347ec1b05a9",
  "connections": {
    "Get IoT Data": {
      "main": [
        [
          {
            "node": "Parse and Structure IoT Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check for Issues": {
      "main": [
        [
          {
            "node": "Prepare Alert Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Aggregate Daily Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every 15 Minutes": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Alert Data": {
      "main": [
        [
          {
            "node": "Send Slack Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Daily Data": {
      "main": [
        [
          {
            "node": "ESG Report Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ESG Report Generator": {
      "main": [
        [
          {
            "node": "\ud83d\udce7 Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anomaly Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Anomaly Detection Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Anomaly": {
      "ai_languageModel": [
        [
          {
            "node": "Anomaly Detection Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Get IoT Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anomaly Detection Agent": {
      "main": [
        [
          {
            "node": "Check for Issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compliance Monitor Agent": {
      "main": [
        [
          {
            "node": "Anomaly Detection Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compliance Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Compliance Monitor Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Compliance": {
      "ai_languageModel": [
        [
          {
            "node": "Compliance Monitor Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - ESG Report": {
      "ai_languageModel": [
        [
          {
            "node": "ESG Report Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse and Structure IoT Data": {
      "main": [
        [
          {
            "node": "Compliance Monitor 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

This workflow automates IoT device compliance monitoring and anomaly detection for industrial operations. Designed for facility managers, quality assurance teams, and regulatory compliance officers, it solves the challenge of continuously monitoring sensor networks while…

Source: https://n8n.io/workflows/12198/ — 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

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 p

Output Parser Structured, OpenAI Chat, Memory Buffer Window +5
AI & RAG

Ensure suppliers never miss a follow-up by automating overdue purchase order tracking and scheduling. 📦⏰ This workflow checks Airtable every weekday morning for open POs older than seven days without

Airtable, Slack, Google Calendar +6
AI & RAG

This workflow automates tenant screening by analyzing payment history, credit, and employment data to predict rental risks. Designed for property managers, landlords, and real estate agencies, it solv

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

This n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform

Agent, OpenAI Chat, Airtable Tool +7