AutomationFlowsAI & RAG › Automate Sensibo Dawn with OpenAI & Postgres

Automate Sensibo Dawn with OpenAI & Postgres

Original n8n title: Sensibo Dawn

Sensibo-DAWN. Uses httpRequest, openAi, outputParserStructured, postgres. Scheduled trigger; 17 nodes.

Cron / scheduled trigger★★★★☆ complexityAI-powered17 nodesHTTP RequestOpenAIOutput Parser StructuredPostgresOllama ChatGmailDiscordChain Llm
AI & RAG Trigger: Cron / scheduled Nodes: 17 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Chainllm → Gmail 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
{
  "name": "Sensibo-DAWN",
  "nodes": [
    {
      "parameters": {
        "url": "https://home.sensibo.com/api/v2/users/me/pods",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "fields",
              "value": "motionSensors"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -1200,
        80
      ],
      "id": "92a5ca1c-1e03-483f-b333-36c7b46e6183",
      "name": "HTTP Request1",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://home.sensibo.com/api/v2/pods/<pod-id>/acStates",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -992,
        80
      ],
      "id": "a0a234d7-424b-4c0e-863f-ba95355200ff",
      "name": "Get States",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "https://home.sensibo.com/api/v2/pods/<pod-id>/measurements",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -1392,
        80
      ],
      "id": "cb15ceaa-2463-4e60-9ef9-33c19379d8ea",
      "name": "Get neasurements",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "*/5 7-8 * * *"
            },
            {
              "field": "cronExpression",
              "expression": "*/5 23 * * *"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        -1824,
        80
      ],
      "id": "28e2f467-4bbf-4f59-a000-7f8ad7e166a0",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "modelId": {
          "__rl": true,
          "value": "gpt-5-mini",
          "mode": "list",
          "cachedResultName": "GPT-5-MINI"
        },
        "messages": {
          "values": [
            {
              "content": "You are my AC manager. Look at the history of my AC measurements at Sensibo and decide if I should enable it or disable it.\n\nConsider the time, and that it is our sleep time - so take our health into consideration.\nAlso, too hot or too cold (Or too humid) could wake us up and is not healthy.\n28 degrees is comfortable, 55% is great, above 61% it is humid.\ndue central AC, too much balance on stats measured in livingroom is cold on the other sleep rooms. \n\nAlso, using 26 targetTemperature was needed to make it actually work when it was 30.3 degrees.\nbut lower than 28 degrees is freezing othr rooms.\n\nEither use dry mode or turn off - it is important to avoid repeated turning on and off, and we want it turned off most of the night - use dry mode with care.\n\nRemember, your plans wont be transferred to next run, so make decision for the current moment only, and trust yourself to make a proper decision next run (in 5 minutes)\n\nResponse in json: { \"thinking\": \"...\", \"on\": true/false, \"mode\":\"dry\",\n\"targetTemperature\": ## }",
              "role": "system"
            },
            {
              "content": "=States:\n{{ JSON.stringify($('Get States').item.json.result[0]) }} \n\n{{ JSON.stringify($('Get States').item.json.result[1]) }} \n\n{{ JSON.stringify($('Get States').item.json.result[2]) }} \n\n\nMeasurements:\n{{ JSON.stringify($('Get neasurements').item.json.result) }}\n\n\nTime: \n{{  $('Schedule Trigger').item.json.timestamp }}\n\nRemember, my target is ~55%, but lower temperature than 28 will be freezing the other rooms.\nThis is central AC unit.\n\nRemember, your plans wont be transferred to next run, so make decision for the current moment only, and trust yourself to make a proper decision next run (in 5 minutes)\n\nResponse in json: { \"thinking\": \"...\", \"on\": true/false, \"mode\":\"dry\",\n\"targetTemperature\": ## }",
              "role": "=user"
            }
          ]
        },
        "jsonOutput": true,
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        -576,
        -112
      ],
      "id": "9290423f-370f-4e02-8c71-2d568cd48051",
      "name": "Message a model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "ad57b76a-3d01-49a8-b9e7-9d07c97979ab",
              "leftValue": "={{ $('Basic LLM Chain').item.json.output['on'] }}",
              "rightValue": "={{ $('Get States').item.json.result[0].acState.on }}",
              "operator": {
                "type": "boolean",
                "operation": "notEquals"
              }
            }
          ],
          "combinator": "or"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        464,
        64
      ],
      "id": "e316a69c-179e-404e-9aae-521795e83000",
      "name": "If"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://home.sensibo.com/api/v2/pods/<pod-id>/acStates",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"acState\": {\n    \"on\": {{ $('Basic LLM Chain').item.json.output['on'] }},\n    \"targetTemperature\": {{ $('Basic LLM Chain').item.json.output['targetTemperature'] }},\n    \"temperatureUnit\": \"{{ $('Get States').item.json.result[1].acState.temperatureUnit }}\",\n\n    \"mode\": \"{{ $('Basic LLM Chain').item.json.output['mode'] }}\"\n\n\n  }\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        800,
        48
      ],
      "id": "fbbb4053-ac0e-4607-a148-74719039cbab",
      "name": "Change state",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "f9e5c69f-4220-476e-8dc5-13cd3dabe7c2",
              "leftValue": "={{\n\n(\n (\n   ( $json.result[0].time.secondsAgo > 300)  && \n   ( $json.result[0].acState.on  == false)  \n ) || \n ( $json.result[0].acState.on  == true) \n) && \n(\n  (\n    $('Select rows from a table').item.json.on ==   $json.result[0].acState.on &&\n    $('Select rows from a table').item.json.mode ==   $json.result[0].acState.mode &&\n    $('Select rows from a table').item.json.targetTemperature ==   $json.result[0].acState.targetTemperature \n  )\n  ||\n  $json.result[0].time.secondsAgo > 900\n)\n}}",
              "rightValue": "={{ $json.result[0].time.secondsAgo }} > 1200",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        -832,
        80
      ],
      "id": "60d9a025-6345-4bbe-8ae8-36dd5d845844",
      "name": "If1",
      "alwaysOutputData": false
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\"thinking\":\"The indoor humidity is 63\u202f% and the user wants ~45\u202f%. In dry mode each \u00b0C lower in set\u2011point generally pulls about 2\u20133\u202f% humidity, so a drop of ~8\u20139\u202f\u00b0C would bring the humidity closer to target. The current set\u2011point is 28\u202f\u00b0C, so lowering it to 26\u202f\u00b0C should give enough dehumidification without over\u2011cooling the room. The AC remains on and in dry mode.\",\"on\":true,\"mode\":\"dry\",\"targetTemperature\":26}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        -432,
        288
      ],
      "id": "47ba3d0a-539c-4b6e-8a1c-006cf18b38ac",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "schema": {
          "__rl": true,
          "value": "public",
          "mode": "list",
          "cachedResultName": "public"
        },
        "table": {
          "__rl": true,
          "value": "sensibo",
          "mode": "list",
          "cachedResultName": "sensibo"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "on": "={{ $json.output.on }}",
            "mode": "={{ $json.output.mode }}",
            "targetTemperature": "={{ $json.output.targetTemperature }}",
            "timestamp": "={{ $now }}",
            "thinking": "={{ $json.output.thinking }}",
            "id": "={{ $now.toMillis() }}"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "mode",
              "displayName": "mode",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "thinking",
              "displayName": "thinking",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "on",
              "displayName": "on",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "boolean",
              "canBeUsedToMatch": true
            },
            {
              "id": "targetTemperature",
              "displayName": "targetTemperature",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true
            },
            {
              "id": "timestamp",
              "displayName": "timestamp",
              "required": true,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        -240,
        64
      ],
      "id": "a4bc2a54-bf85-4a54-8e67-9acd9356b842",
      "name": "Insert rows in a table",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "select",
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "table": {
          "__rl": true,
          "value": "sensibo",
          "mode": "list",
          "cachedResultName": "sensibo"
        },
        "limit": 1,
        "sort": {
          "values": [
            {
              "column": "timestamp",
              "direction": "DESC"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        -1616,
        80
      ],
      "id": "5d2013d7-bd7d-4938-aab8-e538b2806cc1",
      "name": "Select rows from a table",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": "pdevine/gpt-oss:20b-offload",
        "options": {
          "temperature": 0.1,
          "keepAlive": "6m",
          "numPredict": 2000
        }
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOllama",
      "typeVersion": 1,
      "position": [
        -576,
        272
      ],
      "id": "6bb27745-d73a-473f-aa73-4d8477c65c83",
      "name": "Ollama Chat Model",
      "credentials": {
        "ollamaApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "sendTo": "username@youremail.com",
        "subject": "Sensibo status",
        "message": "=on: {{ $json.message.content['on'] }}\non: {{ $json.message.content['mode'] }}\non: {{ $json.message.content['targetTemperature'] }}\n---\n\nReasoning: {{ $json.message.content['thinking'] }}\n---\nLast state: {{ JSON.stringify($('Get States').item.json.result[0]) }}\n\nLast measurements: {{ JSON.stringify($('Get neasurements').item.json.result) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        0,
        -112
      ],
      "id": "93ac028d-7927-49b0-9b40-70400c114c44",
      "name": "Send a message1",
      "alwaysOutputData": false,
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "ad57b76a-3d01-49a8-b9e7-9d07c97979ab",
              "leftValue": "={{ $('Message a model').item.json.message.content['on'] }}",
              "rightValue": "={{ $('Get States').item.json.result[0].acState.on }}",
              "operator": {
                "type": "boolean",
                "operation": "notEquals"
              }
            },
            {
              "id": "cb8efc18-7791-4cb2-b0d5-4629f00cccf4",
              "leftValue": "={{ $('Message a model').item.json.message.content['mode'] }}",
              "rightValue": "={{ $('Get States').item.json.result[0].acState.mode }}",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              }
            },
            {
              "id": "6ac1d012-9162-4ef7-ac21-fd23e8ae6fa8",
              "leftValue": "={{ $('Message a model').item.json.message.content['targetTemperature'] }}",
              "rightValue": "={{ $('Get States').item.json.result[0].acState.targetTemperature }}",
              "operator": {
                "type": "number",
                "operation": "notEquals"
              }
            }
          ],
          "combinator": "or"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        256,
        -112
      ],
      "id": "ade8269c-f3ef-4295-9f48-bf7803376853",
      "name": "If2"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://home.sensibo.com/api/v2/pods/<pod-id>/acStates",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"acState\": {\n    \"on\": {{ $('Message a model').item.json.message.content['on'] }},\n    \"targetTemperature\": {{ $('Message a model').item.json.message.content['targetTemperature'] }},\n    \"temperatureUnit\": \"{{ $('Get States').item.json.result[1].acState.temperatureUnit }}\",\n\n    \"mode\": \"{{ $('Message a model').item.json.message.content['mode'] }}\"\n\n\n  }\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        592,
        -128
      ],
      "id": "3b95855c-fe38-40b9-8c69-bb13de82f432",
      "name": "Change state1",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "message",
        "guildId": {
          "__rl": true,
          "value": "<discord-channel-id>",
          "mode": "list",
          "cachedResultName": "JetsonBot experiments",
          "cachedResultUrl": "https://discord.com/channels/<discord-channel-id>"
        },
        "channelId": {
          "__rl": true,
          "value": "1418452020725153824",
          "mode": "list",
          "cachedResultName": "ac-feed",
          "cachedResultUrl": "https://discord.com/channels/<discord-channel-id>/1418452020725153824"
        },
        "content": "=on: {{ $json['on'] }}\nmode: {{ $json['mode'] }}\ntargetTemperture: {{ $json['targetTemperature'] }}\u2103\n---\n\nReasoning: {{ $json.thinking }}\n---\n# States:\n\nMain room measurements:\n{{ JSON.stringify($('Get States').item.json.result[0]) }} \n\n\n\nRoom 1 Temperture: {{ $('HTTP Request1').item.json.result[0].motionSensors[0].measurements.temperature }}\u2103\nRoom 1 Humidity: {{ $('HTTP Request1').item.json.result[0].motionSensors[0].measurements.humidity }}\n\nRoom 2 Temperature: {{ $('HTTP Request1').item.json.result[0].motionSensors[1].measurements.temperature }}\u2103\nRoom 2 Humidity: {{ $('HTTP Request1').item.json.result[0].motionSensors[1].measurements.humidity }}\n\n",
        "options": {}
      },
      "type": "n8n-nodes-base.discord",
      "typeVersion": 2,
      "position": [
        112,
        64
      ],
      "id": "933917f0-9ba8-448b-a1d0-732ed833ee0b",
      "name": "Send a message2",
      "credentials": {
        "discordBotApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=# States:\n\nMain room measurements:\n{{ JSON.stringify($('Get States').item.json.result[0]) }} \n\nMain room Measurements, by which the AC decides to set on \"sleep mode\"\nThese can be higher than desired temperature. \n\n# Bedrooms measurements:\nI expected these to be around 27 degrees and around 57% moisture.\nWhen they are not - you need to make sure to fix it.\n\nBedroom 1 Temperture: {{ $('HTTP Request1').item.json.result[0].motionSensors[0].measurements.temperature }}\nBedroom 1 Humidity: {{ $('HTTP Request1').item.json.result[0].motionSensors[0].measurements.humidity }}\n\nBedroom 2 Temperature: {{ $('HTTP Request1').item.json.result[0].motionSensors[1].measurements.temperature }}\nBedroom 2 Humidity: {{ $('HTTP Request1').item.json.result[0].motionSensors[1].measurements.humidity }}\n\nTime: \n{{  $('Schedule Trigger').item.json.timestamp }}\n\nRemember, my target is ~57% and 27 degrees in bedrooms to the comfortable range of (26.5-27.5) and I don't care about the main room at all (Usually ~3 degress higher).\nUse only 24 degrees (For the main room), on dry mode.\nGive the AC 10 minutes time off after it started working.\nThis is central AC unit.\n\nRespond in json: { \"thinking\": \"...\", \"on\": true/false, \"mode\":\"dry\",\n\"targetTemperature\": ## }\n\nStart replying with {",
        "hasOutputParser": true,
        "messages": {
          "messageValues": [
            {
              "message": "You are my AC manager.\n\nLook at the history of my AC measurements at Sensibo and decide if I should enable it or disable it.  \n\nConsider the time, and that it is our awake time, but we are during Yom Kipur holiday and have no remote control - so take our health into consideration. Also, too hot or too cold (Or too humid) could wake us up and is not healthy. 27 percentage at Rooms is comfortable (26.5-27.5), 57% is great, above 60% it is humid. \n\nDue central AC, the Main room will be higher than the desired temperature and that is ok and expected.   \n\nConsider the Main temperature when deciding what temperature to send, snd Room temperature when deciding what is comfortable.\n\n\nRespond in json: { \"thinking\": \"...\", \"on\": true/false, \"mode\":\"dry\", \"targetTemperature\": ## }  \n\nStart replying with {"
            }
          ]
        },
        "batching": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.7,
      "position": [
        -576,
        64
      ],
      "id": "f8f45e7d-2c18-43c9-9b1b-efdb558914dd",
      "name": "Basic LLM Chain"
    }
  ],
  "connections": {
    "Get neasurements": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Select rows from a table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get States": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Change state",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If1": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Insert rows in a table": {
      "main": [
        [
          {
            "node": "Send a message2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select rows from a table": {
      "main": [
        [
          {
            "node": "Get neasurements",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ollama Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Send a message1": {
      "main": [
        [
          {
            "node": "If2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If2": {
      "main": [
        [
          {
            "node": "Change state1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "Get States",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message2": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Insert rows in a table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "timezone": "Asia/Jerusalem",
    "callerPolicy": "workflowsFromSameOwner"
  },
  "versionId": "27ab4fc0-e52c-4a35-b105-61a224e30319",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "e1nDj2yOkVKDjRES",
  "tags": [
    {
      "createdAt": "2025-08-31T20:30:37.934Z",
      "updatedAt": "2025-08-31T20:30:37.934Z",
      "id": "XoeDgcbenMTehkbm",
      "name": "Home"
    }
  ]
}

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

Sensibo-DAWN. Uses httpRequest, openAi, outputParserStructured, postgres. Scheduled trigger; 17 nodes.

Source: https://github.com/OriNachum/jetson-community-automations/blob/a8c379039d050d07c20bb46bc04549a3ce85245c/flows/sensibo/sensibo-dawn/n8n.json — 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

Sensibo-DAY. Uses httpRequest, openAi, outputParserStructured, postgres. Scheduled trigger; 17 nodes.

HTTP Request, OpenAI, Output Parser Structured +5
AI & RAG

Sensibo-DARKNESS. Uses httpRequest, openAi, outputParserStructured, postgres. Scheduled trigger; 17 nodes.

HTTP Request, OpenAI, Output Parser Structured +5
AI & RAG

Sensibo-DUSK. Uses httpRequest, openAi, outputParserStructured, postgres. Scheduled trigger; 17 nodes.

HTTP Request, OpenAI, Output Parser Structured +5
AI & RAG

Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing

WordPress, OpenAI, Perplexity +8
AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13