[{"data":1,"prerenderedAt":318},["ShallowReactive",2],{"project-43242818":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":33,"aspects":34,"strip":42,"post_text":44,"what":45,"said":91,"maker_in_thread":178,"shape":190,"grid":193,"attempts":279,"same_week":280,"maker_shows":36,"maker_hidden":310,"reader_version":311,"card":312},"43242818","Foudinge","Knowledge graph of restaurants and chefs, built using LLMs","title","Show HN: Knowledge graph of restaurants and chefs, built using LLMs","https:\u002F\u002Ftheophilecantelob.re\u002Fblog\u002F2025\u002Ffoudinge\u002F","theophilecantelob.re","theophilec",1741016600,2025,201,39,321,3837,9,"notable","data","knowledge graph","web_app",[21,24,25,26,27],"llm extraction","restaurant reviews","gephi","structured generation","debated",0.046,{"positive":31,"neutral":18,"mixed":32,"critical":31},6,0,21,{"design":35,"idea":38,"execution":39,"performance":40},{"positive":36,"critical":37},1,3,{"positive":36,"critical":36},{"positive":32,"critical":32},{"positive":36,"critical":41},2,[36,32,32,36,32,43,37,37,43,32,43,32,36,37,32,43,32,43,32,37,32,37,37,37,32,37,36,43,32,36,37,36,32,32,32],5,"Hi HN!\n\nMy latest side project is knowledge graph that maps the French culinary network using data extracted from restaurant reviews from LeFooding.com. The project uses LLMs to extract structured information from unstructured text.\n\nSome technical aspects you may be interested in:\n\n- Used structured generation to reliably parse unstructured text into a consistent schema\n\n- Tested multiple models (Mistral-7B-v0.3, Llama3.2-3B, gpt4o-mini) for information extraction\n\n- Created an interactive visualization using gephi-lite and Retina (WebGL)\n\n- Built (with Claude) a simple Flask web app to clean",{"problem":46,"audience":52,"pricing":52,"motivation":53,"time_to_build":52,"stack":57,"openness":89,"stage":90,"team_size":90},{"value":47,"source":48,"evidence":49},"Maps the French culinary network of chefs and restaurants from restaurant reviews","maker",[50],{"id":51},"post",null,{"value":54,"source":48,"evidence":55},"Side project",[56],{"id":51},[58,62,66,73,77,81,85],{"value":59,"source":48,"evidence":60},"Mistral-7B-v0.3",[61],{"id":51},{"value":63,"source":48,"evidence":64},"Llama3.2-3B",[65],{"id":51},{"value":67,"source":48,"evidence":68},"gpt4o-mini",[69,70],{"id":51},{"id":71,"by":11,"text":72},"43244907","Local models hallucinated a lot more that gpt4o-mini, so I stayed with OpenAI. On top of that, I paid around 14€ for inference on ~200 examples on OVH and inference was much…",{"value":74,"source":48,"evidence":75},"Flask",[76],{"id":51},{"value":78,"source":48,"evidence":79},"Gephi-lite",[80],{"id":51},{"value":82,"source":48,"evidence":83},"Retina (WebGL)",[84],{"id":51},{"value":86,"source":48,"evidence":87},"SQLite",[88],{"id":71,"by":11,"text":72},"open_source","unknown",{"praise":92,"objections":112,"requests":126,"questions":152,"alternatives":167},[93,105],{"value":94,"source":95,"evidence":96},"Cool application of graph search and LLM extraction","commenter",[97,101],{"id":98,"by":99,"text":100},"43243733","arnath","This is a super cool idea! I've sort of mused about an idea for general web search that's very similar to this concept, where you start with a set of trusted entities and then…",{"id":102,"by":103,"text":104},"43244727","jonnycoder","This looks great! I was just looking for a good web knowledge graph visualizer.",{"value":106,"source":95,"evidence":107},"Positive reception of the updated visualization",[108],{"id":109,"by":110,"text":111},"43256845","tantalor","Yes! This looks amazing. Thanks! I made a mistake; I had checked the other link in your post (\"You can explore the visualization here: [Interactive Culinary Network]\") instead of…",[113,122],{"value":114,"source":95,"evidence":115},"Node layout looks random and disorganized",[116,119],{"id":117,"by":110,"text":118},"43243249","The embedding is kind of weird. Like, there's no reason a \"degree: 1\" node should be so far away from its sibling. Example: https:\u002F\u002Fimgur.com\u002Fa\u002F7Cktyzp This makes the graph look…",{"id":120,"by":110,"text":121},"43254270","The \"Chloé Woestelandt\" test is still just as bad",{"value":123,"source":48,"evidence":124},"Local models hallucinated more than gpt4o-mini",[125],{"id":71,"by":11,"text":72},[127,138,145],{"value":128,"source":95,"evidence":129},"Use a better layout algorithm such as UMAP, tSNE or hiveplot",[130,134],{"id":131,"by":132,"text":133},"43244026","visarga","Yeah, they should have used UMAP or tSNE to cluster the data a bit",{"id":135,"by":136,"text":137},"43244857","peppery","Since you did the hard work of parsing rich metadata already, it would be even cooler if your network visualization oriented nodes by some of this information. Here the…",{"value":139,"source":95,"evidence":140},"Try multimodal models",[141],{"id":142,"by":143,"text":144},"43243552","repsiace","Looks interesting, have you tried utilizing a multimodal model?",{"value":146,"source":95,"evidence":147},"Support for other review datasets beyond LeFooding",[148],{"id":149,"by":150,"text":151},"43277743","pranavm27","Do you think this will work as effectively with Google or Social Media review and rating datasets? As every country may not have a LeFooding.com Would like to here everyone's…",[153,160],{"value":154,"source":95,"evidence":155},"How does it compare to a specialized classification model versus a generative LLM",[156],{"id":157,"by":158,"text":159},"43244265","nluken","Given the structured nature of the data, how does this compare to running a specialized classification model that looks for specific words in a review and uses those to assign…",{"value":161,"source":95,"evidence":162},"Whether JSON mode was used for structured output with gpt4o-mini",[163],{"id":164,"by":165,"text":166},"43245143","bevan","This was inspiring, what a cool idea. Just curious—-for 4o mini isn’t there a json mode that reliably produces structured output? Was that what you were referring to \u002F ended up…",[168],{"value":169,"source":95,"evidence":170},"Named entity recognition models such as spaCy",[171,174],{"id":172,"by":11,"text":173},"43244464","The data is initially not at all structured, and the critics talk about a chef's CV in passing. For instance, take this example: > At Grenat, Antoine Joannier and Neil Mahatsry…",{"id":175,"by":176,"text":177},"43260792","varelaseb","LLMs have without a doubt replaced NER models and libraries like SpaCy. At least for my use-cases, creating ontologies and populating knowledge graphs.",{"comments":179,"answered":37,"key":180},10,[181,184,187],{"id":182,"text":183},"43243323","I agree the spatialization could be better. I used one of the algorithms in Gephi-lite directly. Do you have a favorite spatialization algorithm to recommend?",{"id":185,"text":186},"43253904","FYI I updated the visualization. Credit goes to @jacomyal from @ouestware on GitHub who helped me out.",{"id":188,"text":189},"43256651","I see this: https:\u002F\u002Fimgur.com\u002Fa\u002FSGnbXjG",{"commenters":33,"max_depth":31,"maker_replies":179,"first_comment_mins":191,"lifespan_hours":192},13,65,[194,196,198,200,201,202,204,205,206,208,212,216,219,222,224,226,228,229,231,234,236,238,241,245,249,250,251,255,259,262,264,266,271,274,276],[117,32,36,195,110,32],"project\u002Fcritical\u002Fdesign",[182,32,32,197,11,36],"maker\u002Fneutral\u002Fdesign",[185,32,32,199,11,36],"project\u002Fneutral\u002Fdesign",[120,32,36,195,110,32],[188,32,32,199,11,36],[109,32,43,203,110,32],"project\u002Fpositive\u002Fdesign",[131,32,37,199,132,32],[135,32,37,199,136,32],[98,36,43,207,99,32],"project\u002Fpositive\u002Fidea",[209,36,32,210,211,32],"43245742","other\u002Fneutral\u002Fidea","fads_go",[213,41,43,214,215,32],"43242992","project\u002Fpositive\u002Fnone","moandcompany",[217,41,32,218,11,36],"43243113","maker\u002Fpositive\u002Fnone",[220,41,36,195,221,32],"43245092","dylan604",[157,37,37,223,158,32],"project\u002Fneutral\u002Fidea",[172,37,32,225,11,36],"maker\u002Fneutral\u002Fidea",[227,37,43,218,158,32],"43245076",[175,37,32,210,176,32],[102,230,43,214,103,32],4,[232,230,32,233,11,36],"43264555","maker\u002Fneutral\u002Fnone",[164,43,37,235,165,32],"maker\u002Fneutral\u002Fexecution",[237,43,32,235,11,36],"43245875",[239,31,37,223,240,32],"43244295","holtwork",[242,243,37,223,244,32],"43248022",7,"drabbiticus",[246,247,37,235,248,32],"43244733",8,"nswanberg",[71,247,32,235,11,36],[149,18,37,223,150,32],[252,179,36,253,254,32],"43243553","project\u002Fcritical\u002Fperformance","nickthegreek",[256,179,43,257,258,32],"43243576","project\u002Fpositive\u002Fperformance","speerer",[260,179,32,261,11,36],"43243579","maker\u002Fneutral\u002Fperformance",[263,179,36,253,254,32],"43243781",[142,265,37,235,143,32],11,[267,268,36,269,270,32],"43242954",12,"project\u002Fcritical\u002Fidea","martinky24",[272,268,32,273,215,32],"43243013","commenter\u002Fneutral\u002Fnone",[275,268,32,233,11,36],"43243165",[277,268,32,273,278,32],"43243016","neuroelectron",[],[281,286,291,296,301,306],{"id":282,"name":283,"points":284,"category":285},"43255529","Bayleaf",735,"hardware",{"id":287,"name":288,"points":289,"category":290},"43223718","Berlin Swapfest",308,"web_saas",{"id":292,"name":293,"points":294,"category":295},"43230994","Kaguya",254,"productivity",{"id":297,"name":298,"points":299,"category":300},"43243893","Agents.json",212,"ai",{"id":302,"name":303,"points":304,"category":305},"43196374","Superglue",198,"infrastructure",{"id":307,"name":308,"points":309,"category":300},"43269330","pokerl",183,false,"v2",{"id":313,"name":5,"line":6,"ai":310,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":314,"top":18,"kw":315,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":316,"url":9,"mix":317,"praise":94,"objection":114,"sub":21},43242818,0.05,[21,24,25,26,27],"10010533505013050503033303150131000",[31,18,32,31],1794036670619]