RZ
PropTech & SEO

Plataforma PropTech End-to-End (Auge Urbano)

Portal inmobiliario desplegado en VPS: 159 rutas Flask sobre MySQL 8 con 45 tablas, CRM propio, portales de colegas y captadores, agentes IA integrados y una pila SEO/GEO/AEO con IndexNow. ~43.000 lineas de Python que operan el negocio completo, no una landing con formulario.

Sector
Real Estate / PropTech
Rol
Full-stack owner
Escala
159 rutas · 45 tablas
Despliegue
Docker + Nginx en VPS
Contexto

Auge Urbano opera venta de propiedad raiz en Medellin y el Valle de Aburra. La plataforma no es un brochure: es el sistema con el que corre el negocio — catalogo de inmuebles con ~900 fotos, CRM de leads y cierres, portal para colegas inmobiliarios, portal de captadores de calle, blog, finanzas y un motor de posicionamiento pensado tanto para Google como para LLM.

El reto

  • 1Un solo sistema para tres audiencias con sesion propia: comprador, colega inmobiliario y captador de calle.
  • 2Operar el negocio sin CRM externo: leads, contactos, citas, cierres, ingresos y gastos en el mismo admin.
  • 3Posicionar un catalogo pequeno en un mercado saturado y hacerlo citable por LLM, no solo indexable por Google.
  • 4Servir ~25 fotos por inmueble sin destruir el LCP en moviles de gama media.
  • 5Normalizar la geografia del Valle de Aburra (municipio → comuna/corregimiento → barrio) para filtros, URLs y senales GEO.
  • 6Exponer agentes IA a internet sin abrir la puerta a prompt injection ni a fuga de claves de integracion.

El enfoque

01

Monolito Flask modularizado

159 rutas en un solo proceso, con el dominio partido en 33 modulos Python (geo, amenidades, SEO, IA, finanzas, pagos, correo) importados como paquetes en vez de un framework nuevo por feature.

02

Persistencia dual conmutable

MySQL 8 InnoDB utf8mb4 en produccion (45 tablas, 440 columnas, 21 claves ajenas, 115 indices) con SQLite como modo de rescate via AUGE_FORCE_SQLITE; el mismo codigo crea y completa el esquema en ambos motores.

03

Portales con auth propia

Admin sin enlace publico, portal /colega (registro, inmuebles, agenda, pedidos, recuperacion por correo) y portal de captadores con deduplicacion por telefono + municipio y bono liquidado al cierre de venta.

04

Pila SEO/GEO/AEO propia

14 landings de intencion mas landings dinamicas por barrio, JSON-LD RealEstateListing/FAQPage, sitemap-index con 99 URLs y 800 imagenes, y notificacion automatica a IndexNow y Google Indexing API al publicar.

05

IA integrada, no de demo

Asesor comercial en landings, copiloto de negocio que responde sobre KPIs con graficos Chart.js y generacion masiva de SEO/AEO por ficha; OpenAI o Gemini con fallback entre proveedores y presets de prompt versionados en BD.

06

Pipeline WebP con auditoria

Conversion automatica al subir imagenes, log por archivo en BD y modal de optimizacion en admin: 1.338 conversiones registradas, de 459 MB a 53 MB de origen.

Arquitectura
Arquitectura: Plataforma PropTech End-to-End (Auge Urbano)

Nginx (TLS, apex canonico, 301 desde www) → Gunicorn 3 workers x 2 threads → monolito Flask modular con 159 rutas → MySQL 8 InnoDB (45 tablas) mas volumen de subidas; encima, agentes IA (asesor publico, copiloto de negocio, SEO de fichas) y el paquete de descubrimiento sitemaps + llms.txt + ai.txt.

Capas del sistema

  1. 01Nginx: TLS Let's Encrypt, 301 www → apex, body hasta 300 MB
  2. 02Gunicorn: 3 workers x 2 threads, timeout 120s
  3. 03Flask: 159 rutas (publico, admin, /colega, /captador, API JSON)
  4. 04Dominio: 33 modulos Python (geo, amenidades, SEO, IA, finanzas, pagos)
  5. 05MySQL 8 InnoDB utf8mb4: 45 tablas con esquema autocreado e idempotente
  6. 06Volumen /app/instance: BD de rescate y subidas de leads/captadores
  7. 07IA: OpenAI/Gemini con fallback, guards y claves en integration_settings
  8. 08Descubrimiento: robots, sitemap-index, sitemap-images, llms.txt, ai.txt, catalogo JSON-LD

Stack aplicado

  • Python 3.12
  • Flask
  • Gunicorn
  • MySQL 8 / InnoDB
  • PyMySQL
  • Jinja2
  • Pillow
  • OpenAI + Gemini
  • Bold Link API
  • GA4 + Search Console
  • Docker
  • Nginx

Decisiones de diseno

Resultados

159
Rutas Flask en produccion
45
Tablas InnoDB (440 columnas, 21 FKs)
-88%
Peso de imagen tras WebP (459 → 53 MB)
597
Nodos geo normalizados (22 municipios · 232 zonas · 343 barrios)
99
Tests automatizados con pytest
20
Tipos de evento en telemetria propia

Puntos clave

  • Despliegue real: contenedor Gunicorn tras Nginx con TLS Let's Encrypt y apex canonico — no un demo local.
  • CRM inmobiliario completo (leads, contactos, citas, cierres, referidos, ingresos y gastos) sin renta por asiento.
  • Agentes IA expuestos a internet con guards de prompt injection y SQLi, honeypot y rate limit en formularios publicos.
  • Costos de cierre colombianos codificados en el simulador: notariado 0,54%, beneficencia 1%, registro 0,67% y retencion 1% / 2,5% segun umbral.
  • Telemetria de embudo propia (form_start → form_change → form_submit) para no depender solo de GA4.

Encaje / como contratar

Contrata esto si necesitas un full-stack que entienda el vertical inmobiliario de punta a punta — catalogo, CRM, portales de terceros, pagos, SEO/AEO y agentes IA — y lo deje corriendo en tu propia infraestructura, no repartido entre cinco SaaS. Discovery → producto operable → automatizacion e IA cuando el volumen lo justifique.

Agendar llamada tecnica