[{"data":1,"prerenderedAt":624},["ShallowReactive",2],{"project-43569190":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":46,"post_text":48,"what":49,"said":106,"maker_in_thread":207,"shape":214,"grid":218,"attempts":587,"same_week":588,"maker_shows":43,"maker_hidden":616,"reader_version":617,"card":618},"43569190","OpenNutrition","A free, public nutrition database","title","Show HN: OpenNutrition – A free, public nutrition database","https:\u002F\u002Fwww.opennutrition.app\u002Fsearch","opennutrition.app","joshdickson",1743686345,2025,311,150,173,3837,5,"legend","data","nutrition database","web_app",[21,24,25,26,27],"macro tracker","calorie counter","open food data","food logging","mixed",-0.265,{"positive":31,"neutral":32,"mixed":33,"critical":34},11,21,7,34,73,{"idea":37,"execution":39,"docs":42,"design":44,"performance":45},{"positive":38,"critical":31},3,{"positive":40,"critical":41},0,17,{"positive":40,"critical":43},1,{"positive":38,"critical":40},{"positive":40,"critical":38},[43,43,43,43,43,38,43,43,43,38,18,43,43,38,40,43,43,43,43,18,18,38,18,18,40,38,47,47,38,40,18,38,38,38,38,38,43,43,18,47],2,"Hi HN!\n\nToday I’m excited to launch OpenNutrition: a free, ODbL-licenced nutrition database of everyday generic, branded, and restaurant foods, a search engine that can browse the web to import new foods, and a companion app that bundles the database and search as a free macro tracking app.\n\nConsistently logging the foods you eat has been shown to support long-term health outcomes (1)(2), but doing so easily depends on having a large, accurate, and up-to-date nutrition database. Free, public databases are often out-of-date, hard to navigate, and missing critical coverage (like branded restaura",{"problem":50,"audience":56,"pricing":63,"motivation":67,"time_to_build":71,"stack":72,"openness":103,"stage":104,"team_size":105},{"value":51,"source":52,"evidence":53},"Free nutrition databases are out-of-date, hard to navigate, and miss branded and restaurant foods","maker",[54],{"id":55},"post",{"value":57,"source":52,"evidence":58},"People who track food intake and macros, including those pursuing health goals",[59,60],{"id":55},{"id":61,"by":11,"text":62},"43570741","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…",{"value":64,"source":52,"evidence":65},"Free app with paid tier at $49\u002Fyear",[66],{"id":55},{"value":68,"source":52,"evidence":69},"Make a free, accessible food logging tool and release nutrition data publicly",[70],{"id":55},null,[73,79,86,90,99],{"value":74,"source":52,"evidence":75},"Next.js on Vercel",[76],{"id":77,"by":11,"text":78},"43573134","Pretty standard Next app on Vercel. Some pre-fetching. Food pages are cached post-generation. Custom go-based search server behind a Cloudflare cache. Any other questions?",{"value":80,"source":52,"evidence":81},"Go custom search server",[82,83],{"id":77,"by":11,"text":78},{"id":84,"by":11,"text":85},"43572981","I wrote a Go-based search engine that indexes full words and prefixes for the foods and their alternate names because I was dissatisfied with how slow OpenSearch was given the…",{"value":87,"source":52,"evidence":88},"Cloudflare cache",[89],{"id":77,"by":11,"text":78},{"value":91,"source":52,"evidence":92},"LLMs (o3 mini, o1-pro, Gemini Flash) for estimates",[93,96],{"id":94,"by":11,"text":95},"43569955","TL;DR: They are estimates from giving an LLM (generally o3 mini high due to cost, some o1 preview) a large corpus of grounding data to reason over and asking it to use its…",{"id":97,"by":11,"text":98},"43572154","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…",{"value":100,"source":52,"evidence":101},"Flux Schnell for food images",[102],{"id":97,"by":11,"text":98},"open_source","launched","solo",{"praise":107,"objections":121,"requests":155,"questions":176,"alternatives":194},[108,117],{"value":109,"source":110,"evidence":111},"Useful free alternative to existing food databases","commenter",[112,113],{"id":61,"by":11,"text":62},{"id":114,"by":115,"text":116},"43569604","Zealotux","Congrats on the launch! Looks slick and reactive. Now I wish there was an app to analyse my meals from pictures and estimate the calories\u002Fmacros, I guess it exists somewhere but…",{"value":118,"source":110,"evidence":119},"Slick and reactive interface",[120],{"id":114,"by":115,"text":116},[122,133,148],{"value":123,"source":110,"evidence":124},"LLM-generated nutrition values are unreliable and not real data",[125,129],{"id":126,"by":127,"text":128},"43571183","Cheer2171","> Final nutritional data is generated by providing a reasoning model with a large corpus of grounding data. The LLM is tasked with creating complete nutritional values,…",{"id":130,"by":131,"text":132},"43570161","yamihere",">> User-generated databases can be unreliable >> Foods discovered via these searches are fed back into the database, Aren’t LLMs also unreliable? How do you ensure the new…",{"value":134,"source":110,"evidence":135},"Specific entries have wrong values (eggs choline, honey bunches, bacon)",[136,140,144],{"id":137,"by":138,"text":139},"43570336","johnisgood","Just at a quick glance... How can a large egg (50 g) contain 147 g choline? https:\u002F\u002Fwww.opennutrition.app\u002Fsearch\u002Feggs-eeG7JQCQipwf Additionally, on…",{"id":141,"by":142,"text":143},"43571503","bhatfiel","LLM generated nutrition for accuracy. The first item I manually look up is has about double calories listed in the \"dataset\" versus reality. Honey bunches of oats honey roasted.",{"id":145,"by":146,"text":147},"43569789","dudeabidez","Very cool! Data needs some curation however. Search \"Bacon\" for example and you'll see raw bacon with 95kcal and 4g of protein while cooked bacon says 153kcal and 10g of protein.",{"value":149,"source":110,"evidence":150},"Search and filter bugs",[151],{"id":152,"by":153,"text":154},"43569606","lm28469","The search is broken on safari, every time it refreshes you lose the focus on the text input, which means you have to click on the search bar after every single character you…",[156,163,172],{"value":157,"source":110,"evidence":158},"API access",[159],{"id":160,"by":161,"text":162},"43569980","volkk","Super cool. Would you consider an API?",{"value":164,"source":110,"evidence":165},"Per 100g and portion scaling in the web view",[166,169],{"id":167,"by":11,"text":168},"43569973","> Could you possibly add an option to see the nutrient content per 100g serving? In the top-right of the table in the web search, you can change the toggle from \"Per Serving\" to…",{"id":170,"by":11,"text":171},"43572899","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…",{"value":173,"source":110,"evidence":174},"Recipe URL import",[175],{"id":170,"by":11,"text":171},[177,187],{"value":178,"source":110,"evidence":179},"How does this differ from OpenFoodFacts",[180,184],{"id":181,"by":182,"text":183},"43570150","adamas","What's the main difference between this and OpenFoodFacts really ?",{"id":185,"by":11,"text":186},"43570775","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…",{"value":188,"source":110,"evidence":189},"How micronutrient estimates are derived",[190],{"id":191,"by":192,"text":193},"43569843","octotep","Overall, very cool and seriously much needed! How does the micronutrient estimation work? Or is that part of the secret sauce? I was looking at this page:…",[195,203],{"value":196,"source":110,"evidence":197},"OpenFoodFacts",[198,199],{"id":181,"by":182,"text":183},{"id":200,"by":201,"text":202},"43572539","briandoll","Real and open nutritional datasources exist: https:\u002F\u002Fsupport.cronometer.com\u002Fhc\u002Fen-us\u002Farticles\u002F360018239472-Data-Sources",{"value":204,"source":110,"evidence":205},"Cronometer",[206],{"id":200,"by":201,"text":202},{"comments":34,"answered":41,"key":208},[209,212,213],{"id":210,"text":211},"43573242","There's an in-depth review of the reasoning for undertaking this project in general and this approach in particular in the Methodology\u002FAbout section below, see \"Current State of…",{"id":185,"text":186},{"id":61,"text":62},{"commenters":215,"max_depth":33,"maker_replies":34,"first_comment_mins":216,"lifespan_hours":217},68,25,99,[219,221,225,228,231,233,237,240,241,244,247,248,252,254,256,259,261,264,267,269,270,272,275,278,281,282,285,287,289,291,295,297,300,302,304,307,310,313,316,318,320,322,325,327,330,333,335,337,340,342,345,346,350,352,354,358,362,366,368,371,375,377,382,384,386,388,391,395,397,400,404,406,411,412,415,417,420,424,428,433,435,437,440,442,445,450,452,456,460,464,467,469,474,478,480,482,485,488,490,492,495,496,500,504,507,509,511,514,516,518,520,522,526,528,531,533,535,539,543,547,551,552,556,560,562,564,568,572,573,577,579,581,583],[126,40,43,220,127,40],"project\u002Fcritical\u002Fidea",[222,40,40,223,224,40],"43571620","other\u002Fneutral\u002Fnone","tmpz22",[226,40,40,223,227,40],"43572039","NewJazz",[229,40,43,220,230,40],"43572927","creativeCak3",[210,40,40,232,11,43],"maker\u002Fneutral\u002Fidea",[234,40,43,235,236,40],"43573851","project\u002Fcritical\u002Fexecution","ZunarJ5",[238,40,43,235,239,40],"43574297","justsid",[130,43,43,220,131,40],[242,43,43,235,243,40],"43570320","rob",[245,43,43,220,246,40],"43570711","XorNot",[185,43,40,232,11,43],[249,43,40,250,251,40],"43572538","commenter\u002Fneutral\u002Fidea","teolemon",[61,43,40,253,11,43],"project\u002Fpositive\u002Fidea",[255,43,43,235,131,40],"43571180",[257,43,40,258,11,43],"43570409","maker\u002Fneutral\u002Fexecution",[260,43,43,235,131,40],"43570950",[262,43,40,263,11,43],"43571359","maker\u002Fneutral\u002Fdocs",[265,43,38,266,131,40],"43571694","project\u002Fmixed\u002Fdocs",[268,43,40,263,11,43],"43571986",[152,47,43,235,153,40],[271,47,40,258,11,43],"43569714",[273,47,43,235,274,40],"43571702","jonesy827",[276,47,40,277,11,43],"43572004","maker\u002Fneutral\u002Fperformance",[279,47,43,235,280,40],"43570094","fastball",[141,38,43,235,142,40],[283,38,43,235,284,40],"43571543","throwway120385",[286,38,40,258,11,43],"43571831",[288,38,43,235,142,40],"43613032",[137,290,43,235,138,40],4,[292,290,40,293,294,40],"43570483","commenter\u002Fneutral\u002Fexecution","ramon156",[296,290,40,258,11,43],"43570503",[298,290,38,299,138,40],"43570716","project\u002Fneutral\u002Fdesign",[301,290,40,263,11,43],"43570897",[303,290,38,299,138,40],"43570930",[305,290,40,306,11,43],"43576081","maker\u002Fneutral\u002Fnone",[308,290,18,309,138,40],"43578810","project\u002Fpositive\u002Fnone",[311,18,40,223,312,40],"43569740","diggan",[314,18,40,223,315,40],"43606223","lippihom",[200,317,43,220,201,40],6,[319,317,40,263,11,43],"43572819",[181,33,38,321,182,40],"project\u002Fneutral\u002Fidea",[323,33,43,220,324,40],"43570605","masijo",[326,33,43,220,182,40],"43570661",[328,33,38,321,329,40],"43571178","hombre_fatal",[331,33,40,332,227,40],"43572206","commenter\u002Fneutral\u002Fnone",[334,33,40,250,251,40],"43572419",[336,33,40,306,11,43],"43572732",[338,33,40,332,339,40],"43572376","sodality2",[341,33,40,332,329,40],"43572542",[191,343,38,344,192,40],8,"project\u002Fneutral\u002Fexecution",[94,343,40,263,11,43],[347,343,43,348,349,40],"43570036","project\u002Fcritical\u002Fdocs","Xiol32",[351,343,40,263,11,43],"43570142",[353,343,43,235,182,40],"43570286",[355,343,40,356,357,40],"43571919","commenter\u002Fneutral\u002Fdocs","sswatson",[359,360,43,220,361,40],"43572659",9,"insane_dreamer",[363,364,38,299,365,40],"43570351",10,"Rooster61",[367,364,43,220,227,40],"43572102",[369,31,43,220,370,40],"43573043","monkburger",[372,373,38,344,374,40],"43572207",12,"kekub",[376,373,40,306,11,43],"43572304",[378,379,43,380,381,40],"43574008",13,"project\u002Fcritical\u002Fnone","neilv",[383,379,40,306,11,43],"43574349",[385,379,38,321,381,40],"43574633",[387,379,40,232,11,43],"43574771",[389,379,18,390,381,40],"43578452","maker\u002Fpositive\u002Fidea",[392,393,38,344,394,40],"43574853",14,"papa_bear",[396,393,40,258,11,43],"43575267",[398,393,18,399,394,40],"43576966","maker\u002Fpositive\u002Fnone",[401,402,43,235,403,40],"43569816",15,"ouroumov",[167,402,40,405,11,43],"maker\u002Fneutral\u002Fdesign",[407,408,18,409,410,40],"43571084",16,"project\u002Fpositive\u002Fdesign","reverendsteveii",[170,408,40,306,11,43],[413,41,38,414,329,40],"43569688","project\u002Fmixed\u002Fexecution",[416,41,40,258,11,43],"43572390",[418,41,18,409,419,40],"43577936","alexsexotic",[421,422,40,223,423,40],"43570942",18,"tjpnz",[425,426,18,253,427,40],"43572557",19,"andy_ppp",[429,430,38,431,432,40],"43569522",20,"project\u002Fmixed\u002Fdesign","probotect0r",[434,430,40,332,153,40],"43569629",[436,430,40,332,432,40],"43569683",[438,430,40,439,329,40],"43569847","commenter\u002Fpositive\u002Fdesign",[441,430,40,258,11,43],"43569648",[443,32,18,309,444,40],"43588236","jackblum",[446,447,43,448,449,40],"43569989",22,"project\u002Fcritical\u002Fperformance","CartwheelLinux",[451,447,40,277,11,43],"43570117",[453,447,43,454,455,40],"43570771","maker\u002Fcritical\u002Fnone","hluska",[457,458,38,414,459,40],"43570896",23,"jsmo",[461,462,38,414,463,40],"43586842",24,"emillykkeg",[465,216,38,414,466,40],"43570688","ehaveman",[468,216,40,258,11,43],"43576053",[470,471,38,472,473,40],"43569754",26,"project\u002Fneutral\u002Fnone","robertlagrant",[475,476,43,220,477,40],"43570322",27,"sputknick",[479,476,40,232,11,43],"43573964",[114,481,38,321,115,40],28,[483,481,40,223,484,40],"43569832","andrewchilds",[486,481,40,223,487,40],"43569855","achempion",[489,481,40,223,329,40],"43570007",[491,481,40,232,11,43],"43569874",[493,481,38,472,494,40],"43572608","nqzero",[77,481,40,258,11,43],[497,498,40,223,499,40],"43571044",29,"lijok",[501,502,18,309,503,40],"43578439",30,"8mobile",[505,506,18,409,315,40],"43606235",31,[145,508,43,235,146,40],32,[510,508,40,293,329,40],"43570097",[512,508,38,344,513,40],"43570107","criddell",[515,508,40,332,329,40],"43570186",[517,508,40,332,513,40],"43570227",[519,508,40,332,329,40],"43570323",[521,508,40,258,11,43],"43575386",[523,524,38,472,525,40],"43571236",33,"chakintosh",[527,524,40,306,11,43],"43572064",[529,34,38,530,339,40],"43572303","project\u002Fmixed\u002Fidea",[532,34,40,232,11,43],"43572530",[534,34,38,321,339,40],"43572655",[536,537,18,309,538,40],"43570831",35,"devmor",[540,541,43,235,542,40],"43569872",36,"johmue",[544,545,38,321,546,40],"43569896",37,"blendergeek",[548,549,38,344,550,40],"43572870",38,"DavidPP",[84,549,40,258,11,43],[553,554,43,448,555,40],"43571000",39,"KerryJones",[557,558,40,223,559,40],"43569782",40,"bl4ckm0r3",[561,558,40,223,329,40],"43570067",[563,558,40,223,559,40],"43572287",[565,566,43,235,567,40],"43579494",41,"metalman",[569,570,38,405,571,40],"43570889",42,"morgengold",[97,570,40,405,11,43],[574,575,18,253,576,40],"43572213",43,"nelblu",[160,578,38,321,161,40],44,[580,578,38,321,329,40],"43570055",[582,578,38,321,161,40],"43570314",[584,585,43,448,586,40],"43570288",45,"trupus",[],[589,594,599,603,607,611],{"id":590,"name":591,"points":592,"category":593},"43613194","Browser MCP",616,"dev_tools",{"id":595,"name":596,"points":597,"category":598},"43593789","Whatsit",513,"games",{"id":600,"name":601,"points":602,"category":593},"43614285","Lux",268,{"id":604,"name":605,"points":606,"category":593},"43627758","DrawDB",263,{"id":608,"name":609,"points":610,"category":593},"43573539","GitMCP",185,{"id":612,"name":613,"points":614,"category":615},"43569724","C3",175,"languages",false,"v2",{"id":619,"name":5,"line":6,"ai":616,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":620,"top":18,"kw":621,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":622,"url":9,"mix":623,"praise":109,"objection":123,"sub":21},43569190,-0.26,[21,24,25,26,27],"1111131113511301111553550322305333331152",[31,32,33,34],1794036672240]