[{"data":1,"prerenderedAt":210},["ShallowReactive",2],{"portfolio-bitebuddy-food-app":3,"all-portfolio":190},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"category":9,"client":10,"timeline":11,"role":12,"date":13,"tags":14,"body":22,"_type":184,"_id":185,"_source":186,"_file":187,"_stem":188,"_extension":189},"\u002Fportfolio\u002Fbitebuddy-food-app","portfolio",false,"","BiteBuddy — แอปค้นหาร้านอาหารและรีวิวเพื่อชุมชน","Mobile","BiteBuddy Co., Ltd.","16 สัปดาห์","Mobile Development, AI Integration, UX Research","2023-08-01",[15,16,17,18,19,20,21],"Flutter","Firebase","Google Maps","OpenAI API","Node.js","TypeScript","Redis",{"type":23,"children":24,"toc":172},"root",[25,33,39,45,52,65,77,83,88,94,99,105,123,128],{"type":26,"tag":27,"props":28,"children":30},"element","h2",{"id":29},"ที่มาของไอเดีย",[31],{"type":32,"value":29},"text",{"type":26,"tag":34,"props":35,"children":36},"p",{},[37],{"type":32,"value":38},"ลูกค้ามาหาเราพร้อมกับปัญหาที่คนไทยหลายล้านคนเจอทุกวัน: \"จะกินอะไรดี?\" — แต่วิธีแก้ปัญหาที่มีอยู่ (Google Maps, Wongnai) ให้ผลลัพธ์ที่กว้างเกินไป ไม่ contextual และไม่รู้สึกเป็น \"เพื่อนแนะนำ\"",{"type":26,"tag":27,"props":40,"children":42},{"id":41},"features-ที่น่าสนใจ",[43],{"type":32,"value":44},"Features ที่น่าสนใจ",{"type":26,"tag":46,"props":47,"children":49},"h3",{"id":48},"วันนี้กินอะไรดี-ai-recommendation",[50],{"type":32,"value":51},"\"วันนี้กินอะไรดี?\" AI Recommendation",{"type":26,"tag":34,"props":53,"children":54},{},[55,57,63],{"type":32,"value":56},"ระบบถามเพียง 3 คำถามสั้น (อารมณ์, งบ, คนกี่คน) แล้วแนะนำร้านที่ match ด้วย ",{"type":26,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":32,"value":62},"OpenAI GPT-4o-mini",{"type":32,"value":64}," ที่มี context ของร้านในฐานข้อมูล",{"type":26,"tag":34,"props":66,"children":67},{},[68,70,75],{"type":32,"value":69},"เราออกแบบให้ AI response เป็น ",{"type":26,"tag":58,"props":71,"children":72},{},[73],{"type":32,"value":74},"structured JSON",{"type":32,"value":76}," เสมอ เพื่อให้ parse ง่ายและ fallback ได้เมื่อ AI ตอบผิด format",{"type":26,"tag":46,"props":78,"children":80},{"id":79},"hyperlocal-review-system",[81],{"type":32,"value":82},"Hyperlocal Review System",{"type":26,"tag":34,"props":84,"children":85},{},[86],{"type":32,"value":87},"รีวิวแบ่งตาม \"context\" — รีวิวสำหรับกินคนเดียว vs มาเป็นครอบครัว vs business lunch ให้ผู้ใช้เลือก context ที่ตรงกับตัวเองก่อนอ่านรีวิว",{"type":26,"tag":46,"props":89,"children":91},{"id":90},"real-time-คนกำลังกินอยู่",[92],{"type":32,"value":93},"Real-time \"คนกำลังกินอยู่\"",{"type":26,"tag":34,"props":95,"children":96},{},[97],{"type":32,"value":98},"แสดงจำนวน active user ที่ check-in ร้านนั้น ณ ขณะนั้น ทำให้รู้ว่าร้านคึกคักไหม โดยไม่ต้องโทรถาม",{"type":26,"tag":27,"props":100,"children":102},{"id":101},"architecture-decision-firebase-vs-custom-backend",[103],{"type":32,"value":104},"Architecture Decision: Firebase vs Custom Backend",{"type":26,"tag":34,"props":106,"children":107},{},[108,110,114,116,121],{"type":32,"value":109},"เราตัดสินใจใช้ ",{"type":26,"tag":58,"props":111,"children":112},{},[113],{"type":32,"value":16},{"type":32,"value":115}," สำหรับ auth, realtime features และ push notifications แต่ ",{"type":26,"tag":58,"props":117,"children":118},{},[119],{"type":32,"value":120},"Node.js custom API",{"type":32,"value":122}," สำหรับ restaurant data และ AI calls เพราะ Firebase query ไม่ flexible พอสำหรับ geo-based search ที่ซับซ้อน",{"type":26,"tag":27,"props":124,"children":126},{"id":125},"ผลลัพธ์",[127],{"type":32,"value":125},{"type":26,"tag":129,"props":130,"children":131},"ul",{},[132,138,155,160],{"type":26,"tag":133,"props":134,"children":135},"li",{},[136],{"type":32,"value":137},"28,000+ downloads ใน 4 เดือนแรก (organic, no paid ads)",{"type":26,"tag":133,"props":139,"children":140},{},[141,143,148,150],{"type":32,"value":142},"App Store Rating: ",{"type":26,"tag":58,"props":144,"children":145},{},[146],{"type":32,"value":147},"4.5 ⭐",{"type":32,"value":149}," Play Store: ",{"type":26,"tag":58,"props":151,"children":152},{},[153],{"type":32,"value":154},"4.4 ⭐",{"type":26,"tag":133,"props":156,"children":157},{},[158],{"type":32,"value":159},"Daily Active Users: 4,800 (17% DAU\u002FMAU ratio)",{"type":26,"tag":133,"props":161,"children":162},{},[163,165,170],{"type":32,"value":164},"AI recommendation feature ถูกใช้ ",{"type":26,"tag":58,"props":166,"children":167},{},[168],{"type":32,"value":169},"43%",{"type":32,"value":171}," ของ sessions",{"title":7,"searchDepth":173,"depth":173,"links":174},2,[175,176,182,183],{"id":29,"depth":173,"text":29},{"id":41,"depth":173,"text":44,"children":177},[178,180,181],{"id":48,"depth":179,"text":51},3,{"id":79,"depth":179,"text":82},{"id":90,"depth":179,"text":93},{"id":101,"depth":173,"text":104},{"id":125,"depth":173,"text":125},"markdown","content:portfolio:bitebuddy-food-app.md","content","portfolio\u002Fbitebuddy-food-app.md","portfolio\u002Fbitebuddy-food-app","md",[191,195,199,202,206,209],{"_path":192,"title":193,"category":194},"\u002Fportfolio\u002Ffreshmarket-platform","FreshMarket — แพลตฟอร์มตลาดสดออนไลน์","E-commerce",{"_path":196,"title":197,"category":198},"\u002Fportfolio\u002Fmedsync-dashboard","MedSync — ระบบจัดการคลินิกและนัดหมายผู้ป่วย","SaaS",{"_path":200,"title":201,"category":9},"\u002Fportfolio\u002Frunclub-app","RunClub — แอปสำหรับชมรมวิ่งและ community นักวิ่งไทย",{"_path":203,"title":204,"category":205},"\u002Fportfolio\u002Fbaan-design-studio","Baan Design Studio — Portfolio Website สำหรับสตูดิโอออกแบบ","Web",{"_path":207,"title":208,"category":198},"\u002Fportfolio\u002Forchard-saas","Orchard — HR & Payroll SaaS สำหรับ SME ไทย",{"_path":4,"title":8,"category":9},1779878303633]