dannie.cc
BOM Price  ·  spreadsheet-first quoting

A quote desk
that feels like
a spreadsheet.

Turn messy spreadsheets into purchase-ready BOMs. Normalize manufacturers, catch risky part numbers, compare supplier offers, and plan buy quantities around the stock you already have.

CSV · XLSX · XLS

Drop BOM or choose file

Upload
XLSX / CSV · Fully Editable · Multiple BOMs · Fast Quote · No Signup
Customer_BOM_rev3.xlsx
4 issues 12 rows
B3 | 497-6063-1-ND ⚠ Distributor SKU — needs real MPN
MPN RefDes Qty Supplier Unit Price Stock Status
1 STM32F405RGT6 U1 1 Mouser $7.42 4,820 ✓ priced
2 RC0603FR-0710KL R1–R5 1 Qty mismatch
3 497-6063-1-ND U7 1 needs MPN
4 GRM155R71C104KA88D C1, C2, C3 3 DigiKey $0.012 82,000 ✓ priced
5 LM358DR U3 1 DNP — skipped
Fast Quote 2 priced · 2 need review · 1 DNP skipped
MOQ Price tiers Lead time RoHS
01
10,000+
manufacturer aliases

Resolves "ST Micro" and "STM" to canonical names. Acquisitions surfaced, not silently folded.

02
30+
validation rules per row

Missing MPNs, RefDes count mismatch, DNP marker extraction, distributor SKUs posing as MPNs, lifecycle warnings, and category inference.

03
Fast Quote
pricing lookup

See multiple supplier offers per part. Switch between distributors instantly, compare stock and lead times, and pick the best fit for your run.

One row, five fixes

Here is what the normalizer actually does.

A single row from a messy customer BOM — a missing MPN, a buried DNP marker, a distributor SKU pretending to be a manufacturer part, a RefDes range, a vendor-abbreviated manufacturer name. Nothing is silently rewritten.

Designator
Manufacturer
MPN
Category
Lifecycle
Qty
Before
R1–R3
ST Micro
497-6063-1-ND
uncategorized
3
↓ pass
one pass · 30+ rules · 10k aliases
After
R1, R2, R3 ↑ expanded
STMicroelectronics ↑ aliased
STM32F405RGT6 ↑ resolved
IC ↑ inferred
Active ↑ detected
3

No ML. No confidence scores. A correction either matches a rule or the row is flagged for your decision.

Workflow

From raw spreadsheet
to quoted BOM.

  1. 01

    Drop the file

    Upload a BOM, review the detected columns, and start from the file your team already uses. No template rewrite before cleanup.

  2. 02

    Clean the grid

    Clear validation errors in real-time as you edit cells. RefDes ranges expand, DNP rows separate, distributor SKUs are flagged.

  3. 03

    Quote, compare, and buy

    Click Fast Quote when the buyable rows are ready. DNP, missing-MPN, invalid-quantity, and uncategorized rows stay out of the request so procurement reviews only the parts that can actually be priced.

Procurement-aware table

Engineering quantity in.
Purchasing quantity out.

The BOM grid does not stop at “what this design consumes.” Set Board Quantity once, subtract on-hand stock, respect MOQ and pack size, and see the quantity purchasing actually needs to buy.

Buy Qty

What you actually order

Smart math that respects your stock. If you have enough on hand, you don't buy. When you do need parts, MOQ, pack size, and manual buy-quantity overrides stay visible.

Supplier Alternatives

Don't settle for the first price

See top offers from multiple distributors, compare stock and lead times, and pick the best fit for your run. Switch suppliers with one click.

Buy Total

What cash-out looks like

You can keep engineering cost and purchasing cost in the same view: Ext Price for consumed material, Buy Total for what purchasing has to pay today.

Quiet until useful

Quote columns open when they matter

Supplier, currency, lead time, Ext Qty, Buy Qty, and Buy Total stay out of the way until the settings or quote data make them useful. Then they appear with real values, not placeholders.

Table behavior

Explicit enough for buyers.
Familiar enough for engineers.

Editable grid

You can override supplier, unit price, manufacturer, notes, quantity, and row currency directly in the table. The page behaves like a spreadsheet, not a wizard.

Find and focus

Search the table without losing the bigger issue count. Buyers can narrow the view to one manufacturer, MPN, or note while the full BOM health stays visible.

Table setup

Hide columns, review detected mappings, and bring quote columns forward only when they are useful. The workspace adapts to review, sourcing, and purchasing moments.

Quote stays honest

When price-driving inputs change, the table tells you the quote needs a refresh. Existing numbers stay visible, but procurement knows when they are no longer current.

Currency guardrails

Row-level currency stays editable, while display currency only opens when priced rows can convert cleanly. Totals stay useful instead of becoming mixed-currency noise.

Clean outputs

Export the cleaned BOM, sourcing-ready files, and an audit-friendly record of what changed so the handoff to purchasing does not depend on screenshots.

Draft continuity

Saved drafts keep the working context that matters: quote values, hidden columns, board quantity, stock planning, issue decisions, and the audit trail of what changed.

Issue drawer

Errors and warnings stay beside the grid. Fix what can be fixed, acknowledge what has been reviewed, and keep the sourcing conversation tied to the exact row.

Rule library

The checks behind the spreadsheet.

Every pass applies a fixed BOM rule library. Some rules clean the row quietly; others raise a visible issue you can resolve in the grid. No ML, no guessing, no "confidence score".

Clean 01 · T11

Manufacturer aliasing

Legacy names and abbreviations map to one canonical name. Crucial for reliable pricing across distributors.

ST Micro STMicroelectronics
NXP Semi. NXP Semiconductors
Clean 02 · V13

RefDes range expansion

Ranges are expanded and checked against the quantity column. Mismatches are flagged immediately.

R1–R3 R1, R2, R3
C1..C8 C1, C2 … C8
Clean 03 · V19

DNP / NP extraction

Do-Not-Populate markers buried in descriptions are extracted so they don't corrupt quoting or inflate quantities.

MCU, 32-bit, DNP MCU, 32-bit + dnp: true
(NP) 10k 0603 10k 0603 + dnp: true
Quote blocker · T2

Missing MPN

Rows without a manufacturer part number can be cleaned, but they cannot be priced reliably until an MPN is supplied.

empty MPN → needs manufacturer P/N
Quote blocker · V27

Unidentifiable row

If a row has neither an MPN nor a usable description, the tool marks it as impossible to identify.

blank MPN + blank description → cannot identify
Quote blocker · V26

Missing or zero quantity

A BOM line needs a quantity greater than zero before it can be counted, checked against RefDes, or sent for pricing.

Qty blank / 0 → fix quantity
Validation · V3

Quantity vs RefDes count

Expanded designators are counted and compared to the quantity column so placement counts do not drift.

R1–R4 + Qty 3 → mismatch
Validation · V18

Duplicate RefDes

The same placement designator cannot appear on two rows. Duplicates are surfaced before assembly data is trusted, but the tool leaves the final keep/remove decision to you.

R12 on two rows → duplicate
Validation · V3B

RefDes required for PCB parts

Resistors, capacitors, ICs, connectors, and other board-placed parts need a placement reference unless marked DNP.

Capacitor + no RefDes → needs designator
Validation · V5/V6

RefDes belongs only where it should

Continuous material and sub-assembly rows should not carry PCB placement designators meant for board parts.

Cable / adhesive + RefDes → review row type
Validation · V2/V4/V16

Quantity shape and units

Piece-count parts need whole-number quantities; continuous rows need a positive quantity and a real unit such as meters or liters.

0.5 pcs / blank UoM → review quantity
Clean 04 · V20

Unit-of-measure cleanup

Common unit labels are canonicalized so `pcs`, `piece`, `ea`, and local units read consistently in the grid.

шт / ea / pieces → PCS
Validation · V17/V21

RefDes prefix sanity

Prefixes are compared with category clues so resistor rows do not quietly carry capacitor or connector designators.

C12 on resistor row → category conflict
Validation · V17B/V24/V25

Package and category checks

Package fields are checked against category and canonical part data, so SOT-23 on a capacitor row stands out.

missing / mismatched footprint → review package
Validation · V22

Description vs MPN mismatch

When a matched part description disagrees with the user-provided row description, the row is flagged for review.

TVS description + resistor MPN → review
Lifecycle · T3/T4/T5

Lifecycle warnings

Obsolete, end-of-life, and not-recommended-for-new-design statuses are highlighted before the part reaches purchasing.

EOL / NRND / obsolete → sourcing review
Validation · T6

Duplicate MPN rows

The same manufacturer part appearing on multiple lines is flagged as a consolidation candidate.

same MPN + manufacturer → consolidate?
Signal · T9

Manufacturer acquisition signal

Acquired or rebranded manufacturer names are surfaced so sourcing and datasheet history do not disappear.

Cypress → Infineon note
Import · M1

Column mapping review

When headers are guessed from messy exports, the page asks you to verify that MPN, manufacturer, quantity, and RefDes landed correctly.

P/N / Qty / Designator → mapped columns
Validation · V21

Mixed RefDes classes

A single row should contain one part type. Mixed designator classes (e.g. R1, C3, U7 on the same line) are flagged for review.

R1, C3, U7 on one row → mixed class
Validation · V24

Package / footprint missing

Package or footprint not declared and cannot be inferred from canonical part data. Assembly planning needs this information.

IC + no package → declare footprint
Quote blocker · SKU patterns

Distributor-SKU detection

SKUs posing as MPNs are detected and flagged. A real MPN is needed for accurate cross-supplier pricing.

497-6063-1-ND needs MPN (Digi-Key SKU)
C25804 needs MPN (LCSC code)
Reference tables

What the rules look up.

These are the static dictionaries behind the checks: aliases, RefDes prefixes, category signatures, DNP phrases, unit labels, lifecycle words, and spreadsheet header names.

Manufacturer aliases

TI, ST Micro, STM, NXP Semi, Freescale, Cypress, Maxim, Dialog, IR, AVX, and other common brand variants.

RefDes prefixes

R, C, L, D, LED, U, Q, J, P, Y, X, FB, TP, F, S, SW, MOD, and MP category hints.

Category signatures

MPN and description patterns for resistors, capacitors, ICs, diodes, transistors, connectors, crystals, fuses, switches, and more.

DNP phrases

DNP, DNI, DNF, DNL, Do Not Populate, Do Not Install, Do Not Fit, No Pop, remove, unmount, and related markers.

Unit aliases

pcs, pc, each, ea, piece, pieces, шт, meter/metre, m, liter/litre, ml, set, kit, assembly, and local variants.

Lifecycle words

active, production, mature, stable, NRND, last-time-buy, EOL, discontinued, obsolete, and supplier status variants.

Header aliases

MPN, part number, P/N, manufacturer, qty, designator, description, footprint, package, unit price, currency, lead time, notes, and DNP columns.

String cleanup

Zero-width characters, dash variants, and accidental internal whitespace are normalized before rule checks run.

Range limits

RefDes ranges expand predictable spans while pathological ranges stay safe and visible for review.

Fast Quote

What it writes back into your rows.

Fast Quote needs a real manufacturer part number and a nonzero quantity. DNP rows are skipped automatically. Sign in with a verified account to launch a quote and keep the request attached to a saved BOM while supplier prices come back.

Real MPN + nonzero Qty = eligible for Fast Quote
Description-only rows cannot be quoted
DNP rows are skipped, not quoted
No silent alternates — you control the BOM
Verified accounts can save the draft and keep quote progress in one place
Field Written back to your row
Supplier Distributor name (Mouser, DigiKey, etc.)
Unit Price Price at your quantity break
Currency USD, EUR, GBP as returned
Stock Available inventory at time of query
MOQ Minimum order quantity
SPQ Standard pack quantity
Price Tiers Full break-price table
Lead Time Weeks to ship from distributor
RoHS Compliance status where available
Lifecycle Active / NRND / EOL status
Distributor PN Distributor's own part number
Manufacturer Canonical manufacturer name
Boundaries

What it
doesn't do.

Honest tool boundaries. If you need automatic part swapping, you want an engineering team, not an automated normalizer.

No silent alternates
It will not swap out a part for an "equivalent" without you knowing. You control the BOM.
No description-only quoting
Fast Quote needs a real MPN; it cannot guess pricing from generic "10k resistor" descriptions.
Privacy first
Basic cleaning requires no account. Saved drafts only store data when explicitly requested by you.
No automatic purchase
Pricing is informational. You still need to review stock, MOQ, and lifecycle data before placing a PO.
Ready to clean your BOM?

Fix the issues.
Get a fast quotation.

No account required to start cleaning. Saved drafts and Fast Quote are available once signed in.

Upload your BOM