Turning 'are you free?' into a paid booking, automatically
The scope I quote a gym that is tired of chat-thread bookings and no-shows: its own booking page, a PromptPay deposit before any slot is held, reminders on LINE, and a schedule the owner edits from a phone. The demo above is this exact flow; a real build starts from it with your design and brand.
The problem it solves
“Half my day is answering 'are you free Saturday?' on LINE, and people still no-show after I hold the slot. I want them to commit before I block the time.”
Who it is for
Owner-operated gyms, pilates and yoga studios, small group-class spaces: anywhere the owner is also the coach, the receptionist, and the one chasing deposits. Built for a single location first, with room to add coaches later.
Scope of work
The build is the smallest system that actually changes an owner's day: a booking that holds nothing until money moves.
- Class schedule with capacity per slot, editable from the owner's phone
- PromptPay deposit collected at booking; the slot is only held once it clears
- Automatic LINE reminder the day before, with a one-tap way to cancel inside the window
- A simple bilingual booking page that works on the phones members actually use
- An owner view of who is coming, who paid, and who cancelled
What you own at hand-off
- The full codebase, in the gym's own repository
- Hosting, domain, and the PromptPay and LINE accounts set up in the gym's name
- A plain-language runbook: how to add a class, refund a deposit, change reminder timing
- A short handover call, recorded, so the owner can rewatch instead of re-asking
Package tiers
Essential
For
One location, one calendar, deposits and reminders working end to end.
Includes
- Single-location class schedule
- PromptPay deposit at booking
- Day-before LINE reminder
Studio
For
Multiple coaches and recurring class series, plus a public schedule page.
Includes
- Everything in Essential
- Per-coach calendars and recurring series
- Public bilingual schedule page
Signature
For
Packages, memberships, and the reporting an owner needs to plan ahead.
Includes
- Everything in Studio
- Class packs and memberships
- Attendance and revenue reporting
Timeline & phases
Map
A short first week
I sit with the owner and trace one real booking, from the first LINE message to the no-show, to find where money should change hands.
A one-page scope: the exact flow, the deposit rule, and what we deliberately leave out.
Shape
Inside the same fortnight
I design the booking screen around the smallest number of taps a tired member will tolerate on a phone.
Clickable screens the owner approves before any backend is built.
Make
The build weeks
I build the booking, the deposit, and the reminder as one tested path, not three features bolted together.
A working booking on a real test number, deposits landing in a real PromptPay account.
Prove
A focused week
We run one real week of bookings through the system in parallel with the old chat and watch where members or the owner hesitate.
A short list of fixes from real use, all closed before launch.
Hand-off
The final days
I move every account into the gym's name and walk the owner through running it without me.
The keys: code, hosting, accounts, and a runbook in plain Thai and English.
How pricing works
- Quoted per project after a short scope call. You see the full number before any money moves.
- Payment is phased against the build: a deposit to start, a milestone at a working booking, the balance at hand-off.
- Fixed scope, fixed price. If you want more later, it is a new, separately-quoted scope, never a surprise.
Assumptions
- The gym has, or is willing to open, a PromptPay-capable account in its own name.
- Members book on phones, mostly through LINE; we design for that first.
- One location and one owner-approver for decisions during the build.
Deliberately out of scope
- No point-of-sale or in-person card terminal; this is online deposits, not the front desk till.
- No native app on the stores; a fast web booking covers the real need without app-store overhead.
- No multi-branch franchise console in the first scope; it is a clean place to grow into, not day one.
The one decision that mattered
The deposit is the product, not a feature
Owners usually ask for a calendar. The real problem is no-shows, so the one decision that matters is refusing to hold any slot until a PromptPay deposit clears. Everything else, the schedule, the reminders, the owner view, exists to support that single rule. Selling the rule, not the calendar, is what changes an owner's week.
I build the deposit path before I build the calendar UI. If money cannot move, nothing else matters, so the first thing that has to work end to end is a single PromptPay charge against a real account, with the slot held only after it clears.
The reminder comes next, and it stays deliberately boring: one message, the day before, with a one-tap cancel inside the window. A reminder that nags twice gets muted; a reminder that respects the member gets read.
The calendar comes last, because by then it only has to display a rule we already trust. That is also why the demo above starts at the deposit, not the schedule: it is the part worth proving.
Search & answer visibility
- A clean, fast public schedule page that Google can read, so 'pilates near me' lands on the booking, not a competitor.
- Bilingual page structure so Thai and English searches both find the right class.
Outcome & what it proves
The result
Built so that the owner stops negotiating slots in chat and starts the day with deposits already paid, because a paid deposit is a kept appointment. The interactive demo at the top of this page walks that exact flow; a real build starts from it and gets your gym's own design and brand.
What it proves
That a booking app earns its keep when it changes behavior, not when it adds buttons. Hold nothing until commitment, and the no-show problem mostly solves itself.
Boutique gym & studio
Have a problem that looks like this?
One message in plain language is enough to start. I map the work, scope it fixed, and you see the full number before any money moves. I reply within one business day.