DEV Community

sarvadnya sonje
sarvadnya sonje

Posted on AI-assisted

MenuGlot: Offline AI Menu Maker for Local Restaurants

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸

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.
Original menu photo
MenuGlot result

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)