/epd-parser
Extract structured environmental impact data from EPD PDFs
What it does
Type /as:epd-parser with one or more EPD PDF files. The skill reads the PDF, parses impact indicator tables, and structures the data into a 42-column schema covering product identity, EPD metadata, environmental impacts across life cycle stages, resource use, and LEED eligibility.
Handles EN 15804+A1 and +A2 formats, multi-product EPDs, non-English documents, and varying table layouts across program operators (UL, NSF, Environdec, IBU, ASTM).
Install
Claude Desktop:
- Open Customize → Browse plugins
- Click + → Add marketplace from GitHub
- Enter
AlpacaLabsLLC/skills-for-architects - Install Architecture Studio
Claude Code (terminal):
claude plugin marketplace add AlpacaLabsLLC/skills-for-architects
claude plugin install as@skills-for-architects
Or symlink just this skill:
git clone https://github.com/AlpacaLabsLLC/skills-for-architects.git
ln -s $(pwd)/skills-for-architects/skills/epd-parser ~/.claude/skills/epd-parser
Usage
/as:epd-parser ~/Downloads/EPD11075.pdf
A folder of EPDs:
/as:epd-parser ~/Documents/project-epds/
What it extracts
- Product identity — manufacturer, product name, declared unit, CSI division
- EPD metadata — registration number, program operator, PCR, standard version, validity dates, system boundary
- Impact indicators — GWP-total, GWP-fossil, GWP-biogenic (A1-A3), plus A4-A5, B1-B7, C1-C4, D when available
- Additional impacts — ODP, AP, EP, POCP
- Resource use — renewable/non-renewable primary energy, fresh water, recycled content, waste
- Declaration type and verification — product-specific vs. industry-average, third-party verification status, as printed in the EPD. The skill does not decide LEED eligibility from these alone; that needs the current LEED requirements checked against the original declaration
Sample: Herman Miller Cosm Chair (EPD11075)
Generated from: EPD11075.pdf (10 pages, EN 15804+A2)
| Field | Value |
|---|---|
| Product | Cosm Chair |
| Manufacturer | Herman Miller (MillerKnoll) |
| Declared Unit | 1 seat |
| Functional Unit | 1 seat for 1 individual maintained for 10 years |
| GWP-total (A1-A3) | 64.3 kg CO2e |
| GWP-fossil (A1-A3) | 71.5 kg CO2e |
| GWP-biogenic (A1-A3) | -7.20 kg CO2e |
| System Boundary | Cradle-to-grave |
| Program Operator | NSF |
| Registration No. | EPD11075 |
| Valid | 2025-05-21 to 2030-05-21 |
| Recycled Content | 54% |
Other life cycle stages (GWP-total): A4-A5: 11.17 · B1-B7: 0 · C1-C4: 4.59 · D: -6.91 · All stages: 73.2 kg CO2e
Resource use (A1-A3): PERE: 200 MJ · PENRE: 1,170 MJ · Fresh water: 0.322 m3
Output saves to the project’s epd-library.csv on the 42-column EPD schema, or to a standalone CSV.
Pairs with
/as:epd-compare— compare parsed EPDs side-by-side/as:epd-research— find more EPDs for the same product category/as:epd-to-spec— turn parsed GWP values into specification thresholds
Common questions
Which EPD formats does it read?
EN 15804+A1 and +A2 declarations from program operators such as UL, NSF, Environdec and IBU, including multi-product EPDs. It keeps the standard version, declared unit and life-cycle stage with every value and never treats A1 and A2 results as equivalent.
What happens with scanned or unreadable pages?
The skill reports them as unreadable instead of guessing. Values it cannot find in the document stay blank, never zero, and each extracted value carries its page or table locator so you can check it.
Can it find or compare EPDs?
No. This skill parses a declaration you supply. Use /epd-research to find EPDs for a material and /epd-compare to compare them side by side.
Does it save the results?
Only when you ask. On a save request it previews the exact rows it will add to the project's epd-library.csv, then appends them in one batch without touching existing rows.