Electronic components BOM quote review: normalizing supplier replies in any format
YuanASI projects
- Industry
- Manufacturing & trade · Procurement quotes
- Stage
- Live
The electronic components BOM quote review console is an interactive demo built by YuanASI; all data is fictional sample data. It takes a messy BOM and four suppliers' replies in different formats and turns them into a traceable, approvable, exportable procurement review draft.
Scenario
A typical case: in the presales stage at an electronic components distributor, the BOMs customers send are often messy — inconsistent notation, duplicate lines, missing brands, part numbers that look like they are missing a packaging suffix. The quotes that come back are even more scattered: CSV, email bodies, JSON, with mixed currencies and tax treatments. The quoting clerk has to normalize part numbers, convert currencies and taxes, then compare MOQ, stock, lead time and qualifications. The hard part is the record: who was chosen, why the lowest price was passed over, which items are still open — all hard to recount afterwards.
How it works
| Roles | Task DAG | Tools | Model | Deployment |
|---|---|---|---|---|
| Live OMA + model API path: a team of 6 agents — 1 BOM analysis role, 4 supplier reader roles (one per reply), 1 independent evidence review role | Fixed DAG via OMA runTasks(): 5 prerequisite tasks run in parallel (BOM analysis + extraction of 4 replies); the 6th task, evidence review, explicitly dependsOn all of them. Team concurrency capped at 5, with a timeout abort for the whole round | Empty tool registry. On the model side, a Zod outputSchema constrains structured output; on the application side, a source-text evidence validator and a deterministic quote engine do the calculation and the judgement | The current implementation allows only the deepseek provider, with the model name set by an environment variable (a DeepSeek-series model; the live runtime endpoint shows which); temperature 0.1, thinking off, turn and token limits | Standalone Node + React container that pulls in the open-multi-agent core package as a pinned npm dependency; live at /demos/bom-quote-review/ with APIs under /api/demos/bom-quote-review/*, reverse-proxied by nginx. Public mode hides the upload entry and caps daily runs and concurrency per IP and site-wide |
| Offline replay path: no agents involved | Skips runTasks(); first checks that the replay bundle's hash matches the built-in sample dataset, then loads the stored extraction results | The same deterministic quote engine recalculates on this run; the UI and exports always carry the OFFLINE_REPLAY marker | Zero model calls on this run. The replay bundle shipped in the repository was captured from one real OMA + model run, and opening a replay reads that bundle directly | Same container as the main path; the user always chooses replay manually, including after the live path fails |
A scope bar stays pinned at the top of the page: sample-data demo, not connected to ERP / email / a quote database, does not contact suppliers, does not place orders automatically; the two paths are always labelled separately.
The model handles only text extraction, classification, disambiguation suggestions and evidence review; prices, exchange rates, taxes, stock, MOQ, lead time, qualifications and the recommendation ranking are controlled by deterministic code, and the model's opinions serve only as risk flags. Every model-extracted quote also goes through a source-text check: the excerpt must be a contiguous passage from the source file, contain the part number and the quoted figure, meet the confidence threshold and leave no field unresolved — otherwise it is discarded and logged as a validation issue.
Result
Open the demo and walk through all four steps directly, with no sign-up or API key:
01 Source material: read the 26-line sample BOM and the original text of four fictional supplier replies (in three formats: CSV, email body, JSON), then choose a path. The public version hides the upload entry and runs only the built-in sample test set; live runs have daily and concurrency limits, and offline replay remains available once they are used up.
02 Normalization: shows each stage — BOM parsing and ambiguity detection, parallel extraction of the four replies, independent evidence review, assembly of the review draft — along with a record of the run: mode, roles, task count, tokens, duration, number of validation issues.
03 Procurement review: expand each line to see the reasoning behind the recommendation, "why the lowest price was not taken" and the responsible party; open a candidate to see the original price, currency, tax treatment, stock, MOQ, lead time, qualifications and the line holding the source excerpt. Choices can be changed by hand or flagged for a follow-up inquiry, and every action goes into the audit log.
04 Approval and export: the owner approves, rejects or returns the draft with a note, then exports locally a customer quote draft, an internal procurement review sheet, a list of unresolved exceptions and a JSON audit log.
Normalized item counts, match status and coverage come from the current run; substitute parts are only flagged as pending engineering confirmation.
Sample data · Not a client case · Not a quote or purchasing advice · Please do not upload real documents
Sources
| Source | Link | Verified on |
|---|---|---|
| Repository home and README (MIT license) | https://github.com/YuanASI/oma-bom-quote-demo/tree/7d45765 ↗ | |
| Interactive demo page (open and run it yourself) | https://yuanasi.com/demos/bom-quote-review/ ↗ | |
| Demo index and scope statement | https://yuanasi.com/demos ↗ | |
| Runtime status endpoint: public and read-only, shows the current provider and model, whether public mode disables uploads, and the replay bundle type | https://yuanasi.com/api/demos/bom-quote-review/runtime ↗ | |
| OMA team, fixed DAG and evidence validation: server/oma-runner.ts | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/server/oma-runner.ts ↗ | |
| Role prompts and responsibility boundaries: server/prompts.ts | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/server/prompts.ts ↗ | |
| Deterministic normalization, exchange rates and taxes, risk comparison and recommendation rules: src/domain/quoteEngine.ts | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/src/domain/quoteEngine.ts ↗ | |
| The four steps and UI flow: src/App.tsx | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/src/App.tsx ↗ | |
| Public deployment limits, upload lock and no silent fallback on failure: server/app.ts, server/public-guard.ts | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/server/app.ts ↗ | |
| Offline replay hash check and marker: server/replay.ts | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/server/replay.ts ↗ | |
| Fictional sample dataset (BOM and four supplier replies): fixtures/ | https://github.com/YuanASI/oma-bom-quote-demo/tree/7d45765/fixtures ↗ | |
| Capability scope: docs/capability-boundary.md | https://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/docs/capability-boundary.md ↗ |
How this relates to YuanASI
The material on this page is an interactive demo built by YuanASI on fictional sample data; it demonstrates the workflow and the shape of the deliverable. The source code is open under the MIT license.
For a similar high-frequency workflow — inconsistent formats, clear rules, conclusions that need a record — the matching service is Custom AI Agent Development →
Related services
Last updated
Want to know how a workflow like this would land on your side?