Calculate SaaS Churn Risk
Deterministically.
Arcli evaluates Stripe billing events and product signals against explicit thresholds. Scores are explainable, reversible, and safe to automate.
Where Probabilistic Models Break
Billing automation requires explicit state. Probability scores are useful for analytics, but they are unsafe as triggers for financial workflows.
A probabilistic alert can trigger outreach to active users. That erodes trust and creates noise in your recovery pipeline.
Support teams need clear, human-readable event logs to explain why a message was sent.
Rules, Not Guesses
Arcli relies on explicit thresholds inside the churn_scoring_service. We separate involuntary churn (billing failures) from voluntary churn (inactivity) to trigger precise recovery flows.
1. Involuntary Churn (Stripe State)
There is no "prediction" needed for a failed credit card. If a Stripe invoice_payment_failed webhook is received, the risk score is automatically maximized, bypassing all behavioral checks to trigger an immediate dunning flow.
2. Voluntary Churn (Behavioral State)
Threshold-based scoring defines exact parameters for feature abandonment. If a user's last_seen_at timestamp exceeds your explicit limit, they transition deterministically into an "At Risk" state.
3. Dynamic Suppression
If a user pays their Stripe invoice or logs back into the application while in a high-risk state, the score instantly resets. The system drops any pending emails from the queue automatically.
{
"tenant_id": "req_8f72k",
"rule_set": "enterprise_tier",
"conditions": {
"involuntary": {
"stripe_events": ["invoice.payment_failed"],
"action": "trigger_dunning_flow",
"priority": "critical"
},
"voluntary": {
"days_inactive": "> 14",
"core_feature_usage": "== 0",
"mrr_value": "> 100",
"action": "trigger_reengagement_flow"
}
},
"suppression": {
"reset_on": ["invoice.paid", "user.login"]
}
}Engineered for Scale: Evaluating State Without N+1s
Backend engineers hate marketing tools because querying thousands of users to check last_seen_at thresholds every minute crashes databases.
Arcli pre-calculates high-risk states using background materialization, avoiding heavy analytical queries on your primary database.
Batched processing and strict cursor pagination ensure evaluating inactivity limits stays O(1) in memory, regardless of your user base size.
Every score change generates an immutable audit log. You never have to guess why Arcli triggered a recovery email.
Deterministic Scoring FAQ
What is deterministic churn scoring?
Deterministic churn scoring evaluates absolute facts, such as a Stripe invoice_payment_failed webhook or exactly 14 days of application inactivity, rather than relying on probability-based machine learning models.
Why shouldn't I use AI for churn prediction?
AI provides probabilities, not facts. Triggering automated billing recovery emails based on a 78% "chance" of churn leads to false positives, spamming active users, and damaging brand trust. Financial automation requires determinism.
How does Arcli combine Stripe data with app events?
Arcli ingests both raw application activity (e.g., logins) and Stripe lifecycle events into a unified, tenant-isolated data layer. The scoring engine evaluates thresholds across both datasets simultaneously.
Can I adjust thresholds for different customer tiers?
Yes. Arcli allows you to configure specific rule sets based on MRR or plan type. You can set a tighter 7-day inactivity threshold for Enterprise users, while giving basic tier subscribers a 30-day window.