Home
Softono
OpenConstructionEstimate-DDC-CWICR

OpenConstructionEstimate-DDC-CWICR

Open source HTML
161
Stars
41
Forks
5
Issues
9
Watchers
1 month
Last Commit

About OpenConstructionEstimate-DDC-CWICR

Open multilingual construction cost database for AI Agents - 55K+ work items, 27K+ resources, 30 regions. Semantic search via Qdrant vector DB

Platforms

Web Self-hosted

Languages

HTML

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

๐Ÿ‡ฌ๐Ÿ‡ง English โ€ข ๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡ โ€ข ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol โ€ข ๐Ÿ‡ง๐Ÿ‡ท Portuguรชs โ€ข ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน โ€ข ๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž โ€ข ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch โ€ข ๐Ÿ‡ซ๐Ÿ‡ท Franรงais

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


๐Ÿ—๏ธ OpenConstructionERP โ€” Use This Database End-to-End

Open-source ERP that ships this database pre-loaded. Professional BoQ editor, AI-powered photo / PDF / CAD takeoff, 4D/5D planning, dashboards โ€” all running on the 30-track CWICR cost data below.

YouTube demo   Live app   GitHub repo

OpenConstructionERP hero

Get up and running in 30 seconds

pip install --upgrade openconstructionerp
openestimate                      # opens the desktop app at http://localhost:8080

The app launches with the 30 CWICR country tracks pre-installed โ€” start a new project, pick a region, and the BoQ editor instantly suggests rates from ddc_de_berlin, ddc_au_sydney, ddc_hr_zagreb, etc. with proper localised prices and translated work descriptions.

Feature previews


AI Photo โ†’ Estimate
Snap a site photo, GPT-4 Vision builds a BoQ

BoQ Editor
Excel-like editor backed by 55 K rates ร— 30 tracks

PDF Takeoff
Auto-extract quantities from architectural PDFs

4D Schedule ร— BIM
Tasks linked to IFC objects, costs flow to dashboards

Docs   Quick start   Hero video



DataDrivenConstruction clients and users



๐Ÿ“‘ Table of Contents

๐Ÿค– AI Integration

๐Ÿ“Š Database & Data

โšก n8n Workflows

๐Ÿ—๏ธ CAD/BIM Pipeline

๐Ÿ” Vector Database

๐ŸŒ API

๐Ÿš€ Getting Started

๐Ÿ‘ฅ Community


๐Ÿš€ Perfect Fuel for Your AI Products

Just clone the repo and describe what you want โ€” AI does the rest

DDC CWICR is not just a database โ€” it's ready-to-use fuel for AI-powered applications. Whether you're building cost estimation bots, automating construction workflows, or creating intelligent assistants โ€” this data works out of the box with modern AI tools.

Why This Database is Ideal for AI

Feature Benefit
Pre-computed embeddings No need to generate vectors โ€” semantic search works instantly
Structured 85-field schema AI can reason about data relationships and provide accurate answers
11 languages included Build multilingual applications without translation overhead
55,000+ work items Comprehensive coverage for any construction estimation task
Resource-based methodology Transparent data that AI can explain and break down

๐Ÿ“‹ Ready-Made Work Descriptions for Any System

Ready-made job description generator

DDC CWICR provides complete, structured work descriptions that can be displayed in any system or format. Each work item contains all the information needed by different stakeholders:

Stakeholder What They Get
๐Ÿข Client / Investor Full cost transparency, resource breakdown, price justification for investment decisions
๐Ÿ“Š Cost Estimator Detailed rates, labor hours, material quantities, equipment costs โ€” ready for BOQ generation
๐Ÿ‘ท Site Manager / Foreman Work composition, resource requirements, labor norms for daily planning and execution
๐Ÿ”ง Contractor / Executor Complete specifications, unit rates, productivity benchmarks for accurate bidding and scheduling

Export to Excel, PDF, HTML, ERP systems, BIM platforms โ€” the structured 85-field schema ensures data integrity across all outputs.

๐Ÿ› ๏ธ Works Perfectly With

Claude Code
Claude Code
AI coding assistant CLI
Google Antigravity
Google Antigravity
Google Antigravity
n8n
n8n
Workflow automation
Dify
Dify
LLM app development
Sim AI
Sim AI & Others
AI platforms

โญ 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.





๐ŸŽฏ DDC Skills โ€” 196 Ready-to-Use AI Automations

DDC Skills for AI Agents in Construction โ€” 196 automation skills with direct integration into this CWICR database. Clone, open with AI coding assistant, describe what you need.

DDC Skills


๐Ÿ’ป Claude Code & Google Antigravity โ€” AI Coding Assistants

The fastest way to work with DDC CWICR. Just open the repository in Claude Code or Google Antigravity and ask questions in natural language.

Getting Started:

# Clone the repository
git clone https://github.com/datadrivenconstruction/OpenConstructionEstimate-DDC-CWICR.git

# Open with Claude Code
cd OpenConstructionEstimate-DDC-CWICR
claude

Example Prompts:

Task Prompt
Explore data "Show me the structure of this construction database and explain what data is available"
Find work items "Find all work items related to concrete foundations and show their costs"
Build queries "Write a Python script to search for plumbing work items with labor hours > 100"
Create reports "Generate a cost breakdown report for residential renovation works"
Analyze costs "Compare material costs between different wall construction methods"
Build integrations "Create a script that connects to the Qdrant database and performs semantic search"

Pro Tips:

  • Point Claude to specific files: "Analyze the Parquet file and summarize the cost distribution"
  • Ask for explanations: "Explain how the resource-based costing methodology works in this database"
  • Request modifications: "Modify the n8n workflow to add email notifications"

โšก n8n โ€” Visual Workflow Automation

Build powerful automation pipelines without coding. Connect DDC CWICR to 400+ apps and services.

Use Cases:

Workflow Description
Telegram Bot Users send text/photo โ†’ AI extracts work items โ†’ Returns cost estimate
Email Automation Receive BOQ via email โ†’ Process with AI โ†’ Send formatted estimate
CRM Integration New project in CRM โ†’ Auto-generate preliminary estimate โ†’ Update deal value
BIM Pipeline Export from Revit โ†’ Extract quantities โ†’ Match with DDC rates โ†’ Generate 5D report
Slack Bot Team asks questions โ†’ AI searches database โ†’ Returns relevant work items

Quick Start:

  1. Download workflow JSON from this repo
  2. Import into n8n: Workflows โ†’ Import โ†’ From File
  3. Configure credentials (OpenAI, Qdrant, Telegram)
  4. Activate and test

See n8n Workflows section for detailed setup.


๐Ÿ“‹ Universal Use Cases

No matter which AI tool you choose, DDC CWICR enables:

Use Case Description
Instant Cost Estimation Get construction costs from text descriptions or photos
BOQ Generation Auto-generate bill of quantities from project descriptions
Price Benchmarking Compare costs across regions and languages
Resource Planning Calculate labor hours, materials, and equipment needs
Investment Analysis Deep-dive cost audits with full resource transparency
Multilingual Support Serve users in 11 languages with localized pricing
BIM Integration Connect to Revit/IFC for automated 4D/5D estimation
Training AI Models Use structured data for fine-tuning construction AI

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_operators "1.67"
        int count_workers_per_unit "172"
        int count_operators_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_operator_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..."
    }

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_operators_per_unit, count_total_people_per_unit, labor_hours_construction_workers, labor_hours_operators, labor_hours_engineers, total_labor_hours_workers_operators, total_labor_hours_all_personnel, cost_of_working_hours, count_people_per_day

Machinery - machine_class2_name, machine_class3_name, personnel_operator_code, personnel_operator_grade, price_operator_wages, price_relocation_included, price_cost_without_wages, electricity_consumption_kwh_per_machine_hour, electricity_cost_per_unit, electricity_cost_total_sum, cost_operator_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/>11 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

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


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

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
๐ŸŒ 11 languages DE, EN, RU, ES, FR, PT, ZH, AR, HI, US, UK
๐Ÿ“Š 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

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.




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

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
๐ŸŒ 11 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

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 the snapshot from the corresponding language folder in this repository and import:

curl -X POST "http://localhost:6333/collections/ddc_en_toronto/snapshots/upload" \
  -H "Content-Type: multipart/form-data" \
  -F "snapshot=@EN___DDC_CWICR/EN_TORONTO_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.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_ar_dubai
DE German Berlin EUR ddc_de_berlin
EN English Toronto CAD ddc_en_toronto
ES Spanish Barcelona EUR ddc_sp_barcelona
FR French Paris EUR ddc_fr_paris
HI Hindi Mumbai INR ddc_hi_mumbai
PT Portuguese Sรฃo Paulo BRL ddc_pt_saopaulo
RU Russian St. Petersburg RUB ddc_ru_stpetersburg
ZH Chinese Shanghai CNY ddc_zh_shanghai
US English USA USD ddc_usa_usd
UK English UK GBP ddc_uk_gbp

๐Ÿ“Š 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.


Qdrant Vector Database Snapshots

All Qdrant snapshots are included directly in the corresponding language folders of this repository (stored via Git LFS).

Language Region Qdrant Collection Snapshot File (in language folder) Points
๐Ÿ‡ธ๐Ÿ‡ฆ Arabic Dubai ddc_ar_dubai AR___DDC_CWICR/AR_DUBAI_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,121
๐Ÿ‡ฉ๐Ÿ‡ช German Berlin ddc_de_berlin DE___DDC_CWICR/DE_BERLIN_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡ฌ๐Ÿ‡ง English Toronto ddc_en_toronto EN___DDC_CWICR/EN_TORONTO_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡ช๐Ÿ‡ธ Spanish Barcelona ddc_sp_barcelona ES___DDC_CWICR/SP_BARCELONA_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡ซ๐Ÿ‡ท French Paris ddc_fr_paris FR___DDC_CWICR/FR_PARIS_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡ฎ๐Ÿ‡ณ Hindi Mumbai ddc_hi_mumbai HI___DDC_CWICR/HI_MUMBAI_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,687
๐Ÿ‡ง๐Ÿ‡ท Portuguese Sรฃo Paulo ddc_pt_saopaulo PT___DDC_CWICR/PT_SAOPAULO_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡ท๐Ÿ‡บ Russian St. Petersburg ddc_ru_stpetersburg RU___DDC_CWICR/RU_STPETERSBURG_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡ฌ๐Ÿ‡ง UK GBP ddc_uk_gbp UK___DDC_CWICR/UK_GBP_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡บ๐Ÿ‡ธ USA USD ddc_usa_usd US___DDC_CWICR/USA_USD_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719
๐Ÿ‡จ๐Ÿ‡ณ Chinese Shanghai ddc_zh_shanghai ZH___DDC_CWICR/ZH_SHANGHAI_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot 55,719

Derived tracks (19) โ€” built by 0_Workflow and Pipelines CWICR/python/11-country-track-builder/

Norms (labour hours, machine hours, resource quantities) are bytewise-identical to the source track; only prices and translatable text differ. rate_code and resource_code are stable across all tracks.

Language Region Qdrant Collection Snapshot File Source
๐Ÿ‡ฆ๐Ÿ‡บ English Sydney ddc_au_sydney AU___DDC_CWICR/AU_SYDNEY_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ง๐Ÿ‡ฌ Bulgarian Sofia ddc_bg_sofia BG___DDC_CWICR/BG_SOFIA_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡จ๐Ÿ‡ฟ Czech Prague ddc_cs_prague CS___DDC_CWICR/CS_PRAGUE_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ญ๐Ÿ‡ท Croatian Zagreb ddc_hr_zagreb HR___DDC_CWICR/HR_ZAGREB_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesian Jakarta ddc_id_jakarta ID___DDC_CWICR/ID_JAKARTA_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ฎ๐Ÿ‡น Italian Rome ddc_it_rome IT___DDC_CWICR/IT_ROME_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ฏ๐Ÿ‡ต Japanese Tokyo ddc_ja_tokyo JA___DDC_CWICR/JA_TOKYO_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ฐ๐Ÿ‡ท Korean Seoul ddc_ko_seoul KO___DDC_CWICR/KO_SEOUL_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ฒ๐Ÿ‡ฝ Spanish Mexico City ddc_mx_mexicocity MX___DDC_CWICR/MX_MEXICOCITY_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot SP_BARCELONA
๐Ÿ‡ณ๐Ÿ‡ฌ English Lagos ddc_ng_lagos NG___DDC_CWICR/NG_LAGOS_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ณ๐Ÿ‡ฑ Dutch Amsterdam ddc_nl_amsterdam NL___DDC_CWICR/NL_AMSTERDAM_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ณ๐Ÿ‡ฟ English Auckland ddc_nz_auckland NZ___DDC_CWICR/NZ_AUCKLAND_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ต๐Ÿ‡ฑ Polish Warsaw ddc_pl_warsaw PL___DDC_CWICR/PL_WARSAW_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ท๐Ÿ‡ด Romanian Bucharest ddc_ro_bucharest RO___DDC_CWICR/RO_BUCHAREST_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ธ๐Ÿ‡ช Swedish Stockholm ddc_sv_stockholm SV___DDC_CWICR/SV_STOCKHOLM_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡น๐Ÿ‡ญ Thai Bangkok ddc_th_bangkok TH___DDC_CWICR/TH_BANGKOK_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡น๐Ÿ‡ท Turkish Istanbul ddc_tr_istanbul TR___DDC_CWICR/TR_ISTANBUL_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot DE_BERLIN
๐Ÿ‡ป๐Ÿ‡ณ Vietnamese Hanoi ddc_vi_hanoi VI___DDC_CWICR/VI_HANOI_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP
๐Ÿ‡ฟ๐Ÿ‡ฆ English Johannesburg ddc_za_johannesburg ZA___DDC_CWICR/ZA_JOHANNESBURG_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot UK_GBP

All collections use 3072-dimensional OpenAI embeddings with full payload metadata.

Collections

Shipped (11): ๐Ÿ‡ธ๐Ÿ‡ฆ ddc_ar_dubai ยท ๐Ÿ‡ฉ๐Ÿ‡ช ddc_de_berlin ยท ๐Ÿ‡จ๐Ÿ‡ฆ ddc_en_toronto ยท ๐Ÿ‡ช๐Ÿ‡ธ ddc_sp_barcelona ยท ๐Ÿ‡ซ๐Ÿ‡ท ddc_fr_paris ยท ๐Ÿ‡ฎ๐Ÿ‡ณ ddc_hi_mumbai ยท ๐Ÿ‡ง๐Ÿ‡ท ddc_pt_saopaulo ยท ๐Ÿ‡ท๐Ÿ‡บ ddc_ru_stpetersburg ยท ๐Ÿ‡ฌ๐Ÿ‡ง ddc_uk_gbp ยท ๐Ÿ‡บ๐Ÿ‡ธ ddc_usa_usd ยท ๐Ÿ‡จ๐Ÿ‡ณ ddc_zh_shanghai

Derived (19): ๐Ÿ‡ฆ๐Ÿ‡บ ddc_au_sydney ยท ๐Ÿ‡ง๐Ÿ‡ฌ ddc_bg_sofia ยท ๐Ÿ‡จ๐Ÿ‡ฟ ddc_cs_prague ยท ๐Ÿ‡ญ๐Ÿ‡ท ddc_hr_zagreb ยท ๐Ÿ‡ฎ๐Ÿ‡ฉ ddc_id_jakarta ยท ๐Ÿ‡ฎ๐Ÿ‡น ddc_it_rome ยท ๐Ÿ‡ฏ๐Ÿ‡ต ddc_ja_tokyo ยท ๐Ÿ‡ฐ๐Ÿ‡ท ddc_ko_seoul ยท ๐Ÿ‡ฒ๐Ÿ‡ฝ ddc_mx_mexicocity ยท ๐Ÿ‡ณ๐Ÿ‡ฌ ddc_ng_lagos ยท ๐Ÿ‡ณ๐Ÿ‡ฑ ddc_nl_amsterdam ยท ๐Ÿ‡ณ๐Ÿ‡ฟ ddc_nz_auckland ยท ๐Ÿ‡ต๐Ÿ‡ฑ ddc_pl_warsaw ยท ๐Ÿ‡ท๐Ÿ‡ด ddc_ro_bucharest ยท ๐Ÿ‡ธ๐Ÿ‡ช ddc_sv_stockholm ยท ๐Ÿ‡น๐Ÿ‡ญ ddc_th_bangkok ยท ๐Ÿ‡น๐Ÿ‡ท ddc_tr_istanbul ยท ๐Ÿ‡ป๐Ÿ‡ณ ddc_vi_hanoi ยท ๐Ÿ‡ฟ๐Ÿ‡ฆ ddc_za_johannesburg

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_en_toronto/snapshots/upload" \
  -H "Content-Type: multipart/form-data" \
  -F "snapshot=@EN___DDC_CWICR/EN_TORONTO_workitems_costs_resources_EMBEDDINGS_3072_DDC_CWICR.snapshot"

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

Linux APT Packages

Install Qdrant + construction cost data with a single command on any Debian/Ubuntu system. No Docker, no manual setup โ€” just apt install and search.

sudo apt install ddc-cwicr-en
  โ”‚
  โ”œโ”€โ”€ ddc-qdrant              Qdrant v1.16.3 binary + systemd service
  โ”‚     โ””โ”€โ”€ localhost:6333    vector database ready on port 6333
  โ”‚
  โ””โ”€โ”€ postinst                downloads ~1 GB snapshot from GitHub Releases
        โ””โ”€โ”€ PUT /snapshots/recover โ†’ 55,719 vectors loaded

Setup APT Repository

# Add the DDC package repository
echo "deb [trusted=yes] https://pkg.datadrivenconstruction.io stable main" \
  | sudo tee /etc/apt/sources.list.d/ddc.list

sudo apt update

Install a Language Collection

# Install English construction cost database (downloads ~1 GB of vector data)
sudo apt install ddc-cwicr-en

# Verify Qdrant is running
systemctl status qdrant
curl http://localhost:6333/collections

The .deb package is only ~5 KB โ€” the heavy vector data is downloaded directly from GitHub Releases during installation and restored into Qdrant automatically.

Available Packages

Package Language Region Data Size Collection
ddc-cwicr-en English Toronto ~1.2 GB ddc_en_toronto
ddc-cwicr-de German Berlin ~1.1 GB ddc_de_berlin
ddc-cwicr-ru Russian St. Petersburg ~1.1 GB ddc_ru_stpetersburg
ddc-cwicr-fr French Paris ~0.9 GB ddc_fr_paris
ddc-cwicr-es Spanish Barcelona ~0.9 GB ddc_sp_barcelona
ddc-cwicr-ar Arabic Dubai ~0.9 GB ddc_ar_dubai
ddc-cwicr-zh Chinese Shanghai ~1.1 GB ddc_zh_shanghai
ddc-cwicr-pt Portuguese Sรฃo Paulo ~0.9 GB ddc_pt_saopaulo
ddc-cwicr-hi Hindi Mumbai ~1.0 GB ddc_hi_mumbai
ddc-cwicr-us English USA ~1.1 GB ddc_usa_usd
ddc-cwicr-uk English UK ~1.1 GB ddc_uk_gbp

Install multiple languages side by side:

sudo apt install ddc-cwicr-en ddc-cwicr-de ddc-cwicr-fr

CLI Search Tool

The optional ddc-cwicr-cli package provides ddc-search โ€” a command-line interface for querying the database directly from the terminal.

sudo apt install ddc-cwicr-cli

Semantic search (requires OpenAI API key):

export OPENAI_API_KEY=sk-...

ddc-search "reinforced concrete foundation 300mm"
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘  DDC CWICR Search Results โ€” ddc_en_toronto (55,719 items)      โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  #1  [0.847]  03.01.004
      Reinforced concrete strip foundations, width 300-600mm
      Unit: mยณ    Labor: $45.20    Material: $189.50    Total: $287.30

  #2  [0.831]  03.01.007
      Reinforced concrete pad foundations up to 500mm depth
      Unit: mยณ    Labor: $52.10    Material: $195.80    Total: $312.60

  #3  [0.814]  03.02.001
      Concrete foundation walls, reinforced, 200-400mm thick
      Unit: mยณ    Labor: $48.90    Material: $178.40    Total: $279.50

Keyword search (no API key needed):

ddc-search --keyword "concrete"

Other options:

# Search a specific language collection
ddc-search --collection ddc_de_berlin "Stahlbetonfundament"

# List all installed collections
ddc-search --list

# JSON output for scripting and automation
ddc-search --json "floor tiles installation"

# Limit number of results
ddc-search --limit 10 "steel beam HEB 300"

Package Architecture

Package Type Size Description
ddc-qdrant Server ~27 MB Qdrant v1.16.3 binary, systemd service, auto-start
ddc-cwicr-{lang} Data ~5 KB Postinst downloads snapshot (~1 GB) from GitHub
ddc-cwicr-cli Tool ~5 KB Python3 CLI, no pip dependencies
  • ddc-qdrant is installed automatically as a dependency of any ddc-cwicr-{lang} package
  • Removing a language package (apt remove ddc-cwicr-en) deletes the collection from Qdrant
  • Purging ddc-qdrant (apt purge ddc-qdrant) removes all data and the system user
  • Available for amd64 and arm64 architectures

๐ŸŒ Pricing Search API โ€” BuildCalculator.io

API Docs   No Auth   Free   Rate Limit

Free REST API for searching construction work items with full cost breakdown, labor, materials, and equipment data. 55,719 items across 11 languages with 84 fields per item.

Base URL: https://buildcalculator.io/api/v1

API Endpoints

GET/POST /api/v1/search โ€” Search Construction Items

Parameter Type Default Required Description
q string โ€” Yes Search query (min 2 characters). Works in any language
lang string en No Database language: en, ru, de, fr, es, pt, zh, ar, hi
top integer 5 No Number of results (1โ€“20)

GET /api/v1/languages โ€” List Supported Languages

Returns all available languages with item counts.

GET /api/v1/stats โ€” Database Statistics

Returns item counts, categories, languages, and metadata.

API Code Examples

cURL:

curl "https://buildcalculator.io/api/v1/search?q=concrete+foundation&lang=en&top=5"

Python:

import requests

response = requests.get("https://buildcalculator.io/api/v1/search",
    params={"q": "brick masonry walls", "lang": "en", "top": 5})
data = response.json()

for item in data["results"]:
    print(f"{item['name']} โ€” {item['pricing']['total_per_unit']} EUR/{item['unit']}")

JavaScript:

const res = await fetch(
  "https://buildcalculator.io/api/v1/search?q=HVAC+ducting&lang=en&top=3"
);
const data = await res.json();

Response example:

{
  "query": "concrete foundation",
  "language": "en",
  "results_count": 5,
  "results": [
    {
      "rate_code": "KANE_KAME_KAKAME_KAMECON",
      "name": "Concrete preparation device",
      "unit": "m3",
      "currency": "EUR",
      "pricing": {
        "total_per_unit": 167.51,
        "labor_per_unit": 18.80,
        "material_per_unit": 142.92,
        "equipment_per_unit": 4.80
      },
      "cost_breakdown": {
        "labor_pct": 11.3,
        "material_pct": 85.8,
        "equipment_pct": 2.9
      }
    }
  ]
}

Error codes:

Code Meaning Action
400 Missing or invalid query Check q parameter (min 2 chars)
429 Rate limit exceeded Wait and retry (60 req/min)
500 Server error Try again or contact support

๐Ÿ“– Full documentation: buildcalculator.io/api-docs


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_en_toronto",
    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_en_toronto",
    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_en_toronto",
    query_vector=embedding,
    query_filter=Filter(must=[
        FieldCondition(key="price_est_median", range=Range(gte=1000, lte=50000))
    ]),
    limit=10
)

๐Ÿ’ป Developer Examples

The examples/ directory contains ready-to-run code in multiple languages โ€” from basic data loading to advanced RAG pipelines and cost estimation.

Three Ways to Start

Path Setup Time to First Result
Zero setup curl or fetch() to REST API 10 seconds
Local data pip install pandas pyarrow + Parquet file 2 minutes
Full stack Docker + Qdrant + OpenAI API key 5 minutes

Available Examples

# Example Language Level
01 Load and explore data Python, JS, Rust, R Beginner
02 Semantic search with Qdrant Python, JS, Rust Beginner
03 Cost estimation from text Python, JS Intermediate
04 Cost estimation from photos Python Intermediate
05 BOQ generation & Excel export Python, JS Intermediate
06 RAG pipeline (Claude + Qdrant) Python Advanced
07 Multi-language cost comparison Python Intermediate
08 Data analysis & visualization Python, R Intermediate
09 Filtered & faceted search Python Intermediate
10 Embedding generation pipeline Python Advanced
โ€” n8n workflow guides Markdown All levels
โ€” Shell setup & API examples Bash/cURL Beginner

Includes sample data (100-row Parquet extract), Docker Compose for Qdrant, and .env template.

โ†’ Browse all examples


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 [email protected] 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

๐Ÿค– AI Instructions

The AI_INSTRUCTIONS/ folder contains comprehensive documentation for AI coding assistants to work effectively with this construction cost database.

What is DDC CWICR?

DDC CWICR (Construction Work Items, Components & Resources) is an open-source construction cost database containing:

  • 55,719 work items โ€” detailed construction operations with full cost breakdowns
  • 27,672 resources โ€” materials, labor, and equipment with regional pricing
  • 85 data fields โ€” structured schema for accurate cost calculations
  • 11 languages โ€” with region-specific pricing (EUR, USD, CAD, RUB, CNY, etc.)
  • Pre-computed embeddings โ€” 3072-dimensional OpenAI vectors for semantic search

Resource-Based Methodology

The database uses a resource-based costing approach that separates:

  • Technology norms (unchanging) โ€” labor hours, material quantities, equipment time
  • Regional prices (volatile) โ€” hourly rates, material costs, fuel prices
Actual Cost = Technology Norm ร— Regional Price

This allows accurate estimation across different regions and time periods.

AI Instructions Files

File Purpose
INSTRUCTIONS.md Main overview, quick start, data formats
CLAUDE.md Claude Code specific patterns and examples
OPENCODE.md Concise instructions for Opencode
ANTIGRAVITY.md GCP integration (BigQuery, Vertex AI, Qdrant)
DATABASE_SCHEMA.md Complete 85-field schema reference

n8n Workflows โ€” Examples & Templates

The included n8n workflows are examples and templates demonstrating cost estimation logic. They can be:

  • โœ… Used as-is for quick deployment
  • โœ… Partially adapted for specific business requirements
  • โœ… Studied to understand the cost calculation methodology
  • โœ… Referenced when building custom integrations on any platform

The workflows demonstrate: database queries, work item matching, regional pricing logic, and report generation. AI can analyze these to understand the complete estimation process.

Why This Matters

AI assistants can help you:

  • Query the database using natural language
  • Find work items by semantic search
  • Calculate costs with regional pricing
  • Generate reports and export data
  • Build integrations with cloud services
  • Understand cost calculation methodology from workflow examples

Quick Start with AI

  1. Open the project in your AI-enabled IDE
  2. Ask: "Show me all concrete work items with their costs"
  3. The AI will use the instructions to query the data correctly

Book: For methodology details, see Data-Driven Construction Book


License

This repository is dual-licensed. See LICENSE for the full manifest, NOTICE for third-party attributions and the EU sui generis database-right notice, and DATA_DICTIONARY.md for the data schema.

Content Licence Canonical text
Data (CSV, XLSX, Parquet, Qdrant snapshots across 11 language / region tracks) CC BY 4.0 โ€” Creative Commons Attribution 4.0 International LICENSE-DATA.txt
Code (n8n workflows under 0_Workflow and Pipelines CWICR/, AI agent instructions under 1_AI_INSTRUCTIONS/, Python / JS / R / Rust / shell adapter scripts, Dockerfiles) Apache-2.0 โ€” Apache License, Version 2.0 LICENSE-CODE.txt
Documentation (*.md in all languages) CC BY 4.0 LICENSE-DATA.txt
PDF book (DataDrivenConstruction_Book_2ndEdition_ArtemBoiko_2025_en-US.pdf) All Rights Reserved โ€” personal reading only โ€”

What you CAN do with the DATA (CC BY 4.0)

โœ… Use commercially Build products, SaaS, apps, APIs โ€” no cost, no permission needed
โœ… Copy & redistribute Share the data in any medium or format
โœ… Modify & adapt Transform, remix, build upon for any purpose
โœ… Use for AI / ML training Train models, build RAG pipelines, create embeddings
โœ… Use in research Academic papers, reports, industry analysis

What you MUST do (CC BY 4.0)

๐Ÿ“Œ Give attribution You must credit the source in every use โ€” see examples below
๐Ÿ“Œ Indicate changes If you modified the data, you must state what was changed
๐Ÿ“Œ Keep the licence Include a link to CC BY 4.0 when redistributing

Attribution โ€” required format

Every project, product, publication, or application that uses DDC CWICR data must include:

DDC CWICR by Artem Boiko / DataDrivenConstruction
https://github.com/datadrivenconstruction/OpenConstructionEstimate-DDC-CWICR
Licensed under CC BY 4.0

A machine-readable citation is provided in CITATION.cff; GitHub surfaces it as the "Cite this repository" button.

Examples of how to attribute:

Where How
README / documentation Data source: DDC CWICR by Artem Boiko / DataDrivenConstruction (CC BY 4.0)
Web app (footer or About) Construction cost data ยฉ Artem Boiko / DataDrivenConstruction โ€” CC BY 4.0
Academic paper Boiko, A. (2022-2026). DDC CWICR โ€” Construction Work Items, Costs & Resources. DataDrivenConstruction.
Mobile / desktop app Credits or About screen: Cost data: DDC CWICR by DataDrivenConstruction (CC BY 4.0)
API / SaaS API docs or terms page: Data provided by DDC CWICR (CC BY 4.0) โ€” datadrivenconstruction.io

Commercial licensing

CC BY 4.0 already permits commercial use subject to the attribution condition. A separate commercial licence is available if you need any of: an attribution waiver, indemnification for the data as delivered, a data-processing agreement (DPA), a service-level agreement, or regulated- industry compliance documentation.

Contact: [email protected].

Security

Do not open public GitHub issues for security vulnerabilities. Report privately via GitHub Security Advisories or by email to [email protected]. See SECURITY.md for the full coordinated-disclosure policy, response timelines, scope, supply-chain-integrity posture (Git LFS hashes), and alignment with EU Regulation 2024/2847 (Cyber Resilience Act) reporting obligations.

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


Trademarks

Autodeskยฎ, Revitยฎ, AutoCADยฎ, and DWGโ„ข are registered trademarks or trademarks of Autodesk, Inc. OpenAIโ„ข is a trademark of OpenAI, Inc. Qdrant is a trademark of Qdrant Solutions GmbH. All other brand names, product names, or trademarks belong to their respective holders.

This project is not affiliated with, endorsed by, or sponsored by Autodesk, OpenAI, Qdrant, or any other trademark holders mentioned above.