How we built it A Python pipeline combines measured concentrations from the USDA’s Dr. Duke database and FooDB with published odor thresholds (Leffingwell) and identifiers from PubChem and FlavorDB2. From these it computes odor activity values: concentration divided by odor threshold. A JavaScript engine models processing chemistry, a taste model (including salt masking bitterness and umami synergy), and a greedy blend optimizer. The UI is a single-page web app.
Challenges FooDB’s download sits behind a bot check, and much of its data turned out to be bound fatty acids or mislabeled units. For example, wine volatiles stored as mg/100 g are really µg/L. We wrote explicit unit corrections and plausibility filters.
Accomplishments 101 ingredients, 110 key aroma molecules, 323 measured values, and every number in the app labeled measured or estimated, with its source.
What we learned Potency matters more than amount: clove’s eugenol is about 10 million times its odor threshold, so a pinch dominates a dish.
What’s next A real tasting test of the bay nut chocolate, measured data for chocolate and coffee, and ingredient constraints such as vegan or allowed categories.
Log in or sign up for Devpost to join the conversation.