Close

A "complete" BOM?

A project log for Kit Space

An site to share buildable kits

kaspar-emanuelKaspar Emanuel 05/25/2016 at 19:080 Comments

Over the years of developing the 1-click BOM (bill of materials) extension and starting out with the Kitnic.it site I have spent a lot of time thinking about the ideal format for the BOM of a project.


BOMs can have different purposes and our focus here is prototype and hobby projects. While it's important to think about what is needed on the BOM when something goes to manufacture (like Bunnie Huang does in this excellent blog post) we also want to keep things as simple and flexible as possible as we are still amending and adding to our BOM. We want a strong informative core of our BOM that can be used to expand upon later.


Ours is an electronics parts BOM, so no plastics or PCBs will be included. The bare minimum BOM needs just 3 columns really:

ReferencesQuantityDescription





The references and quantity fields tie your parts to the project. The references are the references used in the schematic and can tell you at any point what this parts purpose is in your project. Quantity could technically be derived from the reference but let's keep things simple (sometimes you could have multiple references for a single package like a dual transistor for instance could be labelled Q1 and Q2).

The description field could tell you everything else but sometimes it makes more sense just to name the manufacturer part number as this will tell you a lot more and much more precisely.

ReferencesQtyDescriptionPart Number
C111uF 0603 X5R
C2110uF 0603 X5R
D111N4148WS
Q11IRF7309PBF
R1110k 0603
R2, R42100k 0603
R31300k 0603
SW114-1437565-1

The 1-click BOM extension can help you expand upon a minimal BOM like above turning it into a more complete BOM.

If you run the above through 1-click BOM's auto-complete feature, it will currently search Octopart and Findchips for you and give you something like below.

References Qty Description Manufacturer MPN Digikey Mouser RS Newark Farnell
C1 1 1uF 0603 X5R AVX 0603ZD105KAT2A 478-1251-1-ND 0603YD105MAT2A 9040215 95W9118 1327684
C2 1 10uF 0603 X5R AVX 06034D106MAT2A 478-5718-1-ND C1608X5R0J106K080AB 7882887 04X3243 2211164
D1 1

1N4148WS 1N4148WSFSCT-ND 1N4148WSG308 7384737 74M5710 2453269
Q1 1

IRF7309PBF IRF7309PBFTR-ND IRF7309PBF 5429377 19K8239 9102175
R1 1 10k 0603 AVX NB21K00103JBB 490-2436-1-ND 0603YC473KAT4A 6197740 33P7715 2502397
R2,R4 2 100k 0603 AVX NB21N50104JBB 478-3670-1-ND 0603YA100KAT2A 8133568 33P7726 2332633
R3 1 300k 0603 Multicomp MCMR06X304 JTL 541-300KHCT-ND ERJPA3F3003V 8626899 65T8626 2073466
SW1 1

TE Connectivity 4-1437565-1 450-1129-ND 414375651 4791508 93K3887 3801305

Pretty neat, huh? Now this won't always work as well as that, and all these parts do need to be checked over but we have a lot of plans to help improve the results of this feature and take the chore out of making a "complete" BOM.

The "complete" BOM not only allows others to buy parts from their preferred retailers but will also help you in the future if a part you need is out of stock on at your retailer. Filling in the manufacturer and manufacturer part number (MPN) fields makes this BOM future proof and clearly defines the component you want to use without tying it to any retailer stock number.

If a BOM is complete and has parts for all retailers the project's Kitnic page will be adorned with some lovely green buttons like below.

If not all parts are specified for a retailer the button will use a warning red color or, if no parts are specified, it will even disable itself greying itself out.

On hover a red button will show you tooltip telling you how many parts are missing if you go for this retailer. You can check the BOM below these buttons on the page to see exactly which part, the missing fields will are also marked red.

There is a lot I still want to cover regarding BOMs and the conventions people use, how we decided on tabs vs comma (surely, the flame-war fodder of the data science world) and how to better incorporate generic parts and multiple sources into a BOM format. and I could talk about BOMs for days but I will stop with this entry here. To be continued for sure.

If you have strong opinions with sound reasons on BOM conventions please let us know. We are happy to discuss issues and develop and adapt our formats accordingly. There is already some lively discussion on a GitHub issue on this very matter.

Discussions