{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "db46a99c-a87d-4203-925f-f94fed274bbe",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 1200,
        "height": 760,
        "content": "### 4. **Generate AI Response**\n- Text prompt to OpenAI:  \n  ```\n  subject: {{ $json.subject }}  \n  body: {{ $json.body.content }}\n  ```\n\n- System prompt:  \n  > You are a personal assistant helping respond to emails. I am an AI automation expert specializing in helping small and medium-size businesses automate processes. Create a short response to the email. Sign the email as Robert Breen.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2b29c366-caf6-41e5-bf09-a6f60ab9d315",
      "name": "Tool: Inject Creativity",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        600,
        520
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "df07d826-251e-4b9f-927f-637280847891",
      "name": "Parser: Extract JSON from Idea",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        800,
        480
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"body\": \"\"\n  }\n]\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "3f7eeefc-a208-4020-8b6a-7dc536126daa",
      "name": "openai",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        480,
        500
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c1d3fd0d-b84e-4346-aa2e-3c3b8cf358e3",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        0
      ],
      "parameters": {
        "width": 980,
        "height": 760,
        "content": "### 1. **Trigger**  \nUse the Manual Trigger to test or schedule execution with a cron node.\n\n### 2. **Filter Emails from Today**\nA Code node outputs today's date in the proper `yyyy-mm-dd` format.\n\n```javascript\nconst today = new Date();\ntoday.setHours(0, 0, 0, 0);\nreturn [{ json: { searchQuery: `received:${today.toISOString().split('T')[0]}` } }];\n```\n\n### 3. **Search and Filter Outlook Messages**\n- Uses the Outlook node with a search query like:  \n  `received:2025-08-06 -from:rbreen@ynteractive.com` (Update to your email address)"
      },
      "typeVersion": 1
    },
    {
      "id": "af0105d8-5b95-4d82-8735-acb6358f607b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1340,
        0
      ],
      "parameters": {
        "color": 3,
        "width": 760,
        "height": 760,
        "content": "### 5. **Review with gotoHuman**\n- Submit AI output for human approval using the `gotoHuman` node.\n- The output schema should match the Review Template fields (e.g., \"email\", \"OriginalEmail\").\n\n### 6. **IF Node Decision**\n- If status is `approved`, send reply\n- If not, return to loop for revision or skip\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "be573205-24d6-49e7-924e-d9bfd1879505",
      "name": "Test",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -800,
        420
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "807aecbb-fdc0-4a6b-9fbb-186aefdad240",
      "name": "Output Today's Date",
      "type": "n8n-nodes-base.code",
      "position": [
        -520,
        560
      ],
      "parameters": {
        "jsCode": "const today = new Date();\ntoday.setHours(0, 0, 0, 0); // Normalize to start of day\n\nconst formattedDate = today.toISOString().split('T')[0]; // \"2025-08-06\"\n\nreturn [\n  {\n    json: {\n      searchQuery: `received:${formattedDate}`\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "b4d9154b-c7e8-437b-b6d8-ed22327bfccf",
      "name": "AI Agent: Create caption for linkedin",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        560,
        300
      ],
      "parameters": {
        "text": "=subject: {{ $json.subject }} Body: {{ $json.body.content }}",
        "options": {
          "systemMessage": "=You are a personal assistant helping respond to emails. I am an ai automation expert specializing in helping small and medium size businesses automate processes. Create a short response to the email that you are analyzing. \n\nThe email that you write should be written to the sender who sent the email to us. \n\nSign the email as Robert Breen\n\noutput the data like this. \n\n[\n  {\n    \"body\": \"\"\n  }\n]\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "41d1ebef-9808-4d0b-ae30-2e8cd0ae597a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 2980,
        "height": 200,
        "content": "# \ud83e\udd16AI-Powered Outlook Email Assistant with GoToHuman Approval Workflow\n## \ud83d\udcec Need Help?\n\nMessage me on [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/) \nor email me at **robert@ynteractive.com**\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a27db7b8-96b1-425e-98d9-e1dc5f939478",
      "name": "Microsoft Outlook",
      "type": "n8n-nodes-base.microsoftOutlook",
      "position": [
        -280,
        420
      ],
      "parameters": {
        "limit": 2,
        "output": "raw",
        "options": {},
        "filtersUI": {
          "values": {
            "search": "={{ $json.searchQuery }} -from:rbreen@ynteractive.com\n",
            "filterBy": "search"
          }
        },
        "operation": "getAll"
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "3830b457-613f-4709-b70a-ae5d089d8a83",
      "name": "gotoHuman",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        1460,
        300
      ],
      "parameters": {
        "fields": {
          "value": {
            "email": "={{ $json.output[0].body }}",
            "OriginalEmail": "={{ $('Microsoft Outlook').item.json.body.content }}"
          },
          "schema": [
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email (text)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "OriginalEmail",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "OriginalEmail (emailHtml)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "additionalFields": {},
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list",
          "value": "7nYfIV9vrefvuHcccGEB",
          "cachedResultName": "Email Responses (7nYfIV9vrefvuHcccGEB)"
        }
      },
      "credentials": {
        "gotoHumanApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "6484d15f-94d2-4078-93de-beee1985e085",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -40,
        560
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "07ef9661-0df9-41a9-b412-3f2af84bba43",
      "name": "Microsoft Outlook1",
      "type": "n8n-nodes-base.microsoftOutlook",
      "position": [
        1920,
        520
      ],
      "parameters": {
        "message": "={{ $json.responseValues.email.value }}",
        "options": {},
        "messageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Microsoft Outlook').item.json.id }}"
        },
        "operation": "reply"
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5b6f8868-ac73-44f0-9eaa-64250abab4d6",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        1700,
        300
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "8516d970-6327-47de-83ab-1945acd928b2",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.response }}",
              "rightValue": "approved"
            }
          ]
        }
      },
      "typeVersion": 2.2
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Microsoft Outlook1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test": {
      "main": [
        [
          {
            "node": "Output Today's Date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "openai": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent: Create caption for linkedin",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "gotoHuman": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "AI Agent: Create caption for linkedin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Microsoft Outlook": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Microsoft Outlook1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Output Today's Date": {
      "main": [
        [
          {
            "node": "Microsoft Outlook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tool: Inject Creativity": {
      "ai_tool": [
        [
          {
            "node": "AI Agent: Create caption for linkedin",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Parser: Extract JSON from Idea": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent: Create caption for linkedin",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent: Create caption for linkedin": {
      "main": [
        [
          {
            "node": "gotoHuman",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}