Caso · Real Estate

Cantú Propiedades

El software interno de una inmobiliaria boutique de Coghlan. Tres socios, una oficina de barrio, un sistema que respeta cómo trabajan.

2026 · Producto interno · Buenos Aires, Argentina
Probar la demo en vivo Acceso público · sin registro · 3 perfiles cargados
Tablero de Cantú Propiedades visto por Zulma — KPIs operativos, módulo de Novedades del equipo, próximas visitas y leads recientes.
El cliente

Una inmobiliaria de cuadra que conoce a los porteros.

Cantú Propiedades atiende compradores y vendedores de departamentos en Coghlan, Villa Urquiza y Belgrano R. Es una de esas inmobiliarias de cuadra que conocen a los porteros, saben qué edificio tiene problemas de humedad y se acuerdan del nombre del perro de cada dueño.

Son tres socios. Trabajan así desde hace casi treinta años, antes de que existieran los CRMs inmobiliarios.

Z

Zulma

Socia titular

Lleva la cartera de propiedades VIP y la relación con dueños históricos.

M

Martín

Socio operativo

Muestra propiedades, conduce visitas, cierra operaciones.

C

Carolina

Administrativa

Sostiene la agenda, confirma visitas, mantiene el contacto activo con todos.

Caso real. Nombres y datos modificados por confidencialidad.

El problema

Un negocio con techo invisible.

Cuando nos contactaron, el negocio andaba. Pero andaba a fuerza de Zulma, Martín y Carolina compensando los huecos del sistema.

El Excel personal de Zulma con sus dueños VIP vivía en su laptop. Si la laptop se rompía, se iba con ella un patrimonio relacional de quince años.

El calendario impreso de Carolina ocupaba media pared de la oficina. Las visitas se anotaban a lápiz. Cuando Martín reagendaba algo desde la calle, Carolina se enteraba dos horas después por WhatsApp.

Los leads llegaban por seis canales distintos. Cuando alguien escribía por Instagram y después llamaba por teléfono, terminaba cargado dos veces sin que nadie se diera cuenta.

Los reportes mensuales para los dueños se hacían a mano. Cada mes. Cada vez.

Nada de esto los hacía mala inmobiliaria. Los hacía una inmobiliaria con un techo invisible: no podían tomar más propiedades sin romper la operación.

El discovery

Tres entrevistas. Tres insights que cambiaron el alcance.

Hicimos tres entrevistas la misma semana. Una a cada socio, por separado. Aprendimos cosas que ni siquiera estaban en el brief.

Lista de leads en Cantú Propiedades. Un lead aparece con un badge violeta que dice 'Referido por Zulma' — el sexto canal que apareció en el discovery.
El badge violeta del sexto canal en la lista de leads.
Las decisiones

Lo que entró y lo que dejamos fuera.

Después del discovery, el alcance cambió. Algunas cosas del brief inicial salieron. Otras que el brief no mencionaba entraron.

Lo que entró

  • Row Level Security a tres niveles.

    Zulma ve todo, incluidos los acuerdos especiales. Martín ve lo operativo pero no los acuerdos. Carolina ve la agenda completa pero no las notas internas. La diferencia no se construyó ocultando botones en el frontend, se construyó a nivel de Postgres. Si alguien intenta acceder por consola SQL a algo que no le corresponde, la base devuelve cero filas. Es la única forma sostenible para una operación con confidencialidad real.

  • Detección activa de duplicados.

    Cuando alguien empieza a escribir un teléfono que ya existe, el sistema avisa antes de guardar. Sale directamente del problema de Lucía Fernández (no es su nombre real), que aparecía cargada dos veces en planillas distintas.

  • Un módulo de Novedades en el tablero.

    Mensajes cortos asincrónicos del tipo "el dueño quiere subir el precio, llamarlo el lunes". Visibles para los tres, marcados como leídos por quien los vio. Es lo más cercano a tener a los tres en la misma oficina.

Ficha de la propiedad de Don Eduardo vista por Martín. El bloque 'Acuerdo especial' no aparece — Postgres no devuelve esa información para su rol.
La ficha vista por Martín. Aunque tiene acceso a la propiedad, el bloque del acuerdo especial no le aparece — Postgres no devuelve esa fila para su rol.
Form de carga de lead nuevo. Carolina escribe un teléfono que ya existe y aparece una alerta avisando del posible duplicado, con link directo a la ficha existente.
La detección de duplicados se dispara mientras se escribe.

Lo que dejamos afuera

  • Integración con AFIP y facturación electrónica.

    El brief la pedía. La evaluamos. La descartamos para esta etapa: implementar billing AFIP serio son tres meses más de trabajo y no es donde el negocio pierde plata hoy. Esa conversación, dicha de frente al cliente, fue una de las más importantes del proyecto.

  • WhatsApp Business API automatizado.

    Tener un número Business verificado por Meta lleva entre dos y tres semanas y nadie quiere depender del calendario de Meta. Quedó planificado para más adelante.

  • Storage propio de fotos.

    Por ahora las propiedades se cargan con URL externa. La próxima vuelta lo incluye.

Sistema de diseño

Un vocabulario visual con peso editorial.

Cantú no necesitaba un dashboard SaaS más. Necesitaba algo que se sintiera como su carta de presentación. Por eso el sistema de diseño no salió de un kit moderno: salió de una conversación sobre qué le inspira confianza a un dueño que está por dejarle una llave a una inmobiliaria.

La referencia visual fue la papelería editorial: portales arqueados británicos, sellos de inmobiliarias antiguas, carteles tipográficos hechos por imprenta. No por nostalgia. Porque ese vocabulario funciona como sinónimo visual de oficio.

Cómo está construido

Stack, infraestructura y par de programación con IA.

Stack: Next.js 14 con App Router en el frontend y los endpoints de API. Supabase para base de datos (Postgres), autenticación y almacenamiento. Tailwind v3 para el sistema de estilos. Vercel para hosting y deploys.

La base de datos tiene nueve entidades principales y aproximadamente treinta y dos políticas de Row Level Security activas. Cada query que pasa por la app es filtrada por esas políticas en Postgres antes de devolver datos. La confidencialidad de Don Eduardo no depende de que el frontend recuerde ocultar un botón: depende de Postgres negándose a devolver esa fila si el usuario que consulta no es Zulma.

Diagrama del modelo de datos. Nueve entidades principales conectadas por foreign keys: usuarios, propiedades, dueños, leads, visitas, novedades, consultas, reportes mensuales, portales.
Modelo de datos completo · 9 entidades.

El deploy es continuo. Cada commit a la rama principal de GitHub deploya automáticamente. No hay servidores que mantener, no hay procesos manuales de release. Si rompemos algo, lo notamos en treinta segundos. Si arreglamos algo, está vivo en treinta segundos.

La demo pública se resetea cada veinticuatro horas. Hay un cron job que corre a las cuatro de la mañana, hora Argentina, y reinicia los datos demo al estado original. Cualquier visitante puede probar el producto sin ensuciarlo permanentemente.

Matriz de permisos por rol. Tres roles (Zulma, Martín, Carolina) cruzados con siete dominios muestran tres niveles de acceso: completo, parcial, sin acceso.
Las políticas de RLS traducidas a vista humana.

Sobre el proceso

Trabajamos con Claude Code como par de programación. La descripción precisa es esa: par de programación, no piloto automático. Acelera la implementación pero no toma las decisiones de producto.

Las decisiones que ven en el caso (sexto canal, confidencialidad asimétrica, módulo de novedades, qué dejamos afuera) salieron de las entrevistas y de la cabeza del estudio. Claude Code escribió la mayoría del código que las implementa.

Línea de tiempo del proyecto. Ocho semanas con hitos por semana, desde el discovery inicial hasta el deploy del demo público.
Ocho semanas del primer contacto al deploy.
Resultado

Una demo viva, abierta a cualquiera.

El producto está en cantu.js80.studio. Tiene tres usuarios de demo:

Entrá con cualquiera de los tres haciendo un click en los botones grandes del login. No hace falta contraseña. Los datos se resetean cada noche.

Pantalla de login de Cantú Propiedades. Form tradicional arriba, separador 'o probá la demo', tres botones grandes para entrar como Zulma, Martín o Carolina sin contraseña.
Los tres botones de quick-login en la demo pública.
Vista semanal de la agenda en Cantú Propiedades. Visitas distribuidas en distintos días con colores según estado: agendada, confirmada, realizada.
La agenda semanal con visitas reales del seed demo.

En números internos del proyecto

8 Semanas del primer contacto al deploy
9 Entidades en el modelo de datos
32 Políticas RLS activas en Postgres
3 Niveles de permisos diferenciados
~5k Líneas de código
0 Infraestructura propia · Vercel + Supabase
Próximas vueltas

El producto no está terminado. Está vivo.

Eso quiere decir que sigue evolucionando. Próximas vueltas:

Hablemos

¿Tu negocio se parece más a Cantú que a una startup?

JS80 es un estudio de soluciones digitales con base en Buenos Aires. Construimos productos completos para negocios reales: una idea, un equipo, una entrega que funciona.