Build multi-agent AI systems for construction estimation. Use CrewAI/LangGraph to orchestrate specialized agents: QTO agent, pricing agent, validation agent. Automate complex estimation workflows.
npx skills add https://github.com/datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction --skill multi-agent-estimation
In 2026, AI agents are moving from single-task assistants to orchestrated multi-agent systems. This skill enables building a crew of specialized AI agents that work together to automate construction estimation.
> "Thanks to LLM nodes, you can simply ask ChatGPT, Claude, or any advanced AI assistant to generate n8n automation pipelines — whether for extracting tables from PDFs, validating parameters, or producing custom QTO tables — and get ready-to-run workflows in seconds." — Artem Boiko
┌─────────────────────────────────────────────────────────────────┐
│ MULTI-AGENT ESTIMATION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ QTO │ │ Pricing │ │Validation│ │ Report │ │
│ │ Agent │──▶│ Agent │──▶│ Agent │──▶│ Agent │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Extract Match to Validate Generate │
│ quantities CWICR DB totals Excel/PDF │
│ │
└─────────────────────────────────────────────────────────────────┘
from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI
# Initialize LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# QTO Agent - Extracts quantities from documents
qto_agent = Agent(
role="Quantity Takeoff Specialist",
goal="Extract accurate quantities from IFC models and PDF drawings",
backstory="""You are an expert quantity surveyor with 20 years of
experience in construction. You meticulously extract volumes, areas,
and counts from building models and drawings.""",
llm=llm,
verbose=True
)
# Pricing Agent - Matches items to price database
pricing_agent = Agent(
role="Cost Estimator",
goal="Match extracted quantities to CWICR database and apply unit rates",
backstory="""You are a senior estimator who knows construction costs
inside out. You match work items to standardized codes and apply
appropriate unit rates based on project location and conditions.""",
llm=llm,
verbose=True
)
# Validation Agent - Checks for errors and outliers
validation_agent = Agent(
role="Quality Assurance Specialist",
goal="Validate estimate accuracy and flag potential errors",
backstory="""You review estimates for completeness, accuracy, and
reasonableness. You catch errors that others miss and ensure
estimates are defensible.""",
llm=llm,
verbose=True
)
# Report Agent - Generates final deliverables
report_agent = Agent(
role="Report Generator",
goal="Create professional estimate reports in Excel and PDF",
backstory="""You transform raw estimate data into polished,
professional reports that clients can understand and trust.""",
llm=llm,
verbose=True
)
# Task 1: Extract quantities from IFC
qto_task = Task(
description="""
Extract all quantities from the provided IFC model:
- Walls: volumes, areas, lengths
- Slabs: areas, volumes
- Columns: counts, volumes
- Beams: lengths, volumes
Group by building level and element type.
Output as structured JSON.
""",
expected_output="JSON with quantities grouped by level and type",
agent=qto_agent
)
# Task 2: Match to price database
pricing_task = Task(
description="""
For each extracted quantity:
1. Match to CWICR code using semantic search
2. Apply unit rate from price database
3. Calculate line item totals
4. Add markup percentages (OH&P, contingency)
Output detailed cost breakdown.
""",
expected_output="Cost breakdown with CWICR codes and totals",
agent=pricing_agent,
context=[qto_task]
)
# Task 3: Validate estimate
validation_task = Task(
description="""
Review the estimate for:
- Missing scope items
- Unrealistic unit rates (compare to historical)
- Math errors
- Inconsistent quantities
Flag any issues with severity rating.
""",
expected_output="Validation report with issues and severity",
agent=validation_agent,
context=[pricing_task]
)
# Task 4: Generate report
report_task = Task(
description="""
Generate professional estimate report:
- Executive summary with total
- Detailed breakdown by CSI division
- Assumptions and exclusions
- Risk items identified during validation
Format for Excel export.
""",
expected_output="Formatted estimate report ready for export",
agent=report_agent,
context=[pricing_task, validation_task]
)
# Create the crew
estimation_crew = Crew(
agents=[qto_agent, pricing_agent, validation_agent, report_agent],
tasks=[qto_task, pricing_task, validation_task, report_task],
verbose=True
)
# Execute
result = estimation_crew.kickoff(inputs={
"ifc_path": "building.ifc",
"price_db": "cwicr_prices.xlsx",
"project_location": "Berlin, Germany"
})
print(result)
{
"workflow": "Multi-Agent Estimation",
"nodes": [
{
"name": "Trigger",
"type": "Webhook",
"note": "Receive IFC file upload"
},
{
"name": "QTO Agent",
"type": "AI Agent",
"model": "gpt-4o",
"tools": ["ifcopenshell", "pandas"]
},
{
"name": "Pricing Agent",
"type": "AI Agent",
"model": "gpt-4o",
"tools": ["qdrant_search", "cwicr_api"]
},
{
"name": "Validation Agent",
"type": "AI Agent",
"model": "gpt-4o",
"tools": ["historical_db", "outlier_detection"]
},
{
"name": "Generate Excel",
"type": "Spreadsheet",
"operation": "create"
},
{
"name": "Send Email",
"type": "Email",
"to": "[email protected]"
}
]
}
| Single Agent | Multi-Agent |
|--------------|-------------|
| One prompt, one task | Specialized experts collaborate |
| Context limits | Distributed memory |
| Single point of failure | Redundancy and validation |
| Hard to debug | Clear responsibility |
| Generic output | Domain-specific quality |
pip install crewai langchain-openai ifcopenshell pandas qdrant-client
Comprehensive web quality audit covering performance, accessibility, SEO, and best practices in a single review. Use when asked to "audit my site", "review web quality", "run lighthouse audit", "check page quality", or "optimize my website" across multiple areas at once. Orchestrates specialized skills for depth. Do NOT use for single-area audits — prefer core-web-vitals, web-accessibility, seo, or web-best-practices for focused work.
| Use when launching a new product end-to-end from market research through post-launch monitoring. Orchestrates 15+ specialist agents across 5 phases in a 10-week coordinated workflow including research, development, marketing, sales preparation, launch execution, and ongoing optimization. Employs hierarchical coordination with parallel execution for efficiency and comprehensive coverage.
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting session data.
| Create visually strong landing pages, websites, and app UIs with restrained composition. OpenAI's production frontend playbook.
Pre-build product and feature risk review for founders, product managers, and AI-assisted builders. Use this skill when the user is about to build a landing page, MVP, SaaS product, internal tool, agent workflow, or major feature and needs to check demand, positioning, monetization, retention, trust, distribution, and adoption risk before implementation starts.
This skill helps users extract structured best-selling product data from Amazon via the BrowserAct API. Agent should proactively apply this skill when users express needs like search for best selling products on Amazon, extract Amazon product data based on keywords, find top rated Amazon products, monitor Amazon competitor prices and sales, discover trending products on Amazon marketplace, extract Amazon product titles prices and ratings, gather Amazon product sales volume for market research, search Amazon best sellers in specific region, collect Amazon product reviews and promotion details, analyze Amazon product availability and badges, get Amazon product data for market analysis.
This skill is designed to help users automatically extract product data from Amazon search results. The Agent should proactively apply this skill when users request searching for products related to keywords, finding best-selling items from specific brands, monitoring product prices and availability on Amazon, extracting product listings for market research, collecting product ratings and review counts for competitive analysis, finding specific products with a maximum count, searching Amazon in different languages for localized results, tracking monthly sales estimates for brand products, gathering product URLs and titles for a product catalog, scanning Amazon for Best Seller tags in a specific category, monitoring shipping and delivery information for brand items, building a structured dataset of Amazon search results.
This skill is designed to help users automatically extract reviews from Google Maps via the Google Maps Reviews API. Agent should proactively apply this skill when users request to find reviews for local businesses (e.g., coffee shops, clinics), monitor customer feedback for a specific brand or location, analyze sentiment of reviews for competitors, extract reviews for a chain of stores or services, track reputation of a local restaurant, gather user testimonials for a specific venue, conduct market research on service quality of local businesses, monitor reviews for a new retail location, collect feedback on public attractions or parks, identify common complaints for a specific service provider, research the best-rated places in a city, analyze recurring themes in reviews for a specific industry.
Take datadrivenconstruction/multi-agent-estimation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.