Tells you who to ring first
Every customer still with you gets a risk score and a place in the queue. Start at the top and work down for as long as your week allows.
Some of your customers are going to leave and you would rather hear it now than at renewal. Upload a CSV of your customers with a column saying who has already left, and get back a ranked list of who looks most like them — plus what the pattern hinges on. It runs in your browser, so the file never leaves your machine.
Drop a customer CSV here, or
One row per customer, up to 20,000 rows, with a column saying who churned. The rest is worked out for you.
The file is read, encoded and modelled in this browser tab. It never reaches our server, so there is nothing for us to keep.
You know your churn rate. You do not know which accounts make it up, or which of the things you believe about churn are actually true.
Every customer still with you gets a risk score and a place in the queue. Start at the top and work down for as long as your week allows.
The tool checks itself against customers it was not shown, so the accuracy you see is the accuracy you would get in real life — not a flattering number.
Which of your columns actually separate the customers who left from the ones who stayed, and in which direction. Useful for deciding what to fix, not just who to call.
If one of your columns quietly gives the game away — a refund date, a closed-account flag — the results are worthless. You get told before you see the number, not after.
If too few of your customers have ever left, there is no pattern to find. The tool tells you that instead of making something up.
Take the ranked customers away as a CSV. Your file is read inside your browser tab and never reaches us. Free, no sign-up.
One row per customer, and a column that says whether they left — churned, cancelled, true/false, anything of that shape. Bring along whatever else you record about them: plan, signup date, spend, usage, support tickets.
It is read inside your browser tab and nothing is uploaded. No account, no waiting.
Read any warnings first, then the ranked at-risk customers and what the pattern hinges on. Download the list and give the top of it to whoever makes the calls.
A file this shape is enough to start:
customer_id,signup_date,last_active,monthly_sessions,support_tickets,plan,seats,churned
CUST_001,2024-01-15,2025-08-20,15,2,pro,4,1
CUST_002,2024-03-10,2026-09-01,45,0,team,12,0
CUST_003,2024-06-01,2025-08-15,8,5,starter,1,1People search for both and mean different things. A churn rate answers how many left. Churn prediction answers which ones are about to. You need the first to make sense of the second, so you get both here.
churned in the period ÷ customers at the start of the period
One division, no tool needed. Every result here shows yours anyway — how many left, how many stayed, and the share — because losing 3% of your customers and losing 40% are read completely differently.
learned from the customers who already left
Needs history, and needs a decent number of customers who have actually left to learn from. What you get back is a ranked list of accounts, which a rate can never give you.
Customer retention prediction is the same thing said the other way round: a low churn score is a retention score. The list is ranked by risk because that is where a retention team’s week actually goes.
Churn prediction is working out, from what you already know about a customer, how likely they are to leave. A model learns the pattern from customers who have already gone and then scores the ones who are still here, so you can rank them by risk. It answers “who is about to leave”, which is a different question from “how many left last month” — that one is the churn rate, and it needs no model at all.
Divide the customers who left during a period by the customers you had at the start of it, then multiply by 100. If you began January with 500 customers and 15 cancelled, that is 15 ÷ 500 = 3% monthly churn. Customers who joined mid-period are usually left out of the denominator, because counting them makes the number look better than it is. Revenue churn is the same sum done on recurring revenue rather than logos.
For a business selling to mid-market and enterprise, good is roughly 5-7% annual logo churn, which is under 1% a month. Self-serve and SMB products run much hotter: 3-5% a month is normal there and is not a sign of a broken product. Consumer subscriptions are hotter still. The benchmark that matters more than any of these is whether your churn is falling as your cohorts mature.
Customer churn counts accounts that left; revenue churn counts the money that left with them. They diverge whenever your customers are different sizes, and the gap is informative. Losing lots of small accounts gives high customer churn and mild revenue churn. Losing one large account does the reverse, and is the more dangerous of the two.
Negative churn is when expansion revenue from your existing customers is larger than the revenue you lose to cancellations and downgrades, so the base grows even with no new sales. It is measured as net revenue retention above 100%. Best-in-class B2B SaaS sits at 120% or more. It usually comes from seat-based or usage-based pricing rather than from customers being happier.
Most churn traces back to a customer never reaching the point where the product became useful to them. The common drivers are a weak onboarding, a single champion who left the account, falling usage over the months before the cancellation, repeated support problems, and failed payments. That last one is bigger than people expect — involuntary churn from expired cards can be a quarter of all cancellations, and it is the cheapest kind to fix.
Enough churned customers, not just enough customers. A usable model needs a few hundred rows and at least 30-50 examples in the churned group; below that it learns noise and the accuracy it reports back is fiction. If only 2% of your base has ever cancelled, you need a much bigger file to get those examples. Twelve months of history is a reasonable target because it covers a full renewal cycle.
Judge it on AUC rather than accuracy, and expect 0.70-0.85 on real customer data. Plain accuracy is misleading here: if 5% of customers churn, a model that predicts “nobody churns” is 95% accurate and worthless. A model scoring well above 0.90 is usually a warning sign of leakage, meaning a column snuck in that already encodes the cancellation, such as a refund date or a closed-account flag.
This page does one thing with one file, in your browser, and then stops. It cannot look at anything that is not already a column on the row, and it cannot answer the question you will have thirty seconds after reading the list.
For the follow-up questions, run the same analysis inside your AI assistant with meelu-analytics-mcp. It reads the files off your own disk, joins your customers to your orders to your support history, and answers the next question in the same breath as the first. Free, open source, and local for the same reason this page is. See the churn prediction use case.
A risk score tells you who to ring. These answer the next three questions from the same export, and all of them run in your browser too.
All of them are pieces of Meelu, a desktop app where an AI marketing agent runs your marketing on your own machine. Join the waitlist.