Skip to main content

Bill of Materials AI Import

Bill of Materials AI Import is available for Early Access

Overview

One Click LCA's AI import tool reads a source document, such as a cost plan, bill of materials, or data collection form, and converts it into a structured Excel file ready to import into your project or EPD assessment. The AI handles the mapping, filtering, and formatting, so you do not have to reformat data manually before import.

The tool supports three workflows:

Workflow

What it does

Buildings

Converts a building cost plan or bill of quantities into materials mapped to OCL building element classes.

Infrastructure

Converts an infrastructure cost plan into materials mapped to OCL infrastructure classes (earthworks, surfaces, systems, and more).

EPD

Converts a manufacturer's data collection form into a structured file for the EPD generator (modules A1 to A3).

Note: The AI produces a review file for you to check before importing. It is not a finished LCA or EPD. Every assumption and flag is visible in the output, so you remain in control.

What you need

  • An Excel file (.xlsx): a cost plan, bill of quantities, bill of materials, or manufacturer data collection form.

  • The file must contain, at minimum, a description, a quantity, and a unit for each item.

  • Both metric and imperial unit systems are supported.

  • The output is produced in the same language as the input.

What changes in the output

The AI makes several deliberate changes to transform the source into an LCA-ready format. Understanding these helps you review the output with confidence.

A class is assigned to every row

Each material or resource is assigned an OCL class based on the structure and context of the source document: section headers, sub-headers, and surrounding rows. When the class cannot be determined with confidence, the AI assigns a generic fallback value rather than guessing.

Units are normalized and quantities converted where needed

All unit variants are standardized to the OCL-accepted set (for example, "sqm" becomes M2, "lin ft" becomes FT). Where a quantity cannot be used directly, for example a wall measured in linear metres, the AI attempts to calculate the correct unit from other information in the file, such as a height stated in the description. Where a conversion is made, it is noted in the COMMENT column. Where it is not possible, the row is flagged.

Composite items may be split into individual materials

A single row in a cost plan often describes a complete assembly made up of multiple materials. The AI splits these into individual rows so each material can be matched to an EPD in OCL. The original row is preserved in the output, so you can see what was split. When the build-up had to be inferred rather than read from the text, a note is added: "Built up suggested by AI." These rows are worth reviewing in particular.

Non-material rows are identified and flagged

Source documents contain a significant amount of content that has no role in an LCA: labour, plant hire, site processes, section headers, subtotals, and contingency sums. These are identified and marked so they are skipped during import. Nothing is silently deleted; every row remains visible in the output file. The reason for each flag is recorded, so you can verify the decision.

Material names are simplified

Source descriptions are often long and contain contractual or specification detail that does not affect embodied carbon. The AI shortens them to the essential material type. The original description is always preserved in a dedicated column. Any detail that could affect the LCA result, such as concrete grade, insulation density, or section size, is kept in the simplified name or moved to the COMMENT column.

Every output row links back to the source

A reference column records where each output row came from in the source file. When a single source row is split into several material rows, all of them share the same source reference. This makes QA straightforward: if a result looks unexpected, you can go directly to the original row to check it.

Tip: The COMMENT column is your audit trail. Any assumption, conversion, flag, or AI inference is recorded there. If a row looks unexpected, read COMMENT first.

Output format by tool

The output structure differs slightly between the Buildings/Infrastructure tool and the EPD tool.

Buildings and Infrastructure

The output contains one row per material, plus preserved source rows. Every row from the source file appears in the output.

Column

What it contains

IGNORE

TRUE or FALSE. TRUE skips the row on import (header, total, labour, and so on). FALSE imports the row. You can override any value before importing.

CLASS

The OCL building or infrastructure element class, assigned automatically from the document context (for example, FOUNDATION, EXTERNAL WALL, SLAB for buildings; EARTH_CUT, SURFACES, INFRA_SYSTEM for infrastructure).

MATERIAL

A simplified, LCA-relevant material name.

QUANTITY

A plain number, with no units or separators.

UNIT

A normalized unit: M3, M2, M, KG, TON, UNIT (metric) or CU FT, SQ FT, FT, LBS, TON, UNIT (imperial).

THICKNESS_MM / THICKNESS_IN

Populated when the quantity is in M2 or SQ FT and thickness information is available in the description.

COMMENT

The reason for IGNORE=TRUE, AI-inferred build-ups, area calculations, or any other flag. Multiple notes are separated by " - ".

ORIGINAL_NAME

The unmodified description from the source file.

ORIGINAL_ROW

The row number in the source file. Shared by all rows that originate from the same source row.

EPD

The output contains one row per resource (raw material, packaging, energy, emission, and so on). Quantities are normalized per declared unit and adjusted for production losses.

Column

What it contains

CLASS

The life cycle module: PRODUCT_MATERIALS (A1 raw materials), PRODUCT_PACKAGING, PRODUCT_ANCILLARY, PRODUCT_ENERGY, PRODUCT_PROCESS_EMISSIONS (A3), or PRODUCT_TRANSPORT_OTHER for additional transport legs.

RESOURCE

The name of the raw material, energy type, packaging item, or emission.

QUANTITY

The quantity per declared unit, after wastage has been applied.

UNIT

KG, M2, M3, KWH, MWH, MJ, M, L, UNIT (metric) or LBS, SQ FT, CU FT, FT, GAL, KWH, MWH, MJ, UNIT (imperial).

MASS_PER_UNIT

The mass of the material per unit of measurement, in KG (or LBS for imperial inputs).

TRANSPORT_LEG1_EI310 / METHOD_LEG1

The distance and mode of the first transport leg (km for metric, miles for imperial). Mode defaults to truck if not stated, flagged in COMMENT.

TRANSPORT_LEG2_EI310 / METHOD_LEG2

An optional second transport leg, in the same format.

COMMENT

Any assumption, normalization note, EPD reference, or warning. Multiple notes are separated by " | ".

Checking the output

Before importing, it is worth spending a few minutes reviewing the output file. The checks below cover the most common issues.

Buildings and Infrastructure

  • Row count looks reasonable. The output will have more rows than the source, because assemblies are split and every original row is preserved. As a rough guide, expect 1.5 to 3 times the number of rows in the source. A much higher ratio may indicate over-splitting; a similar count may mean splitting was skipped where it should not have been.

  • Check rows flagged "Built up suggested by AI." These are rows where the AI inferred constituent materials that were not explicitly listed. Verify the build-up matches your project specification before importing.

  • Review rows with class "OTHER." These are materials the AI could not confidently classify. Correct the class manually before importing, so they are modelled in the right part of your LCA.

  • Check calculated areas. Where a wall or partition measured in metres was converted to M2, the COMMENT column shows the calculation (for example, "Area = 226m x 3.6m height"). Verify the height used is correct for your project.

  • Spot-check quantities against the source. Use the ORIGINAL_ROW reference to compare a sample of output quantities against the source file. Pay particular attention to rows where layers or sides were multiplied.

  • Review flagged rows you disagree with. The AI errs on the side of inclusion; if in doubt, it keeps a row rather than flags it. If you believe a flagged row should be included, you can change its value before importing.

EPD

  • Verify quantities are per declared unit, not annual. If your data collection form contained annual totals, the AI divides these by your annual production volume to arrive at per-declared-unit quantities. Check that the declared unit and production volume were read correctly; they are usually stated at the top of the form. If they could not be found, the COMMENT column will contain a warning.

  • Check that wastage has been applied. For each raw material, the AI adds the stated production loss percentage to the reported quantity. Verify that quantities are slightly higher than the raw input values; the uplift should match the waste percentage in your form.

  • Confirm all resource types are present. Your output should include rows for raw materials (PRODUCT_MATERIALS), packaging (PRODUCT_PACKAGING), ancillary materials (PRODUCT_ANCILLARY), energy (PRODUCT_ENERGY), and any direct emissions (PRODUCT_PROCESS_EMISSIONS). If a section appears to be missing, check whether it was present in the source form.

  • Review assumed transport modes. Where a transport distance was given but no mode was stated, the AI defaults to truck and flags this in COMMENT. Update the transport mode if you have more specific information.

  • Confirm EPD references are in the right rows. If your form listed EPD numbers for specific materials or suppliers, check that these appear in the COMMENT of the correct row, particularly where a material was split across multiple supplier rows.

  • Check the total number of rows. Count the output rows by resource type and compare them against the sections of your data collection form. A missing section usually means the AI did not recognize the header; you can add the rows manually before importing.

Known limitations

  • Quantities are not verified against drawings or specifications. Errors in the source file are carried through.

  • Class assignment depends on the quality of headers in the source. A document with ambiguous or missing section headers will produce more "OTHER" or fallback classifications, which you will need to correct manually.

  • MEP systems in building cost plans are classified at a high level and are not broken down into individual pipes, cables, or equipment items.

  • Preliminaries, contingencies, and PC sums in cost plans are flagged and excluded, since they contain no material data relevant to LCA.

  • EPD: if the declared unit or annual production volume cannot be found in the data collection form, quantities cannot be normalized. The COMMENT column will flag any affected rows.

Need help or found an issue?

Contact the One Click LCA support team. When reporting an unexpected result, include the ORIGINAL_ROW number from the output file.

Did this answer your question?