Jelajahi Sumber

unfinished category inferer

n2749 1 Minggu lalu
induk
melakukan
aaca92f428

+ 44 - 19
bom_assistant/suppliers/category_resolver.py

@@ -20,20 +20,25 @@ def resolve_category(
     subcats: list[dict],
     supplier: str,
     cache_path: Path,
-) -> ResolvedCategory | None:
-    """Map a BomRow to a supplier subcategory using LLM. Cache hit → instant; miss → LLM call → cached."""
+) -> list[ResolvedCategory]:
+    """Map a BomRow to up to 3 supplier subcategories ranked by confidence. Cache hit → instant."""
     cache = _load(cache_path)
     key = _cache_key(row)
     if key in cache:
-        e = cache[key]
-        return ResolvedCategory(e["name"], e["id"])
+        return _load_entry(cache[key])
     if not subcats:
-        return None
-    result = _ai_resolve(row, subcats, supplier)
-    if result:
-        cache[key] = {"name": result.name, "id": result.id}
+        return []
+    results = _ai_resolve(row, subcats, supplier)
+    if results:
+        cache[key] = [{"name": r.name, "id": r.id} for r in results]
         _save(cache, cache_path)
-    return result
+    return results
+
+
+def _load_entry(e) -> list[ResolvedCategory]:
+    if isinstance(e, dict):
+        return [ResolvedCategory(e["name"], e["id"])]
+    return [ResolvedCategory(x["name"], x["id"]) for x in e]
 
 
 def _cache_key(row: BomRow) -> str:
@@ -41,7 +46,18 @@ def _cache_key(row: BomRow) -> str:
     return f"{row.category.value}|{p.package or ''}|{p.value_str or row.raw_value}"
 
 
-def _ai_resolve(row: BomRow, subcats: list[dict], supplier: str) -> ResolvedCategory | None:
+def _fmt_subcat(s: dict) -> str:
+    line = f"  {s['name']}"
+    desc = s.get("description", "")
+    examples = s.get("examples", [])
+    if desc or examples:
+        line += f" — {desc}"
+        if examples:
+            line += f" e.g. {', '.join(examples)}"
+    return line
+
+
+def _ai_resolve(row: BomRow, subcats: list[dict], supplier: str) -> list[ResolvedCategory]:
     p = row.normalized_params
     lines: list[str] = [f"  type: {row.category.value}"]
     if p.value_str:
@@ -57,23 +73,32 @@ def _ai_resolve(row: BomRow, subcats: list[dict], supplier: str) -> ResolvedCate
     if row.raw_value and row.raw_value != p.value_str:
         lines.append(f"  raw_value: {row.raw_value!r}")
 
-    subcat_lines = "\n".join(f"  {s['name']}" for s in subcats)
+    subcat_lines = "\n".join(_fmt_subcat(s) for s in subcats)
     prompt = (
-        f"You are an electronics sourcing expert. Pick the best {supplier.upper()} subcategory for this component.\n\n"
+        f"You are an electronics sourcing expert. Rank the top 3 {supplier.upper()} subcategories for this component, best match first.\n\n"
         "Component:\n"
         + "\n".join(lines)
         + "\n\nAvailable subcategories:\n"
         + subcat_lines
-        + '\n\nReply ONLY with JSON: {"subcategory": "<exact name from list above>"}'
+        + '\n\nReply ONLY with JSON: {"subcategories": ["<best match>", "<second best>", "<third best>"]} — use exact names from the list above, ordered by confidence'
     )
     try:
-        text = complete(prompt, max_tokens=100)
-        m = re.search(r'"subcategory"\s*:\s*"([^"]+)"', text)
+        text = complete(prompt, max_tokens=150)
+        print(f"prompt\n\n{prompt}\n\n")
+        print(f"text\n\n{text}\n\n")
+        m = re.search(r'"subcategories"\s*:\s*\[([^\]]+)\]', text, re.DOTALL)
         if not m:
-            return None
-        return _lookup(m.group(1).strip(), subcats)
-    except Exception:
-        return None
+            return []
+        names = re.findall(r'"([^"]+)"', m.group(1))
+        results = []
+        for name in names[:3]:
+            r = _lookup(name.strip(), subcats)
+            if r:
+                results.append(r)
+        return results
+    except Exception as e:
+        print(f"  [resolver error] {e}")
+        return []
 
 
 def _lookup(chosen: str, subcats: list[dict]) -> ResolvedCategory | None:

+ 84 - 0
bom_assistant/suppliers/lcsc/apply_enrich_output.py

@@ -0,0 +1,84 @@
+#!/usr/bin/env python3
+"""
+Merge web-UI LLM output (NDJSON) back into categories.json.
+
+The LLM outputs one JSON object per line:
+    {"id": 51, "description": "...", "examples": ["...", "..."]}
+
+This script applies only the missing fields — already-populated fields are untouched.
+
+Usage:
+    python -m bom_assistant.suppliers.lcsc.apply_enrich_output < enrich_output.ndjson
+    # or
+    python -m bom_assistant.suppliers.lcsc.apply_enrich_output enrich_output.ndjson
+"""
+from __future__ import annotations
+
+import json
+import sys
+from pathlib import Path
+
+_CATS_PATH = Path(__file__).parent / "categories.json"
+
+
+def main() -> None:
+    if len(sys.argv) > 1:
+        lines = Path(sys.argv[1]).read_text(encoding="utf-8").splitlines()
+    else:
+        lines = sys.stdin.read().splitlines()
+
+    cats = json.loads(_CATS_PATH.read_text(encoding="utf-8"))
+
+    # build id → (cat_idx, sub_idx) index
+    idx: dict[int, tuple[int, int]] = {}
+    for ci, cat in enumerate(cats):
+        for si, sub in enumerate(cat["subcategories"]):
+            idx[sub["id"]] = (ci, si)
+
+    applied = 0
+    skipped = 0
+    for line in lines:
+        line = line.strip()
+        if not line:
+            continue
+        try:
+            entry = json.loads(line)
+        except json.JSONDecodeError:
+            print(f"warn: bad JSON line: {line[:80]!r}", file=sys.stderr)
+            skipped += 1
+            continue
+
+        sub_id = entry.get("id")
+        if sub_id not in idx:
+            print(f"warn: unknown id {sub_id}", file=sys.stderr)
+            skipped += 1
+            continue
+
+        ci, si = idx[sub_id]
+        sub = cats[ci]["subcategories"][si]
+        changed = False
+
+        if entry.get("description") and not sub.get("description"):
+            sub["description"] = entry["description"]
+            changed = True
+
+        if entry.get("examples") and not sub.get("examples"):
+            sub["examples"] = entry["examples"]
+            changed = True
+
+        if changed:
+            applied += 1
+
+    _CATS_PATH.write_text(
+        json.dumps(cats, indent=2, ensure_ascii=False), encoding="utf-8"
+    )
+
+    total = sum(len(c["subcategories"]) for c in cats)
+    with_desc = sum(1 for c in cats for s in c["subcategories"] if s.get("description"))
+    with_ex = sum(1 for c in cats for s in c["subcategories"] if s.get("examples"))
+    print(f"Applied {applied} updates ({skipped} skipped). Saved categories.json.")
+    print(f"Coverage: {with_desc}/{total} descriptions, {with_ex}/{total} examples")
+
+
+if __name__ == "__main__":
+    main()

File diff ditekan karena terlalu besar
+ 1225 - 196
bom_assistant/suppliers/lcsc/categories.json


+ 0 - 26
bom_assistant/suppliers/lcsc/category_cache.json

@@ -1,26 +0,0 @@
-{
-  "capacitor||10nF": {
-    "name": "Ceramic Capacitors",
-    "id": 1142
-  },
-  "capacitor||100nF": {
-    "name": "Ceramic Capacitors",
-    "id": 1142
-  },
-  "capacitor||10uF": {
-    "name": "Aluminum Electrolytic Capacitors",
-    "id": 1140
-  },
-  "capacitor||100uF": {
-    "name": "Aluminum Electrolytic Capacitors",
-    "id": 1140
-  },
-  "connector||3.5mm audio jack TRS": {
-    "name": "Audio Connectors",
-    "id": 718
-  },
-  "resistor||1.2k": {
-    "name": "Through Hole Resistors",
-    "id": 1203
-  }
-}

+ 4 - 4
bom_assistant/suppliers/lcsc/category_resolver.py

@@ -19,12 +19,12 @@ class LcscCategory:
         return f"LcscCategory(name={self.name!r}, id={self.id})"
 
 
-def resolve(row: BomRow) -> LcscCategory | None:
-    """Map a BomRow to an LCSC subcategory via shared LLM resolver."""
-    result = resolve_category(
+def resolve(row: BomRow) -> list[LcscCategory]:
+    """Map a BomRow to up to 3 LCSC subcategories ranked by confidence."""
+    results = resolve_category(
         row,
         get_subcategories_for(row.category),
         supplier="lcsc",
         cache_path=_CACHE_PATH,
     )
-    return LcscCategory(result.name, result.id) if result else None
+    return [LcscCategory(r.name, r.id) for r in results]

+ 282 - 0
bom_assistant/suppliers/lcsc/enrich_categories.py

@@ -0,0 +1,282 @@
+#!/usr/bin/env python3
+"""
+One-time CLI: enrich categories.json with scraped examples + LLM descriptions.
+
+Phase 1 — scrape: fetch https://lcsc.com/category/{id}.html for each subcategory,
+           parse productIntroEn spec strings from the Nuxt IIFE argument list,
+           store first 3 as `examples` in categories.json.
+Phase 2 — describe: batch LLM calls (20 per request) to generate one-sentence `description`.
+
+Both phases are idempotent: already-enriched subcategories are skipped.
+
+Usage:
+    python -m bom_assistant.suppliers.lcsc.enrich_categories [--scrape-only] [--describe-only]
+"""
+from __future__ import annotations
+
+import argparse
+import json
+import random
+import re
+import sys
+import time
+import urllib.request
+from pathlib import Path
+
+from bom_assistant.ai.client import complete
+
+_CATS_PATH = Path(__file__).parent / "categories.json"
+_CATEGORY_URL = "https://lcsc.com/category/{id}.html"
+_UA = "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0"
+_GRACE = 1.5
+_JITTER = 0.5
+_RETRY_WAIT = 5.0
+_BATCH_SIZE = 20
+
+_INTRO_REF_RE = re.compile(r"productIntroEn:([a-zA-Z_$][a-zA-Z0-9_$]*)")
+_NOISE_RE = re.compile(r"^https?://|param_\d|^\d+$|^[a-z]$", re.IGNORECASE)
+
+
+def _fetch(url: str) -> str | None:
+    req = urllib.request.Request(url, headers={"User-Agent": _UA, "Accept-Language": "en-US,en;q=0.5"})
+    for attempt in range(2):
+        try:
+            with urllib.request.urlopen(req, timeout=15) as resp:
+                return resp.read().decode("utf-8", errors="replace")
+        except Exception as exc:
+            if attempt == 0:
+                print(f"  warn: {exc} — retrying in {_RETRY_WAIT}s")
+                time.sleep(_RETRY_WAIT)
+            else:
+                return None
+    return None
+
+
+def _sleep() -> None:
+    time.sleep(max(0.5, _GRACE + random.uniform(-_JITTER, _JITTER)))
+
+
+def _split_args(s: str) -> list[str]:
+    """Split IIFE call args on top-level commas, respecting string literals."""
+    args: list[str] = []
+    cur: list[str] = []
+    depth = 0
+    in_str = False
+    esc = False
+    for ch in s:
+        if esc:
+            esc = False
+        elif ch == "\\" and in_str:
+            esc = True
+        elif ch == '"' and not in_str:
+            in_str = True
+        elif ch == '"' and in_str:
+            in_str = False
+        elif ch in "([{" and not in_str:
+            depth += 1
+        elif ch in ")]}" and not in_str:
+            if depth == 0:
+                break  # hit closing )) of IIFE call
+            depth -= 1
+        elif ch == "," and not in_str and depth == 0:
+            args.append("".join(cur).strip())
+            cur = []
+            continue
+        cur.append(ch)
+    if cur:
+        args.append("".join(cur).strip())
+    return args
+
+
+_UNICODE_ESC_RE = re.compile(r"\\u([0-9a-fA-F]{4})")
+
+
+def _unquote(s: str) -> str | None:
+    """Return string value if s is a JS string literal, else None."""
+    s = s.strip()
+    if s.startswith('"') and s.endswith('"'):
+        raw = s[1:-1]
+        # decode only \uXXXX escapes; leave actual UTF-8 chars intact
+        try:
+            return _UNICODE_ESC_RE.sub(lambda m: chr(int(m.group(1), 16)), raw)
+        except Exception:
+            return raw
+    return None
+
+
+def _extract_examples(html: str) -> list[str]:
+    """Decode productIntroEn values from the Nuxt IIFE param→arg mapping."""
+    scripts = re.findall(r"<script[^>]*>(.*?)</script>", html, re.DOTALL)
+    nuxt = next((s for s in scripts if "__NUXT__" in s), None)
+    if not nuxt:
+        return []
+
+    # Extract IIFE param names from function signature
+    sig_m = re.match(r"window\.__NUXT__=\(function\(([^)]+)\)", nuxt)
+    if not sig_m:
+        return []
+    params = [p.strip() for p in sig_m.group(1).split(",")]
+
+    # Extract IIFE call args (everything after last "}(" up to closing "));")
+    body_end = nuxt.rfind("}(")
+    if body_end == -1:
+        return []
+    raw_args = _split_args(nuxt[body_end + 2:])
+
+    if len(raw_args) != len(params):
+        # length mismatch — fall back gracefully
+        return []
+
+    param_to_val: dict[str, str] = {}
+    for param, arg in zip(params, raw_args):
+        v = _unquote(arg)
+        if v is not None:
+            param_to_val[param] = v
+
+    # Collect all productIntroEn variable references from the function body
+    refs = _INTRO_REF_RE.findall(nuxt[:body_end])
+    seen: set[str] = set()
+    examples: list[str] = []
+    for ref in refs:
+        if ref in seen:
+            continue
+        seen.add(ref)
+        val = param_to_val.get(ref, "")
+        if val and len(val) > 8 and not _NOISE_RE.search(val):
+            examples.append(val)
+            if len(examples) == 3:
+                break
+    return examples
+
+
+# ---------------------------------------------------------------------------
+# Phase 1: scrape examples from LCSC category pages
+# ---------------------------------------------------------------------------
+
+def scrape_examples(cats: list[dict]) -> list[dict]:
+    needed = [
+        (ci, si, sub)
+        for ci, cat in enumerate(cats)
+        for si, sub in enumerate(cat["subcategories"])
+        if not sub.get("examples")
+    ]
+    if not needed:
+        print("Phase 1: all subcategories already have examples — skipping")
+        return cats
+
+    print(f"Phase 1: scraping examples for {len(needed)} subcategories …")
+    done = 0
+    for ci, si, sub in needed:
+        _sleep()
+        url = _CATEGORY_URL.format(id=sub["id"])
+        html = _fetch(url)
+        if html is None:
+            print(f"  warn: [{sub['id']}] {sub['name']}: fetch failed — skipping")
+            continue
+
+        examples = _extract_examples(html)[:3]
+        cats[ci]["subcategories"][si]["examples"] = examples
+        done += 1
+        if done % 20 == 0 or done == len(needed):
+            print(f"  {done}/{len(needed)} done")
+
+    return cats
+
+
+# ---------------------------------------------------------------------------
+# Phase 2: generate descriptions via LLM (batched)
+# ---------------------------------------------------------------------------
+
+def _describe_batch(batch: list[dict]) -> dict[str, str]:
+    items_text = ""
+    for i, s in enumerate(batch, 1):
+        examples = s.get("examples", [])
+        ex_str = " | ".join(examples) if examples else "—"
+        items_text += f"{i}. {s['name']}\n   examples: {ex_str}\n"
+
+    prompt = (
+        "For each electronics subcategory below, write a one-sentence description "
+        "explaining what kinds of components belong here. Be specific and concise.\n\n"
+        + items_text
+        + "\nReply with a JSON array in the same order:\n"
+        '[{"name": "...", "description": "..."}, ...]'
+    )
+    text = complete(prompt, max_tokens=len(batch) * 80)
+    m = re.search(r"\[.*\]", text, re.DOTALL)
+    if not m:
+        return {}
+    parsed = json.loads(m.group(0))
+    return {
+        e["name"]: e["description"]
+        for e in parsed
+        if "name" in e and "description" in e
+    }
+
+
+def generate_descriptions(cats: list[dict]) -> list[dict]:
+    needed = [
+        (ci, si, sub)
+        for ci, cat in enumerate(cats)
+        for si, sub in enumerate(cat["subcategories"])
+        if not sub.get("description")
+    ]
+    if not needed:
+        print("Phase 2: all subcategories already have descriptions — skipping")
+        return cats
+
+    print(f"Phase 2: generating descriptions for {len(needed)} subcategories …")
+    total_batches = (len(needed) + _BATCH_SIZE - 1) // _BATCH_SIZE
+
+    for bn, batch_start in enumerate(range(0, len(needed), _BATCH_SIZE), 1):
+        batch = needed[batch_start: batch_start + _BATCH_SIZE]
+        subs = [sub for _, _, sub in batch]
+        print(f"  batch {bn}/{total_batches} ({len(subs)} subcategories) …")
+        try:
+            descs = _describe_batch(subs)
+        except Exception as exc:
+            print(f"  warn: batch {bn} failed: {exc} — skipping")
+            time.sleep(0.5)
+            continue
+
+        for ci, si, sub in batch:
+            desc = descs.get(sub["name"])
+            if desc:
+                cats[ci]["subcategories"][si]["description"] = desc
+            else:
+                print(f"  warn: no description returned for {sub['name']!r}")
+
+        time.sleep(0.5)
+
+    return cats
+
+
+# ---------------------------------------------------------------------------
+# Main
+# ---------------------------------------------------------------------------
+
+def main() -> None:
+    parser = argparse.ArgumentParser(description=__doc__)
+    parser.add_argument("--scrape-only", action="store_true")
+    parser.add_argument("--describe-only", action="store_true")
+    args = parser.parse_args()
+
+    cats = json.loads(_CATS_PATH.read_text(encoding="utf-8"))
+
+    if not args.describe_only:
+        cats = scrape_examples(cats)
+        _CATS_PATH.write_text(json.dumps(cats, indent=2, ensure_ascii=False), encoding="utf-8")
+        print("  Saved categories.json after Phase 1")
+
+    if not args.scrape_only:
+        cats = generate_descriptions(cats)
+        _CATS_PATH.write_text(json.dumps(cats, indent=2, ensure_ascii=False), encoding="utf-8")
+        print("  Saved categories.json after Phase 2")
+
+    total = sum(len(c["subcategories"]) for c in cats)
+    with_ex = sum(1 for c in cats for s in c["subcategories"] if s.get("examples"))
+    with_desc = sum(1 for c in cats for s in c["subcategories"] if s.get("description"))
+    print(f"\nDone. {total} subcategories: {with_ex} with examples, {with_desc} with descriptions.")
+
+
+if __name__ == "__main__":
+    main()

+ 322 - 0
bom_assistant/suppliers/lcsc/enrich_input.json

@@ -0,0 +1,322 @@
+[
+  {
+    "id": 630,
+    "category": "Switches",
+    "name": "Accessories",
+    "examples": [
+      "Switch cap Accessories RoHS"
+    ]
+  },
+  {
+    "id": 1402,
+    "category": "Switches",
+    "name": "Accessories - Boots, Seals",
+    "examples": [
+      "Accessories - Boots, Seals RoHS"
+    ]
+  },
+  {
+    "id": 1403,
+    "category": "Switches",
+    "name": "Accessories - Caps",
+    "examples": [
+      "Switch cap Accessories - Caps RoHS",
+      "Accessories - Caps RoHS"
+    ]
+  },
+  {
+    "id": 1330,
+    "category": "Switches",
+    "name": "Automatic Transfer Switches",
+    "examples": [
+      "Automatic Transfer Switches RoHS"
+    ]
+  },
+  {
+    "id": 631,
+    "category": "Switches",
+    "name": "Cable Pull Switches",
+    "examples": [
+      "Cable Pull Switches RoHS"
+    ]
+  },
+  {
+    "id": 632,
+    "category": "Switches",
+    "name": "Configurable Switch Components",
+    "need_examples": true
+  },
+  {
+    "id": 1278,
+    "category": "Switches",
+    "name": "Configurable Switch Bodies",
+    "examples": [
+      "Configurable Switch Bodies RoHS",
+      "Door lock switch Configurable Switch Bodies RoHS"
+    ]
+  },
+  {
+    "id": 1279,
+    "category": "Switches",
+    "name": "Configurable Switch Contact Blocks",
+    "examples": [
+      "Configurable Switch Contact Blocks RoHS"
+    ]
+  },
+  {
+    "id": 1280,
+    "category": "Switches",
+    "name": "Configurable Switch Illumination Sources",
+    "examples": [
+      "Configurable Switch Illumination Sources RoHS",
+      "Configurable Switch Illumination Sources "
+    ]
+  },
+  {
+    "id": 1281,
+    "category": "Switches",
+    "name": "Configurable Switch Lens",
+    "examples": [
+      "Configurable Switch Lens RoHS"
+    ]
+  },
+  {
+    "id": 633,
+    "category": "Switches",
+    "name": "DIP Switches/SIP Switches",
+    "examples": [
+      "Dip Switch SPST 8 Position Surface Mount-16P,5.4x11.7mm 25mA 24V",
+      "Dip Switch SPST 2 Position Surface Mount-4P,4.1x5.4mm 25mA 24V",
+      "Dip Switch SPST 3 Position Surface Mount Slide, Rocked 25mA 24V"
+    ]
+  },
+  {
+    "id": 634,
+    "category": "Switches",
+    "name": "Disconnect Switch Components",
+    "examples": [
+      "Disconnect Switch Components RoHS",
+      "Disconnect Switch Components "
+    ]
+  },
+  {
+    "id": 635,
+    "category": "Switches",
+    "name": "Emergency Stop (E-Stop) Switches",
+    "examples": [
+      "Emergency Stop (E-Stop) Switches RoHS"
+    ]
+  },
+  {
+    "id": 1285,
+    "category": "Switches",
+    "name": "Foot switches",
+    "examples": [
+      "Foot switches ",
+      "Foot switches RoHS"
+    ]
+  },
+  {
+    "id": 636,
+    "category": "Switches",
+    "name": "Interlock Switches",
+    "examples": [
+      "SMD,8.5x2.1mm Interlock Switches RoHS",
+      "SMD,16x2.5mm Interlock Switches RoHS",
+      "SMD,11.5x2.4mm Interlock Switches RoHS"
+    ]
+  },
+  {
+    "id": 637,
+    "category": "Switches",
+    "name": "Keylock Switches",
+    "examples": [
+      "Keylock Switches RoHS",
+      "Keylock Switches "
+    ]
+  },
+  {
+    "id": 639,
+    "category": "Switches",
+    "name": "Limit Switches",
+    "examples": [
+      "Switch SPDT Through Hole",
+      "Switch SPDT Roller Lever Through Hole",
+      "Switch SPST Angle Toggle Surface Mount"
+    ]
+  },
+  {
+    "id": 640,
+    "category": "Switches",
+    "name": "Magnetic, Reed Switches",
+    "examples": [
+      "SMD Magnetic, Reed Switches RoHS",
+      "Through Hole Magnetic, Reed Switches RoHS",
+      "SMD,16x2.4mm Magnetic, Reed Switches RoHS"
+    ]
+  },
+  {
+    "id": 642,
+    "category": "Switches",
+    "name": "Metal Dome Pot",
+    "need_examples": true
+  },
+  {
+    "id": 643,
+    "category": "Switches",
+    "name": "Navigation Switches, Joystick",
+    "examples": [
+      "SMD-6P,10x10mm Navigation Switches, Joystick RoHS",
+      "SMD-6P,7x7mm Navigation Switches, Joystick RoHS",
+      "SMD-8P,7.5x7.5mm Navigation Switches, Joystick RoHS"
+    ]
+  },
+  {
+    "id": 645,
+    "category": "Switches",
+    "name": "Pushbutton Switches",
+    "examples": [
+      "10,000 cycles 50mA 7.5mm 24.9mm 2P2T Square Plunger 9.5mm 2.5N 12V Through Hole,9.5x7.5mm Pushbutton Switches RoHS"
+    ]
+  },
+  {
+    "id": 646,
+    "category": "Switches",
+    "name": "Pushbutton Switches - Hall Effect",
+    "examples": [
+      "SMD Pushbutton Switches - Hall Effect RoHS"
+    ]
+  },
+  {
+    "id": 647,
+    "category": "Switches",
+    "name": "Rocker Switches",
+    "examples": [
+      "Rocker Switch SPST 6A(AC) 250V Through Hole",
+      "Rocker Switch SPST 3A(AC) 250V Through Hole",
+      "Rocker Switch 10A(AC) 250V Through Hole"
+    ]
+  },
+  {
+    "id": 648,
+    "category": "Switches",
+    "name": "Rotary Switches",
+    "examples": [
+      "Non-Short Circuit 30° 4 1 300mA 16V Through Hole Rotary Switches RoHS"
+    ]
+  },
+  {
+    "id": 649,
+    "category": "Switches",
+    "name": "Selector Switches",
+    "examples": [
+      "-40℃~+85℃ 24V 10mA SMD,2.9x2.6mm Selector Switches RoHS"
+    ]
+  },
+  {
+    "id": 650,
+    "category": "Switches",
+    "name": "Slide Switches",
+    "examples": [
+      "Slide Switch SPDT 500mA @ 50V Through Hole 8.7mm",
+      "Slide Switch SPDT 2A @ 125V Through Hole 12.7mm",
+      "Slide Switch SPDT 500mA @ 50V Through Hole Rectangular Columnar"
+    ]
+  },
+  {
+    "id": 651,
+    "category": "Switches",
+    "name": "Tactile Switches",
+    "examples": [
+      "Tactile Switch SPST 160gf 2mm SMD (SMT) Tab 4mm x 3mm Surface Mount",
+      "Tactile Switch SPST 153gf 1.6mm SMD (SMT) Tab 3mm x 2.5mm Surface Mount",
+      "Tactile Switch SPST 160gf 1.5mm 5.1mm x 5.1mm Surface Mount"
+    ]
+  },
+  {
+    "id": 652,
+    "category": "Switches",
+    "name": "Thumbwheel Switches",
+    "examples": [
+      "SMD Thumbwheel Switches RoHS",
+      "Switch SPST Angle Toggle Surface Mount",
+      "Thumbwheel Switches RoHS"
+    ]
+  },
+  {
+    "id": 653,
+    "category": "Switches",
+    "name": "Toggle Switches",
+    "examples": [
+      "28V 120V SPDT Through Hole 30,000 Cycles 3A Through Hole,8.1x5.1mm Toggle Switches RoHS",
+      "125V SPDT Through Hole 5A Through Hole,13x8mm Toggle Switches RoHS"
+    ]
+  },
+  {
+    "id": 686,
+    "category": "Transformers",
+    "name": "Audio Transformers",
+    "examples": [
+      "Audio Transformers RoHS",
+      "DIP-6P,10.4x7.9mm Audio Transformers RoHS",
+      "Screw Terminals Audio Transformers RoHS"
+    ]
+  },
+  {
+    "id": 687,
+    "category": "Transformers",
+    "name": "Current Transformers",
+    "examples": [
+      "2mA 1:1 Sense Transformer 0.02kHz~10kHz Through Hole",
+      "SENSE XFMR 1:100 20A SMD",
+      "SENSE XFMR 1:200 30A SMD"
+    ]
+  },
+  {
+    "id": 688,
+    "category": "Transformers",
+    "name": "Isolation Transformers and Autotransformers, Step Up, Step Down",
+    "examples": [
+      "Isolation Transformers and Autotransformers, Step Up, Step Down "
+    ]
+  },
+  {
+    "id": 689,
+    "category": "Transformers",
+    "name": "Potential Transformer",
+    "examples": [
+      "Potential Transformer RoHS"
+    ]
+  },
+  {
+    "id": 690,
+    "category": "Transformers",
+    "name": "Power Transformers",
+    "need_examples": true
+  },
+  {
+    "id": 691,
+    "category": "Transformers",
+    "name": "Pulse Transformers",
+    "examples": [
+      "350uH LAN Transformer 1:1 Surface Mount-7P,4.7x3.3mm",
+      "350uH LAN Transformer 1CT:1CT Surface Mount-16P,12.8x6.9mm",
+      "LAN Transformer 1:1 1:1 Surface Mount,12.7x7.1mm"
+    ]
+  },
+  {
+    "id": 692,
+    "category": "Transformers",
+    "name": "Specialty Transformers",
+    "examples": [
+      "SMD-6P,12.8x9mm Specialty Transformers RoHS",
+      "Specialty Transformers RoHS"
+    ]
+  },
+  {
+    "id": 693,
+    "category": "Transformers",
+    "name": "Switching Converter, SMPS Transformers",
+    "need_examples": true
+  }
+]

+ 17 - 0
bom_assistant/suppliers/lcsc/enrich_prompt.txt

@@ -0,0 +1,17 @@
+You are an electronics sourcing expert. The attached JSON file lists LCSC component subcategories that need enrichment. Each entry may need:
+- A `description`: one concise sentence explaining what components belong in this subcategory
+- `examples`: 2–3 representative spec strings showing key parameters (e.g. "100µF 35V 6.3x11mm", "1kΩ ±1% 100mW 0603")
+
+Rules:
+- description: one sentence, specific enough to distinguish this subcategory from similar ones
+- examples: realistic component specs with the important parameters (value, tolerance, voltage/current rating, package/size) — NO part numbers, NO brand names, NO URLs
+- entries with "need_examples": true need both description AND examples
+- entries without "need_examples" only need a description (examples already present)
+- entries already have "examples" listed — use them as context for the description
+
+Output format: one JSON object per line (NDJSON). Include ONLY the fields you generate:
+{"id": 51, "description": "Active and passive sound-producing devices..."}
+{"id": 55, "description": "Electrodynamic transducers...", "examples": ["8Ω 0.5W 28mm Round", "4Ω 3W 40x28mm Rectangular"]}
+
+Output NOTHING except the NDJSON lines. No markdown, no commentary, no code fences.
+Process every entry in the file.

+ 71 - 0
bom_assistant/suppliers/lcsc/make_enrich_input.py

@@ -0,0 +1,71 @@
+#!/usr/bin/env python3
+"""
+Generate a compact input file for web-UI LLM enrichment.
+
+Outputs: enrich_input.json — only subcategories missing description or examples.
+
+Usage:
+    python -m bom_assistant.suppliers.lcsc.make_enrich_input                         # all
+    python -m bom_assistant.suppliers.lcsc.make_enrich_input --limit 100             # batch 1
+    python -m bom_assistant.suppliers.lcsc.make_enrich_input --skip 100 --limit 100  # batch 2
+    python -m bom_assistant.suppliers.lcsc.make_enrich_input --skip 200 --limit 100  # batch 3
+    # attach each enrich_input.json to claude.ai, apply output, move to next batch
+"""
+from __future__ import annotations
+
+import argparse
+import json
+from pathlib import Path
+
+_CATS_PATH = Path(__file__).parent / "categories.json"
+_OUT_PATH = Path(__file__).parent / "enrich_input.json"
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--limit", type=int, default=None, help="max subcategories to include")
+    parser.add_argument("--skip", type=int, default=0, help="skip first N subcategories")
+    args = parser.parse_args()
+
+    cats = json.loads(_CATS_PATH.read_text(encoding="utf-8"))
+
+    needed: list[dict] = []
+    for cat in cats:
+        for sub in cat["subcategories"]:
+            missing_desc = not sub.get("description")
+            missing_ex = not sub.get("examples")
+            if not missing_desc and not missing_ex:
+                continue
+            entry: dict = {
+                "id": sub["id"],
+                "category": cat["category"],
+                "name": sub["name"],
+            }
+            if sub.get("examples"):
+                entry["examples"] = sub["examples"]
+            if missing_ex:
+                entry["need_examples"] = True
+            needed.append(entry)
+
+    needed = needed[args.skip :]
+    if args.limit:
+        needed = needed[: args.limit]
+
+    _OUT_PATH.write_text(
+        json.dumps(needed, indent=2, ensure_ascii=False), encoding="utf-8"
+    )
+
+    need_ex = sum(1 for e in needed if e.get("need_examples"))
+    total_needed = sum(
+        1 for c in cats for s in c["subcategories"]
+        if not s.get("description") or not s.get("examples")
+    )
+    remaining = total_needed - args.skip - len(needed)
+    print(f"Wrote {len(needed)} subcategories to {_OUT_PATH.name}")
+    print(f"  {len(needed)} need description, {need_ex} also need examples")
+    if remaining > 0:
+        print(f"  {remaining} more remaining after this batch")
+
+
+if __name__ == "__main__":
+    main()

+ 537 - 0
enrich_output.ndjson

@@ -0,0 +1,537 @@
+{"id": 1405, "description": "Bare piezoelectric ceramic discs and buzzer elements without integrated drive circuitry that produce sound when driven by an external oscillating signal.", "examples": ["Piezo Bender 27mm 4.6kHz 30Vp-p External Drive", "Piezo Element 20mm 6.5kHz 3-30V Wire Leads", "Piezo Disc 35mm 2.8kHz 25Vp-p Feedback Type"]}
+{"id": 54, "description": "Electret condenser and MEMS microphone elements that convert acoustic sound pressure into electrical signals, specified by sensitivity, impedance, and signal-to-noise ratio."}
+{"id": 55, "description": "Electrodynamic and micro speaker transducers that convert electrical audio signals into audible sound, specified by impedance, rated power, and diaphragm size.", "examples": ["8Ω 0.5W 28mm Round Frame", "4Ω 3W 40x28.5mm Rectangular", "8Ω 1W 36mm Round 400Hz-20kHz"]}
+{"id": 113, "description": "Add-on parts for circuit breakers such as auxiliary contacts, shunt trips, busbars, mounting hardware, and terminal covers rather than the breakers themselves."}
+{"id": 1411, "description": "General electromechanical protective switches that automatically interrupt current flow during overload or short-circuit faults and can be manually reset."}
+{"id": 1406, "description": "Supporting hardware for circuit protection devices, such as fuse holder covers, mounting clips, and insulating caps, that do not themselves provide protection."}
+{"id": 121, "description": "Compact thermal or thermal-magnetic circuit breakers designed to protect individual equipment and appliances from overcurrent, often panel- or rocker-mounted in the device itself."}
+{"id": 123, "description": "Clips, blocks, panel-mount holders, and PCB sockets that mechanically hold and electrically connect replaceable fuses of a given style and current rating."}
+{"id": 124, "description": "Sacrificial overcurrent protection devices with a fusible element that melts to open the circuit, offered in cartridge, blade, bolt-in, and surface-mount chip styles."}
+{"id": 125, "description": "Sealed gas-filled spark-gap surge arresters that ionize and clamp high-voltage transients such as lightning surges, specified by spark-over voltage, surge current, and pole count."}
+{"id": 122, "description": "Protective breakers that detect earth-leakage current from line to ground and rapidly disconnect the circuit to prevent electric shock."}
+{"id": 126, "description": "Power thermistors (typically NTC discs) placed in series with a supply to limit the surge of inrush current at power-on, specified by cold resistance and steady-state current."}
+{"id": 114, "description": "DIN-rail mounted MCBs for low-voltage distribution boards that protect branch circuits against overload and short circuit, specified by rated current, trip curve, and breaking capacity."}
+{"id": 119, "description": "DIN-rail breakers combining miniature circuit breaker overcurrent protection with residual-current (earth-leakage) protection in a single compact device."}
+{"id": 116, "description": "DIN-rail RCCBs that trip on residual (earth-leakage) current imbalance between line and neutral but provide no overcurrent protection on their own."}
+{"id": 117, "description": "Higher-current circuit breakers built into a molded insulating case (MCCBs) for main and feeder protection, typically rated from tens to hundreds of amperes with adjustable trips."}
+{"id": 115, "description": "Circuit breakers with adjustable thermal overload and magnetic short-circuit trips tuned for direct protection and manual switching of motor loads."}
+{"id": 1407, "description": "AC power distribution units and surge protector strips or modules that pass mains power to multiple outlets while suppressing voltage transients."}
+{"id": 129, "description": "One-shot thermal fuses that permanently open a circuit when ambient or device temperature exceeds a fixed rated cutoff, protecting against overheating faults.", "examples": ["102°C 10A 250V Axial", "133°C 15A 250V Radial", "240°C 2A 250V Axial Metal Case"]}
+{"id": 130, "description": "Silicon avalanche diodes that clamp fast voltage transients such as ESD and surges to a safe level, offered in unidirectional and bidirectional versions.", "examples": ["5V Unidirectional 350W SOD-323", "12V Bidirectional 600W SMB(DO-214AA)", "24V Unidirectional 1500W SMC(DO-214AB)"]}
+{"id": 150, "description": "Mains-voltage input and output connectors such as IEC inlets (C14, C6, C8) and outlets, often with integrated fuse holders, switches, or EMI filters.", "examples": ["IEC C14 Inlet 10A 250V Panel Mount Screw", "IEC C14 Inlet 10A 250V With Fuse Holder and Switch Snap-In", "IEC C8 Inlet 2.5A 250V Panel Mount Solder Lug"]}
+{"id": 704, "description": "Mounting brackets, sealing gaskets, covers, and replacement parts for AC power entry modules and IEC inlet connectors."}
+{"id": 1305, "description": "Plug-format converters that adapt AC mains plugs from one regional outlet standard to another for international use, without changing voltage.", "examples": ["EU to US Plug Adapter 10A 250V", "Universal to UK Plug Adapter 13A 250V Fused", "US to EU Schuko Adapter 16A 250V"]}
+{"id": 151, "description": "High-density multi-row board-to-backplane connector systems used to mate daughtercards with a common backplane in modular rack equipment.", "examples": ["96P 3 Row 2.54mm Male Right Angle Through Hole", "64P 2 Row 2.54mm Female Straight Through Hole", "110P 5 Row 2mm Press-Fit Right Angle"]}
+{"id": 709, "description": "Individual crimp or press-fit metal contact pins and sockets, specified by wire gauge and plating, for loading into backplane connector housings."}
+{"id": 710, "description": "Insulating multi-position bodies that hold backplane contacts in the correct row and pitch arrangement, specified by position count, pitch, and plating."}
+{"id": 711, "description": "Standardized 2.54mm-pitch Eurocard rack connectors per DIN 41612 with 2 or 3 rows and up to 96+ positions, mating daughterboards to backplanes."}
+{"id": 712, "description": "2mm-pitch hard metric backplane connectors (IEC 61076-4-101 style) with 5 to 7+ rows and high position counts for CompactPCI and telecom shelf systems."}
+{"id": 713, "description": "Non-standard and proprietary high-density backplane interconnects that do not fit DIN 41612 or hard metric families, often with unusual pitches and very high pin counts."}
+{"id": 152, "description": "Single-pole test and measurement connectors including banana plugs, banana jacks, and tip plugs used for instrument leads and bench wiring.", "examples": ["4mm Banana Jack 24A 1000V Panel Mount Solder", "4mm Banana Plug 15A 30V Solderless Screw Termination", "2mm Tip Plug 10A 60V Solder Cup"]}
+{"id": 714, "description": "Supporting parts for banana and tip connectors such as insulating boots, colored washers, nuts, and replacement hardware."}
+{"id": 715, "description": "Adapters that convert between banana/tip interfaces and other connector types or genders, such as banana-to-BNC or stacking banana adapters."}
+{"id": 716, "description": "Panel-mount threaded terminal posts that clamp bare wire, spade lugs, or accept banana plugs, commonly used on power supplies and audio equipment."}
+{"id": 717, "description": "Panel- and board-mount banana jacks and mating plugs sold as discrete single-pole connectors, specified by diameter, current rating, and mounting style."}
+{"id": 153, "description": "Cylindrical DC power and audio barrel-style plugs and jacks defined by inner pin and outer barrel diameter, used for wall-adapter power input.", "examples": ["DC Power Jack 5.5x2.1mm 5A 24V Through Hole Right Angle", "DC Power Plug 5.5x2.5mm 2A 12V Solder Cup", "DC Power Jack 3.5x1.35mm 2A 12V SMD"]}
+{"id": 718, "description": "Phone-jack style audio connectors such as 3.5mm and 6.35mm headphone jacks and plugs with 2 to 4 conductors for analog audio signals."}
+{"id": 720, "description": "Adapters that convert between barrel connector sizes, genders, or split one DC barrel input to multiple outputs."}
+{"id": 721, "description": "Board- and panel-mount DC power jacks and plugs for delivering low-voltage supply power, specified by pin/barrel size, current, and voltage rating."}
+{"id": 154, "description": "RF adapters that mate one coaxial connector series to a different series, such as SMA-to-BNC or N-to-SMA, preserving impedance across the transition."}
+{"id": 155, "description": "Flat blade-and-receptacle power contacts and connector systems, including quick-disconnect tab interfaces, for carrying supply current between wires and boards.", "examples": ["Blade Receptacle 6.3mm Tab 15A Crimp 14-16 AWG", "Blade Terminal 4.8mm Tab 10A PCB Through Hole", "2 Position Blade Power Connector 6.2mm Pitch 20A"]}
+{"id": 722, "description": "Supporting parts for blade power connectors, such as tab covers, locking clips, mounting ears, and polarizing keys."}
+{"id": 723, "description": "Pre-assembled blade-type power connection assemblies, including battery holders and bases with blade-style contacts, ready for board mounting."}
+{"id": 724, "description": "Individual crimp blade and receptacle metal contacts, specified by accepted wire gauge and plating, for insertion into blade power connector housings."}
+{"id": 725, "description": "Insulating shells that hold crimped blade power contacts at a defined position count, pitch, and row arrangement for wire-to-wire or wire-to-board mating."}
+{"id": 156, "description": "Connectors that mate directly with the plated finger pads on a PCB edge, such as PCIe, M.2, and gold-finger slots, specified by position count and pitch.", "examples": ["PCIe x16 Slot 164P 1mm Pitch Through Hole", "M.2 (NGFF) Socket 67P 0.5mm Pitch Key M SMD", "Card Edge Slot 36P 2.54mm Pitch Dual Row Through Hole"]}
+{"id": 157, "description": "Round multi-pin connectors with threaded, bayonet, or push-pull coupling shells, including M8/M12 and aviation styles, for cable-to-panel and cable-to-cable connections.", "examples": ["M12 Circular Connector 4P Male Panel Mount 4A 250V IP67", "GX16 Aviation Plug 8P 5A 125V Threaded", "M8 Circular Connector 3P Female Cable Mount 3A 60V"]}
+{"id": 732, "description": "Supporting parts for circular connectors such as protective caps, sealing gaskets, cable glands, backshells, and mounting hardware."}
+{"id": 158, "description": "Impedance-controlled RF coaxial plugs, jacks, and receptacles such as SMA, BNC, MMCX, U.FL, and N types for high-frequency signal connections.", "examples": ["SMA Female Jack 50Ω Panel Mount 18GHz", "U.FL (IPEX) Receptacle 50Ω SMD 6GHz", "BNC Male Plug 50Ω Crimp for RG58"]}
+{"id": 1318, "description": "Boxed sets containing an assortment of coaxial or inter-series connector adapters for lab and field use."}
+{"id": 159, "description": "Loose crimp, solder, and press-fit metal terminal contacts sold separately from housings, specified by wire gauge, plating, and mating connector series.", "examples": ["Crimp Socket Contact Tin 22-28 AWG", "Crimp Pin Contact Gold 24-30 AWG", "Female Crimp Terminal Phosphor Bronze 18-22 AWG"]}
+{"id": 742, "description": "Spring-loaded pogo pins and pressure-contact probes that make temporary electrical connections for charging docks, test fixtures, and board-to-board interfaces."}
+{"id": 743, "description": "Stamped metal leadframe strips and carrier contacts used as raw interconnect elements in connector or package assembly."}
+{"id": 744, "description": "General-purpose crimp terminals and contacts not tied to a specific connector series, usable across multiple housing types."}
+{"id": 160, "description": "Trapezoid-shell D-subminiature and D-shaped connectors (DB9, DB15, DB25, etc.) with 2-3 rows of pins for serial, parallel, and I/O interfaces.", "examples": ["DB9 Male 9P Right Angle Through Hole 3A", "DB25 Female 25P Straight Solder Cup 5A", "HDB15 Female 15P 3 Row Right Angle Through Hole"]}
+{"id": 745, "description": "Ribbon-style Centronics and mini-Centronics (0.5mm SCSI-type) connectors with dual-row blade contacts in a D-shaped shell, used for parallel and SCSI interfaces."}
+{"id": 746, "description": "Standard-density D-sub plugs and receptacles specified by position count, gender, mounting orientation, and current rating."}
+{"id": 747, "description": "Supporting parts for D-sub connectors such as dust covers, gaskets, slide locks, and mounting brackets."}
+{"id": 748, "description": "Gender changers and pin-count or wiring adapters that convert between D-sub connector configurations, such as DB9 male-to-male or null-modem adapters."}
+{"id": 749, "description": "Metal or plastic hoods and backshells that enclose the rear of cable-mounted D-sub connectors, providing strain relief and shielding."}
+{"id": 750, "description": "Individual crimp pin and socket contacts, specified by wire gauge and plating, for loading into crimp-style D-sub connector bodies."}
+{"id": 751, "description": "Empty D-sub insulator shells that accept crimp contacts, specified by position count, gender, and panel or cable mounting style."}
+{"id": 752, "description": "Threaded jackscrew fastener sets (typically 4-40 or M3) that secure mated D-sub connectors together on panels and cables."}
+{"id": 753, "description": "D-sub format resistor termination plugs that terminate unused bus or SCSI ports with the correct line impedance."}
+{"id": 161, "description": "Low-profile ZIF and non-ZIF connectors that terminate flat flexible cables and flexible printed circuits, specified by position count, pitch, and contact style.", "examples": ["FFC/FPC Connector 24P 0.5mm Pitch Bottom Contact Flip-Lock SMD Right Angle", "FFC/FPC Connector 10P 1mm Pitch Top Contact Slide-Lock SMD", "FFC/FPC Connector 40P 0.3mm Pitch Dual Contact ZIF SMD"]}
+{"id": 754, "description": "Supporting parts for FFC/FPC connectors such as replacement actuator latches, stiffeners, and dust covers."}
+{"id": 755, "description": "Complete FFC/FPC connector assemblies with actuator installed, specified by position count, pitch, contact orientation, and entry direction."}
+{"id": 756, "description": "Individual crimp terminals and contact elements used with flat flexible cable connector systems."}
+{"id": 757, "description": "Empty insulating housings for FFC/FPC connector systems that accept separately loaded contacts, specified by position count and pitch.", "examples": ["FFC Housing 6P 1mm Pitch Single Row", "FPC Housing 12P 0.5mm Pitch", "FFC Housing 20P 1.25mm Pitch Single Row"]}
+{"id": 162, "description": "Optical fiber terminating connectors and receptacles such as LC, SC, FC, and ST types that align fiber ends for low-loss light coupling.", "examples": ["LC Simplex Connector Single-mode 9/125µm PC Polish", "SC Duplex Connector Multimode 50/125µm UPC", "FC Connector Single-mode 9/125µm APC Threaded"]}
+{"id": 758, "description": "Supporting parts for fiber optic connectors such as dust caps, boots, ferrule sleeves, and polishing consumables."}
+{"id": 759, "description": "Mating sleeves and hybrid adapters that couple two fiber optic connectors together or convert between connector styles, such as SC-to-LC couplers."}
+{"id": 760, "description": "Pre-terminated fiber optic cable assemblies and pigtails with factory-polished connectors on one or both ends."}
+{"id": 761, "description": "Unassembled fiber optic connector bodies and shells into which the fiber and ferrule are terminated in the field.", "examples": ["SC Connector Housing Single-mode 3mm Boot", "LC Connector Housing Multimode 2mm Boot", "ST Connector Housing 900µm Buffer Bayonet"]}
+{"id": 163, "description": "Rugged modular rectangular industrial connectors with high current contacts, metal hoods, and locking levers for machinery power and signal wiring.", "examples": ["Heavy Duty Insert 16P 16A 500V Screw Termination", "Heavy Duty Connector 6P 35A 690V Complete Set with Hood", "Heavy Duty Insert 10P 16A 400V Crimp Termination"]}
+{"id": 762, "description": "Supporting parts for heavy duty rectangular connectors such as sealing gaskets, protective covers, locking levers, and cable glands."}
+{"id": 763, "description": "Complete pre-configured heavy duty connector sets combining hood, base, inserts, and contacts ready for cable installation."}
+{"id": 764, "description": "Individual crimp or screw machined power contacts, specified by wire gauge and current rating, for loading into heavy duty connector inserts."}
+{"id": 765, "description": "Metal carrier frames that hold multiple modular heavy duty inserts inside a common hood or base shell."}
+{"id": 766, "description": "Metal enclosure hoods, bulkhead bases, and surface-mount housings that protect and mount heavy duty connector inserts, with cable entries and locking hardware."}
+{"id": 767, "description": "Insulating contact-carrier inserts and modular blocks, specified by position count and current rating, that form the mating core of a heavy duty connector."}
+{"id": 164, "description": "Snap-in keystone format jacks and modules that click into standardized rectangular wall-plate and patch-panel openings for network, audio, and video ports.", "examples": ["RJ45 Cat6 Keystone Jack Unshielded Punch-Down", "RJ45 Cat5e Keystone Jack Shielded Tool-Free", "HDMI Keystone Coupler Female-Female Snap-In"]}
+{"id": 768, "description": "Supporting parts for keystone systems such as blank inserts, dust covers, labels, and mounting clips."}
+{"id": 769, "description": "Wall plates, surface-mount boxes, and panel frames with standardized rectangular openings that accept snap-in keystone inserts."}
+{"id": 770, "description": "Individual snap-in keystone modules such as RJ45, USB, HDMI, and coax couplers that install into keystone faceplates and panels."}
+{"id": 165, "description": "High-voltage LGH-series single-contact connectors with insulated silicone housings used for kilovolt-level leads in laser, X-ray, and power supply equipment.", "examples": ["LGH Plug 1P 10kV DC Cable Mount", "LGH Receptacle 1P 15kV DC Panel Mount", "LGH Connector 1P 5kV DC In-Line Splice"]}
+{"id": 166, "description": "Sockets that accept memory modules and cards, including DIMM/SODIMM slots and SD/microSD card connectors, specified by position count and card format.", "examples": ["DDR4 SODIMM Socket 260P 0.5mm Pitch Right Angle SMD", "MicroSD Card Socket Push-Push 8P SMD", "DDR3 DIMM Slot 240P Straight Through Hole"]}
+{"id": 771, "description": "SMD sockets for dual/single inline memory modules (DIMM, SODIMM), specified by position count, pitch, and mounting angle."}
+{"id": 772, "description": "Supporting parts for memory sockets such as card ejectors, dust covers, and retention latches."}
+{"id": 773, "description": "Card-format sockets for removable media such as SD, microSD, and SIM cards, with push-push, push-pull, or hinged-lid ejection mechanisms."}
+{"id": 167, "description": "Registered-jack modular telecom and network connectors (RJ45, RJ11, RJ12) including jacks, plugs, and magnetics-integrated versions.", "examples": ["RJ45 Jack 8P8C Shielded Through Hole Right Angle Cat5e", "RJ45 Plug 8P8C Unshielded Cat6 Crimp", "RJ11 Jack 6P4C Through Hole Right Angle"]}
+{"id": 775, "description": "Supporting parts for modular/Ethernet connectors such as strain relief boots, dust covers, and plug latch protectors."}
+{"id": 776, "description": "Couplers and format converters for modular connectors, such as RJ45 inline couplers and jack-to-jack adapters, including LED-equipped panel versions."}
+{"id": 777, "description": "Board-mount RJ-style modular jacks without integrated magnetics, specified by position count, shielding, category rating, and mounting orientation."}
+{"id": 778, "description": "RJ45 jacks with built-in isolation transformers and chokes (and often LEDs) that provide the Ethernet magnetics interface in a single board-mount part."}
+{"id": 779, "description": "Empty plug shells and boots for modular connectors that are assembled onto cable with separate contacts or load bars."}
+{"id": 780, "description": "Crimp-on modular cable plugs such as RJ45 and RJ11, specified by contact count, shielding, category rating, and plating."}
+{"id": 781, "description": "Punch-down wiring blocks (66/110 style) and distribution modules for terminating and cross-connecting telecom and network cabling."}
+{"id": 1327, "description": "Supporting parts for patchbays and jack panels such as blank panels, designation strips, mounting hardware, and cable management bars."}
+{"id": 168, "description": "Weatherproof locking DC connectors in the MC4 style used to interconnect photovoltaic panel strings, rated for high DC voltage and outdoor exposure.", "examples": ["MC4 Male-Female Pair 30A 1000V DC IP67 for 4mm² Cable", "MC4 Y-Branch Connector 1-to-2 30A 1000V DC", "PV Connector 50A 1500V DC IP68 for 6mm² Cable"]}
+{"id": 783, "description": "Supporting parts for solar panel connectors such as unlocking spanner tools, sealing caps, replacement crimp contacts, and cable glands.", "examples": ["MC4 Disconnect Spanner Tool Pair", "MC4 Sealing End Cap IP67", "MC4 Crimp Contact Set for 2.5-6mm² Cable"]}
+{"id": 784, "description": "Pre-terminated cable assemblies with photovoltaic connectors installed on solar-rated wire, ready for panel and string interconnection."}
+{"id": 169, "description": "Two-piece mating plug-and-header connector systems (including pluggable terminal block plugs and card-format module connectors) that allow wiring or modules to be unplugged as a unit.", "examples": ["Pluggable Terminal Block Plug 4P 5.08mm Pitch 15A 300V Screw", "mPCI-E Socket 52P 0.8mm Pitch SMD Right Angle", "Pluggable Plug 2P 3.81mm Pitch 8A 300V Free Hanging"]}
+{"id": 786, "description": "Supporting parts for pluggable connector systems such as latches, coding keys, strain relief, and hold-down hardware."}
+{"id": 787, "description": "Complete pluggable card-edge socket assemblies such as mPCI-E and MXM module connectors, specified by position count, pitch, and mounting orientation."}
+{"id": 170, "description": "General multi-pin rectangular housing-and-header connector families for wire-to-board, wire-to-wire, and board-to-board connections, specified by pitch, position count, and row configuration.", "examples": ["Rectangular Header 6P 2.54mm Pitch Single Row Through Hole 3A", "Rectangular Housing 8P 2mm Pitch Dual Row Crimp", "Rectangular Receptacle 20P 1.27mm Pitch Dual Row SMD"]}
+{"id": 788, "description": "Fine-pitch mezzanine and edge-type board-to-board connector pairs that stack two PCBs in parallel, specified by position count, pitch, and stacking height."}
+{"id": 789, "description": "Connector housings and headers that terminate discrete wires directly into a board-mounted receptacle without an intermediate cable connector."}
+{"id": 790, "description": "Stacking headers, spacers, and elevated sockets that join parallel boards at a fixed separation while passing signals between them."}
+{"id": 791, "description": "IDC ribbon-cable headers and free-hanging or panel-mount rectangular connectors that terminate flat cable via insulation displacement contacts."}
+{"id": 172, "description": "Through-hole and SMD sockets that let ICs and transistors be inserted and removed without soldering, including DIP, PLCC, and machined-pin types.", "examples": ["DIP-28 IC Socket 2.54mm Pitch 600mil Machined Pin", "PLCC-44 Socket Through Hole", "TO-92 Transistor Socket 3P Through Hole"]}
+{"id": 801, "description": "Supporting parts for IC and transistor sockets such as extraction tools, dust covers, adapter pins, and retention clips.", "examples": ["PLCC Extraction Tool for 20-84 Position", "DIP IC Socket Dust Cover 40P", "IC Socket Pin Strip 2.54mm Pitch 40P Machined"]}
+{"id": 173, "description": "Connectors purpose-built for LED lighting, including solderless LED strip connectors, COB holders, and module-to-driver wiring connectors.", "examples": ["LED Strip Connector 2P 8mm Width Solderless Clip", "LED Module Connector 2P 4mm Pitch Push-In 9A", "COB LED Holder 2P Screw Mount 250V"]}
+{"id": 174, "description": "Board- and rail-mount insulated terminal blocks that clamp stripped wires with screw, spring, or push-in mechanisms for field wiring connections.", "examples": ["Screw Terminal Block 2P 5.08mm Pitch 16A 300V Through Hole", "Spring Terminal Block 3P 3.5mm Pitch 10A 250V", "DIN Rail Terminal Block 1P 32A 800V 4mm² Screw Clamp"]}
+{"id": 808, "description": "Mating headers, plugs, and sockets for pluggable terminal block systems, specified by position count, pitch, and orientation."}
+{"id": 809, "description": "DIN-rail interface modules that break out multi-pin cable connectors to rows of terminal blocks for PLC and control cabinet wiring."}
+{"id": 810, "description": "Terminal block headers and connectors designed for mounting through equipment panels rather than directly on a PCB."}
+{"id": 811, "description": "Power distribution terminal blocks and busbar-style splicing blocks that split a single heavy supply feed into multiple branch circuits."}
+{"id": 812, "description": "Application-specific terminal block styles such as fuse-holding, disconnect, sensor, and thermocouple blocks that don't fit standard wire-to-board categories."}
+{"id": 813, "description": "Supporting parts for terminal blocks such as end plates, jumper bars, marking tags, end brackets, and partition walls.", "examples": ["Terminal Block End Plate 2.5mm Gray", "Jumper Bar 10 Position 5.08mm Pitch", "DIN Rail End Bracket Screw-Fixed"]}
+{"id": 817, "description": "Adapters that convert terminal block interfaces to other formats or reconfigure pitch and orientation between mating block halves."}
+{"id": 818, "description": "Replacement metal clamp and contact elements used inside terminal block bodies."}
+{"id": 819, "description": "PCB-mounted wire-to-board terminal blocks that solder to the board and clamp field wiring by screw or spring, specified by position count, pitch, and ratings."}
+{"id": 175, "description": "Modular junction and feed-through terminal systems that gang individual terminal modules into distribution assemblies for harness break-outs."}
+{"id": 176, "description": "Solder terminal strips and turret-post boards providing raised tie points for point-to-point wiring and prototype construction."}
+{"id": 177, "description": "Crimp-on wire termination hardware including ring, spade, bullet, pin, and splice terminals, specified by wire gauge, stud size, and insulation.", "examples": ["Insulated Ring Terminal 16-22 AWG M4 Stud", "Non-Insulated Spade Terminal 14-16 AWG M3.5 Stud", "Butt Splice Connector 10-12 AWG Insulated"]}
+{"id": 820, "description": "Cylindrical crimp bullet plugs and mating barrel receptacles that make single-wire quick disconnections, specified by bullet diameter and wire gauge."}
+{"id": 821, "description": "Terminals designed to make electrical connection to thin conductive foils and flat braid rather than round wire."}
+{"id": 822, "description": "Insulating sleeves, boots, and single-position housings that cover crimped terminals and quick-disconnects for insulation and strain relief."}
+{"id": 823, "description": "Flat knife-blade style terminals that mate edge-on with matching receptacles for tool-free single-pole disconnection."}
+{"id": 824, "description": "Heavy-gauge compression cable lugs with a barrel crimped or bolted onto large conductors and a flat tongue for stud mounting."}
+{"id": 825, "description": "Crimp terminals engineered to pierce or displace enamel insulation on magnet wire, making connection without pre-stripping the coating."}
+{"id": 826, "description": "Individual press-fit socket receptacles soldered into PCB holes that accept component leads or pins, allowing single-pin plug-in mounting."}
+{"id": 827, "description": "Discrete solder-in board pins and single-post terminals that provide individual plug or test points on a PCB."}
+{"id": 828, "description": "Faston-style quick-disconnect tab and receptacle terminals that push together for tool-free wire connections, specified by tab size and wire gauge."}
+{"id": 829, "description": "Crimp terminals with a closed circular tongue that bolts around a stud for a secure, vibration-resistant connection, specified by wire gauge and stud size."}
+{"id": 830, "description": "Terminals attached to the wire by a set screw or screw clamp rather than crimping, allowing reusable field termination.", "examples": ["Screw Terminal 10-14 AWG M4 Stud", "Set-Screw Lug 4-8 AWG Copper", "Screw Clamp Terminal 16-22 AWG Tin Plated"]}
+{"id": 831, "description": "Terminals with a solder-cup or perforated lug tongue intended for soldered wire attachment and stud or chassis mounting."}
+{"id": 832, "description": "Open-ended fork/spade crimp terminals that slide around a stud without full removal of the nut, specified by wire gauge and stud size."}
+{"id": 833, "description": "Special-purpose and non-standard terminal styles that do not fit conventional ring, spade, bullet, or pin categories."}
+{"id": 834, "description": "Supporting parts for wire terminals such as insulating covers, marker sleeves, and terminal carriers."}
+{"id": 835, "description": "Adapters that convert one terminal style or stud size to another, such as stud reducers and tab-to-ring converters."}
+{"id": 836, "description": "Solder turret posts that press or swage into boards and chassis to provide multi-level wire tie points for point-to-point wiring."}
+{"id": 837, "description": "Crimp pin terminals that give stranded wire a solid round pin end for insertion into screw clamps and sockets, specified by wire gauge."}
+{"id": 838, "description": "In-line splice connectors, including crimp butt splices and insulation-displacement taps, that permanently join two or more wires."}
+{"id": 839, "description": "Crimp terminal and housing systems for connecting discrete wires to board-mounted headers, specified by wire gauge, pitch, and plating."}
+{"id": 178, "description": "Digital interface receptacles and plugs for USB (Type-A/B/C, Micro, Mini), DVI, HDMI, and DisplayPort connections, specified by version, position count, and mounting style.", "examples": ["USB-C Receptacle 16P USB 2.0 5A SMD Right Angle", "USB Type-A Receptacle USB 3.0 9P Through Hole Right Angle", "HDMI Type-A Receptacle 19P SMD Right Angle Shielded"]}
+{"id": 840, "description": "Supporting parts for USB, DVI, and HDMI connectors such as dust covers, panel bezels, locking hardware, and shielding cans."}
+{"id": 841, "description": "Adapters and couplers that convert between USB, DVI, and HDMI connector types, genders, or orientations."}
+{"id": 842, "description": "Complete board-mount USB/HDMI/DVI receptacle assemblies, most commonly USB Type-C receptacles specified by position count and mounting orientation."}
+{"id": 184, "description": "Two-terminal current-regulating diodes and transistor-based constant-current devices that hold a fixed current over a wide voltage range, often used for LED biasing."}
+{"id": 185, "description": "Two-terminal semiconductor junction devices that conduct current in one direction, encompassing switching, rectifier, Schottky, and Zener types.", "examples": ["Switching Diode 100V 300mA 4ns SOD-323", "Schottky Diode 40V 1A SOD-123FL", "Fast Recovery Rectifier 600V 3A DO-201AD"]}
+{"id": 856, "description": "Four-diode full-wave bridge packages that convert AC input to pulsating DC, specified by reverse voltage, average current, and package."}
+{"id": 1427, "description": "Power rectifier diodes optimized for AC-to-DC conversion, including standard, fast, and ultrafast recovery types rated by reverse voltage and forward current.", "examples": ["Standard Rectifier 1000V 1A DO-41", "Ultrafast Rectifier 600V 8A TO-220AC", "Fast Recovery Rectifier 400V 2A SMA(DO-214AC)"]}
+{"id": 859, "description": "Diodes optimized for radio-frequency service, including PIN switch/limiter diodes, RF Schottky detector diodes, and mixer diodes usable into the GHz range."}
+{"id": 860, "description": "Voltage-variable capacitance (varactor) diodes whose junction capacitance is tuned by reverse bias, used in VCOs and electronic tuning circuits.", "examples": ["Varactor 33pF@1V 30V SOD-323", "Varactor 6.8pF@4V 28V SOT-23", "Tuning Diode 100pF@1V 16V SOD-523"]}
+{"id": 1428, "description": "Reverse-biased breakdown diodes that clamp at a precise Zener voltage for voltage reference and regulation, specified by Zener voltage, tolerance, and power.", "examples": ["5.1V ±5% 500mW SOD-123", "12V ±2% 1W SMA(DO-214AC)", "3.3V ±5% 300mW SOD-523"]}
+{"id": 191, "description": "Junction field-effect transistors whose channel is controlled by reverse-biased gate voltage, valued for high input impedance and low noise in analog and RF front ends."}
+{"id": 186, "description": "Integrated power stage modules combining gate drivers with power switches (MOSFET/IGBT half-bridges) in a single package for motor drive and power conversion."}
+{"id": 192, "description": "Three-terminal PUT thyristor-like devices whose trigger voltage is set by an external resistor divider, used in relaxation oscillators and timing circuits."}
+{"id": 193, "description": "Uncommon transistor configurations such as dual-emitter, matched-pair, and multi-collector BJTs in special packages that don't fit standard single-transistor categories."}
+{"id": 187, "description": "Four-layer latching semiconductor switches including SCRs, TRIACs, DIACs, and SIDACs that remain conducting once triggered until current falls below holding level.", "examples": ["SCR 800V 16A TO-220AB", "TRIAC 600V 8A Snubberless TO-220AB", "DIAC 32V ±4V DO-35"]}
+{"id": 863, "description": "Bidirectional trigger diodes (DIACs) and higher-voltage SIDACs that break over at a defined voltage to fire TRIACs and generate trigger pulses."}
+{"id": 864, "description": "Unidirectional silicon controlled rectifiers that latch on when gate-triggered, specified by blocking voltage, on-state current, and gate sensitivity."}
+{"id": 865, "description": "High-current thyristor power modules packaging one or more SCR/diode pairs on an isolated baseplate for controlled rectification in industrial drives."}
+{"id": 866, "description": "Bidirectional triode thyristors that switch AC in both polarities when gate-triggered, used for phase-control dimming and AC load switching."}
+{"id": 1420, "description": "Three-terminal semiconductor amplifying and switching devices as a broad family, covering bipolar, field-effect, and specialty transistor types.", "examples": ["NPN BJT 40V 200mA 300MHz SOT-23", "N-Channel MOSFET 30V 5.8A 22mΩ SOT-23-3", "PNP BJT 45V 500mA TO-92"]}
+{"id": 1421, "description": "Bipolar junction transistors (NPN and PNP) that amplify current via base drive, specified by collector-emitter voltage, collector current, gain, and package.", "examples": ["NPN 45V 100mA 110-800 hFE SOT-23", "PNP 60V 600mA 625mW TO-92", "NPN 400V 1A 20W TO-126"]}
+{"id": 1433, "description": "Voltage-controlled field-effect transistors, predominantly enhancement-mode power MOSFETs, specified by drain-source voltage, current, on-resistance, and package.", "examples": ["N-Channel 60V 30A 6.5mΩ TO-220", "P-Channel 20V 4A 45mΩ SOT-23", "N-Channel 650V 12A 380mΩ TO-247"]}
+{"id": 1437, "description": "Insulated-gate bipolar transistors combining MOSFET gate drive with bipolar conduction for high-voltage, high-current switching in inverters and motor drives.", "examples": ["650V 40A TO-247 With Anti-Parallel Diode", "1200V 25A TO-247-3", "600V 15A TO-220 Trench Field-Stop"]}
+{"id": 206, "description": "Supporting parts for air conditioning units such as mounting brackets, drain fittings, filters, and control panels."}
+{"id": 198, "description": "Electronically commutated brushless DC axial and blower fans for equipment cooling, specified by supply voltage, frame size, airflow, and speed.", "examples": ["12V 0.12A 40x40x10mm 5000RPM Axial Fan", "24V 0.3A 80x80x25mm Dual Ball Bearing Fan", "5V 0.2A 30x30x7mm Blower Fan"]}
+{"id": 199, "description": "Supporting parts for cooling fans such as mounting screws, vibration-damping mounts, cable adapters, and speed controllers."}
+{"id": 201, "description": "Protective fan hardware including wire finger guards, dust filters with frames, and mesh sleeves sized to standard fan frames."}
+{"id": 202, "description": "Extruded and stamped metal heat dissipators that mount to power components to increase radiating surface area, specified by dimensions and thermal resistance."}
+{"id": 214, "description": "Supporting parts for electric heaters such as mounting hardware, thermostats, terminal covers, and replacement elements."}
+{"id": 212, "description": "Electric heating devices such as enclosure heaters, PTC heater elements, and cartridge heaters used to warm cabinets and equipment."}
+{"id": 204, "description": "Thermally conductive interface pads and sheet materials cut or die-punched to transfer heat between components and heat sinks while filling gaps."}
+{"id": 203, "description": "Soft silicone-based thermal gap filler pads placed between hot components and heatsinks or enclosures, specified by thickness and thermal conductivity."}
+{"id": 1445, "description": "Solid-state Peltier-effect thermoelectric cooler modules that pump heat between faces when DC current is applied, specified by size, current, and ΔT."}
+{"id": 255, "description": "Application-specific audio ICs such as digital audio transceivers, sample rate converters, and audio processors beyond simple amplifiers."}
+{"id": 256, "description": "ICs that generate, condition, and distribute timing signals, including oscillators, PLL synthesizers, clock buffers, and real-time clocks.", "examples": ["Clock Generator 200MHz 4 Output 3.3V TSSOP-20", "RTC I2C With Battery Backup SOIC-8", "PLL Frequency Synthesizer 4.4GHz SPI LFCSP-32(5x5)"]}
+{"id": 923, "description": "Timing ICs tailored to specific standards or applications, such as PCIe clock generators and DDR register clocks, rather than general-purpose clock parts."}
+{"id": 924, "description": "Fan-out ICs that replicate an input clock to multiple low-skew outputs, optionally with level translation, specified by output count and maximum frequency.", "examples": ["1:4 Clock Buffer 200MHz LVCMOS 3.3V TSSOP-16", "2:8 Clock Fanout 350MHz LVDS 2.5V TSSOP-24", "1:2 Clock Buffer 133MHz 3.3V SOT-23-6"]}
+{"id": 925, "description": "Frequency synthesis ICs using phase-locked loops to generate programmable or multiplied clock frequencies from a reference, up to RF ranges."}
+{"id": 928, "description": "Timer and oscillator ICs (555-style and programmable types) whose frequency or delay is set by external components or digital programming."}
+{"id": 929, "description": "Battery-backed calendar and clock ICs that keep time-of-day and date over I2C/SPI, often with integrated crystal and alarm functions."}
+{"id": 257, "description": "Signal-chain ICs that convert and condition real-world analog signals, including ADCs, DACs, analog front ends, and digital potentiometers.", "examples": ["16-Bit ADC 8-Channel SAR SPI TSSOP-20", "12-Bit DAC I2C 2.7-5.5V SOT-23-6", "Digital Potentiometer 10kΩ 256-Tap SPI SOIC-8"]}
+{"id": 930, "description": "Converter ICs designed for a specific application context, such as energy metering AFE-ADCs and video DACs, rather than general-purpose conversion."}
+{"id": 931, "description": "Integrated analog front-end ICs combining amplification, filtering, and conversion for sensor and measurement chains such as ECG, metering, and data acquisition."}
+{"id": 932, "description": "General-purpose ADC ICs that digitize analog voltages, specified by resolution, channel count, architecture (SAR, sigma-delta), sample rate, and interface."}
+{"id": 933, "description": "Digitally controlled potentiometer ICs that set resistance via I2C, SPI, or up/down interfaces, specified by end-to-end resistance, taps, and tolerance."}
+{"id": 934, "description": "General-purpose DAC ICs that convert digital codes to analog voltage or current, specified by resolution, settling time, channel count, and interface."}
+{"id": 935, "description": "Controller ICs that measure and digitize resistive or capacitive touch panel inputs and report coordinates over a digital interface."}
+{"id": 258, "description": "Programmable processing and logic ICs including microcontrollers, DSPs, FPGAs, and CPLDs that execute code or implement configurable digital logic.", "examples": ["ARM Cortex-M0 32-Bit 48MHz 32KB Flash LQFP-48", "FPGA 25k Logic Cells 484-Ball BGA", "DSP 456MHz Fixed/Floating Point LQFP-176"]}
+{"id": 936, "description": "Microcontrollers integrating application-specific peripherals such as radio, motor control, or metering front ends alongside the CPU core."}
+{"id": 937, "description": "Non-volatile complex programmable logic devices with macrocell-based architectures for instant-on glue logic, specified by macrocell count and package."}
+{"id": 938, "description": "Processors with architectures optimized for real-time numeric signal processing such as filtering, FFTs, and audio/video codecs."}
+{"id": 939, "description": "SRAM-based field programmable gate arrays offering large configurable logic fabrics, specified by logic element count, I/O count, and package."}
+{"id": 940, "description": "Hybrid devices combining an FPGA fabric with a hard microcontroller core on one chip for mixed software-plus-logic designs."}
+{"id": 941, "description": "General-purpose single-chip microcontrollers combining CPU core, flash, RAM, and peripherals, specified by architecture, bit width, clock speed, and I/O count."}
+{"id": 942, "description": "Board-level modules integrating a microcontroller, microprocessor, or FPGA with supporting memory and power circuitry, sold as a plug-in computing unit rather than a bare chip."}
+{"id": 943, "description": "Application processor chips (typically ARM Cortex-A class) that require external memory and boot storage, distinguished from microcontrollers by running full operating systems."}
+{"id": 944, "description": "Classic simple programmable logic devices such as GALs and EEPLD parts with sum-of-product architectures for small glue-logic functions."}
+{"id": 945, "description": "Highly integrated single-chip systems combining processor cores with graphics, memory interfaces, and peripheral subsystems for complete embedded platforms."}
+{"id": 259, "description": "ICs that manage data communication between systems, including serial transceivers (RS-232/485, CAN, USB), codecs, analog switches, and I/O expanders.", "examples": ["RS-485 Transceiver 3.3V 20Mbps SOIC-8", "CAN Transceiver 5V 1Mbps SOIC-8", "16-Bit I2C I/O Expander TSSOP-24"]}
+{"id": 946, "description": "Analog switch ICs optimized for specific signal paths such as USB, HDMI, and audio switching rather than general-purpose signal routing."}
+{"id": 947, "description": "General-purpose CMOS analog switch, multiplexer, and demultiplexer ICs that route analog signals, specified by channel configuration, on-resistance, and supply range."}
+{"id": 948, "description": "Combined analog-to-digital and digital-to-analog coder-decoder ICs, primarily audio codecs, specified by sample rate, resolution, and control interface."}
+{"id": 950, "description": "Direct digital synthesis ICs that generate programmable-frequency sine and other waveforms from a digital phase accumulator and reference clock."}
+{"id": 951, "description": "Line driver, receiver, and transceiver ICs implementing wired interface standards such as RS-232, RS-485, CAN, and LVDS, specified by data rate and protection level."}
+{"id": 952, "description": "ICs that encode, decode, or convert data formats and protocols between interface standards, such as serializers and protocol converters."}
+{"id": 953, "description": "Active filter ICs with switched-capacitor or continuous-time topologies providing programmable lowpass, highpass, and bandpass responses without external inductors."}
+{"id": 954, "description": "Port expander ICs that add GPIO pins controlled over I2C or SPI, specified by I/O count and interface."}
+{"id": 260, "description": "Analog linear ICs that process continuous signals, encompassing operational amplifiers, comparators, and other amplification and conditioning functions.", "examples": ["Dual Op-Amp Rail-to-Rail 1MHz 2.7-5.5V SOIC-8", "Quad Comparator 2-36V 1.3µs SOIC-14", "Instrumentation Amplifier 1MHz Gain 1-1000 SOIC-8"]}
+{"id": 966, "description": "Amplifier ICs including op-amps, instrumentation, audio power, and specialty amplifiers, specified by bandwidth, supply range, noise, and channel count.", "examples": ["Dual Op-Amp 10MHz Rail-to-Rail 1.8-5.5V MSOP-8", "Class-D Audio Amplifier 3W Mono 2.5-5.5V DFN-8", "Precision Op-Amp 1MHz 25µV Offset SOT-23-5"]}
+{"id": 969, "description": "Video signal processing ICs such as video amplifiers, filter-drivers, sync separators, and analog video encoders/decoders.", "examples": ["Video Amplifier 200MHz 6dB Gain SOT-23-5", "Triple Video Filter Driver 8th-Order SOIC-8", "Video Sync Separator 5V SOIC-8"]}
+{"id": 261, "description": "Standard digital logic ICs (74/4000 series families) implementing gates, flip-flops, counters, registers, and bus functions in fixed configurations.", "examples": ["Quad 2-Input NAND Gate 2-6V SOIC-14", "Octal D Flip-Flop 3-State 2-6V TSSOP-20", "Hex Schmitt Inverter 2-6V SOIC-14"]}
+{"id": 973, "description": "First-in-first-out buffer memory ICs that queue data between asynchronous or different-rate systems, specified by depth, width, and access speed."}
+{"id": 974, "description": "Edge-triggered D and JK flip-flop logic ICs for storage and synchronization, specified by supply range, bit count, and propagation delay."}
+{"id": 975, "description": "Basic combinational logic gate and inverter ICs (AND, OR, NAND, NOR, XOR, buffers), including Schmitt-trigger input versions."}
+{"id": 976, "description": "Single- and dual-gate logic ICs whose function (AND/OR/XOR/inverter) is configured by input pin strapping, in tiny packages for glue logic."}
+{"id": 977, "description": "Transparent level-sensitive latch ICs that pass or hold data based on an enable signal, specified by bit count, supply range, and delay."}
+{"id": 971, "description": "Digital magnitude comparator ICs that compare two binary words and output equality or greater/less-than relationships."}
+{"id": 978, "description": "Monostable and astable multivibrator logic ICs that produce single timed pulses or free-running square waves from RC timing components."}
+{"id": 979, "description": "Logic ICs that generate or verify parity bits over multi-bit data words for error detection."}
+{"id": 980, "description": "Serial/parallel shift register ICs used for data conversion and I/O expansion, specified by bit count, direction options, and output type."}
+{"id": 981, "description": "Digital multiplexer, demultiplexer, and decoder logic ICs that select between or route digital signals, specified by channel configuration and speed."}
+{"id": 982, "description": "Uncommon fixed-function logic ICs such as arbiters, redrivers, and special sequencing functions that don't fit standard gate or register categories."}
+{"id": 983, "description": "Bidirectional and unidirectional voltage level translator ICs that interface logic operating at different supply voltages, specified by channel count and voltage ranges.", "examples": ["4-Channel Bidirectional Level Shifter 1.2-3.6V to 1.65-5.5V TSSOP-14", "8-Bit Level Translator Auto-Direction 1.65-5.5V TSSOP-20", "2-Channel I2C Level Shifter 1.2-5.5V SOT-23-6"]}
+{"id": 984, "description": "Wide multi-bit bus interface logic ICs combining latch, register, and transceiver functions (16-32 bit) for data bus buffering."}
+{"id": 262, "description": "Semiconductor data storage ICs including volatile SRAM/DRAM and non-volatile flash, EEPROM, and FRAM in serial and parallel interfaces.", "examples": ["SPI NOR Flash 128Mbit 133MHz SOIC-8", "I2C EEPROM 256Kbit 1MHz SOIC-8", "SRAM 4Mbit 10ns Parallel TSOP-44"]}
+{"id": 990, "description": "Serial PROM/flash memory ICs dedicated to storing and loading FPGA configuration bitstreams at power-up."}
+{"id": 1288, "description": "High-density memory chips such as DDR SDRAM, LPDDR, eMMC, and NAND flash used as main and mass storage in embedded systems."}
+{"id": 992, "description": "Controller ICs that manage memory device interfaces, including DRAM controllers and flash translation controllers."}
+{"id": 263, "description": "Power management ICs that convert, regulate, and supervise supply power, including switching and linear regulators, battery chargers, and supervisors.", "examples": ["Buck Converter 3A 4.5-17V Adjustable 500kHz SOT-23-6", "LDO 3.3V 1A Fixed SOT-223", "Voltage Supervisor 3.08V Active-Low Reset SOT-23-3"]}
+{"id": 1003, "description": "Offline switcher and AC-DC controller ICs, typically with integrated high-voltage MOSFET, implementing flyback and forward converters directly from rectified mains."}
+{"id": 1004, "description": "Charger ICs that manage constant-current/constant-voltage charging of lithium and other battery chemistries, specified by input range, charge current, and cell count."}
+{"id": 1005, "description": "Battery protection, fuel gauge, cell balancing, and monitoring ICs that supervise battery packs beyond basic charging."}
+{"id": 1006, "description": "ICs that limit, regulate, or monitor current flow, including constant-current regulators, current-limit switches, and current sense controllers."}
+{"id": 1007, "description": "Switching regulator controller ICs that drive external power MOSFETs for buck, boost, and other DC-DC topologies, specified by topology, voltage range, and frequency."}
+{"id": 1008, "description": "Driver ICs that multiplex and drive segment/dot LCD and LED display panels, specified by segment count, interface, and supply range."}
+{"id": 1009, "description": "Metering AFE and computation ICs that measure voltage, current, and accumulated energy for electricity meters and power monitors."}
+{"id": 1010, "description": "Integrated full- and half-bridge driver ICs, often with power stages included, for driving motors and inductive loads bidirectionally."}
+{"id": 1011, "description": "High-current driver ICs that switch power MOSFET and IGBT gates rapidly, specified by drive current, supply range, and channel configuration."}
+{"id": 1012, "description": "Controller ICs that manage safe insertion of boards into live power buses by soft-starting current and providing fault protection."}
+{"id": 1013, "description": "Driver ICs that provide the controlled bias and modulation current required to operate laser diodes safely."}
+{"id": 1014, "description": "Constant-current driver ICs for powering LEDs, offered in linear and switching (buck/boost) topologies with PWM or analog dimming, specified by output current."}
+{"id": 1015, "description": "Controller ICs for fluorescent ballasts, HID lamps, and general lighting power stages including dimming control."}
+{"id": 1016, "description": "Integrated driver and controller ICs for brushed DC, stepper, and BLDC motors, combining control logic with power output stages."}
+{"id": 1017, "description": "Ideal diode controllers and integrated MOSFET ORing ICs that replace power diodes with near-zero drop reverse-blocking for supply ORing and reverse protection."}
+{"id": 1018, "description": "Boost controller ICs that shape mains input current to correct power factor in AC-DC supplies, operating in CrM, CCM, or DCM modes."}
+{"id": 1019, "description": "Integrated load switch and high-side power distribution ICs with controlled slew, current limiting, and fault reporting for switching supply rails to loads."}
+{"id": 1020, "description": "Application-specific power management ICs such as multi-rail PMUs and sequencers tailored to particular processors or subsystems."}
+{"id": 1021, "description": "PSE and PD controller ICs implementing IEEE 802.3 Power over Ethernet detection, classification, and power delivery over network cabling."}
+{"id": 1022, "description": "Supervisory and secondary-side controller ICs that monitor, sequence, and regulate power supply operation, including feedback and housekeeping functions."}
+{"id": 1023, "description": "Converter ICs that compute the true RMS value of an AC input signal and output a proportional DC level for measurement applications."}
+{"id": 1024, "description": "Regulator ICs built for niche supply tasks such as VCOM drivers, terminator regulators, and other application-specific rails."}
+{"id": 1025, "description": "Voltage supervisor and reset ICs that monitor supply rails and assert reset below threshold, specified by threshold voltage, timeout, and output polarity."}
+{"id": 1026, "description": "Temperature sensing and fan control ICs that monitor thermal conditions and manage cooling responses over digital interfaces."}
+{"id": 1027, "description": "Voltage-to-frequency and frequency-to-voltage converter ICs that translate between analog levels and proportional pulse frequencies for isolation and measurement."}
+{"id": 1028, "description": "Precision series and shunt voltage reference ICs providing a stable output voltage, specified by voltage, initial accuracy, and temperature drift."}
+{"id": 1029, "description": "Monolithic switching regulator ICs with integrated power switches for buck, boost, and buck-boost conversion, specified by output current, voltage range, and frequency."}
+{"id": 1030, "description": "Combination regulator ICs integrating both switching and linear regulator stages, or multiple mixed outputs, in a single package."}
+{"id": 1031, "description": "Linear regulator controller ICs that drive an external pass transistor to regulate output voltage where the required current exceeds monolithic capability."}
+{"id": 1032, "description": "Low dropout linear regulator ICs that regulate with minimal input-output headroom, specified by output voltage, current, dropout, and quiescent current."}
+{"id": 264, "description": "Miscellaneous function-specific ICs such as unique-ID chips, chaos/encryption functions, and other parts that fit no standard IC category."}
+{"id": 265, "description": "Capacitive or magnetic isolation ICs that transfer digital signals across a galvanic barrier, specified by channel count, data rate, and isolation voltage."}
+{"id": 266, "description": "Gate driver ICs with integrated galvanic isolation that safely drive high-side and bridge power switches referenced to floating potentials."}
+{"id": 267, "description": "Optically coupled isolators using an LED and photodetector to transfer signals across an insulation barrier, with transistor, logic, or triac outputs.", "examples": ["Transistor Output 5kVrms CTR 50-600% DIP-4", "High-Speed Logic Output 10Mbps 3.75kVrms SOIC-8", "Triac Output Zero-Cross 600V 5kVrms DIP-6"]}
+{"id": 1033, "description": "High-speed optocouplers with integrated logic-level output stages for clean digital signal isolation at Mbps rates."}
+{"id": 1034, "description": "Optocouplers with phototransistor or photovoltaic (photo-MOS driving) outputs for general signal isolation and solid-state relay gate drive."}
+{"id": 1035, "description": "Optically triggered triac and SCR output couplers, often with zero-crossing detection, that isolate control signals for switching AC mains loads."}
+{"id": 268, "description": "Isolation devices for specialized functions such as isolated amplifiers, isolated ADC interfaces, and other non-standard isolation channels."}
+{"id": 386, "description": "PCB-mount LED indicator assemblies, multi-LED arrays, light bars, and bar-graph display packages for status indication."}
+{"id": 388, "description": "LED backlight panels and assemblies that provide uniform illumination behind LCD display modules."}
+{"id": 390, "description": "Driver and controller ICs that generate the multiplexed drive waveforms for LCD panels and small monitors, handling segment/common driving and display RAM.", "examples": ["LCD Controller 132x64 Dot Matrix SPI/I2C COG", "Segment LCD Driver 4x40 I2C TQFP-64", "TFT Source Driver 960-Channel COF"]}
+{"id": 392, "description": "In-line optical attenuators that insert a fixed or variable dB loss into a fiber link to prevent receiver overload."}
+{"id": 393, "description": "Photodetector receiver modules with amplification that convert incoming fiber optic light into electrical data signals."}
+{"id": 394, "description": "Optical switching and wavelength multiplexing/demultiplexing components that route or combine light paths between fibers."}
+{"id": 395, "description": "Combined transmitter-receiver optical modules (including SFP-style and board-mount types) providing bidirectional fiber data links."}
+{"id": 396, "description": "Discrete LED and laser emitter components with fiber-coupled packages that transmit light into optical fiber without built-in drive electronics."}
+{"id": 397, "description": "Fiber optic transmitter modules with integrated driver circuitry that accept logic-level data and directly modulate the internal emitter."}
+{"id": 400, "description": "Filament incandescent and gas-discharge neon indicator lamps, typically wire-lead or bayonet types for panel and instrument illumination."}
+{"id": 403, "description": "Semiconductor laser diode components and complete laser modules with collimating optics, specified by wavelength, power, and package."}
+{"id": 404, "description": "Character and numeric LCD/OLED display modules with fixed alphanumeric segments or character cells and built-in controller interfaces."}
+{"id": 405, "description": "Pixel-addressable graphic LCD and OLED display modules, specified by resolution, controller, and interface."}
+{"id": 406, "description": "Intelligent LEDs with built-in control ICs (individually addressable RGB types) that chain on a serial data line for pixel-level color control."}
+{"id": 407, "description": "Seven-segment and alphanumeric LED display modules with one or more digits, specified by color, digit count, and common anode/cathode wiring."}
+{"id": 408, "description": "Integrated LED light sources including chip-on-board arrays, light engines, modules, and flexible strips for illumination applications."}
+{"id": 409, "description": "High-brightness colored (non-white) SMD LEDs in lighting-class packages for decorative, signal, and stage color illumination."}
+{"id": 410, "description": "LED matrix display modules arranging LEDs in row-column grids (e.g. 8x8) with common anode/cathode multiplexed wiring."}
+{"id": 411, "description": "Discrete LED emitter dies and packages spanning infrared, ultraviolet, and visible wavelengths, specified by wavelength, radiant intensity, and beam angle."}
+{"id": 412, "description": "Standard discrete indicator LEDs in through-hole and SMD packages, specified by color, forward voltage, and package size."}
+{"id": 415, "description": "White-emitting SMD LEDs in lighting packages (2835, 3528, 3030, etc.), specified by forward voltage, luminous flux, and color temperature."}
+{"id": 416, "description": "Molded optical lenses that mount over LEDs to shape and focus the emitted beam pattern."}
+{"id": 417, "description": "Rigid and flexible light guide components that pipe LED light from board-mounted sources to panel-front indicator points."}
+{"id": 423, "description": "Spacer and standoff hardware that positions LEDs and optical components at a fixed height and alignment on the PCB."}
+{"id": 419, "description": "Supporting parts for optoelectronic components such as mounting hardware, sockets, bezels, and holders."}
+{"id": 421, "description": "Mirror-finish reflector optics that surround LEDs to collect and redirect light into a controlled beam for lighting fixtures.", "examples": ["Reflector 21mm 24° Beam for COB LED", "Reflector 35mm 38° Beam Screw Mount", "Reflector Cup 15mm 60° Beam Self-Adhesive"]}
+{"id": 425, "description": "Vacuum fluorescent display modules with phosphor-lit segments or characters, offering high brightness and wide viewing angles, specified by size and interface."}
+{"id": 426, "description": "Xenon flash tubes and arc lamps that produce intense broadband light pulses for strobe, photography, and warning beacon applications.", "examples": ["Xenon Flash Tube 4Ws U-Shape 300V Trigger 4kV", "Xenon Flash Tube 20Ws Straight 45mm 300-450V", "Xenon Strobe Tube 6Ws Horseshoe Wire Leads"]}
+{"id": 495, "description": "Two-terminal passive charge-storage components across all dielectric technologies, including ceramic, electrolytic, film, tantalum, and supercapacitor types.", "examples": ["100nF ±10% 50V X7R 0603", "470µF ±20% 25V Aluminum Electrolytic 8x11.5mm", "10µF ±10% 16V Tantalum CASE-A-3216"]}
+{"id": 1139, "description": "Aluminum capacitors using conductive polymer (or hybrid polymer-liquid) electrolyte for very low ESR and long life, in SMD and radial packages."}
+{"id": 1140, "description": "Polarized wet-electrolyte aluminum capacitors providing high capacitance per volume for bulk filtering, specified by capacitance, voltage, ESR, and can size."}
+{"id": 1141, "description": "Multiple capacitors integrated into a single package as networks or arrays, sharing common terminals for space-saving decoupling and filtering.", "examples": ["4x100nF 16V X7R 0804 Array", "2x22pF 50V C0G 0504 Array", "4x10nF 25V X7R 1206 Array"]}
+{"id": 1142, "description": "Multilayer ceramic chip and disc capacitors with class 1 (C0G/NP0) or class 2 (X7R, X5R) dielectrics, specified by capacitance, voltage, dielectric, and case size."}
+{"id": 1143, "description": "Supercapacitors storing charge in an electric double layer, achieving farad-level capacitance at low voltage for backup power and energy buffering."}
+{"id": 1144, "description": "Capacitors with plastic film dielectrics (polyester, polypropylene) including X2/Y safety-rated types for mains filtering, valued for stability and self-healing."}
+{"id": 1145, "description": "Precision capacitors with mica or PTFE dielectrics offering excellent stability, low loss, and high voltage tolerance for RF and precision circuits."}
+{"id": 1146, "description": "AC-rated film capacitors for starting and running single-phase induction motors, specified by capacitance, AC voltage, and temperature range."}
+{"id": 1147, "description": "Polarized capacitors using niobium oxide anodes as a tantalum alternative with benign failure mode, in molded chip cases."}
+{"id": 1148, "description": "Precision capacitors fabricated on silicon substrates offering ultra-stable, low-parasitic capacitance in miniature packages for RF and medical uses."}
+{"id": 1149, "description": "Tantalum capacitors with conductive polymer cathodes providing much lower ESR than standard MnO2 types, in molded chip cases."}
+{"id": 1150, "description": "Polarized solid tantalum chip capacitors offering high volumetric capacitance and stability, specified by capacitance, voltage, ESR, and case code."}
+{"id": 1151, "description": "Precision film-dielectric capacitors with tight tolerance and stable characteristics for timing, filtering, and audio signal paths."}
+{"id": 1152, "description": "Mechanically adjustable trimmer capacitors whose capacitance is tuned by screw rotation for circuit alignment, specified by capacitance range, Q, and voltage."}
+{"id": 496, "description": "Frequency control components including quartz crystals, complete oscillator modules, and ceramic resonators that set circuit timing references.", "examples": ["Crystal 8MHz ±20ppm 18pF HC-49S", "Oscillator 25MHz 3.3V LVCMOS SMD3225-4P", "Ceramic Resonator 4MHz ±0.5% Built-in Caps SMD"]}
+{"id": 1154, "description": "Supporting parts for frequency control devices such as crystal sockets, insulating pads, and holder hardware."}
+{"id": 1155, "description": "Passive quartz crystal resonator units that vibrate at a precise frequency, specified by frequency, frequency tolerance, load capacitance, and package."}
+{"id": 1157, "description": "Complete active oscillator modules combining crystal and drive circuitry to output a ready clock signal, specified by frequency, output logic type, and supply voltage."}
+{"id": 1158, "description": "Oscillator modules whose output frequency is selected from preset options by strapping configuration pins."}
+{"id": 1159, "description": "Factory- or field-programmable oscillator modules whose output frequency is set within a wide range at programming time rather than fixed by the crystal."}
+{"id": 1160, "description": "Ceramic piezoelectric resonators, often with built-in load capacitors, providing lower-cost, lower-precision clock references than quartz crystals."}
+{"id": 1161, "description": "Standalone programming devices used to configure blank programmable oscillators outside the target circuit.", "examples": ["Oscillator Field Programmer 1-110MHz Range USB", "Blank Oscillator Programmer Kit with Socket Adapters", "Handheld Crystal Oscillator Programmer 1-200MHz"]}
+{"id": 1162, "description": "Voltage-controlled oscillator modules whose output frequency is tuned by an analog control voltage, used in PLLs and RF synthesis."}
+{"id": 497, "description": "Passive frequency-selective and EMI suppression components including ferrite beads, common mode chokes, ceramic/SAW filters, and power line filter modules.", "examples": ["Ferrite Bead 600Ω@100MHz 2A 0805", "Common Mode Choke 10mH 1.2A 2-Line Through Hole", "SAW Filter 433.92MHz SMD 3.8x3.8mm"]}
+{"id": 1163, "description": "Clamp-on and slide-on ferrite cores that fit over cable bundles to suppress common-mode RF noise on external wiring."}
+{"id": 1164, "description": "Ceramic dielectric filter components providing fixed lowpass, bandpass, or trap responses for IF and RF signal chains."}
+{"id": 1165, "description": "Dual- or multi-winding chokes that present high impedance to common-mode noise while passing differential signals or power, specified by impedance/inductance and current."}
+{"id": 1168, "description": "Integrated LC and RC filter networks in chip or module form that suppress EMI/RFI on signal and power lines.", "examples": ["Pi Filter 100MHz Cutoff 300mA 0805", "LC EMI Filter 3-Terminal 2A 100nF+2x1nH 1206", "RC Filter Network 100Ω/220pF 4-Circuit 0805x4"]}
+{"id": 1169, "description": "Three-terminal capacitors whose through-conductor geometry shunts high-frequency noise to ground with minimal inductance, for supply line filtering.", "examples": ["Feed Through Capacitor 1nF 2A 50V 0805 3-Terminal", "Feed Through Capacitor 100nF 300mA 16V 0603", "Panel Mount Feedthrough 4.7nF 10A 250V Threaded"]}
+{"id": 1170, "description": "Chip ferrite beads that present frequency-dependent resistance to absorb high-frequency noise on power and signal lines, specified by impedance at 100MHz, current, and DCR."}
+{"id": 1172, "description": "Supporting parts for filter components such as mounting hardware, covers, and terminal accessories."}
+{"id": 1174, "description": "Multi-pole monolithic crystal filter units providing narrow bandpass responses at IF frequencies with quartz stability."}
+{"id": 1175, "description": "Complete mains input filter modules combining chokes and capacitors, often with IEC inlet, to suppress conducted EMI on AC power lines."}
+{"id": 1176, "description": "Fixed-tuned RF bandpass, lowpass, and highpass filters in chip and module form for radio frequency band selection.", "examples": ["Bandpass Filter 2.4GHz 100MHz BW SMD 2x1.25mm", "Lowpass Filter DC-1GHz 50Ω 0603", "Bandpass Filter 915MHz 26MHz BW SMD 3x3mm"]}
+{"id": 1177, "description": "Surface acoustic wave filters providing sharp fixed bandpass responses at RF frequencies for wireless receiver and transmitter front ends."}
+{"id": 498, "description": "Passive magnetic energy-storage components including fixed power inductors, RF chip inductors, and wirewound chokes, specified by inductance, current, and DCR.", "examples": ["10µH ±20% 3A 45mΩ SMD 5x5mm Shielded", "100nH ±5% 300mA 0402 Multilayer", "220µH ±10% 1.2A Radial Through Hole"]}
+{"id": 1178, "description": "Inductors with a movable ferrite slug that allows the inductance to be mechanically tuned for circuit alignment."}
+{"id": 1179, "description": "Multi-winding inductor arrays and coupled signal magnetics used for filtering, coupled-inductor converters, and signal isolation."}
+{"id": 1180, "description": "Analog and silicon delay line components that shift signals by a fixed or programmable time interval, specified by delay range and interface."}
+{"id": 1181, "description": "Fixed-value inductors in SMD and through-hole formats, from power chokes to toroids, specified by inductance, tolerance, saturation current, and DCR."}
+{"id": 1182, "description": "Flat spiral litz-wire coil assemblies with ferrite shielding for Qi-style inductive power transmitter and receiver applications."}
+{"id": 499, "description": "Component parts for building custom magnetics, including ferrite cores, bobbins, and magnet wire, rather than finished inductors or transformers.", "examples": ["Ferrite Core E25/13/7 PC40 Material Pair", "Bobbin 8-Pin for EE16 Core Vertical", "Enameled Copper Magnet Wire 0.5mm 155°C Grade 2"]}
+{"id": 1184, "description": "Plastic coil former bobbins, mounting clips, and assembly hardware for winding custom transformers and inductors on standard core shapes."}
+{"id": 1185, "description": "Bare ferrite magnetic cores in E, toroid, pot, and rod shapes used to build transformers and inductors, specified by geometry and material grade."}
+{"id": 1186, "description": "Enamel-insulated solid copper winding wire for coils, transformers, and motor windings, specified by conductor diameter and insulation temperature class."}
+{"id": 500, "description": "Mechanically adjustable resistive components including rotary, slide, and trimmer potentiometers and rheostats, specified by resistance, taper, and power rating.", "examples": ["10kΩ ±20% Linear Rotary 50mW 6mm Shaft", "10kΩ Trimmer 250mW Top Adjust SMD 4.5x4.5mm", "100kΩ ±10% Slide 60mm Travel 500mW"]}
+{"id": 1188, "description": "High-power wirewound resistors with a sliding tap band that allows the effective resistance to be adjusted, in chassis-mount tubular bodies."}
+{"id": 1191, "description": "Shaft-operated rotary potentiometers and rheostats for panel controls, specified by resistance, taper, power rating, and shaft style."}
+{"id": 1192, "description": "Calibrated dial knobs with graduated scales that mount on potentiometer shafts for repeatable setting indication."}
+{"id": 1193, "description": "Linear-travel slide potentiometers used for fader and level controls, specified by resistance, travel length, and taper."}
+{"id": 1194, "description": "Edge-adjusted thumbwheel potentiometers operated by a knurled wheel for compact panel-edge adjustments."}
+{"id": 1195, "description": "Small screw-adjusted trimmer potentiometers for infrequent circuit calibration, in SMD and through-hole packages, specified by resistance and adjustment style."}
+{"id": 1196, "description": "Potentiometers with a built-in numeric counting dial that displays the current setting, typically multi-turn precision types."}
+{"id": 501, "description": "Two-terminal fixed resistive components across chip, through-hole, current-sense, network, and power styles, specified by resistance, tolerance, power, and package.", "examples": ["10kΩ ±1% 100mW 0603", "1Ω ±5% 2W Metal Oxide Axial", "50mΩ ±1% 2W 2512 Current Sense"]}
+{"id": 1198, "description": "High-power wirewound resistors in metal housings that bolt to a chassis or heatsink for dissipation, typically rated 10W to hundreds of watts."}
+{"id": 1199, "description": "Standard SMD thick- and thin-film chip resistors in EIA case sizes, specified by resistance, tolerance, power rating, and case size."}
+{"id": 1336, "description": "Very low ohmic-value precision resistors optimized for current measurement via voltage drop, with low TCR and high pulse-power capability."}
+{"id": 1201, "description": "Assorted boxed or booked sets of resistors spanning many standard values for prototyping and repair work.", "examples": ["0603 Chip Resistor Kit 1% 170 Values x50pcs", "1/4W Through Hole Kit 5% E12 Series 30 Values", "0402 Resistor Sample Book 1% 170 Values"]}
+{"id": 1200, "description": "Multiple matched resistors integrated in one package as isolated or bussed networks, commonly 4-element chip arrays for pull-ups and terminations."}
+{"id": 1197, "description": "Supporting hardware for resistors such as mounting brackets, heatsink clips, and terminal lugs for power resistor installation.", "examples": ["Mounting Bracket for 50W Chassis Resistor", "Heatsink Clip for TO-220 Power Resistor", "Ceramic Standoff for 10W Wirewound Resistor"]}
+{"id": 1202, "description": "Non-standard resistor constructions such as metal-element shunts in the sub-milliohm range and other special-purpose resistive elements."}
+{"id": 1203, "description": "Axial-leaded fixed resistors (carbon film, metal film, metal oxide) for through-hole assembly, specified by resistance, tolerance, power, and body size."}
+{"id": 509, "description": "PCB-mounted power conversion modules including isolated DC-DC bricks, encapsulated AC-DC modules, and board-level LED driver modules.", "examples": ["Isolated DC-DC Module 5V 1A 4.5-9V Input SIP-4 1kV Isolation", "AC-DC Module 5V 600mA 85-305VAC Input Encapsulated PCB Mount", "DC-DC Module 12V 500mA 9-18V Input DIP-24 1.5kV Isolation"]}
+{"id": 1375, "description": "Encapsulated board-mount AC-DC converter modules that rectify and regulate mains input to an isolated low-voltage DC output, specified by output voltage, current, and input range."}
+{"id": 1377, "description": "Supporting parts for board-mount power modules such as heatsinks, mounting clips, and evaluation sockets."}
+{"id": 1378, "description": "Board-mount DC-DC converter modules, isolated and non-isolated, that convert one DC voltage to another, specified by output voltage, current, input range, and isolation."}
+{"id": 1379, "description": "Board-mount constant-current LED driver modules that power LED strings from a DC input, specified by topology, input range, and output current."}
+{"id": 510, "description": "Complete enclosed power supply units used off-board, including desktop adapters, enclosed frame supplies, DIN-rail units, and UPS systems.", "examples": ["Enclosed AC-DC Supply 24V 6.5A 150W 85-264VAC", "Desktop Adapter 12V 5A 60W 5.5x2.1mm Plug", "DIN Rail Supply 24V 10A 240W Single Phase"]}
+{"id": 1376, "description": "Wall-plug transformers that step mains AC voltage down to a lower AC output voltage without rectification, for AC-powered devices.", "examples": ["AC-AC Wall Adapter 24VAC 1A 50/60Hz", "AC-AC Wall Adapter 12VAC 2A US Plug", "AC-AC Wall Adapter 9VAC 500mA EU Plug"]}
+{"id": 1380, "description": "Factory-assembled modular power supplies built from a configurable chassis populated with selected output modules to customer specification."}
+{"id": 1381, "description": "Empty rack or case frames with input stage that accept plug-in output modules to form configurable multi-output power systems."}
+{"id": 1382, "description": "Plug-in output converter modules that install into configurable power supply chassis to provide specific voltage and current rails."}
+{"id": 1383, "description": "Enclosed and open-frame AC-DC converter units used outside the host PCB, wired to equipment rather than soldered to a board."}
+{"id": 1384, "description": "External AC-DC power adapters in wall-plug and desktop brick formats that convert mains to regulated DC over an output cord, specified by voltage, current, and plug."}
+{"id": 1390, "description": "ATX and similar multi-rail switching power supply units that power desktop and industrial computers from mains input.", "examples": ["ATX Power Supply 650W 80+ Bronze 100-240VAC", "SFX Power Supply 450W Modular 100-240VAC", "1U Flex Industrial PSU 250W 100-240VAC"]}
+{"id": 1391, "description": "Power inverter units that convert DC battery or supply voltage into AC mains-level output, specified by input voltage, output power, and waveform type."}
+{"id": 1385, "description": "Off-board DC-DC converter units in enclosed or potted formats that are wired between DC systems rather than soldered onto the host PCB."}
+{"id": 1392, "description": "Bench and enclosed regulated DC output power supply units for lab, test, and system power, specified by output voltage, current, and regulation."}
+{"id": 1386, "description": "Supporting parts for external and internal power supplies such as DC output cords, mounting brackets, terminal covers, and connector kits."}
+{"id": 1387, "description": "Enclosed switching power supplies with DIN-rail or panel mounting for industrial control cabinets, specified by output voltage, power, and input phase."}
+{"id": 1388, "description": "Enclosed constant-current or constant-voltage LED power supply units that drive lighting fixtures from mains input, typically IP-rated for luminaire use."}
+{"id": 1389, "description": "PoE injector, splitter, and midspan units that add or extract DC power carried over Ethernet cabling per IEEE 802.3 standards."}
+{"id": 1393, "description": "Battery-backed power systems that maintain AC output to connected equipment during mains failure, specified by VA/watt capacity and topology."}
+{"id": 531, "description": "Rugged electromechanical relays with 12V/24V coils and blade terminals designed for vehicle electrical loads and under-hood conditions."}
+{"id": 530, "description": "Heavy-duty electromechanical switching contactors with coil-driven main contacts for motor and high-power load control, specified by coil voltage and contact rating."}
+{"id": 529, "description": "Semiconductor-based contactors that switch high-power AC loads with no moving contacts, offering silent long-life operation."}
+{"id": 532, "description": "Impedance-controlled relays optimized for switching RF and high-frequency signals with low insertion loss and high isolation into the GHz range."}
+{"id": 528, "description": "General-purpose plug-in and flange-mount electromechanical relays for control panel and machine automation duty, often used with matching sockets."}
+{"id": 533, "description": "Electromechanical relays with contacts rated for ampere-level mains loads, specified by contact form, coil voltage, and contact current."}
+{"id": 536, "description": "Relays using hermetically sealed reed switch contacts actuated by a coil, offering fast switching and high insulation resistance, including high-voltage types."}
+{"id": 526, "description": "Assembled relay boards combining one or more relays with drive circuitry, indicators, and terminals for direct control-signal interfacing."}
+{"id": 537, "description": "Mating sockets and bases that accept plug-in relays for tool-free replacement, in PCB and DIN-rail styles."}
+{"id": 527, "description": "Relay-based switching devices and prewired relay switch units for load control applications."}
+{"id": 524, "description": "Supporting parts for relays such as hold-down clips, marking tags, protection diode modules, and mounting hardware."}
+{"id": 1308, "description": "Force-guided contact relays with mechanically linked NO and NC contacts for fault-detectable switching in machine safety circuits."}
+{"id": 534, "description": "Small low-level relays for switching signal currents up to about 2A, typically DPDT in compact SMD or through-hole packages."}
+{"id": 538, "description": "Optically isolated semiconductor relays (photoMOS/photorelay and triac types) that switch loads with no mechanical contacts, specified by load voltage, current, and form."}
+{"id": 539, "description": "Fixed and digitally controlled step attenuator components that reduce RF signal amplitude by a set dB value across a specified frequency range."}
+{"id": 540, "description": "Balanced-to-unbalanced RF transformer components that convert between differential and single-ended signal paths with defined impedance ratio and frequency range."}
+{"id": 541, "description": "Supporting parts for RF systems such as shield clips, test point hardware, and coaxial terminations that don't fit other RF categories."}
+{"id": 542, "description": "RF gain-block, LNA, and PA amplifier ICs, specified by frequency range, gain, noise figure, output power, and supply."}
+{"id": 543, "description": "Antenna components in chip, PCB, whip, and external formats for wireless bands, specified by frequency, gain, and mounting."}
+{"id": 544, "description": "Ferrite non-reciprocal RF components that pass signals in one rotational direction, protecting transmitters from reflected power."}
+{"id": 545, "description": "ICs that recover baseband information from modulated RF/IF carriers, including quadrature and I/Q demodulators."}
+{"id": 546, "description": "Logarithmic and RMS RF power detector ICs that output a level proportional to input RF power, specified by dynamic range and accuracy."}
+{"id": 547, "description": "Passive four-port RF components that tap a defined fraction of forward or reverse signal power for monitoring, specified by coupling factor and frequency range.", "examples": ["Directional Coupler 20dB 800MHz-2.5GHz 50Ω SMD 3.2x1.6mm", "Directional Coupler 10dB 2-4GHz 50Ω SMD", "Bidirectional Coupler 30dB 100MHz-1GHz 50Ω SMD 6x4mm"]}
+{"id": 548, "description": "Integrated RF front-end ICs combining a low-noise receive amplifier, transmit power amplifier, and switching for a specific wireless band."}
+{"id": 549, "description": "Miscellaneous RF ICs and modules such as synthesizer modules and frequency sources that fit no standard RF function category."}
+{"id": 550, "description": "Frequency-translation mixer ICs that combine an RF signal with a local oscillator to produce sum/difference frequencies, specified by conversion gain and linearity."}
+{"id": 551, "description": "ICs that impress baseband information onto an RF carrier, including I/Q and quadrature modulators for transmitter chains."}
+{"id": 552, "description": "Frequency-domain multiplexer components (diplexers, triplexers) that combine or separate multiple RF bands onto one antenna path."}
+{"id": 553, "description": "Closed-loop controller ICs that regulate RF power amplifier output level based on detected power feedback."}
+{"id": 554, "description": "Passive components that split one RF signal into equal-amplitude outputs or combine several, specified by frequency range, ports, and insertion loss."}
+{"id": 555, "description": "Complete boxed RF radio products with enclosures and connectors, ready to use rather than board-mount modules."}
+{"id": 556, "description": "Receiver-only RF modules and ICs that demodulate incoming wireless signals to data output, specified by frequency, sensitivity, and interface."}
+{"id": 557, "description": "Board-level metal shielding cans and frames that solder over circuit sections to contain or exclude electromagnetic interference."}
+{"id": 558, "description": "Solid-state RF signal routing switch ICs (SPDT, SP4T, etc.) that select between antenna and signal paths, specified by frequency range, insertion loss, and isolation."}
+{"id": 559, "description": "Single-chip radio transceiver ICs for protocols like Bluetooth, ZigBee, LoRa, and sub-GHz links, requiring external antenna and host control."}
+{"id": 560, "description": "Complete board-mount radio modules with transceiver IC, matching, and often antenna integrated and pre-certified for drop-in wireless connectivity."}
+{"id": 561, "description": "Transmit-only RF ICs and modules that modulate data onto a carrier for one-way wireless links, specified by frequency range, data rate, and supply."}
+{"id": 562, "description": "Conductive beryllium-copper fingerstock strips, spring contacts, and EMI gaskets that maintain shielding continuity across enclosure seams."}
+{"id": 563, "description": "Conductive fabrics, foils, absorber sheets, and shielding tapes applied to enclosures and cables to block or absorb electromagnetic radiation."}
+{"id": 565, "description": "Tuned antenna coils and PCB/SMD antennas for RFID and NFC frequencies (125kHz, 13.56MHz, UHF), specified by frequency and inductance."}
+{"id": 566, "description": "Complete reader/writer modules with RF front end and protocol handling that communicate with RFID tags over a host interface."}
+{"id": 567, "description": "Passive RFID tag and transponder components (inlays, discs, glass capsules) that store an ID readable over the air, specified by frequency and protocol."}
+{"id": 568, "description": "NFC/RFID front-end and secure access ICs implementing ISO 14443/15693/18000 protocols for reader and tag-side card functions."}
+{"id": 569, "description": "Subscriber identity module cards in standard, micro, nano, and solderable MFF2 formats that authenticate devices on cellular networks.", "examples": ["Nano SIM 4FF Industrial Grade -40 to +105°C", "MFF2 Embedded SIM Solderable DFN-8 M2M", "Triple-Cut SIM 2FF/3FF/4FF Commercial Grade"]}
+{"id": 599, "description": "Sensors that measure the color content of light or surfaces by sensing multiple wavelength channels (typically RGB or spectral bands).", "examples": ["RGB Color Sensor I2C 16-bit with IR Filter DFN-6", "RGBW Light/Color Sensor I2C 2.7-3.6V LGA-8", "Spectral Sensor 6-Channel I2C LGA-11"]}
+{"id": 1238, "description": "Board-mount color sensor ICs with integrated photodiode arrays and filters that report RGB or spectral readings over a digital interface.", "examples": ["RGB Sensor IC I2C 1.8V LGA-6 2x2mm", "Color Sensor IC 4-Channel RGBC I2C DFN-6", "RGB+IR Sensor IC I2C 2.5-3.6V OPLGA-6"]}
+{"id": 600, "description": "Hall-effect and shunt-based current sensing ICs that output a signal proportional to measured current, specified by current range, sensitivity, and isolation."}
+{"id": 1354, "description": "Industrial transmitter instruments that measure the pressure difference between two ports and output a standardized process signal such as 4-20mA."}
+{"id": 601, "description": "Rotary and linear encoder sensor components that translate mechanical motion into digital position or pulse signals."}
+{"id": 602, "description": "Float switches and level sensing devices that detect liquid level via buoyant actuators, capacitive, or optical principles."}
+{"id": 603, "description": "Sensors that measure liquid or gas flow rate via turbine, thermal, or differential techniques, producing pulse or analog outputs."}
+{"id": 604, "description": "Force-sensitive resistors, load cells, and force transducers that convert applied mechanical force or weight into an electrical signal."}
+{"id": 1444, "description": "Chemical gas detection elements (MOS, electrochemical, catalytic) that respond to target gases such as flammables, CO, or VOCs, specified by gas type and range."}
+{"id": 605, "description": "Relative humidity sensors, usually with integrated temperature sensing and digital interfaces, specified by RH accuracy, range, and interface."}
+{"id": 606, "description": "Integrated infrared transceiver modules implementing the IrDA standard for short-range optical data links, specified by data rate and range."}
+{"id": 607, "description": "Electromechanical LVDT position transducers that measure linear displacement via differential transformer coupling with high resolution."}
+{"id": 608, "description": "Sensors that detect magnetic fields, including Hall-effect switches and latches, magnetometer ICs, and reed-based sensing devices.", "examples": ["Hall Effect Switch Unipolar 3.5mT Open-Drain SOT-23", "3-Axis Magnetometer I2C ±50mT LGA-12", "Hall Latch Bipolar 2mT Push-Pull TO-92S"]}
+{"id": 1243, "description": "Board-level compass and magnetic field sensing modules integrating magnetometer ICs with supporting circuitry."}
+{"id": 1244, "description": "Linear Hall-effect and electronic compass magnetometer ICs that output analog or digital field measurements for position and heading sensing."}
+{"id": 1245, "description": "Complete sensing modules that detect position, proximity, or rotational speed using magnetic or inductive principles."}
+{"id": 1246, "description": "Digital-output Hall-effect switch and latch ICs that toggle at defined magnetic thresholds, specified by polarity behavior, threshold, and output type."}
+{"id": 609, "description": "Permanent magnet components used as actuation targets and field sources for magnetic sensors and mechanical holding.", "examples": ["Neodymium Disc Magnet 6x2mm N35 Nickel Plated", "Ferrite Ring Magnet 20x10x5mm Y30", "Neodymium Block Magnet 10x5x2mm N42"]}
+{"id": 1247, "description": "General-purpose permanent magnets in disc, ring, and block shapes for sensor triggering, mounting, and holding applications.", "examples": ["Neodymium Disc Magnet 8x3mm N38 Axial", "Ferrite Block Magnet 25x10x5mm", "Neodymium Ring Magnet 10x5x2mm N35 Nickel"]}
+{"id": 610, "description": "Inertial and motion detection sensors including accelerometers, gyroscopes, IMUs, tilt switches, and vibration sensors.", "examples": ["3-Axis Accelerometer ±2/4/8g I2C/SPI LGA-12", "6-Axis IMU Accel+Gyro I2C/SPI LGA-14", "Vibration Sensor Spring Type Normally Open SMD"]}
+{"id": 1249, "description": "MEMS acceleration sensor ICs measuring static and dynamic acceleration on up to three axes, specified by g-range, resolution, and interface."}
+{"id": 1250, "description": "MEMS angular rate sensor ICs that measure rotation speed around one to three axes, specified by range in dps and interface."}
+{"id": 1251, "description": "Combined inertial sensor ICs integrating multi-axis accelerometer and gyroscope (sometimes magnetometer) in one package for motion tracking."}
+{"id": 1252, "description": "Tilt-angle measurement sensor ICs that report inclination relative to gravity with high accuracy over a digital interface."}
+{"id": 1253, "description": "Optical motion detection sensors, including PIR elements and optical navigation sensors, that register movement via light changes."}
+{"id": 1254, "description": "Simple mechanical ball or metal-contact switches that open or close when tilted past a threshold angle."}
+{"id": 1255, "description": "Spring-mass and piezoelectric elements that produce contact closure or charge output in response to vibration and shock."}
+{"id": 611, "description": "Combination sensor ICs and modules integrating multiple sensing functions (e.g. IMU plus temperature or environmental combos) in one device."}
+{"id": 612, "description": "Light-based sensing components including photodiodes, phototransistors, ambient light sensors, photointerrupters, and reflective sensors.", "examples": ["Photodiode 940nm 32V Through Hole 5mm", "Ambient Light Sensor I2C 0.01-83k lux DFN-6", "Slot Photointerrupter 5mm Gap Transistor Output DIP-4"]}
+{"id": 1256, "description": "Digital ambient light, infrared, and UV intensity sensor ICs that measure illumination levels over I2C for display and environmental control."}
+{"id": 1257, "description": "Complete camera modules integrating an image sensor, lens, and interface electronics for embedded vision applications."}
+{"id": 1258, "description": "Time-of-flight, ultrasonic, and IR triangulation modules that measure the distance to a target and report it electronically."}
+{"id": 1259, "description": "CMOS and CCD image sensor chips that convert optical images into electronic signals, specified by resolution, pixel size, and optical format."}
+{"id": 1260, "description": "Cadmium sulfide photoconductive cells whose resistance drops with light intensity, used for simple ambient light detection."}
+{"id": 1261, "description": "Light detector components with built-in comparator or Schmitt circuitry providing clean digital high/low output based on light level."}
+{"id": 1262, "description": "Integrated IR receiver modules with photodiode, amplifier, and demodulator tuned to carrier frequencies (e.g. 38kHz) for remote control reception."}
+{"id": 1263, "description": "Semiconductor photodiode detectors that generate current proportional to incident light, specified by wavelength response, reverse voltage, and package."}
+{"id": 1264, "description": "Slotted optical switch sensors with digital logic output that signal when an object interrupts the beam across the gap."}
+{"id": 1265, "description": "Slotted optical switch sensors pairing an IR emitter with a phototransistor across a gap, giving analog transistor output when the beam is blocked."}
+{"id": 1266, "description": "Single-photon detection modules and photon counting instruments for ultra-low-light photonics measurement and quantum applications."}
+{"id": 1267, "description": "Light-sensitive transistors whose collector current increases with illumination, offering higher sensitivity than photodiodes, specified by wavelength and package."}
+{"id": 1268, "description": "Reflective optical sensor pairs (emitter plus detector facing the same direction) with raw analog output proportional to reflected light."}
+{"id": 1269, "description": "Reflective optical sensors with built-in signal conditioning that output a digital logic level when a reflective target is detected."}
+{"id": 613, "description": "Optical particle counting sensors that measure airborne dust and particulate concentration via light scattering."}
+{"id": 1353, "description": "Calibrated particulate matter measurement instruments that report PM1.0/PM2.5/PM10 concentrations over standardized outputs."}
+{"id": 624, "description": "Light-dependent resistors whose resistance decreases with illumination, specified by light/dark resistance and peak spectral response.", "examples": ["LDR 5-10kΩ Light 1MΩ Dark 540nm 5mm", "LDR 10-20kΩ Light 2MΩ Dark 560nm 12mm", "LDR 20-30kΩ Light 5MΩ Dark 540nm 5mm"]}
+{"id": 614, "description": "Sensors that measure linear or angular position, including position-sensing potentiometers, magnetic angle sensor ICs, and displacement transducers.", "examples": ["Magnetic Rotary Angle Sensor 12-bit SPI SOIC-8", "Linear Position Potentiometer 10kΩ 100mm Travel", "Inductive Position Sensor IC 360° I2C TSSOP-16"]}
+{"id": 1270, "description": "Precision potentiometric and sensor elements that convert shaft angle or linear travel into a proportional resistance or voltage."}
+{"id": 615, "description": "MEMS and piezoresistive pressure sensor components that convert absolute, gauge, or differential pressure into electrical output, specified by range and interface."}
+{"id": 1355, "description": "Industrial pressure transmitter instruments with threaded process connections that output standardized 4-20mA or voltage signals proportional to pressure."}
+{"id": 617, "description": "Non-contact detection sensors (inductive, capacitive, magnetic) that signal the presence of nearby objects without physical contact."}
+{"id": 616, "description": "Complete packaged proximity and occupancy detector units, such as PIR occupancy sensors, ready for installation rather than board mounting."}
+{"id": 1352, "description": "Multi-beam infrared safety curtain transmitter/receiver pairs that stop machinery when the protected plane is interrupted."}
+{"id": 618, "description": "Supporting parts for sensor cabling such as connector caps, mounting clips, and replacement seals."}
+{"id": 619, "description": "Pre-terminated cables with sensor-style connectors (e.g. M8/M12) for connecting industrial sensors to control systems."}
+{"id": 620, "description": "Multi-port distribution blocks that aggregate several sensor connections into a single trunk cable back to the controller."}
+{"id": 621, "description": "Supporting hardware for sensors and transducers such as mounting brackets, protective covers, and calibration fixtures."}
+{"id": 622, "description": "Signal conditioning amplifier units that boost and standardize low-level transducer outputs (e.g. strain gauge bridges) for measurement systems."}
+{"id": 623, "description": "Sensors that detect sudden mechanical impact or shock events, producing a contact closure or signal above a g-threshold."}
+{"id": 625, "description": "Uncommon sensing devices for niche measurements that don't fit standard sensor categories."}
+{"id": 626, "description": "Resistive strain measurement elements and strain-sensing ICs whose output changes with mechanical deformation of the mounting surface."}
+{"id": 627, "description": "Temperature measurement components spanning silicon sensor ICs, NTC/PTC thermistors, RTDs, and thermocouple probes.", "examples": ["Digital Temp Sensor ±0.5°C I2C -40 to +125°C SOT-23-6", "NTC Thermistor 10kΩ 1% B3435 Radial", "Pt100 RTD Element Class A -50 to +300°C SIP-2"]}
+{"id": 1271, "description": "Silicon temperature sensor ICs with analog voltage or digital bus outputs, specified by accuracy, range, and interface."}
+{"id": 1272, "description": "Negative temperature coefficient thermistors whose resistance falls with temperature, specified by nominal resistance, B-value, and tolerance."}
+{"id": 1273, "description": "Positive temperature coefficient thermistors whose resistance rises with temperature, used for sensing, self-regulating heating, and protection."}
+{"id": 1274, "description": "Platinum and thin-film resistance temperature detector elements offering accurate, linear resistance-temperature response over wide ranges."}
+{"id": 1275, "description": "Thermocouple junction probes and thermopile sensing devices that measure temperature via thermoelectric voltage, including non-contact IR types."}
+{"id": 1276, "description": "Bimetallic snap-action thermal switches that open or close contacts at a fixed temperature for control and overheat protection."}
+{"id": 1277, "description": "Temperature switch ICs with programmable or fixed trip thresholds that assert a logic output when temperature crosses the setpoint."}
+{"id": 628, "description": "Capacitive touch sensing ICs and touch key components that detect finger proximity or contact on electrodes."}
+{"id": 629, "description": "Piezoelectric ultrasonic transducer elements and driver ICs that emit and detect ultrasonic waves for ranging and presence sensing."}
+{"id": 630, "description": "General supporting parts for switches such as caps, hardware, and replacement components not tied to a specific switch family."}
+{"id": 1402, "description": "Sealing boots and gaskets that fit over toggle and pushbutton switch bushings to keep out dust and moisture."}
+{"id": 1403, "description": "Snap-on actuator caps in various colors and shapes that fit tactile, pushbutton, and slide switch stems."}
+{"id": 1330, "description": "Switching units that automatically transfer a load between primary and backup power sources when the primary supply fails."}
+{"id": 631, "description": "Safety switches actuated by tension on a pull cable, used for emergency stop along conveyor lines and machine perimeters."}
+{"id": 632, "description": "Modular components of build-to-order panel switch systems (operators, contact blocks, lamps, lenses) that assemble into complete control switches.", "examples": ["Momentary Pushbutton Operator 22mm Flush Red IP65", "Contact Block 1NO+1NC 10A 600V Screw Terminal", "LED Illumination Block 24V White for 22mm Operator"]}
+{"id": 1278, "description": "Operator body units of modular control switches — the panel-mounted actuator mechanism onto which contact blocks and lamps are assembled."}
+{"id": 1279, "description": "Snap-on NO/NC contact modules that attach behind modular switch operator bodies to provide the electrical switching elements."}
+{"id": 1280, "description": "LED and incandescent lamp modules that install inside modular switch assemblies to illuminate the actuator."}
+{"id": 1281, "description": "Colored lens and button-face inserts that fit modular switch operators to set the illuminated appearance and legend."}
+{"id": 633, "description": "Multi-position miniature switch packages in DIP or SIP formats with individual slide or rocker actuators for board-level configuration settings."}
+{"id": 634, "description": "Component parts of load disconnect switch systems such as handles, shafts, and terminal shields."}
+{"id": 635, "description": "Red mushroom-head latching safety switches that cut machine power when struck and require deliberate reset, per machine safety standards."}
+{"id": 1285, "description": "Pedal-operated switch units that allow hands-free momentary or latching control of equipment."}
+{"id": 636, "description": "Detection switches that sense the presence or position of doors, covers, and mating parts to enable or interrupt circuits, often miniature SMD types."}
+{"id": 637, "description": "Rotary switches operated by a removable key to restrict actuation to authorized users, specified by positions and contact rating."}
+{"id": 639, "description": "Snap-action mechanical switches with lever, roller, or plunger actuators that detect the physical end-of-travel position of moving machine parts."}
+{"id": 640, "description": "Hermetically sealed reed switch elements whose contacts close in the presence of a magnetic field, used for proximity and position detection."}
+{"id": 642, "description": "Snap-action metal dome contact elements and dome arrays that provide tactile click feedback in membrane keypads and button assemblies.", "examples": ["Metal Dome 4-Leg 8.4mm 250gf Snap Disc", "Metal Dome Array Sheet 12-Key 5mm 180gf", "Round Metal Dome 6mm 320gf Tactile"]}
+{"id": 643, "description": "Multi-directional navigation switches and miniature joystick components providing 4/5-way directional input plus center push for menu control."}
+{"id": 645, "description": "Momentary and latching button-actuated switches in panel and board mount styles, specified by contact configuration, rating, and actuator style."}
+{"id": 646, "description": "Contactless pushbutton switches using Hall-effect sensing instead of mechanical contacts for extremely long operating life."}
+{"id": 647, "description": "Seesaw-actuated panel switches that rock between positions, commonly mains-rated for equipment power switching."}
+{"id": 648, "description": "Multi-position switches operated by shaft rotation that select among several circuits, specified by positions, poles, and indexing angle."}
+{"id": 649, "description": "Multi-position selector switch components, including miniature SMD types, that choose between operating modes or circuits."}
+{"id": 650, "description": "Linear-actuated switches with a sliding knob that moves between contact positions, specified by circuit configuration, rating, and travel."}
+{"id": 651, "description": "Momentary snap-action button switches with tactile click feedback for board-level user input, specified by actuation force, travel, and footprint."}
+{"id": 652, "description": "Digit-selection switches operated by a rotating wheel that outputs BCD or decimal codes for numeric setting entry."}
+{"id": 653, "description": "Lever-actuated switches that flip between maintained positions, specified by contact configuration, current/voltage rating, and bushing mount."}
+{"id": 686, "description": "Impedance-matching and coupling transformers for audio-frequency signals, providing isolation and level transformation across the audible band."}
+{"id": 687, "description": "Sense transformers whose secondary current is a fixed fraction of the measured primary current, used for AC current monitoring, specified by turns ratio and current."}
+{"id": 688, "description": "Mains-frequency transformers and autotransformers that step voltage up or down or provide galvanic isolation between AC circuits."}
+{"id": 689, "description": "Voltage-sensing instrument transformers that scale high AC voltages down to safe measurable levels for metering circuits."}
+{"id": 690, "description": "Line-frequency laminated-core transformers that convert mains AC to lower secondary voltages for power supplies, specified by VA rating and secondary voltages.", "examples": ["Power Transformer 230V to 2x12V 10VA PCB Mount", "Toroidal Transformer 115/230V to 2x18V 50VA", "EI Transformer 220V to 9V 3VA PCB Mount"]}
+{"id": 691, "description": "Small wideband transformers that couple fast pulses and data signals, including Ethernet LAN magnetics and gate-drive pulse transformers."}
+{"id": 692, "description": "Transformers built for niche functions such as ignition, CCFL inverter, and instrument applications that fit no standard transformer category."}
+{"id": 693, "description": "Ferrite-core high-frequency transformers designed for switch-mode power supply topologies like flyback and forward converters, specified by turns ratio, power, and core size.", "examples": ["Flyback Transformer EE16 5W 85-265VAC to 5V", "SMPS Transformer EFD20 1:0.1 20W 100kHz", "Forward Transformer EE25 30W 3.3V/5V Dual Output"]}

+ 2 - 2
test.sh

@@ -16,7 +16,7 @@ rows = normalize(mapped)
 
 for r in rows:
     p = r.normalized_params
-    cat = resolve(r)
-    lcsc = cat.name if cat else '???'
+    cats = resolve(r)
+    lcsc = ' | '.join(c.name for c in cats) if cats else '???'
     print(f'{r.state.value:8} [{r.category.value:10}] {str(r.designators):30} val={p.value_str!r:10} pkg={p.package!r:15} → {lcsc}')
 "

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini