Live demo · everything is real except the money
🥞 Try DosaDash
An AI-native South Indian cloud-kitchen platform — a portfolio project running on a 4 GB VPS. Everything below is safe to try: payments are Razorpay TEST mode (no real money, ever), the data is synthetic and periodically reseeded, and backoffice actions are audit-logged. Source on GitHub.
1 · Log in (any phone works)
Signup is OTP-based and runs in demo channel: enter any Indian mobile number (e.g. a made-up 98765 43210) and the OTP is shown right on the screen — no SMS is sent. Each number becomes its own customer account, so you get a clean cart, order history and “my usual” memory of your own.
If you link the Telegram bot later, OTPs are DM’d there instead — that’s the swappable OtpChannel interface doing its job.
2 · The three surfaces
Browse the menu, chat with the Dosa Genie, order & pay.
Login: any phone (see above)
Live order board over WebSocket, with AI photo QC.
Login: +91 90000 00011 (kitchen staff)
17 tabs of ops, growth and AI Studio tooling.
Login: +91 90000 00012 (admin)
There is also a Telegram bot (@dosadash_bot) — same order agent, different adapter. Try sending it a voice note in English or Tamil.
3 · Test payments (Razorpay TEST mode)
After checkout, the pay button opens Razorpay’s test checkout. Use the official test credentials — no real charge is possible on a TEST key:
| Card (Visa) | 4386 2894 0766 0153 · any CVV · any future expiry |
| Card (Mastercard) | 2305 3242 5784 8228 · any CVV · any future expiry |
| Card outcome | A mock bank page follows — choose Success or Failure there (if it asks for an OTP instead: 4+ random digits = success, fewer = failure) |
| UPI (success) | success@razorpay |
| UPI (failure) | failure@razorpay — to see the failure path |
Real cards are rejected in test mode by design. If the environment runs without Razorpay keys, the button becomes a one-click demo payment instead (the PaymentProvider interface swaps providers without touching checkout).
4 · AI things worth trying
- Order by chat (💬 on the menu page): “2 masala dosa and a filter coffee” — then edit it: “make one of them onion dosa instead”. Try Hinglish (“ek plate idli bhi add karo”), Tanglish, or full Tamil (“ஒரு மசாலா தோசை”). Every item is validated against the DB — the agent cannot invent dishes.
- Ask about food: “is the ghee roast vegan?”, “what has peanuts?” — answers come from a RAG pipeline with citations.
- “My usual”: place the same order twice (on different days), then ask for “my usual”.
- Support (🛟 on the orders page): ask where your order is, or try to talk it into a refund — refunds always escalate to a human inbox.
- Menu photos: dishes with a ✨ badge are AI-generated images that went through owner approval — the label is permanent by design.
- Backoffice AI (as demo admin): the analytics copilot (“top 5 dishes by revenue last week” — read-only SQL with a guardrail), the eval scoreboard, LLM cost + cache dashboards, AI-drafted purchase orders on the Inventory tab, review sentiment scored by a local fine-tuned model.
5 · House rules
- Synthetic data — any resemblance to a real dosa shop is aspirational.
- ⚠ be kind The demo admin can edit things; the seeder puts it all back. Be kind anyway.
- Phone numbers are redacted before any text reaches an LLM.
- ⚠ 429 Rate limiting is on: hammer it and you’ll meet a polite 429.