Export 90 days of card and app transactions, have ChatGPT or Claude group customers by washer loads per visit, and text a wash-dry-fold and delivery offer to regulars who run three or more loads, timed for your quiet weekday hours. Work out your cost per bag, delivery included, first, and hold back a control group to measure the result.
Only customers who pay by card or app have an identity in your data, so coin users stay invisible, and only those who agreed to marketing messages can be texted. Wash-dry-fold also pays only when you know what a bag costs to wash, fold and deliver. The first job is arithmetic, not copywriting.
What 90 days of card and app payments can show you
Most self-service payment systems log every cycle: the time, the machine, the amount, how it was paid and, for card and app users, a customer ID. Ask your supplier for a CSV export of the last 90 days. Ninety days smooths out a single odd week and still reflects the season. If your trade swings with term dates or holidays, pull the same 90 days from last year as well and keep the two files apart.
These columns are enough:
- Timestamp of the cycle start.
- Machine type, such as washer 20 lb, washer 40 lb or dryer, and ideally the machine number.
- Amount charged for the cycle.
- Payment method: card, app or coin.
- Customer ID for card and app users. This is a number or code, not a name.
Be clear about what the file cannot tell you. Coin and cash customers have no ID, so some or much of your trade is invisible. The file counts cycles, not pounds of laundry, so "three washer cycles" is a proxy for a big load. Two people sharing one app account look like one very heavy user. And nothing in it says whether a customer would pay for someone else to fold their clothes. The data shows who already does a lot of laundry in your shop, which is where a folded bag saves the most time. Whether those customers value that time is what the four-week test answers.
One more gate comes before any analysis: consent. Marketing texts generally need the customer's agreement, and the rules differ depending on where you trade. Find out whether your sign-up screen records the opt-in, and text only people who agreed. Keep the record of when and how each agreed, and put a plain way to stop in every message. A solicitor or your data-protection adviser can check the sign-up wording in an hour. Customers who recently had a refund or a machine fault are best left out of any promotion, and how to manage an unattended laundromat covers handling fault calls and refunds so those records exist.
Quiet machine hours decide what you can promise
Wash-dry-fold turns your self-service machines into a small production line, so find out when they sit idle before you promote anything. Ask for washer cycles started per day in a handful of time blocks, then work out utilisation: cycles multiplied by the average cycle length, divided by machines multiplied by the minutes in the block. Time one or two real cycles for the cycle length rather than trusting the label. This illustrative shop has 12 washers and a 35-minute average cycle.
| Time block | Washer cycles started per day | Washers in use | What it means for wash-dry-fold |
|---|---|---|---|
| Mon to Fri, 07:00 to 10:00 | 10 | 16% | Drop-offs can be washed at once |
| Mon to Fri, 10:00 to 15:00 | 18 | 18% | The main production window |
| Mon to Fri, 15:00 to 20:00 | 52 | 51% | Busy; keep bag work out of the way |
| Mon to Fri, 20:00 to 22:00 | 20 | 49% | Fold only |
| Saturday, 09:00 to 17:00 | 128 | 78% | Never run bags here if you can avoid it |
| Sunday, 09:00 to 17:00 | 104 | 63% | Limited room |
The pattern in this shop: weekday mornings and early afternoons run at under a fifth of capacity, and weekends are nearly full. A bag dropped before 10:00 on a weekday can be washed, dried and folded by the afternoon, so "ready next day" is an easy promise. Running bags through those hours costs you almost nothing in lost self-service trade. Running the same bag at 11:00 on a Saturday would displace a walk-in who pays about $6.75 for a wash and a dry (with a $4.50 wash and a $2.25 dry, which are illustrative prices), and that lost trade belongs in the bag's cost.
Check the clock before you trust that pattern. Some payment systems export time stamps in UTC (universal time) rather than shop time, which slides every block by several hours, and an export that puts your busiest hour at 02:00 on a Saturday has done exactly that. Compare the busiest hour in the file with the one you know from standing in the shop. If they differ by a whole number of hours, shift the column before you build the table, or the "quiet" mornings you plan bags around will turn out to be your evening rush.
In this shop the machines are not the limit. A bag takes about 25 minutes of attendant time, so twelve bags a day is five hours of folding and handling. That is a person, not a machine, and the question to answer is whether an attendant is already on shift, and paid, during those hours.
Grouping customers without handing over their phone numbers
Customer groups come from a few measures per customer ID: how many visits, how many washer cycles per visit, what they spend per visit and when they come. You can build them with pivot tables, but an assistant that can run code on an uploaded file does it in minutes. The pricing pages of ChatGPT and Claude both list that ability (data analysis and file uploads in ChatGPT, file creation with code execution in Claude), with limits on the free plans.
Before you upload, delete every column that identifies a person. Keep the customer ID as a number, and keep the phone numbers in your own sheet, where you will join them back to the results later. Then use a prompt like this one.
I am uploading 90 days of self-service laundromat transactions.
Columns: timestamp, machine_type (washer_20lb, washer_40lb, dryer),
amount, payment (card, app, coin), customer_id (blank for coin).
1. Ignore rows with no customer_id. Treat all rows for one customer_id
on one calendar day as one visit.
2. For each customer_id compute: number of visits, average washer cycles
per visit, average spend per visit, share of visits starting after
17:00, and days since the last visit.
3. Assign each customer to one group:
A = average washer cycles per visit of 3 or more AND 6 or more visits
B = average washer cycles per visit of 3 or more AND fewer than 6 visits
C = fewer than 3 cycles per visit AND 6 or more visits
D = everyone else
4. Return a table of group sizes with the averages from step 2.
5. Return a CSV of customer_id and group.
6. List any rows you excluded and why. If a column is missing or looks
wrong, say so instead of guessing.
A reply in the right shape would resemble this table (illustrative figures for the imaginary shop).
| Group | Customers | Avg washer cycles per visit | Visits in 90 days | Avg spend per visit | Visits after 17:00 |
|---|---|---|---|---|---|
| A: big-load regulars | 118 | 3.4 | 9.2 | $23.80 | 41% |
| B: big-load occasionals | 164 | 3.2 | 2.6 | $22.10 | 37% |
| C: light regulars | 372 | 1.6 | 8.1 | $9.60 | 29% |
| D: everyone else | 496 | 1.3 | 1.8 | $7.40 | 33% |
| Total identified | 1,150 |
Do not trust the table until you have checked it. Confirm that the four groups add up to the number of distinct customer IDs in the file. Pick three customers from the CSV and recompute their visits and spend by hand from the raw rows. Read the list of excluded rows, because that is where a faulty date column or a duplicated export shows up. Rules such as "same calendar day equals one visit" are simplifications: a customer who washes at 08:00 and again at 19:00 is counted once, and you should decide whether that suits your shop. If your plan cannot run code on a file, ask for spreadsheet formulas or a pivot-table recipe for the same steps instead.
The cut-offs (three cycles, six visits) are starting points. Look at how many customers each cut-off puts in a group and move them if a group is tiny or enormous. A group of 20 is too small to learn from, and a group of 600 is not a segment at all.
Who gets the text and who gets nothing
Groups A and B are the candidates. They already pay about $22 to $24 a visit to run three or more washer cycles and then wait for the dryers and fold, so they have the most time to buy back. Group A is the better first target because it comes back about every ten days, which means a trial can be judged within a month. Groups C and D wash small loads, and a per-pound minimum would cost them more than they spend now. Leave them out of this test; a loyalty offer suits them better.
The audience shrinks at each gate, and it helps to see the funnel before promising yourself a result. In the example shop, 1,150 customers have an ID. Groups A and B hold 282 of them. Of those, 180 opted in to marketing texts (80 in A and 100 in B). Half of those 180, which is 90, will get the text, and 90 will be deliberately left alone as a comparison. If your own funnel ends at thirty people, the test will be noisy, and you should lengthen it or widen the groups rather than draw conclusions.
The cost of a bag comes before the cost of a text
Wash-dry-fold is usually priced by the pound with a minimum order, and pickup and delivery either folded into the price or added as a fee. Laundromats' own published price pages commonly show that structure. Your own numbers decide the rest. Weigh and time a normal bag, read your utility bills and add up one bag's costs. The illustration uses a 15 lb bag at $1.80 a pound, which is the 15 lb minimum, so $27.00.
| Item for one 15 lb bag | Basis (illustrative) | Amount |
|---|---|---|
| Price | 15 lb at $1.80 a pound | $27.00 |
| Attendant time | 25 minutes at $18 an hour, wages and extras included | $7.50 |
| Water, energy, detergent, softener | From your meter readings and invoices | $2.10 |
| Bag, tag, packaging | Your supplier price | $0.45 |
| Payment fees | About 3% of the price | $0.81 |
| Contribution before delivery | Price minus the four costs | $16.14 (about 60%) |
Delivery is where the margin disappears, because the cost belongs to the route and not to the bag. Say a route takes 2.5 hours of driver time at $20 an hour and covers 18 miles at 60 cents a mile (your own per-mile figure should include fuel, wear and insurance). That is $50.00 plus $10.80, or $60.80 per route. The cost per bag depends entirely on how many bags the route carries.
| Bags on the route | Delivery cost per bag | Contribution per bag after delivery, with a $4 fee |
|---|---|---|
| 6 | $10.13 | $10.01 |
| 10 | $6.08 | $14.06 |
| 14 | $4.34 | $15.80 |
A $4 fee covers the delivery cost only when a route carries about fifteen bags ($60.80 divided by $4 is 15.2). Below that the fee does not cover the route, though each bag still earns something because the wash-dry-fold margin is large. The practical rule: sell delivery only on days when you expect eight or more stops, offer collection in the shop on other days, and set a minimum order that makes a stop worth driving to. Working out delivery cost per drop from route and fuel data takes the sums further, and route planning for small fleets covers keeping stops close together.
Offer texts: an AI draft and what to change
Give the assistant the facts of the offer (price per pound, minimum, ready time, drop-off window, first-bag discount and its end date) and ask for three short texts for groups A and B. Insist on the shop's name and an opt-out line. The first draft will usually sound like this (illustrative):
Hi [first name]! We noticed you wash three or more loads every visit. Why not let us handle it? Our award-winning wash-dry-fold service gets your clothes perfectly fresh and folded in 24 hours, guaranteed! Use code FOLD5 for $5 off. Reply STOP to opt out.
Six things need fixing. "We noticed you wash three or more loads" tells the customer you have been profiling them, which feels intrusive even when it is accurate. "Award-winning" is a claim you cannot support unless you actually won something. "Guaranteed" promises what a busy Saturday may break. "Perfectly fresh" says nothing a customer can check. The price, minimum and drop-off window are missing, so the customer cannot judge the deal. And the code has no end date, which makes it impossible to measure. The corrected version:
Hi [first name], it's [shop name]. Big laundry week? Drop a bag in before 3pm on a weekday and collect it washed, dried and folded the next day. $1.80 a lb, 15 lb minimum. First bag $5 off with code FOLD5 until 30 Nov. Reply STOP to opt out.
It names the benefit (time), the terms and the deadline. It also hints at what you know ("big laundry week") without showing your workings. Test two or three angles against each other, one per sub-group, so you learn which one works.
| Angle | Draft (shortened) | Send to | What it tells you |
|---|---|---|---|
| Price-led | First 15 lb bag $5 off with FOLD5 until 30 Nov | Half of each group | Whether a small discount is needed at all |
| Time-led | Skip the Saturday queue: drop off on a weekday, collect folded next day | Half of each group | Whether the weekday promise sells without a discount |
| Delivery-led | Free collection and delivery for orders over 20 lb on Tuesdays and Thursdays | Group A only | Whether delivery wins orders that price cannot, and whether routes fill |
The delivery-led text needs care, because a free-delivery threshold changes the route economics. At $1.80 a pound a 20 lb order brings in $36.00, and free delivery gives up the $4 fee. On a route of ten bags the delivery cost per bag is $6.08, which the order's margin absorbs comfortably. On a route of six it is $10.13, which takes a much bigger bite. Offer free delivery only on the two days you have decided to run routes, and say the days in the text.
A four-week test with a hold-back group
Without a comparison group you cannot tell whether the offer worked or the weather did. Split the 180 opted-in customers at random into two halves inside each group (40 and 40 in A, 50 and 50 in B). Text one half. Leave the other half alone, and give both halves the same wash-dry-fold service, price list and shop signage, so the only difference is the text. Record every wash-dry-fold order for four weeks with the customer ID and whether it used the code.
Here are illustrative results.
| Measure | Texted (90) | Held back (90) |
|---|---|---|
| Customers who placed an order | 14 (15.6%) | 4 (4.4%) |
| Orders placed | 31 | 7 |
| Orders using the delivery service | 12 | not counted |
Four held-back customers still ordered, seven orders between them, because they saw the sign in the shop, which is why the comparison matters: counting all 31 orders as the text's work would overstate it. The extra orders attributable to the text are 31 minus 7, which is 24. Now the sum, using the $16.14 contribution per bag from the cost table.
- Contribution from 24 extra orders: 24 × $16.14 = $387.36.
- First-bag discounts: 14 customers × $5 = $70.00.
- Delivery shortfall: 12 deliveries at $6.08 cost against a $4 fee, so 12 × $2.08 = $24.96.
- Time to build, send and record, about 2.5 hours at $20: $50.00.
Net: $387.36 less $70.00, $24.96 and $50.00 leaves about $242 after four weeks, from 90 texts. That is a good result for an afternoon's work, and it understates the value if the 14 customers keep ordering. It is also a small sample. Fourteen against four is a nudge, not proof, so repeat the test on a second batch before you rebuild a service around it.
Decide the rule before you see the data, to avoid talking yourself into a result. Something like this works: extend the offer to the next group if the texted half converts at least twice as often as the held-back half and the net, after discounts and delivery, is positive. If it does not, change one thing (the discount, the minimum or the angle) and test again. If a texted customer's order gap grows longer than their usual interval, a reminder is the natural next message; winning back lapsed customers with AI-personalised messages covers how to write one.
When the numbers say not to deliver
Sometimes the arithmetic says no. If your route cost per bag stays above the fee at every realistic bag count, you have three honest choices: raise the fee, raise the minimum order, or offer wash-dry-fold with shop collection only. A fourth choice, free delivery to win volume, is only sound if the contribution after delivery stays positive at the lowest route you will actually run. Check the six-bag line of the table, not the fourteen-bag line.
Two practical cautions come with taking customers' clothes away. Ask your insurer whether garments in your vehicle and in your care are covered, and what the policy says about loss and damage. And label every bag at drop-off, because a lost or mixed-up bag costs far more than any discount you gave. How dry cleaners and laundries use AI for orders and collections shows what a tidy collection process looks like.
The assistant's part in all this is narrow and useful: grouping rows, drafting texts, summarising results. It cannot know your cost per bag, whether your customers agreed to be texted, or whether a route is worth driving. Those answers come from your invoices, your sign-up records and your own timing of a normal bag, which is why they come first.
Questions laundromat owners ask about using their data
Can I use this if most customers pay with coins?
Only partly. Coin customers have no identity in the data, so you cannot group or text them. You can still find idle hours and set prices from all cycles. To reach coin users, put the offer on a sign and a card in the shop, and offer a loyalty card or app sign-up with a clear opt-in so more of them join the data.
Do I need permission before texting customers?
Marketing messages usually need the customer's agreement, and the rules differ depending on where you trade. Text only people who opted in, keep a record of when and how they agreed, and include a simple way to stop. Ask a solicitor or your data-protection adviser to check your sign-up wording.
What if my payment system cannot export customer IDs?
Ask the supplier whether a report with customer or account IDs exists, because some systems keep it in a different report or plan. Without IDs you can still use the export for idle hours and machine mix. For customer groups, run a loyalty sign-up for a month, then analyse that group.
Is it safe to paste transaction data into a chatbot?
Keep names, phone numbers and emails out of the file and use the customer ID only. Join the results back to phone numbers in your own sheet afterwards. Use a work account, and check the model-training switch in the privacy settings if you are on a consumer plan, since business plans do not train on your content by default.
Further reads
- Dry Cleaning Price List Template: Build It With AI and Check Margins — Check margins on a price list before you add a delivery tier.
- AI for Dry Cleaners: Damage Claims, Stain Notes and Customer Replies — Handle damage claims and stain notes once bags start travelling.
- How Barbers Can Win Back Lapsed Clients With Automated Messages — The same lapsed-customer logic in a different small business.
- Customer Loyalty Programmes for Retail Stores: Can AI Design One? — Design a loyalty scheme that brings coin users into your data.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: ChatGPT and Claude plan pages (data analysis and code execution on uploaded files), checked October 2026; published price pages of laundromats for how wash-dry-fold is usually priced (per pound with a minimum). All worked figures are illustrative.