Bomer – deterministic BoM analysis and optimization engine
Project description
Bomer
Bomer is a small, deterministic Bill of Materials (BoM) analysis and optimization engine.
It is designed for electronics and component teams who need repeatable, automation-friendly analysis on real BoMs – not just one-off LLM chat sessions.
Bomer is currently in an early CLI-focused phase (v0.1.x) and lives inside this repository (originally named BOMnet).
Features
Current capabilities (v0.1):
-
CLI-first workflow
bomer analyzetakes a BoM CSV and supplier JSON and produces structured outputs. -
Canonical BoM normalization
Maps common column variations (e.g.mpn,Mfr Part #) into canonical fields likePartNumber,Manufacturer,Description,Quantity. -
Deterministic optimization
Aggregates duplicate parts, sums quantities, and produces a cleanoptimized_bom.csv. -
Cost analysis
Joins the BoM with supplier pricing data and computes:- per-line
UnitPriceandLineCost total_cost- list of parts with missing prices
- per-line
-
Basic risk scoring
Simple risk model based on:- single-sourced parts
- missing prices
- lifecycle status (e.g.
Obsolete/EOL)
-
Structured outputs
Generates machine- and human-readable artifacts:normalized_bom.csvoptimized_bom.csvanalysis.jsonissues.jsonsummary.txt
LLM-assisted normalization and alternative component suggestions are planned for later versions.
Installation
Bomer is a Python package located inside this repo.
Prerequisites:
- Python 3.9+
pipavailable- Optional: a virtual environment (recommended)
git clone https://github.com/emreyesilyurt/BOMnet.git
cd BOMnet
# Optional: create a virtualenv
python3 -m venv .venv
source .venv/bin/activate # on macOS / Linux
# .venv\Scripts\activate # on Windows
# Install in editable (dev) mode
pip install -e .
If installation succeeds, you should have a bomer CLI on your PATH:
which bomer # or: where bomer on Windows
Quick Start
1. Project layout (relevant parts)
.
├── bomer.yaml # Optional configuration (cost/risk weights, supplier path)
├── data/
│ ├── sample_bom.csv # Example BoM
│ └── suppliers.json # Example supplier price data
├── src/
│ └── bomer/
│ ├── cli.py # CLI entrypoint: `bomer analyze`
│ ├── core/ # Config, loading, schema/validation
│ ├── engines/ # Cost, risk, optimization
│ └── reporting/ # Writers for CSV/JSON/text outputs
└── output/ # Created when you run analyses (ignored by git)
2. Basic usage
bomer analyze --bom data/sample_bom.csv --suppliers data/suppliers.json --output-dir output
Arguments:
--bom: path to a BoM CSV--suppliers: path to suppliers JSON--output-dir: directory for generated artifacts (default:./output)
Inputs
BoM CSV
Expected columns:
PartNumber/MPN/Mfr Part #Quantity/Qty
Optional:
ManufacturerDescriptionLifecycleStatusRoHS
Outputs
Generated artifacts:
normalized_bom.csvoptimized_bom.csvanalysis.jsonissues.jsonsummary.txt
Configuration (bomer.yaml)
suppliers:
path: data/suppliers.json
cost:
currency: USD
default_volume: 1000
risk:
single_source_weight: 0.4
missing_price_weight: 0.3
lifecycle_weight: 0.3
Contributing
- Clone repo
- Create virtual env
- Install with
pip install -e . - Run tests with
pytest
Guidelines:
- Keep functions modular and testable
- Deterministic engines should stay deterministic
- Update documentation when adding new commands or outputs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bomer-0.1.1.tar.gz.
File metadata
- Download URL: bomer-0.1.1.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
803ece9a4bf8b6ced20daf1b076ea8ace481d7a0faa700b1be34544f27e4f3a1
|
|
| MD5 |
5cf254b76ffd0bf4facb0dbc3a12eebd
|
|
| BLAKE2b-256 |
7761540bb9ebd088e8fc203ff2df967bd8547dd9aaf8e63bd78137f28d5118d1
|
File details
Details for the file bomer-0.1.1-py3-none-any.whl.
File metadata
- Download URL: bomer-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
810b10d5164e29ef2c0687e182991f28a596dea79ed106cf24e2bbfb5ec9eb4c
|
|
| MD5 |
08af8eaac423fc07a05daf1279f4b9a9
|
|
| BLAKE2b-256 |
f1426588ee8ad9091238dd01e642daf6a1c94e3df3c94e051a9db1e2b5ea14e3
|