//Caso de uso

Sinais de cobrança e inadimplência sem decidir sozinho

Cobrança é decisão que afeta a vida de alguém. O desenho útil aqui não é o que automatiza mais: é o que deixa rastro de por que agiu.

Cobrança é o caso deste guia em que mais vale começar pelo limite, e não pela capacidade. Do outro lado do texto existe uma pessoa com uma dívida, e a decisão que o sistema toma muda o dia dela. Por isso este artigo descreve um desenho que não automatiza a decisão de cobrar: ele automatiza a leitura, a priorização e o encaminhamento, e deixa a decisão sensível onde ela deve ficar.

O Jev, modelo da TypeSafe AI, devolve decisões tipadas com probabilidade em vez de texto. Em cobrança, a propriedade mais útil não é a classificação — é o registro: você guarda a distribuição inteira e, meses depois, consegue reconstruir o que o sistema viu.

A parte que precisa ficar dita

O artigo 20 da Lei 13.709/2018 dá ao titular o direito de solicitar a revisão de decisões tomadas unicamente por tratamento automatizado que afetem seus interesses. Este site é de comunidade, não dá orientação jurídica, não inventa obrigação além do que a lei diz e não substitui a avaliação do jurídico da sua empresa.

O que a arquitetura pode fazer, e o que recomendamos aqui, é concreto: manter uma pessoa na decisão final quando a ação afeta o titular, guardar a distribuição e a confiança junto com a ação, registrar qual versão do modelo respondeu, e ter um caminho de revisão que produza um registro. O padrão completo está em revisão humana no lugar certo.

O desenho das perguntas

Uma chamada por caso. No state, o último contato do cliente e os campos do contrato já calculados pelo seu sistema.

{
  "state": {
    "mensagem_do_cliente": "Recebi a cobrança mas esse valor não bate com o que combinamos. Estou desempregado desde março e não tenho como pagar tudo de uma vez. Consigo pagar em três vezes a partir do dia 10.",
    "contrato": {"parcelas_em_atraso": 2, "dias_de_atraso": 47, "saldo_devedor_brl": 1840.00},
    "historico": {"acordos_anteriores": 1, "acordos_quebrados": 0}
  },
  "questions": {
    "postura": {
      "type": "choice",
      "instructions": "Qual a postura do cliente nesta mensagem em relação à dívida?",
      "criteria": {
        "quer_negociar": "Reconhece a dívida e propõe ou pede forma de pagamento.",
        "contesta_valor": "Discorda do valor, do contrato ou diz que já pagou.",
        "pede_prazo": "Reconhece e pede apenas mais tempo, sem propor parcelamento.",
        "sem_condicoes": "Declara não ter como pagar, sem propor alternativa.",
        "hostil_ou_recusa": "Recusa-se a tratar do assunto ou responde com hostilidade.",
        "indefinida": "A mensagem não permite identificar a postura."
      }
    },
    "clareza_da_proposta": {
      "type": "score",
      "instructions": "Quanto a mensagem traz uma proposta concreta de pagamento?",
      "criteria": [
        "Nenhuma proposta.",
        "Intenção genérica de pagar, sem detalhe.",
        "Proposta com valor ou prazo, mas incompleta.",
        "Proposta completa: valor, número de parcelas e data."
      ]
    },
    "risco_de_conflito": {
      "type": "score",
      "instructions": "Quanto esta mensagem indica risco de escalada formal ou conflito?",
      "criteria": [
        "Nenhum sinal.",
        "Insatisfação, sem menção a terceiros.",
        "Menciona Procon, advogado ou reclamação formal.",
        "Afirma que já acionou órgão, advogado ou Justiça."
      ]
    },
    "cita_vulnerabilidade": {
      "type": "noul",
      "instructions": "A mensagem menciona desemprego, doença, luto, idade avançada ou outra situação de vulnerabilidade?"
    },
    "afirma_ja_ter_pago": {
      "type": "noul",
      "instructions": "O cliente afirma que já pagou este valor ou que a cobrança é indevida?"
    }
  }
}

dias_de_atraso e saldo_devedor_brl entram prontos. Isso não é conveniência: é obrigatório, porque o modelo não faz aritmética nem compara datas de forma confiável.

O que o código faz com a resposta

Piso de confiança primeiro. Postura com confiança baixa vai para um atendente, sem nenhuma ação automática de cobrança. Aqui o piso deve ser mais alto que nos casos de suporte, porque o erro tem consequência para a pessoa.

Regras determinísticas depois, e elas são de proteção. afirma_ja_ter_pago acima do corte suspende a régua de cobrança e abre uma verificação — cobrar alguém que já pagou é o pior erro possível neste fluxo. cita_vulnerabilidade acima do corte tira o caso do fluxo automático e manda para atendimento humano, sempre. risco_de_conflito no nível mais alto vai para o jurídico.

Combinação por último, e só para ordenar a fila de contato humano.

p = r.answers["postura"]

if r.answers["afirma_ja_ter_pago"].noul > 0.4:      # corte baixo de propósito
    return suspender_cobranca(caso, motivo="alegação de pagamento")

if r.answers["cita_vulnerabilidade"].noul > 0.5:
    return fila_humana(caso, trilha="atendimento social")

if r.answers["risco_de_conflito"].score >= 3:
    return fila_juridico(caso)

if p.confidence < PISO_ALTO or p.choice == "indefinida":
    return fila_humana(caso, trilha="revisão")

registrar(caso, postura=p.choice, distribuicao=p.probabilities,
          confianca=p.confidence, modelo=r.model)
ordem = 0.7 * (r.answers["clareza_da_proposta"].score / 3) \
      + 0.3 * (1 - r.answers["risco_de_conflito"].score / 3)
fila_negociacao(caso, ordem)

Repare que nenhum ramo termina em “negativar”, “protestar” ou “bloquear”. Todos terminam em uma fila, um registro ou uma suspensão. Essa é a escolha de desenho central deste caso.

Onde entra a pessoa

Na decisão final, sempre que a ação afeta o titular; em toda alegação de pagamento; em toda menção de vulnerabilidade; e em toda faixa de confiança baixa. O limiar acompanha o risco, e os cortes aqui são deliberadamente assimétricos: 0,4 para suspender cobrança e um piso alto para agir.

Num fluxo de suporte, um falso positivo custa a leitura de um analista. Aqui, um falso negativo pode custar uma cobrança indevida a uma pessoa desempregada — e um processo. Vale calibrar nessa direção.

Custo

Assumindo cinquenta mil casos por mês — suposição deste artigo — e um state de cerca de dois mil tokens, que cobre a conversa e os campos do contrato: ao preço oficial de US$ 0,042 por milhão de tokens de entrada, com saída gratuita, e o dólar estimado em R$ 5,40, cada caso sai por cerca de R$ 0,00045 e o mês por cerca de R$ 22,68. A fórmula está em quanto custa uma decisão.

O ponto econômico aqui é diferente dos outros casos: o barato permite ler 100% das mensagens de todos os devedores, o que é justamente o que evita tratar todo mundo com a mesma régua.

Onde isso quebra

Aritmética e datas, que são o coração da cobrança. A documentação oficial é explícita: o jev-1.13 não é calculadora e lê datas como texto, não como quantidade ordenada. Juros, saldo, dias de atraso e vencimento pertencem ao seu sistema. Se você precisar extrair uma data da mensagem do cliente, faça como a receita de extrair datas: extraia as partes com Choice e monte a data no código.

Valores no texto. “Consigo pagar quinhentos” exige extrair um valor, e extração é um dos pontos fracos declarados — o caminho recomendado é achar os candidatos com expressão regular e deixar o modelo escolher o certo, como em extrair valores.

Leitura literal. “Não tenho como pagar tudo de uma vez” não é o mesmo que “não tenho como pagar”. Se o criteria não distinguir os dois casos com clareza, a régua vai misturá-los. Isso é trabalho de critérios que separam.

State grande. Todo o histórico de cobrança no state derruba a acurácia e ainda esconde qual parte gerou a resposta errada — é um dos nove modos de falha declarados.

A lista completa está em limites do Jev e os outros fluxos em casos de uso.

Perguntas frequentes

Posso negativar alguém com base na resposta do modelo?

Este guia não dá orientação jurídica e não recomenda isso. O artigo 20 da Lei 13.709/2018 dá ao titular o direito de solicitar revisão de decisões tomadas unicamente por tratamento automatizado que afetem seus interesses. O desenho que descrevemos mantém a pessoa na decisão final e guarda a distribuição para auditoria.

Para que serve o modelo em cobrança, então?

Para ler texto em escala e priorizar contato: separar quem contesta de quem quer negociar, identificar promessa de pagamento e sinalizar situações que exigem tratamento humano imediato. A ação de cobrar continua sendo decidida pela sua política e, nos casos sensíveis, por uma pessoa.

Que dados guardar para auditoria?

A distribuição inteira de cada pergunta, a confiança, o identificador da versão do modelo que respondeu, o texto avaliado e a ação tomada. Guardar só o rótulo escolhido destrói a evidência de que a decisão era defensável.

O modelo calcula juros, saldo ou dias de atraso?

Não, e não deve. A documentação oficial diz que o jev-1.13 não é calculadora e que ele lê datas como texto, não como quantidade ordenada. Saldo, juros e dias de atraso vêm do seu sistema, já calculados, como campos do state.

Quanto custa avaliar cinquenta mil casos por mês?

Assumindo um state de cerca de dois mil tokens, que cobre a conversa e os campos do contrato, ao preço oficial de US$ 0,042 por milhão de tokens de entrada e com o dólar estimado em R$ 5,40, cinquenta mil casos saem por cerca de R$ 22,68.

Quer dominar decisões com IA em português? O curso da comunidade está em pré-venda.

Garantir pré-venda por R$ 499,00

Pré-venda: R$ 499,00 · Após o lançamento: R$ 799,00