Gym - re-engagement agent

Written By William Bowen

Last updated 15 days ago

Intro

This AI SMS re-engagement agent helps gyms bring inactive members back by sending personalized motivational messages based on their previously stated goals and challenges.

For example, if Pedro wanted to lose weight but struggled with consistency, the AI reminds him of his goal, offers a tailored solution like a new group class, and logs his response in Clerk Chat for future follow-ups.

Use cases

  1. Win Back Inactive Members: The AI reaches out to members who haven’t visited the gym in a while with personalized encouragement.
    Example: Sarah stopped coming three months ago, and the AI reminds her of her goal to build strength, suggesting a new strength-training program starting next week.

  2. Address Workout Plateaus: The AI checks in with members who stopped coming due to frustration with their progress and provides solutions.
    Example: Tom stalled on his weight loss journey, so the AI suggests a trainer session focused on breaking plateaus and shares a motivational success story.

  3. Seasonal Re-Engagement: The AI targets gymgoers who might be more motivated by seasonal events or personal milestones.
    Example: Emily, who wanted to get fit for summer, gets a message about a “4-Week Summer Shred Challenge” starting soon.

  4. Motivating New Year’s Resolutioners: The AI re-engages members who signed up in January but have since dropped off.
    Example: James signed up with a New Year’s resolution but stopped coming in March; the AI reminds him of his commitment and offers a free goal-setting session.

  5. Personalized Challenge Invitations: The AI invites inactive members to specific fitness challenges that align with their goals.
    Example: Mia wanted to improve endurance but lost motivation; the AI invites her to a 30-day running challenge.

  6. Special Offers & Discounts: The AI presents time-sensitive deals or incentives to encourage inactive members to return.
    Example: David gets a message offering him 50% off his first month back if he renews his membership this week.

  7. Overcoming Common Barriers: The AI identifies common reasons why members stop coming and provides solutions.
    Example: Lisa mentioned struggling with time, so the AI suggests quick 30-minute workouts that fit into her schedule.

  8. Re-Engaging Past Class Attendees: The AI nudges people who previously attended classes but stopped showing up.
    Example: Mark used to love spin class but hasn’t been in months; the AI notifies him about a new instructor and a free trial class.

  9. Injury Recovery Check-Ins: The AI follows up with members who stopped coming due to injury and offers safe workout options.
    Example: Rachel had a knee injury and hasn’t returned; the AI checks in and suggests low-impact rehab exercises or a trainer consultation.

  10. Tracking Re-Engagement Campaign Success: The AI logs responses from gymgoers to see which re-engagement tactics work best.
    Example: The gym owner sees that members who receive personal trainer recommendations are 30% more likely to return, leading to a refined re-engagement strategy.

Screenshots

Template

Example
{ "$schema": "https://web-api.clerk.chat/pipeline-schema", "name": "Gyms - re-engagement agent", "nodes": [ { "type": "ai_bot", "name": "Motivate client to return", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "user_message", "nodeConfig": { "modelProvider": "openai", "modelVersion": null, "maxTokens": null, "temperature": null, "variables": {}, "prompt": "You are working for a gym. You are conversing with clients who have a membership but whoa re deemed 'inactive'. \n\nYour goal is to re-engage the clients and get them to return to the gym. If you get the client to return to the gym within 1 day, you win!\n\nSome useful information about the client: \n\nHere are their goals: {{contact.Goals}}\nHere are their challenges: {{contact.Challenges}}\n\nYour output should be maximum 40 words.", "promptSections": [], "sectionTemplates": {}, "responseSchema": { "type": "object", "required": [], "properties": {} }, "opts": { "sendStructuredConvo": true } } }, { "type": "tool_runner", "name": "Update response", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "json", "nodeConfig": { "type": "contact_tools", "config": {}, "enabledTools": [ "set_attribute" ], "tools": { "set_attribute": { "paramValues": { "attributeName": { "type": "fixed", "value": "response" }, "attributeValue": { "path": "response_to_campaign", "type": "pipeline-variable" } } } } } }, { "type": "ai_bot", "name": "Extract response campaign", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "json", "nodeConfig": { "modelProvider": "openai", "modelVersion": null, "maxTokens": null, "temperature": null, "variables": {}, "prompt": "You are having a conversation with a gym member who has been deemed 'inactive'. The goal of this campaign is to re-engage them and get them to come back to the gym. \n\nYour goal is to determine what their response is to this re-engagement campaign. \n\nStart your message with: \"The member is...\"", "promptSections": [], "sectionTemplates": {}, "responseSchema": { "type": "object", "required": [ "response_to_campaign" ], "properties": { "response_to_campaign": { "type": "string" } } }, "opts": { "sendStructuredConvo": true } } }, { "type": "tool_runner", "name": "KB search for challenges", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "json", "nodeConfig": { "type": "knowledge_base", "config": {}, "enabledTools": [ "search" ], "tools": { "search": { "paramValues": { "query": { "path": "contact.Challenges", "type": "pipeline-variable" } } } } } }, { "type": "tool_runner", "name": "KB search for goals", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "json", "nodeConfig": { "type": "knowledge_base", "config": {}, "enabledTools": [ "search" ], "tools": { "search": { "paramValues": { "query": { "path": "contact.Goals", "type": "pipeline-variable" } } } } } }, { "type": "trigger", "name": "Start", "triggeredBy": [ "userMessage" ], "responseType": "json" } ], "edges": [ { "name": null, "sourceNode": "KB search for challenges", "destinationNode": "Extract response campaign", "sourceVariables": null, "filters": [] }, { "name": null, "sourceNode": "Update response", "destinationNode": "Motivate client to return", "sourceVariables": null, "filters": [] }, { "name": null, "sourceNode": "Extract response campaign", "destinationNode": "Update response", "sourceVariables": null, "filters": [] }, { "name": null, "sourceNode": "KB search for goals", "destinationNode": "KB search for challenges", "sourceVariables": null, "filters": [] }, { "name": null, "sourceNode": "Start", "destinationNode": "KB search for goals", "sourceVariables": null, "filters": [] } ] }