Bảo Bối — Voice Ordering Assistant
A cat that takes your coffee order by voice.
- LiveKit
- Voice
- Go
- Client
- F&B and AI-commerce company
- Timeline
- May 2026 – Present
- Role
- Backend & AI Engineer
- Outcome
- Ran in a real café
About the project
A cat-mascot assistant for an F&B and AI-commerce company that suggests drinks by mood, takes the order by chat or voice (LiveKit), pushes it to the café's POS and returns a VietQR to pay. Version 1 ran in the café, with a loop that turns bad replies into scenarios staff can approve and a watchdog added after a silent LiveKit outage. Version 2 rebuilds it for many shops: a Go core, per-shop isolation with PostgreSQL row-level security and a Python LiveKit agent. May 2026 – Present.
The problem
A café wanted customers to order by talking, without waiting for staff at peak hours. A voice assistant in a real shop has to be friendly, get the order right, hand it to the till and take payment, and keep working when nobody is watching it.
What I built
Bảo Bối is a cat-mascot ordering assistant for an F&B and AI-commerce company, where I work as Backend & AI Engineer on contract since May 2026. I built the ordering flow end to end:
- Chat and real-time voice — speech-to-text and text-to-speech over LiveKit, so customers can type or simply talk.
- Drink suggestions by mood — the assistant recommends drinks from how the customer feels.
- Order dispatch — the cart is pushed to the café's POS, and the customer gets a VietQR code to pay.
- A review loop — bad replies are turned into scenarios that staff can approve, so the assistant improves from real conversations.
- A self-healing watchdog — added after a LiveKit outage went unnoticed for two weeks, plus an admin page that checks every service the assistant depends on.
How it works
Version 1 runs in the café. The customer talks to Bảo Bối on a tablet or phone; the LiveKit agent turns speech into text, the assistant builds the order, and the backend sends it to the POS and returns a VietQR. The watchdog restarts what has stopped instead of waiting for someone to notice.
Version 2 rebuilds it for many shops: a Go core with per-shop isolation through PostgreSQL row-level security, a Python LiveKit agent, and safe fallbacks when Redis is down. Each shop only ever sees its own data, enforced by the database rather than by application code alone.
Outcome
Bảo Bối ran in a real café, taking orders by chat and voice and handing them to the POS with payment by VietQR. Version 2, the multi-shop rebuild, is the current work.
Stack
- LiveKit (speech-to-text, text-to-speech) with a Python agent
- Go core service
- PostgreSQL with row-level security, Redis
- VietQR payment




