{
  "name": "Validate CAD and BIM files against Excel standards (Revit, IFC, AutoCAD, DGN)",
  "nodes": [
    {
      "id": "4b870d62-e3be-4c76-9d71-43aef3a21d44",
      "name": "Start - Click to begin",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        560,
        272
      ]
    },
    {
      "id": "ab1dbae1-42fe-4123-ac17-ecf410e62c72",
      "name": "Setup - Define file paths",
      "type": "n8n-nodes-base.set",
      "position": [
        800,
        272
      ]
    },
    {
      "id": "dea38ca4-33e5-43a8-bede-e5ff37f4116c",
      "name": "Sticky Note - Start",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        48
      ],
      "parameters": {
        "width": 190,
        "height": 444,
        "content": "## 🚀 START WORKFLOW\n\nClick \"Execute Workflow\" button to begin the validation process"
      }
    },
    {
      "id": "46bd811d-00c9-4c14-b622-4981dcf8cca0",
      "name": "Read Project Excel File",
      "type": "n8n-nodes-base.readBinaryFile",
      "position": [
        2400,
        384
      ]
    },
    {
      "id": "4f191ee6-712a-4bf2-a2ee-6332716ffdec",
      "name": "Set Validation Rules Path",
      "type": "n8n-nodes-base.set",
      "position": [
        2400,
        208
      ]
    },
    {
      "id": "69a54929-3ec3-45d1-98fc-8a74072a8026",
      "name": "Sticky Note - Validation Rules",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        -144
      ],
      "parameters": {
        "width": 220,
        "height": 680,
        "content": "## 📋 VALIDATION RULES\n\n**Specify the path to rules file:**\n`validation_rules_path`\n\nThis file contains validation criteria"
      }
    },
    {
      "id": "d731282b-9ac8-4dc4-a53e-e41176a9cf2e",
      "name": "Read Validation Rules File",
      "type": "n8n-nodes-base.readBinaryFile",
      "position": [
        2640,
        288
      ]
    },
    {
      "id": "ba8aeb4b-cca4-44e7-bd9e-43ce2fad7024",
      "name": "Merge Excel Files",
      "type": "n8n-nodes-base.merge",
      "position": [
        2864,
        400
      ]
    },
    {
      "id": "20a8b8e1-6153-4f99-85fe-5085fac971bd",
      "name": "Validate - Enhanced",
      "type": "n8n-nodes-base.code",
      "position": [
        3040,
        288
      ]
    },
    {
      "id": "1d601482-2b90-4d52-91b7-4e7579a88db2",
      "name": "Sticky Note - Validation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2560,
        48
      ],
      "parameters": {
        "width": 620,
        "height": 596,
        "content": "## 🤖 AUTOMATED VALIDATION\n\nProcessing includes:\n- Project data analysis\n- Rules-based checking\n- Report creation with color coding\n\n🟩 Green = data present\n🟥 Red = data missing"
      }
    },
    {
      "id": "fde712a8-5bb1-4604-bc51-0c635fbc4c0a",
      "name": "Sticky Note - Conversion",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        48
      ],
      "parameters": {
        "width": 1320,
        "height": 596,
        "content": "## 🔄 CONVERSION\n\nAutomatic conversion Project files → Excel\n\nIf file already exists, conversion is skipped"
      }
    },
    {
      "id": "8c98aae6-074a-4701-99d9-7c49ae13e682",
      "name": "Sticky Note - Save & Open",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3200,
        48
      ],
      "parameters": {
        "width": 420,
        "height": 596,
        "content": "## 📂 SAVE & OPEN\n\n✅ Report saved automatically\n✅ Excel opens for viewing\n\nFilename includes date and time"
      }
    },
    {
      "id": "6fce729b-f210-407e-9de2-81a193715ca5",
      "name": "Save Validation Report1",
      "type": "n8n-nodes-base.writeBinaryFile",
      "position": [
        3280,
        288
      ]
    },
    {
      "id": "8d09f3bc-8478-48a5-a235-460597226737",
      "name": "Open Excel Report1",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        3488,
        288
      ]
    },
    {
      "id": "c70924fa-ecbc-48bb-b66c-98afe5947994",
      "name": "Create - Excel filename",
      "type": "n8n-nodes-base.set",
      "position": [
        1024,
        272
      ]
    },
    {
      "id": "2f4617b8-f146-4fd6-bee2-020a8609a92c",
      "name": "Check - Does Excel file exist?",
      "type": "n8n-nodes-base.readBinaryFile",
      "position": [
        1216,
        272
      ]
    },
    {
      "id": "aa925149-5394-4db4-bdc2-9116f9b76700",
      "name": "If - File exists?",
      "type": "n8n-nodes-base.if",
      "position": [
        1376,
        272
      ]
    },
    {
      "id": "18206815-fe18-4e53-970d-85d7dda0d8c0",
      "name": "Extract - Run converter",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        1600,
        368
      ]
    },
    {
      "id": "c701d878-85d1-4122-b5cb-59c1edc2f835",
      "name": "Info - Skip conversion",
      "type": "n8n-nodes-base.set",
      "position": [
        1680,
        192
      ]
    },
    {
      "id": "026e9414-30a8-4e99-bb9f-c91cddb8dbce",
      "name": "Check - Did extraction succeed?",
      "type": "n8n-nodes-base.if",
      "position": [
        1760,
        368
      ]
    },
    {
      "id": "362d1574-f7e0-4c7c-a0f2-27496d62cf16",
      "name": "Error - Show what went wrong",
      "type": "n8n-nodes-base.set",
      "position": [
        1920,
        288
      ]
    },
    {
      "id": "c8f21f46-0647-4819-ae0e-419d9a46f206",
      "name": "Set xlsx_filename after success",
      "type": "n8n-nodes-base.set",
      "position": [
        1920,
        448
      ]
    },
    {
      "id": "b502d5d2-8530-427e-9390-7c11012bd06a",
      "name": "Merge - Continue workflow",
      "type": "n8n-nodes-base.merge",
      "position": [
        2160,
        208
      ]
    },
    {
      "id": "b236040c-8651-41dd-a6b1-63da8db3d4cd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        672
      ],
      "parameters": {
        "width": 540,
        "height": 300,
        "content": "## ⚠️ Troubleshooting\nIf you encounter errors during conversion, be sure to reference the executable inside the **`datadrivenlibs`** folder. Use this path:\n\n```text\n\"DDC_Exporter_XXXXXXX\\datadrivenlib"
      }
    },
    {
      "id": "cae2d3e4-07de-45c9-9b45-da19789cabb4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2576,
        672
      ],
      "parameters": {
        "width": 620,
        "height": 268,
        "content": "## ⚠️ Troubleshooting\nIn n8n versions 1.98.0–1.101.x, the Python Code node (Pyodide) completely blocks the `os` module, causing this error:\n\n### ✅ Solution  \nTo avoid this error, **use latest n8n vers"
      }
    },
    {
      "id": "079841ea-bc60-47c7-ab3c-a7e9d3e59d2c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3280,
        -80
      ],
      "parameters": {
        "width": 340,
        "height": 116,
        "content": "⭐ **If you find our tools helpful**, please **consider starring our repository** on [GitHub](https://github.com/datadrivenconstruction/cad2data-Revit-IFC-DWG-DGN-pipeline-with-conversion-validation-qt"
      }
    },
    {
      "id": "389526e6-34a8-4cb2-bb68-c9cfd28ed566",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        -288
      ],
      "parameters": {
        "width": 224,
        "height": 176,
        "content": "## ⬇️ Only modify the variables here  \n— everything else works automatically"
      }
    },
    {
      "id": "c41d11fb-f654-49e9-a2f0-ac81a01eff02",
      "name": "Sticky Note - Settings",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        -96
      ],
      "parameters": {
        "width": 220,
        "height": 628,
        "content": "## ⚙️ SETTINGS\n\n**Update file paths here:**\n- `path_to_converter` - path to converter\n- `project_file` - path to your project file (IFC/DWG/RVT)"
      }
    },
    {
      "id": "730b1426-7b20-4eb0-8f1e-b70ae0bd9fed",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        -336
      ],
      "parameters": {
        "width": 224,
        "height": 176,
        "content": "## ⬇️ Only modify the variables here  \n— everything else works automatically"
      }
    }
  ],
  "connections": {
    "If - File exists?": {
      "main": [
        [
          {
            "node": "Info - Skip conversion",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract - Run converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Excel Files": {
      "main": [
        [
          {
            "node": "Validate - Enhanced",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate - Enhanced": {
      "main": [
        [
          {
            "node": "Save Validation Report1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Info - Skip conversion": {
      "main": [
        [
          {
            "node": "Merge - Continue workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start - Click to begin": {
      "main": [
        [
          {
            "node": "Setup - Define file paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create - Excel filename": {
      "main": [
        [
          {
            "node": "Check - Does Excel file exist?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract - Run converter": {
      "main": [
        [
          {
            "node": "Check - Did extraction succeed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Project Excel File": {
      "main": [
        [
          {
            "node": "Merge Excel Files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Validation Report1": {
      "main": [
        [
          {
            "node": "Open Excel Report1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge - Continue workflow": {
      "main": [
        [
          {
            "node": "Read Project Excel File",
            "type": "main",
            "index": 0
          },
          {
            "node": "Set Validation Rules Path",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Validation Rules Path": {
      "main": [
        [
          {
            "node": "Read Validation Rules File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setup - Define file paths": {
      "main": [
        [
          {
            "node": "Create - Excel filename",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Validation Rules File": {
      "main": [
        [
          {
            "node": "Merge Excel Files",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Error - Show what went wrong": {
      "main": [
        [
          {
            "node": "Merge - Continue workflow",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Check - Does Excel file exist?": {
      "main": [
        [
          {
            "node": "If - File exists?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - Did extraction succeed?": {
      "main": [
        [
          {
            "node": "Error - Show what went wrong",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set xlsx_filename after success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set xlsx_filename after success": {
      "main": [
        [
          {
            "node": "Merge - Continue workflow",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}