<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Diptanil Sen</title>
    <description>The latest articles on DEV Community by Diptanil Sen (@diptanilsen23).</description>
    <link>https://dev.to/diptanilsen23</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4181380%2F64980ea2-1fbe-4255-b703-f39b84481798.JPG</url>
      <title>DEV Community: Diptanil Sen</title>
      <link>https://dev.to/diptanilsen23</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/diptanilsen23"/>
    <language>en</language>
    <item>
      <title>MenuMate: Translate Any Restaurant Menu with Local Gemma (Side Hustle)</title>
      <dc:creator>Diptanil Sen</dc:creator>
      <pubDate>Fri, 16 Oct 2026 08:37:54 +0000</pubDate>
      <link>https://dev.to/diptanilsen23/menumate-translate-any-restaurant-menu-with-local-gemma-side-hustle-3o13</link>
      <guid>https://dev.to/diptanilsen23/menumate-translate-any-restaurant-menu-with-local-gemma-side-hustle-3o13</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;MenuMate turns a photo of a restaurant menu into a translated menu with allergen and diet tags on every dish.&lt;/p&gt;

&lt;p&gt;Small restaurants lose customers because tourists and newcomers can't read the menu. Professional translation is expensive, and Google Translate mangles dish names. With MenuMate, the owner snaps a photo, picks the languages, and gets a clean, printable menu card in a minute. Each dish gets tags like vegetarian, vegan, gluten, dairy, nuts and shellfish.&lt;/p&gt;

&lt;p&gt;Who would pay: small restaurants and cafes, at a small monthly fee, or a one-time fee per menu update.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Gm1-pMXp_ho" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Diptanil-Sen" rel="noopener noreferrer"&gt;
        Diptanil-Sen
      &lt;/a&gt; / &lt;a href="https://github.com/Diptanil-Sen/menumate" rel="noopener noreferrer"&gt;
        menumate
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;MenuMate&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Photo of a menu in, translated menu with allergen tags out. Powered by Gemma (open-weight).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run locally with Ollama (no key needed)&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;ollama pull gemma3:4b   (any vision-capable gemma3 works)&lt;/li&gt;
&lt;li&gt;pip install -r requirements.txt&lt;/li&gt;
&lt;li&gt;python -m uvicorn app:app --reload&lt;/li&gt;
&lt;li&gt;Open &lt;a href="http://127.0.0.1:8000" rel="nofollow noopener noreferrer"&gt;http://127.0.0.1:8000&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Use a hosted Gemma instead&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Set GEMMA_API_KEY (free from aistudio.google.com) before step 3.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Diptanil-Sen/menumate" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Gemma 3 (open-weight, vision-capable), running locally through Ollama. It reads the menu image directly, so there's no separate OCR step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; a small FastAPI app that sends the photo and a strict prompt to Gemma, then parses the JSON it returns (dish name, price, tags, translations).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; one HTML file that renders the result as a menu card with a language tab for each translation, plus print/PDF and copy buttons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switchable:&lt;/strong&gt; if no API key is set, the app finds the Gemma model on your machine automatically. If a key is set, it uses hosted Gemma instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built this with AI assistance (Claude), and tested it by running it on my own laptop with real menu photos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; menus, prices and customer details never leave the restaurant's own machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; there's no per-request fee, so a few dollars a month can actually be a profitable price for a tiny business.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in:&lt;/strong&gt; I can swap Gemma for another open model, or change hosts, without rewriting the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable:&lt;/strong&gt; because the weights are open, the model can later be fine-tuned on a specific cuisine's dish names, which generic APIs handle badly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;I showed MenuMate to Rina, who runs a small family cafe near my house. She has a handwritten menu, about 20 items, and gets a lot of tourists on weekends who can't read it.&lt;/p&gt;

&lt;p&gt;I photographed her menu and let her press Translate herself, choosing Spanish and French. It took about a minute on my laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she liked:&lt;/strong&gt; She read the Spanish version and said it sounded like how the dishes are really described, not like a literal translation. She especially liked the allergen tags, because customers ask her about nuts and dairy all the time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt; It misread one dish name written in cursive and tagged a plain chicken sandwich as containing dairy. She spotted both mistakes right away, which showed me the tags need a human check before printing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would she pay?&lt;/strong&gt; She said she'd pay a small monthly fee, around $20, if she could update the menu herself when specials change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she asked for next:&lt;/strong&gt; A way to edit a dish before printing, and a QR code tourists could scan to see the menu in their own language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
