HN user

joshdickson

630 karma

Currently building OpenNutrition.

Email: me@joshdickson.com Website: opennutrition.app Twitter/X: x.com/joshdickson40

Posts1
Comments142
View on HN

Thank you for your kind words and feedback. The search should be better now, and is much better in-app with additional local caching.

I can assure you that you are not overthinking it in terms of figuring that information out. The search experience tries to make it as clear and helpful as possible. If you encounter any situations where it could be more clear, I would love to see them. My contact info is in my bio, or there is a feedback prompt on the site/in-app. Thanks again for checking the project out and your feedback.

Almost every protein that I consume is weighed raw for ease in logging. One reason is if you are cooking a dish with e.g. bacon as an ingredient, you may not be able or want to separate it out at the end. Likewise, if I sauté chicken breasts in a pan and then finish the dish with other ingredients, I probably want to just eat the food and not deal with weighing them after water loss. Providing both just provides greater ease in logging your meals and is exact-enough for most people :)

Thank you for your questions and feedback.

When something doesn't have a reference listed, and just says "sourced from a publicly available first-party datasource", what does that mean?

It depends, and the degree to which it depends is why the citation is ambiguous (although it is true, if imprecise). My goal is to individually cite the individual nutrients but it was simply too costly and time-consuming at the stage of the project at which I did this work.

what is the process like there for interpreting those values?

Because the degree to which something in the database might be related to those values is so varied, it depends. The reasoning agent had access to those database entires, which is helpful because they tend to contain micronutrient data. It also had access to web data, as well as its own world knowledge, and considers sources in that order. Ultimately it was left up to the agent to decide what the most reasonable fit for each food was, thinking through what an average user likely meant by that entry (e.g. a typical user probably assumes a 'Tomato' is raw), and then to choose the best sources from there. For the chicken salad, it used approximate micronutrient values from the listed references to inform its answer, but adapted the end values for how the dish is described in the description.

if you had the choice between verified data and fuzzy LLM data, you should go for the human verified data (for now)

Human verification isn't free, and that means it is not available to a lot of people who can't or don't want to pay for something. But if that's something that someone values, I would certainly not diss the human effort!

The licensing terms are identical to similar projects including OpenFoodFacts (which also has an app) and OpenStreetMap, see:

https://wiki.openfoodfacts.org/ODBL_License

You may disagree with each of those projects as well, but, I am following long-standing licensing in this space. I also have used some OFF data for product naming, and as a result, their terms state I have to maintain their license.

Creating these databases involves a tremendous amount of time and effort, and it would not make sense for me to make this data available to commercial entities to use without attribution. The alternative is not a MIT-licensed dataset, it is no dataset.

That's what OpenNutrition does. However, in many cases, there is no publicly accessible "non-AI data" source to refer to. OpenNutrition tries to bridge the gap, using the public data when available, and providing additional inferred data to fill in the gaps. For "red beans" and "rice", OpenNutrition provides a long list of foods with full citations in public databases. See the "References" section where you can click through to the source material.

Red Beans

- https://www.opennutrition.app/search/red-beans-canned-and-dr...

- https://www.opennutrition.app/search/red-beans-dry-vIh9Ofhcl...

Rice

- https://www.opennutrition.app/search/enriched-white-rice-tlA...

There's an in-depth review of the reasoning for undertaking this project in general and this approach in particular in the Methodology/About section below, see "Current State of Nutritional Data".

Millions of people use food logging apps to drive behavioral change and help adhere to healthy lifestyles. I believe there is immense societal good in continuing to offer improved tools to accomplish this, especially for free, and that's why I created the project and chose to open source the data.

https://www.opennutrition.app/about#current-state-of-nutriti...

Thank you for your feedback.

If I can join the endless queue of feature requests, the ability to scale the portion size and update the nutrition facts would be great

This is all supported in-app if you're in a country with the ability to download it and have iOS (for now). The web product is more of a demo and isn't intended to be used on a day-to-day basis to track your food consumption, but this is a totally reasonable request.

Also IDK where AI is wrt automated scraping but I've had some success feeding recipes into AI and getting the nutrition facts out. The ability to plop a URL in and get a scraped recipe with a name and nutrition facts would be immense.

I am not doing this for a few reasons, but, you can just screenshot the image of the recipe and use the app to upload that as a meal or recipe and it should parse out the ingredients and portions for you.

Your other comment is too deep in the thread for me to reply, but just wanted to say I appreciate you checking out the project and commenting, and appreciate the many years of effort you've undertaken in this space. How OpenNutrition can work with OpenFoodFacts is something I have thought a lot about (I think MacroFactor set a great example) and it's certainly something I'll consider moving forward.

Thank you very much for your feedback. Building a great product that did not have variable usage costs that allowed for a generous free tier was my primary motivation for undertaking this project. While there is a need to monetize, I also believe there is a niche for an app with a more expansive free tier than exists in the space currently.

Only using the OFF database would be untenable to me as an end user. I think most people do not want to know or care about where the data is coming from, they just want it to be accurate and easy to use. I've listed the usability reasons here for why I can't offer that how I want with only OFF (and that's no dig to OFF, it is a fantastic project, and a primary motivator for this project and its license structure).

https://news.ycombinator.com/item?id=43570775

Thank you for the feedback.

Have you asked one of the LLMs used to tell you about the choline content of a food, even ungrounded? They are surprisingly good at reasoning about what kinds of foods tend to contain large amounts of choline because their training datasets will include all kinds of similar data points, even if the single food you're looking for doesn't have it listed explicitly.

Would you mind posting/messaging me in some way (links in bio) what you expected it to show?

It looks like for unsweetened oat milk:

https://www.opennutrition.app/search/unsweetened-oat-milk-mt...

...it is leaning into a citation from the Australian Nutrient Database (e.g. Oat beverage, fluid, unfortified. Australian Nutrient Database. Public Food Key F006132. ), which is what I instructed it to do if it thought there was an exact match from a governmental database.

It's possible this is a poor general source for oat milk or that's not the beverage intended for the entry to stand for. I'll check it out, thank you for the report.

Thank you! The images are created via Flux (Schnell, due to cost). An LLM (currently Gemini Flash) creates the prompt, Flux generates the images, a rembg lambda that I open-sourced trims the background out, and then a vision-based LLM (also currently Gemini Flash) grades the resulting output for prompt adherence, background removal artifacts, etc. A lot get thrown away but the cost is so low that even a 25-50% success rate is adequate.

Background removal lambda if you want to check that out: https://github.com/joshdickson/rembg-lambda

The idea of including that requirement in the license is a good idea and I had not considered it, but I will -- frankly my motivations have been more on the citation side of things such that the need for quality disclaimers is not as great. Thank you for the suggestion.

I envisioned many lines of inquiry from HN but the idea that a compressed TSV of nutritional data is not a "dataset" (definition: a collection of related sets of information that is composed of separate elements but can be manipulated as a unit by a computer) was unexpected.

The goal, without question, is 100% full coverage on citations for every piece of data that's in the database, even if the citation is an LLM's general reasoning (which for o1-pro is both quite good and often includes study citations).

Right now you'll see that aggregated on some items like this where the reported data is an ensemble of all of the linked resources: https://www.opennutrition.app/search/eggs-eeG7JQCQipwf

Frankly, I just couldn't justify the additional time and monetary expense in doing that if I released this initial version and nobody cared or found it useful. This dataset was also compiled before tools like Claude Citations came out which could make it easier. That is the nature of AI-driven data; I think this is useful now, it is also the worst it will ever be.

OpenFoodFacts is a huge inspiration to this project, obviously. However, as someone with a normal diet, OFF lacks:

1. Generic, non-branded foods

2. Simple prepared foods that ease food entry

3. Restaurant foods

4. Micronutrients beyond those reported by the brand.

OFF is a fantastic project but OpenNutrition is really trying to fit a different niche. OFF does what it does very well; I would never be able to use it to track my food intake.

I have tracked my macro intake seriously for years and use the database every day, as do many folks who used the initial app releases. It's actually more valuable to me to have the data in this format, even estimated, because what happens with other apps is you get gaps in macronutrient reporting on things like Omega 3's, and you wonder 'Am I not eating any Omega 3's or does the database containing the food I ate just not include them?'. In that case I'd much rather have an LLM that had access to as much relevant data as I could feed it reason through approximate nutrient distribution and give me the best estimate it could.

Appreciate the feedback!

Those rigorous validation steps were also created with LLMs, correct?

Not really. I do explain in the methodology post how good o1-pro is at the task, but there was a lot of manual effort involved in coming to that conclusion with my own effort to review the LLM's reasoning, and even still, o1-pro is not perfect.