Blog Open the app

How to Match Pharmaceutical Products Across Different Suppliers (Even When Names Don't Match)

July 12, 2026 · 10 min read · Written by Sam Kale

If you work at a pharma wholesaler, distributor, or pharmacy chain, you already know this problem. Every supplier sends you a product feed. Every feed names the same product differently. And every time a supplier or partner updates their catalog, half your product names shift and nothing matches anymore.

The result: a warehouse team that spends hours a week reconciling "new" products that are actually old ones with different names, a purchasing team that orders duplicates by accident, and a master product file that grows more polluted every month.

This isn't a data quality problem. It's a matching problem. And unlike matching companies or customers, pharmaceutical products have their own quirks that make single-column matching hopeless. This guide covers how to fix it in a way that scales.

Written for: pharma wholesalers, distributors, hospital procurement teams, pharmacy chains, and anyone reconciling drug catalogs from multiple sources. Non-technical friendly — no code required.

Why Pharma Product Matching Is Uniquely Hard

Take a step back and look at how pharma products actually get described. Here's the same drug from four suppliers:

SupplierProduct nameManufacturerCountry
AAmoxicillin 500mg 21 capsGSKUK
BAmoxicillin capsules 500 mg N21GlaxoSmithKline plcUnited Kingdom
CAMOXICILLIN 0.5g x21Glaxo Smith KlineGB
DAmoxil 500mg capsules 21ctGSK PharmaUK

Every row is the same product. To a human it's obvious. To a normal fuzzy matcher looking at the product name alone, only rows A and B are clearly the same. Row C looks different because of "0.5g" instead of "500mg." Row D looks completely different because it uses the brand name "Amoxil" instead of the generic.

The reason single-column matching struggles here is that pharma products aren't identified by one attribute. They're identified by a combination: active ingredient + dosage + form + manufacturer + country. Miss any one of those and you either match different products together or fail to match the same product.

The four specific traps

Dosage formatting. "500mg" = "500 mg" = "0.5g" = "0,5 g" (European decimal). Different suppliers pick different conventions. Your matcher has to see through all of them.

Pack size and form. "21 caps" = "N21" = "21ct" = "21 capsules" = "×21". Same information, four ways to write it. Add in "tablets," "syrup," "susp," "blister," and it multiplies.

Brand vs generic. Amoxil = Amoxicillin (same drug, different name). Advil = Ibuprofen. Tylenol = Paracetamol = Acetaminophen. If one supplier uses the brand name and another uses the generic, no fuzzy match on the product name alone will connect them.

Manufacturer aliases. "GSK" = "GlaxoSmithKline" = "Glaxo Smith Kline" = "GSK Pharma." Manufacturer names get abbreviated, expanded, restructured, and localized. This is where the country of origin becomes valuable — even if the manufacturer name shifts, "UK" narrows it down fast.

The Right Approach: Match on Multiple Columns

The way out of this is to stop trusting any single column and instead match on a combination. In DedupFuzzy that means:

Each column gets compared separately, then the scores are blended into one final match score. If the product name matches but the manufacturer doesn't, the score drops. If the product name is fuzzy but manufacturer and country both match, the score holds up.

Let me walk through the four Amoxicillin rows above using this setup:

PairProduct scoreManufacturer scoreCountry scoreWeighted total
A vs B92859090.3 ✓
A vs C78807578.0 ✓
A vs D628210072.7 ✓

All three pairs cross the "confident match" threshold, even the tricky A vs D pair where the product names look nothing alike (Amoxicillin vs Amoxil). The manufacturer and country columns did the heavy lifting on that one.

Compare that to matching on product name alone: A vs D would score 62 and get thrown out. Multi-column matching caught it because the other columns confirmed what the product name couldn't.

Step-by-Step: Reconciling Two Supplier Catalogs

Here's the workflow start to finish. Assume you have two supplier feeds — a spreadsheet from Supplier A and a spreadsheet from Supplier B — and you want to know which products appear in both.

1. Prepare the files

Save both files as CSV or Excel. Make sure each has clearly labeled columns for at least:

If you have ATC codes, EAN barcodes, or internal SKU IDs, keep them in the file. You'll use them for cross-checking at the end.

2. Upload both files

Open DedupFuzzy, switch to the "Match two company lists" tab, and drop in File 1 and File 2.

3. Pick the primary columns

Set the primary column on both sides to your product name column. Under What type of data is this?, choose Products / SKUs. This tells the matcher to use product-specific rules (keeping distinct brands separate, not collapsing every dosage variation together).

4. Add helper columns

Open "Optional: match on multiple columns." Click "+ Add another column," then pick your manufacturer column from File 1 and the matching manufacturer column from File 2. Drag the slider to about 25%.

Add a second row for country of origin at about 15%. Your primary column automatically becomes 60%.

5. Run the match

Hit Start Matching. Depending on the file size, this takes anywhere from a few seconds to a couple of minutes. The tool blocks obviously different products from being compared, so it scales to tens of thousands of rows without you having to think about it.

6. Review the results

You'll get a table showing each product from File 1 alongside its best match from File 2, with a similarity score and a matched / not matched / borderline label. Sort by score descending and skim the borderline range (roughly 78–92) — these are the pairs where a quick human check pays off.

The confident matches (above ~92) are almost always correct. The clear non-matches (below ~78) are almost always correct too. It's the middle 5–10% that benefit from a two-minute review.

7. Download and integrate

Export the results as CSV. You now have a mapping file: for every product in Supplier A's catalog, you know either the equivalent product in Supplier B's catalog or a "no match" flag. Feed that back into your ERP or master product file.

A Realistic Example With Numbers

To give this some ground, let's say you're a mid-size pharma wholesaler with 8,000 SKUs in your master file, and you just received a catalog from a new supplier with 3,200 products. Without multi-column matching, you'd expect roughly:

With manufacturer and country added as helpers, those numbers typically shift to:

That's roughly a 4× reduction in manual review time. On a monthly reconciliation cycle across multiple suppliers, that's the difference between one person spending a week on catalog cleanup versus half a day.

What to Do When the Manufacturer Column Is Missing

In real files, manufacturer isn't always populated. Two workarounds:

Use brand name instead. Many pharma feeds have a "brand" or "trade name" column even when they don't have a formal manufacturer field. Brand often correlates with manufacturer well enough to serve as a helper.

Use country of origin at higher weight. If you can't find any manufacturer or brand column, bump country of origin up to 30% and keep product name at 70%. It won't be as good as three-column matching, but it's still a lot better than product name alone.

Extract manufacturer from another field. Some feeds bury the manufacturer inside the product name itself ("Amoxil 500mg by GSK"). If you can pull that out with a formula or a quick text-to-columns step in Excel before uploading, you'll get a full manufacturer column that serves as a strong helper.

The Recurring-Reconciliation Angle

One thing worth pointing out: this isn't a one-time cleanup. Supplier catalogs change constantly. New products get added. Existing products get renamed. Pack sizes shift. Manufacturers restructure.

Which means the matching workflow above needs to run every time you receive an updated feed — usually monthly for most wholesalers, weekly for the more active ones. Setting up a repeatable process pays off within one or two cycles.

A rough template that works for most teams:

  1. Maintain one master product file with cleaned, canonical entries.
  2. Each time a supplier sends a new catalog, run multi-column matching against your master.
  3. Confident matches auto-update pricing / availability in your master.
  4. Borderline matches go to a shared review queue (a Google Sheet is fine).
  5. No-match rows become candidates for new SKUs in the master.

The whole thing takes 15–30 minutes per supplier, per cycle, once you've got the column setup dialed in.

Beyond Pharma: The Same Pattern Applies

If you're not in pharma, the same approach works wherever you're reconciling product catalogs across sources:

Anywhere the same physical item is sold by multiple sources with different naming, multi-column matching is the right tool. Pharma is just the most extreme example because it combines all the traps — dosage formatting, pack size variations, brand/generic aliases, and manufacturer abbreviations — into one workflow.

Try multi-column matching on a real supplier feed. Upload your file, pick your product / manufacturer / country columns, and see the matches in about a minute. Free for 500 rows, no signup, no credit card.

Try DedupFuzzy Free