← Back to cases
Published: Updated: Compiled by YuanASIBOM quote reviewelectronic components sourcingmulti-agent orchestrationopen-multi-agentinteractive demo

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

RolesTask DAGToolsModelDeployment
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 roleFixed 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 roundEmpty 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 judgementThe 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 limitsStandalone 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 involvedSkips runTasks(); first checks that the replay bundle's hash matches the built-in sample dataset, then loads the stored extraction resultsThe same deterministic quote engine recalculates on this run; the UI and exports always carry the OFFLINE_REPLAY markerZero 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 directlySame 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

SourceLinkVerified 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 statementhttps://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 typehttps://yuanasi.com/api/demos/bom-quote-review/runtime
OMA team, fixed DAG and evidence validation: server/oma-runner.tshttps://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/server/oma-runner.ts
Role prompts and responsibility boundaries: server/prompts.tshttps://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.tshttps://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/src/domain/quoteEngine.ts
The four steps and UI flow: src/App.tsxhttps://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.tshttps://github.com/YuanASI/oma-bom-quote-demo/blob/7d45765/server/app.ts
Offline replay hash check and marker: server/replay.tshttps://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.mdhttps://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

Last updated

Want to know how a workflow like this would land on your side?