{
  "name": "Generate Upwork proposals with GPT-4o-mini, Airtable and Slack",
  "nodes": [
    {
      "id": "468b4807-7f16-4699-be7d-9cfe32749dee",
      "name": "RSS Feed - n8n & Automation",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        -16,
        160
      ]
    },
    {
      "id": "abd092d6-1bb3-474a-96a8-a37ca89541f9",
      "name": "Filter: Skills Match",
      "type": "n8n-nodes-base.code",
      "position": [
        496,
        160
      ]
    },
    {
      "id": "8bfae00c-7cd2-498d-8b29-9f33b7abde40",
      "name": "Filter: Client Rating",
      "type": "n8n-nodes-base.code",
      "position": [
        704,
        160
      ]
    },
    {
      "id": "ad1eaa30-6382-4af5-bffd-0dbfa6941613",
      "name": "Airtable: Check Duplicate",
      "type": "n8n-nodes-base.airtable",
      "position": [
        944,
        160
      ]
    },
    {
      "id": "2a7186ac-e867-47e7-ae2d-2b27b41887a1",
      "name": "Is New Job?",
      "type": "n8n-nodes-base.if",
      "position": [
        1168,
        160
      ]
    },
    {
      "id": "9ac9216b-39d0-4ce0-bd12-1800fc616ef1",
      "name": "Extract Proposal Text",
      "type": "n8n-nodes-base.code",
      "position": [
        528,
        496
      ]
    },
    {
      "id": "60e4783e-1a69-4efe-8155-66acbbaacc28",
      "name": "Airtable: Save Proposal",
      "type": "n8n-nodes-base.airtable",
      "position": [
        752,
        496
      ]
    },
    {
      "id": "b146ef0a-8121-4e03-876c-850ecb5d10c5",
      "name": "Build Slack Message",
      "type": "n8n-nodes-base.code",
      "position": [
        976,
        496
      ]
    },
    {
      "id": "85039f02-b44c-4e5a-b2a7-d1812cef5639",
      "name": "Slack Notification",
      "type": "n8n-nodes-base.slack",
      "position": [
        1200,
        496
      ]
    },
    {
      "id": "06ba8fa6-58dd-4e91-bfdf-683ebc4f3a3d",
      "name": "AI: Generate Proposal",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        176,
        496
      ]
    },
    {
      "id": "595a2370-08ed-4443-966a-e68e215792d2",
      "name": "Build OpenAI Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        -48,
        496
      ]
    },
    {
      "id": "a97f2b64-ee71-4510-9bab-6c262cef6ba6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        64
      ],
      "parameters": {
        "width": 620,
        "height": 620,
        "content": "## How it works\n\nThis workflow monitors Upwork job listings every minute via a Vollna RSS feed. Each new job is parsed to extract the title, description, budget, skills, and a clean Upwork URL. Jobs a"
      }
    },
    {
      "id": "733d0d39-c7c7-45e1-b188-7defe5adf14f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        64
      ],
      "parameters": {
        "width": 532,
        "height": 310,
        "content": "📡 **Ingest & Parse**\nPolls Vollna RSS every minute. Extracts job title, description, budget, skills, and clean Upwork URL from each item."
      }
    },
    {
      "id": "4e5cfecc-424b-4cb6-b008-0b717dd9c01c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        64
      ],
      "parameters": {
        "width": 964,
        "height": 310,
        "content": "🎯 **Filter & Deduplicate**\nNeeds 2+ skill matches. Skips low-rated clients and already-processed jobs."
      }
    },
    {
      "id": "6b7ce2c0-3674-423c-b69a-8dd5c028092d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        384
      ],
      "parameters": {
        "width": 1508,
        "height": 294,
        "content": "🤖 **Generate, Save & Notify**\nGPT-4o-mini writes a tailored proposal. Saves to Airtable, sends to Slack."
      }
    },
    {
      "id": "83abc871-4136-4fa4-a163-12b53d7021fc",
      "name": "Extract Details from RSS",
      "type": "n8n-nodes-base.code",
      "position": [
        192,
        160
      ]
    }
  ],
  "connections": {
    "Is New Job?": {
      "main": [
        [
          {
            "node": "Build OpenAI Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Slack Message": {
      "main": [
        [
          {
            "node": "Slack Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build OpenAI Payload": {
      "main": [
        [
          {
            "node": "AI: Generate Proposal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Skills Match": {
      "main": [
        [
          {
            "node": "Filter: Client Rating",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI: Generate Proposal": {
      "main": [
        [
          {
            "node": "Extract Proposal Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Proposal Text": {
      "main": [
        [
          {
            "node": "Airtable: Save Proposal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Client Rating": {
      "main": [
        [
          {
            "node": "Airtable: Check Duplicate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable: Save Proposal": {
      "main": [
        [
          {
            "node": "Build Slack Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Details from RSS": {
      "main": [
        [
          {
            "node": "Filter: Skills Match",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable: Check Duplicate": {
      "main": [
        [
          {
            "node": "Is New Job?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed - n8n & Automation": {
      "main": [
        [
          {
            "node": "Extract Details from RSS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}