Locação de frotas · 2026 · Projeto próprio

A locadora que batia a meta e perdia no crédito

Painel financeiro sobre dados sintéticos, com uma pergunta de negócio por tela e a regra testada por 116 verificações. Os números mostraram que a crise era de crédito, não de receita.

Construído por conta própria, com dados públicos ou sintéticos.

Voto popular no desafio de agosto/2026 da comunidade Jornada de Dados, com 222 votos. Ver o resultado

  • Python
  • SQL
  • DuckDB
  • Streamlit
  • Plotly
  • Parquet
  • API do Claude
  • GitHub Actions
  • Claude Code
dashboard-financeiro-rdev.streamlit.app/metas

A página de Metas, a primeira do funil. Faturamento e caixa acima da meta, inadimplência fora dela; a faixa cinza avisa que a comparação é pelos mesmos meses, não pelo ano cheio.

116/116

Verificações da camada semântica

Contra os números de referência do dicionário de dados

12 s → 0,33 s

Página mais pesada

Ao trocar a conexão viva por um snapshot Parquet local

9,4%

Inadimplência com o corte point-in-time

Sem o corte, o painel mostraria 18,7%: o dobro

O problema

O financeiro de uma locadora de frotas B2B precisa responder quatro perguntas toda semana: se está entregando a meta, quanto faturou e quanto entrou em caixa, quanto está em aberto e com quem, e para onde vai o custo. O painel típico põe trinta indicadores na tela, e nenhuma dessas perguntas tem dono.

O dado é sintético, de 2024 a 2026, mas carrega as armadilhas de uma operação real: título cancelado depois de vencer, ano parcial comparado com orçamento de ano cheio e o prazo entre faturar e receber.

dashboard-financeiro-rdev.streamlit.app/faturamento-recebimento Streamlit
01 / Streamlit

Faturado por competência, recebido pela data do pagamento. Os dois não casam mês a mês, e o gráfico existe para mostrar essa distância.

O que foi feito

Cinco páginas, uma pergunta por página, em ordem de funil: da meta até o cliente a cobrar primeiro, em três cliques.

  • Uma camada semântica só, testada por 116 verificações a cada push.
  • Corte point-in-time de cancelamento. Sem ele, a inadimplência sairia 18,7% em vez de 9,4%.
  • Meta comparada pelos mesmos meses, não pelo orçamento do ano cheio.
  • Snapshot Parquet com DuckDB no lugar da conexão viva: a página mais pesada caiu de 12 s para 0,33 s.
  • Leitura executiva gerada por IA, com cada número do texto conferido contra o que a camada semântica calculou.

O raciocínio de cada decisão está documentado no repositório.

dashboard-financeiro-rdev.streamlit.app/inadimplencia Streamlit
02 / Streamlit

O fim do funil: qual cliente cobrar primeiro, com o uso do limite ao lado do vencido.

Resultado

Os números levaram a uma tese que não estava no briefing. Em 2025 a empresa bateu a meta de faturamento, mas a inadimplência acima de 30 dias fechou em 10,20% contra uma meta de 3,00%. A crise é de crédito, não de receita.

O painel também mostra que o rating de crédito funciona (um cliente D tem 16,94% do faturamento vencido; um A, 0,67%) mas não define o limite, e que a empresa gasta 3,7 vezes mais em manutenção corretiva do que em preventiva.

dashboard-financeiro-rdev.streamlit.app/inadimplencia Streamlit
03 / Streamlit

Cada bolha é um cliente: o tamanho é o valor vencido e a cor é o rating. As linhas tracejadas são a regra de crédito.

dashboard-financeiro-rdev.streamlit.app/custos Streamlit
04 / Streamlit

Custos: nos últimos 12 meses, a manutenção corretiva é 15,7% do custo, e a preventiva, 4,0%.

dashboard-financeiro-rdev.streamlit.app Streamlit
05 / Streamlit

O Guia abre o painel: cada página responde uma pergunta, e a pergunta é o título da página.

Tem um problema parecido?

Se este caso se parece com algo que você precisa resolver, numa vaga ou num projeto, a conversa começa pelo problema, não pela ferramenta.