Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sherlocker.com.br/llms.txt

Use this file to discover all available pages before exploring further.

Classifique pessoas por capacidade financeira usando dados reais: valor venal de imóveis, frota de veículos, aeronaves, capital social de empresas e vínculos empregatícios. Ideal para crédito, seguros, investimentos e marketing direcionado.

Estratégia

Para cada CPF da base, consulte em paralelo os principais sinais patrimoniais e monte um score simples baseado nos dados encontrados.

Sinais e Pesos Sugeridos

SinalCondiçãoPontos
Imóveis alto valorValor venal > R$2M+30
Imóveis médio valorValor R500kR500k - R2M+20
Imóveis baixo valorValor R100kR100k - R500k+10
Frota 3+ veículos3 ou mais veículos+10
1-2 veículos1 ou 2 veículos+5
Aeronave registradaPossui aeronave+30
Capital alto em empresaCapital social > R$1M+15
Capital médio em empresaCapital R100kR100k - R1M+10

Implementação

import requests
from concurrent.futures import ThreadPoolExecutor, as_completed

BASE = "https://221b-api.sherlocker.com.br/api/v1"
TOKEN = "SEU_TOKEN"

def get(endpoint, **params):
    params["token"] = TOKEN
    return requests.get(f"{BASE}{endpoint}", params=params).json()

def calcular_score(cpf):
    with ThreadPoolExecutor(max_workers=4) as pool:
        fut_im  = pool.submit(get, f"/imoveis/cpf/{cpf}")
        fut_ve  = pool.submit(get, f"/aeronaves/cpf/{cpf}")  # aeronaves
        fut_vei = pool.submit(get, f"/veiculos/cpf/{cpf}")
        fut_emp = pool.submit(get, f"/empresas/cpf/{cpf}")

    imoveis   = fut_im.result().get("imoveis", [])
    aeronaves = fut_ve.result()
    veiculos  = fut_vei.result().get("veiculos", [])
    empresas  = fut_emp.result().get("socios", [])

    score = 0
    sinais = []

    # Imóveis — usar valor_venal quando disponível
    valor_imoveis = sum(float(im.get("valor_venal", 0) or 0) for im in imoveis)
    if valor_imoveis > 2_000_000:
        score += 30; sinais.append("imóveis >R$2M")
    elif valor_imoveis > 500_000:
        score += 20; sinais.append("imóveis R$500k-R$2M")
    elif valor_imoveis > 100_000:
        score += 10; sinais.append("imóveis R$100k-R$500k")

    # Veículos
    n_veiculos = len(veiculos)
    if n_veiculos >= 3:
        score += 10; sinais.append(f"{n_veiculos} veículos")
    elif n_veiculos > 0:
        score += 5; sinais.append(f"{n_veiculos} veículo(s)")

    # Aeronaves
    tem_aeronave = aeronaves.get("aeronaves") or aeronaves.get("total", 0) > 0
    if tem_aeronave:
        score += 30; sinais.append("aeronave registrada")

    # Capital social das empresas vinculadas
    capital_max = max(
        (e.get("capital_social") or 0 for e in empresas),
        default=0
    )
    if capital_max > 1_000_000:
        score += 15; sinais.append(f"empresa capital R${capital_max/1e6:.1f}M")
    elif capital_max > 100_000:
        score += 10; sinais.append(f"empresa capital R${capital_max/1e3:.0f}k")

    # Faixa
    if score >= 70:   faixa = "A"
    elif score >= 45: faixa = "B"
    elif score >= 25: faixa = "C"
    elif score >= 10: faixa = "D"
    else:             faixa = "E"

    return {"cpf": cpf, "score": score, "faixa": faixa, "sinais": sinais}

# Segmentar uma lista de CPFs
cpfs = ["12345678901", "98765432100", "11122233344"]

resultados = []
with ThreadPoolExecutor(max_workers=5) as pool:
    futures = {pool.submit(calcular_score, cpf): cpf for cpf in cpfs}
    for fut in as_completed(futures):
        resultados.append(fut.result())

# Agrupar por faixa
faixas = {"A": [], "B": [], "C": [], "D": [], "E": []}
for r in resultados:
    faixas[r["faixa"]].append(r)

for faixa, grupo in faixas.items():
    print(f"Faixa {faixa}: {len(grupo)} pessoas")
    for p in grupo:
        print(f"  {p['cpf']} (score {p['score']}) — {', '.join(p['sinais'])}")

Faixas de Classificação

FaixaScoreClassificaçãoPerfil típico
A>= 70Ultra-alta rendaImóveis >R2M,aeronave,capital>R2M, aeronave, capital >R1M
B>= 45Alta rendaImóveis R$500k-2M, veículos, empresa com capital
C>= 25Média-altaImóvel, veículo, empresa pequena
D>= 10Média1 veículo ou empresa com capital mínimo
E< 10Não identificadaSem sinais patrimoniais detectados

Considerações

  • O score é conservador: indica poder aquisitivo mínimo detectável, não renda exata.
  • Faixa E não significa renda baixa — pode ser ausência de dados patrimoniais registrados.
  • Use as consultas em paralelo (ThreadPoolExecutor) para performance.
  • Quando valor_venal não está disponível nos imóveis, o sinal de valor não é computado.

APIs utilizadas

Imóveis

Valor venal de propriedades

Veículos

Frota registrada

Aeronaves

Aeronaves e drones

Empresas

Capital social das empresas vinculadas