DEV Community

GS
GS

Posted on

I Built MenuLingo So You Never Have to Guess What’s in Your Food Again

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

Restaurant Owner preview page

owner preview page

Owners can set qr cider for customers to scan the menu from

Owners can clarify with chefs if the AI stated allergens and ingredients are true and if not change it. (Humam-in-loop)

Owners can also upload lists if menu files

Guests/Customers preview pages

**Customers can filter out the dishes with allergens and also use the Voice forthe pronunciation of the dish names"

What I Built

MenuLingo is a menu that explains itself.

Small family restaurants often serve dishes that Google Translate just butchers. Try translating Pizzoccheri della Valtellina and you get nonsense. And if you have an allergy, nonsense isn't good enough. You want to know if it has gluten or dairy before you order.

So the owner pastes in their menu, and a local AI model writes a plain-language explanation for each dish, lists the likely ingredients, and flags allergens. Then the owner checks every dish and ticks a "verified" box. Guests scan a QR code, pick what they need to avoid, and the menu filters for them. They can also tap a button to hear the dish name pronounced.

Who'd pay? A small restaurant that wants a decent digital menu for tourists and guests with allergies, without paying for a big closed platform. I haven't proven anyone would pay. That's my guess.

Demo

Menu Lingo live

The link shows the guest view, using a sample Italian menu.

Code

Menu Lingo Repo

How I Built It

  • Gemma (open-weight), running locally through Ollama. I used gemma3:1b because I built this in cloud environment, which is tiny.(gemma3:4b) will be suitable more.
  • Streamlit for the whole UI.
  • Pydantic + Ollama's JSON schema output so Gemma answers in a strict format (description, ingredients, allergens, spice level, a confidence flag).
  • Google TTS (gTTS) for the pronunciation button. The app picks the language from the menu, so Italian dishes sound Italian and Danish dishes sound Danish.
  • Render hosts the customer page.

How it works: the AI runs on the owner's machine to generate the menu. The public website is just a read-only page that shows the saved menu.json. I did it this way because Render's cheap tier can't run a model.

Some things that went wrong:

  • The 1B model sometimes got stuck repeating itself and crashed. I added length limits, a repeat penalty, and retries.
  • Cloud Shell ran out of disk space when it tried to save a tiny JSON file. Lesson learned.
  • I planned to use ElevenLabs for voices, but their API needed a paid plan, so I switched to Google TTS.
  • A small model will still get allergens wrong sometimes. That's why the owner has to verify every dish, and guests can see which dishes are verified and which aren't.

Why Does Open Innovation Matter?

Because the restaurant's menu and data stay on their own machine, and there's no bill per request. For a tiny business, even small API fees add up, and sending data to someone else's server isn't always okay.

It also means anyone can swap in a bigger model, or one fine-tuned on their own cuisine. I'd want a model that really knows regional dishes, and with open weights that's possible. With a closed API, it's whatever the company decides to give you.

My Agent Session

N/A

My First User

N/A

Prize Categories

  • Best Use of Gemma: Gemma runs the whole menu-explaining part, locally.
  • Best Use of Render: it hosts customer facing page.

Top comments (0)