ChatGPT Prompts for Coffee Shop Owners: 10 for Menus, Posts, Rotas

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for ChatGPT Prompts for Coffee Shop Owners: 10 for Menus, Posts, Rotas.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for ChatGPT Prompts for Coffee Shop Owners: 10 for Menus, Posts, Rotas.

Ten prompts cover the jobs that decide a coffee shop's week: costing each drink, building a special inside a cost ceiling, writing honest menu text, drafting a rota with a labour check, auditing its fairness, setting milk and pastry orders, reading the waste log, a closing checklist, a week of posts, and an allergen table.

Most prompt lists for coffee shops chase image prompts. The money in a coffee shop sits in the numbers behind the counter: what a cup costs, how many hours you staff, how much milk goes down the sink. So the operations prompts come first, the posts sit near the end, and generated images do not appear at all; for those, the cafe test of AI-generated marketing photos is the place to start. Each prompt below has example inputs, a made-up output, and the checks to run before you use it.

Follow me on Instagram@sagnikteaches

A warning about sums. A language model can slip on arithmetic and still sound sure, so every prompt here asks it to show its working, and every check names the numbers to redo. If you would rather have a spreadsheet do the sums while ChatGPT writes the formulas, the ChatGPT Excel guide shows how.

Connect on LinkedInSagnik Bhattacharya

The shop sheet that every prompt reads from

Every example uses one made-up shop: open 7 am to 3 pm on weekdays and 8 am to 4 pm at weekends, taking about $6,500 a week, with five staff coded S1 to S5. Keep one plain-text "shop sheet" in a ChatGPT Project, whose instructions apply only inside that project, and paste the relevant lines into each prompt. It holds opening hours, supplier prices from your latest invoices, recipe specs (dose in grams, millilitres of milk), staff codes, and a line on tone. Update it monthly, because a prompt fed last season's prices produces last season's answers.

Subscribe on YouTube@sagnikteaches
SHOP SHEET (illustrative)
Hours: Mon-Fri 7-15, Sat-Sun 8-16. Forecast sales: $6,500 a week.
Prices: beans $24/kg; milk $1.15/litre; oat milk $1.90/litre; takeaway cup, lid and sleeve $0.22 each (iced: $0.30).
Specs: double espresso 18 g; flat white 160 ml milk; latte 220 ml; iced latte 150 ml; hot chocolate 250 ml plus $0.30 powder.
Waste allowance on beans and milk: 8% (my own estimate).
Staff: codes S1 to S5 only. The key stays in my files.
Tone: friendly, short, no exclamation marks.

What never goes in: staff names, phone numbers, rota complaints, customers' names or messages with personal details, card or bank details, and anything from your supplier accounts that is not a price or a spec. On a personal ChatGPT plan, switch off "Improve the model for everyone" under Data controls; ChatGPT Business does not train on business content by default.

1. What a cup costs: a margin table from your invoices

Start here, because every other decision leans on it. The prompt takes your supplier prices and recipe specs and builds a cost and margin for each drink, with the working shown for one so you can follow it. Deeper pricing strategy sits in cost per cup and margins worked out with AI; this is the quick version you can run monthly.

Task: build a cost-per-drink table using the shop sheet above.
Drinks and prices: espresso $3.00; flat white $4.20; latte $4.50; iced latte $4.80; hot chocolate $4.00.
Calculation: cost = (beans or powder + milk) x (1 + waste allowance) + packaging. Gross margin = (price - cost) / price.
Output: a table with drink, ingredients including waste, packaging, cost, price and gross margin. Show the working for the flat white in full. Flag any margin below 75%.
Rules: use only my prices and specs. If a spec is missing, write [CHECK].

Illustrative output:

DrinkIngredients (with 8% waste)PackagingCostPriceGross margin
Espresso (double)$0.47$0.22$0.69$3.0077.0%
Flat white$0.67$0.22$0.89$4.2078.8%
Latte$0.74$0.22$0.96$4.5078.7%
Iced latte$0.65$0.30$0.95$4.8080.2%
Hot chocolate$0.63$0.22$0.85$4.0078.8%

Check before using it: redo two rows. For the flat white, a double dose of 18 g at $24 a kilo is $0.432, and 160 ml of milk at $1.15 a litre is $0.184, so ingredients are $0.616; add 8% waste for $0.665, round to $0.67, add the $0.22 cup for $0.89, and $4.20 minus $0.89 over $4.20 is 78.8%. Remember what the figure is: margin on ingredients and packaging only, so labour, rent and card fees come out of what is left. The table also charges a takeaway cup to every drink, because the formula adds packaging to all of them. If most espressos are drunk in, from a cup you wash, run a second eat-in table without the $0.22, or the packaging line overstates their cost. The inputs matter more than the maths. Weigh a few real doses and measure a few real jugs, and treat the 8% waste allowance as an estimate to replace with your own measurement.

The reason to re-run it is a price change. If the beans rise from $24 to $27 a kilo, each espresso-based drink costs about $0.058 more, and at 600 such drinks a week that is about $35 a week, or roughly $1,820 a year, before you have touched a menu price.

2. A seasonal special that has to beat a cost ceiling

New drinks are where margin leaks, because they are priced on enthusiasm. This prompt gives ChatGPT the constraints up front and makes it say which one fails, rather than quietly bending the price to fit.

Task: propose three seasonal specials.
Constraints: uses only milks and syrups I stock; prep under 2 minutes; gross margin at least 75%; price no higher than $5.20.
Costs: [shop sheet, plus cinnamon syrup $0.02 per ml at 15 ml per drink; oat milk $1.90 per litre]
Output: for each special, the build in steps, cost including the 8% waste allowance, price, gross margin and prep time. If a special cannot meet all the constraints, say which one fails and what would fix it.

Illustrative output for the first of three: a cinnamon oat latte, with a double espresso, 220 ml of steamed oat milk and 15 ml of cinnamon syrup. Cost is $1.46. At $5.20 the gross margin is 71.9%, short of 75%, and reaching 75% would need a price of $5.84, above the ceiling. Fix: cut the syrup to 10 ml, which brings cost to $1.35 and the margin at $5.20 to 74.0%; hitting 75% then needs $5.40. So either price at $5.40 and drop the ceiling, or accept 74%.

Check before you launch it: the arithmetic ($1.35 divided by 0.25 is $5.40), and the things a model cannot do, which are tasting the drink and timing the prep with your machine and your queue. Make one at the speed of a busy Saturday before you believe "under 2 minutes". Check allergens on the syrup and milk labels. And check which special deserves the slot at all: a margin that clears 75% is no use if the drink does not sell, so compare it with what last season's specials actually sold.

3. Menu board text that stays honest

Left alone, ChatGPT writes menu copy full of "artisan", "crafted with love" and "sustainably sourced", none of which you have told it is true. The prompt bans claims you have not supplied proof for and limits the length so the text fits a board.

Task: rewrite these menu items for a board (maximum 12 words each) and for the website (maximum 30 words each).
Facts per item: [name, ingredients, size, what is true about origin or method, price, dietary notes from my list]
Rules: use only the facts given. No "artisan", "handcrafted", "locally sourced", "ethically sourced", "sustainable", "eco-friendly" or "carbon neutral" unless I supply the proof. No "best". Dietary tags (vegan, gluten-free) only where I have listed them.

The before and after for one item, illustrative. Without the rules: "Our amazing artisan flat white, crafted with love from sustainably sourced, locally roasted beans." With them: "Flat white: double espresso with steamed milk. Oat milk +$0.50." The second says less and every word of it is checkable, which is also what a customer wants from a board.

Check before printing: that each price matches your till, that nothing true-sounding crept in, and that any dietary tag matches your allergen table from item 10. Claims are also a legal matter. If you have customers in the EU, rules that have applied since 27 September 2026 restrict generic environmental claims such as "eco-friendly" unless excellent environmental performance can be shown, and prohibit "carbon neutral" claims based on offsetting. A specific claim you can document is different from a generic one, so when a green claim appears, ask whether you could prove it to a sceptical customer or an inspector, and if not, say what is true instead.

4. A weekly rota drafted against a labour budget

A rota is a puzzle of cover, hours caps and availability, and then a sum. ChatGPT is decent at the puzzle and unreliable at the sum, so the prompt asks for the arithmetic to be shown, and you check it. Staff go in as codes, and decisions about individual people, such as who gets more hours, stay with you.

Task: draft next week's rota as a grid and check it against a labour budget.
Opening hours: Mon-Fri 7-15, Sat-Sun 8-16, plus 30 minutes before opening and 30 after closing for one person.
Cover needed: weekdays 3 people 7-10, 2 people 10-14, 1 person 14-15; weekends 2 people 8-9, 3 people 9-13, 2 people 13-16.
Staff (codes only): S1 max 40 h, S2 max 32 h, S3 max 30 h, S4 max 24 h, S5 max 28 h. Availability: S4 not Mon-Wed; S5 not Sat.
Labour: average $15 an hour including employer costs. Forecast sales $6,500; labour target 30% of sales.
Output: a day-by-day grid by code, hours per code, total hours, labour cost and labour as a percentage of forecast. If over budget, suggest the smallest cuts, naming the hours.
Rules: respect these rules on breaks and rest between shifts: [paste your own]. If a rule cannot be met, say which one.

Illustrative summary of the draft: 137 hours (S1 32, S2 28, S3 28, S4 24, S5 25), costing $2,055, which is 31.6% of the $6,500 forecast against the 30% target of $1,950. That is $105 over, or 7 hours. Suggested cuts: drop the third person from 9 to 10 on Tuesday, Wednesday and Thursday (3 hours), and the second person from 13 to 14 on Monday to Thursday (4 hours). That gives 130 hours, $1,950, exactly 30%.

Check before you publish it: add the hours per code (32 + 28 + 28 + 24 + 25 is 137), compare each with the maximum, and scan the grid for S4 on Monday to Wednesday and S5 on Saturday. Then test the cuts against your own till data. The model cannot know that Thursday from 9 to 10 is quiet; your hourly sales report can. The 30% target is an example, not a standard, and your own figure depends on rent, menu and who is on the payroll. Paste in your own rules for breaks and rest, and check them against the rules that apply to you, because the model does not know them.

5. An eight-week fairness audit of the rota

People notice who gets the early starts and the weekends, and owners rarely count. This prompt counts, from codes alone, and is told to report numbers without guessing at reasons or recommending anything about individuals.

Task: audit how the last eight rotas shared the awkward shifts.
Data: [one row per shift: week, day, code, start time, end time. Codes only.]
Definitions: weekend shift = any shift on Saturday or Sunday; opening shift = a shift starting at 6:30.
Output: a table with, for each code, weekend shifts and opening shifts; the average for each column; and every code more than 25% above or below the average, with the numbers.
Rules: report counts only. Do not guess why anyone worked more, and do not suggest changes about individuals.

Illustrative output, with five codes over eight weeks (40 weekday openings and 48 weekend shifts in all):

CodeOpening shiftsWeekend shifts
S11210
S2109
S3614
S487
S548
Average8.09.6

Flags: S1 is 50% above average on openings, S5 is 50% below, S3 is 45.8% above on weekends (14 against 9.6), and S4 is 27.1% below. Check that the columns sum to the shifts in your data (12 + 10 + 6 + 8 + 4 is 40; 10 + 9 + 14 + 7 + 8 is 48), because a dropped row shifts every average. Then read the result as the start of a conversation. S3 may have asked for weekends, and S5 may have asked to avoid early starts; counts cannot tell you. In a team of five, a code is easy for colleagues to decode, so keep the output private. Use it to balance the next rota, not to judge anyone.

6. Order quantities for milk, beans and pastries

You already have an ordering rule in your head, and the prompt turns it into a worked sum you can inspect. The rule stays yours; ChatGPT applies it. The tutorial on ordering milk, beans and pastries with AI goes further into par levels and suppliers.

Task: work out this week's orders for milk and croissants.
Data: [last four weeks of daily units used or sold, by item]
Milk: delivered Tuesday and Friday. Order = expected use until the next delivery x 1.10, minus the stock counted at close the day before delivery, rounded up to full cases of 12 litres. Expected use per day: Mon-Thu 40 litres, Fri 44, Sat 56, Sun 50.
Croissants: delivered fresh daily. Order = average of the same weekday over the last four weeks, rounded up to a full tray of 6.
Output: for each item and delivery, the working, the order, and any day I could run out.
Rules: show every sum. Do not change my ordering rules.

Illustrative output. Friday's milk delivery covers Friday to Monday: 44 + 56 + 50 + 40 is 190 litres, times 1.10 is 209, less 18 litres counted on Thursday night is 191, rounded up to 192 litres, or 16 cases. Tuesday's delivery covers Tuesday to Thursday: 120 litres times 1.10 is 132, less a Monday-night count of 21 is 111, rounded up to 120 litres, or 10 cases. Saturday croissants: the last four Saturdays sold 30, 34, 36 and 32, an average of 33, so order 36, six trays.

Check before you order: the weekly use (4 x 40 + 44 + 56 + 50) comes to 310 litres, which should match your own four-week average. If it does not, the expected-use line is wrong, not the arithmetic. Counts must be counts, not an eyeball of the fridge. Adjust by hand for anything the history does not know about, such as a public-holiday weekend or an event on your street, and replace the case and tray sizes with your supplier's real ones. Ask the model which day it flagged as a run-out risk and why, then compare that with when you actually sell out.

7. The waste log turned into three decisions

A waste log nobody reads is just a diary of regret. The prompt asks for decisions, each with a number against it, and limits the model to the causes you logged so it cannot invent a reason that sounds sensible.

Task: read this four-week waste log and give me three decisions, not a report.
Log: [item, quantity, unit, reason, weekday, unit cost]
Output: total waste value by item and by reason; the top three causes by value; for each, one specific change to an order, a prep routine or a menu item, with the weekly saving worked out.
Rules: use only reasons that appear in the log. Do not invent causes. Show the sums.

Illustrative data and result. Four weeks of waste: 41 unsold croissants at $1.35 is $55.35, 27 litres of milk at $1.15 is $31.05, and 6 litres of oat milk at $1.90 is $11.40, a total of $97.80. The croissants fall on Tuesday (14), Wednesday (12), Thursday (8), Friday (3), Saturday (2) and Sunday (2). The model's three decisions: order 3 fewer croissants on Tuesdays and 3 fewer on Wednesdays, saving 6 x $1.35 = $8.10 a week, about $421 a year; trial a 5% buffer instead of 10% on the Friday milk order, since 16 of the 27 litres expired on Mondays, worth up to about $4.60 a week; and mark the opening date on oat milk cartons, worth up to $2.85 a week. All three together would be about $15.55 a week, around $800 a year.

Check before acting: the sums (41 x $1.35, 27 x $1.15, 6 x $1.90, and the total), that the weekday counts add to 41, and that every cause quoted is in your log. Then test the risk of each cut. Ordering fewer croissants on Tuesdays saves money only if you do not then sell out by 10 am; look at your till for the sell-out time. A suggestion such as a smaller pack size must exist at your supplier, which the model cannot know. Savings figures are ceilings, not promises.

8. A closing checklist from your own procedures

Closing steps usually live in one person's habits. Paste what you do, in any order, and the prompt turns it into a one-page checklist laid out in the order someone walks the shop. The important rule is that it adds no numbers: temperatures, cleaning dilutions and times come from your product labels and food-safety plan, not from a model.

Task: turn my closing notes into a one-page checklist.
My notes: [paste, in any order, what staff do to close]
Output: a checklist in walking order: counter and machine, grinders, fridges, floor and seating, till, back door and alarm. One action per line, starting with a verb, with a tick box. A box at the bottom for time, initials and notes.
Rules: use only steps in my notes. Do not add temperatures, dilutions, times or safety steps that are not in my notes. Where my notes are vague, write [CHECK: what is missing] on that line.

Illustrative output, trimmed. Counter and machine: backflush the group heads; clean and purge the steam wand, with [CHECK: sanitiser name and dilution from the label]; empty and rinse the drip tray; switch the machine to standby. Fridges: record the fridge temperature, with [CHECK: target range from your food-safety plan]; date-label any opened milk. Till: cash up and sign the sheet; leave the float in the drawer, with [CHECK: float amount]. Lock-up: back door locked, alarm set, lights off.

Check before laminating it: walk the route with the page in your hand and confirm the order really is the order. Resolve every [CHECK] from a label or your own documents. Strike any step nobody actually performs, because a checklist that lies teaches staff to tick without looking. Then have a staff member who has never closed follow it cold, and note where they hesitate. Those pauses are the gaps in your notes.

9. A week of social posts from the specials board

This comes late in the list on purpose. A post is only as good as the facts under it, and by now you have costed the special, so you know its price. Feed the prompt the board, the hours and one true thing about the shop, and take the photo yourself. The tutorial on coffee shop social media with captions and reels covers the photo side.

Task: write this week's social posts from the specials board.
Facts: [specials with prices; opening hours; any event this week; one true thing about the shop, such as when you changed your beans]
Output: three posts (Monday, Wednesday, Friday), each 25 to 45 words, plus one story text under 15 words. Each post has one fact, one reason to come in this week, and the opening hours. No more than five hashtags per post.
Rules: use only the facts given. No claims of being the best, local, ethical or sustainable. No emojis. Do not invent offers or discounts.

Illustrative Monday post: "This week's special is the cinnamon oat latte, $5.40 until Sunday: a double espresso, steamed oat milk and a little cinnamon syrup. We're open 7 to 3 on weekdays and 8 to 4 at weekends. #coffee #weeklyspecial". The story text might read: "Cinnamon oat latte, this week only."

Check before posting: the price matches item 2's final decision, "until Sunday" is true, the hours are current, and no discount or "best" has crept in. Keep hashtags within five, since Instagram has capped them at five per post since December 2025. If the special contains oats or another allergen, make sure the caption does not imply otherwise. And post your own photo of the actual drink, taken this week, not a generated one.

10. An allergen table formatted from supplier data

This is the riskiest prompt in the set, so it is the narrowest: it formats data you already hold and invents nothing. ChatGPT is not a source of allergen information. Your suppliers' allergen statements are, and your recipe cards say what goes into each item.

Task: format this into an allergen table. Do not add anything.
Supplier allergen statements, copied exactly: [one per ingredient]
Menu items and their ingredients, from my recipe cards: [list]
Output: a table with menu items down the side and the allergens I must declare across the top: [paste the list your food-safety authority requires]. Mark Y where an ingredient's statement says the allergen is present, M where it says "may contain", N where the statement lists none, and ? where there is no statement. List every ingredient with no statement.
Rules: never infer an allergen that is not in a supplier statement. Never leave a cell empty: use ?.

Illustrative output for four columns:

Menu itemMilkCereals with glutenSoyaTree nuts
Flat white (dairy milk)YNNN
Oat latteNYNM
Cinnamon oat latte (special)NY??
Butter croissantYY??

The question marks are the useful part: the cinnamon syrup and the croissant supplier have no statement for soya and tree nuts, so those cells are open, not clear. Look at the tree-nut cell for the special: its oat milk says "may contain", yet the cell shows ? because the syrup has no statement. Read ? as "resolve before serving". Once the syrup's statement arrives, that cell can only become M or Y, never N. Below the table the model lists the two ingredients with missing statements. Check before it goes anywhere: compare every cell with the supplier's statement, read the "may contain" lines to see how your rules require them to be shown, and have a manager sign and date the table. Redo it whenever a recipe or a supplier product changes, since a new brand of syrup can change a row. Never answer a customer's allergy question from this table alone; check the actual packaging for that product on that day. The list of allergens you must declare differs from place to place, so use the one your food-safety authority gives you.

Run the money prompts first: costings, orders and waste

Start with 1, 6 and 7. They are about money, you already hold the data, and a mistake shows up as a number you can check. Then 4, once you have hourly sales to test its cuts against. Add 8 and 9 when you want time back, and leave 10 until a manager can give it an hour, because its checks cannot be skipped. If you are not sure where your biggest leak is, starting with supplier prices is the usual answer.

Whichever prompt you run, the same habits apply. Ask for the working and redo two numbers. Keep the shop sheet current, since stale prices give confident wrong answers. Use codes for people, always. And log the edits you keep making by hand; after a month, they become new lines in the prompt. The prompts draft numbers and text. The decisions about your menu, your staff and your customers stay with you.

Questions coffee shop owners ask about these prompts

Can ChatGPT work out my cost per cup reliably?

It can set up the calculation quickly, but you must check both the inputs and the arithmetic. Use prices from your latest invoices, not memory, and recompute two rows in a spreadsheet before trusting the table. An unchecked table can look neat and still be wrong by several percentage points.

Should I put staff names and availability into the prompt?

Use codes such as S1 to S5 instead and keep the key linking codes to people in your own files. Hours, availability and complaints about shifts are personal data about your staff. ChatGPT needs the pattern of the week, not who anyone is.

Can I rely on ChatGPT for allergen information?

No. Use it only to format data you already hold from supplier allergen statements, and have a manager check every cell against the label. Never answer a customer's allergy question from the table alone, and re-check whenever a recipe or a supplier's product changes.

Where do image prompts fit?

They are left out on purpose, because the money sits in costings, rotas and ordering. If you want generated images, test whether they look honest next to your real products first; the cafe photo test in this series shows how, and photos of what you actually serve usually do the job better.

Further reads

Sources: Directive (EU) 2024/825 on environmental claims (application from 27 September 2026); OpenAI help pages on Projects; ChatGPT plan details from OpenAI's help pages (October 2026). All prices, sales figures, staff codes and recipes in the examples are invented.

Want ChatGPT set up for your coffee shop's numbers?

On a 1:1 call we'll look at how you cost drinks, build rotas and order stock today, pick the two jobs worth drafting with ChatGPT first, and set the checks that keep the numbers honest.

Book a 1:1 call with me