You may want to go the fully custom field route where fields are created dynamically.

Field
Name (text)
Category (Category)
Not sure if you are looking to do automatic calculations between fields, might need to rethink this one if so.

Supplier
Name (text)

Category this would be your Wire Mesh, Reinforcing Steel Bars
Name (text)
When creating a Category you would create some Fields associated with it as well. Later when you create a Product under a Category the fields are there to fill in values.

Product
Name (text)
Supplier (Supplier)
SKU (text)
Category (Category)
Price (number)
Image (image)
CombinedProperties (List of texts, this will a combination of all the fields=values used for searching later. Field kept up via via Database Trigger
e.g. : thickness=1 inch, width=2 inch, color=grey

Product Field
Product (Product)
Field (Field)
Value (text, let them type “1 inch” and come up with a way of standardizing the capitalization)
(changes of this field update the Product’s CombinedProperties)

So imagine a user wants to go look up some suppliers that have Wire Mesh that fits their needs, they search up Wire Mesh and pick it, then they are provided a list of fields to filter by Search for Fields, Category = [the Category selected] with filter input boxes next to each field.

They type in values, as they type it in you use the “Input’s value has changed” event to continuously build a List of Texts custom state. When they are ready to search all you need to do is fire off one search Search for Products, CombinedPropertes=[Custom state list](optional constraints for Price min and max), then do :each item's Supplier if you just want the supplier and not the actual products.

In the CombinedPropertes field it is crucial that the naming and formatting is standardized. So something like all lowercase fields and values would be best.

This will definitely need some refining but hopefully it will help us get started :kissing_closed_eyes: