{
  "id": "v20-ca-deck",
  "version": "20.16.0",
  "name": "Deck Materials Calculator — Canada",
  "shortName": "Deck Materials",
  "description": "Prepare a transparent takeoff for a simple rectangular deck layout with two support rows. CAD planning view; stated limitations apply.",
  "category": "Home & Construction",
  "categorySlug": "home-construction",
  "keywords": [
    "deck",
    "ca",
    "quantity-surveying",
    "energy-saver",
    "engineering-scope"
  ],
  "status": "live",
  "workStatus": "pending",
  "reviewStatus": "pending",
  "migrationStatus": "new",
  "engine": "native",
  "creator": null,
  "reviewer": null,
  "quality": {
    "availability": "live",
    "technicalReviewRecord": "/reviews/v20-ca-deck.json",
    "qualifiedReview": "pending",
    "qualifiedReviewer": null,
    "qualifiedReviewDate": null,
    "formulaVersion": "20.16.0",
    "referenceCoverage": "references-listed",
    "releaseTestScope": "Catalog and regression checks are not a professional formula audit; consult release evidence.",
    "historicalMetadataDate": "",
    "historicalMetadataNotice": "The imported date is not evidence of a completed human review."
  },
  "notice": "Illustrative defaults are not local quotes or verified legal rules. Dated reference components and user-entered assumptions are explicitly distinguished. Professional review is pending.",
  "urls": {
    "page": "/ca/deck/",
    "definition": "/ca/deck/definition.json",
    "schema": "/ca/deck/schema.json",
    "llms": "/ca/deck/llms.txt",
    "legacyDefinition": "/ca/deck/definition.json"
  },
  "queryExample": "https://askcalculators.com/ca/deck/?unitSystem=metric&length=5&width=4&boardWidth=140&boardGap=5&stockLength=4.8&joistSpacing=400&postSpacing=2&footingDiameter=300&footingDepth=1&wastePercent=10&unitRate=0&laborCost=0&deliveryCost=0&otherCost=0&costMultiplier=1&spreadPercent=15&taxRate=0",
  "queryParameters": {
    "unitSystem": {
      "label": "Measurement system",
      "type": "select",
      "required": false,
      "default": "metric"
    },
    "length": {
      "label": "Length",
      "type": "number",
      "required": true,
      "default": 5
    },
    "width": {
      "label": "Width",
      "type": "number",
      "required": true,
      "default": 4
    },
    "boardWidth": {
      "label": "Actual deck-board face width",
      "type": "number",
      "required": true,
      "default": 140
    },
    "boardGap": {
      "label": "Clear gap between boards",
      "type": "number",
      "required": true,
      "default": 5
    },
    "stockLength": {
      "label": "Available stock-board length",
      "type": "number",
      "required": true,
      "default": 4.8
    },
    "joistSpacing": {
      "label": "Selected joist spacing",
      "type": "number",
      "required": true,
      "default": 400
    },
    "postSpacing": {
      "label": "Selected post spacing",
      "type": "number",
      "required": true,
      "default": 2
    },
    "footingDiameter": {
      "label": "Specified round footing diameter",
      "type": "number",
      "required": true,
      "default": 300
    },
    "footingDepth": {
      "label": "Specified footing depth",
      "type": "number",
      "required": true,
      "default": 1
    },
    "wastePercent": {
      "label": "Cutting/waste allowance",
      "type": "percent",
      "required": true,
      "default": 10
    },
    "unitRate": {
      "label": "Material price per deck board",
      "type": "money",
      "required": true,
      "default": 0
    },
    "laborCost": {
      "label": "Total labor allowance",
      "type": "money",
      "required": true,
      "default": 0
    },
    "deliveryCost": {
      "label": "Delivery allowance",
      "type": "money",
      "required": true,
      "default": 0
    },
    "otherCost": {
      "label": "Other fixed costs",
      "type": "money",
      "required": true,
      "default": 0
    },
    "costMultiplier": {
      "label": "Material/labor multiplier",
      "type": "number",
      "required": true,
      "default": 1
    },
    "spreadPercent": {
      "label": "Low/high sensitivity around the entered total",
      "type": "percent",
      "required": true,
      "default": 15
    },
    "taxRate": {
      "label": "Explicit tax allowance",
      "type": "percent",
      "required": true,
      "default": 0
    }
  },
  "inputs": [
    {
      "id": "unitSystem",
      "label": "Measurement system",
      "type": "select",
      "defaultValue": "metric",
      "options": [
        {
          "value": "imperial",
          "label": "Imperial (US gallons / short tons where relevant)"
        },
        {
          "value": "metric",
          "label": "Metric"
        }
      ]
    },
    {
      "id": "length",
      "label": "Length",
      "type": "number",
      "defaultValue": 5,
      "required": true,
      "min": 0.001,
      "max": 1000000000000,
      "suffix": "m",
      "unitConversion": {
        "factor": 0.3048,
        "offset": 0,
        "inverse": false,
        "metric": "m",
        "imperial": "ft",
        "canonicalMin": 0.001,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "width",
      "label": "Width",
      "type": "number",
      "defaultValue": 4,
      "required": true,
      "min": 0.001,
      "max": 1000000000000,
      "suffix": "m",
      "unitConversion": {
        "factor": 0.3048,
        "offset": 0,
        "inverse": false,
        "metric": "m",
        "imperial": "ft",
        "canonicalMin": 0.001,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "boardWidth",
      "label": "Actual deck-board face width",
      "type": "number",
      "defaultValue": 140,
      "required": true,
      "min": 1,
      "max": 1000000000000,
      "suffix": "mm",
      "unitConversion": {
        "factor": 25.4,
        "offset": 0,
        "inverse": false,
        "metric": "mm",
        "imperial": "in",
        "canonicalMin": 1,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "boardGap",
      "label": "Clear gap between boards",
      "type": "number",
      "defaultValue": 5,
      "required": true,
      "min": 0,
      "max": 50,
      "suffix": "mm",
      "unitConversion": {
        "factor": 25.4,
        "offset": 0,
        "inverse": false,
        "metric": "mm",
        "imperial": "in",
        "canonicalMin": 0,
        "canonicalMax": 50
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "stockLength",
      "label": "Available stock-board length",
      "type": "number",
      "defaultValue": 4.8,
      "required": true,
      "min": 0.1,
      "max": 1000000000000,
      "suffix": "m",
      "unitConversion": {
        "factor": 0.3048,
        "offset": 0,
        "inverse": false,
        "metric": "m",
        "imperial": "ft",
        "canonicalMin": 0.1,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "joistSpacing",
      "label": "Selected joist spacing",
      "type": "number",
      "defaultValue": 400,
      "required": true,
      "min": 50,
      "max": 1000,
      "suffix": "mm",
      "unitConversion": {
        "factor": 25.4,
        "offset": 0,
        "inverse": false,
        "metric": "mm",
        "imperial": "in",
        "canonicalMin": 50,
        "canonicalMax": 1000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "postSpacing",
      "label": "Selected post spacing",
      "type": "number",
      "defaultValue": 2,
      "required": true,
      "min": 0.1,
      "max": 1000000000000,
      "suffix": "m",
      "unitConversion": {
        "factor": 0.3048,
        "offset": 0,
        "inverse": false,
        "metric": "m",
        "imperial": "ft",
        "canonicalMin": 0.1,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "footingDiameter",
      "label": "Specified round footing diameter",
      "type": "number",
      "defaultValue": 300,
      "required": true,
      "min": 1,
      "max": 1000000000000,
      "suffix": "mm",
      "unitConversion": {
        "factor": 25.4,
        "offset": 0,
        "inverse": false,
        "metric": "mm",
        "imperial": "in",
        "canonicalMin": 1,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "footingDepth",
      "label": "Specified footing depth",
      "type": "number",
      "defaultValue": 1,
      "required": true,
      "min": 0.01,
      "max": 1000000000000,
      "suffix": "m",
      "unitConversion": {
        "factor": 0.3048,
        "offset": 0,
        "inverse": false,
        "metric": "m",
        "imperial": "ft",
        "canonicalMin": 0.01,
        "canonicalMax": 1000000000000
      },
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "wastePercent",
      "label": "Cutting/waste allowance",
      "type": "percent",
      "defaultValue": 10,
      "required": true,
      "min": 0,
      "max": 100,
      "step": 0.1,
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "unitRate",
      "label": "Material price per deck board",
      "type": "money",
      "defaultValue": 0,
      "required": true,
      "min": 0,
      "max": 1000000000000,
      "step": 0.01,
      "help": "Zero means unpriced, not free. Enter a current, scoped supplier quote. Illustrative starting value; replace with your own evidence.",
      "prefix": "CAD"
    },
    {
      "id": "laborCost",
      "label": "Total labor allowance",
      "type": "money",
      "defaultValue": 0,
      "required": true,
      "min": 0,
      "max": 1000000000000,
      "step": 0.01,
      "prefix": "CAD",
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "deliveryCost",
      "label": "Delivery allowance",
      "type": "money",
      "defaultValue": 0,
      "required": true,
      "min": 0,
      "max": 1000000000000,
      "step": 0.01,
      "prefix": "CAD",
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "otherCost",
      "label": "Other fixed costs",
      "type": "money",
      "defaultValue": 0,
      "required": true,
      "min": 0,
      "max": 1000000000000,
      "step": 0.01,
      "prefix": "CAD",
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "costMultiplier",
      "label": "Material/labor multiplier",
      "type": "number",
      "defaultValue": 1,
      "required": true,
      "min": 0.1,
      "max": 10,
      "step": 0.01,
      "help": "Use a verified regional index only when supplied. 1 is an unadjusted scenario, not a researched index. Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "spreadPercent",
      "label": "Low/high sensitivity around the entered total",
      "type": "percent",
      "defaultValue": 15,
      "required": true,
      "min": 0,
      "max": 100,
      "step": 0.1,
      "help": "Illustrative starting value; replace with your own evidence."
    },
    {
      "id": "taxRate",
      "label": "Explicit tax allowance",
      "type": "percent",
      "defaultValue": 0,
      "required": true,
      "min": 0,
      "max": 100,
      "step": 0.1,
      "help": "Illustrative starting value; replace with your own evidence."
    }
  ],
  "outputs": [
    {
      "id": "boardRows",
      "label": "Board rows",
      "format": "number",
      "digits": 2
    },
    {
      "id": "boards",
      "label": "Whole stock boards",
      "format": "number",
      "digits": 2
    },
    {
      "id": "joists",
      "label": "Layout joists",
      "format": "number",
      "digits": 2
    },
    {
      "id": "posts",
      "label": "Posts in two support rows",
      "format": "number",
      "digits": 2
    },
    {
      "id": "footingVolume",
      "label": "Round-footing concrete volume",
      "format": "number",
      "digits": 2,
      "unit": "concreteVolume"
    },
    {
      "id": "materialCost",
      "label": "Material cost",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    },
    {
      "id": "laborCost",
      "label": "Labor allowance",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    },
    {
      "id": "deliveryCost",
      "label": "Delivery allowance",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    },
    {
      "id": "otherCost",
      "label": "Other specified costs",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    },
    {
      "id": "tax",
      "label": "Entered tax allowance",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    },
    {
      "id": "low",
      "label": "Low cost scenario",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    },
    {
      "id": "mid",
      "label": "Middle cost scenario",
      "format": "currency",
      "digits": 2,
      "primary": true,
      "currency": "CAD"
    },
    {
      "id": "high",
      "label": "High cost scenario",
      "format": "currency",
      "digits": 2,
      "currency": "CAD"
    }
  ],
  "formula": {
    "expression": "board rows = ceiling(deck width ÷ (board face + gap)); stock boards = ceiling(rows × deck length × waste factor ÷ stock length).",
    "note": "Inputs are converted to canonical units before evaluating this stated formula."
  },
  "examples": [
    {
      "label": "Illustrative defaults; required verification checks remain unconfirmed",
      "inputs": {
        "unitSystem": "metric",
        "length": 5,
        "width": 4,
        "boardWidth": 140,
        "boardGap": 5,
        "stockLength": 4.8,
        "joistSpacing": 400,
        "postSpacing": 2,
        "footingDiameter": 300,
        "footingDepth": 1,
        "wastePercent": 10,
        "unitRate": 0,
        "laborCost": 0,
        "deliveryCost": 0,
        "otherCost": 0,
        "costMultiplier": 1,
        "spreadPercent": 15,
        "taxRate": 0
      }
    }
  ],
  "sources": [
    {
      "label": "NIST unit conversion guidance",
      "url": "https://www.nist.gov/pml/special-publication-811"
    },
    {
      "label": "DOE insulation overview",
      "url": "https://www.energy.gov/energysaver/weatherize/insulation"
    }
  ],
  "publicSlug": "deck",
  "namespace": "ca",
  "countries": [
    "us",
    "ca"
  ]
}
