Churn Prediction

#  What if the churn model knew  
the weight of the monthly fee on the customer's wallet?

Territorial data as churn predictive variables — estimated surrounding income, implicit monthly fee commitment, and regional socioeconomic context. Updated monthly. No CPF required, via API. 

5–7%

acceptable annual churn  
em SaaS B2B ¹

5–7×

more expensive to acquire  
than to retain ²

15–25%

typical annual churn  
in telecom B2C ³

The problem

## Churn models are blind to the customer's real economic context

Most predictive churn models use internal variables: login frequency, support tickets, NPS, time since last use. But they ignore a fundamental dimension — **whether the monthly fee weighs on the customer's budget or not**. Two customers with the same usage pattern can have completely different churn risks if one lives in a region with median income of R$ 12,000 and the other in a region with median income of R$ 1,800.

0

territorial economic context variables in typical churn models

Traditional models treat all customers as if they had the same purchasing power

3,5%

average monthly churn in SaaS B2B — 2.6% voluntary + 0.9% involuntary

Fonte: UserMotion, Benchmark 2024 — baseado em 1.000+ empresas SaaS

10%

churn in the first month — the initial 90 days are the most critical period

Drops to 4% by the 3rd month with active strategies. Source: UserMotion, 2024 ⁴

The scenario

## Same plan. Same usage.  
Opposite financial pressure.

Without territorial data, the churn model can't distinguish a customer for whom the monthly fee is irrelevant from one for whom it takes a significant share of income. Both show the same health score.

Customer A

### Vila Madalena — São Paulo/SP

**Subscribed plan:** R$ 299/month

**Regional median income:** R$ 9.840

**Implicit weight:** 3,0% da renda (leve)

**Z-score:** +1.12 (high-income region)

**Uso:** Moderate (3×/week)

**Health score:** 72

→ Monthly fee irrelevant in the budget. Price-driven churn is unlikely.

Customer B

### Periferia — Ananindeua/PA

**Subscribed plan:** R$ 299/month

**Regional median income:** R$ 1.420

**Implicit weight:** 21.1% of income (critical) ⚠

**Z-score:** -0.84 (low-income region)

**Uso:** Moderate (3×/week)

**Health score:** 72

→ Monthly fee consumes 1/5 of local income. Any financial squeeze triggers cancellation.

Without PrismaData, both have the same health score. With it, Customer B is flagged as high financial risk — the monthly fee weighs 7× more on the regional budget.

The solution

## Surrounding economic context.  
One coordinate. No CPF.

Send latitude and longitude of the customer's address. Receive estimated regional income, comparative z-score, and territorial context data. Each variable is a ready-to-use feature for the churn model.

GET /v1/location/personal_income_pdf

GET /v1/location/slum

GET /v1/location/border

Response — Ananindeua/PA (lat=-1.3728, lng=-48.3988) | Plan: R$ 299/month
    
    
    {
      // — Renda (personal_income_pdf) —
      "renda_media_regiao": 1654.20,
      "renda_mediana_regiao": 1420.00,
      "renda_comparada_z_score": -0.84,
      "renda_comparada_cdf": 0.2005,
      "qtde_pessoas": 487,
    
      // — Feature derivada (calculada pelo cliente) —
      "peso_mensalidade_sobre_mediana": 0.2106,
      // → 21,06% — mensalidade consome 1/5 da renda local
    
      // — Contexto territorial (slum) —
      "favela_distancia_m": 340.8,
      "favela_dompp_total": 1204,
    
      // — Fronteira (border) —
      "ponto_contido_na_faixa_de_fronteira": false
    }

Renda

median + z_score

Customer's regional income. Base for calculating monthly fee weight.

Implicit weight

monthly fee / median

How much of the typical surrounding income the monthly fee represents.

Contexto

comunidade + fronteira

Territorial vulnerability as a price elasticity proxy.

How it works

## Three steps to add territorial context to the churn model

The integration doesn't replace your existing model — it adds features it doesn't have access to today.

1

#### Geocode the customer base

Convert addresses or ZIP codes to coordinates (lat/lng). If you already have coordinates, skip ahead.

2

#### Consulte a API e derive as features

Send coordinates to `personal_income_pdf`. Calcule `weight = monthly_fee / median_income`.

3

#### Inject into the model as an additional feature

Adicione `peso_mensalidade`, `z_score_renda` e `renda_mediana` no seu XGBoost, Random Forest ou qualquer classificador.

Derived feature — Monthly fee weight

**peso_mensalidade** = valor_plano / renda_mediana_regiao  
Ex: R$ 299 / R$ 1.420 = **0.2106** (21% — high risk)  
Ex: R$ 299 / R$ 9.840 = **0.0304** (3% — low risk)

Integration

## Plug and play. Batch ou real-time.

Integration via REST API. Send the customer's coordinates or ZIP code — in real-time during onboarding or in batch to enrich the existing base.

Customer base Address, ZIP code or coordinate PrismaData API /v1/location/income lat + lng Enriched response Income, z-score, community, context Churn model Territorial feature as input adicional no ML

REST

Standard API

< 200ms

Typical latency

1.024

Pontos/chamada batch

SDK

Python available

OpenAPI

Spec + Sandbox

AI-ready

Claude Code, Copilot, Cursor

Applications

## Where does territorial context improve churn prediction?

Every company with a recurring model (SaaS, subscription, plan, financing) that captures the customer's address can benefit.

#### SaaS e plataformas digitais

A R$ 199 monthly fee weighs 2% for someone in Faria Lima and 14% for someone in the outskirts of Belém. Same NPS, completely different risks.

#### Telecom and internet

A R$ 119 plan in a region with median income of R$ 1,200 takes 10% of the budget. Number portability is a matter of time.

#### Insurance and health plans

Health plan delinquency beyond 60 days triggers automatic cancellation. Knowing the premium takes 25% of the surrounding income anticipates the risk.

#### EdTech e cursos

Sector with monthly churn up to 9.6%. Knowing the course installment equals 30% of local income enables offering suitable plans before cancellation.

#### Fintechs e banking

Annual churn of 12–24% in fintech. Customers in regions with income incompatible with the product cost migrate first to free alternatives.

#### Gyms and physical recurring

A member who cancels after 3 months because they're "not using it" is often canceling because the bill started to pinch.

Nuance

## Low income is not synonymous with churn.  
It's a context variable.

Territorial data is not meant to exclude customers — it's meant to **calibrate the retention strategy**. Dois cenários reais mostram por quê:

Proactive action

### High weight → offer downgrade before cancellation

Customer in a region with median income of R$ 1,600, paying a R$ 349 plan (22% of income). Model detects high churn risk due to financial pressure. CS contacts and offers an intermediate R$ 149 plan — retains the customer, preserves part of the revenue.

→ Without territorial data, this customer cancels silently. With it, it becomes a planned downgrade.

Contexto importa

### High weight + high engagement → promoter customer, not risk

Customer in a region with median income of R$ 1,800, paying R$ 299 (17% of income). Looks like high risk — but usage is daily, NPS is 9, and they've already referred 3 people. Regional income is low, but the customer may have individual income above the median. Territorial data is an additional layer, not a verdict.

→ The model combines territorial weight with internal variables. No single feature decides alone.

Diferencial

## Data updated monthly. Not a Census 2022 snapshot.

Os modelos de renda da PrismaData são recalibrados mensalmente com microdados da PNAD Contínua, indicadores do BACEN e outras fontes oficiais. A inferência é feita por algoritmos de ML — o que significa que os dados de renda acompanham a dinâmica real da economia, não ficam estáticos por uma década.

Monthly

Recalibration of income models with PNAD Contínua, BACEN, and complementary sources

Nationwide

Complete Brazil coverage — fine territorial granularity, not just by municipality

Continuous

Income in BRL, z-score, distance in meters. No generic brackets. Ideal for gradient boosting.

Reference data: PNAD Contínua (IBGE), Demographic Census 2022, Central Bank indicators, SNIS, and official public sources. Proprietary models with ML inference, recalibrated monthly.

Model features

## What goes into the model. What comes out of the API.

PrismaData returns raw regional data. You derive the features. Ready-to-inject examples:

peso_mensalidade

`valor_plano / renda_mediana` — How much of the typical surrounding income the monthly fee represents. Continuous. Ideal for risk threshold.

z_score_renda_regiao

Returned directly by the API. Indicates how atypical the region's income is relative to the municipality. Negative z-score = region poorer than average.

renda_cdf

Cumulative percentile of regional income. CDF of 0.20 = the bottom 20% of the municipality. Direct feature — no derivation.

contexto_vulnerabilidade

Combination of community proximity + low income + border. Binary flag or composite score — the combination logic is yours.

3 camadas

Income + community + border. Combinable by coordinate.

Derivable

Raw data allows creating custom features.

Combinable

Combine with internal variables (NPS, usage, tickets) for interaction features.

Governance

## Territorial data, not personal. LGPD-compliant. Auditable.

#### Sem dado pessoal

The query key is the geographic coordinate — not CPF, name, or any personal identifier. The returned data describes a **region** , not an individual.

#### Not individual profiling

The returned income is the regional median, not the customer's. The churn model uses territorial context as a proxy, not as personal data. Simplifies compliance.

#### Auditable and explainable

Every variable is traceable — income comes from a model based on PNAD Contínua and BACEN, community data from IBGE cartographic data. If the regulator asks, you have the answer.

Results

## More context in the model. Fewer silent cancellations.

+3

territorial features added to the churn model

100%

of the base enriched by coordinate — nationwide coverage

0 CPFs

required — 100% enrichment by coordinate, no personal data

**References:**  
¹ Vena Solutions / UserMotion, _SaaS Churn Rate Benchmarks_ , 2024–2025. Annual churn of 3.8–4.9% in B2B SaaS; 5–7% considered acceptable.  
² Harvard Business Review / Bain & Company. Acquisition vs. retention cost: acquiring a new customer costs 5–7× more than retaining an existing one.  
³ CustomerGauge, _Average Churn Rate by Industry_ , 2025. Telecom: 15–25% anual. SaaS SMB: 5–7% mensal.  
⁴ UserMotion, _SaaS Churn Rate Benchmark 2024_. 36% das empresas consideram os primeiros 90 dias como período crítico. Churn de 10% no mês 1, caindo para 4% no mês 3.  
⁵ WeAreFounders, _SaaS Churn Rates by Industry 2025_. Fintech: 12–24% anual; EdTech: até 9,6% mensal.  
⁶ Springer / EPJ Data Science. Spatiotemporal and behavioral features improve banking churn prediction (AUC 77.9% vs. 51.3% demographic). 

## Ready to add territorial context to your churn model?

Talk to PrismaData. We can enrich a sample of your base and measure the model impact in days.

[Talk to PrismaData](<https://prismadata.io/contato/>) [Explore the API →](<https://prismadata.io/documentacao-tecnica/>)
