few-shot-examples

Few-Shot Examples for Construction AI

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "few-shot-examples" with this command: npx skills add datadrivenconstruction/ddc_skills_for_ai_agents_in_construction/datadrivenconstruction-ddc-skills-for-ai-agents-in-construction-few-shot-examples

Few-Shot Examples for Construction AI

Overview

Curated few-shot examples for construction industry AI tasks. These examples improve LLM performance by providing domain-specific context for classification, extraction, and analysis tasks.

Few-Shot Framework

Example Manager

from dataclasses import dataclass, field from typing import List, Dict, Any, Optional import json import random

@dataclass class FewShotExample: input: str output: str explanation: Optional[str] = None tags: List[str] = field(default_factory=list) difficulty: str = "medium" # easy, medium, hard source: str = ""

@dataclass class ExampleSet: name: str description: str task_type: str examples: List[FewShotExample] version: str = "1.0"

def get_examples(self, n: int = 3, difficulty: str = None) -> List[FewShotExample]:
    """Get n examples, optionally filtered by difficulty."""
    filtered = self.examples
    if difficulty:
        filtered = [e for e in self.examples if e.difficulty == difficulty]
    return filtered[:n]

def get_random_examples(self, n: int = 3) -> List[FewShotExample]:
    """Get n random examples for variety."""
    return random.sample(self.examples, min(n, len(self.examples)))

def format_for_prompt(self, n: int = 3) -> str:
    """Format examples for inclusion in prompt."""
    examples = self.get_examples(n)
    formatted = []

    for i, ex in enumerate(examples, 1):
        formatted.append(f"Example {i}:")
        formatted.append(f"Input: {ex.input}")
        formatted.append(f"Output: {ex.output}")
        if ex.explanation:
            formatted.append(f"Explanation: {ex.explanation}")
        formatted.append("")

    return "\n".join(formatted)

class ConstructionExampleLibrary: """Library of construction-specific few-shot examples."""

def __init__(self):
    self.example_sets: Dict[str, ExampleSet] = {}
    self._register_defaults()

def register(self, example_set: ExampleSet):
    self.example_sets[example_set.name] = example_set

def get(self, name: str) -> Optional[ExampleSet]:
    return self.example_sets.get(name)

def _register_defaults(self):
    for example_set in DEFAULT_EXAMPLE_SETS:
        self.register(example_set)

CSI Classification Examples

CSI_CLASSIFICATION_EXAMPLES = ExampleSet( name="csi_classification", description="Examples for classifying line items to CSI MasterFormat", task_type="classification", examples=[ FewShotExample( input="4000 PSI structural concrete for foundations", output=json.dumps({ "csi_division": "03", "csi_section": "03 30 00", "csi_title": "Cast-in-Place Concrete", "confidence": "high" }), explanation="Structural concrete is Division 03, Cast-in-Place section", tags=["concrete", "structural"], difficulty="easy" ), FewShotExample( input="Grade 60 #5 reinforcing steel", output=json.dumps({ "csi_division": "03", "csi_section": "03 20 00", "csi_title": "Concrete Reinforcing", "confidence": "high" }), explanation="Rebar is in Division 03 under reinforcing, not Division 05 Metals", tags=["rebar", "concrete"], difficulty="medium" ), FewShotExample( input="8" CMU block wall with vertical rebar", output=json.dumps({ "csi_division": "04", "csi_section": "04 22 00", "csi_title": "Concrete Unit Masonry", "confidence": "high" }), explanation="CMU is concrete masonry, Division 04", tags=["masonry", "cmu"], difficulty="easy" ), FewShotExample( input="W12x26 structural steel beams", output=json.dumps({ "csi_division": "05", "csi_section": "05 12 00", "csi_title": "Structural Steel Framing", "confidence": "high" }), explanation="Wide flange beams are structural steel, Division 05", tags=["steel", "structural"], difficulty="easy" ), FewShotExample( input="6" spray foam insulation R-38", output=json.dumps({ "csi_division": "07", "csi_section": "07 21 00", "csi_title": "Thermal Insulation", "confidence": "high" }), explanation="All insulation types are in Division 07", tags=["insulation", "thermal"], difficulty="easy" ), FewShotExample( input="Hollow metal door frame 3'x7'", output=json.dumps({ "csi_division": "08", "csi_section": "08 11 00", "csi_title": "Metal Doors and Frames", "confidence": "high" }), explanation="Metal doors and frames are in Division 08 Openings", tags=["doors", "openings"], difficulty="easy" ), FewShotExample( input="5/8" Type X gypsum board on metal studs", output=json.dumps({ "csi_division": "09", "csi_section": "09 29 00", "csi_title": "Gypsum Board", "confidence": "high" }), explanation="Gypsum board (drywall) is in Division 09 Finishes", tags=["drywall", "finishes"], difficulty="easy" ), FewShotExample( input="VCT flooring in corridors", output=json.dumps({ "csi_division": "09", "csi_section": "09 65 00", "csi_title": "Resilient Flooring", "confidence": "high" }), explanation="VCT (vinyl composition tile) is resilient flooring in Division 09", tags=["flooring", "finishes"], difficulty="medium" ), FewShotExample( input="Fire sprinkler system - ordinary hazard", output=json.dumps({ "csi_division": "21", "csi_section": "21 13 00", "csi_title": "Fire-Suppression Sprinkler Systems", "confidence": "high" }), explanation="Fire sprinklers are Division 21 Fire Suppression", tags=["fire protection", "mep"], difficulty="medium" ), FewShotExample( input="Domestic water piping - copper type L", output=json.dumps({ "csi_division": "22", "csi_section": "22 11 00", "csi_title": "Facility Water Distribution", "confidence": "high" }), explanation="Domestic water piping is Division 22 Plumbing", tags=["plumbing", "mep"], difficulty="medium" ), FewShotExample( input="VAV boxes with hot water reheat", output=json.dumps({ "csi_division": "23", "csi_section": "23 36 00", "csi_title": "Air Terminal Units", "confidence": "high" }), explanation="VAV boxes are air terminal units in Division 23 HVAC", tags=["hvac", "mep"], difficulty="medium" ), FewShotExample( input="277/480V 3-phase electrical distribution panel", output=json.dumps({ "csi_division": "26", "csi_section": "26 24 00", "csi_title": "Switchboards and Panelboards", "confidence": "high" }), explanation="Electrical panels are in Division 26", tags=["electrical", "mep"], difficulty="medium" ), FewShotExample( input="Site excavation and grading - 5000 CY", output=json.dumps({ "csi_division": "31", "csi_section": "31 20 00", "csi_title": "Earth Moving", "confidence": "high" }), explanation="Excavation and grading is Division 31 Earthwork", tags=["sitework", "earthwork"], difficulty="easy" ), FewShotExample( input="Asphalt paving for parking lot - 3" thick", output=json.dumps({ "csi_division": "32", "csi_section": "32 12 00", "csi_title": "Flexible Paving", "confidence": "high" }), explanation="Asphalt paving is in Division 32 Exterior Improvements", tags=["paving", "sitework"], difficulty="easy" ), FewShotExample( input="8" DIP water main with fittings", output=json.dumps({ "csi_division": "33", "csi_section": "33 11 00", "csi_title": "Water Utility Distribution Piping", "confidence": "high" }), explanation="Site utilities are in Division 33", tags=["utilities", "sitework"], difficulty="medium" ) ] )

RFI Classification Examples

RFI_CLASSIFICATION_EXAMPLES = ExampleSet( name="rfi_classification", description="Examples for classifying RFI types and urgency", task_type="classification", examples=[ FewShotExample( input="Drawing A-301 shows a door at grid line 5, but the structural drawing S-102 shows a column at the same location. Please clarify.", output=json.dumps({ "rfi_type": "conflict_clarification", "disciplines": ["architectural", "structural"], "urgency": "high", "impact_areas": ["design", "schedule"], "suggested_routing": "architect" }), explanation="Drawing conflict between disciplines requires urgent resolution", tags=["conflict", "multi-discipline"], difficulty="medium" ), FewShotExample( input="Specification section 09 91 00 calls for Benjamin Moore paint, but we would like to submit Sherwin-Williams as an equal. Is this acceptable?", output=json.dumps({ "rfi_type": "substitution_request", "disciplines": ["architectural"], "urgency": "low", "impact_areas": ["cost"], "suggested_routing": "architect" }), explanation="Substitution request is low urgency, cost-driven", tags=["substitution", "finishes"], difficulty="easy" ), FewShotExample( input="We encountered rock during excavation at elevation 95.5'. Drawings show bottom of footing at elevation 94.0'. How should we proceed?", output=json.dumps({ "rfi_type": "field_condition", "disciplines": ["structural", "geotechnical"], "urgency": "critical", "impact_areas": ["design", "cost", "schedule"], "suggested_routing": "structural_engineer" }), explanation="Unforeseen site condition affecting structural design is critical", tags=["field condition", "foundation"], difficulty="hard" ), FewShotExample( input="What is the required fire rating for the corridor walls on Level 2? The drawing notes are unclear.", output=json.dumps({ "rfi_type": "clarification", "disciplines": ["architectural"], "urgency": "medium", "impact_areas": ["design"], "suggested_routing": "architect" }), explanation="Missing information request, medium urgency", tags=["fire rating", "clarification"], difficulty="easy" ), FewShotExample( input="The mechanical contractor has proposed routing ductwork through the structural transfer beam. Please confirm this is acceptable.", output=json.dumps({ "rfi_type": "coordination", "disciplines": ["mechanical", "structural"], "urgency": "high", "impact_areas": ["design", "schedule"], "suggested_routing": "structural_engineer" }), explanation="MEP penetration through structural element requires SE approval", tags=["coordination", "mep", "structural"], difficulty="medium" ) ] )

Cost Analysis Examples

COST_ANALYSIS_EXAMPLES = ExampleSet( name="cost_analysis", description="Examples for cost analysis and validation", task_type="analysis", examples=[ FewShotExample( input=json.dumps({ "item": "Cast-in-place concrete", "unit_cost": 850, "unit": "CY", "location": "New York City", "year": 2026 }), output=json.dumps({ "assessment": "high", "typical_range": {"low": 400, "high": 700}, "variance_percent": 21.4, "likely_causes": ["high local labor rates", "difficult access", "small quantity"], "recommendation": "Review labor productivity assumptions and access conditions" }), explanation="NYC concrete costs are high, but $850/CY exceeds typical range", tags=["concrete", "unit cost", "validation"], difficulty="medium" ), FewShotExample( input=json.dumps({ "item": "Structural steel erection", "unit_cost": 1200, "unit": "TON", "location": "Houston, TX", "year": 2026 }), output=json.dumps({ "assessment": "reasonable", "typical_range": {"low": 1000, "high": 1500}, "variance_percent": 0, "likely_causes": [], "recommendation": "No action needed - within expected range" }), explanation="Steel erection cost is within normal Houston range", tags=["steel", "unit cost", "validation"], difficulty="easy" ), FewShotExample( input=json.dumps({ "item": "Gypsum board partition", "unit_cost": 3.50, "unit": "SF", "location": "Phoenix, AZ", "year": 2026 }), output=json.dumps({ "assessment": "low", "typical_range": {"low": 6, "high": 12}, "variance_percent": -41.7, "likely_causes": ["missing framing", "missing tape/finish", "labor underestimated"], "recommendation": "Verify scope includes metal studs, insulation, and Level 4 finish" }), explanation="Very low drywall cost likely missing scope items", tags=["drywall", "unit cost", "validation"], difficulty="medium" ) ] )

Schedule Analysis Examples

SCHEDULE_ANALYSIS_EXAMPLES = ExampleSet( name="schedule_analysis", description="Examples for schedule analysis and review", task_type="analysis", examples=[ FewShotExample( input=json.dumps({ "activity": "Foundation concrete pour", "duration": 45, "duration_unit": "days", "quantity": 2500, "quantity_unit": "CY" }), output=json.dumps({ "assessment": "duration_appears_long", "typical_production": "100-150 CY/day", "expected_duration_range": {"low": 17, "high": 25}, "possible_reasons": ["phased pours", "complex formwork", "cure time included"], "recommendation": "Review activity scope - may include formwork and curing" }), explanation="45 days for 2500 CY seems long unless multiple activities combined", tags=["concrete", "duration", "validation"], difficulty="medium" ), FewShotExample( input=json.dumps({ "activity": "Steel erection", "duration": 60, "duration_unit": "days", "quantity": 500, "quantity_unit": "tons", "resources": ["1 erection crew"] }), output=json.dumps({ "assessment": "reasonable", "typical_production": "8-12 tons/day/crew", "expected_duration_range": {"low": 42, "high": 63}, "possible_reasons": [], "recommendation": "Duration is within expected range for single crew" }), explanation="500 tons with 1 crew at 8-10 tons/day = 50-63 days", tags=["steel", "duration", "validation"], difficulty="medium" ), FewShotExample( input=json.dumps({ "predecessor": "Foundation complete", "successor": "Steel erection", "lag": -5, "lag_unit": "days" }), output=json.dumps({ "assessment": "aggressive", "concern": "Steel erection starting 5 days before foundation complete", "typical_practice": "FS+0 to FS+5 lag for concrete cure", "risk_level": "high", "recommendation": "Verify foundation is cured sufficiently before steel loads applied" }), explanation="Negative lag on foundation to steel is risky", tags=["logic", "dependency", "validation"], difficulty="hard" ) ] )

BIM Data Examples

BIM_EXTRACTION_EXAMPLES = ExampleSet( name="bim_extraction", description="Examples for BIM data extraction and interpretation", task_type="extraction", examples=[ FewShotExample( input=json.dumps({ "element_type": "IfcWall", "properties": { "Name": "Interior Partition", "IsExternal": False, "FireRating": "1 Hour", "Pset_WallCommon.Width": 0.165, "BaseQuantities.GrossArea": 45.5, "BaseQuantities.NetArea": 42.3 } }), output=json.dumps({ "classification": "Interior wall", "fire_rated": True, "fire_rating": "1 Hour", "thickness_mm": 165, "thickness_in": 6.5, "gross_area_m2": 45.5, "gross_area_sf": 490, "net_area_sf": 455, "opening_deduction_pct": 7.0 }), explanation="Extract and convert BIM properties to construction quantities", tags=["wall", "quantities", "ifc"], difficulty="medium" ), FewShotExample( input=json.dumps({ "element_type": "IfcDoor", "properties": { "Name": "D-01", "OverallWidth": 0.914, "OverallHeight": 2.134, "FireRating": None, "Pset_DoorCommon.IsExternal": False, "Pset_DoorCommon.HandicapAccessible": True } }), output=json.dumps({ "door_type": "D-01", "size": "3'-0" x 7'-0"", "size_standard": "36x84", "fire_rated": False, "ada_compliant": True, "classification": "Interior door, ADA" }), explanation="Interpret door properties for specification compliance", tags=["door", "ada", "ifc"], difficulty="easy" ), FewShotExample( input=json.dumps({ "element_type": "IfcSpace", "properties": { "Name": "Conference Room 101", "LongName": "Large Conference Room", "Pset_SpaceCommon.NetFloorArea": 55.7, "Pset_SpaceOccupancyRequirements.OccupancyNumber": 20, "Pset_SpaceFireSafetyRequirements.FireRiskFactor": "Low" } }), output=json.dumps({ "space_name": "Conference Room 101", "net_area_sf": 600, "occupancy": 20, "area_per_person_sf": 30, "occupancy_assessment": "typical for conference", "code_check": "IBC allows 15 SF/person for assembly, 600 SF / 15 = 40 max" }), explanation="Validate space programming against code requirements", tags=["space", "occupancy", "code"], difficulty="hard" ) ] )

Using Examples in Prompts

Initialize library

library = ConstructionExampleLibrary()

Get example set

csi_examples = library.get("csi_classification")

Format for prompt

examples_text = csi_examples.format_for_prompt(n=3)

Build complete prompt

prompt = f"""Classify the following line items to CSI MasterFormat.

{examples_text}

Now classify these items:

  1. Aluminum storefront framing
  2. Acoustic ceiling tiles
  3. Elevator cab finishes """

Or get specific examples

easy_examples = csi_examples.get_examples(n=2, difficulty="easy") random_examples = csi_examples.get_random_examples(n=3)

Adding Custom Examples

Create custom example set for your project

my_examples = ExampleSet( name="my_project_classification", description="Project-specific classification examples", task_type="classification", examples=[ FewShotExample( input="Your specific input", output="Expected output", explanation="Why this classification", tags=["custom"], difficulty="medium" ) ] )

Register to library

library.register(my_examples)

Best Practices

  • Diverse Examples: Include examples across difficulty levels

  • Edge Cases: Add examples for ambiguous situations

  • Explanations: Include reasoning for complex examples

  • Regular Updates: Add new examples as edge cases are discovered

  • Balance: Mix easy and hard examples to calibrate model

Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

drawing-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

cad-to-data

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

dwg-to-excel

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

cost-estimation-resource

No summary provided by upstream source.

Repository SourceNeeds Review