Write Menu Descriptions and Social Posts for Your Restaurant with AI
For independent restaurant owners: crank out menu copy and social posts with Claude Code, plus copy-paste prompts and a check script.
It’s 10 p.m. The dishes are finally done, and my friend told me he just sat down on the kitchen floor with his phone in his hand.
He’d already shot the photo of tomorrow’s daily special. But not a single word of caption would come. He typed “Today’s special,” stared at it for five minutes, and hit post anyway. Same thing the next night, and the night after that. Before he knew it, every Instagram caption ended with “So good, come try it.”
That’s a real story from a friend who runs a small diner. His cooking is genuinely great, but the words to describe it always get left behind. His printed menu stops at “Fried chicken… $7.50.” Customers know the price, but they have no idea what he’s proud of.
This article is about handing that “I can’t find the words” problem to AI. It’s written for people like him, and maybe like you: the independent restaurant owner standing at the stove and running the social media account alone.
Key takeaways
- Let AI draft your menu descriptions and social posts in a batch, so you only spend time editing and deciding what to publish.
- I’ve included copy-paste prompt templates plus a reusable “shop profile” you write once and reuse forever.
- The 10 minutes a night you spend writing captions shrinks to about 5 minutes, even for three menu items. Over a month that’s hours back.
- Hand AI the first draft only. Allergen info, sourcing, prices, and stock are things a human must always verify.
- Never put customer personal data or your food costs into a prompt.
First, who this is for
Here’s the owner I’m picturing.
- Around 15 to 30 seats, run by family or a tiny crew.
- You update Instagram or X yourself, and sometimes a Google Business Profile.
- No dedicated PR person or copywriter. Posts happen after closing or between prep tasks.
- You’re a phone person, not a laptop person. Fiddly setups never stick.
In other words: you’re short on time and energy. So the goal here isn’t “amazing AI workflows.” It’s the plain, daily kind of win: turning a 10-minute night into a 5-minute one.
The “posting” workflow for an independent restaurant
Let’s break down what you actually do now. Writing a caption is really five steps tangled together.
- Pick the topic (what are we featuring today)
- Take the photo
- Think up the menu description
- Shape it into a social post (hashtags, emoji and all)
- Reformat it for each platform
AI is good at steps 3 through 5. Steps 1 and 2 only you can do. Put another way: once you’ve picked the topic and taken the photo, the rest can almost entirely be handed off.
The rework that keeps happening
Here’s the “do it over” list from my own circle of restaurant friends. Sound familiar?
- Every caption starts from a blank page. The same tired vocabulary as yesterday is all that comes out.
- Hand it all to AI and you get “exquisite,” “heavenly,” “ultimate” — overblown words that don’t sound like your place.
- Instagram and X have different length limits, but you paste the same text and it gets cut off mid-sentence.
- You reuse an old post and just swap the dish name, leaving the previous dish’s description hiding inside.
- AI confidently writes “egg-free” on its own, and you scramble to delete it.
That last one is especially dangerous. I’ll deal with it properly later on.
Before and after
Here’s the before-and-after, side by side.
| Item | Before | After |
|---|---|---|
| Time per post | 8-15 min | 2-4 min (incl. edits) |
| Posts per day | One is a stretch | Three feels easy |
| Writing quality | Uneven every time | Steady, in your voice |
| Mental load | ”Ugh, I have to write again" | "Just tweak it” |
The real point isn’t the time. It’s that the weight of “I have to write” disappears. Creating from zero and editing something that already exists are completely different kinds of tired.
Use case 1: Write three menu descriptions at once
The day you add three new dishes. Agonizing over them one by one is a 30-minute job, but with AI you hand over the facts and ask for all of them together.
Here’s the prompt. Copy it and swap in your own restaurant’s details.
You write menu copy for an independent family diner.
Under the conditions below, write three menu descriptions, each 50 words or fewer.
# Restaurant voice
- An old-school, homey diner. Plain, unpretentious language.
- Never use overblown words like "exquisite" or "heavenly."
- A tone like talking to a regular.
# Menu
1. Fried chicken plate / $7.50 / domestic chicken thigh, marinated overnight in garlic soy, fried to order
2. Miso-braised mackerel plate / $8.50 / line-caught mackerel, dark miso, plenty of ginger
3. Pork-and-veg soup plate / $7.00 / loaded with vegetables, root veg from a local farm
# Output
Lay out all three as: dish name -> description.
What comes back looks roughly like this (an actual sample output).
Fried chicken plate -> Chicken thigh marinated overnight in garlic soy.
We fry it after you order, so it's crisp outside and juicy inside.
Miso-braised mackerel plate -> Line-caught mackerel, braised slow in dark miso.
The ginger keeps the finish clean and makes the rice disappear.
Pork-and-veg soup plate -> Loaded with root vegetables from a local farm.
Warms you from the inside out. Our top seller on a cold day.
That took 30 seconds. All that’s left is to eye-check that the prices and sourcing are right. If you want to shift the tone, the “give it examples to imitate” technique from /en/blog/claude-code-prompt-engineering-advanced works well.
Use case 2: Turn one topic into a post for each platform
Even with the same fried-chicken story, Instagram and X show it differently. Let AI split it for you.
Rewrite the menu description below for three different platforms.
# Source text
Chicken thigh marinated overnight in garlic soy, fried to order.
Crisp outside, juicy inside. $7.50.
# Output format
[Instagram] Body 120 characters or fewer, at most 2 emoji, end with 5 hashtags.
[X] 140 characters or fewer, no emoji, 2 hashtags.
[Google Business Profile] Polite tone, about 100 characters, no hashtags.
Write each platform’s “house rules” into the prompt once, and AI follows them every time. Fewer accidents where the text runs over the limit and gets cut off.
If retyping this prompt every time is a pain, gather your basic restaurant info and tone settings into one file, and Claude Code will read it each time. I’ve written up how in /en/blog/claude-md-best-practices.
Use case 3: Draft a week of posts in advance
Thinking it up on the spot every day doesn’t last. Block out just the “topic slots” for seven days at the start of the week, and on the day itself you only shoot a photo and drop it in.
Suggest one posting topic per day, Monday through Sunday, for an independent family diner.
To avoid it being all sales pitch, use this ratio:
- Dish features: 3 days
- Behind the scenes / prep work: 2 days
- A story or chat about a regular: 1 day
- Announcements (hours, etc.): 1 day
For each day, give just a "theme" and a "one-line direction" in a table.
Going “30% sales, 70% everything else” keeps followers from tuning out. AI is handy here because it’ll keep the ratio mechanically intact.
What to hand to AI vs. what you must always decide
This is the most important part. Let’s draw the line between what’s safe to delegate and what you must always check yourself.
| Step | Hand to AI | Human must decide |
|---|---|---|
| Drafting the copy | Yes | |
| Adjusting the tone | Yes | |
| Trimming length / hashtags | Yes | |
| Prices and discounts | Yes | |
| Allergens, sourcing, ingredients | Yes | |
| Reflecting stock / sold-out | Yes | |
| The final publish button | Yes |
The way to remember it is simple. Anything that hurts a customer if it’s wrong gets human eyes, every time. Everything else — the phrasing — goes to AI. Hold that line and you almost never have an accident.
Security and privacy notes
Behind all the convenience, there’s information that must never go in. Here’s a checklist.
- No food costs, margins, or other numbers you’d never share publicly in the prompt?
- No regular’s real name or visit history written into a story by name?
- No reservation phone numbers or email addresses pasted in?
- No staff personal info (home address, contact) included?
- No unverified “facts” slipped into the AI-generated text?
When you use a story about a regular in a post, swap the name for “one of our regulars.” That one move kills the trouble before it starts. AI will use a real name as-is unless you tell it not to, so it’s safest to mask it before you hand it over.
For non-engineer owners, the first step into AI tools is laid out in /en/blog/claude-code-for-non-engineers. If even installing it feels daunting, start with /en/blog/claude-code-getting-started-guide and you won’t get lost.
A copy-paste “shop profile” template
Re-explaining your tone every time is tedious. Write your restaurant’s info once, paste it at the top of every prompt, and reuse it.
# Shop profile (paste at the top of every prompt)
Name: Heartfelt Diner
Type: independent family diner (15 seats, run by a couple)
Customers: neighborhood regulars, office workers at lunch, families at night
Tone: unpretentious, homey, like talking to a regular
Banned words: exquisite / heavenly / ultimate / perfect / godly
Go-to hashtags: #HeartfeltDiner #(StationName)Lunch #DailySpecial
Note: don't state allergens, sourcing, or prices as fact until I've confirmed them
That last line is the one that earns its keep. Telling AI “don’t assert things on your own” up front cuts down on dangerous guesses like “egg-free.”
A check script to vet posts by machine
With only human eyes, a busy day means you miss the character overruns. So here’s a tiny script: paste in the finished posts and the machine checks the character count and hashtag count. It runs if you have Node.js.
// check-post.mjs : checks character count and hashtag count for posts
// usage: node check-post.mjs
// Per-platform limits (change the numbers if you need to)
const rules = {
instagram: { maxChars: 120, maxTags: 5 },
x: { maxChars: 140, maxTags: 2 },
};
// Paste the posts you want to check here
const posts = {
instagram:
"Chicken thigh marinated overnight in garlic soy, fried to order. Crisp outside, juicy inside." +
" #HeartfeltDiner #StationLunch #DailySpecial #FriedChicken #Special",
x:
"Today's daily special is the fried chicken plate. Fried to order, crisp outside and juicy inside. $7.50. #HeartfeltDiner #DailySpecial",
};
function countTags(text) {
const matched = text.match(/#[^\s#]+/g);
return matched ? matched.length : 0;
}
let allOk = true;
for (const [sns, text] of Object.entries(posts)) {
const rule = rules[sns];
const chars = [...text].length; // count emoji as one character too
const tags = countTags(text);
const charOk = chars <= rule.maxChars;
const tagOk = tags <= rule.maxTags;
if (!charOk || !tagOk) allOk = false;
console.log(
`[${sns}] chars ${chars}/${rule.maxChars} ${charOk ? "OK" : "OVER"} / ` +
`tags ${tags}/${rule.maxTags} ${tagOk ? "OK" : "TOO MANY"}`
);
}
console.log(allOk ? "-> All clear. Safe to post." : "-> Fix it before posting.");
Just type node check-post.mjs and you get a list of whether each platform is over its limit. Keep it as a breath before you post and the cut-off-mid-sentence accidents vanish. If you want to push efficiency further, the workflow tips in /en/blog/claude-code-productivity-tips are worth a look.
A rough ROI estimate
Let’s do quick math. Say writing a post drops from 10 minutes to 3. At three posts a day, that’s 21 minutes saved daily. Six days of service is about two hours a week, eight to nine hours a month.
Value the owner’s time at $20 an hour and that’s over $160 of effort freed up a month. The cost is mostly the AI subscription, a few dollars to maybe $20 a month. You’re in the black from month one. And honestly, the bigger value is the freed-up time you can put back into prep and serving customers.
FAQ
Q. Won’t AI make every restaurant’s posts sound the same? Write in the “tone” and “banned words” from your shop profile and it becomes distinctly yours fast. Specify nothing and yes, every restaurant ends up sounding alike. Those first few lines of instruction are everything.
Q. I only have a phone. Can I still use the check script? The script is for a computer, but you don’t need it. Ask AI “fit this into 120 characters or fewer” and it plays the same role. The script is insurance for people posting in volume every day.
Q. Is it OK to let AI handle allergen labeling? No. Ingredients and allergens, if wrong, affect a customer’s health. Keep AI away from them; the owner confirms the facts and writes them by hand. This is the one exception with no exceptions. For the basics, check official guidance like the FDA food allergen page.
Q. Typing the prompt every time is a pain.
Save the shop profile to a file and reuse it, or have Claude Code remember it. The steps in /en/blog/claude-md-best-practices get rid of the paste-it-every-time chore.
Q. I reused an old post’s text and the previous dish’s description was still in there. Reuse is a source of accidents. When the menu changes, handing over the profile and the new dish to rebuild from scratch is, in the end, faster and safer.
What happened when I actually tried it
I had my diner friend run this approach for just three days.
Day one took 15 minutes to build the “shop profile,” and he pulled a face: “Isn’t this kind of a hassle?” But from day two it was just paste the profile and add the new dish. Three posts, photos included, came together in under five minutes.
What helped most wasn’t the check script — it was specifying the banned words. Just banning “exquisite” suddenly made the output sound like his place. In his words, “It’s close to how I actually talk.”
On the flip side, day one AI wrote that the mackerel was “from Hokkaido” on its own, and we got a scare. It’s line-caught locally. Sourcing and prices really do need human eyes, confirmed again. Hold the line between what to delegate and what to check, and that 10 p.m. 10 minutes really does shrink.
If you want to keep posting on your own, start with the free learning materials. If you want to turn this into a system across multiple locations or for staff training, start with training and consulting.
Free PDF: Claude Code Cheatsheet
Enter your email and download the one-page Claude Code cheatsheet for commands, review habits, and safe workflows.
We handle your data with care and never send spam.
Level up your Claude Code workflow
Start with the free PDF, use Gumroad guides when you need repeatable workflows, and book consultation when rollout or revenue paths need human judgment.
About the Author
Masa
Engineer focused on practical Claude Code workflows. Runs claudecode-lab.com, a 10-language technical media site.
Related Posts
The Agency Permission Checklist Before Claude Code Edits a Client Site
A client-work permission checklist for safe AI-assisted edits on landing pages and websites.
Turn SaaS Support Bug Reports Into Repro Steps With Claude Code
A support-team workflow for converting vague tickets into safe, reproducible bug reports.
Turn Stale Obsidian Notes Into a Claude Code Brief in 10 Minutes
Obsidian notes that turn to mush when pasted? Sort them into facts, decisions, and unknowns so Claude Code can act on them right away.
Related Products
Claude Code Quick Reference Cheatsheet
A free one-page reference for daily Claude Code work.
Keep the essential commands, file-reference patterns, CLAUDE.md reminders, prompting habits, review cues, and debugging workflow notes next to your editor.
50 Battle-Tested Claude Code Prompt Templates
Copy, paste, ship. 50 production-ready prompts.
Use proven prompts for code review, refactoring, testing, documentation, debugging, architecture, and incident response.