DineMate
Found and fixed a price-tampering flaw before anyone could exploit it.
Design, build, red-team · LangGraph · gpt-oss-120b · Whisper · Torch TTS · SQLite
- commit
- d5876bb · 2026-07-13
- ci
- passed · 2026-07-05
- demo
- 303 reachable
- checked
- at build 2026-10-28
The problem
Restaurants take orders by phone and app, then retype them for the kitchen: slow, error-prone, and invisible to staff until someone transcribes them. An AI ordering system that takes money is also an attack surface.
What I built

- Four LangGraph agents split the work: one extracts order details, one handles changes and cancellations, one pushes confirmed orders to the kitchen, one lets an admin update the menu and prices live.
- Voice ordering runs Whisper for speech-to-text and Torch TTS for spoken replies, so a customer can order without touching a screen.
- Orders stay editable for ten minutes, then lock, so the kitchen never works from a moving target.
- Role-gated dashboards for customers, kitchen, support and admin, with analytics on revenue, top items and peak hours.
How it holds up
- Red-teamed across 8 attack categories mapped to the OWASP LLM Top 10 and MITRE ATLAS.
- The critical finding: the browser could tamper with prices. Fixed by recomputing every total on the server.
- A Llama Prompt Guard 2 classifier screens input.
- The remaining findings, including an IDOR gap, are documented as accepted risks in the published report, not hidden.
If you're building something similar
- Never trust a total the browser sends. Recompute it on the server.
- Red-team before launch, then publish what is still open.
- Give orders a short edit window and lock them after it.
signed Muhammad Umer Khan · sha256:1431…4f1 · signed the way the society platform's gate passes are
Free 30-minute build audit
Get in touch to start building yours.
Bring the idea or the workflow. In 30 minutes you get what I would build first and how I would prove it works. NDA before the first call.
calls 2pm to 11pm PKT · reply within 24h · WhatsApp +92 343 2187868