This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
MenuGlot turns a photo of a restaurant menu into a clean, print-ready menu with English and Marathi names, half/full prices, short descriptions and a QR code.
Small local hotels often have menus in only one language, so new customers and tourists can't read them. MenuGlot fixes that in minutes. It runs fully on a laptop using Qwen2.5-VL (3B) through Ollama, so there is no API cost and the hotel's data never leaves the machine.
Demo
I tested it on a real local hotel's menu (Veg Rice section, 9 dishes). The model read the photo and produced English and Marathi names, half/full prices, descriptions and a QR code, all offline on my laptop.


Code
# MenuGlot
Offline AI menu maker for local restaurants. Upload a menu photo and get a print-ready menu with English and Marathi names, half/full prices and a QR code.
## Setup
1. Install Ollama and run: ollama pull qwen2.5vl:3b
2. pip install -r requirements.txt
3. py -m streamlit run app.py
## Why open-source?
- Runs fully offline on a laptop, no API cost
- Menu and prices never leave the machine
- Per-hotel glossary.json fixes dish names the model gets wrong
- Swapping to a bigger model is a one-line change
How I Built It
- Python + Streamlit for the UI
- Ollama running Qwen2.5-VL 3B locally. It reads the menu photo and returns JSON (dish names, half/full prices, veg/non-veg, short descriptions)
- A per-hotel glossary.json overrides the Marathi names, because the 3B model misread "Veg" as "क्षेत्र" in Devanagari
- The menu is generated as HTML with a QR code (qrcode library), then printed to PDF from the browser
- Big menus overwhelm a 3B model, so I process one section at a time (9 dishes)
Why Does Open Innovation Matter?
- Runs offline, zero API cost. After the one-time model download, nothing needs the internet. That is why charging a small hotel ₹500 per menu is realistic. A paid API would eat most of that.
- Privacy. The hotel's menu and prices never leave the laptop.
- Tunable for a niche. The 3B model misread "Veg" in Devanagari. A per-hotel glossary fixed it. With a closed API I couldn't change the model, only work around it.
- No lock-in. Swapping to a bigger model (like 7B) is a one-line change in app.py.
My Agent Session
I built this step by step with an AI assistant guiding me through setup, debugging and the final code. No DevRelay session saved.
My First User
I have not shown MenuGlot to the hotel owner yet, so there is no paying user so far. I tested it on a real hotel's menu (Veg Rice section, 9 dishes) and kept the PDF for myself.
Next step: show the PDF to the hotel, ask if they would pay ₹500 for the full menu in English and Marathi, and note what they want changed. I will update this post with their reply.
Top comments (0)