Your part number is not supposed to know anything. That is the whole point of it, and most schemes get it backward from day one.
Walk onto most hardware teams and you will find a part number like RES-0402-10K-1%. Someone was proud of that when they built it. It tells you the category, the package, the value, the tolerance, all in one string, and for the first few months it feels like the numbering system is doing real work. Then the part gets requalified in a 0603 package because the 0402 went end of life, and now you have a number that lies every time someone reads it.
Why You Need an Internal Number in the First Place
Before smart versus dumb is even a question, it is worth being clear about why an internal part number exists at all. The most obvious reason is the one you run into first: you are the OEM for anything you designed yourself. A custom sheet metal bracket, an injection molded enclosure, a 3D printed jig, your own PCBA design. None of those have a manufacturer part number, because no other manufacturer makes them. You are the manufacturer. If it is going to have an identifier, you are the only party who can assign one.
This is not a new problem oroForge or any other PLM vendor invented a scheme to solve. The convention goes back to MIL-STD-100, the U.S. Department of Defense standard for engineering drawing practices, later carried forward into the industry standard ASME Y14.100. The core idea in both is almost boring: a part number's job is to point at the drawing or definition that actually describes the part. It identifies. It does not describe. That is a seventy-plus-year-old defense engineering convention, not a modern opinion, and it is worth sitting with, because it already answers the smart-versus-dumb argument before most teams even have it. If the military standard that formalized part numbering never asked the number to carry the part's attributes, that was never the number's job to begin with. Encoding value, package, and tolerance into the string is not rigor. It is extra work nobody asked the number to do.
And the work is not even filling a gap. Every real bill of materials already has a description column, and describing the part is its entire job: 10kΩ resistor, 0402, 1%, X7R. A smart part number does not add information the BOM was missing. It duplicates a field that already exists, just compressed into fewer characters and harder to search. Now the same fact lives in two places, the description and the number, and only one of them is easy to keep current. The description gets updated when a part changes. The number does not, because by then it is referenced on fifteen drawings and nobody wants to touch it, which is exactly how you end up with a part number that lies.
Once you accept that you need your own number, a second reason shows up fast: suppliers change their own numbers underneath you. A vendor revises a catalog, discontinues a line, or reuses a number for something unrelated, and if your BOM is anchored to their number, their churn becomes your problem. An internal number stays put even when the outside world does not.
What a Smart Scheme Actually Costs
The 0402-to-0603 example is the easy one to see coming. The expensive failure mode is the one that shows up between teams, not inside one engineer's head.
Put your mechanical team and your electrical team in the same room and ask them to agree on what a smart part number should encode, and you will watch two reasonable groups fail to converge. Mechanical wants material, finish, and dimension baked into the string. Electrical wants package, value, and tolerance. Neither is wrong, and that is exactly the problem: there is no shared taxonomy that satisfies both disciplines, so the argument does not resolve once and stay resolved. It resurfaces every time a new part category shows up that does not fit either team's assumptions, which in a hardware startup building an electromechanical product is often.
This is not a side effect of picking the wrong smart scheme. It is what happens at the seam between mechanical and electrical no matter which scheme you pick, because the seam is where one team's classification logic runs out. If your product spans CAD tools the way most real hardware does today, Onshape or SolidWorks on one side, KiCad or Altium on the other, a numbering scheme built by and for one discipline was never going to hold up at the boundary. That is the same integration gap oroForge exists to close on the BOM itself; the numbering scheme just surfaces it earlier.
There is a second cost that is quieter but compounds just as fast: onboarding. Every smart scheme is a small invented language, and a new engineer has to learn it before their first part request makes sense. Dumb numbers need no onboarding at all. The number tells you nothing on purpose, so nobody has to memorize a cipher; you look up what the part is in the system instead of decoding it from the string.
The Scheme That Actually Holds Up
Use a plain sequential number. Fixed length, flat, no embedded segments: 104582, not MECH-ALU-104582. A consistent digit count makes malformed numbers obvious at a glance and keeps sorting sane, and every character you add back in as a "helpful" segment reintroduces the exact problem you just removed.
Generate numbers from a single counter instead of letting whoever creates the part hand-pick "the next free-looking one." Two engineers working in parallel will collide the moment picking is manual, and a shared counter, ideally inside the PLM tool itself rather than a spreadsheet someone forgets to refresh, removes the coordination problem entirely.
Keep the part number and the revision separate. The number identifies what the part is; a revision field, 104582-A, 104582-B, tracks how it has changed. Fold revision into the number itself and you end up with orphaned "parts" every time a spec changes, which fragments your where-used data and purchase history across numbers that were always the same continuous part.
There is exactly one exception worth carving out, and it is not a smart segment: prefix by organization, not by category. ORO-104582 tells you at a glance that a number is yours and not a manufacturer's, and it encodes nothing about the part itself, no type, no value, no spec. That is the difference between a namespace and a smart number. Prefix for provenance. Never for description.
And never let a manufacturer part number stand in as your internal one. It works fine until the part needs a second source, which is closer to the default than the exception once a component ships in volume. A single-sourced part is a supply chain risk you are carrying without pricing it in, and if your internal identifier is just someone else's MPN, you have no way to represent two qualified sources as the same part. One internal number, multiple approved manufacturer parts underneath it, is the only version of this that survives a shortage.
The Number Is Not the Hard Part
None of this replaces the discipline your BOM already needs: a clear revision process, a real change order workflow, someone who owns the current version. A good numbering scheme just stops your team from re-litigating an unforced argument every time a new part category shows up, so that discipline has something stable to point at. If your team is still arguing about whether a resistor's package belongs in its part number, that argument is free to have and does not need a redesign. See how oroForge handles part numbering and revision history together before your next CM handoff makes the argument expensive.

