BOM Cleaner: part number matching for messy BOM lists

BOM Cleaner is a tool in the Automa.Net portal that matches every line of a BOM list from Excel or your ERP to its manufacturer part number (MPN), brand and catalogue record - the matching step of BOM scrubbing. It reads codes buried in descriptions, split by spaces or next to a misspelled brand, and every row comes back with a confidence score and the reason behind it.

BOM Cleaner matcher: 2000 rows summarised as 1426 matched, 396 needing review and 178 unmatched, with part numbers highlighted inside the descriptions they were read from, the codes extracted from every line, and a catalogue card for a matched Phoenix Contact power supply

Built on 1,205 real files

files run through BOM Cleaner
1,205
lines processed
5.1M
lines matched automatically
1.5M
median time for a 10,000-line export
3 min

* Every file run through BOM Cleaner from October 2025 to November 2026.

Three lines that break ordinary matching

A part list is not dirty because someone was careless. It is written the way procurement, maintenance and five different suppliers each write. Here are three such lines - two with no manufacturer and the code broken up by spaces, one with the manufacturer misspelled - and the record each one comes back as.

Manufacturer:
–
Part number:
–
Description:
Modulo de terminales ET 200SP, sin fabricante indicado. Codigo 6ES7193 6TP00 0TP1.
Siemens 6ES7193-6TP00-0TP1
Manufacturer:
Siemens
Part number:
6ES7193-6TP00-0TP1
Category:
Terminal Blocks
Confidence:
88%
EAN
4047623409564
Lifecycle
Active
Net weight
0.029 kg
Manufacturer:
–
Part number:
–
Description:
Unidad de filtro regulador MS6, sin fabricante indicado. Codigo MS6 LFR 1/4 D7 ERM AS.
Festo MS6-LFR-1/4-D7-ERM-AS
Manufacturer:
Festo
Part number:
MS6-LFR-1/4-D7-ERM-AS
Category:
Controllers & Regulators
Confidence:
80%
Net weight
0.875 kg
Manufacturer:
–
Part number:
–
Description:
Conector M12 hembra 5 pines BCC097P, montaje en riel DIN, tablero principal. Fabricante: Baluff.
Balluff BCC097P
Manufacturer:
Balluff
Part number:
BCC097P
Category:
General Accessories
Confidence:
76%
Tariff code
85366990
Net weight
0.026 kg

Your sheet, returned with more on it

No template, no cleaning up first. You point at the columns that hold part numbers and the rest of the sheet is left alone.

Files
CSV, XLSX or XLS, with headers in any language. Delimiters, quoting and the byte order mark Excel hides in "CSV UTF-8" are detected for you.
Columns you point at
One or more MPN columns, brand columns if you have them. A bare code or a code buried in a description - same pass. Every other column travels through untouched.
The manufacturer's own spelling
Codes and brands come back as the manufacturer writes them, not as your file happened to. That is what makes five suppliers' lists comparable and leaves a BOM formatted for your ERP import.
The catalogue record behind it
Description, EAN, lifecycle, weight and packaging arrive with the match, next to its confidence and the reason for it.

Rules first, then the lines that hide the code

Every file goes through the same order. Rules settle every line they can, codes buried in text are read out of what is left, and you review only the rows that still need a decision.

  1. Upload and map

    Headers are read and rows counted before matching starts.

  2. Deterministic pass

    Codes are normalised, then looked up as main MPNs, alternative MPNs, designation codes and - only as a last resort - through search. Each route carries its own weight into the score.

  3. Codes buried in the text

    Lines the rules left unmatched have their code read out of the description around it. Whatever is read is checked back against the original text before it reaches matching.

  4. Work the flagged rows, export

    Open the matcher, filter to what needs a decision, correct in place and export a corrected XLSX - or just the codes that found nothing.

Inside the matcher

Matcher rows read from Spanish and English ERP descriptions: ABB, Siemens, Beckhoff and Balluff parts settled as Full Match with confidence between 76% and 88%, the part number highlighted inside each description, and one line with two conflicting codes held as Review Required

Every row, with its verdict on it

Filter by status, or by the specific reason a row was not settled. Search across MPN, brand and product. Correct in place; the row is rescored as you do.

A line naming a Siemens servo motor 1FK7083-5AF71-1UA0 and a GV2ME10 motor protector held as Review Required, with its diagnostics open: 'Why it wasn't auto-matched - no brand, needs confirmation; codes point to different products' and 'Why confidence is lower - longer code went unmatched; multiple products matched; brand ambiguous across candidates'

Why it was not auto-matched

Thirty diagnostic codes under two headings a reviewer actually reads: what blocked the match, and what pulled the confidence down. No guessing what the tool was thinking.

Manufacturer data, not a best guess

A match is worth exactly as much as the record behind it. Every answer here comes from a manufacturer record in the catalogue, and the row names the one it used.

Built on manufacturers' own data
The catalogue is assembled from manufacturer data - part numbers, designations and attributes as the manufacturer publishes them.
Nothing is invented
A code only counts when it appears in your line character for character. Nothing is repaired, completed or pulled from anywhere else - a line with nothing to read comes back unmatched.
Every match names the route that found it
A main manufacturer part number, an alternative code, a designation code or the search fallback - the row says which route settled it, and each one carries its own weight into the score.

The catalogue covers parts from manufacturers such as

  • Siemens
  • ABB
  • Schneider Electric
  • Phoenix Contact
  • Omron
  • Balluff
  • Festo
  • Mitsubishi Electric
  • SICK
  • SMC
  • ifm electronic
  • Beckhoff
  • WAGO
  • Bosch Rexroth
  • Lenze
  • 9000+OEM brands

Frequently asked questions

Which tool matches inconsistent part descriptions across BOM lists and supplier quotes?

BOM Cleaner does. It reads the manufacturer part number out of each line however it was written - inside a description, split by spaces, with a brand prefix or a misspelled brand - and looks it up exactly against the Automa.Net catalogue. A line is settled only when the code matches a manufacturer record; anything else is flagged for review with the reason on the row, so lists from different BOMs and supplier quotes come back in one standard format.

Does it guess when it is not sure?

No. Matching is deterministic: codes are normalised and looked up against the catalogue, and a row is only settled when the evidence supports it. Where a code has to be read out of surrounding text, what comes back is a verbatim fragment of your own line, checked against the original before it is used. A line that gives nothing to read comes back unmatched rather than filled in.

Why does a matched row still say review required?

Because something specific stood in the way: the match sits inside a longer code, two codes on the line point at different products, the brand only agreed at family level, the confidence fell below the threshold. Whichever it was, that reason is written on the row and you can filter the whole file by it.

What does the confidence number actually mean?

It starts from the route that found the product - a manufacturer's main part number, an alternative code, a designation code or a search fallback - and is then adjusted by brand agreement, competing candidates, the strength of the code itself and whether a longer code on the same line went unmatched. Every factor that reduced it is reported as a named code on that row.

What comes back in the export?

Your original columns, plus 21 columns of findings: the matched product and brand with their identifiers, the match type, the confidence, every code and brand read from the line, all competing candidates, the status, the warnings and notes, and - if you enabled it - the category with the route that assigned it. You can export everything, only your selection, or only the codes that matched nothing.

Does it normalise MPNs and part numbers?

That is what matching does. Codes are normalised before lookup - separators, punctuation and case are stripped - so 6ES7193-6TP00-0TP1, 6ES71936TP000TP1 and sie6es7193 6tp00 0tp1 all reach the same article. What lands in the output is the manufacturer's own spelling of the code, not the one that happened to be in your file, which is what makes a BOM list from five suppliers comparable to itself.

How is this different from the Warehouse Golden Record service?

BOM Cleaner is a module you run yourself on a file, as often as you like. Warehouse Golden Record is a service for a full MRO material master: deduplication across the whole catalogue, criticality segmentation, lifecycle flags and an output shaped for your ERP. Same underlying matching, different scope of work.

What happens to my file after I upload it?

It is processed to match and enrich your records, and nothing else. It is not sold, not traded and not shared with other members. Access control, logging and retention follow ISO 27001 practices, and you can ask for your data to be removed at any point.

Bring one export you would normally clean by hand

Every list cleaned by hand means retyping codes line by line, and a wrong one still reaches the order. BOM Cleaner is free, with no row limit.