Normalizing registers across countries is harder than it looks, since status values like dissolved, in liquidation and struck off mean different things per jurisdiction. Curious how you map those to a single active or inactive flag, or whether you keep the original status string next to it.
Great question, and honestly, this is the least polished part of the Actor right now.
Every record gets two fields: "active" (true/false) and "status" (a string). "active" is the one that's consistent everywhere. "status" isn't a shared vocabulary yet. Mostly it's the registry's own value, passed through or lightly translated:
FR: the raw SIRENE etat_administratif code (A or C)
EE: R/L/N/K mapped to registered / in liquidation / bankrupt / deleted
FI: PRH's English company-situation text (e.g. liquidation, bankruptcy) when one exists, otherwise registered/ended
GLEIF: the LEI entity status (ACTIVE/INACTIVE)
CZ: "dissolved" if ARES has a termination date, otherwise "active"
NO: konkurs, underAvvikling and slettedato all collapse into one "deleted/bankrupt/dissolving" value, so you can't tell liquidation from struck-off there
PL: we only read the current KRS extract, so it always says "registered" and doesn't check liquidation or bankruptcy entries yet
We also don't keep the raw code as a separate field in every source. Next on the list: a shared enum (active / in_liquidation / bankrupt / dissolved), the raw code kept next to it, and proper liquidation detection for NO and PL. Thanks for pushing on this!
Quick update: this is now shipped (Actor build 1.0.2, also on our API).
Every record now has status_normalized, one of active / in_liquidation / bankrupt / dissolved / unknown, plus status_raw with the registry's own codes and flags. The existing status and active fields are unchanged.
What changed for the weak spots:
NO: konkurs, the liquidation flags and slettedato are now separate (bankrupt / in_liquidation / dissolved).
PL: we read the KRS bankruptcy and liquidation sections and the deletion date, and old closed bankruptcies stay active.
CZ: dissolved also comes from the commercial-register state, insolvency register entries map to bankrupt, and "v likvidaci" names to in_liquidation.
FI: PRH situation codes (KONK, SELTILA, SANE) are mapped, with reorganisation flagged in status_raw.
I checked it against about 20 real companies across the seven sources. One caveat: for CZ, "bankrupt" means active insolvency proceedings, which isn't always a declared bankruptcy. Thanks again, the question made the data better.
That was fast. Keeping status_raw next to the normalized value is the bit I'd have asked for, since the Norwegian konkurs vs underAvvikling split matters a lot when you're cleaning a prospect list. Will try 1.0.2 on a batch of NO and CZ companies.
StackShortlist
Proof Over Promises.
Normalizing registers across countries is harder than it looks, since status values like dissolved, in liquidation and struck off mean different things per jurisdiction. Curious how you map those to a single active or inactive flag, or whether you keep the original status string next to it.