Plataforma para cliente
Plataforma de Consulta Geoespacial em Linguagem Natural
Um produto em que usuários fazem perguntas sobre dados geográficos em linguagem natural e recebem respostas, gráficos e mapas, gerados por um LLM sobre PostGIS.
Trabalho protegido por NDA; produto, cliente e datasets não são nomeados intencionalmente.
Arquitetura
- Perguntalinguagem natural, via app web ou SDK
- LLMgeração de SQL ciente do esquema
- Validaçãoesquemas permitidos · consulta restrita
- PostGISexecução espacial
- Respostatexto · gráfico · mapa · análise
Trabalho para cliente sob NDA, então nomes e datasets ficam de fora: um motor de consulta texto-para-SQL sobre dados públicos multijurisdicionais, a plataforma de produto ao redor dele (API, aplicação web, SDKs, cobrança) e a infraestrutura em que roda. Liderei sua concepção e engenharia com a equipe da Territorial.
Em resumo
- Motor de consulta: linguagem natural → SQL ciente do esquema → validação → PostGIS → resposta em linguagem natural, em uma única chamada
- Dois backends de LLM intercambiáveis atrás de uma interface REST idêntica; restrição por esquema para que uma conversa só toque nas fontes de dados que lhe foram concedidas
- Sandbox analítico: um loop de ferramentas limitado para análises subsequentes (razões, rankings, comparações), gráficos, mapas e um interpretador de código opcional
- Plataforma de produto com organizações, chaves de API, medição de uso, rate limits, webhooks, cobrança por assinatura, SDKs em TypeScript e Python e site de documentação
O motor de consulta
O motor é um serviço FastAPI sobre PostgreSQL/PostGIS com datasets públicos em nível federal, estadual e municipal: financiamento de campanha, demografia censitária, registros e licenças de empresas, alvarás, criminalidade, tributos. A parte difícil de texto-para-SQL sobre dados assim não é o modelo; é dar ao modelo um esquema sobre o qual ele consiga raciocinar. Projetei a camada de dados: como jurisdições de níveis diferentes se relacionam, como geometrias são expostas e simplificadas, quais colunas carregam significado e como tudo isso é descrito para que o SQL gerado esteja correto de primeira com mais frequência. A correspondência aproximada de nomes usa similaridade por trigramas no banco, então lugares e candidatos com grafia errada ainda resolvem.
Uma pergunta vira um candidato a SQL, é validada e restringida (esquemas são permitidos por conversa, esquemas internos nunca podem ser consultados), executada e resumida de volta em linguagem. O backend de LLM é plugável: uma implementação com modelos da OpenAI via LangChain, outra com o framework de agentes do Google e Gemini, ambas atrás do mesmo contrato REST com histórico de conversa, de modo que comparar provedores foi configuração e não reescrita. Um modo analítico acrescenta um loop de agente limitado sobre dados recém-buscados, com timeouts por consulta, tetos de retentativa e um prazo de ponta a ponta, produzindo percentuais, rankings, gráficos e mapas.
O produto ao redor
Um motor de consulta não é um produto. Também liderei a plataforma que o transforma em um: uma API Express com PostgreSQL/PostGIS em camadas de controllers, services e repositories, uma aplicação web React para chat e gestão de conversas, SDKs em TypeScript e Python para acesso programático, organizações e equipes, chaves de API, medição de uso e rate limiting, um sistema de webhooks para notificações de eventos, cobrança por assinatura via Stripe e um site de documentação.
Infraestrutura
Tudo roda como stacks Docker Compose atrás do Traefik, com ambientes separados de desenvolvimento, beta e produção, atualização automática de imagens, uma camada de métricas e BI e o Sentinel vigiando o conjunto. Secrets são escopados por serviço e carregados de um único arquivo de ambiente para que a configuração continue legível conforme a stack cresce. Chamadas que levam dados de clientes a endpoints externos de modelos resolvem seus destinos em modo fail-closed: produção se recusa a rodar sem um endpoint explícito e nunca recorre a um público.
Mais projetos
Todos os projetos
Geo360 LADM
O primeiro sistema de administração territorial no Brasil construído sobre o padrão ISO 19152 LADM, liderado enquanto eu estava na Topocart.
- PostgreSQL
- PostGIS
- GeoServer
- LADM (ISO 19152)
- +4

Dragonfly GeoAnalytics
Uma plataforma de geointeligência que ajuda municípios a combater dengue, Zika e chikungunya com imagens de drone e mapeamento de casos.
- React
- Mapbox
- Highcharts
- Express
- +6

GeoServer Mobile Client
Um cliente mobile com suporte offline para camadas do GeoServer: baixar, visualizar, editar feições e exportar, construído em três semanas.
- Ionic
- React
- TypeScript
- OpenLayers
- +2