CLAVIS

AI-native CRM / booking system for gyms, studios, health clinics and spas

Sign up, Book, Pay, Manage account, Operate from

  • Instagram
  • Email
  • ChatGPT

One system behind every door a member walks through: the message, the booking, the money and the record are the same thing — so they can never disagree.

  1. known sender · her number was already bound to her member row
  2. 0001list_available_slots·actor human:member·ok·4c1f9a
  3. 0002book_session·actor human:member·ok·4c1f9a
  4. proposed only · no booking row yet · the tap is what commits it
  5. 0003send_whatsapp_message·actor system:saga·ok·4c1f9a
  6. 0004book_session·actor human:member·ok·4c1f9a
  7. 0005book_session·actor system:saga·ok·4c1f9a
  8. 1check_credits·nothing to undo
  9. 2reserve_slot_capacity·release the place
  10. 3write_booking_row·cancel the booking
  11. 4decrement_credits·put the credit back
  12. 0006send_whatsapp_message·actor system:saga·ok·4c1f9a
  13. 0007list_available_slots·actor human:member·ok·4c1f9a
  14. 0008send_whatsapp_message·actor system:saga·ok·4c1f9a
  15. no reschedule_booking row · nothing moved

Booking · WhatsApp Illustrative

The sentence on the left wrote the line on the right.

00 / 06

epulsive E-Pulsive Belgravia
Member: Hi! Can I get another 10-session pack? Same card as last time if that is easiest.
Studio assistant: Of course, Sofia. Here is a payment link for the 10-session pack.
Member: Done.
Studio assistant: That has landed — the sessions are on your account. Want me to put the first one in for Thursday?
  1. 0001list_packages·actor human:member·ok·b90d41
  2. 0002charge_member·actor human:member·ok·b90d41
  3. 0003send_instagram_dm·actor system:saga·ok·b90d41
  4. 0004record_payment·actor vendor:stripe·ok·b90d41
  5. 0005grant_member_package·actor system:saga·ok·b90d41
  6. 0006send_instagram_dm·actor system:saga·ok·b90d41

Payment · Instagram Illustrative

Different door. The same actions, the same log.

00 / 04

EMS — first session? 5 messages · Ruth Adeyemi, E-Pulsive Belgravia, Mario Kaspers
Ruth Adeyemi <ruth.adeyemi@…> A friend recommended you. I have never tried EMS, and I had knee surgery two years ago. Is it something I could do?
E-Pulsive Belgravia <contact@e-pulsive.co.uk> Thanks for writing, Ruth. I am not going to answer the knee question myself — that one is for a trainer. I have passed it to Mario, who owns the studio, and he will come back to you himself.
Mario Kaspers · owner, replying himself Mario here. Post-surgery knees are common with us, but I would rather see how yours moves before we book anything. Are you free Thursday at two? > I have never tried EMS, and I had knee surgery two years ago.
Ruth Adeyemi <ruth.adeyemi@…> Thursday at two works. Thank you both.
E-Pulsive Belgravia <contact@e-pulsive.co.uk> Booked — Thursday at two, with Mario.
  1. 0001create_staff_decision·actor system:cron·ok·3fa7e8
  2. unknown sender · held · nothing was answered yet
  3. 0002member_self_signup·actor system:cli·ok·3fa7e8
  4. 0003set_conversation_handover·actor system:cli·ok·3fa7e8
  5. 0004escalate_to_staff·actor human:member·ok·3fa7e8
  6. 0005send_gmail·actor system:saga·ok·3fa7e8
  7. 0006send_gmail·actor human:staff·ok·7b3e02
  8. 0007book_session·actor human:staff·queued·7b3e02
  9. 0008book_session·actor system:saga·ok·7b3e02
  10. 0009send_gmail·actor system:saga·ok·7b3e02

New enquiry · Email Illustrative

And it knows when to stop and fetch a human.

00 / 05

Mario: Who has not been in for a month, and how is Thursday evening looking?
ChatGPT: Priya, Sofia, Dan and Ruth have not booked since early August. Thursday evening still has room with Ana and with Marek.
Mario: Tell the team on WhatsApp to keep Thursday evening free, and book Priya in with Ana — she still has a pack.
ChatGPT:
Two writes need your approval
  • send_whatsapp_message · 5 trainers
  • book_session · Priya · Ana · Thursday
Approve Cancel
ChatGPT: Done — all five trainers have it, and Priya is in with Ana on Thursday.
  1. 0001list_dormant_members·actor agent·ok·e21c07
  2. 0002list_available_slots·actor agent·ok·e21c07
  3. 0003send_whatsapp_message·actor agent·ok·e21c07
  4. 0004book_session·actor agent·queued·e21c07
  5. 0005book_session·actor system:saga·ok·e21c07
  6. 0006send_whatsapp_message·actor system:saga·ok·e21c07

The owner · ChatGPT Illustrative

This one is me, asking my own ChatGPT.

00 / 05

01 Four doors, one ledger

Seven things worth stopping on.

“Booked” came from the action, not the assistant. book_session appears twice — queued from the member, then ok from the saga. The word only appeared because the second line did.

One booking is four steps, and four undos. check_credits, reserve_slot_capacity, write_booking_row, decrement_credits. A step fails and the ones before it run backwards: the place is released, the credit goes back. There is no half-booking to find in the morning.

Nothing moved, and nothing claims it did. Sunday was full, so scene one ends with no reschedule_booking line at all. The assistant may only report what a tool actually returned — which is why it says it has not moved anything.

It has no authority of its own. Every tool it calls is logged as human:member — her, not it. What she cannot do, it cannot do.

Not every actor is a person. vendor:stripe is Stripe’s callback landing. system:saga is the durable job finishing what it started. Afterwards you can tell all of them apart.

It stops, and it is stopped. A stranger’s email is held until I say who they are — member_self_signup, then the thread unpauses. A question about somebody’s knee gets escalate_to_staff and nothing else.

The last one is me. From my own ChatGPT the actor is agent, on its own key with its own scopes — and both writes waited for a tap.

It will still misread somebody. What it cannot be is wrong and unaccountable: whatever it claims had to happen first, and whatever it did is a line you can read.

02 Who it fits, who it does not

What is in the product today.

Built for studios that sell a person’s time in slots: EMS first, then trainer-led PT, physio, bodywork. If your day is a grid of trainers and appointments, it fits.

If your day is a timetable of classes, that part is not built yet. No classes, no timetable, no waitlist, no multi-site — not in the product today. Better you read that here than find it in week three of a migration.

Fits today

EMS studios. Trainer-led personal training. Physio. Bodywork and treatment rooms. One site, one trainer roster.

Not in the product

Class timetables. Class waitlists. Several sites under one account.


Running classes? Say so, and wait.

Classes are on the roadmap. I will not take your money against a promise. Leave an email and you will hear from me when it is real.

Class support waiting list

One email, when it exists. Not a newsletter. This is a list, not an account — there is nothing here to sign up to.

03 Counted, not estimated Counted off the real 17-state widget.

Eleven screens, or one message.

11 screens to 1 message is true, and it is not like-for-like. So here is the rest of it.

New member · conventional web flow

11 screens

Returning member · Clavis

1 message

Any chance of Thursday at 6?

The like-for-like number

Returning member on both sides: three taps, or one message. Competitors do repeat bookings in two or three taps. That part is genuinely close.

What a cold start costs

A first-time visitor in chat takes three to five messages. Slower than a form. That is the trade, and why the booking site exists too.

Nobody is forced into chat, and you are never charged for a booking a member makes on the site themselves.

04 Settings, not a retainer

Config over code.

“Bends to anything you can imagine” usually means somebody writes code for you and the pilot becomes a consulting bill. Here are the dials that are actually yours, in the dashboard, changed by you, live:

  • Brand voice. Yours, not a vendor’s house style.
  • Tool permissions, per tier. Every action carries a list of who may call it. The assistant is on that list only where you put it.
  • Model. Which one answers your members.
  • Spend cap. A number you set, not a bill you discover.
  • Cancellation window. Your policy, enforced by the same actions.
  • Marketing flows. Which ones run, and when.
  • The notification grid. Who hears about what, on which channel.

Not a workflow builder. No canvas, no wiring your own logic. Anything outside that list is code somebody has to write — better said here than found in month three.

05 The owner’s way in

Ask your own ChatGPT how the studio did this week.

Not a bot I built and asked you to trust. Your ChatGPT, connected to your studio, calling the same audited actions the dashboard calls. What came in last week, who has not been in for a month, what a trainer is owed — then do something about it.

Not a dependency: the dashboard runs the same actions, so skip this and nothing breaks.

The caveats, up front:

  • Needs ChatGPT Developer Mode, on a paid plan. OpenAI’s gate, not mine.
  • Anything that writes sits behind a confirmation. You approve it before it happens.
  • Same permission model as everywhere else. This door cannot do what the action would refuse.
06 The walkthrough

There is no demo video here yet.

Written, not filmed. They will sit in this frame when they exist. I am not putting stock footage of somebody else’s gym in it.

Not filmed yet.
TODO(mario): set VIDEO_ID in assets/js/config.js and this frame becomes the embed.

Want to see it working now? Book the call and I will share my screen on the live studio.

07 Price, in two lines Month to month. 30 days’ notice. No early-termination fee. 0% of your card processing.

A platform price, and a receptionist.

Two lines rather than one big number, because they are two different things and you should be able to decline the second one.

Studio

Everything, on your own Stripe

£268/mo all-in

1 site · up to 6 trainers · up to 300 active members

Monthly
Platform
Bookings, members, packages, memberships, payments on your own Stripe, rota and payroll, dashboard, booking site, ChatGPT access for the owner, unlimited staff logins, email support in 1 business day.
£179/mo
AI Receptionist
WhatsApp and web chat on your own number. 200 AI conversations a month, 500 staff-assistant turns fair use.
£89/mo
All-in £268/mo
Overage 45p per conversation, capped at £90
Maximum possible bill £358/mo

£358 is not a projection, it is the ceiling. Everything is capped, so there is no month where this surprises you.

One-off and annual
Setup
12–16 hours concierge onboarding, full migration, WhatsApp signup, connectors, training call, 30-day hypercare.
£750
Annual prepay £2,680
two months free

Founding partner First 5 sites only

The same thing, while I still need the first five

£199/mo all-in

26% off list · held for 12 months · first 5 external sites

Monthly
All-in £199/mo
Overage waived 60 days, then as list
Maximum possible bill £289/mo
One-off and annual
Setup
No cash fee. A £750 migration credit, recovered over a 3-month minimum term, and waived outright on annual prepay.
£0
Annual prepay £2,388

Five sites, and the rate holds for twelve months. I would rather have five studios that work than fifty that grumble.

What counts as one AI conversation

One member or lead, on WhatsApp or your website chat, in one 24-hour period, in which the assistant replied at least once. A fifteen-message back-and-forth is one conversation. You never pay for a conversation the assistant hands to your staff, for a booking a member makes themselves on your site, or for your own team’s use of the assistant. No token or credit ever appears on an invoice.

Not included, so you are not surprised

  • Meta template fees, Resend and Google Workspace, and Stripe’s own processing — all on your accounts, not billed through me.
  • A branded member app, POS, door access, class waitlists and SMS.
  • Custom development.
  • Support beyond 1.5 hours a month once hypercare ends, then £60/hour — priced, so neither of us has to pretend “unlimited support” means anything.

Running a gym rather than a studio? That tier is quote-only, and I am not going to print a number for a product that does not exist yet.

08 The awkward questions

The part most vendors would bury.

You would be the first studio on Clavis that isn’t mine.

How many studios use this?
One. Mine. That is why the founding rate exists. No uptime figure either — one studio’s data is not a statistic.
Is there a free trial?
No — and no signup button, for the same reason. Signups are off in the product. Every studio on Clavis is one I onboarded by hand. The call is the trial.
What happens to my studio if you stop?
The parts that matter are already in your name: your Stripe, your WhatsApp number, your Workspace. Month to month, thirty days’ notice, no early-termination fee. Leaving is not a migration — only my software stops sitting in front of them.
Who do I call when it breaks?
Me. If it breaks on a Saturday it breaks for me first — my studio runs on the same thing yours does. And the audit trail is the diagnosis: a fault is a line you can point at, not an argument with a support queue.
Will the AI say something mad to my members?
It might misread somebody. What it cannot do is say something happened that did not — the claim is checked against the record before the message goes out. Out of its depth, it hands over to a person. You set which tools it may touch at all.
Do I have to use the AI receptionist?
No. It is a separate line precisely so you can decline it. The platform at £179 runs the studio without it.
Does anyone actually book by message, or is this a demo?
I stopped answering booking messages at my own studio when we cut over in August 2026 — except the escalations, where it hands the conversation to a person. You saw one further up.
TODO(mario) — two answers this page cannot give yet 1. What the founding rate becomes at month 13. Inventing a renewal term here would be the one lie that costs the deal. Decide it, and it becomes a row in the table.
2. The data-export answer. The exit answer above covers Stripe, WhatsApp and email only. Decide the export path and format, and this becomes an eighth question.

If it is not somewhere on this page, assume it is not in the product, and ask me on the call. I would rather lose the deal on the call than in month three.

09 End Twenty minutes. With me.

Twenty minutes, with the person who built it.

Bring your worst month. I will show you my own studio’s dashboard and you can decide.

Three questions on the booking form, then a time. Nothing to fill in here first.

Embed not loading? Open the booking page directly.

No signup, no card, no trial to expire. Onboarding is 12–16 hours of my time, by hand — which is why there are five founding places and not fifty.