# 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 `<iframe>`. Tutorial de instalación en WordPress / Wix / Squarespace.
5. Plan Pro y Business: oferta de **onboarding asistido por videocall** (configuramos y probamos el agente por ti).
6. Reformista recibe primer lead → email + push a su panel. Onboarding considerado "completado" cuando tenga la primera llamada del agente con éxito + presupuesto generado.

**KPI de onboarding:** time-to-first-call < 48 h tras signup. Si supera 7 días, el reformista probablemente churnea.

## Operación de la llamada (qué pasa en cada lead)

1. Cliente completa formulario en landing del reformista (~30 s).
2. Sistema dispara: (a) registro en Postgres con status "pending_call", (b) SMS + WhatsApp al cliente *"En 2 minutos te llama [Reformista] desde [número] para tu presupuesto"*, (c) llamada saliente del agente Retell desde número fijo provincial Zadarma.
3. Agente cualifica conversacionalmente 3-5 min. Hard time-out 8 min. Si el cliente no descuelga, reintento automático en 30 min y 4 h después.
4. Al colgar: transcripción → GPT-4o extrae entidades JSON → motor de presupuesto + Nano Banana 2 generan render + presupuesto → PDF se construye → WhatsApp entrega al cliente + email al reformista.
5. Lead aparece en panel del reformista con todos los artefactos (transcripción, audio, fotos, render, presupuesto, datos).

**Coste estimado por lead procesado:**

| Concepto | Coste |
|---|---|
| Retell.ai (5 min llamada × $0,10/min media) | ~0,50 € |
| ElevenLabs (incluido en Retell o ~0,15 €/min × 5) | ~0,15-0,75 € si se factura separado |
| Zadarma (llamada saliente fijo provincial × 5 min) | ~0,05-0,10 € |
| SMS + WhatsApp (aviso + entrega vía Zadarma SMS + Evolution API) | ~0,11 € |
| GPT-4o (transcripción análisis + presupuesto) | ~0,03 € |
| Nano Banana 2 / Image 2 render | ~0,01-0,03 € |
| Postgres + S3 storage audio + foto | <0,01 € |
| **Total medio por lead procesado** | **~0,90-1,20 €** |

Con cuenta Pro 79 € (15 leads incluidos + overage 2,5 €/lead): si todos los leads incluidos completan llamada → ~16,5 € COGS → margen bruto ~79 %. Cada lead extra cuesta ~1,10 € y se cobra 2,5 € → 56 % de margen por overage. La conversión 3× de la llamada respecto a un wizard compensa de sobra el coste de telefonía.

## Gestión de leads (operación del cliente)

- Email transaccional al reformista con todos los datos del lead + render generado + cuestionario completo.
- Lead aparece en su panel con estado "Nuevo".
- Reformista marca el lead como "Contactado", "Visita agendada", "Presupuesto enviado", "Ganado" o "Perdido" — esto alimenta el bucle de precisión.
- Si reformista marca "Ganado", se le pide introducir el precio final firmado → alimenta el cálculo de precisión que dará el sello "Precio Justo Certificado".

## Soporte y atención al cliente

### Fase 0-1 (mes 0-6)

- **Canales:** email (`hola@reformix.es`) + chat embebido (Crisp o Intercom Lite, ~0-15 €/mes).
- **SLA:** primera respuesta < 4 h en horario laboral (lun-vie 9-19h). Carlos owns hasta llegar a 50 cuentas.
- **Self-service:** documentación + 5-6 videos tutoriales en Notion público o YouTube.

### Fase 2+ (mes 6+)

- Contratación de un Customer Success Manager part-time (~1.500 €/mes) cuando lleguemos a 150+ cuentas.

## Continuidad y respaldo

- **Backups Postgres:** automáticos diarios (Neon/managed los incluye), retención 30 días. Plus, snapshot manual semanal en R2/Backblaze B2 (~5 €/mes).
- **Disaster recovery:** Documento `RUNBOOK.md` en el repo con pasos para restaurar el stack en 4-6 h en caso de Vercel/Postgres down.
- **Secrets management:** Vercel encrypted env vars + 1Password compartido entre fundadores.

## Seguridad básica (no GRC completo, sí higiene)

- HTTPS obligatorio en todo (Vercel lo da por defecto).
- Cookies HttpOnly + SameSite=Strict para sesiones.
- Rate limiting en endpoints de subida de foto y generación IA (evita abuso).
- Auditoría manual de dependencias mensual (`npm audit` + Snyk free tier).
- Acceso al panel admin restringido por IP en fase 0, con MFA cuando se profesionalice.
