works · ผลิตภัณฑ์ของเรา
คุมทุน (KUMTUN) — ระบบ POS ที่บอกกำไรต่อแก้ว
ระบบ POS ร้านอาหารและเครื่องดื่มที่ผูกสูตรวัตถุดิบกับทุกเมนู คิดต้นทุนจริงต่อแก้ว ตัดสต็อกอัตโนมัติ และขายต่อได้แม้เน็ตล่ม — ผลิตภัณฑ์ที่เราสร้างเองและมีร้านค้าใช้งานอยู่จริงทุกวัน

โจทย์ที่เจอซ้ำจนต้องลงมือทำเอง
ถามเจ้าของร้านเครื่องดื่มว่า "วันนี้ขายได้เท่าไหร่" ตอบได้ทันที ถามต่อว่า "แล้วกำไรกี่บาท" เงียบ
นี่ไม่ใช่เพราะเจ้าของร้านไม่ใส่ใจ แต่เพราะ POS ในตลาดออกแบบมาเพื่อ บันทึกการขาย ไม่ใช่เพื่อ บอกกำไร ระบบรู้ว่าขายชานมไข่มุกไป 120 แก้ว แต่ไม่รู้ว่าแต่ละแก้วใช้ผงชาไปกี่กรัม และผงชาถุงล่าสุดซื้อมาแพงกว่าเดิม 15%
ปัญหาที่สองเจอหนักในต่างจังหวัด — เน็ตหลุดแล้วขายไม่ได้ POS บนคลาวด์ส่วนใหญ่ต้องต่อเน็ตตลอดเวลา พอสัญญาณตกช่วงเย็นที่คนแน่นร้าน พนักงานต้องกลับไปจดใส่กระดาษ แล้วมานั่งคีย์ย้อนหลังตอนดึก
เราเจอโจทย์นี้จากหน้างานจริงบ่อยจนตัดสินใจว่า แทนที่จะรับจ้างทำให้คนอื่นอย่างเดียว เราสร้างของเราเอง
สิ่งที่เราสร้าง
1. ผูกสูตรวัตถุดิบกับทุกเมนู ชานมไข่มุกแก้วใหญ่ = ผงชา 30g + นมข้นจืด 30ml + ไข่มุก 80g + แก้ว/ฝา/หลอด ระบบคิดต้นทุนถัวเฉลี่ยจากราคาที่ซื้อเข้าจริง ไม่ใช่ราคาที่ตั้งไว้ตอนแรก ของขึ้นราคาเมื่อไหร่ ต้นทุนขยับตามทันที
2. Offline-first ตั้งแต่บรรทัดแรก ไม่ใช่ฟีเจอร์ที่มาเติมทีหลัง — เปิดบิล คิดเงิน พิมพ์ใบเสร็จ ทำได้ครบโดยไม่ต้องมีอินเทอร์เน็ต บิลที่ค้างจะซิงก์ขึ้นเซิร์ฟเวอร์เองเมื่อสัญญาณกลับมา พนักงานไม่ต้องรู้ด้วยซ้ำว่าเน็ตหลุดไปตอนไหน
3. ตัดสต็อกอัตโนมัติเมื่อขาย ขายไป 1 แก้ว วัตถุดิบในสต็อกลดลงตามสูตรทันที ของใกล้หมดระบบเตือนก่อน ไม่ต้องเดินไปนับหลังร้านทุกเย็นแล้วค่อยรู้ว่าผงชาหมดตั้งแต่เมื่อวาน
4. ล็อกสิทธิ์ไม่ให้เห็นต้นทุน พนักงานใช้หน้าขายได้เต็มที่ แต่ตัวเลขต้นทุนและกำไรเห็นเฉพาะเจ้าของกับผู้จัดการที่กำหนดไว้ แยกข้อมูลระดับฐานข้อมูล ไม่ใช่แค่ซ่อนปุ่มบนหน้าจอ
5. ปิดกะแล้วเงินต้องตรง เปิด–ปิดยอดกะแบบ X/Z พนักงานปิดกะแล้วเงินในลิ้นชักต้องตรงกับที่ระบบบันทึก ส่วนต่างเท่าไหร่เห็นทันทีตั้งแต่วันนั้น ไม่ใช่มารู้ตอนสิ้นเดือน
พร้อมกับใบเสร็จและใบกำกับภาษีอย่างย่อ (ABB) รองรับหลายสาขา และพิมพ์ผ่านเครื่องพิมพ์บลูทูธมาตรฐาน ESC/POS ที่หาซื้อได้หลักร้อยถึงพันต้น ๆ
ทำไม offline-first ถึงยากกว่าที่คิด
การทำให้แอป "ใช้ตอนไม่มีเน็ตได้" ไม่ใช่แค่ cache ข้อมูลไว้ ปัญหาจริงคือ เมื่อสองเครื่องขายพร้อมกันตอนออฟไลน์ แล้วกลับมาออนไลน์พร้อมกัน ใครถูก
เราแก้ด้วย outbox pattern — ทุกการกระทำถูกบันทึกเป็นรายการรอส่งในเครื่องก่อน แล้วค่อยทยอยส่งขึ้นเซิร์ฟเวอร์ตามลำดับเวลาจริง เลขที่บิลถูกจองล่วงหน้าเป็นช่วงต่อเครื่อง จึงไม่มีวันชนกัน และการตัดสต็อกคำนวณจากผลรวมของรายการทั้งหมด ไม่ใช่จากตัวเลขที่แต่ละเครื่องจำไว้เอง
เรื่องพวกนี้ต้องออกแบบตั้งแต่วันแรก ถ้าสร้างระบบออนไลน์ก่อนแล้วมาเติมทีหลัง จะได้ระบบที่ "พอใช้ได้ตอนเน็ตหลุด" ซึ่งไม่พอสำหรับร้านที่ต้องเปิดบิลจริงทุกนาที
ผลลัพธ์
เจ้าของร้านเปิดแอปแล้วเห็นทันทีว่าวันนี้ขายได้เท่าไหร่ และเหลือกำไรจริงกี่บาท เห็นด้วยว่าเมนูไหนขายดีแต่กำไรบาง เมนูไหนขายน้อยแต่คุ้ม และรู้ก่อนขาดทุนเมื่อวัตถุดิบขึ้นราคา แทนที่จะรู้ตอนสิ้นเดือน
เปิดตัวปี 2569 พร้อมโปรแกรม Founding 100 ร้านแรก ใช้ฟรี 90 วัน — และทีมเดียวกันนี้ยังดูแลระบบให้ร้านที่ใช้อยู่ทุกวัน
สถาปัตยกรรม
ฐานข้อมูล PostgreSQL บน Supabase เปิด row-level security แยกข้อมูลแต่ละร้านขาดจากกันในระดับ query ไม่ใช่ระดับโค้ดแอป — ต่อให้มีบั๊กในแอป ข้อมูลร้านหนึ่งก็อ่านข้ามไปอีกร้านไม่ได้
แอปหน้าร้านเขียนด้วย Flutter ใช้ฐานข้อมูลในเครื่องเป็นแหล่งข้อมูลหลัก (local-first) และซิงก์ผ่าน outbox ส่วนหลังบ้านสำหรับดูรายงานและจัดการสูตรเป็น Next.js
อยากได้ระบบแบบนี้
ถ้าเป็นร้านอาหารหรือร้านเครื่องดื่มทั่วไป ใช้คุมทุนได้เลย ไม่ต้องจ้างพัฒนา — แต่ถ้าธุรกิจคุณมีขั้นตอนเฉพาะ เช่น หลายสาขาแบบแฟรนไชส์ ครัวกลาง หรือต้องเชื่อมกับระบบบัญชีเดิม เรารับพัฒนาต่อยอดจากแกนเดียวกันนี้