Tags Properties

From Open Food Facts wiki
Jump to navigation Jump to search

Introduction

The goal of the project Tags Properties is to define, gather and structure content and data related to product tags (e.g. labels, categories, ingredients, brands, packaging, additives, packager codes etc.) and make it available on OFF (web site + apps) and 3rd party apps.

For instance, for labels, we might want to provide a logo, a description, a list of positive and negative points, and external pointers (eg Wikipedia, official sites) etc.

The tags properties will in particular be used for the Project Smoothie app and to supplement the Eco-Score environmental impact. Later they can also be used for the knowledge panels project and to support many other projects.

Project plan

Preliminary research, use cases etc. - 2019 to June 2020

Knowledge panel design doc (the original idea behind this project)

Pilot phase - July + August 2020

We will use the Project Smoothie app and the OFF web site as the vehicles for the pilot phase, and focus on a first set of a dozen of tags that are of special interest for the Eco-Score.

Goals:

  • Research the different types of properties we could support for different types of tags (e.g. labels, categories, packaging etc.)
  • Experiment how to display some of those properties on the OFF web site and app
  • Define how the API should expose the tags properties

Deliverables:

  • Prioritized list of the top 20 most important tags for the Eco-Score
    • e.g. meats category, organic label, palm oil ingredient analysis, glass packaging etc.
  • Actual properties values for the most important tags
  • Decision on how to display the properties
  • Definition of the API request and response format that supports the use cases for the 20 examples
    • e.g. are the properties ordered (bullet points), typed (this bullet point is about this), is it a text, do we have other types (numbers, coordinates etc.)
    • how much work / decisions do we want the server or the clients to make etc.
  • Server side API implementation for the 20 examples (can be hardcoded)
  • Client side API implementation in Smoothie (and possibly the OFF web site)

Consolidation phase - September - October 2020

Goals:

  • Create a flexible framework to extend tags properties to any number of tags
  • Support internationalization (translations and possibly country specific properties)

Deliverables:

  • Define the source and source format for the tags properties
    • e.g. taxonomies, .po files
  • Server side API implementation to use the chosen source (and removal of hardcoded values used in pilot phase)

Industrialization phase - Starts in November 2020

Goals:

  • Populate properties for as many tags as possible

Deliverables:

  • Defined properties for tags
  • Possibly scripts that harvest external sources to populate the chosen internal sources

Tasks

Most of the tasks are dependent on the prior tasks and must be done in order.

1. Prioritized list of the top 20 most important tags for the Eco-Score

  1. Organic label (which one?)
  2. ...

2. Sample values for each type of tag

For a subset of tag types (e.g. categories, labels, ingredients analysis, packaging), define values for 1 example.

Meat category ?

Organic label

Palm oil ingredient analysis ?

Glass bottle packaging ?

  • indication that it should be recycled
  • 1 bullet point about the weight / high energy cost to manufacture glass?
  • 1 bullet point about the high recyclability of glass

3. Actual properties values for the most important tags

4. Decision on how to display the properties

There are in fact 2 questions:

How do we want to display the properties

  • Are properties ordered (e.g. for bullet points)
  • Are properties typed (this bullet point is about that)
  • Are properties classified as positive or negative
  • Different levels
    • e.g. just a logo that can be clicked to reveal more details etc. or logo + tagline and then more details
  • ...

Mockups

Where do we decide on how the properties are displayed

Smart server

The server decides what to present and how to present it, and just push presentation content to the client.

e.g. the server can just send back an ordered list of bullet points, possibly with an indication of an icon

Pros:

  • No code changes / deployment needed on the app when we decide to add new types of properties etc.

Cons:

  • The app cannot make decisions to highlight specific properties (e.g. for personalization)

Smart client

The server pass very rich and structured data to the client, and the client is responsible for deciding what to present and how to present it. >> We've tried it for V2.

Hybrid between smart client and smart server

False dichotomy, we'll probably do a bit of both. The server could send back already processed data (eg ordered list with icons), and final steps could be done by the client, by having very carefully crafted and generic client code.

5. Definition of the API request and response format that supports the use cases for the 20 examples

6. Server side API implementation for the 20 examples

We can hardcode the values or make something smarted, the important thing is to return values for the 20 examples through the API.

7. Client side API implementation in Smoothie

8. Client side API implementation on the OFF web site

9. Client side API implementation on the Android and iOS apps

10. Client side API implementation on 3rd party apps