{
  "name": "Discord to Google Sheets task manager with GPT prioritization and deep work focus",
  "nodes": [
    {
      "id": "2afe8042-1ffa-4bf8-9404-86fdabae691d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -848,
        -16
      ]
    },
    {
      "id": "fa169bce-015b-419c-b915-760e187a5bdf",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -288,
        -16
      ]
    },
    {
      "id": "66fe1c4a-8ab2-44ae-9870-8ce45b268fee",
      "name": "clean data",
      "type": "n8n-nodes-base.set",
      "position": [
        128,
        -16
      ]
    },
    {
      "id": "5f248635-6e1c-4b15-8b2b-008bf1ded362",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1360,
        -976
      ],
      "parameters": {
        "width": 464,
        "height": 800,
        "content": "# 📋 AI-Powered Discord Task Manager\n\n## How it works\nThis workflow automatically manages your tasks from Discord to Google Sheets:\n1. **Hourly sync**: Fetches new tasks from Discord's `tasks-to-do` ch"
      }
    },
    {
      "id": "5ba9ad2b-088c-47c1-acfa-4db7ed32cb49",
      "name": "get data - tasks Channel",
      "type": "n8n-nodes-base.discord",
      "position": [
        -480,
        -16
      ]
    },
    {
      "id": "7ae71a6b-2620-4827-92f5-047f63124590",
      "name": "Append row in task sheet",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        640,
        160
      ]
    },
    {
      "id": "a5b32b35-0139-4f9b-a066-6c62f73a35e5",
      "name": "ai task organizer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        304,
        -16
      ]
    },
    {
      "id": "f8f647e5-2dd5-47cb-b904-20d9dd4b29f3",
      "name": "Get tasks to do",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1408,
        -16
      ]
    },
    {
      "id": "9f94083e-6331-408e-9c52-55706e054586",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1568,
        -16
      ]
    },
    {
      "id": "261bf43f-baef-402f-814a-5efe396328cf",
      "name": "react to confirm",
      "type": "n8n-nodes-base.discord",
      "position": [
        640,
        -16
      ]
    },
    {
      "id": "85aed054-a1e3-4b19-bc3c-ad269b7c307c",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1904,
        32
      ]
    },
    {
      "id": "362ba357-f331-4743-bee7-bfe2bdb15a1e",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1728,
        -16
      ]
    },
    {
      "id": "2c277cec-cb15-43fb-8201-67fe9c7a3119",
      "name": "Send a message",
      "type": "n8n-nodes-base.discord",
      "position": [
        2544,
        48
      ]
    },
    {
      "id": "650d3104-ed82-4039-bf97-b1ea453e835e",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2400,
        32
      ]
    },
    {
      "id": "495a3744-d420-4eae-a87d-83e146326e61",
      "name": "Update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1680,
        -960
      ]
    },
    {
      "id": "e80f1e9f-227b-4481-9071-7f51f8d26afa",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1104,
        -16
      ]
    },
    {
      "id": "6c4a3562-cdd8-49c9-9650-8d0d43c95699",
      "name": "gpt 5 mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1904,
        176
      ]
    },
    {
      "id": "9068a921-57da-4fbb-9003-33e9a4cbe273",
      "name": "get checked ones",
      "type": "n8n-nodes-base.discord",
      "position": [
        1280,
        -960
      ]
    },
    {
      "id": "ccc44f67-8e8b-450d-bbb3-6eaff9de549d",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        784,
        -16
      ]
    },
    {
      "id": "df55e511-3fe7-4a80-b009-bad5f0cb3512",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -1056
      ],
      "parameters": {
        "width": 928,
        "height": 288,
        "content": "## ✅ Sync Completed Tasks\nFinds Discord messages with ✅ reactions and marks them completed in sheets (sets Status = \"Completed\", Priority = 0)"
      }
    },
    {
      "id": "0cf6b3ea-88ab-4a82-a47a-17b280681e8c",
      "name": "Filter for checked ones",
      "type": "n8n-nodes-base.filter",
      "position": [
        1488,
        -960
      ]
    },
    {
      "id": "f350e297-fa09-4350-bbec-982820c4d02a",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        1104,
        -960
      ]
    },
    {
      "id": "afa05f6e-9a75-48ca-b3dd-316478761eb7",
      "name": "limit iteration",
      "type": "n8n-nodes-base.limit",
      "position": [
        1248,
        -16
      ]
    },
    {
      "id": "21b333e4-6c87-40b0-b389-3f986570516c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -144
      ],
      "parameters": {
        "width": 1648,
        "height": 448,
        "content": "## 🔥 Daily Priority List\nGets all in-progress tasks, uses AI to pick top 6 (3 high-energy + 3 low-energy), and posts to Discord"
      }
    },
    {
      "id": "4d679a96-d93f-4a85-a16e-d35a0028cd98",
      "name": "if message is recorded already",
      "type": "n8n-nodes-base.if",
      "position": [
        -64,
        -16
      ]
    },
    {
      "id": "0eca6b15-79da-4db8-9df3-e5592d6c6403",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        -144
      ],
      "parameters": {
        "width": 880,
        "height": 464,
        "content": "## 🤖 AI Task Processor\nAnalyzes task text and assigns priority, impact, energy level, and category using mission-aligned AI prompts"
      }
    },
    {
      "id": "69231db2-6ff9-4fd1-abc2-ccbc8c01c79a",
      "name": "4o",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        304,
        160
      ]
    },
    {
      "id": "fb3aa311-a14f-427f-a9a4-373f1aeb5e85",
      "name": "Limit1",
      "type": "n8n-nodes-base.limit",
      "position": [
        1088,
        -640
      ]
    },
    {
      "id": "290711c7-b343-4148-a325-7889a90757b0",
      "name": "get completed rows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1328,
        -640
      ]
    },
    {
      "id": "7d65d4ba-0548-4c14-bde8-387e3f1a320f",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -464
      ],
      "parameters": {
        "width": 928,
        "height": 304,
        "content": "## 🗑️ Cleanup Loop\nDeletes one completed row at a time until none remain (loops until Status=\"Completed\" doesn't exist)"
      }
    },
    {
      "id": "83aa3347-9d3c-4965-b4e4-5a689c2279e3",
      "name": "delete completed rows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1760,
        -336
      ]
    },
    {
      "id": "7160deb2-4272-4e69-9ce7-01ee9b0d9536",
      "name": "get completed rows1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1248,
        -352
      ]
    },
    {
      "id": "6dd2a002-0a2e-4674-a850-cc2a4dc0cac1",
      "name": "Limit3",
      "type": "n8n-nodes-base.limit",
      "position": [
        1088,
        -352
      ]
    },
    {
      "id": "22d0ab60-d108-455d-b31b-28fda3448d4e",
      "name": "get only one row",
      "type": "n8n-nodes-base.limit",
      "position": [
        1408,
        -352
      ]
    },
    {
      "id": "a274eac7-bf44-492b-b168-82da4cdc090e",
      "name": "if completed does not exist",
      "type": "n8n-nodes-base.if",
      "position": [
        1584,
        -352
      ]
    },
    {
      "id": "4e5129b2-c867-4a21-8069-369ef4d8c7db",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -752
      ],
      "parameters": {
        "width": 672,
        "height": 272,
        "content": "## 📦 Archive Completed\nMoves completed tasks from Tasks sheet to completed tasks sheet, then deletes from active list"
      }
    },
    {
      "id": "be515c07-4f3a-4239-9304-61ab8c7db251",
      "name": "move completed rows to completed sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1568,
        -640
      ]
    },
    {
      "id": "bc36dc5c-bb60-44f4-8cb1-779c1966d7f9",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        -144
      ],
      "parameters": {
        "width": 544,
        "height": 464,
        "content": "## 📥 Input: Fetch New Tasks and set discord IDs\nPulls unprocessed messages from Discord every hour\nSet your IDs in the set node. Keep items as objects for this workflow to run smooth"
      }
    },
    {
      "id": "24044986-5a4c-4767-ab94-fc6acec14d75",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        -144
      ],
      "parameters": {
        "width": 352,
        "height": 464,
        "content": "## 💾 Save to Sheets\nAppends processed task to Google Sheets and reacts to Discord message to confirm"
      }
    },
    {
      "id": "6be448c0-9a71-4ccf-bc45-aa7cc1ed0027",
      "name": "split if more than 2,000 chars",
      "type": "n8n-nodes-base.code",
      "position": [
        2208,
        32
      ]
    },
    {
      "id": "b85d69f1-1a12-4db3-8c40-e5cd8f253636",
      "name": "Set discord IDs here",
      "type": "n8n-nodes-base.set",
      "position": [
        -672,
        -16
      ]
    }
  ],
  "connections": {
    "4o": {
      "ai_languageModel": [
        [
          {
            "node": "ai task organizer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "limit iteration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "get checked ones",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit1": {
      "main": [
        [
          {
            "node": "get completed rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit3": {
      "main": [
        [
          {
            "node": "get completed rows1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "split if more than 2,000 chars",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "clean data": {
      "main": [
        [
          {
            "node": "ai task organizer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "gpt 5 mini": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get tasks to do": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "limit iteration": {
      "main": [
        [
          {
            "node": "Get tasks to do",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "if message is recorded already",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Set discord IDs here",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get checked ones": {
      "main": [
        [
          {
            "node": "Filter for checked ones",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get only one row": {
      "main": [
        [
          {
            "node": "if completed does not exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "react to confirm": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ai task organizer": {
      "main": [
        [
          {
            "node": "react to confirm",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get completed rows": {
      "main": [
        [
          {
            "node": "move completed rows to completed sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Limit1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get completed rows1": {
      "main": [
        [
          {
            "node": "get only one row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set discord IDs here": {
      "main": [
        [
          {
            "node": "get data - tasks Channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "delete completed rows": {
      "main": [
        [
          {
            "node": "get completed rows1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter for checked ones": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in task sheet": {
      "ai_tool": [
        [
          {
            "node": "ai task organizer",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "get data - tasks Channel": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "if completed does not exist": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "delete completed rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "if message is recorded already": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "clean data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "split if more than 2,000 chars": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "move completed rows to completed sheet": {
      "main": [
        [
          {
            "node": "Limit3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}