Modern BI

How We Gave RevOps a Churn Model They Can Run Without Data Science

Let the people who fight churn model it themselves: change a customer’s MRR, rescore their risk with a Snowpark model in the warehouse, and act — no data-science queue, no code.

Nikola Gemeš
July 2, 2026
3 min
read
How We Gave RevOps a Churn Model They Can Run Without Data Science

Churn scoring usually lives with data science. This puts it in the hands of the people who actually fight churn — a customer-success lead changes an account’s MRR, rescores the risk against a model running in the warehouse, and decides what to do, all in one app.

A customer-success lead can see the account is slipping. Usage is down, the renewal is ninety days out, and the instinct is to test something: what happens to their churn risk if we move them to a lower tier, or hold the price at renewal? Right now that question goes into a queue. Data science owns the model, the score arrives in a dashboard weeks later, and by the time anyone can act on it the renewal window has moved.

There’s a better shape. The churn model runs in the warehouse, and the app that sits on top lets the business change an input — a customer’s MRR — and rescore risk on the spot. No notebook, no data-science ticket, no export. The people closest to the account can model the scenario and act on it in the same place.

This is the Price Modeling & Churn Risk app in the Astrato gallery. Here’s what it does, how it’s built, and why running the model where the data lives is what makes it usable by more than just data scientists.

Where churn scoring gets stuck

The problem is rarely the model. It’s that the model is locked away from the people who need to act on it.

  • The score lives in a notebook. Data science builds and owns it; the business sees a number in a dashboard, disconnected from how it was produced or how to change it.
  • You can’t ask “what if”. The score is static. There’s no way to test how a discount, a plan change, or a held price at renewal would actually move the risk.
  • By the time you can act, it’s stale. Retention is time-sensitive. A monthly batch score misses the window where a save was still possible.
  • Seeing and doing live in different tools. You spot the risk in one place, take the action in another, and log it in a third — so the analysis and the response never quite line up.

It’s an architecture gap: the model, the inputs, and the action all live in different places, so acting on a score means stitching them together by hand.

See it work

churn risk app - Build one yourself in Astrato
link to live demo app

Pick a customer from the table, change their monthly recurring revenue, and hit Calculate risk. A model running in the warehouse rescores that account’s churn risk and hands the number straight back to the app. It’s the whole loop — see the account, model a change, get the risk — in one screen, with no code and no data scientist in the loop for each scenario.

How it’s built

Four steps, no replatforming:

  1. Connect to live warehouse data. Your customers, subscriptions and usage already live in Snowflake. Point Astrato at them and the app reads them live, so the risk you model is based on the account’s current state, not last month’s extract.
  2. Model the inputs in the Semantic Layer Editor. Define the dimensions and measures the model depends on — customer, plan, tenure, MRR, usage — once, in one place. Everyone’s “MRR” is the same MRR, so every scenario starts from the same numbers.
  3. Add the input with writeback. Give the customer table a select control and an editable MRR field using an input form and writeback. The user picks an account and changes the value — the change is captured in the warehouse, not in a throwaway local state.
  4. Score it with Snowpark, in place. The Calculate risk button calls a Snowpark procedure that runs the churn model inside Snowflake against the adjusted MRR and returns the score. The data never leaves the warehouse, and there’s no notebook round-trip — the model is wired into the app, so the business runs it without owning it.

From there you surface the score and its drivers back in the app, and can write scenarios back if you want a record of what was modelled and when.

What changes when churn modeling is a governed data app

Put the model behind an app on live warehouse data and the score stops being something the business waits for and starts being something it uses.

  • The people who fight churn can model it. Customer success and RevOps test scenarios themselves, without a ticket to data science for every question.
  • “What if” gets answered on the spot. Change the MRR, rescore, see the risk move — while the renewal conversation is still live.
  • Analysis and action share one place. Spot the risk, model the fix, and record the decision in the same app, so nothing gets lost between tools.
  • The model runs where the data is. Snowpark executes inside Snowflake, so scoring happens on governed data with nothing copied out to a laptop or a separate service.
  • One definition of the inputs. MRR, tenure and usage are defined once in the semantic layer, so every scenario and every user works from the same figures.

Why it holds up

The reason you can hand this to the business and trust the result: the model never leaves the warehouse. Snowpark runs the scoring next to the data in Snowflake, so there’s no export and no second copy to secure. The MRR changes people make go through writeback into governed warehouse tables, captured rather than lost in a local session, so you can see what was modelled and by whom. And access carries over from the warehouse, so a rep only sees and models the accounts they’re allowed to. The score is something the business can act on precisely because the governance underneath it never moved.

Make it yours

Open the Churn Risk app in your workspace, point it at your own customer and subscription tables, and give your revenue team a model they can actually run. It’s the same pattern behind the Budget-vs-Actuals app — a governed input, live data, and action built into the analytics instead of bolted on beside it.

Key takeaways

  • A churn score is only useful if the people who fight churn can model and act on it themselves.
  • Writeback turns the score from a static number into a live “what if”: change MRR, rescore, decide.
  • Running the model with Snowpark keeps scoring inside the warehouse — nothing exported, nothing copied.
  • Defining the inputs once in the semantic layer means every scenario starts from the same numbers.

Ready to experience next-gen analytics?

See how Astrato runs natively in your warehouse.