Retention

How I Used Claude to Personalize Renewal Emails (and Recovered 15% More Players)

Guido Mamone July 2026 5 min read

At Ligas Flex, a matchmaker tennis app, replacing a generic renewal email with one Claude wrote for each player recovered 15% more players than the blast it replaced. Here's the situation, the problem, and how I built it.

Situation

The main retention mechanism was a bi-monthly email sent to inactive players close to their renewal date. The copy was generic: "we miss you," "the other players miss you." In 2026, that kind of message does more harm than good. Players can tell a blast from a message that was actually written for them.

Problem

The same to everyone doesn't work.

A player who just lost 6-0, 6-0 got the same email as a player who used to play every week and is running out of competitive matches. Both got "we miss you." Neither message addressed why they were actually disengaging.

The problem wasn't the tone. It was that a single generic message can't map to different reasons for the same behavior.

Hypothesis

If the message matched the reason a player was disengaging instead of repeating the same plea to everyone, more of them would come back. I split players into four buckets based on activity and performance, and defined "active" as having played at least one match in the last three weeks.

  • Inactive → tips on how to use the platform and get back into a league.
  • Crushing it → recommend stronger opponents so matches stay competitive.
  • Losing badly → give tips for winning and recommend better-matched, weaker opponents.
  • Active → a specific note going over their last matches and performance.

Each bucket needed a different message because each bucket was actually a different problem.

Action

Close to a player's renewal date, a cron job pulls their full history and sends it to Claude. Claude:

  1. Categorizes the player into one of the four buckets.
  2. Writes a personalized message for that specific player.
  3. Sends the message back to the platform, which sends the email.

The platform then attaches that email to the player's record. On the next cycle, Claude sees what it said last time and can follow up on it, instead of starting cold. The result reads like an ongoing conversation with the player, not a series of disconnected blasts.

The engineering (cron job, API call, storing the email history) was the easy part. Getting Claude to categorize players correctly and write messages that didn't sound like a template took many rounds of prompt testing: tightening the definition of each bucket, handling edge cases (a player who's crushing it but also inactive), and calibrating tone.

Result

Compared to blasting the same generic email to the same group of players, the personalized system delivered a 15% recovery rate. That's 15% more of the targeted players who renewed or came back to the platform.

A few things stood out once it was live:

Segment by reason, not just by behavior. A low match count can mean several different things. Treat it as one audience and your message will be wrong for most of them.

Let the system remember. Attaching the sent message to the player record and feeding it back next cycle is what made this feel like a relationship instead of a campaign.

Budget time for prompt iteration, not just build time. The pipeline was the fast part. Getting the message quality right was where most of the effort went, and where most of the recovery rate came from.

Four buckets was a starting point, not a ceiling. I could split "crushing it" further by whether they're beating strangers or the same handful of players. I could split "inactive" by how many weeks they've been gone. I stopped at four because that's what I could test with confidence in one pass. That's the real change AI brings to this kind of work: adding a new bucket used to mean new logic, new templates, more engineering time. Now it's one more line in a prompt. The limit isn't the tooling anymore. It's how much you're willing to test.

Get in touch

Let's connect

Interested in talking through retention systems, AI-driven personalization, or growth experiments? I'd love to hear from you.