Multimodal AI / local app

Hosted demo ใช้ mock AI / ข้อมูลเก็บใน browser

Receipt AI Expense Tracker

ถ้า AI อ่านใบเสร็จผิด จุดไหนควรให้คนเป็นคนตัดสินใจ?

แอปบันทึกค่าใช้จ่ายที่ลองให้ AI ช่วยอ่านใบเสร็จ แต่ไม่บันทึกข้อมูลลงประวัติจนกว่าคนจะตรวจและกดยืนยัน

หน้าอัปโหลดและตรวจข้อมูลใบเสร็จที่แก้ไขได้ก่อนบันทึก
หลักฐานหลักผลจาก parser ยังแก้ไขได้ และยังไม่ถูกบันทึกจนกว่าจะยืนยัน

Multimodal AI / local app

ผมเริ่มจาก flow ที่ดูเล็ก

อัปโหลดรูป → แยกข้อมูล → แก้ไข → บันทึก ฟังดูตรงไปตรงมา แต่ใบเสร็จมีวันที่หลายรูปแบบ ยอดรวมที่อาจไม่ตรงกับรายการ และข้อมูลส่วนตัวที่ไม่ควรไหลไปไหนโดยไม่จำเป็น

สิ่งที่ลองทำ

  • ให้ provider หรือ mock ส่ง structured result แล้วให้ Zod ตรวจและ normalize fields
  • แปลงปี พ.ศ. เป็น ค.ศ. และบังคับให้รายการที่ผิดหรือวันที่เป็นไปไม่ได้กลับไปให้คนตรวจ
  • เก็บเฉพาะ receipt ที่กดยืนยันแล้วใน IndexedDB ผ่าน repository interface

ภาพรวมการทำงาน

  1. 1

    receipt image → upload validation → parse endpoint

  2. 2

    mock / provider → Zod validation และ date normalization

  3. 3

    human review → IndexedDB → history และ dashboard

การไม่ save อัตโนมัติเป็นการตัดสินใจหลัก

ผมไม่อยากให้คำตอบจากโมเดลกลายเป็นรายการค่าใช้จ่ายทันที เพราะ confidence ไม่ใช่คำรับประกันทางการเงิน ขั้นตอน review จึงไม่ใช่หน้าคั่น แต่เป็นส่วนหนึ่งของ product flow

หน้าอัปโหลดและตรวจข้อมูลใบเสร็จที่แก้ไขได้ก่อนบันทึก
ผลจาก parser ยังแก้ไขได้ และยังไม่ถูกบันทึกจนกว่าจะยืนยัน

ผลที่ออกมา

synthetic fixture เดินผ่าน normalization path เดียวกับ provider output, รองรับ THB และ Buddhist Era date และส่งค่าที่ confidence ต่ำกลับไปให้ review ต่อ เดโมจึงพิสูจน์ pipeline behavior ไม่ใช่ OCR accuracy

แดชบอร์ดสรุปค่าใช้จ่ายจากรายการที่บันทึกใน browser
dashboard อ่านจากรายการที่ผู้ใช้ยืนยันไว้ใน browser เท่านั้น

สิ่งที่ยังติดอยู่

  • public deployment ใช้ mock AI จนกว่าจะตั้งค่า provider keys ใหม่
  • ข้อมูลอยู่ใน browser profile เดียว ไม่มี sync, backup, auth หรือ multi-device support
  • รูปถูกเก็บเป็น base64 ใน local storage layer และอาจกินพื้นที่เร็วขึ้น

ถ้าทำใหม่วันนี้

  • ทำชุดใบเสร็จที่มี tax, subtotal และภาษาไทยหลายรูปแบบก่อนเพิ่ม provider routing
  • แสดงเหตุผลของ validation warning ให้แก้ได้เร็วขึ้นในหน้า review
  • วาง export / backup contract ก่อนเก็บข้อมูลจริงระยะยาว

โค้ดและเดโม

ใน repository มีวิธีรัน การทดสอบ และรายละเอียด implementation ฉบับเต็ม

ดูโค้ดบน GitHubลองเดโม (mock AI)