BuildCalc API

Products

Federated catalog of construction-product SKUs across 10 categories with per-spec JSONB filtering

The products vertical is a federated factual catalog of construction SKUs sourced from federal certification registries and manufacturer catalogs. Specs are normalized into a JSONB column so each category keeps its native shape; a typed-cast filter envelope lets agents query the underlying paths safely.

Categories

SlugSource authoritiesStatusSKUs
hvacENERGY STAR (heat pumps + Geo + boilers + furnaces)live6,206
electricalENERGY STAR (ceiling + ventilating fans)live1,588
plumbingEPA WaterSense JSON API (9 fixture types)live2,547
windowsENERGY STAR Storm + NFRC CPD top-10 mfrslive42
insulationENERGY STAR Certified Insulationlive36
lumberWeyerhaeuser TJI mfr PDFs (Tier-A regex)live6
drywallUSG Sheetrock mfr PDFs (Tier-A regex)live5
doorsNFRC CPD top-10 mfrs (shared cron with windows)live5
roofingCertainTeed Landmark mfr PDFs (Tier-A regex)live4
hardwareSimpson Strong-Tie + ICC-ES T3 (DMCA-gated)deferred (LLC)

Counts as of 2026-05-28. Each category becomes "live" only when an ETL has populated ≥1 SKU; an independent audit pass rate of ≥95% is the target before promoting confidence from mfr_published to certified. Call /v1/products/list for the live status + SKU counts so agents don't waste calls asking for coming_soon categories.

Endpoints

GET /v1/products/list
GET /v1/products/categories/{category}?filter[specs.<field>.<op>]=<value>
GET /v1/products/{product_id}
GET /v1/products/search?q=<text>
GET /v1/products/compare?ids=<id1>,<id2>,...
GET /v1/products/sources

All endpoints require Authorization: Bearer <your-api-key> and count against your monthly quota at the same rate as the other data verticals.

Typed-cast JSONB filter envelope

GET /v1/products/categories/hvac?filter[specs.seer2.gte]=16&filter[specs.refrigerant.eq]=R-454B

Supported operators: gte, lte, gt, lt, eq. The filter parser validates each field against a per-category allowlist; an unknown spec key returns HTTP 400 with invalid_filter_key: specs.<key>.

Per-category spec keys are declared in app/routes/v1/products/_filters.py. For HVAC (live), the supported spec keys are:

  • specs.seer2 (double) — SEER2 efficiency rating
  • specs.eer2 (double) — EER2 efficiency rating
  • specs.hspf2 (double) — HSPF2 heating efficiency
  • specs.afue (double) — Annual Fuel Utilization Efficiency
  • specs.btu_h_cooling (double) — Cooling capacity, BTU/h
  • specs.btu_h_heating (double) — Heating capacity, BTU/h
  • specs.voltage (double)
  • specs.phases (double)

Confidence taxonomy

Each row carries one of four confidence values:

ValueMeaning
certifiedIssued by a federal authority (ENERGY STAR, AHRI, NFRC, ICC-ES)
mfr_publishedExtracted deterministically from a manufacturer official PDF catalog
ollama_extractedExtracted via local Qwen 2.5-VL vision fallback (lower confidence; values are normalized but should be cross-checked)
legacy_or_staleSource was authoritative when fetched but is no longer the current edition

Sources

GET /v1/products/sources enumerates the source-authority registry with the legal tier (T0/T1/T2/T3) and per-source SKU count. See the crawler page for the operational rules (BuildCalcAPI-Crawler/1.0 UA, 1 req/sec throttle, unconditional robots.txt honor, DMCA contact).

Methodology

A full methodology page lives at /docs/methodology/products (published with sub-deliverable 12 close).

On this page