This project is a collaboration between the Center for Applied AI and the following researchers:

Dr. Yuan Wen (Institute for Biomedical Informatics, Department of Physiology)

Dr. Laura Brown (Department of Physiology)

Dmitry “Dima” Strakovsky (College of Fine Arts)


Volatile organic compounds (VOCs) are chemicals that can easily evaporate at room temperature and are commonly found in various products and materials such as paints, cleaning supplies, fuels, and solvents. The measurement of these compounds has been evolving over decades. Today, thanks to advancements in collection techniques, collection devices fit in the palm of your hand and can detect trace amounts of VOCs. These devices are used for many applications, but we are interested in their applications to healthcare. Specifically, can we collect breath samples to create a machine-learning model to predict a patient’s blood glucose accurately? The VOC sensor device we use is named the “Smell Inspector” and is described in the “Smell Inspector” section below.

We aim to 1) create a dataset with blood glucose measurements and 2) infer the blood glucose measurement from a breath sample in real-time.


This project is in the early phases. However, we have begun to collect breath samples from 4 volunteers in our office. None of these volunteers have diabetes and do not have access to a measurement device for blood glucose, so we decided to test the effectiveness of the VOC sensor by classifying peppermint breath vs. normal breath. By doing this, we can see how sensitive the smell inspector is when classifying something aromatic while testing various machine learning models. The experimental setup and results are in the “Peppermint vs. Normal Breath” section below. These measurements will not be included in the final dataset or model; they simply help demonstrate the best setup for the actual blood glucose project.

Smell Inspector

The device used to collect these samples is called the “Smell Inspector, ” developed by SmartNanotubes Technologies in Germany (found here). Figure 1 shows the smell inspector with an additional mounting plate designed in-house to connect to a breath camber.

smell inspector device next to its box

Fig 1. Smell Inspector device with additional front mount (not included)

The smell sensor collects and sends data at approximately 2 seconds increments. This resolution is not ideal for breath samples, as many people can only exhale for 7-8 seconds. Based on the results below, it may not matter that we are collecting a relatively low number of samples per exhale.

Collection Chamber

The collection chamber was built by Dima Strakovsky and has been a great starting point for breath collection. The chamber is completely modular, where we can add or remove vents and change the distance from the mouthpiece to the sensor inlet. Figure 2-5 shows the chamber with all panels removed (except for the bottom panel) and the mouthpiece directly facing the smell inspector.

Fig. 2: Smell Inspector Inserted into Collection Chamber

Fig. 3: Left Side and Top of Collection Chamber with Attached Non-filtered Mouthpiece and Smell Inspector.

Fig. 4: Non-Filtered Mouthpiece Attached to Chamber, Blue Mouthpieces with Filter Available.

Fig. 5: Right Side and Bottom of Chamber

The smell inspector can move to any distance within the collection chamber simply by pushing the device farther into the chamber. The inspector creates a seal with the chamber by using a custom mounting plate that includes rubber grommets that hold the device in place without needing screws or other hardware. This can be seen in Figure 2. By allowing the device to move in and out of the chamber, we were able to collect samples at three places: short (sensor placed ~1 inch from the mouthpiece), medium (sensor placed in the middle of the chamber), and long (sensor placed at the end of chamber). Doing this allowed us to see which distance provided us with the best results.


Each mouthpiece is single-use only and comes in a variety of designs. In Figure 4, the two blue mouthpieces include a particle filter that claims to stop viruses and excessive moisture but allows VOCs to pass through. Additionally, there is also a direct connection mouthpiece without a filter. There is not a large difference between moisture entering the chamber, and it did not appear that using one over the other made any difference when it came to measurement when comparing the filtered vs non-filtered version. However, using the filtered mouthpiece would be recommended to prevent excessive amounts of spit and other large particles from entering the chamber.

Peppermint vs. Normal Breath

As mentioned in a previous section, we took measurements from 3 sensor positions within the chamber. Each volunteer exhaled into the chamber three times at each of these positions. This created nine measurements for each volunteer for Peppermint and nine measurements for Normal Breath. After each exhalation, the smell inspector was removed from the chamber, and both the inspector and the chamber were wafted around for at least 1 minute before re-placing the inspector back in the chamber for the subsequent measurement. This way, the chamber could be cleared of a high concentration of VOCs to re-establish a baseline.

Normal Collection: Volunteers were told to stop eating and drinking for one hour before collecting breath samples.

Peppermint Collection: Volunteers were told to stop eating and drinking for one hour before collecting breath samples. Volunteers were then given a peppermint to eat at each sensor distance (one at short, one at medium, one at long). After finishing the Peppermint, volunteers were asked to wait one minute and then began exhaling into the chamber.


Of the four volunteers, each produced about 120 samples over nine measurements. More data is needed to train a robust machine learning model. Therefore, we combined the samples for all volunteers at each distance.

We used CLASSify to train each dataset with seven models: Random Forest (RF), XGBoost (XG), Gradient Boosting (GB), Histogram Gradient Boosting (HGB), Bagging (B), SGDClassifier (SGD), Logistic Regression (LR), and K-Nearest Neighbors (KNN). Below are the results for each dataset and the best-performing model. If multiple models are listed in the best model column, each of these models performed exactly the same. Each dataset is split into 80% for training and 20% for testing. The classes (normal vs peppermint) are almost perfectly balanced in each dataset.

Sensor Distance # Samples Best Model AUC Accuracy Sensitivity Specificity
Short 262 SGD 1.0 1.0 1.0 1.0
Medium 262 GB 1.0 1.0 1.0 1.0
Long 269 XG, B 1.0 1.0 1.0 1.0
Short_Medium_Long_Combined 793 HGB, SGD 1.0 1.0 1.0 1.0

Based on this table, the models are probably overfitting the data since there is little data to train on now. On the other hand, since these are binary classification models, the introduction of peppermint might be strong enough to clearly separate normal from peppermint breath, and each model works perfectly. In the following weeks, we will also be adding two more classes for butterscotch and strawberry-flavored candy and re-train the model to see how the results change.

Future updates will be posted here.