I use a small web application I wrote for this purpose that extracts the information from the KiCad BOM. I add a field with my part number and usually have different distributors for each part no. in my database. This is not too much work, I believe. There is a post about it here: KiCad BOM to Database
You could also combine existing fields and look up the part no. from a separate table in your application, e.g. value+footprint = “10k 1%+0603”->part no. but you must keep the combination unique.
Arbitrary complex algorithms can then be used then in the application, e.g. find all parts for a BOM that are not in stock and distribute them to several orders such that total cost (including postage and packing) is minimized…
A big drawback is that you cannot define user fields for aliases!