# Operaciones e infraestructura Reformix es un **SaaS puro digital**: no hay logística física, no hay stock, no hay envíos. La "cadena de suministro" es la cadena tecnológica de proveedores de IA, hosting, base de datos, email y pagos. ## Stack técnico (decidido) | Capa | Servicio | Por qué | |---|---|---| | Frontend + Backend | **Next.js 14** (App Router + Server Actions + API Routes) | Un único proyecto, un único deploy en Vercel. | | UI | Tailwind + shadcn/ui | Velocidad de iteración, componentes accesibles. | | **Agente de voz** | **Retell.ai** | Latencia 500-800 ms, function calling sólido, integración limpia con TTS providers, plataforma B2B madura. | | **Voces TTS** | **ElevenLabs** | Las voces más naturales del mercado actual en español. Soportadas nativamente por Retell. | | **Telefonía** | **Zadarma** | Números fijos provinciales españoles (más barato y específico ES que Twilio). Psicológicamente local, sube tasa de respuesta a ~70 %. | | **WhatsApp** | **WhatsApp Business API o Evolution API** | Aviso pre-llamada, entrega de render + PDF al cliente final, nurturing del lead en v1.5. Evolution API como opción self-hosted más económica (con consideración de TOS Meta). | | **Render IA** | **Nano Banana 2 o Image 2** | Modelos image-to-image de Gemini, rápidos y económicos. Edición/transformación de imagen real preservando suficiente contexto del espacio. | | Análisis de foto | **GPT-4o Vision** | Estilo actual, materiales detectados, dimensiones aproximadas (refuerza con folio DIN-A4 opcional). | | Generación de presupuesto + extracción entidades | **GPT-4o chat completions** | Estructura la transcripción de la llamada en JSON + genera el desglose con tabla de Goyo en contexto. | | Base de datos | **Postgres** (self-hosted o managed) | Postgres real, agnóstico de proveedor. | | Storage | **S3** (AWS, Cloudflare R2, MinIO o equivalente) | Fotos del cliente, audios de llamada, renders, PDFs. | | Email transaccional | **SMTP** | Notificación al reformista cuando hay lead nuevo. Genérico, sin lock-in. | | Pasarela de pago | **Stripe** | Estándar de facto, SCA + SEPA. | | Deploy | **Vercel** | Integración nativa Next.js. | | Analytics | **PostHog** | Eventos del funnel: form completado → SMS enviado → llamada respondida → llamada completada → presupuesto entregado. | | PDF | **react-pdf** o **Puppeteer** | Generación del PDF de presupuesto con branding. | | Forms | react-hook-form + zod | Validación type-safe. | ## Proveedores críticos y plan de contingencia | Proveedor | Categoría | Riesgo | Alternativa de respaldo | |---|---|---|---| | **Retell.ai** | **Agente de voz** | Caída, cambio de pricing, latencia | **Vapi.ai** como segundo proveedor (mismo modelo de orquestación), o pipeline propio con OpenAI Realtime API | | **ElevenLabs** | **Voces TTS** | Indisponibilidad o cuotas | **PlayHT** o **Cartesia** (también soportadas por Retell), o ElevenLabs self-hosted en su plan Enterprise | | **Zadarma** | **Telefonía** | Indisponibilidad, números provinciales no disponibles para zona target | **Twilio España**, **Vonage** o **Telnyx** como respaldo | | **WhatsApp Business API / Evolution API** | **WhatsApp** | Cuenta suspendida por Meta (especialmente Evolution API), rate limiting | Alternar entre oficial y Evolution; cuenta de backup con segundo número; MessageBird como respaldo oficial | | **Nano Banana 2 / Image 2** | **IA visual** | Cambio de pricing o disponibilidad de Google AI | Replicate (SDXL + ControlNet), DALL-E 3 HD, Together AI con modelo propio fine-tuneado | | OpenAI | LLM y vision | Cuotas, rate limiting, cambio de modelo | Anthropic Claude Sonnet 4.6, Google Gemini | | Supabase | DB + Storage | Indisponibilidad | Self-host Postgres + R2 (Cloudflare) en 2-3 días | | Vercel | Deploy | Indisponibilidad | Cloudflare Pages o Railway | | Stripe | Pagos | Cierre cuenta sin previo aviso (raro) | Adyen, Mollie | | Resend | Email | Rate limiting o spam classification | Postmark, SendGrid | **Regla:** nunca dependemos de un único proveedor por categoría sin alternativa identificada. La alternativa puede tardar 2-7 días en activarse en peor caso. ## Capacidad y escala ### Fase 0 (mes 0-3) — Free / Starter tiers - Vercel Hobby + Postgres tier free (Neon) + R2 free egress pueden sostener < 100 cuentas con tráfico normal. - Nano Banana 2 / Image 2: pay-per-use, sin compromiso. ### Fase 1 (mes 3-12) — Tiers Pro pagados - Vercel Pro (20 €/mes) + Postgres managed (~19-25 €/mes) + R2 sostienen hasta ~500-1.000 cuentas. - OpenAI tier 2 (gasto > 50 $ acumulado) desbloquea rate limits decentes. ### Fase 2 (mes 12+) — Escala - Si el Postgres managed se queda corto: migración a Postgres self-hosted (Hetzner) o Aurora Serverless. - Si Nano Banana 2 sube precios mucho: fallback Replicate o fine-tune propio de Stable Diffusion XL en RunPod o Modal.com. - Si OpenAI no escala: combinación con Claude para presupuestos + dedicated capacity. ## Onboarding del reformista (proceso operativo) 1. Reformista entra a la web, hace signup con email. 2. Wizard de onboarding 5-7 pasos: nombre de empresa, logo (subida), zona geográfica (multi-select de provincias para ajustar el número fijo desde el que llama el agente), tipos de reforma (baño, cocina, integral), **catálogo de opciones por tipo** (calidades disponibles, materiales habituales, extras que ofrece), tabla de precios orientativa (heredamos la de Goyo, el reformista la ajusta), **número de WhatsApp Business del propio reformista** para reenvío de leads (opcional). 3. **Configuración genera automáticamente el script del agente de voz.** El reformista lo escucha en demo (con su nombre y catálogo) antes de activar. 4. Sistema genera la URL embebible del flujo + snippet `