Methodology
Traceleaf is a join, not an investigation. Every number on the site comes out of a public record that someone else published, and every line between two records says what class of document it came from, when that document was read, and how sure we are. This page is the whole method, in order.
The data model
Six entity types and six kinds of link between them. The chain runs factory, exporter, US importer, brand, seller, price, and the model exists so that any claim can be walked backwards along it to a filing.
- Factory
- A hardware manufacturer, almost always in Guangdong. Held with its national company registration number, registered capital, production and export licence status, stated annual capacity, product lines and coil technology, patent count, and its record as plaintiff and defendant in court.
- Exporter
- The trading company whose name appears on the shipping paperwork. Often a separate legal entity from the factory, sometimes a shell with no staff. Held with HS codes shipped, declared unit value, and monthly shipment counts.
- US importer
- The consignee named on the customs filing. Held with city and state, ports of entry, monthly shipments and units, how many state licences it holds, and whether it is PACT Act registered.
- Brand
- The label a consumer sees. Held with owner entity, domains and when each was first seen, US and Chinese trademark status, licensed states, SKU count, the hardware models it uses, and whether a certificate of analysis was verified.
- Seller
- A dispensary, smoke shop, online store or wholesaler. Held with state, licence number where one exists, location, the brands observed on its shelves or menu, and any enforcement action on the public record.
- Price observation
- One price, at one step of the chain, in one month, in one state where the step is state-specific. The five steps are ex-works at the factory, landed, wholesale, gray-channel retail, and licensed retail.
The six relationship kinds
The graph currently holds 19,972 links across 16101 entities.
owns-or-fronts· 39 links- Exporter to factory. The trading name on the paperwork belongs to, or is operated on behalf of, a named manufacturer.
ships-to· 628 links- Exporter to US importer. A shipment moved between these two parties, with the units and the date range taken from the customs filing.
supplies· 11,187 links- US importer to brand. Imported hardware reached this label, by distribution record or by matched SKU.
uses-hardware-from· 6,731 links- Brand to factory. The device the brand sells is a model this factory makes, matched on mould, coil spec and markings.
is-sold-by· 1,373 links- Brand to seller. The brand was observed on this outlet's menu, shelf listing or wholesale catalogue.
is-a-copy-of· 14 links- Brand to brand. The packaging, mark or device copies another label. Recorded only where a filing or a court document says so.
What we read
Over 230 public sources are on the register, across 37 countries and multi-country blocs, in 28 languages. 38 of them are integrated and pulling today; the rest are researched and documented against the day they are needed, and a source that has never been pulled reports zero records on this site rather than an estimate.
Every one of them falls into one of a small number of record categories. The category is what we publish beside a claim, because the category is what tells a reader how much weight the claim can carry. A court judgment and a retail menu listing are not the same kind of evidence, and the interface never pretends they are.
- Licence record · 65 sources
- Company registry record · 57 sources
- Customs filing · 44 sources
- Regulatory filing · 27 sources
- Patent or trademark filing · 16 sources
- Published web record · 16 sources
- Court judgment · 9 sources
- Public social post · 2 sources
- Retail menu listing · 2 sources
Which specific sources those are is proprietary, and so is how they are joined. Finding them, reading them in their own languages, working out which ones carry an identifier that matches something we already hold, and establishing which of them are dead ends took most of the cost of building this. Publishing that list would hand it over for nothing, so it stays in the operator console. What a reader gets instead is the category of record behind every claim and the date it was read, which is what is needed to judge the claim, or to dispute it.
Confidence
Every link carries one of three levels. The rule is the same in each case: the link points at a record, and the confidence says how many independent signals back it. Independent means the signals do not derive from one another. Two fields on the same page of the same register are one signal, not two.
A record states the relationship directly. A customs filing naming both parties, a licence listing the owner, a court finding. 6,510 links, 33% of the graph.
Two or more independent signals point the same way and nothing on the record contradicts them. 13,373 links, 67%.
One weak signal, such as a shared address in a business park or a similar device mould. Published so the reader can see what we are looking at, never used to support a conclusion. 89 links, 0.4%.
Each link also carries an inference note in plain language, the categories of record behind it, and the date each category was last checked, so a reader who disagrees with the reasoning can see exactly what class of evidence it rests on.
How a link is graded
The rule, in the order it is applied. It is a rule rather than a route: the standard a link has to clear before it is published is a promise to the reader, and it does not depend on which particular register a document came out of.
- 1Start from a filing, never from a hunch
A link only enters the graph if a public record already names both parties, or names one party and a property we hold for the other. A shipment with a consignee and a shipper is one such record: two parties, one date, one quantity, one tariff line. Nothing is created from a pattern alone.
- 2Characterise each party from its own records
Each named party is then described only from documents filed about it: its company registry record for legal identity and capital, its licence records for what it is permitted to make or sell, its regulatory filings for stated capacity, its court record for what it has been sued over. Each of those attaches to the entity with its own date, and none of them is inferred from the others.
- 3Count signals, and only count independent ones
To connect two parties that no single document connects, we look for properties they share. Two signals count only if neither derives from the other: two fields on the same registry page are one signal, not two, because one edit changes both. A signal that appears in a record filed by a different body, at a different time, for a different purpose, is a second signal.
- 4Grade on how many independent signals survive
One weak shared property is suspected. Two or more independent signals pointing the same way, with nothing on the record contradicting them, is inferred. A document that states the relationship outright is confirmed. The grade is written onto the link, with a note in plain language naming the classes of signal that produced it.
- 5Never rewrite the past
If a record later shows a different position, the link does not change retroactively. It gets a new date range and the old range stays readable, so a reader can see what was true when, and what we believed when.
Habits
- Snapshot every source page. Register entries get edited and menus get taken down. What we cite is the copy we read, stored with the time we read it.
- Timestamp every data point. A price without a month and a licence status without a date are both useless.
- Never overwrite history. Corrections and changes append. The current view of a record is the newest row, not the only row.
- Log how each relationship was inferred. A note a stranger can follow, naming the classes of signal and the categories of record, sits on every link that is not confirmed outright.
Known gaps
Customs manifest data covers ocean freight only. Air freight and express parcels are not public, and an importer can file a confidentiality request with CBP to have its name withheld from the manifest data altogether.
So treat every manifest-derived volume on this site as a floor, not a total. To estimate what is missing we compare against two independent official aggregates: the exporting country’s published export totals for the relevant tariff lines, and the United States’ published import totals for the same lines. The residual between those totals and the sum of the manifests we hold is the part of the trade we cannot name.
Other gaps worth knowing. State licensee lists publish on different schedules and in different formats, so “no licence found” always carries the date of the list it was checked against. Retail menus are read where they are public and absent where they are not, which under-counts small independents. Factory capacity comes from regulatory filings, which state installed capacity rather than actual output. And tariff lines are not comparable across borders: several countries subdivide the six-digit line we track, so a like-for-like comparison has to be built per country rather than assumed.
Editorial standards
- Facts with sources, not conclusions. We write “no licence found in any state list as of 14 October 2026”. We do not write “illegal”, “scam” or “counterfeit” unless a court or a regulator has said so, in which case we cite the decision.
- Confidence on every inferred link, shown in the interface, with the category and date of every record behind it one click away.
- A correction process. Any party named here can write in and dispute a record. We will say which category of document a disputed claim rests on and when it was read, and where a correction is warranted it is appended with its date and the reason, with the superseded row left readable.
- Nominative fair use for brand names. We use a brand's name to identify its product and nothing more. We do not reproduce logos, packaging art or trade dress, and nothing on the site implies affiliation or endorsement.
What we don't publish
Three categories are withheld by policy, even where the underlying record is public:
- Anything that helps a gray-market seller source or move product. No factory sales contacts, no minimum order quantities, no freight-forwarder routing, no working wholesale listings. The purpose of this database is to describe the market, not to supply it.
- Personal data on individuals. Sole-proprietor names, home addresses used as registered addresses, personal phone numbers and family relationships stay out of the published record. They are used to establish a link and then described in the inference note as a signal class, such as “shared legal representative”, rather than named.
- The source register itself. Which registers, filings and feeds Traceleaf reads, where each one lives, what it costs, which identifier it can be joined on, and which of them turned out to be dead ends. That work is the product. A reader gets the category of record and the date it was read, which is enough to weigh a claim; a competitor does not get the list.
Two populations, and which is which
Everything described above is the method. The graph it has produced so far is in two halves, and the difference matters more than any figure in either.
Read from a register. 861k rows have been fetched from 4 European government registers and built into 13,593 brands, 1,235 manufacturers, 593 notifiers of record and 18,077 of the 19,972 links in the graph — 4,906 of them stated outright by an authority and 13,171 inferred from a register field that covers the manufacturer and the importer at once. These are real companies. Each carries the authority that published the record and the date it was fetched, and not one of them has been assessed: no licence status, no price, no red flag, because none has been checked.
Generated. The remaining 110 brands, 34 factories, 48 exporters and 30 US importers carry a full record — a verdict, a chain, shelves and prices — and every one of those records is produced by a seeded model under a coined name that matches no real company. The 936 price observations spanning 12 months and 12 states are all generated, as are the 1,895 links between them. They exist to exercise the parts of the model no public source fills.
The registry itself is 238 source definitions deep, of which 4 are pulling rows today. The record count for every other row is that source’s own declared figure, not something this build holds.