A production-style data engineering workflow to standardize Dutch electrical article descriptions and extract OEM part numbers for cross-reference use.
This repository provides a practical, auditable pipeline for OEM extraction from semi-structured product descriptions. It combines deterministic normalization rules, manufacturer-specific parsing logic, and optional no-account web enrichment for unresolved candidates.
- Description standardization (uppercase, whitespace cleanup, token normalization)
- OEM extraction with manufacturer-aware rules (LAPP/UNITRONIC, HELU, MOLEX/TE/JST)
- Explicit exclusion of standards and UL style numbers to reduce false positives
- Confidence scoring (
Hoog,Medium,Laag) - External lookup artifact generation for additional enrichment
- Account-free fallback enrichment from public search pages
data/input: private source workbooks (excluded from public git)data/output: generated analysis workbooks (excluded from public git)data/output/reports: text summaries and metricsdata/output/external-lookups: CSV artifacts for external enrichmentscripts: reproducible pipeline scriptsdocs: documentation
This repository is prepared for public sharing.
- Real input/output datasets are ignored by git.
- Use synthetic demo files for showcasing and testing.
- Generate demo files with:
python scripts/create_demo_data.py
- The main pipeline automatically falls back to demo files when private input files are not present.
See docs/PUBLIC_SAFE_RELEASE.md for details.
- Normalize text:
- Convert to uppercase
- Trim leading/trailing whitespace
- Collapse duplicate spaces
- Replace known shorthand (
GRS->GRIJS,ZT->ZWART)
- Extract OEM candidates with prioritized rules:
- LAPP/UNITRONIC patterns (7-8 digits, often
00/01prefixes) - HELU patterns (5-6 digits with HELU context)
- Connector patterns (for MOLEX/TE/JST contexts)
- General patterns (parentheses and end-of-line 5-8 digit numbers)
- LAPP/UNITRONIC patterns (7-8 digits, often
- Exclude known non-OEM numbers:
- DIN/ISO/UL-style exclusions:
47100,43650,1015,1007,1569,2464,1061
- DIN/ISO/UL-style exclusions:
- Assign confidence and record extraction source.
- Create environment and install dependencies:
python -m pip install -r requirements.txt
- Optional: generate synthetic demo input files:
python scripts/create_demo_data.py
- Build V2 core analysis:
python scripts/build_oem_analysis_v2.py
- Run no-account web enrichment:
python scripts/no_account_enrichment.py
- Merge enrichment into final workbook:
python scripts/merge_no_account_results.py
data/output/Cross_Reference_OEM_Analyse_V2.xlsxdata/output/Cross_Reference_OEM_Analyse_V2_Uitgebreid.xlsxdata/output/Cross_Reference_OEM_Analyse_V3_NoAccount.xlsxdata/output/reports/Cross_Reference_OEM_Analyse_V2_Samenvatting.txt
- Account-free enrichment improves coverage but should be treated as
Mediumconfidence unless confirmed against official manufacturer/distributor sources. - For release-grade validation, add authenticated API checks where available.
MIT License. See LICENSE.