Revenue recovery · UAE service businesses
Your calendar is leaking money.
We find the leaks in your own booking history: no-shows, unfilled cancellations, customers who stopped coming, hours that sit dead. Then we close them for you.
Three of the four need no discount at all.
One export from whatever system you use. No login, no switch.
Leaking, this month
AED 9,500
Illustrative. A salon grossing AED 150,000 a month, at a typical no-show rate, is losing roughly AED 8,000 to 11,000 across these four leaks. We find your real number.
Tuesday · Chair 2
| Time | Slot | Value |
|---|---|---|
| 11:00 | ColourBooked | 420 |
| 12:00 | Blow-dryNo-show | 150 |
| 13:00 | Cut & beardBooked | 120 |
| 14:00 | –Empty | 110 |
| 15:00 | CutCancelled 13:40 | 105 |
| 16:00 | ColourBooked | 420 |
Regulars who stopped coming
–The fourth leak never appears on a day sheet at all.
Unrecovered, this day
AED 365
Illustrative day sheet. One chair, one Tuesday. Not a customer's data.
The four leaks
Four ways a calendar loses money.
Every service business is already losing revenue it has earned. It doesn't show up as a loss. It shows up as an empty chair, a cancelled Saturday, and a customer who quietly stopped coming. Three of these four are fixed without discounting anything.
- No discount
No-shows
Someone booked and didn't turn up. The slot was never offered to anyone else.
Timed confirmations and reminders over WhatsApp, aimed at the bookings most likely to be missed based on that customer's own history in your export. Your front desk marks attended or no-show in one tap, which is what keeps the numbers honest.
A no-show improvement is a rate change over time, not a booking anyone can tag. It appears in your report as recovered value, measured against your own history.
- No discount
Cancellations nobody refills
A prime slot frees up on Thursday afternoon and stays empty, because nobody knew it was available.
When a booking cancels, the freed slot goes to the customers most likely to want it, at full price. There is no discount here, and the page they land on shows no struck-through price, because there is no concession to show.
Of the four, this is the shortest distance between noticing and selling.
- No discount
Customers who stopped coming
They came every six weeks for a year, then stopped. Nobody followed up.
Your export shows who has lapsed, what they used to spend, and how often they used to come. They get a message from your WhatsApp, usually just an invitation back at your normal price.
- Shallow, measured discount
Hours worth discounting, and the ones that aren't
Some hours are genuinely dead. A small, targeted incentive on those, and only those, creates business that wouldn't have happened.
Every hour of your week is scored on absolute fill, not on how it compares to your own average, and lands in one of three tiers.
How an hour is scored Tier What it is What we're allowed to do Dead Under about 25% full Anything, including a broadcast. There is no full-price customer to displace. Ordinary Normal fill Shallow offers, aimed at chosen customers only. Never a broadcast. Contested Your best, busiest hours Never discounted. These are where we move demand from, not to.
An offer only pays if the share of bookings that are genuinely new beats the discount. We launch at around 10% off the ticket, so the bar is 10%. Offers are also floored at your variable cost: consumables, payment fees and staff commission. In UAE salons that is often 30 to 50% of the ticket, which is why a small discount can quietly lose money.
Where we can, an offer is a credit, like AED 30 toward a Tuesday, rather than a percentage off. It protects your list price, and the customer always sees the true amount they will be charged.
How it works
Export, report, switch it on.
Step 1
Send us your booking history.
One export from whatever system you already use. A CSV is fine. A messy one is fine. Appointments, services, prices, and cancellations if your system records them. We map the columns for you, and you confirm the mapping before anything is computed.
You don't switch booking systems, install anything, or give us a login.
Two questions we'll ask
- How many staff are actually on shift, by day? Without it we infer your capacity from overlapping bookings, which under-counts a quiet business badly and hides the hours that are genuinely dead.
- Does your export include the date each booking was made? With it we can see whether the queue for your best hours is lengthening. Useful, not required.
Step 2
Get your leak report. Free, and yours either way.
Within a few days you get a report built entirely from your own file: no-shows and what they cost you, cancelled prime slots that went unsold, dormant customers and what they used to be worth, and which hours of your week are dead, ordinary or contested. Every figure names the evidence behind it.
Every number in that report is modelled. It is what your history implies, not what we have proven, and it is labelled that way throughout. It is not a number anyone should bill on.
You can read the report, thank us, and stop.
- No-showsmodelled
- 3,200
- Cancelled prime slots, unsoldmodelled
- 3,300
- Dormant customers (34)modelled
- 2,000
- Dead hours, Tue to Thumodelled
- 1,000
Illustrative fragment. Every figure in a real report is computed from your own export and carries the same modelled label.
Step 3
Approve what goes out. Nothing sends itself.
We draft the campaigns. A person approves every one before a single message leaves. Messages go from your WhatsApp to your customers, never a marketplace, never a shared list, never anyone else's customers.
Your customer gets a mobile page showing one business, and books in under a minute with guest checkout or a Google or Apple sign-in. Full-price links look like full-price links. A struck-through price appears only where there is a real concession.
You get a today view your front desk can pin to a phone, one-tap attendance marking, and a weekly report.
The same offers can also appear on your own booking page for people already browsing, steering which slot they take rather than whether they come. No message, no send cost.
Enforced in code, not policy
- Only customers who opted in are messaged. Opt-out is immediate and permanent: a reply of STOP stops everything, including anything already queued.
- Nothing sends outside 08:00 to 21:00, Asia/Dubai.
- Every link is single-use and personal, so no code ends up in a WhatsApp group.
- A customer sees offers at a capped frequency, so nobody is trained to wait for a discount.
Honest measurement
If it didn't work, your report says so.
A salon's revenue moves more month to month on weather, school holidays and Ramadan timing than any campaign will. So “revenue went up” proves nothing, and neither does a screen full of bookings that came through our link. The only way to know whether we did anything is to keep a randomly chosen group out of every campaign and compare.
Both groups book
Messaged
Held back, sent nothing
The difference is the only number we report
Every campaign, not a sample of them.
A randomized holdout on every campaign.
A random share of the eligible audience is deliberately not messaged. What they book anyway is what you would have got without us. That is the baseline, and it is subtracted. For offers shown on your own booking page the coin flip happens on the slot instead of the customer: a share of eligible dead-tier slots renders with no incentive at all.
The headline is net, after discounts.
Not bookings. Not gross revenue through our link. Gross, minus what would have happened anyway, minus every dirham of incentive given away. The incentive cost is printed next to it, always.
Second number: revenue per open hour.
It is the number that actually moves when we succeed, and it can't be flattered by choosing a denominator.
Small samples say directional on their face.
Under roughly ten holdout bookings an estimate is a direction, not a measurement, and the report says so on the number itself, not in a footnote.
Which means the report can come back and tell you a campaign lost money. It has to be able to. A measurement that can only return good news isn't a measurement. When it does, we stop that campaign.
A worked example
One Wednesday, both ways.
Illustrative. Not a customer result.
An aesthetics clinic, one clinician. Round numbers chosen to show the arithmetic. Yours come from your own file.
| 10:00 | 11:00 | 12:00 | 13:00 | 14:00 | 15:00 | 16:00 | 17:00 | 18:00 |
|---|---|---|---|---|---|---|---|---|
10:00. Booked either way. AED 1,400. | 11:00. Empty. | 12:00. No-show. Lost AED 1,800. | 13:00. Empty. | 14:00. Cancelled, never refilled. Lost AED 1,200. | 15:00. Empty. | 16:00. Empty. | 17:00. Booked either way. AED 700. | 18:00. Booked either way. AED 2,200. |
| 10:00 | 11:00 | 12:00 | 13:00 | 14:00 | 15:00 | 16:00 | 17:00 | 18:00 |
|---|---|---|---|---|---|---|---|---|
10:00. Booked either way. AED 1,400. | 11:00. Filled with a credit. Before the credit 1,200. AED 1,080. | 12:00. Filled at full price. AED 1,800. | 13:00. Empty. | 14:00. Filled at full price. AED 1,200. | 15:00. Filled at full price. AED 1,400. | 16:00. Filled with a credit. Before the credit 1,200. AED 1,080. | 17:00. Booked either way. AED 700. | 18:00. Booked either way. AED 2,200. |
- Dead hour. Skin booster, AED 120 credit.
- No-show on a filler, prevented.
- Cancelled skin booster, refilled at full price.
- Lapsed patient back for botox, full price.
One clinician, one Wednesday, with all four leaks in it. A real Wednesday rarely has all four.
- AED 4,400
- added at full price
- AED 2,160
- added in the two discounted hours
- AED 240
- given away in credits
A credit on a dead hour brings in people who would not have come at all. It also moves a few who would have come on Saturday anyway. Only the holdout tells them apart.
Questions
The things owners ask first.
- Will this cheapen my brand?
- Your busiest hours are never discounted. Offers are small, aimed at chosen customers, and framed as a credit rather than a markdown. Your list prices stay where they are and stay visible, and three of the four leaks involve no discount at all.
- Do I need new software?
- No. We work from one export and WhatsApp. You don't switch booking systems, install anything, or give us a login.
- How do I know it worked?
- Every campaign keeps a randomly chosen group out and sends them nothing. What that group books anyway is subtracted from what the messaged group booked. The number you get is net of every dirham of discount given away, and if it is negative the report says so.
- Is my customer data safe?
- Only customers who opted in are messaged, opt-outs are honoured immediately and permanently, and nothing sends outside 08:00 to 21:00 Asia/Dubai. Your customers are never shared with another business. Personal data is handled under UAE PDPL.
- How long does the report take?
- A few days from the export. It is free, and it is yours whether or not you switch anything on.
- Does AI set my prices?
- No. Pricing and slot selection are plain, deterministic code, and you can read the rule: an offer only goes out where the share of genuinely new bookings can beat the discount. AI reads messy exports and drafts message copy. A person approves every campaign.