← Todos os projetos
P.02 dados + IA

Inteligência de Leilões de Imóveis

Transforma anúncios de leilão espalhados numa base consultável e guarda a história de preço de cada imóvel — inclusive a dos leilões que já terminaram. A leitura da matrícula por modelo está construída e testada, ainda não rodando em escala.

Papel
Projeto próprio, sozinho
Período
desde fevereiro de 2026
Estado
Revisita semanal automática, painéis locais
Código
Privado

Números

2.841imóveis acompanhados em PR, RS e SC
2.788já saíram do leilão e continuam na base, com desfecho
4.249snapshots de preço ao longo do tempo
10.063registros de coleta desde fevereiro de 2026

Medido diretamente no banco em 22/09/2026, com a coleta indo de 17/02/2026 a 18/09/2026 (revisita semanal). Só 32 imóveis seguem ativos: imóvel que sai do leilão continua na base — é justamente esse histórico que o projeto existe para guardar.

O problema

O anúncio de um leilão não diz se o imóvel merece atenção. O que decide isso está na matrícula — ônus, penhoras, consolidação — que vem como PDF digitalizado, e boa parte dos anúncios chega incompleta, sem valor avaliado, sem área ou sem número de matrícula.

E há uma janela que não reabre: quando o leilão termina, o anúncio simplesmente some do site e não volta. Quem não guardou no dia perdeu para sempre — não existe arquivo público de desfechos.

O que faz

  • Coleta os anúncios com um Chrome real dirigido por Playwright, atravessando a proteção anti-robô do portal.
  • Reconcilia com o arquivo oficial da Caixa, que passou a ser a fonte primária para os imóveis dela.
  • Pipeline que lê a matrícula em PDF e a transforma em análise de risco estruturada — ônus, sinalizações, consolidação — conferindo a área contra o anúncio. O pipeline está pronto e ainda não rodou em escala com modelo real: o OCR ainda está em fase de bake-off.
  • Acompanha o ciclo de vida de cada leilão (ativo, fora da listagem, saiu) e guarda a série histórica de preço.
  • Serve tudo por uma API que é também o agendador, com painéis de frescor, qualidade, cobertura e movimento de preço.
  • Mapa por município e busca conversacional sobre os trechos de matrícula, com banco vetorial.

Como foi construído

Arquitetura Medallion em Python: bronze imutável em disco, silver validado por schema com Pydantic e persistido com SQLAlchemy, gold a construir — com três pipelines (coleta, extração de matrícula e re-visita) instrumentados pela mesma telemetria.

A extração da matrícula é feita em duas etapas separadas de propósito — primeiro transcrever o documento com fidelidade, só depois estruturar o texto em JSON de risco — com os prompts no git e um harness de regressão pronto, que grava o hash de cada prompt; o gabarito real de documentos ainda não foi montado. Para o OCR, um bake-off de três modelos locais contra 28 referências, medido por CER/WER, ainda como experimento.

Guardar o original bruto antes de entender qualquer coisa

Todo download é gravado em disco com hash sha256, tamanho e timestamp antes de qualquer interpretação. Regravar o mesmo conteúdo não faz nada; conteúdo diferente no mesmo caminho não sobrescreve — levanta erro de integridade e vira uma versão nova. Cada linha da camada tratada aponta de qual arquivo bruto veio, e com qual hash.

A razão está escrita no próprio projeto: reprocessar é barato, recoletar o passado é impossível. Um bug de parser nunca destrói histórico — conserta-se o código e reprocessa-se o bruto. O preço é cerca de 2,4 GB de armazenamento duplicado, a impossibilidade de "limpar" dado feio no lugar, e uma escrita extra em cada passo. O complemento é a quarentena: registro que não passa na validação vai para um canto com o motivo anotado, não entra sujo, não é descartado em silêncio, e como não conta como coletado, é tentado de novo na próxima execução.

Stack

Coleta

  • Python 3.12
  • Playwright
  • httpx
  • Chrome headful

Dados

  • Pydantic
  • SQLAlchemy
  • Alembic
  • SQLite (WAL)

IA e busca

  • Gemini (estruturação, planejado)
  • OCR local (bake-off)
  • Qdrant
  • sentence-transformers
  • PyMuPDF

Serviço

  • FastAPI
  • Next.js
  • Leaflet
  • Recharts

Telas

Mapa do estoque de imóveis em leilão, com clusters por município.
Sala de controle: runs ao vivo, frescor, qualidade e cobertura do acervo.
Ficha canônica do imóvel: valores, desconto, completude e status da matrícula.
Detalhe de um run do pipeline: contadores e eventos item a item.

Capturas do painel rodando contra a API simulada do próprio repositório: cerca de 1.200 imóveis sintéticos com id IMV-1000xx, sem nome de pessoa, CPF ou telefone. No mapa, o fundo foi trocado por tiles do OpenStreetMap só para a captura.