Tools & workflow
When Does a Hardware Project Outgrow a Spreadsheet?
Five stages, and the specific thing that breaks at each one. The four structural limits behind all of them, the cheap fixes first, and what to move if you move.
# When a Spreadsheet Stops Being Enough for Hardware BOM Management
A spreadsheet is an excellent tool for a bill of materials.
It is fast, flexible, universally readable, and requires almost no training. Suppliers, EMS providers, and manufacturers are comfortable working with XLSX and CSV files, and large engineering organisations still use spreadsheets for plenty of perfectly valid tasks.
So the useful question is not:
Should we stop using spreadsheets for BOMs?
It is:
At what point does maintaining the relationships between BOMs, components, revisions, and products become harder than maintaining the table itself?
That point usually arrives gradually.
Stage 1 — One board, one person
You have one board and one BOM:
RefDes | Qty | Value | Manufacturer | MPN
R1 | 1 | 10k | Yageo | RC0603FR-0710KL
C1-C4 | 4 | 100nF | Murata | GRM188R71C104KA01D
U1 | 1 | | STMicro | STM32G474RET6It is simple, readable, and sufficient.
There is no engineering reason to make it more complicated.
First friction: none worth acting on.
Stage 2 — Revisions start accumulating
The board evolves.
Files begin to look like this:
main_board_BOM_v2.xlsx
main_board_BOM_v2_final.xlsx
main_board_BOM_revC.xlsx
main_board_BOM_revC_final2.xlsxThe spreadsheet still works perfectly well as a BOM.
What starts to degrade is configuration identity.
It becomes harder to answer confidently:
Which of these files corresponds to the Rev C hardware we actually released?
How to extend this stage without changing tools
Start with the cheap fixes.
Put identifying information inside the BOM itself:
Product: Control Unit
Board: Main Control Board
Hardware revision: C
BOM revision: 3
Release date: 2026-09-14
Status: RELEASEDDo not rely only on the filename.
Use a stable naming convention:
Main_Control_Board_RevA_BOM.xlsx
Main_Control_Board_RevB_BOM.xlsx
Main_Control_Board_RevC_BOM.xlsxAnd once a BOM is released, store it somewhere where it will not continue changing by accident.
With reasonable discipline, this model can work for years.
Stage 3 — A second board appears
Now you have:
Main Control Board
Power Boardand both use the same capacitor:
GRM188R71C104KA01DIn one spreadsheet it is a row.
In the other spreadsheet it is another row.
Conceptually, those rows represent the same component. At file level, however, they are independent records.
If you update one BOM, the other file has no inherent way to know anything changed.
That is where one of the important limits of a file-based model begins to appear.
The problem is not that Excel “cannot” have component records
You can build a master component sheet:
Component_ID | Manufacturer | MPN | Description
CAP-000142 | Murata | GRM188R71C104KA01D | 100nF 16V X7R 0603and reference it from multiple BOMs using:
- XLOOKUP;
- INDEX/MATCH;
- Power Query;
- macros;
- scripts;
- external connections.
That can work very well.
But at that point you are already building a small data system around the spreadsheet.
The structural issue is not that spreadsheets are incapable of representing relationships.
It is that a BOM row does not inherently share identity with the same component used in another BOM.
That identity has to be created and maintained through additional conventions or tooling.
Stage 4 — More than one person works on the data
With several engineers, coordination becomes another concern.
With local files, it is easy to end up with:
MainBoard_BOM_Alex.xlsx
MainBoard_BOM_Sam.xlsx
MainBoard_BOM_FINAL.xlsxTwo copies diverge, and reconciling them becomes a manual comparison exercise.
Cloud editing solves much of this problem
Google Sheets, Excel Online, SharePoint, and similar tools have improved this stage significantly.
They can provide:
- simultaneous editing;
- history;
- comments;
- author tracking;
- recovery of previous states.
For many small teams, this is enough for a long time.
It would therefore be wrong to say spreadsheets cannot support safe collaboration.
What collaborative editing does not solve by itself is a different question:
What relationship does this component have to every BOM in which it appears?
That is a data-model problem, not a file-locking problem.
Stage 5 — Questions start crossing board boundaries
Eventually someone asks:
Which of our products use the TPS62130RGTR?
With three BOMs, manual searching is reasonable.
With ten, it is still manageable.
With dozens of boards, revisions, and products, the query becomes increasingly awkward.
The important consequence is not simply losing twenty minutes.
It is that some questions stop being asked often enough.
For example:
This component has a PCN. Where do we use it?
or:
We want to replace this regulator. Which designs would be affected?
or:
Do any other boards use this connector?
If the answer depends on opening many files and trusting that every team has written the MPN in exactly the same way, the cost of querying the data grows quickly.
That is where a structural limitation becomes an operational one.
The underlying limits
There are only a few.
1. Component identity
Inside a conventional BOM:
STM32G474RET6is text in a cell.
In another BOM:
STM32G474RET6is another piece of text.
Conceptually, they refer to the same component.
But that shared identity exists only because the strings match, or because you have added another layer that links them.
A system based on persistent entities can represent something different:
Component #1842
└── Manufacturer: STMicroelectronics
└── MPN: STM32G474RET6
└── Used in:
├── Main Control Board Rev C
├── Interface Board Rev B
└── Test Controller Rev AThat distinction changes the kinds of questions you can ask directly.
2. Relationships between engineering objects
A spreadsheet can absolutely represent:
Board -> Componentusing a table.
What it does not usually provide natively is a navigable relationship model where you can move in both directions:
Board → uses → Component
Component → used by → BoardsYou can build that behaviour.
But the more you build, the less the spreadsheet is acting as a simple spreadsheet.
3. Version semantics inside the BOM
File history can answer:
What did this XLSX look like yesterday?
That is useful.
It does not necessarily answer cleanly:
Which three BOM lines changed between Rev B and Rev C?
You can solve that with:
- file comparison;
- scripts;
- Power Query;
- macros;
- Git for suitable formats;
- specialised tools.
But row-level engineering diffs are not an inherent property of an ordinary XLSX BOM.
4. Configuration context
A file might be named:
MainBoard_RevC.xlsxbut that alone does not establish:
- which schematic belongs with it;
- which manufacturing package was released alongside it;
- which hardware revision it describes;
- which supporting documents belong to the same configuration.
Folders and naming conventions can maintain that context successfully.
The problem appears when there are enough relationships that maintaining them manually becomes fragile.
Signals the model may be getting too small
There is no universal number of boards after which spreadsheets stop working.
Two complex products may justify structured tooling earlier than twenty simple ones.
Behaviour is a better indicator.
Useful warning signs include:
- you frequently need to search the same component across multiple BOMs;
- a substitution must be applied across several products and you cannot immediately identify which ones;
- different engineers have used different BOM versions while believing theirs was current;
- your master component spreadsheet now needs substantial automation to remain reliable;
- it is becoming difficult to identify which BOM was actually released for a hardware revision;
- changes on one board require manually updating duplicated information elsewhere;
- answering “where is this part used?” requires opening several files;
- you maintain relationships between products, boards, revisions, and BOMs manually.
One signal matters more than the others:
You cannot confidently identify which bill of materials corresponds to the hardware currently being built or shipped.
At that point, the issue is no longer spreadsheet convenience.
It is configuration control.
Do the cheap things first
Changing tools has a cost.
Before doing that, there are several inexpensive improvements that solve a large part of the early-stage problems.
1. Put revision information inside the BOM
Do not depend entirely on filenames.
Include:
- product;
- board;
- hardware revision;
- BOM revision;
- release status;
- release date.
2. Separate data with different purposes
An engineering BOM does not necessarily need to become all of the following at once:
- price history;
- purchasing forecast;
- stock record;
- open-order register;
- obsolescence tracker;
- production log.
Those datasets can be related without turning one spreadsheet into the database for the whole company.
3. Preserve releases
Released BOMs should remain recoverable.
You can achieve that with:
- permissions;
- snapshots;
- release folders;
- SharePoint;
- Drive;
- a repository;
- a document-control system.
The mechanism matters less than preventing a historical release from silently changing.
4. Normalise component identification
At minimum, keep:
Manufacturer
Manufacturer Part Number
Internal Part Number, if used
DescriptionDo not rely only on descriptions such as:
CAP 100nF 0603if you need to distinguish approved parts.
5. Decide which source owns each fact
For example:
Approved MPN → component master
Quantity per board → BOM
Current price → purchasing system
Stock → ERPThis avoids four spreadsheets maintaining four different versions of the same information.
If you migrate, you do not need to migrate everything at once
When a team adopts a more structured system, the instinct is often:
We need to move every product, every BOM, every document, and fifteen years of history.
That is usually unnecessary.
A lower-risk approach is to start with the problem that causes the most repeated work.
Often that is component identity.
Instead of every BOM carrying an independent copy of:
Manufacturer: Texas Instruments
MPN: TPS62130RGTRyou maintain a shared component record that multiple boards reference.
Then:
Where do we use this component?
becomes a direct data question instead of a text search across files.
From there, you can decide whether it is worth structuring:
- BOMs;
- revisions;
- documentation;
- releases;
- change history.
The transition does not have to happen all at once.
Some things should stay in spreadsheets
Structured data does not make spreadsheets obsolete.
They remain excellent for:
- quick cost estimates;
- supplier comparisons;
- temporary analysis;
- engineering calculations;
- imports and exports;
- ad hoc data manipulation;
- what-if modelling.
Moving every temporary calculation into a permanent structured system can make the work worse rather than better.
The goal is not to replace spreadsheets.
It is to identify which information needs persistent identity, relationships, and configuration control, and which information is still best represented as a table.
A practical decision rule
You can continue using spreadsheets quite happily while you can answer these questions quickly and reliably:
- Which BOM is current for this hardware revision?
- Where else is this component used?
- What changed between these two revisions?
- Which manufacturing package belongs with this BOM?
- Who can modify released information?
If those answers are fast and trustworthy, you may not need another system.
If they require repeated searching, manual comparison, and knowledge held by particular people, Excel has not suddenly become a bad tool.
The problem has simply stopped being only a table.
XKEMA is intended for that point: representing components, boards, and engineering documentation as related information, while keeping version and baseline context for the supported engineering objects rather than relying only on isolated files and naming conventions.
It does not replace ERP for purchasing or inventory, and it does not make spreadsheets a poor choice for ad hoc analysis. Its value appears when engineering relationships themselves become something the team needs to preserve.