Como o QuintoAndar montou um marketplace de imóveis com React, Flutter e Databricks
O QuintoAndar liga proprietários, inquilinos, compradores e corretores para alugar e vender imóveis no Brasil. A stack junta um app web em React e um app mobile em Flutter a um monolito que vem sendo quebrado em serviços e a uma plataforma pesada de dados e ML em Databricks e AWS.
Orquestra o supervisor que distribui as conversas entre agentes especialistas.
Por quê: Queriam um jeito robusto de orquestrar agentes com LLM em vez de um fluxo único e rígido.
Como montaram
De um PWA para um app em Flutter
O QuintoAndar apostou primeiro num PWA escrito em React, para o time focar numa stack principal e lançar cada recurso uma vez só para todas as plataformas. O Next.js cuida da web, e o Firebase com o Cloud Firestore sincroniza favoritos e negociações em tempo real.
Com o tempo, as webviews mostraram seus limites. O time levou o app para Flutter para reduzir os problemas de desempenho e qualidade que elas causavam, e hoje mantém o design system Cozy alinhado entre Figma e React.
O produto principal cresceu como um sistemão com usuários, imóveis e gestão de aluguel. Em 2021, o time mapeou os contextos de negócio lá dentro e planejou a quebra em fases, começando pelos que podiam sair em paralelo.
Os serviços que nasceram disso trabalham com eventos em vez de consultas repetidas. Um exemplo: um serviço central de lembretes substituiu cronjobs que varriam tabelas enormes sem parar, e o trabalho agora se espalha ao longo do tempo em vez de se acumular em picos de lote.
O Apache Airflow orquestra centenas de pipelines de dados, e um gerador de DAGs cria os arquivos e joga no Amazon S3 para o Airflow ler. Todo job de ETL roda em clusters do Databricks, e o time revisou tipos de instância (incluindo AWS Graviton) e adotou o Delta Lake para gastar menos e ganhar velocidade.
Por cima disso fica o QuintoML, um monorepo Python gerenciado com Pants, com ambientes de desenvolvimento remotos no Kubernetes e o Cursor como editor recomendado. O Butterfree, biblioteca de ETL para features de ML feita pelo time, é open source.
O atendimento por chat roda numa plataforma multiagente: um backend em Java é a porta de entrada das conversas, e um backend em Python feito com LangGraph usa um supervisor para mandar cada pedido ao agente especialista certo. O time de dados também roda o Tars, um agente de análise que funciona como plugin do Claude Cowork.
Nos lançamentos mobile, um único monorepo guarda todo o código Dart e Flutter. O Fastlane cuida da assinatura, do build e do envio do iOS para a loja, e o Maestro roda testes de interface escritos em YAML.