A web-based Bill of Materials (BOM) enrichment tool that matches KiCAD BOM exports to an inventory database.
- Inventory Management: Add, edit, and delete component parts with manufacturer details
- KiCAD BOM Upload: Import BOM files via CSV or Excel format
- Smart Matching: Exact and fuzzy matching algorithms to link BOM items to inventory
- Manual Override: Fix incorrect matches with dropdown selection
- Export Options: Download enriched BOM as CSV or Excel
- Local Storage: All data persists in your browser (no server required)
- Clone or download this repository
- Open
index.htmlin any modern web browser - Click "Load Demo Data" to populate sample inventory
- Upload a KiCAD BOM CSV file
- Review matches and export enriched BOM
- Create a new repository on GitHub
- Upload all files from this project
- Go to Settings → Pages
- Under "Source", select Deploy from a branch
- Select main branch and / (root) folder
- Click Save
- Wait 2-3 minutes, then visit
https://yourusername.github.io/bom-generator/
Navigate to the Inventory tab to manage your component database:
- Add Parts: Fill in the form and click "Add Part"
- Edit Parts: Click any cell to edit inline
- Delete Parts: Click the "Delete" button
- Import/Export: Use CSV files to backup or share inventory
- Load Demo: Quick-start with 20 sample resistors and capacitors
Go to the Upload BOM tab:
- Drag and drop your KiCAD BOM CSV file, or click to browse
- Supported formats:
.csv,.xlsx,.xls - Preview the parsed data
- Click "Match to Inventory" to run the matching algorithm
On the Results tab:
- View match confidence (Exact, Fuzzy, Not Found)
- Use dropdown menus to manually correct matches
- Export as CSV or Excel
- Print or save the enriched BOM
The tool expects KiCAD BOM exports with these columns:
Qty,Reference,Value
7,TP1-TP7,TestPoint
2,SW1-SW2,Temp. Switch
24,R3-R32,330R_5W
2,R2-R20,1k_0.5WRequired Columns:
QtyorQuantity: Component quantityReferenceorRefs: Designators (e.g., R1, R2, C3)Value: Component value or part identifier
The tool uses a three-tier matching system:
- Exact Match (100% confidence): Case-insensitive, space-insensitive exact match
- Fuzzy Match (60-99% confidence): Similarity scoring using Fuse.js
- Alternative Patterns: Handles resistor shorthand (4k7 → 4.7k), unit variants (330R ↔ 330ohm), power ratings (330R_5W → 330R)
- Ctrl+S: Export results to CSV
- Ctrl+1: Switch to Inventory tab
- Ctrl+2: Switch to Upload BOM tab
- Ctrl+3: Switch to Results tab
Works in all modern browsers:
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
All data is stored locally in your browser using:
localStoragefor inventory databaseIndexedDBavailable for future expansion
Note: Clearing browser data will erase your inventory. Use the Export CSV feature to create backups.
bom-generator/
├── index.html # Main application
├── css/
│ └── styles.css # Custom styles
├── js/
│ ├── app.js # Main app logic
│ ├── inventory.js # Inventory management
│ ├── matcher.js # Fuzzy matching algorithm
│ ├── bom-parser.js # CSV/Excel parsing
│ └── export.js # Export functionality
└── data/
└── sample-inventory.json # Sample data
- Tailwind CSS 3.4: Utility-first CSS framework
- SheetJS 0.18: Excel file reading/writing
- PapaParse 5.4: CSV parsing
- Fuse.js 7.0: Fuzzy search matching
All loaded via CDN - no build step required!
MIT License - Feel free to use, modify, and distribute.
Q: My BOM items show "Not Found" A: Check that your inventory has matching part values. The matching is case-insensitive but requires close similarity.
Q: Can I use this on mobile? A: Yes! The interface is responsive and works on tablets and phones, though desktop is recommended for editing large inventories.
Q: How do I clear all data?
A: Open browser DevTools → Application → Local Storage → Delete bom-inventory and current-bom-data keys.
Q: Can multiple people share an inventory? A: Not directly with this version. Export your inventory as CSV and share the file, or consider upgrading to a version with cloud storage.
Potential features for v2.0:
- Cloud sync with Firebase
- Barcode/QR code scanning
- Price tracking from suppliers
- Stock quantity management
- Team collaboration features
- API for ERP integration
Happy BOM generating! 🔧📋