{
  "name": "Compose reply draft in Gmail with OpenAI assistant",
  "nodes": [
    {
      "id": "ad5b12df-3bdf-4672-99a7-0034664f29ef",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1180,
        120
      ],
      "parameters": {
        "width": 420.4803040774015,
        "height": 189.69151356225348,
        "content": "## Reply draft with OpenAI Assistant\nThis workflow automatically transfers content of incoming email messages with specific labels into OpenAI Assitant and returns reply draft. After draft is composed"
      }
    },
    {
      "id": "80a93a48-0576-4dfb-817a-34cbc215307a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        120
      ],
      "parameters": {
        "width": 451.41125086385614,
        "height": 313.3056033573073,
        "content": "### Schedule trigger and get emails\nRun the workflow in equal intervals and check for threads with specific labels (trigger labels)."
      }
    },
    {
      "id": "0dba2603-8012-47d1-8c60-4068924b74cd",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1180,
        340
      ],
      "parameters": {
        "width": 421.0932411886662,
        "height": 257.42916378714597,
        "content": "## ⚠️ Note\n\n1. Complete video guide for this workflow is available [on my YouTube](https://youtu.be/a8Dhj3Zh9vQ). \n2. Remember to add your credentials and configure nodes (covered in the video guide)."
      }
    },
    {
      "id": "4eb67d90-b834-48f6-8d8a-ed0a9d8321fd",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        520,
        120
      ],
      "parameters": {
        "width": 381.6458068293894,
        "height": 313.7892229150129,
        "content": "### Generate reply\nTransfer email content to OpenAI Assitant and return AI-generated reply.\n"
      }
    },
    {
      "id": "fdb6e16b-5f42-4872-bf63-b18a14220cdf",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1160,
        120
      ],
      "parameters": {
        "width": 219.88389496558554,
        "height": 314.75072291501283,
        "content": "### Create HTML message\nConvert incoming Markdown from OpenAI Assistant into HTML content."
      }
    },
    {
      "id": "111e4276-7f63-4b11-92be-fd9de7e23f05",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1400,
        120
      ],
      "parameters": {
        "width": 461.3148409669012,
        "height": 314.75072291501283,
        "content": "### Build and encode message\nCreate raw message in RFC standard and encode it into base64 string (please see [Gmail API reference](https://developers.google.com/gmail/api/reference/rest/v1/users.draft"
      }
    },
    {
      "id": "0d377266-7fa2-43c4-9259-e8611d52df41",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        120
      ],
      "parameters": {
        "width": 219.88389496558554,
        "height": 314.75072291501283,
        "content": "### Insert reply draft\nAdd reply draft from OpenAI Assistant to specific Gmail thread."
      }
    },
    {
      "id": "c743486b-82e0-42f4-bd41-fad6115ac520",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2120,
        120
      ],
      "parameters": {
        "width": 219.88389496558554,
        "height": 314.75072291501283,
        "content": "### Remove label\nDelete trigger label from the Gmail thread."
      }
    },
    {
      "id": "dfe99c2e-a8e6-48de-a11d-54adaf98a7fe",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 219.88389496558554,
        "height": 314.75072291501283,
        "content": "### Return message content\nRetrieve content of the last message in the thread."
      }
    },
    {
      "id": "6f228048-4067-494a-af44-080237c2555c",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        340
      ],
      "parameters": {
        "width": 470.88389496558545,
        "height": 314.75072291501283,
        "content": "### Get last message from thread\nReturn all messages for a single thread and pass for further processing only the last one."
      }
    },
    {
      "id": "bea0ea14-6198-4022-8ddc-a0c9f895d46e",
      "name": "Remove AI label from email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2180,
        260
      ]
    },
    {
      "id": "dc9b5760-1669-4f29-b28d-73cd417775b4",
      "name": "Add email draft to thread",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1940,
        260
      ]
    },
    {
      "id": "dbbb607b-701f-49cd-b872-96522abde5b7",
      "name": "Convert raw to base64",
      "type": "n8n-nodes-base.code",
      "position": [
        1680,
        260
      ]
    },
    {
      "id": "9114d833-1c6a-47f1-bc8d-12fb8e17218e",
      "name": "Build email raw",
      "type": "n8n-nodes-base.set",
      "position": [
        1480,
        260
      ]
    },
    {
      "id": "67c1b6ca-d419-45a9-a1d5-2a6ac157454f",
      "name": "Convert response to HTML",
      "type": "n8n-nodes-base.markdown",
      "position": [
        1220,
        260
      ]
    },
    {
      "id": "97be72d7-20dd-4829-bf1c-f738fb6a8a21",
      "name": "Map fields for further processing",
      "type": "n8n-nodes-base.set",
      "position": [
        980,
        260
      ]
    },
    {
      "id": "545a4296-5307-42ee-8935-2886338e2518",
      "name": "Ask OpenAI Assistant",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        580,
        260
      ]
    },
    {
      "id": "4f326fec-e4bb-42dc-9f26-4a3d8ce86f24",
      "name": "Get single message content",
      "type": "n8n-nodes-base.gmail",
      "position": [
        60,
        120
      ]
    },
    {
      "id": "faeb879f-db00-47b7-8995-9fb9025079cf",
      "name": "Return last message in thread",
      "type": "n8n-nodes-base.limit",
      "position": [
        280,
        460
      ]
    },
    {
      "id": "8085cb54-3c85-4450-9e42-825a9d467d6b",
      "name": "Get thread messages",
      "type": "n8n-nodes-base.gmail",
      "position": [
        60,
        460
      ]
    },
    {
      "id": "8a3c1885-8a05-4357-85ea-03cb9e8b24fa",
      "name": "Loop over threads",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -200,
        260
      ]
    },
    {
      "id": "74197fae-823e-47bc-a1c9-b2fbe90b1171",
      "name": "Get threads with specific labels",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -460,
        260
      ]
    },
    {
      "id": "a3360f69-b8e6-4ef8-933a-352243ab9125",
      "name": "Schedule trigger (1 min)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -680,
        260
      ]
    }
  ],
  "connections": {
    "Build email raw": {
      "main": [
        [
          {
            "node": "Convert raw to base64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop over threads": {
      "main": [
        [
          {
            "node": "Get single message content",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get thread messages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get thread messages": {
      "main": [
        [
          {
            "node": "Return last message in thread",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ask OpenAI Assistant": {
      "main": [
        [
          {
            "node": "Map fields for further processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert raw to base64": {
      "main": [
        [
          {
            "node": "Add email draft to thread",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert response to HTML": {
      "main": [
        [
          {
            "node": "Build email raw",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule trigger (1 min)": {
      "main": [
        [
          {
            "node": "Get threads with specific labels",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add email draft to thread": {
      "main": [
        [
          {
            "node": "Remove AI label from email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get single message content": {
      "main": [
        [
          {
            "node": "Ask OpenAI Assistant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Return last message in thread": {
      "main": [
        [
          {
            "node": "Loop over threads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get threads with specific labels": {
      "main": [
        [
          {
            "node": "Loop over threads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Map fields for further processing": {
      "main": [
        [
          {
            "node": "Convert response to HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}