{
  "name": "List properties instantly with UploadToURL, OpenAI Vision, WordPress and Airtable",
  "nodes": [
    {
      "id": "c7c5f8e8-36d4-40a1-92a1-13035bb51e22",
      "name": "📋 Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 540,
        "height": 668,
        "content": "## List properties instantly with UploadToURL, OpenAI Vision, and WordPress\nThe Problem: Real estate agents lose hours manually uploading property photos, writing descriptions, and syncing data betwee"
      }
    },
    {
      "id": "18028c15-b09a-4227-afc0-25e619e0b7dd",
      "name": "Section 1 — Upload & Vision",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        672
      ],
      "parameters": {
        "width": 1160,
        "height": 605,
        "content": "## 1 — Upload & Vision analysis\n\n**Webhook → Validate → Has URL? → Upload to URL (×2) → Extract CDN URL → GPT-4o Vision → Parse Vision**\n\nValidates `listingId`, `address`, and file type. UploadToURL h"
      }
    },
    {
      "id": "8d117d6f-588b-43b9-afc3-fbaf1f0d7d43",
      "name": "Section 2 — Parallel Publish",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1824,
        560
      ],
      "parameters": {
        "width": 296,
        "height": 659,
        "content": "## 2 — Parallel publish\n\n**WordPress Upsert + Airtable Upsert (run simultaneously)**\n\nBoth branches receive the same enriched payload and run in parallel. WordPress creates or updates a draft post key"
      }
    },
    {
      "id": "74915269-7e8c-482d-9c36-76a6aea3adff",
      "name": "Section 3 — Merge & Notify",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2160,
        672
      ],
      "parameters": {
        "width": 744,
        "height": 537,
        "content": "## 3 — Merge & notify\n\n**Merge → Build Response → Telegram → Respond to Webhook**\n\nA Merge node (mode: combine) waits for both WordPress and Airtable to complete, then assembles a unified response wit"
      }
    },
    {
      "id": "84049e24-09cd-4b16-bc39-81682181df61",
      "name": "Webhook - Receive Property Photo",
      "type": "n8n-nodes-base.webhook",
      "position": [
        672,
        960
      ]
    },
    {
      "id": "7e283ac8-8198-4adb-8a55-4ea15d9702f7",
      "name": "Validate Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        816,
        960
      ]
    },
    {
      "id": "cf86ebd3-a3ac-4cef-abff-22feb7dcae25",
      "name": "Has Remote URL?",
      "type": "n8n-nodes-base.if",
      "position": [
        944,
        960
      ]
    },
    {
      "id": "b676b860-df5a-4bf8-bcf3-577de8f51d92",
      "name": "Upload to URL - Remote",
      "type": "n8n-nodes-uploadtourl.uploadToUrl",
      "position": [
        1104,
        864
      ]
    },
    {
      "id": "34659554-53c2-4765-b445-8d5e29d15902",
      "name": "Upload to URL - Binary",
      "type": "n8n-nodes-uploadtourl.uploadToUrl",
      "position": [
        1104,
        1024
      ]
    },
    {
      "id": "77ec08f8-209f-46af-a6b0-d25cd2b42ff8",
      "name": "Extract CDN URL",
      "type": "n8n-nodes-base.code",
      "position": [
        1264,
        960
      ]
    },
    {
      "id": "7dbd4170-84e1-4e77-898c-7971cf8ce1b2",
      "name": "GPT-4o Vision - MLS Analysis",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1392,
        960
      ]
    },
    {
      "id": "3055e0a3-9cfb-4bf3-895c-2c1426188ed5",
      "name": "Parse Vision & Build Payloads",
      "type": "n8n-nodes-base.code",
      "position": [
        1664,
        960
      ]
    },
    {
      "id": "df26a763-2db1-4101-a865-106025b2aee8",
      "name": "WordPress - Create Draft Post",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1904,
        848
      ]
    },
    {
      "id": "c3888f4d-8abf-47a9-a09a-146707e151ce",
      "name": "Airtable - Create MLS Record",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1920,
        1056
      ]
    },
    {
      "id": "c1335f24-0b2b-4d7e-8f0c-9a7f47f9ac31",
      "name": "Merge Platform Results",
      "type": "n8n-nodes-base.merge",
      "position": [
        2224,
        960
      ]
    },
    {
      "id": "6961f6ce-7802-4d71-9f6c-2c323fa93e97",
      "name": "Build Unified Response",
      "type": "n8n-nodes-base.code",
      "position": [
        2400,
        1008
      ]
    },
    {
      "id": "e5114a0a-febf-49a4-9f52-1838f4f1888d",
      "name": "Telegram - Agent Confirmation",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2560,
        960
      ]
    },
    {
      "id": "e3b2b041-172c-4128-aa89-70325128209b",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2736,
        960
      ]
    }
  ],
  "connections": {
    "Extract CDN URL": {
      "main": [
        [
          {
            "node": "GPT-4o Vision - MLS Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has Remote URL?": {
      "main": [
        [
          {
            "node": "Upload to URL - Remote",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Upload to URL - Binary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Payload": {
      "main": [
        [
          {
            "node": "Has Remote URL?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Unified Response": {
      "main": [
        [
          {
            "node": "Telegram - Agent Confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Platform Results": {
      "main": [
        [
          {
            "node": "Build Unified Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to URL - Binary": {
      "main": [
        [
          {
            "node": "Extract CDN URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to URL - Remote": {
      "main": [
        [
          {
            "node": "Extract CDN URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable - Create MLS Record": {
      "main": [
        [
          {
            "node": "Merge Platform Results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "GPT-4o Vision - MLS Analysis": {
      "main": [
        [
          {
            "node": "Parse Vision & Build Payloads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Vision & Build Payloads": {
      "main": [
        [
          {
            "node": "WordPress - Create Draft Post",
            "type": "main",
            "index": 0
          },
          {
            "node": "Airtable - Create MLS Record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram - Agent Confirmation": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WordPress - Create Draft Post": {
      "main": [
        [
          {
            "node": "Merge Platform Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook - Receive Property Photo": {
      "main": [
        [
          {
            "node": "Validate Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}