How QuintoAndar built a housing marketplace on React, Flutter and Databricks
QuintoAndar connects owners, tenants, buyers and agents to rent and sell homes in Brazil. Its stack pairs a React web app and a Flutter mobile app with a monolith being split into services and a heavy data and ML platform on Databricks and AWS.
Orchestrates the supervisor that routes chats to specialist agents.
Why: They wanted a robust way to orchestrate LLM agents instead of one rigid flow.
How they built it
From one PWA to a Flutter app
QuintoAndar first went all in on a progressive web app written in React, so developers could focus on one main stack and ship features once for every platform. Next.js runs the web, and Firebase with Cloud Firestore keeps favorites and negotiations in sync in real time.
The webviews eventually showed their limits. The team moved the app to Flutter to cut the performance and quality problems those webviews caused, and now keeps its Cozy design system in sync between Figma and React.
The core product grew as one big system holding users, homes and rental management. In 2021 the team mapped the bounded contexts inside it and planned a phased decomposition, starting with contexts that could be pulled out in parallel.
The services that came out of it lean on events instead of polling. One example: a central Reminder service replaced cronjobs that scanned large tables over and over, so work now spreads out over time instead of piling into batch spikes.
Apache Airflow orchestrates hundreds of data pipelines, and a DAG builder generates the DAG files and drops them in Amazon S3 for Airflow to read. Every ETL job runs on Databricks clusters, and the team reviewed instance types (including AWS Graviton) and moved to Delta Lake to save money and speed things up.
On top of that sits QuintoML, a Python monorepo managed with Pants, with remote dev environments on Kubernetes and Cursor as the recommended editor. Butterfree, the team's own ETL library for ML features, is open source.
Customer chat runs on a multi-agent platform: a Java backend is the entry point for conversations, and a Python backend built with LangGraph uses a supervisor to route each request to specialist agents. The data team also runs Tars, an analytics agent that works as a Claude Cowork plugin.
For mobile releases, a single monorepo holds all the Dart and Flutter code. Fastlane handles iOS signing, builds and store submission, and Maestro runs UI tests written in YAML.