AI for Climbing Gyms: Induction Bookings and Membership Churn

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for Climbing Gyms: Induction Bookings and Membership Churn.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI for Climbing Gyms: Induction Bookings and Membership Churn.

Give the AI your own induction rules and timetable so it drafts the booking replies, use a spreadsheet rule on visit counts to flag members who have dropped below their own normal, and let the AI draft the check-in. Staff send everything. Safety instructions and clearance to climb alone stay with an instructor.

Two conditions decide whether this works. Your membership system has to record check-ins by member, and you need about three months of that history to see anyone's normal. Climbing-specific systems such as Rock Gym Pro document check-in reports in their help pages, including a count of visits per customer over a chosen date range, but confirm exactly what your own system exports before you plan anything around it.

Follow me on Instagram@sagnikteaches

An induction here means the supervised introduction a new climber completes before climbing without staff: the safety briefing, how the wall and equipment work, and a check on the basics. Plenty of gyms run separate ones for bouldering and for roped climbing. The examples follow an invented gym with 480 members, three bouldering inductions on Saturdays, and a roped induction on Tuesday and Thursday evenings.

Connect on LinkedInSagnik Bhattacharya

Split the jobs: what the AI drafts and what an instructor owns

A climbing gym's jobs divide into words about logistics and judgements about a climber's safety. The first can be drafted. The second can't.

Subscribe on YouTube@sagnikteaches
JobThe AI draftsA person owns
Induction enquiry repliesTimes, places left, price, what to bring, how to book, all from your rules fileAny question about ability, health, age suitability, or "can I skip it?"
Reminders and waitlist messages24-hour and 3-hour reminders, "a place has opened" notesWho gets a place when two people want one
The induction itselfNothingThe briefing, demonstrations, checks and the decision to clear someone
Lapsing-member check-insMessage drafts for each segmentThe flag rule, who sends, any offer, freezes and cancellations
Reading the repliesGrouping the reasons members giveWhat you change because of them

That split isn't politeness. The induction is where your safety obligations sit, and your insurer's conditions, your own risk assessment and any industry guidance you follow decide what it must cover. If an AI tool paraphrases a safety rule, you now have a version of the rule that nobody reviewed. So treat safety text as read-only: the AI may link to it or quote it word for word, and it never rewords it.

It also settles an argument that comes up in the first week: can the assistant tell a nervous beginner what to expect? It can say what the session is called, how long it lasts and what to bring, because those come from your file. It can't say "you'll be fine", because that is a judgement about a person it has never met.

Write the induction rules once, in a file the AI has to quote

Keep the rules on one page and upload it to a project (ChatGPT and Claude both offer projects), so the AI starts every chat with them. Don't build this as a custom GPT: OpenAI has scheduled custom GPTs to shut down on 11 December 2026. Give each induction type its own block. A single combined block invites the AI to blend them, which is how a bouldering reply ends up mentioning harnesses. This invented example shows the shape:

INDUCTION RULES v3 - reviewed by [head instructor] on [date]
BOULDERING INDUCTION: 45 minutes, 6 places, $15 (free with a membership). Sessions: Sat 09:30, 11:00, 12:30. Shoe hire $4 a pair. Arrive 10 minutes early.
ROPED INDUCTION: 75 minutes, 4 places, $25. Sessions: Tue and Thu 18:30. Shoe hire $4, harness hire $4. Arrive 10 minutes early.
EXPERIENCED-CLIMBER CHECK: 30 minutes, an instructor checks skills in person, $10. Book on the same page.
JUNIORS: separate sessions, a parent or guardian present. [your age rules]
CHANGES: free move up to 12 hours ahead. Later than that, or no-show: [your policy].
PRE-READING (6-minute video): [link]
NOT FOR THE AI TO ANSWER: ability or experience, "can I skip it", health, pregnancy, injuries, medication, age or size exceptions, equipment safety, incidents. Reply "A member of our team will come back to you on that" and add STAFF TO ANSWER: [the question].

The last line matters as much as the rest. Every time a customer asks something that line should have caught, add it. After a month the list becomes a record of what people really worry about, and it tells you which questions deserve a page on your website.

Then add the standing instructions that sit above the file:

You draft replies for a climbing gym's front desk. A person sends every message.
Use only the INDUCTION RULES file and the SESSION LIST pasted in this chat, and name the list's build time. If something isn't in either, write "A member of our team will come back to you" and add STAFF TO ANSWER.
Never explain how to belay, tie in, fall, check a harness or use an auto-belay. Never say whether anyone is fit, experienced or old enough to climb. Where safety comes up, link to the pre-reading, word for word.
Never say a place is held or guaranteed. Say places are held once the booking is confirmed.
Do not add offers, discounts or extras that aren't in the file.
Style: warm, short, plain English, first names, sign off "[your name], [gym name]".

Paste the session list every morning, with places left from your booking system and the time you built it. The AI may quote places left only from a list you gave it, and a stale list is the likeliest way for a draft to go wrong: picture two people promised the last place because the 08:15 list was still being quoted at 16:00.

Five induction enquiries and what to do with each draft

The first enquiry is the classic weekend one: "Hi, my partner and I want to try climbing this weekend. Is there an induction on Saturday?" The session list, built at 08:15, shows 2 places left at 09:30, 4 at 11:00 and 6 at 12:30. The AI drafted this:

Hi [first name], thanks for getting in touch. Our Saturday bouldering inductions have places at 09:30 (2 left), 11:00 (4 left) and 12:30 (6 left), as of 08:15 today. Each one takes 45 minutes and costs $15 a person, so $30 for the two of you. Please arrive 10 minutes early. Book here and your places are guaranteed: [link]. Shoes and harnesses can be hired for $4 each. [your name], [gym name]

The counts, the time stamp and the sum were right. Two things needed fixing. "Guaranteed" became "held once your booking is confirmed", because two people can click for the last place in the same minute. And the harness line came out, since a bouldering induction doesn't use harnesses and the AI had blended the two induction types from an older combined block. Splitting the file into one block per type stopped that recurring.

The other four enquiries followed a pattern. The facts were right every time, and in two of them the fix was removing something warm the AI had added:

EnquiryWhat the draft didThe person's fix
"I've climbed for ten years in other gyms. Do I really need an induction?"Quoted the rule that every new climber completes one and offered the 30-minute experienced-climber check, then added "you'll breeze through it".Deleted the last phrase. It pre-judges a check that an instructor makes in person.
"Can my 9-year-old do an induction?"Gave the junior session times and the parent-or-guardian rule, then added "children climb free with an adult membership".The free-entry line isn't in the rules file. Removed. Age questions beyond the file go to staff.
"I'm 20 weeks pregnant. Can I do the induction?"Wrote only that a member of the team would come back, and flagged STAFF TO ANSWER.No edit. A staff member phoned the same day.
"I missed my induction yesterday. Can I rebook?"Listed the next three sessions and quoted the late-change policy.The person waived the fee this once and changed the wording to say so.

Expect to delete more than you rewrite. The AI is good at facts it has been given and slightly too keen to be encouraging, and encouragement in a climbing gym can cross into a promise about someone's safety. For the wider question of replying to gym enquiries and trial bookings, see using AI for gym enquiries and trial-session bookings.

One Saturday of induction places: waitlists, no-shows, reminders

Induction places are limited by instructors, not by floor space, so every empty place is lost time. Take the invented Saturday: three bouldering inductions at six places each, so 18 places. By Thursday evening 31 people have asked for a Saturday place. Eighteen are booked and 13 sit on a waitlist. Assume one booked person in five doesn't turn up, which for 18 is about four. That leaves 14 inducted and four empty places, unless someone works the waitlist.

Working it takes one message, three hours before each session, to the first people on the list: "A place has opened at 11:00. Reply YES within 30 minutes and it's yours." If all four places fill, 18 people are inducted instead of 14. The AI drafts the message and can sort the replies by time received. A person owns the decision about priority when two people tie, or when someone on the list has already been bumped twice.

Reminders do most of the work of preventing the empty places in the first place. Two are enough. The 24-hour reminder asks for a reply if plans have changed, which lets you offer the place on while there is still time:

Hi [first name], a reminder that your bouldering induction is tomorrow at [time]. Please arrive 10 minutes early. If you can't make it, reply CANCEL and we'll offer your place to someone on the waitlist; moving it is free up to 12 hours before. See you there. [your name], [gym name]

The 3-hour message can be two lines. Check what your booking system already sends before drafting anything, because a duplicate reminder is an irritation and may be a reason to ignore both. The message types and timing in automated check-ins for gym members are a useful comparison.

Find lapsing members from visit counts, without sharing names

Churn prediction sounds like machine learning. For a gym of this size, a rule that compares each member with their own recent past does most of the job and needs no names. A member who came eight times a month and has come twice in the last 30 days is a stronger signal than one who has always come twice a month. The tutorial on whether a small gym can use AI churn prediction covers the wider question; this is the simple version.

Export two lists from your membership system. The first is members: ID, join date, plan and whether the membership is frozen. The second is visits: member ID and visit date. Strip names, emails and phone numbers before the data goes near a shared spreadsheet or an AI tool. The ID is enough, and staff look the name up in the membership system when they send. In a spreadsheet, with visits on one sheet and members on another, these formulas do the counting:

Members sheet, row 2 (A = ID, B = join date, C = frozen "Y" or blank)
D2  last 30 days:    =COUNTIFS(Visits!A:A,A2,Visits!B:B,">"&TODAY()-30)
E2  the 90 days before: =COUNTIFS(Visits!A:A,A2,Visits!B:B,">"&TODAY()-120,Visits!B:B,"<="&TODAY()-30)
F2  normal per month:  =E2/3
G2  days since last visit: =TODAY()-MAXIFS(Visits!B:B,Visits!A:A,A2)
H2  flag: =IF(C2="Y","",IF(AND(B2>TODAY()-60,D2+E2<=2),"Slow start",IF(AND(F2>=2,G2>=21),"Gone quiet",IF(AND(F2>=4,D2<=0.4*F2),"Drifting",""))))

For a new member the flag adds both windows, D2+E2, because between them they cover every visit since joining. You can ask the AI to write these for your real column letters, but test them yourself on five members before trusting them. Count each person's visits in the log by hand and compare. A formula that is wrong for one member in ten will flag the wrong people and teach your staff to ignore the list.

If your system exports counts rather than a visit log (Rock Gym Pro's help pages describe a report of visit counts per customer for a chosen date range), run that report twice, once for the last 30 days and once for the 90 days before, and paste the two counts into columns D and E in place of the formulas. Column G then needs each member's last visit date from another report, so ask your vendor which one carries it.

The thresholds below are invented; set yours after looking at how your own members behave:

SegmentRuleWhat the message is for
DriftingNormal of 4 or more visits a month, and 40% or less of that in the last 30 daysA check-in that offers help with timetable or goals, and a freeze if that suits
Gone quietNormal of 2 or more a month, and no visit for 21 days or more"We've missed you", a question about what would help, a freeze option
Slow startJoined in the last 60 days with 2 or fewer visitsAn invitation to a second visit or a beginners' social night

Here is how six rows from the sheet come out. Frozen members drop out first, and "Gone quiet" is checked before "Drifting", so someone who has stopped altogether gets one message, not two:

IDNormal a monthLast 30 daysDays since last visitOutcome
M-10428.0211Drifting: 2 is under 40% of 8 (3.2)
M-22105.3034Gone quiet: 34 days is over 21
M-30772.0117Not flagged: under 21 days, and a normal below 4
M-41200112Slow start: joined 40 days ago, one visit
M-55559.072Not flagged
M-60016.029Frozen, so excluded

Seasonal climbers will trigger false flags every summer if they swap the wall for the crag. If you have a year of data, compare with the same months last year. If you don't, accept the false flags: the reply to the message sorts them out, and it is cheap for a member to answer "I'm outdoors until September".

Before anything is sent, look at the size of the list. For the invented gym, 70 flags from 480 members is about one in seven, which feels plausible. If a first run flags 250, something is wrong with the rule or the export, not with your members. A typical cause is a visit file whose dates were read as text, so every member looks as if they stopped climbing years ago. Treat a list that is more than about a fifth of your membership as a bug until you have checked three rows by hand. The one-fifth line is a working guess, not a benchmark.

A fortnight of check-ins: 61 members across three segments

Run on the invented gym's 480 members, the rule flags 70 people: 31 drifting, 22 gone quiet and 17 on a slow start. Nine come off the list before anything is sent: four whose freezes had been agreed at the desk but not yet entered in the system, three with notes saying they are away or injured, and two who were messaged last month. That leaves 61 messages. This first run is a backlog, so a weekly export afterwards flags far fewer people. The membership system's merge field supplies the first name, so the AI never sees one. These are the three templates it drafted, after one round of edits:

DRIFTING
Hi [first name], it's [your name] at [gym name]. We haven't seen as much of you lately and wanted to check everything's all right. If your timetable has changed, tell me what works and I'll point you at the quieter sessions. If you need a break, we can freeze your membership: just reply.

GONE QUIET
Hi [first name], it's been a few weeks and we've missed seeing you on the wall. Is there anything we could do better, or is life just busy? If it helps, we can freeze your membership while you're away. A one-line reply is plenty.

SLOW START
Hi [first name], we hope your first visits went well. Visits two and three are when climbing starts to click, so we run a relaxed beginners' social on [day] at [time]. Come along, no booking needed. Reply if you have any questions about sessions or routes.

The "freeze" lines only belong there if your policy allows a freeze. Settle the rules before you invite members to ask for one: checking an AI-drafted freeze policy lists what to decide first.

The AI's first draft for the drifting segment shows a slip worth guarding against. It began: "Our records show your visits have dropped from eight a month to two. We'd hate to lose you!" The person cut both sentences. Quoting counts back to a member reads as surveillance, and "we'd hate to lose you" turns a friendly check-in into a retention pitch.

Illustrative results two weeks later, with numbers invented for the example: 19 of the 61 replied, and 11 visited again within 14 days. Three asked for a freeze and two cancelled. The 19 replies, pasted into the AI with names removed, grouped as schedule changes (6), injuries (4), prices (3), routes feeling familiar (4) and other (2), which adds up to 19. The group about routes goes to your route setters, not to marketing. Check the AI's grouping against five raw replies before acting on it, because it sometimes files "busy at work" under price.

Replies need a plan too, because a member who answers and hears nothing back ends up feeling worse about the gym than one you never messaged. Sort each reply into one of a few buckets when it arrives:

What the member saysWho answersWhat the AI can draft
"Busy, will be back soon"Whoever is on the deskA short, warm reply with the next beginners' or social session
"I'm injured"A person, by phone or in personNothing about the injury. Only a freeze confirmation, once staff agree one
"Too expensive right now"The manager, using your termsA neutral summary of the options your policy allows
"The routes feel the same"Head route setter, then the deskA thank-you that says the feedback has gone to the setters
"Please cancel"A person, same dayConfirmation wording that matches your cancellation terms

A quick sum shows whether the work is worth doing. If the 61 messages took 2.5 hours of desk time at $18 an hour, that is $45 of wages. If one member who would have left stays a single extra month at $60, the exercise has paid for itself. Both figures are invented, so replace them with your own wage and fee.

What a check-in message must never do

  • Quote visit counts back. "Our records show" makes a friendly note read as monitoring. Keep the numbers inside the sheet.
  • Add urgency or guilt. "Don't lose your progress" is a sales line, and members notice.
  • Invent an offer. If a discount or guest pass is your standing policy, put it in the file. Otherwise the AI shouldn't mention one.
  • Handle cancellations or refunds. The AI can draft the reply, but staff apply your terms, and a person replies to anything that mentions an injury or a complaint. Where that line sits is argued through in the tutorial on AI and membership freezes or cancellations.
  • Reach people who opted out. Respect the marketing preferences in your membership system. If you aren't sure whether a check-in counts as marketing, get a one-off answer from your adviser and keep it with your membership terms.

For ready-made wording across a whole sequence, the welcome, waitlist and lapsed-member emails written for fitness studios are a good set to borrow from.

Reading the results: fill rate, no-shows and member returns

MeasureCalculationHealthy direction
Induction fill ratePlaces booked divided by places offered, per weekRising towards full, with the waitlist being used
Induction no-show rateNo-shows divided by places bookedFalling once the 24-hour reminder is in use
Reply speed on induction enquiriesMinutes until each of ten enquiries got its first answer, middle valueQuicker, with STAFF TO ANSWER items still answered the same day
14-day return rateFlagged members who visited within 14 days of the message, divided by messages sentAbove zero, and higher than the control group below
False flagsReplies that say "I'm fine" or "I'm away"Falling as you add exclusions

To find out whether the messages cause the returns, rather than members drifting back anyway, hold back about 10 randomly chosen flagged members for one cycle and compare their return rate with the group you messaged. It feels odd to withhold a kind message, but it is the simplest way to learn whether the work is doing anything. With groups this small, one cycle can mislead, so compare over three or four before you draw a conclusion.

A weekly routine that takes about 75 minutes

None of this needs a new job title. A desk lead can run it in four short blocks, plus the few minutes each morning that pasting a fresh session list takes. The times below are guesses to replace with your own stopwatch readings after the first fortnight:

WhenTaskTime
MondayRefresh the session list in the project and clear the weekend's induction enquiries in one batch15 minutes
WednesdayExport visits, check the flagged list against the size rule and remove exclusions15 minutes
WednesdaySend the week's check-ins from the drafts, editing each by a sentence or two (10 to 15 a week once the first backlog is cleared)25 minutes
FridayWork the Saturday waitlist and reminders, read replies, log the reasons20 minutes

That adds up to 75 minutes. If your first weeks run far longer, the usual culprits are an export that needs manual cleaning each time and drafts that need heavy rewriting. Fix those at the source, by asking the vendor for a cleaner export or by tightening the instructions, before you add anything else.

The running cost is mostly staff time

Software is the small part. One person can do the drafting on a free ChatGPT or Claude plan, and the individual paid tiers are listed at $20 a month as of October 2026 (check the current page). If several desk staff will share one project, look at the business tiers instead: ChatGPT Business and Claude Team each list $25 per seat on monthly billing with a two-seat minimum, and by default neither trains its models on your business content. The spreadsheet costs nothing. What you actually spend is desk time, roughly two hours a fortnight on check-ins plus a few minutes each morning on the session list, and the discipline to keep names out of every prompt: IDs and counts only.

Questions climbing gym owners ask about this

Can AI run or shorten the induction itself?

No. The induction is a supervised, in-person check carried out by a qualified instructor, and what it covers is set by your insurer, your risk assessment and any guidance you follow. A short pre-reading video that you wrote and approved can save time on the day, but it supplements the instructor and never replaces them.

Do I need member consent to use visit data like this?

Check your membership terms and privacy notice. They should say you use check-in records to contact members about their membership, and members should be able to opt out of messages. Rules differ by place, so have an adviser read the wording once. Working with member IDs instead of names keeps personal data out of the spreadsheet and out of any AI tool.

What if my system cannot export visit data?

Ask the vendor for a check-in report by member and date. If it only shows a daily list, export a week at a time and stack the weeks in one sheet. Failing that, start smaller: track only members who joined in the last 60 days, and fix the data supply before you add rules.

How many members should I message a week?

Start with 10 to 15 and read every reply before sending more. You want to learn whether the flag rule finds the right people and whether staff can answer replies the same day. Scale up once false flags, such as members who say they are fine or away, become rare.

Further reads

Sources: Rock Gym Pro help centre articles on customer reports and check-in history (seen in search results, October 2026); OpenAI's custom GPT retirement FAQ; OpenAI and Anthropic pricing pages. Gym size, thresholds, prices, replies and outcomes in the examples are illustrative.

Want induction bookings and member check-ins sorted?

On a 1:1 call we'll look at how inductions are booked and how lapsing members are spotted today, choose the first job worth drafting with AI, and check what your membership system can export.

Book a 1:1 call with me