Part matching module

BOM Cleaner: part number matching and MPN normalisation for messy BOM lists

BOM Cleaner reads part numbers out of the lines your ERP actually exports - a brand prefix glued to a code, a code buried in prose, two codes on one line - and matches them against the Automa.Net catalogue of parts from 9000+ manufacturers. Every row comes back with a confidence score and the reason behind it.

Catalogued parts
10.5M+
Lines matched
4.8 M
Auto-matched
66.8%
Per 1,000 lines
30 s
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

Before and after

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 of the shapes that defeat a plain lookup - a line carrying only a description, a type code where the ordering number should be, a manufacturer the catalogue files under a different name - and the record each one comes back as.

Manufacturer:
Part number:
Short text:
Ersatzlüfter für S7-400 Baugruppenträger
Siemens 6ES7408-1TA00-6AA0
Manufacturer:
Siemens
Part number:
6ES7408-1TA00-6AA0
Short text:
SIMATIC S7-400, spare fan for rack
EAN
4025515069249
Lifecycle
Active
Net weight
0.21 kg
Manufacturer:
ABB
Part number:
CR-M024DC2
Short text:
Relais 4 Stk
ABB 1SVR405611R1000
Manufacturer:
ABB
Part number:
1SVR405611R1000
Type code:
CR-M024DC2
Short text:
Pluggable interface relay 2 c/o, 24 V DC
EAN
4013614497223
Net weight
0.033 kg
Manufacturer:
Telemecanique
Part number:
GV2ME10
Short text:
Motorschutzschalter 3 Stk
Schneider Electric GV2ME10
Manufacturer:
Schneider Electric
Part number:
GV2ME10
Type code:
TeSys Deca
Short text:
Manual starter and motor protector
EAN
3389110290899
Net weight
0.26 kg

What goes in, what comes back

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 or XLSX. 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.
The catalogue record behind it
Description, EAN, lifecycle, weight and packaging arrive with the match, next to its confidence and the reason for it.

How a file moves through it

Rules first. Then the lines that hide the code.

The order is the design. A line the deterministic pass already answered is never touched again, and a code read out of surrounding text has to appear in your line character for character before it counts.

  1. Import

    Upload and map

    Headers are read and rows counted before matching starts.

  2. Matching

    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. Code extraction

    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. Review

    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 carrying Full Match, Review Required, No Match and Manual Match statuses next to their confidence score and matched MPN

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 Review Required row with its diagnostics open: 'Why it wasn't auto-matched - no brand, needs confirmation, codes point to different products' and 'Why confidence is lower - multiple products matched'

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.

Where the answers come from

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 across 9000+ brands - 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.

Before you upload

Not every list is worth running

Some files pay for themselves on the first run. Others have nothing on them to match. Here is where the line falls, so you can tell which one you are holding.

Worth running

  • An ERP, CMMS or supplier export with part numbers somewhere in it, however they happen to be written
  • Lists you process repeatedly - incoming RFQs, supplier catalogues, stock takes, onboarding a new source
  • Data that has to be standardised before it enters an ERP, a marketplace or a pricing engine
  • Work where somebody has to be able to say afterwards why a given line was matched the way it was
  • Files where part of the list is expected to fail, and the failures matter as much as the matches

Not worth running

  • Lists carrying only your own internal ERP numbers. With no manufacturer code anywhere on the line there is nothing for the catalogue to look up
  • Lines carrying only a quantity and a price - there is nothing on them to match
  • Codes under six characters with no brand beside them. Too little signal to accept a match without guessing

Bring one export you would normally clean by hand

The first run tells you more than any specification will: how much of your list the catalogue already knows, and what shape the rest is in.

Frequently asked questions

What files can I upload?

CSV, XLSX or XLS, with the column headers in the first row. Rows shorter than the header are padded rather than rejected. The run happens in the background and can be cancelled without losing what was already matched.

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.