[{"data":1,"prerenderedAt":426},["ShallowReactive",2],{"project-30778100":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":49,"post_text":50,"what":51,"said":98,"maker_in_thread":224,"shape":231,"grid":235,"attempts":388,"same_week":389,"maker_shows":43,"maker_hidden":418,"reader_version":419,"card":420},"30778100","Metarank","An open-source personalization engine","title","Show HN: We made an open-source personalization engine","https:\u002F\u002Fgithub.com\u002Fmetarank\u002Fmetarank","github.com","shutty",1648041164,2022,284,60,152,2570,6,"legend","ai","personalization engine","library",[21,24,25,26,27],"learning to rank","recommendation system","reranking","lambdamart","mixed",-0.126,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,20,3,10,42,{"pricing":37,"docs":39,"idea":41,"execution":44,"performance":46,"design":47,"privacy":48},{"positive":38,"critical":38},0,{"positive":38,"critical":40},1,{"positive":42,"critical":43},4,2,{"positive":38,"critical":45},5,{"positive":38,"critical":40},{"positive":38,"critical":40},{"positive":38,"critical":38},[38,45,38,33,45,33,38,40,38,40,38,38,38,33,38,33,40,40,40,45,40,45,40,33,33,45,33,45,45,40,38,33,40,33,33,40,33,38,38,45],"Hey, HN! You probably know that the ordering of products on Amazon, posts in FB, and search results in Google is personalized for each visitor, as it directly affects conversion, click rate and engagement. But not everyone can afford to hire an army of PhDs to squeeze every penny out of the ranking, and not everyone agrees on the current (im)balance between privacy and profits.\n\nSo we built Metarank, an open-source and privacy-focused personalization engine. It can rerank in real-time any type of content, using only the data you allow, and optimize metrics you define.\n\nWe made a lot of proprie",{"problem":52,"audience":61,"pricing":69,"motivation":70,"time_to_build":69,"stack":74,"openness":95,"stage":96,"team_size":97},{"value":53,"source":54,"evidence":55},"Building personalized ranking and recommendations in-house is costly and slow.","maker",[56,58],{"id":57},"post",{"id":59,"by":11,"text":60},"30778429","I’m one of the contributors to this project. The idea of the tool is to focus on typical ML feature engineering challenges. It takes a stream of business events like clicks and…",{"value":62,"source":54,"evidence":63},"Developers and businesses, especially e-commerce, without large ML teams.",[64,65],{"id":57},{"id":66,"by":67,"text":68},"30778565","vgoloviznin","That's exactly the problem we want to tackle - democratize machine learning, to make more developers and businesses apply it",null,{"value":71,"source":54,"evidence":72},"Make personalization easy for companies that cannot afford in-house ML teams.",[73],{"id":57},[75,81,85,91],{"value":76,"source":54,"evidence":77},"Scala",[78],{"id":79,"by":11,"text":80},"30780777","The same question can be asked about JavaScript, but it's still one of the most popular languages in the world :) It's a common wisdom to use a language you know best for an MVP…",{"value":82,"source":54,"evidence":83},"XGBoost (LambdaMART)",[84],{"id":59,"by":11,"text":60},{"value":86,"source":54,"evidence":87},"Apache Flink",[88],{"id":89,"by":11,"text":90},"30779127","Right now it runs in a dev-mode on a single EC2 t3.large instance with loadavg ~0.30, but the inference load is quite tiny right now: around 3-4 reranking requests per second.…",{"value":92,"source":54,"evidence":93},"Redis",[94],{"id":89,"by":11,"text":90},"open_source","beta","team",{"praise":99,"objections":119,"requests":160,"questions":186,"alternatives":212},[100,112],{"value":101,"source":102,"evidence":103},"Useful benchmark and fast starting point for teams","commenter",[104,108],{"id":105,"by":106,"text":107},"30778775","kqr","Not only could it be good enough -- it's a great reference to benchmark commercial custom solutions against! (And I say this as an engineer working on one of those commercial…",{"id":109,"by":110,"text":111},"30778406","czbond","Very cool - I haven't had time to peruse the offering or code, but it seems like a very needed tool for industries and small businesses which don't have the resources to make it…",{"value":113,"source":102,"evidence":114},"Strong GitHub interest after launch",[115],{"id":116,"by":117,"text":118},"30789148","nonoesp","Crazy that the GitHub repo went from almost no starts to 800+ in one day.",[120,131,138,149],{"value":121,"source":102,"evidence":122},"Generic ML personalization is unlikely to beat well-designed rules or domain feature engineering",[123,127],{"id":124,"by":125,"text":126},"30779615","danpalmer","> Metarank is industry-agnostic and can be used in any place of your application where some content is displayed. I'm afraid I'm skeptical. Content ranking in small, well defined…",{"id":128,"by":129,"text":130},"30790056","naijaboiler","Excellent. A system like this barely beats if at all simple rule based approach, which are easier to implement, easier to explain. When use case demands it, domain relevant…",{"value":132,"source":102,"evidence":133},"Personalization can make search results worse for some users",[134],{"id":135,"by":136,"text":137},"30779603","thih9","What's a scenario or a method to apply a personalization engine that gives the lowest chance of making the overall UX worse? I usually dislike personalized content, I prefer…",{"value":139,"source":102,"evidence":140},"Demo was down or unresponsive under load",[141,145],{"id":142,"by":143,"text":144},"30778764","mushufasa","This is super interesting! On the demo page, nothing is happening when I try clicking on any of the buttons. I'm in a browser with no adblocking or jsblocking. Is this just the…",{"id":146,"by":147,"text":148},"30779131","nwsm","Hug of death on the demo app. (504 on calls to https:\u002F\u002Fdemo-api.metarank.ai:3000\u002Fmovies)",{"value":150,"source":102,"evidence":151},"MetaMask flags the metarank.ai domain as a phishing risk",[152,156],{"id":153,"by":154,"text":155},"30778828","Sharma","BTW, accessing metarank.ai gives warning. May be because it has Meta in its domain name but Metamask shows this message -- This domain is currently on the MetaMask domain warning…",{"id":157,"by":158,"text":159},"30779121","punkspider","Same here, when using my default Chrome profile, with uBlock disabled. However it seems to work in incognito. EDIT: If you're using Metamask, I think that's the reason. After…",[161,172,179],{"value":162,"source":102,"evidence":163},"Integration with Elasticsearch, Medusa or other search and e-commerce systems",[164,168],{"id":165,"by":166,"text":167},"30782896","dmitrykan","Great project! Elasticsearch \u002F OpenSearch \u002F Solr have their own learning to rank plugins. Have you considered integrating Metarank with such systems? Or is your vision to provide…",{"id":169,"by":170,"text":171},"30779319","sebrindom","Soo cool would love to see this integrated with https:\u002F\u002Fgithub.com\u002Fmedusajs\u002Fmedusa",{"value":173,"source":102,"evidence":174},"Reinforcement learning or bandit-based reranking",[175],{"id":176,"by":177,"text":178},"30779595","nelsondev","Very cool! Thanks for sharing. Rather than an offline model, why not use an online, continuously relearning model like a Multi-Armed Bandit to do the re-ranking?",{"value":180,"source":102,"evidence":181},"Dockerfile published and fix for missing libgomp in Docker",[182],{"id":183,"by":184,"text":185},"30786241","themgt","Could you publish the Dockerfile? When attempting to run train in Docker according to tutorial instructions I get \"Cannot load library: java.lang.UnsatisfiedLinkError:…",[187,198,205],{"value":188,"source":102,"evidence":189},"Infrastructure cost to train and run the service",[190,194],{"id":191,"by":192,"text":193},"30778818","Ennergizer","What are approximate the costs in your demo https:\u002F\u002Fdemo.metarank.ai\u002F example to train and run the service?",{"id":195,"by":196,"text":197},"30785568","dannywarner","What budget for cloud infrastructure for 100K\u002Fmo buyers to an ecommerce website, approximate range, with typical purchase habits? I am new to Flink. We use Redis in production.",{"value":199,"source":102,"evidence":200},"Whether users can self-train models from scratch",[201],{"id":202,"by":203,"text":204},"30779167","jka","From reading some of the repository and architecture overview, I think this is true, but: could you confirm that users of metarank can self-train their own models from scratch?",{"value":206,"source":102,"evidence":207},"Privacy implications of stored learning",[208],{"id":209,"by":210,"text":211},"30779164","orliesaurus","Are there any privacy implications? i.e. you're learning to show me the best results based on my experience, what happens to that learning when I leave the site?",[213,220],{"value":214,"source":102,"evidence":215},"Elasticsearch LTR plugin",[216,217],{"id":165,"by":166,"text":167},{"id":218,"by":67,"text":219},"30787907","We were considering creating a plugin for elasticsearch, but there's already one (ES-LTR) and such architecture limits the ability to create a good multi-purpose system. We're…",{"value":221,"source":102,"evidence":222},"In-house custom recommender solutions",[223],{"id":105,"by":106,"text":107},{"comments":18,"answered":45,"key":225},[226,227,228],{"id":59,"text":60},{"id":89,"text":90},{"id":229,"text":230},"30779233","This is actually part of our CI process: https:\u002F\u002Fgithub.com\u002Fmetarank\u002Fmetarank\u002Fblob\u002Fmaster\u002Frun_e2e.sh . This script runs on every PR to retrain the model used on a demo and…",{"commenters":232,"max_depth":18,"maker_replies":18,"first_comment_mins":233,"lifespan_hours":234},40,35,25,[236,238,240,242,244,246,247,250,251,255,258,261,263,265,267,270,273,276,279,282,286,289,292,294,295,296,299,301,302,303,306,309,312,313,317,319,322,325,326,328,332,335,337,339,342,345,348,350,352,357,359,363,366,370,373,377,378,381,384,386],[59,38,38,237,11,40],"maker\u002Fneutral\u002Fidea",[105,38,45,239,106,38],"project\u002Fpositive\u002Fnone",[191,38,33,241,192,38],"project\u002Fneutral\u002Fpricing",[89,38,38,243,11,40],"project\u002Fneutral\u002Fperformance",[202,38,33,245,203,38],"project\u002Fneutral\u002Fdocs",[229,38,38,245,11,40],[248,38,45,249,203,38],"30781132","maker\u002Fpositive\u002Fnone",[195,38,33,241,196,38],[252,38,38,253,254,38],"30782198","other\u002Fneutral\u002Fnone","airstrike",[256,38,38,253,257,38],"30782312","nanidin",[259,38,38,253,260,38],"30782803","tinus_hn",[124,40,40,262,125,38],"project\u002Fcritical\u002Fidea",[128,40,38,264,129,38],"commenter\u002Fcritical\u002Fidea",[153,43,40,266,154,38],"project\u002Fcritical\u002Fexecution",[268,43,33,269,67,38],"30778858","maker\u002Fneutral\u002Fnone",[271,43,38,253,272,38],"30778962","skilled",[274,43,38,253,275,38],"30782109","prionassembly",[277,43,38,253,278,38],"30778970","swyx",[280,43,38,281,11,40],"30779447","project\u002Fneutral\u002Fexecution",[283,43,38,284,285,38],"30780080","other\u002Fcritical\u002Fnone","oauea",[287,43,33,269,288,38],"30780155","Legogris",[290,43,38,253,291,38],"30780616","detaro",[165,33,33,293,166,38],"project\u002Fneutral\u002Fidea",[218,33,33,293,67,38],[142,42,40,266,143,38],[297,42,40,266,298,38],"30778780","hirako2000",[300,42,33,243,67,38],"30778832",[157,42,40,266,158,38],[135,45,33,293,136,38],[304,45,45,305,67,38],"30780789","project\u002Fpositive\u002Fidea",[307,45,40,262,308,38],"30781329","_jal",[310,18,45,305,311,38],"30778513","charcircuit",[66,18,33,237,67,38],[314,315,40,266,316,38],"30782010",7,"GrumpyNl",[318,315,33,243,67,38],"30788184",[183,320,33,321,184,38],8,"project\u002Fmixed\u002Fexecution",[323,320,33,324,67,38],"30788155","maker\u002Fneutral\u002Fexecution",[169,31,45,305,170,38],[327,31,33,269,67,38],"30780755",[329,34,33,330,331,38],"30785713","project\u002Fmixed\u002Fdesign","bredren",[333,34,33,334,67,38],"30787491","project\u002Fneutral\u002Fdesign",[109,336,45,305,110,38],11,[338,336,45,249,67,38],"30778608",[146,340,40,341,147,38],12,"project\u002Fcritical\u002Fperformance",[209,343,33,344,210,38],13,"project\u002Fneutral\u002Fprivacy",[346,343,38,347,11,40],"30779700","project\u002Fpositive\u002Fprivacy",[176,349,33,293,177,38],14,[351,349,33,293,67,38],"30780869",[353,354,40,355,356,38],"30784415",15,"project\u002Fcritical\u002Fdesign","gizmodo59",[358,354,33,334,67,38],"30788178",[360,361,33,362,117,38],"30778522",16,"project\u002Fmixed\u002Fdocs",[364,361,33,365,67,38],"30778551","maker\u002Fneutral\u002Fdocs",[367,361,40,368,369,38],"30778686","project\u002Fcritical\u002Fdocs","dewey",[371,361,38,253,372,38],"30778619","joemaffei",[374,375,33,281,376,38],"30779766",17,"minroot",[79,375,38,281,11,40],[379,375,38,253,380,38],"30781526","gmartres",[382,375,38,253,383,38],"30782127","threeseed",[116,385,45,239,117,38],18,[387,385,45,249,67,38],"30790030",[],[390,395,400,405,409,414],{"id":391,"name":392,"points":393,"category":394},"30733339","Back Of Your Hand",654,"games",{"id":396,"name":397,"points":398,"category":399},"30769044","Appwrite",326,"infrastructure",{"id":401,"name":402,"points":403,"category":404},"30720834","Oh-heck",250,"dev_tools",{"id":406,"name":407,"points":408,"category":394},"30720259","ByteLegend",229,{"id":410,"name":411,"points":412,"category":413},"30723793","Calenday",207,"productivity",{"id":415,"name":416,"points":417,"category":399},"30709524","PDF API",204,false,"v2",{"id":421,"name":5,"line":6,"ai":418,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":422,"top":18,"kw":423,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":424,"url":9,"mix":425,"praise":101,"objection":121,"sub":21},30778100,-0.13,[21,24,25,26,27],"0503530101000303111515133535510313313005",[31,32,33,34],1793991043155]