Skip to content

kuklevSU10/-

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

136 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DDC CWICR - Construction Work Items, Components & Resources
+ Pipelines n8n for calculating estimates based on descriptions, photos, and CAD (BIM)

OpenConstructionEstimate

Work Items Resources Languages Countries
License Version Embeddings Qdrant n8n

OpenConstructionEstimate

⚡ n8n Workflows

Choose your input → Get cost estimate



📝 Text

Quick scope-to-estimate
from a short description

Input: Telegram / chat message
Output: Matched work items + estimate


📖 Documentation

Download


📷 Photo / PDF

Site photos, scanned BOQ,
photo-PDF from the field

Input: Image or PDF pages
Output: Extracted scope → estimate


📖 Photo Docs · 📖 Universal Bot

Photo   Bot


🧊 CAD / BIM

Revit / IFC / DWG-based
quantification & estimating

Input: Model export
Output: 4D/5D estimate + breakdown


📖 Documentation

Download


Live Demo


DataDrivenConstruction clients and users



📑 Table of Contents

Database & Data

n8n Workflows

CAD/BIM Pipeline Details

Vector Database

Getting Started

Community


About

DDC CWICR (Construction Work Items, Components & Resources) is an open database for construction cost estimation, covering the full spectrum of construction activities - from earthworks and concrete placement to specialized installation work.

The database draws on sources describing modern construction practices across Eurasia and the Asia-Pacific region, where a unified technical standardization ecosystem serves as a common engineering language for more than ten dynamically developing economies. DDC CWICR represents an effort to harmonize open standards by establishing a single regulatory framework for capital project management in multiple languages.




The structured data can be accessed through tabular formats (XLSX, CSV, Parquet) or queried conversationally via LLM, enabling specialists to integrate construction work descriptions (QDRANT vector database) into automated pipelines and workflows using plain language or concise queries.

Available Formats

Format Extension Size Best For Features
Excel .xlsx ~150–400 MB Manual analysis, filtering, pivots Human-readable, full formatting
Parquet .parquet ~55 MB ETL pipelines, ML training, Big Data Columnar, excellent compression
CSV .csv ~1.3 GB Database import, legacy systems Universal compatibility
Qdrant .snapshot ~1 GB Semantic search, RAG, AI assistants Pre-computed OpenAI embeddings

A live demo is available at openconstructionestimate.com, where you can explore the data and see the vector database in action for semantic search.

OpenConstructionEstimate


Data Schema

The database contains 85 fields organized into logical groups. Each record represents either a work item (rate) or a resource with full cost breakdown.

erDiagram
    RATE ||--o{ RESOURCE : contains
    RATE ||--o{ LABOR : requires
    RATE ||--o{ MACHINERY : uses
    RATE ||--o{ PRICE_VARIANT : has

    RATE {
        string rate_code PK "MEKA_KASA_KAKATO_KAME"
        string rate_original_name "Einbau von Trennwänden..."
        string rate_unit "100 m2"
        string category_type "BAUARBEITEN"
        string collection_name "Holzkonstruktionen"
        string department_name "TRENNWÄNDE..."
        string section_name "Einbau von Trennwänden..."
        text work_composition_text
    }

    RESOURCE {
        string resource_code PK "KAME-NE-KAME-KARI"
        string resource_name "Gipskartonplatten"
        string resource_unit "m2"
        float resource_quantity "632.0"
        float resource_price_per_unit_eur "5.02"
        float resource_cost_eur "3170.73"
        boolean is_material
        boolean is_abstract
    }

    LABOR {
        string resource_code FK
        float labor_hours_workers "172"
        float labor_hours_machinists "1.67"
        int count_workers_per_unit "172"
        int count_machinists_per_unit "2"
        float cost_of_working_hours "3088.11"
    }

    MACHINERY {
        string machine_class2_name "Krane"
        string machine_class3_name "Krane auf Fahrgestellen"
        float electricity_consumption_kwh "0.23"
        float price_machinist_wages "13.56"
        float total_value_machinery "64.18"
    }

    PRICE_VARIANT {
        float price_est_median "5.02"
        float price_est_min "3.03"
        float price_est_max "7.99"
        int position_count "24"
        string variable_parts "glasfaserverstärkt..."
    }
Loading

Field Groups

The 85 database fields are organized into logical groups that reflect the resource-based cost estimation methodology. Each group serves a specific function in the cost breakdown structure: from hierarchical classification and work item identification to detailed resource consumption, labor requirements, machinery costs, and aggregated totals. This modular structure allows users to query only the relevant fields for their task - whether generating a bill of materials, analyzing labor productivity, or building a complete cost estimate.




Classification - category_type, collection_code, collection_name, department_code, department_name, department_type, section_name, section_type, subsection_code, subsection_name

Work Item (Rate) - rate_code, rate_original_name, rate_final_name, rate_unit, row_type, is_scope, is_abstract, is_machine, is_labor, is_material, work_composition_text

Resources - resource_code, resource_name, resource_unit, resource_quantity, parameter_resource_quantity, resource_price_per_unit_eur_current, resource_cost_eur

Labor - count_workers_per_unit, count_engineers_per_unit, count_machinists_per_unit, count_total_people_per_unit, labor_hours_construction_workers, labor_hours_machinists, labor_hours_engineers, total_labor_hours_workers_machinists, total_labor_hours_all_personnel, cost_of_working_hours, count_people_per_day

Machinery - machine_class2_name, machine_class3_name, personnel_machinist_code, personnel_machinist_grade, price_machinist_wages, price_relocation_included, price_cost_without_wages, electricity_consumption_kwh_per_machine_hour, electricity_cost_per_unit, electricity_cost_total_sum, cost_machinist_sum, total_value_machinery_equipment

Price Variants - price_code_prefix, price_abstract_resource_common_start, price_abstract_resource_variable_parts, price_abstract_resource_position_count, price_abstract_resource_est_price_min, price_abstract_resource_est_price_max, price_abstract_resource_est_price_mean, price_abstract_resource_est_price_median, price_abstract_resource_unit, abstract_resource_tech_group

Aggregates - total_cost_per_position, total_material_cost_per_position, total_resource_cost_per_position, total_value_abstract_resources, materials_resource_cost_eur

Mass & Services - mass_name, mass_value, mass_unit, service_category, service_type, parameter_service_code, parameter_service_unit, parameter_service_name, parameter_service_quantity, service_cost_sum

Cost Calculation Formula

Component Technology Norm × Regional Price = Cost
👷 Labor 172 hrs/100m² × €17.95/hr = €3,088.11
🧱 Materials 632 m²/100m² × €5.02/m² = €3,170.73
🚜 Equipment 1.67 hrs/100m² × €38.42/hr = €64.18
Total = €7,725.91 per 100m²

Methodology

The key value of Resource-Based Costing is the separation of unchanging production technology from the volatile financial component. It is based on the physical "first principles" of construction:

  • Labor hours required for specific work
  • Material quantities per unit of work
  • Equipment time needed

Why it matters:

  • Transparency - Pricing without hidden markups, full resource breakdown
  • Auditability - Deep-dive capability for investment analysis and verification
  • Portability - Region-independent norms applicable across markets
  • Proven - Industry standard methodology established over 100+ years
flowchart TB
    subgraph Source["📦 Data Source"]
        CWICR[(DDC CWICR<br/>────────────<br/>55,719 Work Items<br/>27,672 Resources<br/>85 Fields per Record)]
    end

    subgraph Processing["⚙️ Processing Pipeline"]
        direction LR
        ETL[["🔄 ETL<br/>Extraction &<br/>Transformation"]]
        TRANS[["🌐 Translation<br/>9 Languages"]]
        EMBED[["🧠 Vectorization<br/>OpenAI 3072d"]]
        ETL --> TRANS --> EMBED
    end

    subgraph Outputs["📤 Output Formats"]
        XLSX[("📊 Excel<br/>.xlsx")]
        PARQUET[("⚡ Parquet<br/>.parquet")]
        CSV[("📄 CSV<br/>.csv")]
        QDRANT[("🔍 Qdrant<br/>.snapshot")]
    end

    subgraph Apps["🎯 Applications"]
        SEARCH["🔎 Semantic<br/>Search"]
        BIM["🏗️ BIM 5D<br/>Integration"]
        RAG["🤖 RAG<br/>Systems"]
        BI["📈 BI<br/>Analytics"]
    end

    Source --> Processing
    Processing --> XLSX & PARQUET & CSV & QDRANT
    XLSX & PARQUET & CSV --> BI & BIM
    QDRANT --> SEARCH & RAG & BIM

    style Source fill:#dbeafe,stroke:#2563eb,stroke-width:2px
    style Processing fill:#fef3c7,stroke:#d97706,stroke-width:2px
    style Outputs fill:#d1fae5,stroke:#059669,stroke-width:2px
    style Apps fill:#fce7f3,stroke:#db2777,stroke-width:2px
Loading

Historical Context

The construction work descriptions in this database are grounded in a resource-based standardization methodology with roots stretching from early 20th-century production norms to today's digital reference systems. Developed and refined continuously since the 1920s, this approach has seen especially robust evolution across the Eurasian region.

Throughout a hundred years of development, the system has transitioned from manual computations to machine-readable formats - yet its foundational principle remains intact: the precise measurement of physical resources required per unit of construction output. Modern implementations bridge historical normative data with real-time market pricing.

Regional adaptations of this methodology operate under various national designations: ENIR, GESN, FER, NRR, ESN, AzDTN, ShNQK, MKS ChT, SNT, BNbD, Dinh Muc, Ding'e.

OpenConstructionEstimate

If you want to see new updates and database versions and if you find our tools useful please give our repositories a star to see more similar applications for the construction industry. Star DDC workflow on GitHub and be instantly notified of new releases.





Integration

Use Cases

  • Entry Level - Cost Benchmarking, Price Indexation, Tender Estimation

  • Intermediate - Localization, ETL/BI Pipelines, CO₂ Calculation

  • Advanced - AI/ML Training, CAD (BIM) 5D, Deep-Dive Investment Audit


n8n Workflows — Detailed Description

Four production-ready workflows for automated construction cost estimation. Each workflow connects to the DDC CWICR vector database via Qdrant and uses AI models for intelligent parsing and matching.

# Workflow Input Best For Download
1 Text Estimator Bot 💬 Text Quick estimates from text JSON
2 Photo Estimator 📷 Photo Site visits, visual inspections JSON
3 Universal Bot 💬📷📄 All Full-featured production use JSON
4 CAD/BIM Pipeline 🏗️ Revit BIM-based 4D/5D estimation JSON

1️⃣ Text Estimator Bot

File: n8n_1_Telegram_Bot_Cost_Estimates_and_Rate_Finder_TEXT_DDC_CWICR.json

Telegram bot for text-based cost estimation. Describe construction works in natural language — the bot parses input, searches the vector database, and returns detailed cost breakdowns.




🤖 Try It Now — Live Demo Bots

Test the estimation workflows instantly in Telegram

@TextOpenConstructionEstimate_bot

Create complete cost estimates
from text descriptions

Text Bot
flowchart LR
    subgraph Input["💬 INPUT"]
        A[Telegram Message]
    end
    
    subgraph AI["🤖 AI PROCESSING"]
        B[Parse Text]
        C[Extract Work Items]
    end
    
    subgraph Search["🔍 VECTOR SEARCH"]
        D[Generate Embeddings]
        E[Qdrant Search]
        F[AI Rerank]
    end
    
    subgraph Output["📊 OUTPUT"]
        G[Calculate Costs]
        H[HTML Report]
        I[Excel Export]
    end
    
    A --> B --> C --> D --> E --> F --> G --> H
    G --> I
    
    style Input fill:#e0f2fe,stroke:#0284c7
    style AI fill:#fef3c7,stroke:#d97706
    style Search fill:#dcfce7,stroke:#16a34a
    style Output fill:#f3e8ff,stroke:#9333ea
Loading

How it works:

Step Action Technology
1 User sends text description Telegram Bot API
2 AI parses and extracts work items OpenAI / Claude / Gemini
3 Generate embeddings for each item OpenAI text-embedding-3-large
4 Search matching rates in database Qdrant vector search
5 AI reranks results for accuracy LLM scoring
6 Calculate costs and generate report HTML / Excel / PDF

Features:

Feature Description
💬 Natural language input Accepts any text format — lists, sentences, structured descriptions
🤖 Multi-LLM support Works with OpenAI, Claude, or Gemini (switchable)
🔍 Semantic search Finds best matches even with different wording
🌍 9 languages DE, EN, RU, ES, FR, PT, ZH, AR, HI
📊 Multiple exports HTML report, Excel spreadsheet, PDF document
✏️ Interactive editing Modify quantities before final calculation

Required credentials:

  • Telegram Bot Token (from @BotFather)
  • OpenAI API Key (for embeddings + optional LLM)
  • Qdrant URL + API Key

2️⃣ Photo Cost Estimator

File: n8n_2_Photo_Cost_Estimate_DDC_CWICR.json

Web form interface for photo-based estimation. Upload a construction photo — AI Vision identifies elements, estimates dimensions, and calculates costs automatically.




flowchart TB
    subgraph Upload["📷 PHOTO UPLOAD"]
        A[Web Form]
        B[Select Region]
        C[Choose Work Type]
    end
    
    subgraph Vision["👁️ AI VISION"]
        D[GPT-4 Vision Analysis]
        E[Identify Elements]
        F[Estimate Dimensions]
        G[Detect Room Type]
    end
    
    subgraph Decompose["🔧 DECOMPOSITION"]
        H[Elements → Work Items]
        I[Calculate Quantities]
    end
    
    subgraph Price["💰 PRICING"]
        J[Vector Search]
        K[Match DDC Rates]
        L[Apply Regional Prices]
    end
    
    subgraph Report["📄 REPORT"]
        M[Generate HTML]
        N[Cost Breakdown]
    end
    
    A --> B --> C --> D
    D --> E --> F --> G
    G --> H --> I
    I --> J --> K --> L
    L --> M --> N
    
    style Upload fill:#dbeafe,stroke:#2563eb
    style Vision fill:#fef3c7,stroke:#d97706
    style Decompose fill:#dcfce7,stroke:#16a34a
    style Price fill:#fee2e2,stroke:#dc2626
    style Report fill:#f3e8ff,stroke:#9333ea
Loading

How it works:

Step Action Technology
1 User uploads photo via web form n8n Form Trigger
2 AI Vision analyzes the image GPT-4 Vision
3 Identify room type, elements, materials Structured JSON extraction
4 Estimate dimensions from reference objects AI reasoning (doors, tiles, etc.)
5 Decompose elements into work items LLM processing
6 Price each work via vector search Qdrant + OpenAI embeddings
7 Generate professional HTML report Styled output

Features:

Feature Description
📷 Photo analysis GPT-4 Vision identifies construction elements
📐 Auto-dimensioning Estimates sizes using reference objects (doors, tiles)
🏠 Room detection Bathroom, kitchen, bedroom, exterior, etc.
🔨 Work type support New construction / Renovation / Repair
🌍 9 regional databases Prices localized to Berlin, Toronto, Paris, etc.
📄 Professional reports Clean HTML output ready for clients

Required credentials:

  • OpenAI API Key (GPT-4 Vision + embeddings)
  • Qdrant URL + API Key

3️⃣ Universal Estimator Bot (Text + Photo + PDF)

File: n8n_3_Telegram_Bot_Cost_Estimates_and_Rate_Finder_TEXT_PHOTO_PDF_DDC_CWICR.json

Full-featured Telegram bot supporting all input types: text descriptions, construction photos, and PDF floor plans. The most comprehensive workflow for production use.




🤖 Try It Now — Live Demo Bots

Test the estimation workflows instantly in Telegram

📷 Universal Bot

@OpenConstructionEstimate_bot

Full-featured bot for text, photos, and PDF

Universal Bot

flowchart TB
    subgraph Input["📥 MULTI-INPUT"]
        A[💬 Text Message]
        B[📷 Photo]
        C[📄 PDF Document]
    end
    
    subgraph Router["🔀 SMART ROUTER"]
        D{Detect Type}
    end
    
    subgraph TextPath["💬 TEXT PATH"]
        E[AI Parse Text]
        F[Extract Works]
    end
    
    subgraph PhotoPath["📷 PHOTO PATH"]
        G[Vision AI]
        H[Identify Elements]
        I[Decompose]
    end
    
    subgraph PDFPath["📄 PDF PATH"]
        J[Extract Pages]
        K[Vision Analysis]
        L[Parse Content]
    end
    
    subgraph Common["🔍 COMMON PIPELINE"]
        M[Generate Embeddings]
        N[Qdrant Search]
        O[AI Rerank]
        P[Calculate Costs]
    end
    
    subgraph Export["📤 EXPORT"]
        Q[HTML Report]
        R[Excel CSV]
        S[PDF Document]
    end
    
    A --> D
    B --> D
    C --> D
    D -->|Text| E --> F --> M
    D -->|Photo| G --> H --> I --> M
    D -->|PDF| J --> K --> L --> M
    M --> N --> O --> P
    P --> Q
    P --> R
    P --> S
    
    style Input fill:#e0f2fe,stroke:#0284c7
    style Router fill:#fef3c7,stroke:#d97706
    style TextPath fill:#dcfce7,stroke:#16a34a
    style PhotoPath fill:#fce7f3,stroke:#db2777
    style PDFPath fill:#f3e8ff,stroke:#9333ea
    style Common fill:#fee2e2,stroke:#dc2626
    style Export fill:#d1fae5,stroke:#059669
Loading

How it works:

Step Action Technology
1 User sends text, photo, or PDF Telegram Bot API
2 Router detects input type Content-type analysis
3a Text: AI parses work items OpenAI / Gemini
3b Photo: Vision AI extracts elements GPT-4 Vision / Gemini 2.0
3c PDF: Extract and analyze pages PDF processing + Vision
4 Semantic search in DDC CWICR Qdrant vector database
5 AI reranking for best matches LLM scoring
6 Interactive editing via bot menu Telegram inline keyboards
7 Export results HTML / Excel / PDF

17 Bot Actions:

Action Description
/start Language selection menu
Photo upload Trigger AI vision analysis
Text message Parse and extract work items
PDF upload Process floor plans
Edit quantities Modify before calculation
Add work Manual work item entry
Calculate Run full cost estimation
View details Show resources for each item
Export Excel Download CSV spreadsheet
Export PDF Generate PDF report
Help Show usage instructions
Refine Re-analyze with corrections

Features:

Feature Description
📷 Dual Vision AI Gemini 2.0 Flash or GPT-4 Vision (configurable)
📄 PDF processing Floor plans, scanned BOQ, documents
💬 Smart text parsing Handles lists, tables, free-form text
🔍 AI reranking Improves match accuracy
✏️ Full editing Add, remove, modify work items
📊 Multi-format export HTML, Excel, PDF
🌍 9 languages Complete localization

Required credentials:

  • Telegram Bot Token
  • OpenAI API Key (embeddings)
  • Gemini API Key (Vision) or OpenAI GPT-4 Vision
  • Qdrant URL + API Key

4️⃣ CAD (BIM) Cost Estimation Pipeline

File: n8n_4_CAD_(BIM)_Cost_Estimation_Pipeline_4D_5D_with_DDC_CWICR.json

Automated cost estimation from Revit/IFC/DWG models. Extracts BIM data, classifies elements, decomposes into work items, and generates 4D/5D estimates with full resource breakdown.

DataDrivenConstruction

flowchart TB
    subgraph INPUT["📁 INPUT<br/><i>CAD • photos • text description</i>"]
        CAD["📐 Project Input<br/>(text • photos • RVT / IFC / DWG)"]
    end

    subgraph EXTRACT["⚙️ EXTRACTION"]
        CONV["RvtExporter.exe / CAD Export  / ETL"]
        XLSX["📊 .XLSX<br/>(Raw Elements)"]
    end

    subgraph PREP["🔧 DATA PREPARATION"]
        PREP_AI["🤖 AI: Clean & Classify<br/><i>headers • types • categories</i>"]
    end

    subgraph STAGE_PLAN["📋 STAGES 1–3: Planning"]
        PLAN["🤖 Detect Project & Phases<br/><i>new / renovation / demolition</i><br/><i>small / medium / large</i><br/><i>elements → construction phases</i>"]
    end

    subgraph STAGE4["🔨 STAGE 4: Decomposition"]
        S4["🤖 Decompose Types to Works<br/><i>'Brick Wall 240mm' → masonry, mortar, plaster</i>"]
    end

    subgraph STAGE5["💰 STAGE 5: Pricing"]
        S5["🤖 Price via Vector DB<br/><i>OpenAI embeddings + Qdrant</i><br/><i>rate_code, unit_cost, resources</i>"]
    end

    subgraph STAGE75["✅ STAGE 7.5: Validation"]
        S75["🤖 CTO Review<br/><i>completeness • duplicates • missing works</i>"]
    end

    subgraph OUTPUT["📤 OUTPUT"]
        HTML["📄 HTML Report"]
        XLS["📊 XLS Report"]
    end

    CAD --> CONV --> XLSX
    XLSX --> PREP_AI --> PLAN --> S4 --> S5 --> S75
    S75 --> HTML & XLS

    style INPUT fill:#f4f4f5,stroke:#d4d4d8,color:#18181b
    style EXTRACT fill:#e0f2fe,stroke:#bae6fd,color:#0f172a
    style PREP fill:#ede9fe,stroke:#ddd6fe,color:#1e1b4b
    style STAGE_PLAN fill:#ecfdf5,stroke:#bbf7d0,color:#064e3b
    style STAGE4 fill:#fef9c3,stroke:#fef3c7,color:#78350f
    style STAGE5 fill:#fee2e2,stroke:#fecaca,color:#7f1d1d
    style STAGE75 fill:#e0f2f1,stroke:#bae5e1,color:#134e4a
    style OUTPUT fill:#eef2ff,stroke:#e0e7ff,color:#111827
Loading

n8n provides 400+ native integrations with platforms like Google Sheets, Notion, Slack, Airtable, databases (PostgreSQL, MongoDB), cloud storage, and more. Every node in this workflow is modular — you can:

  • 🔄 Swap LLM providers (OpenAI ↔ Claude ↔ Gemini ↔ Grok)
  • 📊 Connect to your ERP or project management system
  • 📁 Export results to any destination (cloud storage, email, dashboards)
  • 🔧 Modify any stage to match your estimation methodology

The workflow is yours to adapt. No restrictions. No licensing fees. Full control.


📋 Prerequisites

Component Requirement Description
n8n v1.0+ (v2.0+ requires setup) Workflow automation platform for orchestrating the estimation pipeline
Qdrant Cloud or self-hosted instance Vector database for semantic search across construction work items
OpenAI API For embeddings (text-embedding-3-large) Generates vector embeddings for BIM elements and cost database matching
LLM API OpenAI / Claude / Gemini / xAI Grok AI models for work item classification and estimate generation
DDC Converter RvtExporter.exe Extracts BIM data from Revit models to Excel/JSON for processing

Workflows Quick Start

Step 1: Import Workflow

n8n → New workflow → Import from File → Select JSON

Step 2: Configure Credentials

In the 🔑 TOKEN node, set your API keys:

{
  "bot_token": "YOUR_TELEGRAM_BOT_TOKEN",
  "OPENAI_API_KEY": "YOUR_OPENAI_KEY",
  "GEMINI_API_KEY": "YOUR_GEMINI_KEY",
  "QDRANT_URL": "http://localhost:6333",
  "QDRANT_API_KEY": ""
}

Step 3: Load DDC CWICR to Qdrant

Download snapshot from Releases and import:

curl -X POST "http://localhost:6333/collections/ddc_cwicr_en/snapshots/upload" \
  -H "Content-Type: multipart/form-data" \
  -F "snapshot=@EN_TORONTO_workitems_EMBEDDINGS_3072_DDC.snapshot"

Step 4: Activate & Test

  • Enable the workflow in n8n
  • For Telegram bots: send /start to your bot
  • For web forms: open the form URL provided by n8n

⚠️ n8n 2.0+ Setup Required

Starting from n8n version 2.0, the Execute Command node is disabled by default for security reasons.

Without the configuration below, workflows using Execute Command (especially CAD/BIM Pipeline) will not work — nodes will show with a question mark or won't be recognized.

Quick Fix

Windows (CMD) — run each time:

set NODES_EXCLUDE=[] && npx n8n

Permanent solution — create once:

Create file C:\Users\YOUR_USER\.n8n\.env with:

NODES_EXCLUDE=[]

Then just run npx n8n as usual.

Docker:

environment:
  - NODES_EXCLUDE=[]

Verify Setup

  1. Start n8n
  2. Click + → search for "Execute Command"
  3. If the node appears → ✅ you're all set!

📚 More details: n8n 2.0 Breaking Changes


🌍 Supported Languages & Price Levels

Code Language Price Level Currency Qdrant Collection
AR Arabic Dubai AED ddc_cwicr_ar
DE German Berlin EUR ddc_cwicr_de
EN English Toronto CAD ddc_cwicr_en
ES Spanish Barcelona EUR ddc_cwicr_es
FR French Paris EUR ddc_cwicr_fr
HI Hindi Mumbai INR ddc_cwicr_hi
PT Portuguese São Paulo BRL ddc_cwicr_pt
RU Russian St. Petersburg RUB ddc_cwicr_ru
ZH Chinese Shanghai CNY ddc_cwicr_zh

📊 Pipeline Stages

The CAD/BIM workflow processes data through 10 stages:

Stage Name Description
0 Collect BIM Data Extract elements from Revit via DDC Converter
1 Project Detection AI identifies project type (Residential, Commercial, etc.)
2 Phase Generation AI creates construction phases
3 Element Assignment AI maps BIM types to phases
4 Work Decomposition AI breaks types into work items ("Brick Wall" → masonry, mortar)
5 Vector Search Find matching rates in DDC CWICR via Qdrant
6 Unit Mapping Convert BIM units to rate units
7 Cost Calculation Qty × Unit Price for each work item
7.5 Validation CTO review for completeness and duplicates
8 Aggregation Sum by phases and categories
9 Report Generation Create HTML and Excel outputs

⚙️ LLM Model Selection

The workflow supports multiple AI providers. Enable your preferred model in the LLM Models section:

Model Node Name Status
OpenAI GPT-4o OpenAI LLM ✅ Default
Claude Opus 4 Anthropic Chat Model2 Disabled
Gemini 2.5 Pro Google Gemini Chat Model Disabled
xAI Grok xAI Grok Chat Model1 Disabled
DeepSeek DeepSeek Chat Model Disabled

To switch models: Enable the desired model node and Disable others.


📁 Output Files

Reports are saved to the project folder:

project_YYYY-MM-DD.html   ← Interactive report (opens in browser)
project_YYYY-MM-DD.xls    ← Excel-compatible spreadsheet





🔗 Qdrant Collections

The workflow automatically selects the correct collection based on language_code:

{LANG}_{CITY}_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR

Example: DE_BERLIN_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR


⚠️ Troubleshooting

Issue Solution
"Execute Command missing" (n8n 2.0+) Set NODES_EXCLUDE=[] environment variable. See n8n 2.0+ Setup
"No Excel file found" Check path_to_converter and project_file paths
"Qdrant connection failed" Verify Qdrant URL and API key in credentials
"Rate limit exceeded" Reduce batch size or add delays between API calls
"No pricing found" Check if the correct language collection exists in Qdrant
"Telegram webhook error" Ensure workflow is active and webhook URL is accessible
"Vision API failed" Verify Gemini or OpenAI Vision API key is valid

Vector Database

Ready-to-use Qdrant collections with OpenAI text-embedding-3-large embeddings for semantic search across construction work items.

Vector databases allow you to "talk" to your data in natural language – using simple sentences or short phrases instead of code or complex filters. This dramatically speeds up finding the right work item or cost line, even in very large datasets.

These Qdrant collections can be connected to application via modern automation and integration workflows (for example, low-code/no-code Workflow and Pipeline tools). You can build assistants that search, filter and explain construction work items, or integrate semantic search directly into your existing estimation and project-control tools.


Releases

Download QDRANT and CSV datasets (files larger than 1 gigabyte) from GitHub Releases.

Language Region CSV Files Qdrant Snapshot
🇸🇦 Arabic Dubai AR_DUBAI_*.csv AR_DUBAI_*_EMBEDDINGS_3072_DDC.snapshot
🇨🇳 Chinese Shanghai ZH_SHANGHAI_*.csv ZH_SHANGHAI_*_EMBEDDINGS_3072_DDC.snapshot
🇩🇪 German Berlin DE_BERLIN_*.csv DE_BERLIN_*_EMBEDDINGS_3072_DDC.snapshot
🇬🇧 English Toronto EN_TORONTO_*.csv EN_TORONTO_*_EMBEDDINGS_3072_DDC.snapshot
🇪🇸 Spanish Barcelona ES_BARCELONA_*.csv ES_BARCELONA_*_EMBEDDINGS_3072_DDC.snapshot
🇫🇷 French Paris FR_PARIS_*.csv FR_PARIS_*_EMBEDDINGS_3072_DDC.snapshot
🇮🇳 Hindi Mumbai HI_MUMBAI_*.csv HI_MUMBAI_*_EMBEDDINGS_3072_DDC.snapshot
🇧🇷 Portuguese São Paulo PT_SAOPAULO_*.csv PT_SAOPAULO_*_EMBEDDINGS_3072_DDC.snapshot
🇷🇺 Russian St. Petersburg RU_SPB_*.csv RU_SPB_*_EMBEDDINGS_3072_DDC.snapshot
Download v0.1.0

Collections

🇸🇦 ddc_cwicr_ar (Arabic) · 🇨🇳 ddc_cwicr_zh (Chinese) · 🇩🇪 ddc_cwicr_de (German) · 🇬🇧 ddc_cwicr_en (English) · 🇪🇸 ddc_cwicr_es (Spanish) · 🇫🇷 ddc_cwicr_fr (French) · 🇮🇳 ddc_cwicr_hi (Hindi) · 🇧🇷 ddc_cwicr_pt (Portuguese) · 🇷🇺 ddc_cwicr_ru (Russian)

Each collection contains 55,719 vectors with full payload metadata.

Docker Deployment

# docker-compose.yml
services:
  qdrant:
    image: qdrant/qdrant:latest
    container_name: ddc-cwicr-qdrant
    ports:
      - "6333:6333"
      - "6334:6334"
    volumes:
      - qdrant_storage:/qdrant/storage
      - ./snapshots:/qdrant/snapshots
    environment:
      - QDRANT__LOG_LEVEL=INFO
    restart: unless-stopped

volumes:
  qdrant_storage:
# Start
docker-compose up -d

# Import snapshot
curl -X POST "http://localhost:6333/collections/ddc_cwicr_en/snapshots/upload" \
  -H "Content-Type: multipart/form-data" \
  -F "snapshot=@ddc_cwicr_en.snapshot"

# Dashboard: http://localhost:6333/dashboard

Quick Start

Python - Tabular Data

import pandas as pd

# Parquet (recommended)
df = pd.read_parquet("DDC_CWICR_EN.parquet")

# Excel
df = pd.read_excel("DDC_CWICR_EN.xlsx")

print(f"Records: {len(df):,} | Fields: {len(df.columns)}")
print(df[['rate_code', 'rate_original_name', 'rate_unit', 'total_cost_per_position']].head())

Python - Semantic Search

from qdrant_client import QdrantClient
from openai import OpenAI

client = QdrantClient("localhost", port=6333)
openai = OpenAI()

# Search by natural language
query = "reinforced concrete foundation pouring"
embedding = openai.embeddings.create(
    input=query, 
    model="text-embedding-3-large"
).data[0].embedding

results = client.search(
    collection_name="ddc_cwicr_en",
    query_vector=embedding, 
    limit=5
)

for r in results:
    print(f"[{r.score:.3f}] {r.payload['rate_code']}: {r.payload['rate_original_name']}")

Filtered Search

from qdrant_client.models import Filter, FieldCondition, MatchValue, Range

# By department
results = client.search(
    collection_name="ddc_cwicr_en",
    query_vector=embedding,
    query_filter=Filter(must=[
        FieldCondition(key="department_name", match=MatchValue(value="Concrete and Reinforced Concrete"))
    ]),
    limit=10
)

# By price range
results = client.search(
    collection_name="ddc_cwicr_en",
    query_vector=embedding,
    query_filter=Filter(must=[
        FieldCondition(key="price_est_median", range=Range(gte=1000, lte=50000))
    ]),
    limit=10
)

Resources & Community

Website Demo GitHub YouTube LinkedIn Telegram

Consulting & Training

We work with leading construction, engineering, consulting agencies, and technology firms around the world to help them implement open data principles, automate CAD/BIM processing, and build robust ETL pipelines. We actively support organizations seeking practical solutions for digital transformation and interoperability, focusing on data quality and classification challenges while driving the adoption of open and automated workflows.

If you would like to test this solution with your own data or are interested in adapting the workflow to real project tasks, feel free to contact us. Our team delivers hands-on workshops, provides strategic consulting, and develops prototypes tailored to real project processes.

Contact

Contributing

DDC CWICR is a free and open project dedicated to making the construction industry more efficient, transparent, and technologically advanced. We are actively looking for like-minded enthusiasts who share this mission. If you create useful solutions and are ready to share them with the community, we are here to help you be heard.

We invite you to submit your open source workflows, pipelines, and integrations based on DDC CWICR-tools that anyone can freely use in their work. The top solutions will be published with full author attribution on GitHub and announced through our newsletter and social media channels, reaching tens of thousands of professional subscribers. This places your name directly in front of an international community of estimators, BIM specialists, and project managers.

Together we are changing the industry. You can send your solution to info@datadrivenconstruction.io with the subject "DDC Open Workflow" or submit a Pull Request directly to our GitHub repositories.

Automate construction data processing with ready-made CAD-BIM n8n workflows:

cad2data Pipeline

License

Database (DDC CWICR) - CC BY 4.0. Free to use, share, and adapt commercially. Attribution: "DDC CWICR by DataDrivenConstruction"

Code (workflows, scripts) - MIT. Free to use, modify, and distribute without restrictions.

Support the Project

If you find this useful, please consider supporting:

GitHub Sponsors Buy Me A Coffee


Unlock the Power of Data in Construction
Move to full-cycle data management where only unified structured data & processes remain

DataDrivenConstruction

© 2025 Artem Boiko · datadrivenconstruction.io

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 100.0%