How to Write a Salon Service Menu and Price List With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Write a Salon Service Menu and Price List With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Write a Salon Service Menu and Price List With AI.

Work out your prices first, from what each chair hour costs you plus product and a target margin, then give AI your service list, durations and prices. Ask it to group services, name them plainly, write a 15-30 word description for each and flag gaps or clashes. Check every price, time and claim yourself before publishing.

AI is good at words and structure and hopeless at your costs. It has no idea what your rent, wages or colour tubes cost, and it will happily produce a confident "market rate" from nowhere. So the maths comes first, then three prompts (structure, descriptions, stress test), then a pass for claims you shouldn't make, then a checklist for getting the new menu into your booking system without the website and the till disagreeing.

Follow me on Instagram@sagnikteaches

Price each service from the cost of an hour in the chair

Every service uses chair time, a stylist's time and some product. Put a cost on each and you have a floor below which the service loses money. Five steps:

Connect on LinkedInSagnik Bhattacharya
  1. Monthly fixed costs: rent, utilities, software, insurance, cleaning, card terminal rental, marketing. Everything you pay whether or not anyone books.
  2. Bookable hours per month: stylists times hours worked times a realistic utilisation, meaning the share of those hours actually filled. Use last quarter's figure from your booking reports, not the one you'd like.
  3. Overhead per chair hour: fixed costs divided by bookable hours.
  4. Stylist cost per hour: wage plus employment on-costs, or the commission share if you pay commission.
  5. Product per service: colour, developer, toner, treatment, foils. Weigh a typical application once rather than guessing.

Then: cost = (overhead per hour + stylist cost per hour) x duration in hours + product. Price = cost divided by (1 minus your target margin).

Subscribe on YouTube@codingliquids

Illustrative figures: say a four-stylist salon has $9,600 of monthly fixed costs. Four stylists at 150 hours a month and 75% utilisation give 450 bookable hours, so overhead is about $21.33 an hour. Add $24 an hour of stylist cost and each chair hour costs $45.33. With a 20% target margin:

ServiceTimeProductCostPrice at 20% margin
Cut and blow-dry1 hour$3$48.33about $60
Root colour1.5 hours$12$80.00$100
Full head highlights and toner3 hours$28$164.00$205

Two things usually jump out. First, long colour services are where underpricing hides, because three hours of overhead adds up fast. Second, utilisation moves everything. At 60% instead of 75%, the same salon has 360 bookable hours, overhead climbs to about $26.67 an hour, and root colour needs to be about $110 rather than $100 to hold the same margin. Any current price below its floor is the service to fix first.

Here's how one shows up. Say the same salon has sold an "express root colour" at $65 for years: one hour, $12 of product. Its cost is $45.33 plus $12, so $57.33, and at a 20% margin its price should be about $72. It isn't losing money outright, but it earns about $7.67 a service, against the $14.33 or so it should earn. At 40 bookings a month, that's roughly $270 a month of margin given away on a service nobody questioned because it was always busy. Busy and underpriced often go together.

You can ask ChatGPT or Claude to turn this into a spreadsheet with formulas ("build a sheet where I enter fixed costs, hours, utilisation and per-service product, and it returns cost and price at a chosen margin"). It builds the sheet; you supply every number.

Choose the menu's shape before writing a word

Most menu confusion comes from structure, not wording. Pick one of these:

StructureSuitsWatch out for
By category (Cut and finish, Colour, Treatments, Occasions, Extensions)Salons where everyone charges the sameCategories that overlap, such as "Blonde" and "Colour"
Category plus stylist level columns (Graduate, Stylist, Senior, Director)Salons with pricing by experienceClients not knowing which level their stylist is; say it on the booking page
"From" prices with named surchargesColour and extensions, where length and thickness varyAn unexplained "from" invites a row at the till
A few bundled servicesSmall salons wanting fewer choicesBundles that hide what's included

My own preference for most salons is categories with level columns, and fewer services than you think. Five near-identical colour services with different names produce booking errors, because clients pick the wrong one online and the diary ends up with the wrong duration.

Pricing stylist levels so the steps make sense

If you price by level, clients will compare the steps, and uneven ones look arbitrary. Two methods work:

  • A fixed percentage step. Each level costs, say, 15% more than the one below. On a $60 cut at Stylist level that gives Graduate about $52, Senior $69 and Director $80. Simple to explain and easy to apply across the whole menu.
  • Cost plus demand. Each level's price starts from that level's actual wage cost, then rises when its diary is consistently full. A senior booked out four weeks ahead is underpriced; one with gaps every day isn't.

Once you've chosen a rule, AI is useful for applying it consistently: "Apply a 15% step between levels to every service in this table, rounding to the nearest dollar, and flag any service where the result falls below the cost floor in column F." Rounding rules matter more than people expect; decide whether you end prices in 0 or 5 and tell the model.

While you have the export open, count bookings per service over the last 12 months. Services booked a handful of times a year are candidates to merge or drop. They clutter the online menu and are usually the ones with out-of-date prices.

Prompt 1: structure and plain names

Export your current service list from the booking system, messy internal names and all. Then:

Below is my salon's service list, exported from our booking system:
name, duration in minutes, price, stylist level.
[paste]

1. Group the services into no more than 6 client-facing categories.
2. Rename each service in plain words a new client would understand.
   No invented brand names, no puns.
3. Point out services that look like duplicates or near-duplicates
   and suggest which to merge.
4. List any service missing a duration or price.
Do NOT change any price or duration. Return a table:
old name | new name | category | duration | price | note

An illustrative few rows of what comes back:

Old nameNew nameCategoryDurationPriceNote
FHH + T SNRFull head highlights with tonerColour180$215Senior level
RootsRoot colourColour90$100Possible duplicate of "Root tint"
Root tintRoot colourColour75$95Possible duplicate of "Roots"
BD longBlow-dry, long hairCut and finish45$40Original price $42

Two things to act on. The duplicate flag is genuinely useful: "Roots" and "Root tint" have different times and prices for the same job, so online clients who pick the cheaper one get booked 15 minutes short. Merge them into one service and one price. The last row is the classic slip. The model rounded $42 to $40 and, to its credit, said so in the note, but it won't always leave a note. Check every price against the export anyway.

Compare the returned table with your export line by line. The instruction not to touch prices usually holds, but check anyway; models occasionally "tidy" $62 into $60 or merge two rows. Catching made-up figures in AI drafts has a quick method for this kind of check.

Prompt 2: descriptions that set expectations

A good salon description answers five questions: what's included, roughly how long it takes, who it suits, what costs extra, and anything the client must do beforehand. Feed the model a sample of your voice (a caption or two you like) so it doesn't default to spa-brochure language. A brand voice guide AI can follow is worth writing once if you'll reuse it.

Write a client-facing description for each service in the table.
15-30 words each. Our voice: [paste 2 captions or a short
voice note, e.g. "friendly, straight-talking, no fluff"].
Each description must say: what's included (wash? blow-dry?
toner?), approximate time, who it suits, what costs extra.
If a service needs a consultation or skin test first, say so.
Avoid: "transform", "luxurious", "repair", "guaranteed",
"suitable for all hair types", any health claim.

What the difference looks like:

Before: Balayage, from $180.
After: Balayage, from $180, about 3 hours. Hand-painted lightening for a soft, grown-out look, with toner, wash and blow-dry included. Longer or thicker hair takes more time and product, so we confirm the final price at your consultation.

Where a "from" price is unavoidable, name the surcharges so the client can work out her own figure. An illustrative root colour entry: "Root colour, $100, about 90 minutes. Covers up to 2cm of regrowth. Extra colour for thick hair, $12 a bowl. Add a gloss, $25." A client with thick hair and a gloss now knows she's paying $137 before she books, and the receptionist never has to explain a number that appeared from nowhere.

Prompt 3: stress-test the price list

Before publishing, ask the model to attack the menu from two sides:

Act as two people reading this menu.
First, a new client booking online for the first time: list every
point where you'd be unsure which service to pick or what you'd pay.
Second, a receptionist at checkout: list every price that could
cause a dispute (unclear "from" prices, extras not mentioned,
level pricing that doesn't match the stylist booked).
Then list price jumps between stylist levels that look inconsistent,
e.g. a gap of $10 on one service and $45 on a similar one.
Don't fix anything; just list the problems.

An illustrative extract from the reply:

New client: "Gloss" and "Toner refresh" sound like the same thing; I can't tell which to book. "Extensions from $250" gives no idea of the top of the range. Does "Cut and finish" include a wash?
Receptionist: "Balayage from $180" doesn't say what makes it cost more. "Colour correction" has no price at all, only "POA".
Level steps: Stylist to Senior is $9 on a cut but $45 on balayage.

You decide what to change. Some "inconsistencies" are deliberate, such as a director who charges much more for colour than for cuts. In that extract, gloss and toner refresh really were the same service and got merged; the wash question was fixed with three words in the description; colour correction stayed consultation-only, with a line explaining why; and the $45 balayage step stayed, because balayage at senior level is booked out weeks ahead.

Claims a salon menu shouldn't make

AI-written copy reaches for adjectives, and some of them promise results you can't deliver or couldn't back up if challenged. Search the final text for these before it goes anywhere:

  • "Repairs" or "heals" damaged hair. Treatments improve how hair looks and feels; say that instead.
  • "Permanent" for smoothing or straightening that grows out or fades.
  • "Suitable for all hair types" when some services need a consultation first.
  • "Chemical-free", "natural" or "organic" unless the product maker's documentation supports it.
  • Scalp or hair-loss treatment claims that sound medical. Refer those clients to a doctor or trichologist.
  • "Guaranteed" anything, and results that depend on the client's hair history.

Advertising rules in most places expect claims to be backed up, and a price list is advertising. When unsure, describe what you do rather than what it achieves. An illustrative treatment description from a first draft: "Our bond-repair treatment heals damaged hair from within for permanent results." Three problems in one sentence. The rewrite: "A bond-building treatment added to your colour service. Hair usually feels softer and less brittle afterwards; results vary with your hair's history. 20 minutes, $30." It's less exciting and it's true.

Getting the new menu everywhere clients see it

A new menu that lives in one place and not the others causes more trouble than the old one. Work through this list in one sitting:

  1. Booking system: service names, descriptions, durations, processing time (for colour that develops while the stylist works elsewhere) and level pricing. Description fields often have character limits, so check yours before pasting. Some online booking pages also show only the first line or so of a description until the client taps "more", so put what moves the price first. "Longer hair takes more time, so we confirm the price at consultation" is no use if the page cuts off after "Hand-painted lightening for a soft, grown-out look".
  2. Online booking page: book a test appointment for three services as if you were a client. Pick the awkward ones: a senior-level colour, a service with an add-on, and one of the merged services. A typical find is a colour service that books as a solid three hours because the processing time wasn't set, so the stylist can't take a cut while the colour develops; another is an add-on that appears on the website but not in online booking.
  3. Website and any PDF menu: same names, same prices.
  4. Instagram: highlights, pinned posts and the booking link.
  5. Printed menu at reception.
  6. Search listings where you've listed services.
  7. Regulars: if prices went up, tell them before they arrive. Planning and announcing a price increase covers the wording and timing.

A final consistency check is a good job for AI: export the services from your booking system, copy the website text, and ask the model to list every name, price or duration that differs between the two. It takes two minutes and catches the $5 difference that would otherwise surface as a complaint. An illustrative result: the website still said "Cut and finish $58", the booking system said $60, and the website listed "Toner refresh", the service merged into gloss a week earlier. Both were leftovers from the old menu, and both would have reached the till as an argument.

How long the whole job takes

For a salon with 30 to 50 services, budget an afternoon, roughly like this:

  • Costing sheet and price floors: 30-45 minutes, most of it finding last quarter's utilisation and the product weights.
  • Prompt 1 plus checking the table: 20 minutes.
  • Descriptions plus a read-through by a senior stylist: 45 minutes. The stylist catches the technical errors, such as a toner listed as included when it isn't.
  • Stress test and decisions: 20 minutes.
  • Loading the booking system and making test bookings: about an hour.

The subscription you already have is enough; any of the main chat assistants on a free or $20-a-month plan handles a service list this size. The expensive part is the hour of loading and testing, and that's the part not to rush.

If you want to see how your prices sit against other salons, collect their menus yourself from their booking pages rather than asking a chatbot to guess; tracking competitors' prices with AI shows how to set that up as a regular check.

Salon price list questions

Should a salon show 'from' prices or fixed prices?

Fixed prices suit services with predictable time and product, such as cuts and blow-dries. 'From' prices suit colour and extensions, where hair length and thickness change the cost. The rule is to say what moves the price and when the client will know the final figure, for example at the consultation. An unexplained 'from' is the most common cause of arguments at the till.

How often should a salon review its prices?

Rerun the chair-hour cost sum at least once a year and whenever rent, wages or product prices change noticeably. Many salons adjust once a year on a fixed date so regulars know when to expect it. If a service's price has fallen below its cost floor, fix that one straight away rather than waiting for the annual review.

Can AI tell me what other salons charge?

Not reliably. A chat assistant with web search may find some published menus, but they can be out of date, and a model without search will simply guess. If you want a comparison, collect five or six competitor menus yourself from their booking pages, paste them in, and ask AI to line them up against yours service by service.

Further reads

Sources: no vendor facts are relied on in this tutorial; the costing method and figures are illustrative. Booking-system character limits and field names vary, so check your own system's service settings.

Want a second pair of eyes on your menu and pricing?

On a 1:1 call we'll run your chair-hour cost sum together, set up the prompts for your service list, and plan how the new menu gets into your booking system without mismatches.

Book a 1:1 call with me