Portfólio
Projeto autoral · Open Source Data Product · UX/UI · Full-stack

Mapa de risco que chega antes da chuva

O Chuvarada cobre 28.483 bairros brasileiros com dados hidrológicos em tempo real — para que a evacuação aconteça antes, não depois.

Dados em tempo real Risco hidrológico Cartografia Open Source Impacto social

Tipo

Projeto real
Produto público

Produto

Web app (PWA)
2024–2025

Foco

Risco hidrológico
em escala nacional

Método

Open data, modelo ponderado,
centróide IBGE

Princípio

Dado público + decisão de produto
= ferramenta de proteção real

O problema

O alerta existe. A granularidade, não.

O Brasil tem sistemas de alerta meteorológico. O que não tem é precisão de bairro: os alertas da Defesa Civil chegam por município — e quem mora numa encosta em Recife não sabe se o risco é na rua dela ou a três bairros de distância.

O que existe

CEMADEN emite alertas municipais. A Defesa Civil faz comunicados regionais. O gov.br concentra dados, mas não os traduz para quem está no local.

O que falta

Granularidade de bairro, em tempo real, acessível por qualquer pessoa pelo celular — sem login, sem instalação, sem jargão técnico.

28.483

bairros cobertos

Com score de risco calculado a cada hora, usando seis fontes de dados públicos.

Princípio de produto

Se o ponto georreferenciado estiver errado, o score de risco também estará errado — e um alerta errado é pior que nenhum alerta.

O desafio técnico (que virou decisão de produto)

O Brasil não tem centróides de bairro

O problema não era falta de dado — era incompatibilidade de dado. O Brasil organiza sua administração por distritos, não por bairros. O IBGE Censo 2022 mapeou bairros, mas sem centróides para geocodificação.

Sem centróide, não há como associar um ponto geográfico a um bairro com precisão. A solução padrão (centro geométrico do polígono) colocaria o ponto representativo do bairro em áreas desabitadas — morros, rios, terrenos vazios.

A solução

Centróide ponderado por população usando os dados do Censo IBGE 2022. O ponto representativo de cada bairro cai onde as pessoas realmente vivem, não no centro geométrico do polígono.

Por que isso importa para o produto

Se o ponto georreferenciado estiver errado, o score de risco associado àquele bairro também estará errado. Essa foi uma decisão de produto disfarçada de problema técnico — e a mais importante do projeto.

Centro geométrico versus centróide ponderado por população Dois diagramas do mesmo bairro. À esquerda, o centro geométrico do polígono cai em área desabitada, sobre o rio. À direita, o centróide ponderado por população cai onde as pessoas realmente vivem. CENTRO GEOMÉTRICO DO POLÍGONO rio Cai no vazio — morro, rio, terreno sem gente. CENTRÓIDE PONDERADO POR POPULAÇÃO rio Cai onde as pessoas realmente vivem.

A solução

Seis fontes. Sete variáveis. Um número por bairro.

O Chuvarada combina seis fontes de dados públicos e gratuitos, atualizadas automaticamente, para calcular o risco de cada bairro a cada hora.

FonteFornecedorO que entrega
MERGE/CPTECINPEPrecipitação por satélite + pluviômetros
Open-MeteoOpen-MeteoVento, umidade, pressão, chuva horária, umidade do solo
NASA SRTMNASAAltimetria do terreno (~30m de resolução)
ANA/BHOAgência Nacional de ÁguasRede hidrográfica nacional
IBGE Censo 2022IBGEMalha de bairros de todo o Brasil
TideCheckUHSLC / FES2022Nível de maré real (113 de 115 cidades costeiras)

Como o score é calculado

As sete variáveis são combinadas com pesos definidos pela relevância de cada uma para o risco de alagamento:

VariávelPeso
Pico de chuva (3h)22%
Chuva 72h16%
Chuva última hora15%
Declividade do terreno14%
Umidade do solo14%
Proximidade hídrica11%
Maré8%

Resultado

Score de 1 a 10, recalculado a cada hora, traduzido em cinco níveis: Normal / Atenção / Moderado / Alto / Crítico.

Regras automáticas de elevação para Crítico

  • i. Mais de 50mm de chuva na última hora
  • ii. Maré acima de 80% combinada com chuva em zona costeira

A interface

Do modelo ao mapa que qualquer pessoa lê

O modelo devolve um número. O trabalho da interface é tornar esse número legível para quem está numa encosta, no celular, sem login e sem jargão — e comunicar não só o risco, mas o porquê dele.

Mapa do Chuvarada com zoom na região metropolitana de São Paulo, mostrando o risco colorido bairro a bairro, do verde ao amarelo, com um rodapé de contexto indicando chuva e umidade.
Granularidade de bairro, visível. Com zoom em São Paulo, a malha fina dos bairros aparece contra o município — a tese central do produto deixa de ser argumento e vira evidência. O gradiente comunica tendência; o rodapé traz o contexto (chuva, umidade) do ponto observado.
Mapa do Chuvarada mostrando o Brasil inteiro, com campo de busca por cidade ou bairro, legenda, alternadores de camada e de tema claro/escuro e um indicador de status nacional.
Escala nacional, uma tela. Busca por cidade ou bairro, legenda dos cinco níveis, alternância de camada (chuva/temperatura) e de tema, e um atalho “Como funciona”. Sem instalação e sem cadastro para chegar à informação.
Card de um bairro no Chuvarada: nome da área, nível Atenção, score 3.2, linha do tempo de próximas horas e próximos dias com pontos coloridos, e lista de fatores de risco (chuva, umidade do solo, terreno, proximidade hídrica) cada um com seu peso e barra.

O card do bairro é onde design e modelo se encontram. Em vez de esconder o cálculo, ele expõe cada fator de risco com o peso que teve no score — umidade do solo, terreno, proximidade hídrica, chuva — e traduz o dado bruto em linguagem interpretável (“58% abaixo da média histórica para agosto”). Mostrar o raciocínio, em vez de entregar só o veredito, é o que constrói confiança em quem decide evacuar.

Score + cinco níveis

Número (1–10) e cor juntos: legível para quem lê pela cor e para quem compara pelo valor.

Linha do tempo com incerteza

Próximas horas e próximos dias — e a interface avisa que a previsão perde precisão com o tempo.

Fatores transparentes

Cada variável do modelo aparece com sua contribuição. O peso deixa de ser detalhe técnico e vira informação para o usuário.

Favoritar o bairro

Acompanhar onde se mora, ou onde está a família, sem conta — o essencial no celular, no momento em que importa.

Como foi construído

Seis fontes, um score por hora, um app sem loja

Um produto de escala nacional, construído e mantido por uma pessoa. O que torna isso possível é uma arquitetura enxuta e desenvolvimento assistido por IA.

Arquitetura do Chuvarada Seis fontes públicas de dados alimentam, a cada hora, um modelo ponderado que calcula o score de risco de 28.483 bairros; os dados são persistidos no Supabase e servidos por um PWA em Next.js com Leaflet, que exibe o mapa e o card do bairro. FONTES PÚBLICAS INPE — MERGE/CPTEC Open-Meteo NASA SRTM ANA / BHO IBGE Censo 2022 TideCheck PROCESSAMENTO · A CADA HORA Cron horário Modelo ponderado7 variáveis · pesos Score 1–10 por bairro28.483 bairros ENTREGA Supabase PWA · Next.jsLeaflet.js Mapa + carddo bairro

Stack

Next.js + TypeScript e Tailwind na interface; Leaflet.js na cartografia; Supabase como base de dados; deploy contínuo na Vercel; PWA instalável.

Pipeline

A cada hora, as seis fontes públicas são consolidadas e o modelo ponderado recalcula o score de risco dos 28.483 bairros.

Método — Spec-Driven Development com IA

Construído solo com Spec-Driven Development e Claude Code: a especificação vem antes do código, e a IA acelera a implementação sem tirar as decisões de design e de produto das minhas mãos. É o que permite uma pessoa entregar — e manter — um produto desse porte.

Decisões de produto

O que ficou de fora — e por quê

Documentar o que foi descartado, e a razão, é o que sustenta cada escolha do modelo.

Escala numérica, não semáforo

Verde/amarelo/vermelho colapsa nuances. Um score de 4,8 e um de 7,2 aparecem iguais num semáforo — mas representam riscos completamente diferentes. A escala 1–10 comunica tendência e permite comparação histórica.

Umidade do solo como variável (14%)

É a variável mais contraintuitiva — e a mais importante em muitos cenários. Chuva leve em solo saturado gera mais alagamento que chuva forte em solo seco. Tirá-la por ser difícil de explicar seria errar a favor da simplicidade e contra a precisão.

Bairro, não município

A granularidade municipal já existe e não resolve o problema. O produto só faz sentido se a resposta for mais precisa do que o que já existe. Bairro é a proposta de valor — sem ela, não há produto.

Relatos da comunidade como validação, não como fonte primária

O dado de satélite é preciso em escala — o relato humano é preciso em local. Os dois se complementam: o modelo detecta o evento, o relato confirma onde está impactando. Inverter essa hierarquia tornaria o sistema manipulável.

Limitações honestas publicadas na plataforma

Sem dados de drenagem urbana (não existem como dado público no Brasil). Pesos sem calibração regional formal. São Paulo, Campinas e Sorocaba cobertas por distritos, não bairros. Publicar as limitações não enfraquece o produto — aumenta a confiança de quem toma decisões com base nele.

Resultado

Produto em produção. Open source.

Cobertura

28.483 bairros cobertos

Atualização

Score recalculado a cada hora

Dados

6 fontes de dados públicos integradas

Plataforma

PWA instalável — funciona como app, sem loja

Acesse o projeto

Ver o Chuvarada → Código no GitHub →

Artigos publicados no Substack (PT) e Medium (EN).

Aprendizado

Dado em tempo real sem decisão de produto é ruído. Cada variável do modelo existe porque há uma pergunta real de usuário por trás — “meu bairro está em risco agora?” — e a resposta precisa chegar antes que a pergunta se torne urgente demais.

O problema técnico mais difícil do projeto (centróides de bairro) era, na verdade, um problema de produto. Se o ponto geográfico estiver errado, o score estará errado — e um alerta errado é pior que nenhum alerta.