{
  "name": "Generate job descriptions from briefing notes with OpenAI and Google Docs",
  "nodes": [
    {
      "id": "5dcfac82-9cca-4401-bc98-986fa571d049",
      "name": "Google Drive Trigger",
      "type": "n8n-nodes-base.googleDriveTrigger",
      "position": [
        496,
        368
      ]
    },
    {
      "id": "334206ef-b5b5-4258-a5ff-68af37a4212f",
      "name": "Create timestamped subfolder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        720,
        368
      ]
    },
    {
      "id": "c4468b02-0860-4320-bcc2-5778312368c5",
      "name": "Move briefing doc to subfolder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        944,
        368
      ]
    },
    {
      "id": "5f15c82a-42d7-4292-92e3-b8378c064717",
      "name": "Read Google Doc content",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1168,
        368
      ]
    },
    {
      "id": "0ba80b55-ae17-4009-ad7c-b5acce3c7e63",
      "name": "Extract job data from transcript",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1392,
        368
      ]
    },
    {
      "id": "d09466f2-74e4-406e-af64-007f135e822a",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1472,
        592
      ]
    },
    {
      "id": "7ca4d113-efb5-4152-bd49-9dd87366fb1c",
      "name": "Parse AI JSON output",
      "type": "n8n-nodes-base.code",
      "position": [
        1744,
        368
      ]
    },
    {
      "id": "355dc4d1-26e5-4c10-aa92-e4a044c16247",
      "name": "Log job data in Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1968,
        368
      ]
    },
    {
      "id": "808116d1-46f7-44b6-abd7-8e08f9700992",
      "name": "OpenAI Chat Model (JD-Writer)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2416,
        480
      ]
    },
    {
      "id": "36d479a6-8dd4-49ee-bd3a-e3f9ebc5067b",
      "name": "Check if JD is approved",
      "type": "n8n-nodes-base.if",
      "position": [
        2992,
        368
      ]
    },
    {
      "id": "040f33ce-bb7c-420b-a086-62c22c84201e",
      "name": "Build JD-Writer prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        2192,
        368
      ]
    },
    {
      "id": "177ea090-e232-479f-bb8b-00e692970807",
      "name": "JD-Writer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2416,
        240
      ]
    },
    {
      "id": "eac6fe8f-0c99-434a-942c-e10ffacb3868",
      "name": "Send JD to Teams for approval",
      "type": "n8n-nodes-base.microsoftTeams",
      "position": [
        2768,
        240
      ]
    },
    {
      "id": "fb85dea3-ae4a-42e6-9c55-ad89c0af4fa8",
      "name": "Convert approved JD to PDF",
      "type": "n8n-nodes-htmlcsstopdf.htmlcsstopdf",
      "position": [
        3200,
        272
      ]
    },
    {
      "id": "4177edba-cb3e-485d-89c2-9a5a2b29e08e",
      "name": "Upload PDF to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3408,
        272
      ]
    },
    {
      "id": "830be834-6ba7-4170-ae21-2bd2462078fd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        0
      ],
      "parameters": {
        "width": 520,
        "height": 900,
        "content": "## Auto-generate job descriptions from briefing notes\n\nTurn a **Google Docs role briefing transcript** (e.g. from a Hiring Manager / Recruiter conversation) into a polished, structured **job descripti"
      }
    },
    {
      "id": "9a6d4027-7942-4a83-849e-266549729aef",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        192
      ],
      "parameters": {
        "width": 360,
        "height": 130,
        "content": "### Step 1: Trigger & File Organization\nGoogle Drive Trigger watches a folder for new Google Docs. When detected, a timestamped subfolder is created and the document is moved into it."
      }
    },
    {
      "id": "bec98195-060c-4ec7-92a5-4a3fadaa4c9a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        176
      ],
      "parameters": {
        "width": 380,
        "height": 140,
        "content": "### Step 2: AI Data Extraction\nThe Google Doc content is read and passed to an OpenAI AI Agent that extracts structured job data (title, department, responsibilities, skills, benefits, etc.) from the "
      }
    },
    {
      "id": "3dab8a4e-6d68-4e62-aa13-65d05ffdda56",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2352,
        16
      ],
      "parameters": {
        "width": 400,
        "height": null,
        "content": "### Step 3: JD Generation & Approval Loop\nExtracted data is logged in Google Sheets, then an Input Builder prepares a prompt for the JD-Writer AI Agent. The generated HTML job description is sent to M"
      }
    },
    {
      "id": "563eb0c3-c67d-49af-ba03-32d7bb1e8902",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3184,
        80
      ],
      "parameters": {
        "width": 360,
        "height": 130,
        "content": "### Step 4: PDF Export & Upload\nOnce approved, the HTML job description is converted to PDF via HTML-to-PDF API and uploaded to the Google Drive subfolder alongside the original briefing document."
      }
    }
  ],
  "connections": {
    "JD-Writer": {
      "main": [
        [
          {
            "node": "Send JD to Teams for approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Extract job data from transcript",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive Trigger": {
      "main": [
        [
          {
            "node": "Create timestamped subfolder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI JSON output": {
      "main": [
        [
          {
            "node": "Log job data in Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build JD-Writer prompt": {
      "main": [
        [
          {
            "node": "JD-Writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if JD is approved": {
      "main": [
        [
          {
            "node": "Convert approved JD to PDF",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build JD-Writer prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Google Doc content": {
      "main": [
        [
          {
            "node": "Extract job data from transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert approved JD to PDF": {
      "main": [
        [
          {
            "node": "Upload PDF to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create timestamped subfolder": {
      "main": [
        [
          {
            "node": "Move briefing doc to subfolder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log job data in Google Sheets": {
      "main": [
        [
          {
            "node": "Build JD-Writer prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model (JD-Writer)": {
      "ai_languageModel": [
        [
          {
            "node": "JD-Writer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Send JD to Teams for approval": {
      "main": [
        [
          {
            "node": "Check if JD is approved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Move briefing doc to subfolder": {
      "main": [
        [
          {
            "node": "Read Google Doc content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract job data from transcript": {
      "main": [
        [
          {
            "node": "Parse AI JSON output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}