Changelog
Follow up on the latest improvements and updates.
RSS
new
New Features!
Model Updates
2.51.00: Roofing Assemblies; CLF Benchmarking
This PR represents a ground-up rebuild of all our roofing assemblies so that material takeoffs all happen live in each calculation, rather than being "pre-packaged." With this, we built a fair amount of infrastructure to knit together our bill of materials-based LCA tooling with our lightweight analysis.
Roofing Configuration
With this release, a user can configure a roofing assembly from nine different roofing types:
- Built-Up Roofing (BUR)
- Modified Bitumen
- Standing Seam Metal Roofing
- Ballasted Single-Ply EPDM
- Adhered Single-Ply EPDM
- Single-Ply TPO
- Clay Tile
- Asphalt Shingles
- PVC Membrane
For each of these roof assemblies, we calculate takeoffs down to the fasteners. The description of the assembly is passed back to the user in the
component_description
field. By declaring an R-value (or RSI, depending on the unit system), we calculate insulation takeoffs. The user can declare one of six insulation types:
- Expanded polystyrene (EPS) insulation
- Extruded polystyrene (XPS) insulation
- Polyisocyanurate (PIR) insulation
- Mineral wool insulation, high-density
- Mineral wool insulation, low-density
- Fiberglass blanket insulation (faced)
Handling Performance Drag
The expanded API functionality introduces computational overhead that impacts response times. This release includes corresponding infrastructure updates to increase Lambda memory allocation, addressing immediate performance requirements. As a longer-term optimization, we're evaluating whether to extract computationally intensive operations into dedicated endpoints to improve overall system responsiveness.
CLF Benchmarking
There are new endpoints which benchmark results against the results of the CLF wbLCA benchmark study. These endpoints return the percentile of the current project in the benchmark set and a short description of the benchmark and the scope of comparison. When representing these benchmarks to users, we recommend using this text directly.
benchmark_type: embodied_carbon_intensity,
benchmark_set: CLFv2,
percentile: 67,
description: This project's embodied carbon intensity is at the 67th percentile of the Carbon Leadership Forum's WBLCA Benchmark Study (v2, 2025). This benchmark comparison includes only the 243 projects for which there is comparable data in the study, including emissions from structure, enclosure, and interiors across stages A1-A3, A4, B4-B5, and C2-C4.
Changes in results
This bottom-up refactor to the roofing assemblies has
lowered
the carbon intensities of the roofing assemblies. This is mainly due to enforcing the exclusion of all structure and finish materials from our library of roofing details, and by allowing the roofing R-value to depend on climate zone in the absence of user inputs (our previous model assumed a relatively higher insulating value, which wasn't parameterized). Across our test set, we see the following changes to envelope emissions overall:- Max: -13.4%
- Mean: - 10.3%
- Min: -6.3%
new
Backend updates
2.50.07: Improve validations; add emissions totals
This is a patch update with minor improvements to how the API ingests, calculates, and returns data for building assemblies.
Improve unit handling
This update moves some code over from our bill of materials-based LCA repo to improve how units are declared and interpreted. Parts of the API still use implicit units. Allowing explicit unit declarations also supports our use of more complex units (e.g., thermal resistivity) for performing insulation takeoffs.
Total Emissions by Assembly
In the responses for each assembly, we how return total (A-C) emissions for that assembly. This wa a request related to improving visualization of these impacts.
Improve Assemblies Validation
The endpoints which return carbon intensities by assembly now validate the passed ID against a list of valid IDs. Previously, a user could pass silly strings and potentially trip an uncaught error.
This is a small but mighty PR to improve how the model handles unit conversion for some interiors assemblies.
Additionally, C.Scale is adjusting our generic FFE (furniture, fixtures, and equipment) carbon intensity estimates downward to reconcile its scope with the new bottom-up (assemblies and material-based) model. This update reduces C.Scale's estimates for interiors by 3 - 13%, depending on building form.
new
General Updates
Hotfix!
2.50.05: Misc. updates to interiors endpoints
This patch release makes a number of minor updates to the interiors model:
- Corrects unit errors for "count" items (doors and furniture)
- Updates carbon_intensityto only include A1-A3
- Added conditionparameter to/api/carbon-intensities/interior-assembliesso that reuse or salvage is properly accounted for
- Updates emissions_by_elementtoemissions_by_takeoffwithin the response for each space
new
New Features!
2.50.04: Reference fields for assemblies; A5.2 data by fuel use
This is minor release improving the schema for interiors and adding a new way to send construction activities data to the API.
Additionally, we expand our support for A5.2 (construction activity) emissions tracking by allowing users to enter data by fuel type.
Addition of
reference_id
for interiors dataThis release adds a
reference_id
field to assembly-level calculations. The purpose of this field is to allow API users (at least one in particular 😉) to better connect request and response objects without indexing. Construction Activities (A5.2) emissions tracking
This update allows API users to calculate construction activities emissions through a calcuation of fuel use on the building site. The fuel types that C.Scale accepts are:
- Gasoline
- Diesel
- Natural gas
- Propane
- Kerosene
C.Scale accepts a list of "fuel receipts" to the
A5p2_emissions
key which describe how much fuel is used, when it is used, and (optionally) by whom. new
Hotfix!
New Features!
2.50.03: Add counts to refrigerants; fix interiors carbon intensities bug;
This is a patch release which makes a number of small changes:
- For the detailed refrigerants schema, we now allow users to pass a countparameter (assumed to be 1). The refrigerant charge is the quantity per piece of equipment. If there was no count parameter declared in a model previously, it's assumed to be 1.
- Previously, there was a JSON serialization error affecting the carbon-intensities/interiors-assembliesendpoint. This has been addressed.
- For assemblies where we migrated the reuseparameter tocondition, this update provides backwards compatibility for API users who are passing float values for reuse.
No change in calculation.
This is a minor update to expand C.Scale's support for interior assemblies and make a fundamental update to the way that reuse is handled at the assembly- and material-level.
Update Reuse Options
At the category-level, C.Scale supports the declaration of reuse as a percentage of total assemblies. This is a useful abstraction, but is not extensible to the assembly- or material-level. At these finer levels of resolution, there are three options for
reuse
- new_constructioninclude A1-A5 emissions. Accounting for these new materials include both upstream and jobsite emissions.
- salvagedincludes only A4-A5 emissions. Since these materials are salvaged, there are no upstream emissions.
- reusedincludes no emission from A4-A5. There are no A stage emissions for products which are reused in place.
Additional Interiors Assemblies
This update includes data for "shared" interior walls. These walls are cut at their centerline so one one half is counted in the analysis. This allows takeoffs to happen on a per-room basis while avoiding double-counting of shared walls.
This patch release opens up a set of experimental endpoints to query, view, and edit EPD data.
No change to calculations.
new
New Features!
Backend updates
2.50.00: Expanded interiors model; address DB issues; misc. bugfixes and updates
This minor release contains a greatly expanded and enriched interiors model as well as updates to how we handle DB connections. There are a few minor bugs we are aware of and working to address ASAP, noted below.
Expand Interiors Model
To support some enterprise API users, we are expanding how interiors modeling is performed in the application. The alternate schema for the
interiors
object is a list of spaces
, each of which is a collection of takeoffs
(and some overall descriptive data.). The takeoffs are all tagged to an
id
field. Acceptable entries for the id
field can be queried with a GET request to /api/interiors/assemblies/list
. To get the full description of a particular assembly, pass that id
in a GET request to api/interiors/assembly
Address DB Issues
In the past week, we have had intermittent issues with how we are sharing database connections across Lambda executions. To solve this, we are performing health checks and retries w/ backoff when the database is not behaving as expected. This appears to have addressed the issue in development environment. While this will make finicky requests slower, we prefer the occasional slow request to the same frequency of failures.
Misc. Updates
In addition to the above, we made a variety of small updates -
- Previously, there were occasional errors with very small (< 10 m2) floor areas; these have been addressed.
- C.Scale no longer counts D1 recycling potential from waste generated on the jobsite during construction. Certifications are mostly silent on this topic, but this updates hews close to general guidance on reporting D1 emissions separately.
- Emission summaries throughout the response object are now only A-C emissions (as relevant).
- Solar PV now has a separate includeparameter
- In category_by_stages, construction activities is now broken out into its own category
- The first year of any embodied carbon timeseries data now includes A4 and A5p3 emissions in addition to A1–A3. This ensures consistency and improves alignment with the category_by_stagesresponse object.
new
New Features!
Backend updates
2.49.02: Refrigerants endpoints; updated background energy data
This release adds additional endpoints and data describing refrigerant emissions in buildings, as well as a global update to our energy use and fuel mix benchmark values.
Refrigerants
With this update, a user may pass in specific refrigerant types and their charges as a list. From this, we can describe refrigerant emissions of at a granular level, with full capability to support LEED credits related to refrigerant management.
The C.Scale data model now includes 141 refrigerants in its internal library. The characteristics of these refrigerants can be queried at the
api/carbon-intensities/refrigerants
endpoint and included in the calculation by passing the descriptions within the refrigerants
object in the request. Updated Energy Benchmarks
We have harmonized our data source for benchmark EUI and fuel mix values - using time series aggregates from OEDI to construct typical values by climate zone and building type.
This harmonization is particularly exciting as it sets a course for integrating more granular 12x24 or 8760 energy data into the API, as well as exposing estimates by end use.
These values may have regional overrides where more specific data is available.
Harmonize Internal Data Structure
As part of this update, we also eliminated a vestigial data structure for organizing regional data. The elimination of this data structure gives us greater agility in adding additional geographies to the API.
Load More
→