Polls a reviews feed, scores each review's sentiment with GPT, logs everything to a sheet, and immediately alerts the team in Slack when a negative review appears. Protect your reputation in real time.
{
"name": "Review Monitor with Sentiment Routing",
"nodes": [
{
"id": "rm01aa",
"name": "Poll Reviews",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.1,
"position": [
180,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
}
},
{
"id": "rm02bb",
"name": "Fetch Reviews",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
380,
300
],
"parameters": {
"url": "https://api.reviews.example.com/latest",
"method": "GET"
}
},
{
"id": "rm03cc",
"name": "Score Sentiment",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
580,
300
],
"parameters": {
"modelId": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "system",
"content": "Classify review sentiment. Return JSON: { sentiment: 'positive'|'neutral'|'negative' }."
},
{
"role": "user",
"content": "{{ $json.text }}"
}
]
},
"jsonOutput": true
}
},
{
"id": "rm04dd",
"name": "Log Review",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.4,
"position": [
780,
300
],
"parameters": {
"operation": "append",
"documentId": "YOUR_SHEET_ID",
"sheetName": "Reviews",
"columns": {
"mappingMode": "defineBelow",
"value": {
"text": "={{ $('Fetch Reviews').item.json.text }}",
"sentiment": "={{ $json.message.content.sentiment }}"
}
}
}
},
{
"id": "rm05ee",
"name": "Negative?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
980,
300
],
"parameters": {
"conditions": {
"conditions": [
{
"leftValue": "={{ $('Score Sentiment').item.json.message.content.sentiment }}",
"rightValue": "negative",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
}
}
}
],
"connections": {
"Poll Reviews": {
"main": [
[
{
"node": "Fetch Reviews",
"type": "main",
"index": 0
}
]
]
},
"Fetch Reviews": {
"main": [
[
{
"node": "Score Sentiment",
"type": "main",
"index": 0
}
]
]
},
"Score Sentiment": {
"main": [
[
{
"node": "Log Review",
"type": "main",
"index": 0
}
]
]
},
"Log Review": {
"main": [
[
{
"node": "Negative?",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"meta": {}
}