Data

The hard part of entity resolution isn’t the matching — it’s the suffixes

July 3, 2026·6 min read

Deduplicating company names looks like a five-minute job. You’ve got “Acme Inc”, “Acme Incorporated”, and “ACME, INC.” — strip the suffix, lowercase, collapse the whitespace, done. For a single country, that intuition mostly holds.

Then you add a second country. Then a hundred.

I’ve spent the last while building a company-name normalization engine, which meant ingesting GLEIF’s Entity Legal Forms (ELF) list — an ISO 20275 reference of roughly 3,600 raw legal-form codes across 200+ jurisdictions — and distilling and enriching it against our own data down to 404 canonical forms across 116 jurisdictions and 41 languages. Somewhere in there, “strip the suffix” stopped being a string operation and turned into a geography, linguistics, and corporate-law problem.

Here’s the weird stuff I found. There’s a free dataset and a set of tools at the bottom — take them.

1. There are absurdly many ways to say “company”

The naive normalizer everyone writes is some flavor of (inc|llc|ltd|corp)$. That regex covers a rounding error of reality.

Across the jurisdictions in the dataset there are 97 distinct ways to write what is essentially “limited liability company” — LLC, Ltd, GmbH, BV, SARL, Sp. z o.o., Pty Ltd, Oy, ApS, and dozens more. The dataset as a whole spans 5 writing systems. Even the boring English-speaking corner has Inc, Incorporated, Corp, Corporation, Co, Company, LLC, LP, LLP, PLLC, PC, and PA — each meaning something subtly different.

The lesson that took longest to accept: there is no clever general rule. Below the surface it’s a lookup table the size of a small country’s company register, and the only question is how good your lookup is.

2. The same abbreviation means different things in different countries

This is where naive matching starts silently corrupting data.

Take SA. In France it’s Société Anonyme; in Spain and across Latin America it’s Sociedad Anónima — both roughly a public limited company, but governed by different law. Take AS: it’s Aksjeselskap (a Norwegian private limited company), but it also shows up as Turkey’s Anonim Şirketi (a joint-stock company), and it’s one slash away from Denmark’s A/S (Aktieselskab, a public limited company). Same two letters, three different entities, three different sets of rules.

These collisions are pervasive, not exceptional: short suffixes recur across dozens of countries and legal traditions, and the dataset deliberately records each form against the specific jurisdictions it belongs to rather than as a single global token. You cannot normalize a suffix correctly without knowing the country it came from. Any pipeline that treats the suffix as a global token is quietly merging entities that have nothing to do with each other.

3. One letter can flip a company from private to publicly traded

Suffixes don’t just identify a company — they encode its liability and whether it’s publicly traded. But only if you know the jurisdiction’s rules.

In Germany, GmbH is a private limited company and AG is a publicly traded stock corporation. In Denmark, ApS is private and A/S is public. These aren’t cosmetic differences; they’re the difference between a corner shop and a listed multinational. A matcher that ignores the suffix — or worse, strips it before comparing — will happily fuse a public stock corporation with an unrelated private company that shares a name stem.

In this dataset, 93 jurisdictions contain both a public and a private form separated only by their suffix — the same kind of name, a fundamentally different legal entity. This is the finding that turned “just strip the suffix” from a shortcut into a liability.

4. Plenty of company names aren’t in the Latin alphabet

String equality assumes everyone’s typing in the same script. They aren’t.

Russia’s LLC is ООО (Общество с ограниченной ответственностью) — in Cyrillic. Romanized, it becomes OOO, which is now a different byte sequence representing the same company. Japan’s 株式会社 (KK, kabushiki-gaisha) has several accepted romanizations, so the “same” firm can appear three or four different ways depending on who transcribed it. Across the dataset’s full names and synonyms you’ll find five writing systems — Latin, Cyrillic, CJK, Greek, and Thai.

There’s no string operation that fixes this. You need actual transliteration with awareness of the source language — which is its own rabbit hole, and the reason we ended up building standalone transliteration tools for Cyrillic, Chinese, and Greek (all linked below).

5. Some legal forms are two legal forms wearing a trench coat

My favorite discovery: GmbH & Co. KG.

It’s a Kommanditgesellschaft — a limited partnership — whose general partner is itself a GmbH. So the structure stacks a limited-liability company into the unlimited-liability slot of a partnership, getting you limited liability through the back door. The suffix is, structurally, two legal forms at once.

The dataset carries a handful of these stacked forms — GmbH & Co. KG, and the AG & Co. KGaA family — and every parser that assumes a single trailing legal form breaks on them. Each is a small special case that a “just take the last token” approach gets wrong.

6. A handful of forms show up everywhere — and then there’s a very long tail

The distribution is brutally uneven. A few forms are near-universal — Ltd appears in 47 jurisdictions and SA in 33 — while 293 of the 404 forms appear in exactly one jurisdiction: a long tail of rare, country-specific structures you’ll see a few times a year.

This shapes how you build. The head you handle with a fast, well-tested lookup. The tail you handle with… a bigger lookup, because there’s no generalization that covers it — only more per-jurisdiction knowledge. There is no model that infers Sdn Bhd or v.o.s. from first principles. You either know it or you don’t.

Why this is actually hard

Pull the findings together and the real lesson is this: entity normalization isn’t a string problem, it’s a knowledge problem. The collisions, the public/private flips, the scripts, the hybrids — none of it reduces to a regex, because the information you need (what this suffix means here) lives in corporate law and language, not in the characters themselves.

If you’re building dedup, record linkage, or entity resolution and you’re treating company suffixes as text to be stripped, you’re losing entities at every border you cross. The fix isn’t a smarter algorithm. It’s per-jurisdiction reference data, kept current, applied with the country in hand.

The free stuff

Because the reference data is the hard part, we’re giving ours away:

One line of self-interest

This all came out of building Ambect, an entity-normalization API — if you’d rather call an endpoint than maintain a suffix table for 200 countries, that’s what it’s for.

Otherwise, take the dataset and go. And if I got something wrong about your jurisdiction’s legal forms — which, given there are 3,600 of them, is statistically likely — tell me. I’ll fix it.