npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@datadrivenconstruction/ddc-cwicr

v1.0.0

Published

Open Construction Cost Estimation Database — 55,719 work items, 27,672 resources, 9 languages with regional pricing

Readme

@datadrivenconstruction/ddc-cwicr

Open Construction Cost Estimation Database — 55,719 work items, 27,672 resources, 85 fields, 9 languages with regional pricing.

npm version License: CC BY 4.0 Platform: Windows | Linux | macOS

Part of the Data Driven Construction ecosystem Live demo: openconstructionestimate.com

What is DDC CWICR?

Construction Work Items, Components & Resources (CWICR) — a comprehensive multilingual construction cost database designed for automated cost estimation from text, photos, PDFs, and CAD/BIM models.

Key Features

  • 55,719 work items with full resource breakdowns
  • 27,672 resources (materials, labor, equipment)
  • 85 structured fields per record
  • 9 languages with regional pricing
  • Pre-computed OpenAI embeddings (3,072 dimensions) for semantic search
  • Apache Parquet format for fast analytics

Supported Languages & Regions

| Code | Language | Region | Currency | | ---- | ----------- | ---------------- | -------- | | ar | Arabic | Dubai | AED | | de | German | Berlin | EUR | | en | English | Toronto | CAD | | es | Spanish | Barcelona | EUR | | fr | French | Paris | EUR | | hi | Hindi | Mumbai | INR | | pt | Portuguese | São Paulo | BRL | | ru | Russian | St. Petersburg | RUB | | zh | Chinese | Shanghai | CNY |

Installation

npm install @datadrivenconstruction/ddc-cwicr

This package includes all 9 parquet data files (~376 MB).

CLI Usage

# List all languages and data status
ddc-cwicr list

# Show details for a language
ddc-cwicr info en
ddc-cwicr info ru

# Get path to parquet file (for use in Python/scripts)
ddc-cwicr path en

# List all installed data paths
ddc-cwicr paths

Node.js API

const { DDCCWICR } = require('@datadrivenconstruction/ddc-cwicr');
const cwicr = new DDCCWICR();

// Get path to parquet file
const enPath = cwicr.getDataPath('en');
const ruPath = cwicr.getDataPath('ru');

// Check if data is available
cwicr.hasData('de'); // true

// List all languages
const languages = cwicr.listLanguages();

// Get only installed data paths
const paths = cwicr.getInstalledPaths();

// Language info
const info = cwicr.getLanguageInfo('fr');
// { code: 'fr', name: 'French', region: 'Paris', currency: 'EUR', file: '...' }

Python Usage

Use the parquet files directly with pandas:

import pandas as pd

# Get path from CLI
# $ ddc-cwicr path en
# C:\...\data\ENG_TORONTO_workitems_costs_resources_DDC_CWICR.parquet

df = pd.read_parquet('path/to/ENG_TORONTO_workitems_costs_resources_DDC_CWICR.parquet')

# Query work items
walls = df[df['work_item_name'].str.contains('wall', case=False)]
print(walls[['work_item_name', 'unit', 'total_cost_median']].head())

Data Schema (85 Fields)

Classification

  • category, department, section, subsection

Work Item

  • rate_code, work_item_name, unit, scope_flag

Resources

  • material_code, material_name, material_unit, material_quantity, material_price

Labor

  • workers, engineers, machinists, labor_hours, labor_wages

Machinery

  • equipment_class, equipment_hours, equipment_rates, fuel_costs

Pricing

  • total_cost_min, total_cost_max, total_cost_median

Embeddings

  • embedding — OpenAI text-embedding-3-large (3,072 dimensions)

Cost Estimation Formula

Cost = Technology Norm × Regional Price

Example (Ceramic tile flooring, Berlin):
  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²

n8n Workflows

This package includes 4 production-ready n8n workflow templates:

  1. Text-based cost estimation — Telegram bot with semantic search
  2. Photo-based estimation — GPT-4 Vision analysis with auto-dimensioning
  3. Universal bot — Text + Photo + PDF estimation via Telegram
  4. CAD/BIM pipeline — 4D/5D cost estimation from Revit/IFC/DWG

Import from the workflows/ directory into your n8n instance.

Links

License

  • Database: CC BY 4.0 — Attribution: "DDC CWICR by DataDrivenConstruction"
  • Code: MIT