Search supplier sites, Environdec, and EPD Hub; keep EPD-like candidates only.
Reads epd-products.json and epd-suppliers.json, searches in fixed order (supplier website → Environdec → EPD Hub), ranks results, then filters to EPD-like PDFs (rejects LEED/marketing summaries; requires distinctive product tokens). Writes epd-candidates.json. Uses normalized names only; empty lists are valid; never invents EPD metadata.