cd /news/artificial-intelligence/menucraft-ai-offline-marketing-conte… · home › topics › artificial-intelligence › article
[ARTICLE · art-152102] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

MenuCraft AI: Offline Marketing Content for Small Restaurants

A developer built MenuCraft AI, an open-source desktop app that generates restaurant marketing copy — menu descriptions, Instagram captions, Facebook and WhatsApp posts — entirely offline using Ollama and the Qwen 2.5 3B model. The Python and CustomTkinter tool imports a menu CSV, merges rows for the same dish (a 37-row pizza menu collapsed to 15 dishes), streams output with a stop button, and exports results to CSV, avoiding cloud subscription costs and keeping pricing data local.

by read6 min views1 publishedOct 17, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle

#

What I Built

MenuCraft AI is a desktop app that writes marketing content for small restaurants, cafes, bakeries and home kitchens, entirely on the owner's own laptop.

Who would pay for it: small food businesses that need a steady stream of menu descriptions, Instagram captions and WhatsApp messages but have no copywriter and no budget for one. It also fits freelancers and social media managers who run content for several small restaurants and want to produce a month of posts in minutes.

The problem it solves: the usual shortcut is a cloud AI subscription, which means a recurring cost, a stable internet connection, and menu and pricing data sent to servers the owner doesn't control. MenuCraft AI removes all three.

What it does:

Six content types: menu description, Instagram caption, Facebook post, WhatsApp message, Google Business post and special offer #

Five tones: friendly, premium, fun, desi street style and family-friendly, plus a creativity slider #

Whole menu in one click: load a CSV and get content for every dish. The importer groups rows by dish, so a pizza listed in four sizes becomes one item with all its sizes and prices. I tested it on a real 37-row pizza restaurant menu, which became 15 dishes #

Live streaming output with a stop button, so the app feels responsive even on a small model #

History and profile: the last 50 generations are saved, and the restaurant name, city, tone and model are remembered #

Export to CSV (opens in Excel) or save as text, so the owner can hand the results to a designer or schedule them #

Guardrails in the prompt: the model is told never to invent discounts, ingredients or awards that were not in the input

#

Demo

The demo shows the app running with Wi-Fi switched off, generating a single caption, then generating content for a full menu from a CSV and exporting it to Excel.

#

Code

  Offline marketing content generator for small restaurants, built on Ollama and Qwen

A desktop app that writes menu descriptions and social media content for small restaurants, cafes and home kitchens. It runs entirely on your own computer with an open-weight model through Ollama, so it works offline, has no per-use cost, and keeps menu and pricing data private.

Built for the Hacktoberfest Open-Source AI Challenge, Week 2: Side Hustle.

Features #

Six content types: menu description, Instagram caption, Facebook post, WhatsApp message, Google Business post, special offer #

Five tones: friendly, premium, fun, desi/street, family-friendly, plus a creativity slider #

Whole menu from a CSV: generate content for every dish in one click. Rows that belong to the same dish (for example one pizza in four sizes) are merged into a single item with all sizes and prices #

Live streaming output with a Stop button #

Model dropdown: every model installed in Ollama shows up automatically #

History of the last 50 generations, and…

#

How I Built It

The whole thing is built around local inference:

Ollama runs the model on the machine and exposes a simple local HTTP API #

Qwen 2.5 (3B) is the default model: small enough to run on an ordinary laptop #

Python + CustomTkinter for the desktop interface

How it fits together:

  1. On startup the app asks Ollama which models are installed (/api/tags ) and fills the model dropdown, so swapping models takes one click. If Ollama isn't running, it says so in plain language.
  2. Each request builds a prompt from the dish, price, ingredients, menu category, tone and content-type rules (for example, "under 60 words, 2-3 emojis, 5 hashtags" for Instagram), then streams the answer token by token from Ollama's /api/generate endpoint.
  3. Generation runs on a background thread, so the interface never freezes and the Stop button works mid-sentence.
  4. For menu batches, a CSV reader merges rows that belong to the same dish and combines their sizes and prices into one prompt, then generates dish by dish and shows progress as 3/15 .

What didn't work, honestly: I first added Urdu and Roman Urdu, because much of the local audience writes that way. The 3B model couldn't do it. It mixed in Chinese and Punjabi characters and produced broken sentences. I tried a stricter prompt, and then added automatic detection of the wrong script with retries, but the real fix is a bigger model. Instead of shipping poor output, I shipped English only. That's a real trade-off of local-first AI: you give up some model size in exchange for cost and privacy, and a larger local model is my next step for Urdu.

#

Why Does Open Innovation Matter?

Costs stay near zero. There is no per-request API fee, so generating content for a 40-dish menu costs only electricity. That is what makes a very low price workable for a small restaurant. With a paid API, every dish regenerated is a cost I'd have to pass on. 2. It works offline. I built and tested this on an unreliable internet connection, and the app kept working because nothing in the core flow needs the network. For a small business with patchy connectivity, that is a real feature, not a nice-to-have. 3. Customer data stays private. Menus, prices and promotional plans never leave the laptop, and there is nothing to sign up for. 4. No lock-in. I can swap models, change the prompts and add rules like "never invent discounts" without waiting for a vendor, and I won't be hit by pricing or policy changes later.

A closed API would have been easier to start with, but it would have made the business model harder: a running cost per customer, a mandatory internet connection and a third party holding every client's data.

#

My First User

I showed MenuCraft AI to the owner of a local pizza shop and ran their menu through it. Generating the content took about 2 minutes.

Their reaction was that it was amazing, and they were especially impressed that it works without internet. They said they would pay around Rs. 500 for it.

Their first request was to add more languages, which is why a larger local model for Urdu and Roman Urdu is the top item in my next steps.

#

Next Steps

  • Add a larger local model for proper Urdu and Roman Urdu content (the first thing my first user asked for)

.docx export for printed menus

  • Package the app as a single .exe so owners can install it without touching Python
── more in #artificial-intelligence 4 stories · sorted by recency
── more on @menucraft ai 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/menucraft-ai-offline…] indexed:0 read:6min 2026-10-17 · —