CoolFace
Datasetpublic

SAMPOQ/supply-chain-10k

10-K Supply-Chain Graph Customer and supplier relationships that US-listed companies name in their own SEC 10-K filings, extracted into a directed graph. 17,039 rows across 2,753 filers, of which 3,588 resolve to a counterparty we also cover. Every row carries the accession number of the filing it came from, so any single claim can be checked against the original document on SEC EDGAR. This data is sold by financial data vendors and has no free equivalent we know of.… See the full description on the dataset page: https://huggingface.co/datasets/SAMPOQ/supply-chain-10k.

sourceHugging Facecc-by-4.0updated 6d agoView on Hugging Face
1likes120downloads
Dataset Card

10-K Supply-Chain Graph

Customer and supplier relationships that US-listed companies name in their own SEC 10-K filings, extracted into a directed graph. 17,039 rows across 2,753 filers, of which 3,588 resolve to a counterparty we also cover.

Every row carries the accession number of the filing it came from, so any single claim can be checked against the original document on SEC EDGAR.

This data is sold by financial data vendors and has no free equivalent we know of.

Which copy to cite

The files here are a mirror, refreshed weekly, covering filings through 2026-08-31. Hugging Face keeps every revision, so cite a specific commit if you need byte-for-byte reproducibility — the main branch moves as the extraction backfill discovers more filings.

The always-current version is the live CSV, and the documentation and column dictionary are at https://www.sampoq.com/datasets/supply-chain.

Columns

ColumnTypeDescription
source_tickerstringTicker of the filer that disclosed the relationship. Empty for a covered issuer with no ticker on file.
source_cikstringSEC Central Index Key of the filer, zero-padded to 10 digits. The join key for other SEC datasets.
source_namestringRegistered name of the filer.
relation_typeenum'customer' if the filer sells to the counterparty, 'supplier' if it buys from it. Always from the filer's point of view.
related_namestringThe counterparty exactly as written in the filing.
related_tickerstringTicker of the counterparty when it resolves to a company we cover; empty when it does not (common for private and foreign counterparties). An empty value means unresolved, never absent.
filing_datedateFiling date of the 10-K the relationship was read from (ISO-8601). Never empty — this is the column the snapshot is cut on, and rows without a filing on record are not published.
filing_accessionstringSEC accession number of that filing, e.g. 0000320193-23-000106. Resolves to the source document on EDGAR, so any row can be checked against the original.
collected_atdatetimeWhen the extraction ran (ISO-8601, UTC).

Load it

python
import pandas as pd

edges = pd.read_csv("https://api.sampoq.com/datasets/supply-chain.csv")
edges.related_name.value_counts().head(20)       # most-named counterparties
edges[(edges.source_ticker == "NVDA") & (edges.relation_type == "supplier")]

What this is not

  • It records disclosure, not the real supply chain. A row exists because a filer chose to name a counterparty, largely driven by the SEC rule requiring disclosure of customers above 10% of revenue. A missing edge means nobody wrote it down, not that the relationship doesn't exist.
  • Direction is the filer's point of view. The same pair can appear twice, from both sides, and the two filings don't always agree.
  • Extraction is automated. Relationships are read out of filing text by a language model, not by a human analyst. The dataset is auditable — every row names its source document — rather than audited.
  • Many counterparties are unresolved. related_ticker is empty when the named company isn't in our covered universe, which is common for private and foreign suppliers. Those rows are kept, because a named supplier is data even without a ticker. Where it is filled it is a string key and not necessarily a US ticker — Hon Hai resolves to 2317, its code on the Taiwan exchange — so joining it against a US-only security master will silently drop rows rather than fail.
  • `related_name` is verbatim, and not normalised. 12,377 distinct strings appear across 17,039 rows, so one company can show up under several spellings ("Walmart", "Walmart Inc.", "Walmart, Inc."). That is deliberate — the string is what the filing said, and normalising it in place would break the audit trail back to the source document. Entity resolution beyond related_ticker is yours to do.
  • The history is thin, and the date range flatters it. 16,741 of the 17,039 rows come from filings in the last 2 years. Earlier filings are in here and reach back much further, but they are a tail, not a panel: this is a current-state graph with some history, not a time series you can difference.
  • US annual filings only. The source is the 10-K. Foreign private issuers filing 20-F, and anything disclosed only in a 10-Q or 8-K, are out of scope.

Licence

CC BY 4.0 — use it commercially, redistribute it, build on it. The one condition is credit: Sampoq — https://www.sampoq.com

Citation

Sampoq (2026). Sampoq 10-K Supply-Chain Graph, filings through 2026-08-31.
CC BY 4.0. https://www.sampoq.com/datasets/supply-chain