CoolFace
Datasetpublic

illeatmyhat/uspto-trademarks-detector

USPTO Trademark Detector Lists Ready-to-ship lists for a downstream detector (e.g. a browser extension), consumed exactly like an ad-blocker filter list: fetch, cache, membership- test. Each file is plain text, one normalized mark key per line. Rebuilt monthly from the companion corpus illeatmyhat/uspto-trademarks. Source Generated by USPTO Trademark Radar - an open-source pipeline that builds these lists from the public USPTO corpus. Method, thresholds, ADRs, and… See the full description on the dataset page: https://huggingface.co/datasets/illeatmyhat/uspto-trademarks-detector.

sourceHugging Faceotherupdated 2mo agoView on Hugging Face
0likes41downloads
Dataset Card

USPTO Trademark Detector Lists

Ready-to-ship lists for a downstream detector (e.g. a browser extension), consumed exactly like an ad-blocker filter list: fetch, cache, membership- test. Each file is plain text, one normalized mark key per line. Rebuilt monthly from the companion corpus illeatmyhat/uspto-trademarks.

Source

Generated by [USPTO Trademark Radar](https://github.com/illeatmyhat/uspto-trademark-radar) - an open-source pipeline that builds these lists from the public USPTO corpus. Method, thresholds, ADRs, and the consumer contract live there.

![illeatmyhat/uspto-trademark-radar](https://github.com/illeatmyhat/uspto-trademark-radar)

filewhat it ishow to treat a hit
tier1.txtmarks on a filing the USPTO itself sanctioned (order-for-sanctions events / sanctions-terminated status)a public-record flag; link the user to the USPTO record
tier2.txtmarks whose per-filing features clear a recommended screening thresholda hint to inspect, not a verdict
tier3.txtmarks filed by a large, high-churn filing operation (a structural fact about filing volume, keyed on the filing)a stronger prior to inspect, still not a verdict; no person is named
origin_cn.txtOrigin - China - marks whose registered owner country of record is CNan origin filter, not a junk signal; opt-in, off by default

Current build: tier1 = 74,488 marks, tier2 = 46,532 marks (threshold 1.8), tier3 = 946,163 marks. See _manifest.json for build lineage.

Origin filters (opt-in, not a junk signal)

origin_<cc>.txt lists marks by registered owner country of record - filing origin, not manufacture (a genuinely foreign brand that files through a domestic entity reads as domestic). Owner-country is deliberately excluded from the tier gates (it is evadable via a foreign shell); it ships only as a separate, clearly-labeled origin preference, off by default, never a junk verdict.

Key normalization (match this exactly)

Both lists are keyed on a normalized mark string. Normalize the brand text you read off a page the same way before testing membership (drop every character that is not a-z, A-Z, or 0-9, then uppercase):

js
const key = (s) => s.replace(/[^A-Za-z0-9]/g, "").toUpperCase();

Consume

js
const res  = await fetch("https://huggingface.co/datasets/illeatmyhat/uspto-trademarks-detector/resolve/main/tier1.txt");
const tier1 = new Set((await res.text()).split("\n").filter(Boolean));
// cache in IndexedDB; refresh monthly. At runtime:
if (tier1.has(key(listingBrandText))) flagAsAdjudicated(key(listingBrandText));

A mark string maps to many filings, so a hit means "one or more filings under this mark were flagged," not "this exact listing." Surface the USPTO record and let the user judge; never blacklist a person. Design contract and rationale: https://github.com/illeatmyhat/uspto-trademark-radar/blob/main/CONSUMERS.md. License: US government work (public domain).