{
  "name": "Evaluate vendor PDFs with OpenAI and auto-respond via Slack and webhook",
  "nodes": [
    {
      "id": "a1480026-7111-4bc7-b172-0e0fb97c7057",
      "name": "Parse PDF",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -976,
        272
      ]
    },
    {
      "id": "83f555ac-2138-469f-b6bb-48c95a49bd2a",
      "name": "Clean Text",
      "type": "n8n-nodes-base.code",
      "position": [
        -768,
        272
      ]
    },
    {
      "id": "88f1fc3d-947c-4044-a77f-353abea0cd27",
      "name": "Proposal Upload",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1392,
        272
      ]
    },
    {
      "id": "174016b9-e99e-46a5-913e-d122a4eb9ccb",
      "name": "Download Proposal PDF",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1184,
        272
      ]
    },
    {
      "id": "70fb4320-855e-45a4-8f58-c69729c8f71a",
      "name": "Proposal Evaluation",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -544,
        272
      ]
    },
    {
      "id": "7ae3248a-c6b0-48f1-bbf1-19e231f45e2f",
      "name": "Parse OpenAI JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        -192,
        272
      ]
    },
    {
      "id": "b38e23c4-d4e0-4ebe-9b3e-05dd13fbfa73",
      "name": "Risks?",
      "type": "n8n-nodes-base.if",
      "position": [
        64,
        272
      ]
    },
    {
      "id": "8b03df41-51c4-4d6d-82a7-e4bd06821bed",
      "name": "Build Risk Summary",
      "type": "n8n-nodes-base.code",
      "position": [
        464,
        128
      ]
    },
    {
      "id": "fc94e5da-e21f-49b1-971b-e652f85211be",
      "name": "Auto Approve Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        464,
        448
      ]
    },
    {
      "id": "3a0abd17-34ba-4475-8964-11ec2d55f04f",
      "name": "SEND ALERT",
      "type": "n8n-nodes-base.slack",
      "position": [
        688,
        128
      ]
    },
    {
      "id": "0ab39a67-0562-4f1f-9383-e9011587b9de",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        704,
        448
      ]
    },
    {
      "id": "4babda99-1556-46f7-a78e-bf34268c8570",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1792,
        -448
      ],
      "parameters": {
        "width": 352,
        "height": 896,
        "content": "##  **AI Vendor / Partner Proposal Evaluation & Auto-Response System**\n\n\nThis workflow automates the end-to-end evaluation of vendor or partner proposal PDFs using AI. It accepts a proposal upload via"
      }
    },
    {
      "id": "0f9e10c0-6d04-4ad2-84f9-982d8d1af5ff",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1424,
        144
      ],
      "parameters": {
        "width": 592,
        "height": 288,
        "content": "## Proposal Intake & PDF Processing\n\nHandles proposal submission, PDF download, and text extraction.\nEnsures the uploaded document is accessible and converted into raw text for downstream AI analysis."
      }
    },
    {
      "id": "7c6879ff-b3c7-474e-88a0-311a52713e43",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        128
      ],
      "parameters": {
        "width": 528,
        "height": 288,
        "content": "## Text Cleanup & AI Analysis\n\nCleans extracted PDF text and sends it to OpenAI for structured evaluation.\nRemoves noise and ensures AI receives only relevant proposal content.\n\n"
      }
    },
    {
      "id": "17c77980-2279-4fc2-a195-078f7b4d142e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        128
      ],
      "parameters": {
        "width": 528,
        "height": 288,
        "content": "## Structured Output & Risk Detection\n\nParses OpenAI output into valid JSON and computes a single risk flag for the entire proposal.\nGuarantees one input PDF produces exactly one decision.\n\n"
      }
    },
    {
      "id": "9d8b765a-b93c-479d-b15e-10b90d6b6726",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        16
      ],
      "parameters": {
        "width": 544,
        "height": 256,
        "content": "## Risk Identified → Alert & Review\n\nBuilds a structured risk summary and notifies stakeholders via Slack.\nUsed when the proposal contains missing information or potential concerns.\n"
      }
    },
    {
      "id": "d44cc869-2c8e-4076-9bd6-bf258179081b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        320
      ],
      "parameters": {
        "width": 544,
        "height": 272,
        "content": "## No Risk → Auto Approval\n\nAutomatically approves proposals with no detected risks and sends a success response back to the requester.\n\n"
      }
    }
  ],
  "connections": {
    "Risks?": {
      "main": [
        [
          {
            "node": "Build Risk Summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Auto Approve Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse PDF": {
      "main": [
        [
          {
            "node": "Clean Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Text": {
      "main": [
        [
          {
            "node": "Proposal Evaluation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Proposal Upload": {
      "main": [
        [
          {
            "node": "Download Proposal PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse OpenAI JSON": {
      "main": [
        [
          {
            "node": "Risks?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Risk Summary": {
      "main": [
        [
          {
            "node": "SEND ALERT",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Proposal Evaluation": {
      "main": [
        [
          {
            "node": "Parse OpenAI JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auto Approve Payload": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Proposal PDF": {
      "main": [
        [
          {
            "node": "Parse PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}