MakerWorld BOM to McMaster Matcher
Rule-based MakerWorld β McMaster matcher: 41 fastener categories, length verification, monthly taxonomy crawl, enrich/pricing, and CSV export.

Project focus
Key Features
Scope of work
Build a focused BOM hygiene tool for 3D-print projects: paste a MakerWorld model URL, extract embedded, description, and spreadsheet hardware lists, and produce an editable table with McMaster-Carr product or search links.
Core constraints from day one:
- No LLM matching β rule-based parsers and deterministic tier resolution only
- Honest uncertainty β low-confidence rows stay visible for human verification
- Notebook-first development β pipeline stages prototyped in Jupyter before promotion to FastAPI services
- Scoped MVP β in-memory projects, CSV export, no checkout or ERP integration
Out of scope: multi-vendor procurement, automatic McMaster ordering, hosted third-party McMaster APIs as default path.
Timeline
| Phase | Window | Milestone |
|---|---|---|
| Scaffold | Jun 2026 | FastAPI + React + Jupyter dev stack (scripts/dev.sh) |
| MakerWorld ingest | Jun 2026 | Embedded BOM, description parser, CSV/XLSX attachments |
| McMaster linking | Jun 2026 | Offline tiers + filtered browse URLs |
| Verification | Jun 2026 | hardware_match_verify for diameter and bolt length |
| Editor MVP | Jun 2026 | TanStack table, confidence badges, CSV export |
| Browse + matcher maturity | JunβJul 2026 | In-house browse; nuts/washers; imperial; 41 categories |
| Taxonomy + enrich UX | Jul 2026 | Monthly crawl workflow; pricing tab; feedback dispatch |
Stack & BOM (software)
| Layer | Components |
|---|---|
| Backend | FastAPI, Pydantic, httpx, optional Playwright |
| Matching | Catalog JSON, category router, hardware_spec.py, structured guesses |
| Data | Taxonomy crawl, metacategories, monthly GitHub Actions refresh |
| Frontend | React, shadcn/ui, Tailwind CSS, TanStack Table, pricing + report-error |
| Dev | JupyterLab notebooks 01β06, pytest (350+ offline), GitHub Actions |
Deliverables
- Public GitHub repository (makemcmasterBOM)
- Shared pipeline entry points for notebooks and API
- Post-match fastener length and size verification (metric + imperial)
- Duplicate merge + description-BOM priority when section labeled
- Rate limiting for MakerWorld scrape politeness
- Monthly McMaster taxonomy crawl (Fastening & Joining)
- Match-error feedback dispatch (optional email / GitHub / webhook)
- Persistent project storage (roadmap)
- Public-deploy security hardening (strict URL host checks, API auth)
Outcomes
- Turns MakerWorld hardware prose into purchasable McMaster links without probabilistic guessing
- Documents why filtered browse URLs beat wrong catalog SKUs when thread length matters
- Keeps category maps fresh via monthly polite crawl, not per-import scrapes
- Keeps legal surface small: server-side scraping, throttled outbound HTTP, optional API/enrich gated by env flags
Operational constraints
- MakerWorld pages fetched server-side only; browser never scrapes directly
- McMaster browse resolve and B2B API disabled by default in CI
- Explicit description BOM sections win over embedded supply when both exist
- Duplicate rows merged on
(name, quantity); wording variants may still appear twice until normalization improves
Build log & narrative
Scope, timeline, and BOM live here. For decisions, debugging stories, and longer context, read the related blog post.
Read the blog post