Skip to main content

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 analyze takes 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 like PartNumber, Manufacturer, Description, Quantity.

  • Deterministic optimization
    Aggregates duplicate parts, sums quantities, and produces a clean optimized_bom.csv.

  • Cost analysis
    Joins the BoM with supplier pricing data and computes:

    • per-line UnitPrice and LineCost
    • total_cost
    • list of parts with missing prices
  • 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.csv
    • optimized_bom.csv
    • analysis.json
    • issues.json
    • summary.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+
  • pip available
  • 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:

  • Manufacturer
  • Description
  • LifecycleStatus
  • RoHS

Outputs

Generated artifacts:

  • normalized_bom.csv
  • optimized_bom.csv
  • analysis.json
  • issues.json
  • summary.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

  1. Clone repo
  2. Create virtual env
  3. Install with pip install -e .
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bomer-0.1.1.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bomer-0.1.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

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

Hashes for bomer-0.1.1.tar.gz
Algorithm Hash digest
SHA256 803ece9a4bf8b6ced20daf1b076ea8ace481d7a0faa700b1be34544f27e4f3a1
MD5 5cf254b76ffd0bf4facb0dbc3a12eebd
BLAKE2b-256 7761540bb9ebd088e8fc203ff2df967bd8547dd9aaf8e63bd78137f28d5118d1

See more details on using hashes here.

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

Hashes for bomer-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 810b10d5164e29ef2c0687e182991f28a596dea79ed106cf24e2bbfb5ec9eb4c
MD5 08af8eaac423fc07a05daf1279f4b9a9
BLAKE2b-256 f1426588ee8ad9091238dd01e642daf6a1c94e3df3c94e051a9db1e2b5ea14e3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page