{
  "name": "Automated daily briefing with Todoist, Google Calendar & GPT-4o via Gmail",
  "nodes": [
    {
      "id": "9f7abaa2-1d99-488d-a2f6-ce63af3dd509",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        400,
        -20
      ]
    },
    {
      "id": "3bccfb3e-2e86-4c0b-8bce-891b6ad3b969",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        980,
        -20
      ]
    },
    {
      "id": "e21eed99-cc0b-4224-b7f0-e85f62dd6c78",
      "name": "Get many tasks",
      "type": "n8n-nodes-base.todoist",
      "position": [
        -320,
        80
      ]
    },
    {
      "id": "009b1143-306d-4bad-bea7-47df8771b499",
      "name": "Get many events",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        -320,
        -120
      ]
    },
    {
      "id": "27d34f96-ca61-44bf-8989-bbca2bee0069",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        200,
        -20
      ]
    },
    {
      "id": "987c7654-7edc-4aea-b2be-f0ce846cf6fd",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -20,
        -20
      ]
    },
    {
      "id": "2b69ae00-18c0-4778-9702-23a18e300573",
      "name": "Convert OpenAI Text to HTML",
      "type": "n8n-nodes-base.code",
      "position": [
        760,
        -20
      ]
    },
    {
      "id": "2651477d-bad3-4fc7-9666-4a11a87bc4f8",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -640,
        -20
      ]
    },
    {
      "id": "d032cb5e-11bb-445c-ab31-b357ba8c3044",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1100,
        -180
      ],
      "parameters": {
        "width": 380,
        "height": 440,
        "content": "## 📌 **Daily Briefing Automation**\n\nThis workflow fetches today's calendar events and tasks from Google Calendar and Todoist, formats them using GPT-4o, converts the summary to HTML, and emails it aut"
      }
    },
    {
      "id": "20aa46f5-e9e9-4259-8658-a369938e7d04",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        -180
      ],
      "parameters": {
        "width": 180,
        "height": 440,
        "content": "⏰ Triggers the workflow at 6:00 AM daily.\nUse this to automate your morning routine prep.\n"
      }
    },
    {
      "id": "00f26917-3006-40a8-b798-63d4d741f360",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -360,
        -260
      ],
      "parameters": {
        "width": 180,
        "height": 180,
        "content": "📅 Fetches all Google Calendar events for the day.\nFilters are configured using your linked Gmail calendar.\n"
      }
    },
    {
      "id": "f1b0537b-06f8-4840-9a18-b748da7d2076",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -360,
        160
      ],
      "parameters": {
        "width": 180,
        "height": 220,
        "content": "\n\n\n\n\n\n\n📝 Fetches all Todoist tasks under a specified project.\nMake sure `projectId` is up-to-date.\n"
      }
    },
    {
      "id": "5e0e9272-1834-4108-ad04-be81be4d32c6",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        200
      ],
      "parameters": {
        "width": 180,
        "height": 140,
        "content": "🔀 Merges calendar events and tasks.\nRequired to feed both datasets into a single Code node.\n"
      }
    },
    {
      "id": "e6c7821c-1c24-4dc3-aef9-387efc2f9ec5",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        200
      ],
      "parameters": {
        "width": 180,
        "height": 140,
        "content": "🧠 Separates & formats calendar events and tasks.\nReturns structured strings for GPT to summarize.\n"
      }
    },
    {
      "id": "c2de93aa-9e1c-4dd4-984f-72de1f4323bd",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        200
      ],
      "parameters": {
        "width": 180,
        "height": 140,
        "content": "🤖 Sends task and calendar summary to GPT-4o.\nPrompt includes layout guidance and markdown formatting.\n"
      }
    },
    {
      "id": "e0b8b41b-75bd-4455-b94e-919fb3be5d9a",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        200
      ],
      "parameters": {
        "width": 180,
        "height": 140,
        "content": "🧱 Converts markdown-style GPT output into clean HTML.\nEnsures line breaks, bold headings, and emojis are email-friendly.\n"
      }
    },
    {
      "id": "4b6ae3f4-8490-4097-87d7-5b1bfbcf90ad",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        200
      ],
      "parameters": {
        "width": 180,
        "height": 140,
        "content": "📧 Sends the final HTML email to your inbox.\nEmail subject: “Morning Briefings”\n"
      }
    },
    {
      "id": "8eb46a16-e528-488e-be02-fdd00d1220c0",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -80
      ],
      "parameters": {
        "width": 1280,
        "height": 440,
        "content": ""
      }
    }
  ],
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many tasks": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Get many events": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Convert OpenAI Text to HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get many events",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get many tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert OpenAI Text to HTML": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}