{
  "name": "Generate interactive quantity reports from Revit and IFC projects to HTML",
  "nodes": [
    {
      "id": "c9a94127-f5d7-4044-a8bd-20aa3cdf46c0",
      "name": "Start - Click to begin",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -2416,
        432
      ]
    },
    {
      "id": "5104d8b7-29ca-4a7c-a93f-340a719a2a6c",
      "name": "Setup - Define file paths",
      "type": "n8n-nodes-base.set",
      "position": [
        -2208,
        432
      ]
    },
    {
      "id": "b5614908-73d2-44fb-9313-0ab85ccccd74",
      "name": "Extract - Run Revit converter",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        -2000,
        432
      ]
    },
    {
      "id": "aef344df-8f03-4570-a65e-56d2e4fff3fb",
      "name": "Check - Did extraction succeed?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1792,
        432
      ]
    },
    {
      "id": "e274fcd1-06c0-4173-8287-0640905ec57c",
      "name": "Success - Create Excel filename",
      "type": "n8n-nodes-base.set",
      "position": [
        -1600,
        432
      ]
    },
    {
      "id": "518688e3-a536-492c-b985-2a2ef67e6522",
      "name": "Error - Show what went wrong",
      "type": "n8n-nodes-base.set",
      "position": [
        -1600,
        240
      ]
    },
    {
      "id": "6e372a42-fd88-4108-b7af-d4ee285e8dd4",
      "name": "Extract - Read Excel file from disk",
      "type": "n8n-nodes-base.readBinaryFile",
      "position": [
        -1392,
        432
      ]
    },
    {
      "id": "a23332a0-2be2-4ce3-8c96-98674190c87f",
      "name": "Extract - Parse Excel to data",
      "type": "n8n-nodes-base.spreadsheetFile",
      "position": [
        -1200,
        432
      ]
    },
    {
      "id": "bab0a798-2472-473b-a841-63b1723e321b",
      "name": "Transform - Filter only OST_Walls",
      "type": "n8n-nodes-base.if",
      "position": [
        -768,
        432
      ]
    },
    {
      "id": "6f548116-439e-4929-b249-8f5c8887d3b0",
      "name": "Transform - Clean wall data",
      "type": "n8n-nodes-base.set",
      "position": [
        -576,
        432
      ]
    },
    {
      "id": "fa87ab03-0e48-4145-bac3-7288c09953a6",
      "name": "Transform - Group by Type Name & sum Volume",
      "type": "n8n-nodes-base.function",
      "position": [
        -368,
        432
      ]
    },
    {
      "id": "08f545ba-1ee8-42cb-96eb-0711801fbc98",
      "name": "Transform - Generate HTML Report",
      "type": "n8n-nodes-base.function",
      "position": [
        -176,
        432
      ]
    },
    {
      "id": "e659c87f-aaf4-4798-a4e2-27c7a6bc2632",
      "name": "Load - Save HTML Report",
      "type": "n8n-nodes-base.writeBinaryFile",
      "position": [
        32,
        432
      ]
    },
    {
      "id": "bca9431a-fbee-4846-bbc2-aaa7a63c673f",
      "name": "Success - Final results",
      "type": "n8n-nodes-base.set",
      "position": [
        240,
        432
      ]
    },
    {
      "id": "ec2d073b-5208-4283-9d0e-13c4df88b990",
      "name": "Extract Phase Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2560,
        96
      ],
      "parameters": {
        "width": 1512,
        "height": 520,
        "content": "## 🔷 EXTRACT Phase\n\n**E**xtract data from Revit file:\n1. Setup file paths\n2. Run Revit converter (RVT → Excel)\n3. Check if conversion succeeded\n4. Read Excel file from disk\n5. Parse Excel into structu"
      }
    },
    {
      "id": "598b3b4a-fea6-4993-b8e7-502893ba5985",
      "name": "Transform Phase Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        96
      ],
      "parameters": {
        "width": 992,
        "height": 520,
        "content": "## 🔷 TRANSFORM Phase\n\n**T**ransform raw data:\n1. Filter ONLY records with 'Category : String' = 'OST_Walls'\n2. Clean data: extract ID, Type Name, Volume\n3. Group by 'Type Name : String'\n4. Sum 'Volume"
      }
    },
    {
      "id": "59442551-3b88-44e2-b983-7c4fdb4c86d8",
      "name": "Load Phase Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        96
      ],
      "parameters": {
        "width": 520,
        "height": 520,
        "content": "## 🔷 LOAD Phase\n\n**L**oad processed data as HTML report:\n1. Generate beautiful HTML report with embedded CSS\n2. Include summary statistics cards\n3. Display grouped data with visual progress bars\n4. Sa"
      }
    },
    {
      "id": "ba96bb08-7b5b-4aec-a13a-da81e0abf5a6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2592,
        -80
      ],
      "parameters": {
        "width": 3120,
        "height": 720,
        "content": "# ETL with CAD (BIM)  \n**Extract. Transform. Load — the future of data processing in construction**\n\nETL (Extract, Transform, Load) is a time-tested and universal approach at the heart of every mature"
      }
    },
    {
      "id": "adf1e99a-9d5f-4ba4-bcad-08d930c14cf0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -208
      ],
      "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": "f7994b78-719e-475d-bc7d-f8d5a2a18d0a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2272,
        224
      ],
      "parameters": {
        "width": 224,
        "height": 368,
        "content": "## ⬇️ Only modify the variables here  \neverything else works automatically"
      }
    },
    {
      "id": "2216c2aa-bac4-41c9-ad8d-2cfcab3f79bf",
      "name": "On the standard 3D View",
      "type": "n8n-nodes-base.if",
      "position": [
        -960,
        432
      ]
    },
    {
      "id": "98471fab-e82c-44bf-9d31-92c2cf3cb812",
      "name": "Non-3D View Elements Output",
      "type": "n8n-nodes-base.set",
      "position": [
        -624,
        256
      ]
    }
  ],
  "connections": {
    "Start - Click to begin": {
      "main": [
        [
          {
            "node": "Setup - Define file paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load - Save HTML Report": {
      "main": [
        [
          {
            "node": "Success - Final results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On the standard 3D View": {
      "main": [
        [
          {
            "node": "Transform - Filter only OST_Walls",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Non-3D View Elements Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setup - Define file paths": {
      "main": [
        [
          {
            "node": "Extract - Run Revit converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform - Clean wall data": {
      "main": [
        [
          {
            "node": "Transform - Group by Type Name & sum Volume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract - Parse Excel to data": {
      "main": [
        [
          {
            "node": "On the standard 3D View",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract - Run Revit converter": {
      "main": [
        [
          {
            "node": "Check - Did extraction succeed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - Did extraction succeed?": {
      "main": [
        [
          {
            "node": "Error - Show what went wrong",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Success - Create Excel filename",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - Create Excel filename": {
      "main": [
        [
          {
            "node": "Extract - Read Excel file from disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform - Generate HTML Report": {
      "main": [
        [
          {
            "node": "Load - Save HTML Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform - Filter only OST_Walls": {
      "main": [
        [
          {
            "node": "Transform - Clean wall data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract - Read Excel file from disk": {
      "main": [
        [
          {
            "node": "Extract - Parse Excel to data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform - Group by Type Name & sum Volume": {
      "main": [
        [
          {
            "node": "Transform - Generate HTML Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}