Bulk products integration
Bulk products are products that are sold in shops without packaging. The consumers fills a container s/he brought her/himself or is offered by the shop. This way the consumer can buy as much as needed and there is no impact on the environment due to the consumer packaging. The shop keeper buys the product in bulk packaging and keeps the containers filled up.
OFF can support these kind of products by creating products without barcode, such as this one. The advent of OFF prices allows us to do things a bit differently.
But this raises also other issues that will be discussed. The end goal is to update OFF with Bulk products entered on OFF Prices.
Bulk product categories
OFF Prices allows the user to enter the prices of bulk products. For each product the user has to specify a category. As the variety of bulk products is not very large, there is no need to expose the user to the complexities of the Categories taxonomy, which consists of 72.000 categories. A subset of the categories taxonomy is sufficient for OFF Prices.
Virtually all products are sold with a barcode on the packaging. Which product categories are however also available without an "official" barcode. This will be a very small subset of the categories taxonomy. For prices we need to identify these product categories. There are multiple ways of doing this.
By super category
We could also add the super category en:Bulk for easy retrieval of bulk products. This has the advantage that the indexing facilities can be used.
By Property
Each category that can be sold as bulk gets a specific sales_format property. This property can indicate whether the product is sold by weight, by volume, per item (1 banana) or set (6 eggs).
By adding this property to each category that is sold as bulk, OFF Prices can figure out which categories need to be shown to the user and what sales format.
The identification of these bulk categories will be done by adding a property to each relevant category. The property sales_format will indicate whether that category is also sold by bulk. This can be by weight (for example almonds), by volume (for example olive oil) or by item (for example lemons). Default, i.e. no property implies sales_format:en: package. When a bulk_code is present the default sales_format:en: is package, weight.
Bulk category simplification
Unfortunately the category name corresponding to the bulk product can be very extensive. For instance bulk almonds are only sold shelled, whole, unsalted, unroasted and unblanched. To simplify the category a specific convenience category has been created, called raw almonds. (better than Almonds(whole/unsalted/unroasted/unblanched). This might even be too large for OFF Prices, a shorted name would be more convenient to the user. Why not call them just almonds?
By adding a proxy category to be used for bulk categories, OFF Prices can show a more simple name. The property bulk_proxy_category can be used for that. This property points to the en:almonds category. Default is to use the names that go with the bulk_code.
Examples
< en:Bananas en: Bananas(fresh) fr: Bananes(fraîche) nl: Bananen(vers) bulk_proxy_category:en: en:bananas sales_format:en: package, weight, item
Bulk product integration
For normal products the product information is on the package, which the user takes home. For bulk products the product information is shown on an in-shop price tag. (take a photo if you want to take the information home).
Bulk product price tag
The information associated with bulk product can differ a lot:
- minimal information - These products only have a category name, an associated price, an origin and possibly an organic label. This often occurs on markets, wher the user selects the products and the gives a filled basket to the shop keeper. The shop keeper then makes a simple receipt which consists only of a list of prices, without associated product (categories);
- self service label. These products only have a category name, an associated price, an origin and possibly an organic label - The user weighs the product himself and prints out a label on a weighing station. The information might on the label consists of a price, a weight and a price per weight. The printed label encodes an abbreviated name, the weight and the price (weighed and per kg or L);
- cashiers weighing - These products only have a category name, an associated price, an origin and possibly an organic label. The receipt will contain the price, a weight and a price per weight;
- no waste shops - This is either similar to the cashiers weighing or the self service situation, but the product is displayed with the same information that can be found on standard food packing (ingredients, nutritional values, etc.);
Bulk product barcodes
The information shown on the price tag could be equated to the information found on products with a barcode. This implies that for each price tag an entry has to be created in OFF. (it might be possible to normalise these price tags into one product)
What is the best way to integrate these price tags? The easiest approach is to create a separate entry for each bulk product in each shop. Any information on the price tag will then be entered on the product sheet (origin, producer, labels, etc.).
Any OFF product should have a barcode. If a product without a barcode is added to OFF, OFF creates a sequential barcode. The OSM id of the shop can added as a store, so the product can be found back.
Examples
Need some examples of bulk products.
Normalisation
This might be a bit of overkill. it is possible to combine multiple price tags into one product. Thus all Oranges from Spain will go together irrespective of the shop. The same for all Organic Oranges from Spain. The more specific information is available, the more specific product needs to be created (Organic Oranges from farm X in Spain).
Issues
Adding the OSM-id as shop, allows one to search for bulk products, See this search. However how would Prices make the connection to these products?