Download the CSV. Drop it into Excel, Google Sheets, or your ERP. Fill in your lines. Send it back. The columns are arranged so our parser and our supplier network can route every line on the first pass.
We will parse anything: PDF takeoffs, photos of paper markups, mixed-format emails. But when a BOM arrives in this exact column order, our parse is deterministic instead of probabilistic, and the quote comes back in minutes instead of tens of minutes. The template is for people who want the fastest path.
Fixed columns mean no inference. We know which value is the part number, which is the quantity, which is the description. Edge cases (3M's "3M Aerospace" vs. "3M") get resolved upstream.
When manufacturer + part number is explicit and a substitute is needed, we can flag it cleanly. Free-text descriptions force interpretation and surface more ambiguous lines.
The template carries one ship-to-site column per line. Useful for multifamily portfolios, manufacturer multi-plant orders, electrical contractor multi-jobsite drops. One BOM, multiple drop addresses, one invoice.
Different lines often have different deadlines. The template carries need-by-date per line so we route urgent lines through faster supplier paths automatically.
Required columns are in red. The rest are optional but help us route faster.
| Column | Required | Example | Notes |
|---|---|---|---|
| line_number | optional | 1, 2, 3... | Auto-filled if blank. Helpful for cross-referencing back to your estimating system. |
| quantity | required | 24 | Integer or decimal. Required on every line. |
| unit_of_measure | required | case, each, box, ft, ream | Be specific. "case of 6 vs. case of 12" disambiguates. |
| manufacturer | optional | Kimberly-Clark, 3M, Eaton | If known. Improves parse accuracy by ~30%. |
| part_number | optional | 01840, 2091, BR240 | Manufacturer SKU. Strongest signal for exact match. |
| description | required | Scott 1-ply toilet tissue 1000-sheet 80/case | Required if manufacturer + part number are not both supplied. |
| target_unit_price | optional | 3.85 | If you have a price-to-beat, listing it helps us flag overages immediately. |
| need_by_date | optional | 2026-05-30 | YYYY-MM-DD. Helps route urgent lines to faster supplier paths. |
| ship_to_site | optional | Main building, Plant 2, 1234 Main St | Per-line drop address. Defaults to header address if blank. |
| notes | optional | Replacement for current stocked SKU | Free-text. Use for spec exceptions, alternates allowed, or context. |
The same template handles electrical, jan-san, and PPE. The same template handles foodservice and packaging. The columns do not change. Only what you fill in.
line_number,quantity,unit_of_measure,manufacturer,part_number,description,target_unit_price,need_by_date,ship_to_site,notes 1,24,case,Kimberly-Clark,01840,Scott 1-Ply Toilet Tissue 1000-Sheet 80/Case,,,Main building,Replacement for current stocked SKU 2,12,each,3M,2091,Pro-Pak General Purpose Sandpaper 9x11 in,,,Warehouse, 3,4,box,Honeywell,RWS-54002,Howard Leight Bilsom Earplug Box 100/Pair,,,Maintenance shop,
No. We will parse anything you send: PDF, Excel in any layout, plain text email, photo of a paper takeoff. The template is the fastest format because it requires no inference on our end. If you already have your BOM in a different format, do not retype it. Just send it.
Yes. Add columns to the right for internal use (cost code, project ID, GL account, etc.). We ignore unknown columns during parse but they will round-trip back to you on the quote so your downstream systems see them.
Send it anyway. Our parser handles any column order if the headers are recognizable. The fixed template is just the cleanest path.
Yes. Use the ship_to_site column per line. We will return one quote split by ship-to with consolidated totals or per-site totals, depending on your preference.
The CSV opens cleanly in Excel and Google Sheets. We deliberately offer CSV instead of XLSX so you do not get locked into formula columns or merged cells that break parse.
Default is 14 days. If you specify a bid validity window in the RFQ, we honor that instead (up to 90 days for bid-cycle quotes).
Or skip the download and paste lines directly into the BOM pricer.