AI for a Shoe Repair Shop: Quotes and Ready-for-Collection Texts

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for a Shoe Repair Shop: Quotes and Ready-for-Collection Texts.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for a Shoe Repair Shop: Quotes and Ready-for-Collection Texts.

Put your price list and ticket log in a sheet, then use AI for two jobs: reading a customer's photos to draft a provisional quote from your own prices, and writing ticket-numbered texts for received, ready and reminder messages. You check every quote before it goes, and every photo quote says it is subject to inspection.

A photo can show a worn heel, a split seam or a lifting sole. It can't show whether the leather has dried out, how the shoe was made underneath or whether it will take a new sole. So the AI proposes and the counter confirms. It also works best when it knows only two things: your price list and a ticket number. Customer names and phone numbers stay in your till or sheet, not in the chat.

Follow me on Instagram@sagnikteaches

What a customer's photos can and can't tell you

Most photo enquiries arrive as one blurry picture of a sole in bad light. Ask for five, in daylight, with a message you can save and send every time.

Connect on LinkedInSagnik Bhattacharya

Thanks for getting in touch. For a provisional price please send 5 photos in daylight: 1) the sole from below, 2) each heel from behind, 3) a close-up of the damage, 4) the inside of the shoe, 5) the brand and size marking. We confirm the price once we have seen the shoes.

Five photos fit comfortably inside the limits. Anthropic's documentation allows 20 images per message on claude.ai, at up to 10 MB each, and OpenAI's guide lists a far higher image count per request through its API. Both warn about the same weak spots. Claude's page says it can make mistakes on low-quality, rotated or very small images, and OpenAI's says the model may misread rotated or upside-down images. Neither reads the file's metadata. In practice that means a sideways photo or a dark one deserves a re-take request rather than a guess. Tell the AI to say "unclear" for any photo it can't read, and treat that as a prompt to ask the customer for a better one.

Subscribe on YouTube@sagnikteaches

What it can reasonably describe: a heel top piece worn away, a visible split along a seam, a sole peeling at the toe, a zip with separated teeth. What it can't tell you: whether the sole is stitched or glued, whether the leather underneath is sound, whether the heel block is loose, or whether the shoe is a make that takes a resole at all. Ask for those under a separate heading, "what I cannot tell from photos", so the gaps are written down next to the price.

The price list the AI must quote from

An AI that has no price list will make one up, and it will sound reasonable. So the first job is a plain price list, with one extra column that tells the AI when to stop. The prices below are invented for illustration. Use your own, and keep the list to services you actually offer.

ServicePriceNote for the AI
Heel tips (top pieces), pair$14Only if the heel block itself looks sound
Heel rebuild, pair$38Stacked or block heels; high heels need inspection
Half soles, pair$48Stitched or glued soles only
Full resole, glued, pair$72Not for moulded soles
Full resole, stitched (welted), pair$135Always needs inspection before a price
Stitching, per seam up to 10 cm$12Count the seams visible in the photos
Zip replacement, per boot$42Ask whether one boot or both; lining damage needs inspection
Insole replacement, pair$18
Stretching, per shoe$15
Clean and waterproof, pair$20Only if the customer asks for it

Add a minimum charge of $10 and a rule for anything else: if the problem isn't on the list, or the shoe is a trainer, a designer label, suede or an exotic leather, the answer is "needs inspection" and no price. That one rule prevents most expensive mistakes. A stitched (welted) sole can usually be replaced more than once, while a moulded trainer sole often can't be replaced at all, so the AI shouldn't be guessing which one it's looking at.

The quote prompt, a sample reply and the edits it needed

Keep the prompt and the price list together in a Project (in ChatGPT or Claude) so that every enquiry starts from the same rules. The customer's photos and message go in as the next message. Nothing else does: no name, no phone number.

You write provisional repair quotes for a shoe repair shop.
Use ONLY the price list below. Never quote a service that is not on it.

For the customer's message and photos, return:
1. WHAT I CAN SEE: one line per photo. Write "unclear" for any photo that is
   dark, blurred, rotated or cropped.
2. LIKELY REPAIRS: each with its price from the list, and a total.
3. WHAT I CANNOT TELL FROM PHOTOS.
4. A REPLY to the customer, under 80 words, friendly and plain. It must say
   "provisional price, confirmed when we have seen the shoes".

Rules: if the shoe looks like a trainer, a moulded sole, suede or a designer
label, write "needs inspection" and give no price. Never promise a finish
date. Never mention anything you cannot see. Ask if the message is ambiguous
(for example, one boot or both).

PRICE LIST:
[paste the table here]

Suppose a customer writes: "Can you fix these boots? Heel's worn down and the zip's broken." Four photos arrive. The prompt above returns something like this (illustrative output):

WHAT I CAN SEE
Photo 1 (sole): heel area worn down at the back edge.
Photo 2 (heel, rear): top piece missing; heel block looks intact.
Photo 3 (zip): teeth separated at the ankle on one boot.
Photo 4 (inside): lining looks intact near the zip. Brand marking unclear.

LIKELY REPAIRS
Heel rebuild, pair: $38
Zip replacement, one boot (photos show one zip): $42
Total: $80

WHAT I CANNOT TELL FROM PHOTOS
Whether the other zip is also failing; whether the sole is stitched or glued.

REPLY
Thanks for the photos. From what we can see, the heels need rebuilding ($38)
and one zip needs replacing ($42), so about $80 in total. That is a
provisional price, confirmed when we have seen the boots. Drop them in during
opening hours and we will give you a ticket.

Notice what the prompt bought. The total is built from the list, the AI says which zip it priced, and the unknowns are written down. Then a human edits. One line changes in a real shop: the photos say the top piece is missing and the heel block looks intact, yet the draft prices a full rebuild at $38. A $14 heel-tip repair might be all that's needed, which would bring the total to $56. Which is right is a call for the counter, and the "what I can see" section is what makes the mismatch easy to spot. If the output only gave a total, you would never notice.

Ticket numbers: the key that keeps names away from the AI

Every job gets a number when it comes in: S-0412, S-0413 and so on, counting up and never resetting. One half of the ticket stays with the shoes, on a tag or a sticker, and the other half goes to the customer. The number goes into the log. It is the only identifier the AI ever sees. Names and phone numbers live in your till, your repair-tracking system or a separate column that only your texting tool reads.

That does three jobs. It keeps personal details out of the chat. It ends the "which shoes?" call, because every text carries a number the customer is holding. And it gives you one key to join everything on: the photo quote, the price, the status and the texts. A filled-in log looks like this.

TicketItemWorkQuoteStatusTexts sent
S-0412Ankle boots, blackHeel tips, one zip$56ReadyR1, R3
S-0413Brogues, brownHalf soles$48In progressR1
S-0414Trainers, whiteNeeds inspectionNone yetQuote pendingR1
S-0415Handbag, tanStrap stitching, 2 seams$24CollectedR1, R3

Keep one row per ticket, with the date in, the promised date, the status (In, Quoted, In progress, Ready, Collected) and the date it became Ready. The "texts sent" column holds the codes R1 to R6 from the next section, so nobody sends the same reminder twice. One habit saves embarrassment: filter by ticket number before you change a status. A "Ready" text is triggered by the status, and a status changed on the wrong row sends a text to the wrong customer.

Six texts, from drop-off to the last reminder

Write each text so that it makes sense with no other context, because customers read it standing in a queue or on a train. The ticket number goes in every one. Keep to about 160 plain characters where you can, which fits one text segment. These are the six I would set up, with the merge fields in square brackets.

R1. Received, sent when the ticket is created:

Hi [first name], we have your [item]. Ticket [ticket]. Provisional price [amount], ready about [date]. Reply YES to go ahead. [shop name]

R2. Price changed, sent after inspection when the quote moves:

Hi [first name], ticket [ticket]: on inspection the price is [new amount] (was [old amount]) because [reason]. Reply YES to go ahead. [shop name]

R3. Ready, sent when the status changes to Ready:

Hi [first name], your [item] is ready. Ticket [ticket]. Open [hours]. Balance [amount]. [shop name]

R4. Reminder, sent 7 days after Ready:

Hi [first name], your [item] (ticket [ticket]) is ready and waiting for you. Open [hours]. [shop name]

R5. Last reminder, sent 28 days after Ready:

Hi [first name], ticket [ticket] has been ready since [date]. Our ticket terms say [terms]. Please collect by [date] or call [shop phone]. [shop name]

R6. Can't repair, sent when inspection shows the job isn't possible:

Hi [first name], sorry, we can't repair your [item] (ticket [ticket]) because [reason]. [charge line]. Collect any time: [hours]. [shop name]

A few choices are worth explaining. Every text opens with the first name and carries the ticket number, so a customer with two pairs in the shop knows which one. Only R1 and R2 ask for a reply, and each asks for one thing. R3 names the balance, so nobody arrives without knowing what to pay. Drop "Reply YES to go ahead" from R1 when the price was agreed at the counter, and keep it when the quote came from photos. R5 refers to terms printed on the ticket, so write those terms first. If they don't say what happens to unclaimed items, fix that before you send R5, and ask a solicitor before you dispose of or sell anything, because the rules differ from place to place. R6 needs your own policy in the "charge line": "no charge" or "inspection fee [amount]", never something the AI picks.

Here is why the ticket number matters. Before, a hurried text read "Shoes ready". A customer with a pair of boots and a pair of trainers in the shop has to ring and ask which, and the person who answers has to look it up. After, the same message reads "Hi [first name], your [item] is ready. Ticket [ticket]. Open [hours]. Balance [amount]." There is nothing left to ask. Typing it isn't hard. The gain from AI isn't the writing. It is that the six templates are fixed once, and every text afterwards is a merge.

A Tuesday in the shop: eleven tickets and forty minutes back

Take a two-person shop, the owner and an assistant. On this Tuesday, six customers sent photos the day before, 11 new tickets are written, 14 jobs are finished and three customers need a reminder. These are illustrative timings, so replace them with your own after a week. By hand, a photo quote takes about four minutes (read the message, check the price list, type a reply), a "received" text takes a minute and a half, a "ready" text takes a minute and a half, and a reminder takes two. With the prompt and templates in place, the photo quotes take two minutes each, including the edit, and the texts take half a minute each.

TaskCountBy hand (minutes each)With AI and templates (minutes each)By hand, totalWith AI, total
Photo quotes6422412
Received texts (R1)111.50.516.55.5
Ready texts (R3)141.50.5217
Reminders (R4)320.561.5
Total67.5 minutes26 minutes

That is about 41 minutes back on this day, or around four hours over a six-day week. The calls you stop getting ("is it ready?", "which pair?") are harder to count. Log them on a sheet by the phone for two weeks before and two weeks after, and you will have a figure that is yours. The running cost is small: the Free tier of a chat assistant may handle a handful of photo quotes a day, though free limits change, and a paid plan costs about $20 a month.

Reminders, and what a full shelf is worth

Schedule reminders from the date a job became Ready, not from the date it came in. R4 goes at 7 days and R5 at 28. Whether you add a third, and what your terms say about storage charges or unclaimed items, is your decision and your solicitor's, because the rules on unclaimed goods differ from place to place. What you can do now is measure. Add a "collected" date to the log and work out the days between Ready and Collected for each ticket. The median tells you how long a normal customer takes, and the tail tells you who needs a nudge.

A quick sum shows why it matters. Suppose 60 pairs are waiting on your shelf with an average balance of $45. That is $2,700 of finished work not yet paid for, plus the shelf space and the risk of damage or loss. If a reminder at day 7 brings even a third of them in sooner, that is cash you would otherwise have chased. I'm not claiming a result; run the numbers on your own shelf. Start by counting the pairs that have been Ready for more than 28 days. That count is your first target. Dry cleaners face the same full rail with garments, and how dry cleaners and laundries use AI for orders and collections shows their version of the ticket-and-reminder routine.

Sending: quick replies, a texting service or automation

Start by hand. The free WhatsApp Business app has Quick Replies for saved messages, Labels to tag each chat (Quoted, Ready) and a Greeting and Away Messages for outside opening hours. Save R1 to R6 as quick replies and sending a text becomes a tap, a paste of the ticket number and a send. If your customers expect plain SMS, a bulk texting service can send a list instead: export today's Ready rows (ticket, first name, phone), import them and send R3. Ask the provider what a text costs, where replies arrive and how it handles a STOP reply.

Keep to plain characters either way. A message over 160 characters is split into parts of 153, and a single emoji or curly quote switches the encoding to 70 characters (67 per part when split), so a text that looked like one message can bill as two or three. Merge fields lengthen a text too, so test your longest customer name and item description.

Automation comes last. A Zap can watch the sheet and send R3 when a row's status changes to Ready. Zapier's pricing page shows the Free plan at 100 tasks a month, limited to two-step Zaps (a trigger and one action) that check every 15 minutes. Professional starts at 750 tasks, $19.99 a month billed annually or $29.99 billed monthly, and checks every 2 minutes. Each text is one task. The Tuesday shop above sends about 28 texts a day, roughly 730 in a 26-day month, so even Professional would be tight, and the texting provider charges per message on top. At that volume, check whether your till or repair software can send texts itself before you build anything. Shoe repair software: job tickets, pick-up texts and AI replies compares what the specialist systems do.

A collection text is a service message about a job the customer started, so keep promotions out of it. If a customer asks you to stop texting, stop and record it. WhatsApp's Business Messaging Policy goes further: you may only message people who have opted in, and you must respect requests to opt out or block, whether made on or off WhatsApp. If you move to the WhatsApp Business Platform rather than the app, Meta's pricing page says each business number gets 1,000 free service messages a month, and from 1 October 2026 messages beyond that, plus utility templates sent inside the 24-hour window, are charged. Rates vary by message category and recipient, so read the page before you automate.

Five things that go wrong in the first week

These are the failures I would plan for, each with the fix. None needs a better AI. Each needs a rule or a column.

  1. A service that isn't on the list. A draft quotes "re-welt, $90" because the photos show a stitched edge and the model reaches for something plausible. The prompt says never to quote a service that isn't on the list, and the list now names re-welting as "needs inspection".
  2. A trainer treated like a leather shoe. A photo of a white trainer returns "half soles, $48". Moulded trainer soles often can't be replaced. The fix is a line in the list: trainers, moulded soles, suede, designer labels and exotic leathers all mean "needs inspection" with no price.
  3. Right text, wrong customer. The sheet gets re-sorted, the status changes on S-0413 instead of S-0412, and the Ready text reaches the wrong person. It shows up when someone arrives for a pair that isn't finished. The fixes are to filter by ticket number before editing, and to keep [item] in R3 so a recipient who didn't leave boots notices at once.
  4. Ready before it is ready. A resole is marked Ready while the glue is still curing. Split the status in two: "Finished" when the bench is done, and "Ready" only after a person has checked and bagged the pair. R3 triggers on Ready.
  5. Promise creep. A quote reply says "ready tomorrow" because the model wanted to sound helpful and you gave it no date. The prompt forbids dates, and R1's date comes from your own queue.

The photo-quote method isn't unique to shoes. How painters and decorators quote from photos with AI shows the same checks on a different trade, and turning customer messages into tickets with AI covers the intake side if your enquiries arrive as long, rambling messages.

Questions shoe repairers ask before using AI

Can I give a final price from a customer's photos?

Not safely. Give a provisional price and say it is confirmed in the shop. Photos hide how a shoe was made, the condition of the leather and whether glue has failed, and the vendors' own documentation warns that image reading can go wrong on blurry, rotated or very small pictures. The counter check takes a minute and spares you an awkward call.

Do I need a paid AI plan for this?

Not to start. A quote draft is a few photos and a price list per enquiry, and a free tier may cope with a handful a day, though free limits change, so check. A paid plan at about $20 a month removes the worry on busy days. Keep customer names and phone numbers out of the chat either way.

Is it fine to text customers about uncollected shoes?

A text about a job they left with you is a service message, and reminders are normal. Keep it free of promotions, follow the terms printed on your ticket and stop if the customer asks you to. Ask a solicitor before disposing of or selling any unclaimed item, because the rules vary from place to place.

Should AI quote repairs on designer or high-value shoes?

No. Write needs inspection into your price list for designer labels, suede, exotic leathers and any sole you can't identify, and book those in for a look. A wrong photo quote on an expensive pair costs far more than the minute you saved, and it is the quote the customer will remember.

Further reads

Sources: Anthropic's vision documentation and OpenAI's images and vision guide (image limits and limitations); the WhatsApp Business app features page and Business Platform pricing page; Twilio's SMS character-limit glossary; Zapier's pricing page (all checked October 2026). Prices in the shop examples are invented for illustration.

Want quotes and texts to run from one ticket log?

On a 1:1 call we'll look at how tickets, quotes and customer messages flow through your shop now, pick the first step worth automating, and decide whether your till or a simple sheet can send the texts.

Book a 1:1 call with me