{
  "name": "Automated interview scheduling with GPT-4o and Google Calendar chat bot",
  "nodes": [
    {
      "id": "173ca923-85be-44b1-b786-c2bd752d7b58",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        140,
        -340
      ]
    },
    {
      "id": "43fd8892-abe7-4d68-b37a-2e63bbb5d9d7",
      "name": "Window Buffer Memory2",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        340,
        -340
      ]
    },
    {
      "id": "b505d8f2-f49b-4879-a5e0-2a39dad4266b",
      "name": "OpenAI Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1040,
        -380
      ]
    },
    {
      "id": "ea6d87da-a17a-4660-84d1-7f2201bd9760",
      "name": "Run Get Availability",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        540,
        -300
      ]
    },
    {
      "id": "b1dc95fc-af28-4944-818f-5c4f6bc542f3",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1260,
        -160
      ],
      "parameters": {
        "width": 520,
        "height": 480,
        "content": "Check Day Names Tool\n\n\n1. This part of the flow is just a copy of what is embedded in the \"Check Day Names Tool\". It does not run. \n\n2. If you update this part of the flow, copy it with ctrl-c and pas"
      }
    },
    {
      "id": "346728e6-54c1-44b4-88f7-1059187e1bc3",
      "name": "check day names",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        700,
        -340
      ]
    },
    {
      "id": "b335dba5-1cd4-42f4-9535-f0ab6c5e614c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -160
      ],
      "parameters": {
        "width": 1200,
        "height": 500,
        "content": "Get Availability Execution. \n\n1. This part of the flow is just a copy of what is embedded in the \"Run Get Availability Tool\". It does not run. \n\n2. If you update this part of the flow, copy it with ct"
      }
    },
    {
      "id": "4e6195d3-0eb2-4bf0-8f58-2f8702fcf516",
      "name": "Convert Output to JSON",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1060,
        -560
      ]
    },
    {
      "id": "00b034aa-f6a5-4b7c-9431-ec70989a27f8",
      "name": "Interview Scheduler",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        300,
        -620
      ]
    },
    {
      "id": "cf239d5d-4fd9-4cc0-af69-18f1877d9599",
      "name": "If Final Output",
      "type": "n8n-nodes-base.if",
      "position": [
        780,
        -660
      ]
    },
    {
      "id": "c10d7577-826e-4de2-9603-abdd205029d3",
      "name": "Respond for More Info",
      "type": "n8n-nodes-base.noOp",
      "position": [
        860,
        -420
      ]
    },
    {
      "id": "890a4d28-9822-4edf-9244-9ab29da40bd5",
      "name": "Parse to JSON",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1220,
        -320
      ]
    },
    {
      "id": "8372f453-5d15-47d9-b82e-2fee0520fed4",
      "name": "Set Meeting with Google",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        1460,
        -540
      ]
    },
    {
      "id": "00f65c0a-0f27-4d9c-b520-6d77aa29ba4a",
      "name": "Final Response to User",
      "type": "n8n-nodes-base.code",
      "position": [
        1460,
        -320
      ]
    },
    {
      "id": "90babae7-212f-4b34-8fcf-c33475f99286",
      "name": "Generate Interview Times",
      "type": "n8n-nodes-base.code",
      "position": [
        1440,
        100
      ]
    },
    {
      "id": "52c1da22-4d17-4f4e-a602-5d6b252b41ae",
      "name": "Check My Calendar",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        240,
        0
      ]
    },
    {
      "id": "1aafa569-974e-454d-baff-4e10ce15d3bd",
      "name": "Split Events into 30 min blocks",
      "type": "n8n-nodes-base.code",
      "position": [
        440,
        0
      ]
    },
    {
      "id": "250af200-d60e-4529-8286-9f4e890209b3",
      "name": "Add Blocked Field",
      "type": "n8n-nodes-base.set",
      "position": [
        620,
        20
      ]
    },
    {
      "id": "584fd926-fe7c-4b45-8aae-8cf16516b8dd",
      "name": "Generate 30 Minute Timeslots",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        200
      ]
    },
    {
      "id": "a129d8d8-1b2f-4a0f-9969-99b08218850d",
      "name": "Combine My Calendar with All Slots",
      "type": "n8n-nodes-base.merge",
      "position": [
        600,
        200
      ]
    },
    {
      "id": "f876b012-f691-4a7c-9dd9-8a59a0bef1ab",
      "name": "Check if Calendar Blocked",
      "type": "n8n-nodes-base.if",
      "position": [
        920,
        0
      ]
    },
    {
      "id": "ab6d8934-1e77-488c-9c14-d9bb62880651",
      "name": "Return string of all available times",
      "type": "n8n-nodes-base.code",
      "position": [
        980,
        180
      ]
    },
    {
      "id": "7cb1bd88-3db2-4670-affe-67d5376840af",
      "name": "Get Availability",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        40,
        100
      ]
    },
    {
      "id": "2b4a8deb-19a5-4b96-9683-1edc4202525e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -600,
        -660
      ],
      "parameters": {
        "width": 520,
        "height": 1000,
        "content": "How to Use the Interview Scheduler Workflow in n8n\n________________________________________\n✨ Overview\nThis workflow allows candidates to schedule interviews by chatting with an AI assistant. It check"
      }
    },
    {
      "id": "d8208fb3-fe8e-4958-bc46-751ef193e705",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        100,
        -600
      ]
    },
    {
      "id": "2e243c03-7d21-401a-8e9a-70eece0592ed",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -820
      ],
      "parameters": {
        "width": 640,
        "height": 140,
        "content": "## Automated Interview Scheduling with GPT-4o and Google Calendar Chat Bot\n\n** Feel free to contact me if you need help implementing (rbreen@ynteractive.com) **"
      }
    }
  ],
  "connections": {
    "Parse to JSON": {
      "ai_outputParser": [
        [
          {
            "node": "Convert Output to JSON",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "If Final Output": {
      "main": [
        [
          {
            "node": "Convert Output to JSON",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond for More Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "check day names": {
      "ai_tool": [
        [
          {
            "node": "Interview Scheduler",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Availability": {
      "main": [
        [
          {
            "node": "Check My Calendar",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate 30 Minute Timeslots",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Blocked Field": {
      "main": [
        [
          {
            "node": "Combine My Calendar with All Slots",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check My Calendar": {
      "main": [
        [
          {
            "node": "Split Events into 30 min blocks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Interview Scheduler",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model4": {
      "ai_languageModel": [
        [
          {
            "node": "Convert Output to JSON",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Interview Scheduler": {
      "main": [
        [
          {
            "node": "If Final Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run Get Availability": {
      "ai_tool": [
        [
          {
            "node": "Interview Scheduler",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory2": {
      "ai_memory": [
        [
          {
            "node": "Interview Scheduler",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Convert Output to JSON": {
      "main": [
        [
          {
            "node": "Set Meeting with Google",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Meeting with Google": {
      "main": [
        [
          {
            "node": "Final Response to User",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Calendar Blocked": {
      "main": [
        [
          {
            "node": "Return string of all available times",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Interview Scheduler",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate 30 Minute Timeslots": {
      "main": [
        [
          {
            "node": "Combine My Calendar with All Slots",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Split Events into 30 min blocks": {
      "main": [
        [
          {
            "node": "Add Blocked Field",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine My Calendar with All Slots": {
      "main": [
        [
          {
            "node": "Check if Calendar Blocked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}