← โปรเจกต์

Petcare Assistantเดโม

2026 · Solo developer

ผู้ช่วย AI และ CRM บน LINE สำหรับคลินิกสัตว์ ร้านอาบน้ำตัดขน และที่รับฝากเลี้ยง เปิดเป็นเดโมให้ลองใช้ ลูกค้าถาม จองคิว จ่ายมัดจำ และยกเลิกนัดได้ในแชท บอทตอบจากข้อมูลของร้านเอง และส่งต่อให้คนเมื่อเรื่องนั้นไม่ควรปล่อยให้ AI ตัดสิน

94%ผ่าน eval 225 รอบ (hold-out 71% → 84%)
10.7 msp95 ของ webhook ที่ 100 ข้อความ/วินาที
81 → 0.17 msquery ที่ RLS ทำให้ไม่ใช้ index
~2,200เทสต์บน PostgreSQL จริงใน CI
  • Next.js
  • NestJS
  • PostgreSQL + pgvector
  • Drizzle
  • Redis / BullMQ
  • OpenRouter
  • LINE Messaging API
  • LIFF
  • Docker
  • Caddy

สามเรื่องที่เปลี่ยนวิธีคิด

สิ่งที่ทำ

  • ออกแบบและสร้าง SaaS แบบ multi-tenant ที่ให้คลินิกสัตว์ ร้านอาบน้ำตัดขน และที่รับฝากเลี้ยง มีผู้ช่วย AI บน LINE พร้อม CRM เบื้องหลัง (Next.js, NestJS, PostgreSQL + pgvector, Drizzle, Redis/BullMQ, OpenRouter, LINE Messaging API + LIFF)
  • แยกข้อมูลแต่ละร้านด้วย row-level security ของ PostgreSQL ที่ตั้งค่าต่อ transaction และมีเทสต์ RLS ทุกตารางของ tenant ทุก service ตรวจ input ตรวจสิทธิ์ และบันทึก audit ใน transaction เดียวกัน
  • สร้าง LLM pipeline ที่มีด่านกั้น: เรียก tool เพื่อดูราคาและจองคิว ราคาคำนวณด้วยโค้ด (โมเดลไม่ได้คิดเอง) RAG จากฐานความรู้ของแต่ละร้าน และ output guard 7 ตัว เคสฉุกเฉินส่งแชทให้พนักงานและแจ้งเตือนทีม
  • วัดคุณภาพ AI ด้วยชุด eval และชุด hold-out ที่ไม่เคยถูกจูน: ผ่าน 94% จาก 225 รอบ hold-out ขึ้นจาก 71% เป็น 84% เทียบโมเดลทั้งคุณภาพ ความเร็ว และความปลอดภัย ต้นทุนราว 1.2 ดอลลาร์ต่อ 1,000 เทิร์น
  • กันการจองซ้อนด้วย exclusion constraint ของ PostgreSQL ทดสอบด้วยการให้ transaction จริงแข่งกัน worker บน BullMQ รันเทิร์นของบอทแบบ debounce ดึงความจำเบื้องหลัง ส่งเตือนนัด ติดตามลูกค้า และจำกัดค่า AI ต่อคน
  • load test webhook ที่ 100 ข้อความ/วินาที (p95 10.7 ms ไม่มี error) และลด query ที่ช้าจาก 81 ms เหลือ 0.17 ms หลังพบว่า row-level security ทำให้ PostgreSQL ไม่ใช้ index
  • ส่งงานด้วย CI/CD: เทสต์ราว 2,200 ตัวบน PostgreSQL จริง สร้าง Docker image ขึ้น GHCR deploy ผ่าน SSH 32 วินาทีหลัง Caddy โดย backup ก่อน migrate และ backup ทุกคืนไป Cloudflare R2 แบบล็อกไว้ 30 วัน

ปัญหาที่ต้องแก้

ร้านสัตว์เลี้ยงในไทย (คลินิกสัตว์ อาบน้ำตัดขน ฝากเลี้ยง) ต้องตอบคำถามซ้ำ ๆ ทาง LINE ทั้งวัน เช่น อาบน้ำหมาตัวกลางราคาเท่าไร วันอาทิตย์เปิดไหม ขอจองวันศุกร์บ่ายสอง ถ้าตอบราคาผิดร้านก็เสียเงิน และบอทที่เดาคำตอบแย่กว่าไม่มีบอทเลย

สิ่งที่ผมสร้าง

เป็น SaaS แบบ multi-tenant ประกอบด้วยผู้ช่วย AI บน LINE และ CRM ที่อยู่เบื้องหลัง ลูกค้าถามเรื่องบริการ เวลาเปิดปิด และโปรโมชันได้ โดยคำตอบมาจากข้อมูลที่ร้านกรอกไว้เสมอ ไม่ใช่ความรู้ในหัวของโมเดล ส่วนการจอง ดูราคา และยกเลิกนัด ย้ายไปอยู่บนหน้าเว็บเล็ก ๆ ที่เปิดในแชท LINE (LIFF) บอทจึงมีหน้าที่ตอบคำถามแล้วส่งปุ่มที่ถูก แทนการคุยห้ารอบเพื่อรับจอง

ฝั่งพนักงานมี dashboard พร้อมกล่องข้อความ ข้อมูลลูกค้าและสัตว์เลี้ยง (คำเตือนเรื่องแพ้ยาหรือนิสัยขึ้นบนการ์ดนัดให้ช่างเห็น) ปฏิทินแยกตามพนักงาน บอร์ดรับ-ส่งสัตว์ ตารางฝากเลี้ยง และสลิปมัดจำให้กดยืนยัน

ทำไมถึงน่าสนใจ

ส่วนที่ยากไม่ใช่การเรียก LLM แต่เป็นเรื่องที่ทำให้ร้านไว้ใจระบบได้ คือ คุมราคา ป้องกันจองซ้อน แยกข้อมูลของแต่ละร้านออกจากกัน กัน prompt injection จากข้อความแชต และให้พนักงานควบคุมได้เสมอ

สถานะ

เปิดเป็นเดโมที่ petcare.rattanun.dev ด้วยร้านตัวอย่าง Happy Paws บนเซิร์ฟเวอร์เครื่องเดียวขนาด 2 vCPU / 4 GB ใครก็แอด LINE Official Account มาคุยกับบอทได้ และ dashboard มีบัญชีเดโมแบบดูอย่างเดียวให้ลองเข้า ยังไม่มีร้านจริงใช้งาน

บทความเกี่ยวกับโปรเจกต์นี้

โปรเจกต์อื่น