Methodology
CommodityGraph aggregates fragmented public information about commodity-market entities into a structured graph. The goal is that every statement on a page can be traced back to an official record, and that anything inferred is clearly distinguishable from what a source actually says.
1. Sources
We only use lawful, publicly accessible sources, preferring authoritative structured data: the Swiss commercial register (Zefix linked open data), the Swiss Official Gazette of Commerce (SHAB/FOSC), the GLEIF LEI index, and the sanctions lists of OFAC (US), the UK, the EU, the UN Security Council and SECO (Switzerland). News discovery uses GDELT metadata only. See Data sources for licences, access methods and refresh status.
2. Provenance: every fact has a source
Each value we display is stored as a claim recording the source, source URL, retrieval date, the raw evidence (the original record or sentence), and how it was obtained:
- Source — copied from a structured field of an authoritative source (e.g. the UID in the register, the IMO number on a sanctions list).
- Derived — derived by a deterministic, documented rule from source data (e.g. commodity categories matched in the registered purpose; officer roles parsed from structured gazette text).
- AI 80% — extracted by a language model from unstructured source text, with a confidence score. AI output is only kept if every extracted name or value literally appears in the source text, is never treated as the source of truth, and always links to the evidence.
Click any badge on an entity page to see the source, dates and raw evidence.
3. Company universe and classification
A company is included as a commodity trader when its registered statutory purpose describes trading in commodities (e.g. “négoce de produits pétroliers”, “Handel mit Rohstoffen”), scored by a multilingual rule set. Commodity categories are derived from the same purpose text. The classification is an interpretation of the purpose clause, not a statement about the company’s actual business volume.
4. Officers and changes
Officers, directors and signatories are taken from SHAB/FOSC notices, which announce every registered change. The digital gazette archive starts around 2019, so officer lists show people known from gazette notices since then; long-serving officers who have not appeared in a later notice may be missing. Each notice becomes one or more dated change events (appointments, departures, name/seat/purpose changes, mergers, liquidations, deletions).
5. Entity resolution
- Swiss companies are identified by their UID (CHE-…); GLEIF records are joined on the same UID.
- Vessels are identified by IMO number across all sanctions lists.
- Sanctions entries are grouped across lists by shared identifiers or UN reference numbers, otherwise by identical normalised name, type and country.
- People are merged only when name and origin/nationality match; same-name people with different details stay separate.
6. Sanctions screening semantics
- Identifier match: a register identifier (UID, LEI, registration number) appears on a list entry. Stated as a fact.
- Identical name and country: shown as “listed entry with identical name — not verified as the same entity”.
- Similar names: fuzzy candidates for manual review, shown only to signed-in users and never in public pages.
“No exact current sanctions matches found” means no identifier or identical-name match with an active entry at the time of screening. It is not a clearance certificate.
7. Limitations
- Coverage currently focuses on Switzerland; foreign group companies appear where GLEIF or sanctions lists connect them.
- Vessel particulars are as stated by listing authorities and may be outdated.
- Automated extraction can be wrong. Always verify against the official source before relying on any information.
Found an error? Request a correction.