Creating and Optimizing a Bill of Materials


A brief introduction to the BOM (Bill of Materials)

Every hardware project, whether it's a simple prototype or production-ready design, has a Bill of Materials (BOM). Just because you haven't written it down yet doesn't mean that it's not important--your BOM is critical to effectively organizing and communicating the details of your project to anyone who doesn't share your brain.

There are already a lot of great articles on the web on how to build and optimize a BOM. My goal for this particular post, though, is to go beyond the basic (but important!) notes on organization to touch on some tips that will help to improve communication, decrease costs, and prevent poor design decisions along the path from prototype to production-ready hardware.

Sourcing a simple part like a "button" or "connector" still requires a half dozen specifications.

Sourcing a simple part like a "button" or "connector" still requires a half dozen specifications.

1. Be thorough.

This is a loudly prescribed but infrequently followed piece of advice advice when it comes to preliminary BOMs. Remember--someone who has never seen your design files before, and who maybe doesn't even speak your native language needs to be able to use your BOM, along with other design documents, to recreate your hardware from scratch. If they can't do that, then the failure is with your documentation, not with your contract manufacturer's creative thinking.

A lot of BOMs originate from a CSV export from whatever CAD tool you're using to design your PCBs. At Spark, we use EAGLE--here's an example of a partslist export from EAGLE for the Spark Core.

The above is an automatic partslist export from Eagle.

The above is an automatic partslist export from Eagle.

There's a lot of good info in there, but a lot of the fields (library, position, orientation) are unimportant at this stage. Furthermore, the "value" field seems to be a mix of part numbers, descriptions, and component specifications. It's hardly a starting point for building a prototype, and entirely insufficient for requesting a quotation from your contract manufacturer. The part numbers are incomplete, there are no manufacturer names, and no specifications to help guide the engineer sourcing parts for your project. Thus, the next step is to review and add in your own specifications.

At Spark, all of our BOMs have the following fields:


It can take hours of work and research to transition even a simple project from a partslist export to a production-grade BOM (template here) but it's extremely important. Here are some examples of common issues/questions you may get when you have an incomplete bill of materials:

  • What's the % tolerance on your resistors?
  • What's the maximum voltage requirement for your capacitors?
  • What's the pitch (inches/mm) on your headers?
  • What's the complete part number? Do you want tube, tray, cut tape, or tape & reel packaging?
  • How are you packaging your product--are the packaging materials already on the BOM? Are they really ? Even the stickers?
  • Are your designators sequential? Why do I see C1-4, then C6 without a C5?

For more great tips on creating a thorough BOM, I'd recommend checking out Bunnie Huang's excellent post, "The Quotation (or, How to Make a BOM)".

2. Communicate flexibility.

This manufacturable BOM uses a color coding system to help communicate flexibility.

This manufacturable BOM uses a color coding system to help communicate flexibility.

Looking down upon you, the reader, from my high horse, I can guess what you're thinking:

Why do I have to research and transcribe an approved manufacturer and P/N for every little resistor and capacitor on my BOM? I don't really care who makes it. This is a waste of my time.

Fair enough. However, there's a better option than ambiguity to communicate flexibility in your BOM, and remember that it's usually ambiguity that leads to thousands of dollars worth of wrong parts in your manufacturer's warehouse.

At Spark, we use a four-color system when iterating with our contract manufacturer to communicate design flexibility during the prototyping and quotation process:

  1. Blue fields indicate consigned parts that our contract manufacturer can ignore from a sourcing perspective.

  2. Green fields indicate parts that are critical to the PCB design. For these parts, the approved vendor list (AVL) and P/N must be followed exactly, without substitution or modification.

  3. Yellow fields indicate parts that are important to the PCB design, but for which alternate parts with the same specifications and pinout may be acceptable.

  4. Red fields indicate non-critical components--usually things like generic capacitors and resistors. For these parts, the specifications should be honored, but the manufacturer and part number should be optimized for local availability and cost.

This probably isn't the only or best system out there, but that's not what's important. Regardless of how you do it, communicating flexibility in your BOM can help you prevent sourcing mistakes and decrease production costs by leveraging the sourcing expertise of your contract manufacturer.

3. Validate availability.

Brett validated availability before he made this prototype of the Spark Electron.

Brett validated availability before he made this prototype of the Spark Electron.

It's always a good idea to do a quick gut check to make sure that the parts on your BOM

  1. Exist
  2. Are easily and cost-effectively attainable by you, your sourcing agent, or your contract manufacturer.

The easiest way to do this is to spend a couple minutes per part running searches on any of a number of electronic component distributor websites. Don't know where to start? Here are a few to get you going:

  • Digikey has a great catalogue of components and, most importantly, a great parametric search that lets you identify the right part and commonly available specifications.
  • Octopart. Want to search all the sites? Octopart is a great tool if you're trying to gut check average price among many distributors and identify common MOQs.
  • Taobao is a unbelievably useful tool for identifying availability and approximate price of components in China, if you're planning to manufacture overseas. Yes, it's in Chinese, but component part numbers are an international language. Google chrome with autotranslate also helps :-)

This step is hugely important because without validating availability, you might unknowingly corner yourself into expensive or costly design decisions down the road.

A great real life example of this occurred recently at Spark. If you search DigiKey for 10uF, 0603 ceramic capacitors in tape and reel packing (in stock), you get over 50 unique components with prices starting as low as a penny or two. If you do the same search for a smaller 0402 package instead of 0603, you get a much different result--only a few unique components, with an average price of $0.10 or so. The only difference between these parts is size--they otherwise have the same electrical properties and tolerances. You might choose an 0402 part instead of a 0603 part if your design is crunched for space, but we had plenty of room to spare.

The lesson learned was that capacitors over 10uF in the smaller 0402 form factors are more difficult to manufacture, more challenging to source, and more expensive as a result. We had arbitrarily specified an 0402 package size to match the other passive components on our PCB during the design process, but hadn't checked to see if that part was widely available from our target distributors. Had we not corrected the mistake, the cost impact on our BOM for four capacitors would have been nearly $0.50 (that's a lot for capacitors!) instead of a penny or two in total for equally acceptable Chinese substitutes available in the larger 0603 size.

4. Document iteration.

Example changelog for the first generation of the Spark shields and Maker Kit.

Example changelog for the first generation of the Spark shields and Maker Kit.

Throughout the transition from prototype to production, your BOM will change, and that's OK. Document your changes, though, or your colleagues and manufacturing partners will get lost in the shuffle.

  • Version Documents. Use a structured filename that allows your computer to sort easily by date. Something like bom-project-yymmdd-editor is probably good enough. Be more specific if you like!

  • Revision history. It is oftentimes convenient to use collaboration tools with infinite revision histories, in case you want to review, edit, or undo changes on a BOM. At Spark, we've had positive experiences with Google Sheets, Dropbox, and even Github in the past.

  • Keep a changelog. Even if you're using a tool that has an unlimited and granular revision history, you should keep a changelog. A changelog is a change-by-change journal of sorts that lives as a separate sheet in the back of your BOM to help define incremental differences between versions of the document.

The benefits of changelogs are that they document why a change was made in addition to just what change was made, they're persistant across the lifetime of the BOM, and can survive an export to Excel for sending to your contract manufacturer.

Here's a template of Spark's BOM changelog, if you want to see an example or steal ours directly.

You can do it!

Although they're far from sexy, a complete and clear bill of materials is an extremely important first step towards a production-ready design. In hardware, the impact of every small oversight tends to grow by orders of magnitude the later they're discovered, so believe that the work you put into your BOM will save you heartache and, more importantly, Benjamins, down the road.

Our sourcing agent in Shenzhen is happy because I provided her with a clear BOM.

Our sourcing agent in Shenzhen is happy because I provided her with a clear BOM.