Finally, after several month I now got time to come back to my bme680 project and can share some thoughts with you.
What I have forgotten to mention in my previous post: I did some research on the sensor type used in the bme680, hoping to find some useful information in research papers. In the datasheet on page 23 it is stated that the bme680 uses a metal oxide-based sensor. In these sensors, the resistance of a thin metal oxide surface layer is measured, which is altered by adsorbing volatile gas compounds from the surrounding atmosphere. Such sensors come in heated and passive forms, depending on materials, structure and desired sensitivity, where the bme is obviously a heated-type sensor. These sensors are inherently sensitive to water vapour (by cracking the molecules down) and hence the resistance reading depends on the humidity.
Now to processing the resistance readings: For compensating the impact of humidity, I took the logarithm of the resistance readings (R_gas) and substracted the humidity (hum) multiplied by a slope-factor, which I determined from fitting the streaks in my scatter plots belonging to weekends, where no additional voc-sources were active inside my office. As a foumula, this reads:
comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh] .
The slope strongly depends on your heating profile and the polling frequency!
Looking at this compensated logarithmic gas value over serveral month of data aquisition, it follows quite well my personal experience of air quality inside the office. More importantly, it yields consistent results over several weeks!
In order to determine a quality index, I simply track the maximum readings into a list, that frequently drops the oldest readings to compensate for long-time drift and set the lists mean as my 100% air quality. This method requires that from time to time you open a window and of course that you trust your outide air to be clean. The official Bosch library also uses some compensation, where you can choose the timeframe taken into consideration, but they probably use some more sophisticated algorithms.