This workflow corresponds to n8n.io template #13573 — we link there as the canonical source.
This workflow follows the Airtable → Chainllm 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": "Cc4wB0zIS4gfrfflNZhgO",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Hotel Review Sentiment Processor",
"tags": [
{
"id": "1OCUSw3TsWL35pWo",
"name": "sentiment review",
"createdAt": "2026-02-07T13:17:45.492Z",
"updatedAt": "2026-02-07T13:17:45.492Z"
},
{
"id": "AI0ab3rQDcPaH6cc",
"name": "openai",
"createdAt": "2026-02-07T13:18:15.426Z",
"updatedAt": "2026-02-07T13:18:15.426Z"
},
{
"id": "PNLNbxplmPxW0IzU",
"name": "airtable",
"createdAt": "2026-02-07T13:17:52.972Z",
"updatedAt": "2026-02-07T13:17:52.972Z"
},
{
"id": "VGyAoWenJFS74Fml",
"name": "hotel",
"createdAt": "2026-02-07T13:17:31.566Z",
"updatedAt": "2026-02-07T13:17:31.566Z"
},
{
"id": "qfS2esG6Rh52i4DR",
"name": "slack",
"createdAt": "2026-01-29T06:09:26.747Z",
"updatedAt": "2026-01-29T06:09:26.747Z"
}
],
"nodes": [
{
"id": "f509e16f-5290-44a3-91f5-bc56c9fbabae",
"name": "Analyze Review Sentiment",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"maxTries": 2,
"position": [
-256,
384
],
"parameters": {},
"executeOnce": false,
"retryOnFail": true,
"typeVersion": 1.2,
"alwaysOutputData": true
},
{
"id": "809d1662-1de1-4e5f-b7f2-d3e3f6ee0311",
"name": "AI: Analyze Review Sentiment",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-176,
192
],
"parameters": {},
"typeVersion": 1.7
},
{
"id": "9ff408ac-3bb6-4121-a4ec-ebd03699a269",
"name": "Combine AI Output with Review Data",
"type": "n8n-nodes-base.set",
"position": [
432,
192
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "fc1d370e-3fb1-46b9-a2e4-ac892288d0ec",
"name": "Airtable Trigger",
"type": "n8n-nodes-base.airtableTrigger",
"position": [
-880,
176
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5e8f1399-052a-4277-9c7d-90b51e03d760",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-896,
-32
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "1887ae27-59f0-458e-ae3d-87d592135774",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
16
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "7bd845cf-25a5-4fca-ae27-f4bf0ca2f989",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
16
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "4abe5104-68e0-45c8-9290-ceae8e87fe14",
"name": "Processed Review: No Action Required",
"type": "n8n-nodes-base.noOp",
"position": [
-496,
80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e70c0e99-5001-46d8-a8de-7b103bf4f063",
"name": "Normalize Review Payload",
"type": "n8n-nodes-base.set",
"position": [
-480,
288
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "00ec9666-837a-480b-a643-a909aa79b808",
"name": "Check AI Output Valid",
"type": "n8n-nodes-base.if",
"position": [
688,
192
],
"parameters": {},
"typeVersion": 2.3
},
{
"id": "e1683eb4-bd75-454e-b8a7-9625f0f7a0ac",
"name": "AI Failure Handler",
"type": "n8n-nodes-base.set",
"position": [
928,
352
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "44181195-5391-4aea-bcde-6a51376624c9",
"name": "Parse AI Output (JSON Schema)",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
16,
384
],
"parameters": {},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "ed537ecc-6f68-4f60-ab0f-1a3551d73ae3",
"name": "Prepare Airtable Update",
"type": "n8n-nodes-base.set",
"position": [
944,
144
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "7cf023b3-cd91-48d2-82bb-0f44442d9cd4",
"name": "Update Airtable Review Record",
"type": "n8n-nodes-base.airtable",
"position": [
1264,
224
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "89b3e0f1-3c55-4425-808d-001cb7abcf5f",
"name": "Flatten AI Output",
"type": "n8n-nodes-base.set",
"position": [
224,
192
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "99806ca8-b679-4734-a9dc-9b8c72fd5649",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
16
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "0a4eb3f3-fdb2-4cbd-9020-b21356639f01",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1408,
-32
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "bb749deb-6cd2-4929-913e-f58dcb793951",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1088,
32
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "dc2fcd77-75f3-413f-84d1-51ca819f400c",
"name": "Check if Review Exist",
"type": "n8n-nodes-base.if",
"position": [
-768,
496
],
"parameters": {},
"typeVersion": 2.3
},
{
"id": "45e4a469-12d8-4946-b798-8a44bc559765",
"name": "Check if Processed",
"type": "n8n-nodes-base.if",
"position": [
-704,
176
],
"parameters": {},
"typeVersion": 2.3
},
{
"id": "22b16eaa-8694-4dfc-809e-167fd7b24208",
"name": "No Review to Process",
"type": "n8n-nodes-base.noOp",
"position": [
-512,
544
],
"parameters": {},
"typeVersion": 1
}
],
"active": true,
"settings": {
"timezone": "Asia/Manila",
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "o4jqXmki9xPDSHf4J09Ld",
"timeSavedMode": "fixed",
"availableInMCP": false,
"executionOrder": "v1",
"timeSavedPerExecution": 3
},
"versionId": "c15edf7b-0097-478d-ac64-71224dc2c89f",
"connections": {
"Airtable Trigger": {
"main": [
[
{
"node": "Check if Processed",
"type": "main",
"index": 0
}
]
]
},
"Flatten AI Output": {
"main": [
[
{
"node": "Combine AI Output with Review Data",
"type": "main",
"index": 0
}
]
]
},
"AI Failure Handler": {
"main": [
[
{
"node": "Update Airtable Review Record",
"type": "main",
"index": 0
}
]
]
},
"Check if Processed": {
"main": [
[
{
"node": "Processed Review: No Action Required",
"type": "main",
"index": 0
}
],
[
{
"node": "Check if Review Exist",
"type": "main",
"index": 0
}
]
]
},
"Check AI Output Valid": {
"main": [
[
{
"node": "Prepare Airtable Update",
"type": "main",
"index": 0
}
],
[
{
"node": "AI Failure Handler",
"type": "main",
"index": 0
}
]
]
},
"Check if Review Exist": {
"main": [
[
{
"node": "Normalize Review Payload",
"type": "main",
"index": 0
}
],
[
{
"node": "No Review to Process",
"type": "main",
"index": 0
}
]
]
},
"Prepare Airtable Update": {
"main": [
[
{
"node": "Update Airtable Review Record",
"type": "main",
"index": 0
}
]
]
},
"Analyze Review Sentiment": {
"ai_languageModel": [
[
{
"node": "AI: Analyze Review Sentiment",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Normalize Review Payload": {
"main": [
[
{
"node": "AI: Analyze Review Sentiment",
"type": "main",
"index": 0
}
]
]
},
"AI: Analyze Review Sentiment": {
"main": [
[
{
"node": "Flatten AI Output",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Output (JSON Schema)": {
"ai_outputParser": [
[
{
"node": "AI: Analyze Review Sentiment",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Update Airtable Review Record": {
"main": [
[]
]
},
"Combine AI Output with Review Data": {
"main": [
[
{
"node": "Check AI Output Valid",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically analyzes hotel guest reviews using OpenAI and updates the sentiment, summary, and confidence score directly in Airtable. It helps hospitality teams monitor guest satisfaction, identify negative experiences quickly, and generate structured insights…
Source: https://n8n.io/workflows/13573/ — 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.
Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.
Agent Nodes. Uses lmChatOpenAi, slack, stopAndError, errorTrigger. Event-driven trigger; 72 nodes.
Recruiting agencies, executive search firms, and in-house talent teams that want to automate candidate sourcing and prequalification. Instead of spending hours searching, scoring, and writing outreach
This n8n workflow automates sales processes using AI agents integrated with Airtable as a CRM and Gmail for email handling. It consists of two main workflows: one for handling Airtable status changes
Agent IA Immobilier - Enrichissement Inventaire Propriété. Uses lmChatOpenAi, executeWorkflowTrigger, httpRequest, toolWorkflow. Event-driven trigger; 39 nodes.