Hampiora / Producto / Guía de construcción
Requerimientos · MVP · Ejecución

Guía de construcción del MVP

Este documento convierte el backlog en un plan de obra: qué construir, en qué orden, con qué dependencias y cuándo está terminado. El cobro clínico se modela en tres niveles configurables por workspace — desde cero pasarelas hasta plataforma gestionada — para lanzar rápido sin cerrar puertas. Fuente de verdad del equipo desde el primer commit.

PASO 1

Resuelve los prerrequisitos externos y define el nivel de cobro de cada cliente. El Nivel 0 no necesita ninguna pasarela.

PASO 2

Sigue el orden de construcción. Cada etapa tiene un criterio de salida verificable; no avances sin cumplirlo.

PASO 3

Abre cada requerimiento en el catálogo antes de implementarlo: historia, criterios de aceptación, dependencias y nota de seguridad.

Prerrequisitos externos

Aprobaciones y sandboxes de terceros que no dependen de código. Inícialos en paralelo al Sprint 0: son los cuellos de botella reales del cronograma.

Gate list

Stripe · entidad USA de Nikgu

Cuenta Stripe Billing de la empresa en Wyoming: productos, planes, portal de cliente y webhooks. Aplicar al programa Stripe Startups (créditos de procesamiento). Bloquea SUB-01. Único proveedor de pagos activo del MVP.

Owner: Finance · Bloquea Sprint 3

Google OAuth

Proyecto en Google Cloud, pantalla de consentimiento y scopes mínimos de Calendar. Bloquea INT-01 y la telemedicina.

Owner: Platform · Bloquea Sprint 2

Anthropic BAA + OpenRouter ZDR

BAA self-serve de Anthropic con org HIPAA-ready dedicada (permanente; separada de cargas no-PHI) para toda ruta con datos de paciente. OpenRouter con ZDR solo para rutas sin PHI (fallback y contenido genérico) — no firma BAA. Bloquea AI-01.

Owner: AI · Bloquea Sprint 1

Meta / WhatsApp Cloud API

Verificación del negocio, número dedicado, plantillas aprobadas y webhook. El proceso de Meta puede tomar semanas. Bloquea WA-01 y WA-02.

Owner: Messaging · Bloquea Sprint 4

Resend · dominio verificado

Cuenta de Resend, dominio de envío con SPF, DKIM y DMARC verificados, y región Sudamérica. Sin esto, los correos de confirmación caen en spam. Bloquea INT-02.

Owner: Platform · Bloquea Sprint 2

Legal básico del piloto

Términos de servicio, aviso de privacidad (Ley 8968) y opt-in de WhatsApp del paciente. Sin esto, el piloto no puede escribirle a nadie. Bloquea el hito de piloto (S4).

Owner: Legal · Bloquea Sprint 4

Sandbox ONVO

Cuenta de pruebas, Checkout y firma de webhooks. Solo se tramita al retomar el Nivel 1 (Fase 2). No bloquea el MVP.

Owner: Fintech · Exploración futura

Sandbox PayPal

Cuenta business sandbox, órdenes y webhooks de captura. Solo se tramita al retomar el Nivel 1 (Fase 2). No bloquea el MVP.

Owner: Fintech · Exploración futura

Revisión legal · Nivel 2

Merchant of record, impuestos, disputas y elegibilidad por país para recaudar en plataforma. Solo bloquea PAY-05 (Fase 2).

Owner: Finance / Legal · Bloquea Fase 2
Ruta crítica del MVP: gracias al Nivel 0 de cobro, ninguna pasarela de pago bloquea el lanzamiento. Los únicos gates duros del MVP son Stripe Billing (para cobrar la membresía), Google OAuth, OpenRouter y Meta. ONVO y PayPal se activan por cliente, cuando cada clínica lo pida. Cada gate necesita responsable y fecha la primera semana.

Stack de desarrollo

Un stack único, opinado y coherente con la arquitectura (monolito modular, Supabase, TypeScript de punta a punta). Regla: una sola herramienta por categoría; agregar una segunda requiere retirar la primera. Versiones fijadas en el repo, no aquí.

Stack v1

Núcleo de aplicación

Lenguaje

TypeScript (strict)

Un solo lenguaje del frontend a los jobs. Tipos compartidos entre API, tools de agentes y UI.

Descartado: mezclar Python en backend — Python queda solo en notebooks de evals.
Framework

Next.js (App Router)

Server Components para el dashboard, route handlers para webhooks, server actions para mutaciones. Un solo deploy.

Descartado: SPA + API separada — dos deploys sin beneficio a este tamaño.
Hosting

Vercel

Previews por PR, edge network y cero DevOps. Región primaria us-east (la más cercana a CR con Supabase al lado).

Descartado: Kubernetes / VPS — sobreingeniería para un equipo pequeño.
Monorepo

pnpm workspaces + Turborepo

apps/web + packages: db, ai, emails, ui. Los tool schemas de agentes viven en packages/ai y se comparten con evals.

Descartado: repos separados — fricción de versionado sin equipo que lo justifique.

Datos

Base de datos

Supabase Postgres

RLS multi-tenant (SEC-01), Auth, Storage, Realtime para inbox y agenda, y pgvector cuando llegue RAG.

Descartado: segundo motor de datos — todo estado vive en Postgres.
ORM y migraciones

Drizzle ORM

SQL-first y typesafe; convive bien con policies RLS escritas a mano y migra por SQL versionado en CI.

Descartado: Prisma — su capa de abstracción pelea con RLS y funciones de Postgres.
Validación

Zod

Contrato único: inputs de API, tool schemas de agentes, variables de entorno y formularios validan con el mismo esquema.

Descartado: validación ad-hoc por endpoint.
Cache y rate limiting

Upstash Redis

Rate limiting por número del agente patient-facing (AGT-01), locks de idempotencia de webhooks y contadores calientes.

Descartado: Redis autogestionado.

Trabajo en segundo plano

Jobs y colas

Inngest

Funciones durables con retries: procesamiento de webhooks (WhatsApp, pagos, Resend), secuencias de email, ejecuciones de agentes y crons. Reemplaza "events + queues" caseros.

Descartado: colas propias sobre Postgres — reinventar retries y visibilidad.
IA

SDK de Anthropic + AI Gateway propio

Claude Haiku para agentes de volumen, Sonnet para razonamiento y graders, con prompt caching y tool_choice (AI-01). OpenRouter queda como capa de fallback multi-proveedor del gateway.

Descartado: frameworks de agentes (LangChain y similares) — el loop de tool use propio ya existe y es auditable.

Experiencia

UI

Tailwind CSS + shadcn/ui

Tokens de la Paleta C (berenjena/verde, CTA en verde 700), Radix para accesibilidad, componentes en packages/ui (UI-01).

Descartado: librerías de componentes cerradas — la marca no se negocia.
Sistema de diseño

Brand book · Paleta C v1

Fuente de verdad visual: colores exactos, Inter/Fraunces, sentence case, reglas de contraste y pantallas de referencia (dashboard, agenda, bandeja de agentes). Ver el tab Sistema de diseño →

Regla: ningún hex fuera del brand book entra al código.
Email

React Email + Resend

Plantillas como componentes versionados (INT-02); webhooks de entrega alimentan el CRM vía Inngest.

Descartado: editor de un segundo proveedor de correo.
Datos remotos en cliente

TanStack Query

Solo donde Server Components no alcanzan: inbox en vivo, agenda interactiva. Estado global mínimo.

Descartado: Redux — no hay estado global que lo amerite.

Calidad y operación

Testing

Vitest + Playwright

Vitest para dominio y adapters (con los mocks de agenda como fixtures), Playwright para flujos críticos E2E, y la suite de evals de agentes (AI-03) en el mismo CI.

Descartado: Jest — Vitest es el equivalente nativo del stack.
Errores y logs

Sentry + Axiom

Sentry para excepciones con contexto de workspace; Axiom para logs estructurados y trazas de webhooks e Inngest.

Descartado: grep en Vercel logs como estrategia.
Producto y flags

PostHog

Analytics de producto, session replay, y feature flags — incluyendo los flags por país del Payment Orchestrator y el modelo marketplace.

Descartado: herramienta separada de flags — PostHog cubre ambos.
CI/CD

GitHub Actions

Lint, tests, evals de agentes y migraciones Drizzle en cada PR; deploy por merge con previews de Vercel.

Descartado: deploys manuales.

Registro de decisiones tecnológicas evaluadas

TecnologíaVeredictoRazónSe revisa cuando
Stripe + Stripe StartupsAdoptadoÚnico proveedor de pagos activo del MVP: Billing para membresías desde la entidad USA. Aplicar al programa Startups por los créditos de procesamiento antes del primer cobro.—
ResendAdoptadoEmail transaccional y secuencias (INT-02). React Email alineado al stack; webhooks alimentan el CRM.—
OpenRouterAdoptadoCapa de fallback y diversificación multi-proveedor dentro del AI Gateway (AI-01), con ZDR. El SDK de Anthropic es la vía primaria de los agentes por caching y tool_choice.—
ONVO / PayPalAbierto · Fase 2Cobro integrado de telemedicina (Nivel 1). El contrato del Payment Orchestrator ya los contempla como adapters; la telemedicina del MVP opera en Nivel 0.El volumen de teleconsultas justifique automatizar el cobro.
ClerkDescartado por ahoraExcelente DX y organizaciones B2B de primera, pero desplaza a Supabase Auth, que es nativo del RLS del que depende SEC-01. Agregaría un proveedor, costo por MAU y cableado de JWTs sin dolor que lo justifique.Supabase Auth genere fricción real en flujos de organización/invitaciones.
MetronomeDescartado por ahoraFacturación por consumo de nivel enterprise. Las AI Units por plan con overage las cubre Stripe Billing con usage records a esta escala.El billing por consumo se vuelva producto: múltiples métricas, contratos negociados, créditos.
BYO API key de IA (estilo BAPI)Descartado por ahoraIdea del equipo (02-ago): clientes avanzados conectando su propia llave de modelo. Rompe el modelo de AI Units y complica la trazabilidad de PHI por el Gateway.Clientes Enterprise lo exijan contractualmente; se diseñaría solo sobre rutas sin PHI o con BAA propio del cliente.
Jenkins (CI/CD)En decisiónPropuesta del equipo (02-ago), atada a la decisión de stack: si gana Laravel/Vue en servidores propios, Jenkins es su CI natural; si gana el stack documentado, GitHub Actions + Vercel lo cubren sin instancia que mantener.Se resuelve junto con el stack, antes de S0.
SSO entre Billing y HampioraDescartado por ahoraIdentidad compartida entre una plataforma de salud y otros productos complica el aislamiento (checklist de seguridad) y la historia de cumplimiento. Cada producto con su auth en el MVP.Exista un "Nikgu ID" formal con revisión legal — no antes de Fase 3.
PWA (instalable, escritorio)AdoptadoPropuesta del equipo (02-ago): el web app se empaqueta como PWA — costo marginal, funciona en cualquier stack, y cubre el caso escritorio de recepción sin app nativa.—
App nativa (Flutter)Descartado por ahoraWhatsApp cubre el caso móvil del paciente y la PWA el de la clínica. Steven/Moisés como recurso identificado si llega el momento.Tracción B2C real del Passport que exija experiencia nativa.
Video conectable (Zoom y otros)Abierto · Fase 2El MVP usa Google Meet único (regla: una herramienta por categoría, ya integrada vía INT-01). La idea del equipo — que cada clínica conecte su plataforma — se diseña como adapters, igual que los pagos.Clínicas del piloto lo pidan con volumen real de teleconsultas.
ActiveCampaign (API / white-label)Descartado por ahoraPara marketing avanzado de clínicas. A $49–59/mes por cliente rompe el margen del plan, y Resend + secuencias propias cubren el MVP (INT-02).Clientes Business/Enterprise exijan automatización de marketing que no convenga construir.
Modo offline con sincronizaciónDescartado por ahoraMiedo real de clientes a cortes de luz/internet. Complejidad técnica alta; el propio equipo propuso cobrarlo como integración adicional si se implementa.Demanda pagada de clínicas en zonas de conectividad inestable.
SanityDescartado por ahoraTecnología de primera, sin requerimiento que la exija: el producto vive en Supabase, las landings de clínicas son producto multi-tenant propio (FUN-01), y la web de marketing cabe en el repo. Nunca para PHI.El contenido SEO editado por no-developers se active como canal (blog, guías, landings por país).

Decisión abierta — dos stacks sobre la mesa (resolver antes de S0)

El equipo de desarrollo propuso su stack el 02-ago-2026. Ninguna opción gana por default: se decide en sesión dedicada con esta tabla en pantalla, y el resultado se escribe aquí. Lo único inaceptable es construir sin decidir.

Capa / criterioStack documentadoPropuesta del equipo (Alberto · 02-ago)
BackendTypeScript + Next.js (route handlers, server actions)Laravel (PHP) — el stack de Billing, dominio total del equipo
FrontendReact (mismo Next.js, un solo deploy)Vue — componentes construidos desde los HTML base de diseño
CI/CD y deployGitHub Actions + Vercel (previews por PR)Jenkins en instancia propia, reutilizada de Billing
Base de datos y tenancySupabase Postgres con RLS nativo — SEC-01 se apoya en policies de basePostgres/MySQL gestionado en servidor propio — el aislamiento multi-tenant se implementa en la capa de aplicación (o RLS manual, a diseñar)
Costo pre-ingresos~$50–150/mes (serverless, escala con uso)~$1.000/mes desde el día cero (servidores fijos, estimado del propio equipo)
Cumplimiento / ruta USASupabase, Vercel y Anthropic firman BAABAA depende del hosting elegido (AWS/GCP con BAA es viable); auditoría y cifrado se configuran a mano
Velocidad del equipoCurva de aprendizaje para el equipo actualMáxima — es el stack que el equipo opera a diario
Riesgo principalConstruir con herramientas que el equipo no domina aúnRunway (12k/año sin clientes) + rediseñar SEC-01 fuera de RLS nativo + aislamiento respecto a Billing (checklist de seguridad)
Criterio de decisión sugerido: la pregunta no es "¿cuál stack es mejor?" sino "¿quién construye y opera esto de aquí al 30 de noviembre?". Si la respuesta es Alberto y su equipo, su velocidad pesa más que la elegancia — con dos condiciones innegociables se elija lo que se elija: el aislamiento multi-tenant se diseña y testea explícitamente (SEC-01 no se hereda gratis), y la infraestructura de salud no se comparte con Billing ni con nada más. La resolución se escribe en esta sección con fecha.
Regla anti-stack: nada de microservicios, GraphQL, Kubernetes ni un segundo lenguaje de backend en el MVP. Cada tecnología nueva entra solo con un requerimiento que la exija y una que salga. El stack es una decisión de foco, no un menú.

Escenarios de cobro

La decisión de arquitectura más importante del producto: el cobro de telemedicina es un payment_mode configurable por workspace, en tres niveles. Cada clínica empieza en el nivel que pueda hoy y sube sin migrar datos. Las suscripciones SaaS viajan por un carril separado.

payment_mode
N0

Sin pago integrado

MVP · día uno

La clínica cobra por su canal actual — SINPE, transferencia, datáfono o el link de su propia pasarela — y confirma el pago en el sistema. La cita queda pendiente hasta esa confirmación y el Meet se crea al confirmar.

Quién cobraLa clínica, fuera del sistema
ConfirmaciónManual, auditada, con rol financiero
ComisiónContractual, en la factura SaaS
RequiereNada externo
Requerimientos: PAY-00 APT-03
N1

Cuenta propia del cliente

Abierto · Fase 2

Abierto para desarrollo eventual: la clínica conectaría su propia cuenta de ONVO o PayPal, con checkout generado por el sistema y confirmación por webhook. El contrato del Payment Orchestrator ya lo contempla; se retoma cuando el volumen de telemedicina lo justifique.

Quién cobraLa clínica, con sus credenciales
ConfirmaciónWebhook firmado, automática
ComisiónContractual, con conciliación
RequiereSandbox y onboarding por cliente
Requerimientos: PAY-02 PAY-03 PAY-04
N2

Plataforma gestiona

Fase 2 · hipótesis

La plataforma recauda, descuenta comisión automática y liquida a la clínica — Stripe Connect operado desde la entidad USA de Nikgu, u ONVO Marketplace / PayPal Multiparty según el país. Mejor experiencia, pero implica merchant of record, disputas y aprobación legal y fiscal.

Quién cobraLa plataforma (custodia fondos)
ConfirmaciónAutomática, con liquidación
ComisiónAutomática por transacción
RequiereAprobación legal, fiscal y de riesgo
Requerimientos: PAY-05
S

Suscripciones SaaS

Carril separado · MVP

Las membresías de la plataforma (Free, Starter, Professional, Enterprise) se cobran con Stripe Billing desde la empresa de Nikgu en USA. Nunca se mezclan con los fondos clínicos: la comisión contractual de telemedicina se incluye en esta factura.

Quién cobraNikgu (entidad USA) vía Stripe
ConfirmaciónWebhooks de suscripción
Aplica límitesPlan → workspaces, usuarios, AI Units
RequiereCuenta Stripe USA + Stripe Tax
Requerimientos: SUB-01
Por qué es la jugada ágil: el Nivel 0 elimina las pasarelas de la ruta crítica y permite firmar clínicas en cualquier país desde la primera semana. El Payment Orchestrator (PAY-01) garantiza que subir de N0 a N1 o N2 sea un cambio de configuración, no una reescritura.

Orden de construcción

Secuencia derivada de las dependencias reales entre requerimientos. Cada etapa deja el sistema en un estado usable y verificable. Haz clic en cualquier requerimiento para ver su detalle.

Build order
Congelamiento de alcance: nada entra a una etapa activa sin sacar algo equivalente. Las funcionalidades nuevas se registran como Fase 2 por defecto.
Definición de piloto: el piloto con 2-3 clínicas se lanza al cerrar S4, no al terminar el MVP. S5 se construye con el piloto en producción y sus datos reales. Regla de prioridad ante cualquier conflicto: primero lo que capta y cobra (S0-S4), después lo que optimiza (S5). El agente de audio (WA-02) es el cierre del MVP, no un requisito del piloto.

Requerimientos por módulo

Vista de mapa: qué requerimientos componen cada módulo del backend. Útil para asignar ownership y estimar por bloque.

Dependency map

Modelo de datos inicial

Entidades núcleo con sensibilidad, política de acceso y retención. El modelo completo (ERD) se deriva de estas entidades más las tablas de soporte por módulo.

ERD v0.6
EntidadPropósitoSensibilidadRelaciones clavePolítica RLSRetención
organizationsTenant principalNo sensibleworkspaces, membershipsPor membershipMientras exista cuenta
workspacesMarca / target dentro de la organizaciónNo sensibleorganization, funnels, teamPor membershipMientras exista cuenta
leadsPipeline comercialPIIcontacts, activities, appointmentsPor workspaceConfigurable
contactsIdentidad de contacto comercialPIIleads, conversationsPor workspaceConfigurable
patientsIdentidad del pacientePHIdocuments, consents, appointmentsConsent + rolLegal
appointmentsCitas presenciales y telemedicinaPIIpatient, professional, paymentPor workspace + rolLegal
paymentsCheckout, webhook, fee y refundFinancieroappointment, provider_refRoles financierosLegal / fiscal
documentsArchivos y extracciónPHIpatient, observations, consentsConsent + rolLegal
consentsAlcance, expiración y revocaciónMetadatapatient, grantee, resourcePaciente + auditorInmutable
ai_usage_eventsCostos y unidades AI (sin PHI)No sensibleworkspace, user, featureAdmin / owner36 meses
audit_logsTrazabilidad de accesos y cambiosMetadataactor, resourceSolo auditor / adminInmutable
Antes de escribir la primera migración: SEC-01 exige policies RLS con pruebas automáticas de acceso cruzado entre tenants. Escríbelas junto con las tablas, no después.

Definition of Done

Un requerimiento no está terminado cuando el código compila; está terminado cuando cumple estas cuatro dimensiones.

Calidad

Funcional

  • Todos los criterios de aceptación verificados en staging
  • Flujos de error y estados vacíos resueltos
  • Responsive hasta móvil en pantallas de usuario final

Seguridad

  • La nota de seguridad del requerimiento está implementada
  • RLS probado con test de acceso cruzado cuando aplica
  • Acciones sensibles registradas en audit_logs

Ingeniería

  • Pruebas automatizadas de la lógica de dominio
  • Webhooks idempotentes y con firma verificada
  • Sin credenciales fuera del gestor de secretos
  • Agentes: suite de evals en verde antes de desplegar (AI-03)

Producto

  • Estado actualizado en este catálogo
  • Costo AI medido en el ledger cuando la función usa IA
  • Demo grabada o reproducible para el siguiente review

Sistema de diseño · Paleta C

El brand book integrado: identidad, color, tipografía y componentes. El brand book completo vive aquí, con el PDF original embebido al final. Regla madre: ningún hex fuera de esta paleta entra al código (UI-01 lo verifica con tests).

Brand book v1

Capa estratégica — Brand Book v1.0

Idea central

"La salud que no espera. Medicina, ahora." El sistema de salud en LATAM falla por tiempo, no por conocimiento. La idea no se publica — se usa como filtro: toda decisión de producto, diseño y copy responde una pregunta: ¿esto hace que algo pase más rápido, en su momento, sin fricción? Si no, sobra.

El nombre — un linaje de mil años

Hampi es quechua: remedio, medicina. En el imperio inca, el hampicamayoc — "el poseedor de la medicina" — custodiaba y administraba el conocimiento médico del estado. Ora completa desde el español: vive dentro de ahora y de hora. Hampi + ora = medicina, ahora. El significado de la marca está dentro del nombre.

Sistema verbal — una raíz, cuatro capas

Marca: Hampiora. Tagline (mundial, EN): Care. Now. Yours. — vive pegado al logo. Descriptor: The intelligent clinic operating system ("Health OS" se activa cuando Passport salga de Beta). Conversión ES (capa comercial, no traducción): Medicina. Ahora. Tuya. — landings, ads, WhatsApp, demos.

Tres palabras, tres productos

Care → Hampiora Clinic (opera la medicina). Now → Hampiora Agents (la hace inmediata — capa embebida, nunca un SKU aparte). Yours → Hampiora Passport (la hace tuya, en Beta). Arquitectura monolítica: una marca madre; Clinic, Agents y Passport son descriptores, no marcas.

Principios de voz

Di qué sigue (toda comunicación termina en acción) · Corto gana (registro Einstein/Ogilvy) · Tú neutro LATAM · La AI se presenta (el agente siempre se identifica como Hampiora; jamás finge ser humano). Nunca dice "error" — dice qué hacer: ✓ "No se pudo enviar. Verifica y reintenta." ✗ "Error 4022".

Lo que Hampiora nunca es

Genérico-médico (cruz, estetoscopio, azul hospital) · Tech-frío (jerga AI, neones) · Informal-startup (memes, tono delivery) · Corporativo-burocrático ("estimado usuario"). Y prohibido el cliché textil andino: la herencia es linaje, no wallpaper.

El puente estrategia → diseño: la inmediatez se siente (skeletons, optimistic UI, nada anima >400ms) · Care = Fraunces en display, papel cálido, radios generosos · Now = el verde vivo reservado a la acción primaria, una por vista · Yours = berenjena propia, cero azul hospital · Confianza = rojo solo estados, WCAG AA como piso, el agente siempre identificado. Nota de autoridad sobre el verde: la estrategia nombra la familia por su emblema (2FA97C); la especificación fija el relleno de CTA en verde 700 #1d7a57 por contraste WCAG — no es conflicto, es el orden estrategia → especificación operando.

Capa de especificación — Design System v1.0 · Paleta C

Logo — el nudo

Una H tejida inspirada en la estructura de hilo y nudo de un quipu. Representa conexión, continuidad, conocimiento y flujo de información — no un ornamento. Variantes: fondo claro, fondo berenjena, símbolo solo, un solo color. No: rotar, distorsionar, bajar contraste, agregar sombra.

Voz

Tecnología con calidez — humano, calmado, preciso. Tagline mundial: "Care. Now. Yours." · Capa de conversión ES: "Medicina. Ahora. Tuya." Español neutro LATAM, trato de tú, microcopy breve: "La cita quedó confirmada para el martes a las 10:00."

Color — no inventar tonos, usar exactamente estos hex

Berenjena · base de marca

241629900
35223E800
4A3357700
5F4470600
8A729A400
C9BCD2200
E4DEE9100
F2EFF450

Verde vivo · acento de acción — una sola CTA por vista, nunca decorativo

1D7A57700 · CTA
268F68600
2FA97C500
7FCBAA300
D9F0E5100
ECF7F150

Neutrales · superficies, bordes, texto secundario

FFFFFFBlanco
F5F2EFPapel
E2E8E1Niebla
B4AEBAPizarra 300
77707EPizarra 500
4E4855Pizarra 700

Semánticos · solo estados del sistema — el rojo jamás es color de marca

268F68Éxito
E0A32EAlerta · texto oscuro
D64545Error
4E4855Info

Tipografía — Inter para toda la interfaz · Fraunces solo momentos de marca

Display L · Fraunces 600La salud que no espera.
Display M · Fraunces 600Medicina. Ahora. Tuya.
Product H1 · 32/40 w700Panel de la clínica
Product H2 · 28/36 w650Citas de hoy
Product H4 · 20/28 w600Historial de pagos
Body medium · 16/24Verifica el número e intenta de nuevo si no llega el código.
Label large · 14/20 w600Guardar cambios
Datos numéricos10:00 · ₡22.000 · tabular-nums obligatorio
Prohibido: Fraunces en navegación, botones, formularios, tablas, dashboards y cualquier contenido operativo.

Capitalización y componentes

Sentence case por defecto

✓ Crear una cita · Historial de pagos · No se pudo enviar
✗ Crear Una Cita · HISTORIAL DE PAGOS · Error Al Enviar
Title Case solo para nombres de producto. UPPERCASE solo en overlines de máx. 2 palabras (HOY, URGENTE, BETA).

Contraste de botones (WCAG AA)

Primario: verde 700 + texto blanco = 5.3:1 ✓. Secundario: verde 500 + berenjena 900 = 5.8:1 ✓. Nunca texto blanco sobre verde 500 (2.96:1) — el test de UI-01 rompe el build. Alerta siempre con texto oscuro.

Etiquetas de estado

Confirmada Pago pendiente No asistió Sin confirmar Agente Borrador

Patrones de referencia

Dashboard con panel de Agents proponiendo acciones de un clic ("¿Le envío recordatorio?") — humano en el loop. Agenda semanal por profesional con estados semánticos. Bandeja de agentes con la nota visible: "gestiona agendas, recordatorios y seguimientos; no ofrece consejos médicos".

PDF original del sistema de diseño

Incluido en assets/hampiora-design.pdf. Si tu navegador no lo muestra embebido, ábrelo con el enlace.

Tu navegador no muestra PDFs embebidos. Abrir hampiora-design.pdf →

Abrir el PDF en una pestaña →

Finanzas y modelo económico

Estructura de planes, lógica de costos, mezcla de ingresos y unit economics del caso base. Costos AI estimados con caching; el ledger (AI-02) los sustituye con datos reales desde la semana 1 del piloto.

Pricing v1

Planes

FreeStarter (Doctor)Professional ★BusinessEnterprise
Precio$0$99/mes$299/mes$599/mesCustom
Profesionales11515Ilimitado
Landings (FUN-01)1 con marca Hampiora1310Custom + dominio
WhatsApp + agente disponibilidad—✓✓✓✓
Agente de audio——✓✓✓
AI Units / mes305002.0006.000Custom
Excedente por 100 unitsBloqueo$10$9$8Negociado
Comisión tele (contractual)—10%10%7%3–5%
Free capta, no opera: sin WhatsApp ni agentes — demo permanente, no producto gratuito. Una AI Unit = una acción completada (lead calificado, conversación resuelta, audio procesado); el Gateway pondera internamente por costo real.

Costos, margen y benchmark

ConceptoValorLectura
Costo blended por AI Unit~$0.012–0.014Haiku/Sonnet con caching; excedente a $0.09 → margen ~7× en overage
Margen bruto Professional~84% (COGS ~$49)AI incluida ~$24, WhatsApp ~$9, infra ~$4, soporte ~$12
Huli "cargado" (expediente + IA + Bot)~$92/mes +IVAStarter $99 a paridad con Huli completo, pero commercial-first
Clinera (IA plana)$279–479Valida Professional $299 y Business $599 en rango premium aceptado
Landing por agencia$300–800 una vezFUN-01 incluido cambia el ancla de "software" a "agencia"

Mezcla de ingresos — escenario base 12 meses

MesClínicasMRR SaaSComisión teleOverage AIMRR total
M32$568$60—$628
M614$3.864$408$20$4.293
M933$9.412$994$50$10.455
M1259$16.762$1.771$89$18.621 · ARR ~$223k
Lectura honesta: la suscripción es ~90% del ingreso todo el año 1. Comisión (~9%) y consumo AI (~1%) son upside, no base — la comisión gana peso con Nivel 1/2 y el consumo con Agents maduro en año 2. Recomendación: eximir la comisión en año 1 para simplificar la venta.

Flujo de caja y capital requerido (ago 2026 → dic 2028)

Modelo mensual sobre la estructura madre (ingresos → utilidad bruta → operativa → impuestos → flujo del periodo → caja), con lanzamiento comercial en enero 2027. El modelo vivo es el Excel incluido en la guía — descargar hampiora_flujo_caja.xlsx → — con selectores de stack y de escenario de precio, y todos los supuestos editables.

Supuestos estructurales del modeloValor
Desarrollo y mantenimiento (rampa estimada)$1k/mes (2026) → $2.5k → $5k (2027) → $8k → $10k/mes (2028) · acumulado ~$156k
Tools y membresías$25→$286/mes (stack documentado) · $1.025→$1.100/mes (stack equipo) — selector en el modelo
Transferencias Mercury USA→CR$35 fijo/mes + 1.5% FX sobre lo repatriado · ~$10.7k en el periodo — fila de gastos financieros
Impuesto sobre utilidad / tasa de descuento VAN10% (verificar con contador) · 15% anual
Altas de clínicas2 pilotos (dic-26, 50% precio) → 3–10/mes en 2027 → 12–16/mes en 2028 (especulativo, editable)

Tablero comparativo — los tres escenarios de precio con la misma base de clientes y costos

A · Ancla ($99/$299/$599)B · Penetración ($59/$199/$449)C · Premium ($149/$399/$799)
MRR a dic-28$60.5k$41.5k$81.7k
Caja acumulada a dic-28$344.5k$169.3k$540.2k
Capital requerido (caja mínima)−$11.8k−$13.7k−$11.0k
Meses con flujo negativo797
VAN (15% anual)$262k$127k$414k
Las tres lecturas del modelo: (1) El capital que hay que tener disponible para cruzar el valle es ~$12–14k — el proyecto se financia con caja propia, no exige levantar capital. (2) Bajar precios encarece el proyecto: el escenario B es peor en todas las dimensiones a la vez — menos ingreso, más capital requerido, más meses en rojo y la mitad del VAN — porque los costos fijos son idénticos y cada clínica trae menos margen; su única defensa sería +30–45% de altas, que es exactamente lo que las entrevistas deben comprobar (umbral del 40%). (3) La métrica de decisión es VAN y caja mínima, no la TIR — con inversión inicial pequeña, la TIR sale estratosférica en cualquier escenario y no discrimina. Cifras calculadas con el modelo al 5-ago-2026; el Excel recalcula todo al cambiar cualquier supuesto.

Unit economics (clínica típica, mix 30/55/15) y escenarios

MétricaValor
ARPA blend / margen bruto$284/mes · ~84%
CAC supuesto (el más débil del modelo)$800 → payback 3.1 meses
LTV según churn 2% / 3% / 4% mensual$12.700 / $8.467 / $6.350 · LTV/CAC 15.9× / 10.6× / 7.9×
Break-even operativo (burn $12k/mes)~50 clínicas · alcanzable M11–M12 del escenario base
Escenario A · Ancla de valor (recomendado)$99/$299/$599 — se elige si ≥40% de entrevistas acepta $99
Escenario B · Penetración$59/$199/$449 — solo si <25% acepta; riesgo de churn alto y precio difícil de subir
Escenario C · Premium AI-first$149/$399/$799 — solo si >60% acepta y pide más IA
Reglas de descuento: solo existen dos — fundador (50% × 3 meses, cupo 10, los pilotos pagan) y anual (−20%). Gatillos de recalibración: umbral de entrevistas, CAC real de las primeras 10 ventas, y costo AI del ledger en el mes 1.

Seguridad de datos · estándar estilo HIPAA para LATAM

HIPAA no aplica legalmente fuera de EE.UU.; Hampiora la adopta voluntariamente como estándar de diseño, sobre el piso legal real: Ley 8968 (CR), LFPDPPP/NOM-024 (MX), Ley 1581 (CO), Ley 29733 (PE). La seguridad es producto, no anexo: se vende en cada demo.

Data protection

Clasificación de datos

ClaseEjemplosDónde viveQuién accedeRegla dura
PHI directoDocumentos clínicos, observaciones, notas, historial del Passportpatients, documents, consents (Storage cifrado)Consent + rol clínico; jamás rol comercialNunca en WhatsApp, email ni prompts sin pseudonimizar (SEC-03)
PIINombre, teléfono, email, cédula de leads y contactosleads, contacts, appointmentsPor workspace y rol (RBAC de 02)Minimización en canales externos; exportación solo propietario (EXP-01)
Operativo no sensibleMétricas, configuración, ai_usage_events (sin PHI), estadosResto del esquemaPor rolÚnico nivel permitido en logs y analítica

Acceso y consentimiento del paciente

Consentimiento con alcance

Cada consent define qué (recurso), quién (profesional/clínica), para qué (propósito) y hasta cuándo (expiración). Sin consent vigente no hay lectura — el RLS lo hace físico, no política.

Revocación inmediata

Revocar invalida tokens y QR del Wallet en el acto; los accesos previos quedan en el registro inmutable, los futuros se bloquean. El paciente ve quién accedió y cuándo.

Separación comercial / clínico

Recepción y ventas operan leads y citas sin ver PHI; el médico ve pacientes autorizados sin exportación masiva. Doble control en acciones financieras (PAY-00).

Auditoría inmutable

audit_logs solo-inserción: actor, recurso, acción, momento. Toda lectura de PHI y toda confirmación manual de pago quedan registradas. Retención indefinida.

Controles de la capa de IA (Hampiora Agents)

ControlRegla
Nunca en texto plano al modeloNombre completo, cédula/ID, teléfono, email, dirección, y cualquier diagnóstico vinculado a identidad. Lista versionada compartida entre Gateway y evals (SEC-03).
Pseudonimización antes de la llamadaEl Gateway sustituye identificadores por tokens ({{PACIENTE_1}}, {{TEL_1}}) antes de todo call; rehidrata en la respuesta solo para el usuario autorizado. El modelo razona sin saber quién es.
Minimización por funciónCada ruta declara los campos que necesita; el Gateway rechaza contexto extra. El agente de disponibilidad solo ve slots, jamás motivos de consulta.
ProveedoresZDR verificado por proveedor y por ruta; prohibido todo proveedor que entrene con datos; modelos de bajo costo solo en rutas sin datos de paciente (política de enrutamiento).
Qué se auditaCada llamada: hash no reversible del input, feature, modelo, usuario, workspace, costo y latencia en ai_usage_events; cada tool call en tool_executions. Jamás el texto del prompt con datos.
Verificación continuaTest de fuga con PHI sintética en los evals (AI-03): un identificador en un prompt saliente = build roto.

Matriz de proveedores — quién puede tocar datos de paciente

ProveedorBAARegla en Hampiora
SupabaseSí (plan Team+ con add-on HIPAA)Hogar de todo dato sensible. El add-on se activa con el primer cliente que lo exija; el diseño (RLS, cifrado, logs) ya cumple desde hoy.
Anthropic (SDK directo)Sí (self-serve, org dedicada)Única vía para llamadas de IA con datos de paciente. Org HIPAA permanente y separada de cargas generales. Features excluidas del BAA no se usan ahí.
VercelSí (Enterprise)Mientras tanto: cero PHI en URLs, headers, logs, cachés y analytics; todo dato sensible se media por APIs de Supabase.
OpenRouterNoExcluido de toda ruta con datos de paciente. Solo fallback y contenido sin PHI (p. ej. borradores de landing).
WhatsApp / MetaNo (excluye uso sanitario)Política dura de canal: solo contenido operativo y logístico, jamás contexto clínico. El detalle viaja por enlace autenticado al portal. Aplica también bajo Ley 8968/LGPD.
StripeNoSolo cobro de membresías: prohibido contexto de salud en metadata, descriptores y facturas.
ResendNoCorreo sin contexto de salud; el contenido sensible vive tras el enlace al portal. PHI por email exigiría proveedor con BAA.
Marco legal vigente y disparadores: hoy Hampiora se rige por Ley 8968 (CR — brecha: 5 días a PRODHAB; nuestro estándar interno de 72h es más estricto y se mantiene), LFPDPPP (MX) y Ley 1581 (CO); HIPAA es benchmark voluntario. Se vuelve obligatoria con el primer cliente proveedor de salud en EE.UU. (BAA con el cliente + BAAs en cascada a Supabase/Anthropic/Vercel antes del go-live). Usuarios de EE.UU. en Passport activan la Health Breach Notification Rule de la FTC: disciplina de cero píxeles de tracking y cero SDKs publicitarios en páginas de salud, desde el diseño. Nota técnica: la pseudonimización (SEC-03) es defensa en profundidad, no exención — un token re-identificable sigue siendo dato sensible; el instrumento legal es el BAA y la ruta directa.

Flujo del canal WhatsApp — la política en acción

Paciente escribe por WhatsApp
↓
AI Gateway · policy engine
Decide el carril por regla, no por juicio del modelo. El agente solo tiene tools logísticas: no puede filtrar lo que nunca ve (SEC-03).
↓
Carril logístico
Disponibilidad, confirmaciones, recordatorios. Respuesta directa del agente, sin ningún dato clínico.
Requiere contenido clínico
El mensaje solo avisa: "tienes una actualización" + enlace firmado, de un solo uso y con expiración → portal con verificación (OTP) → historial y recetas dentro del producto. El PHI jamás toca WhatsApp.
Pregunta clínica
"¿Es grave este resultado?" — el agente ni responde ni enlaza: deriva a un humano de la clínica con contexto. Nunca consejo clínico.
↓
Los tres carriles registran en audit_logs y ai_usage_events

Plan de respuesta a incidentes

1

Detectar

Alertas de acceso anómalo (volumen, horario, cruce de tenant), fallos de RLS en Sentry, monitoreo de exportaciones. Cualquier miembro del equipo puede declarar incidente sin aprobación.

2

Contener

Revocar tokens y sesiones afectadas, aislar credenciales comprometidas, congelar la ruta o feature involucrada vía flag. Objetivo: contención en <4 horas.

3

Evaluar

Con audit_logs y tool_executions: qué datos, de qué pacientes, en qué ventana, por qué vector. Clasificar severidad según clase de dato (PHI > PII > operativo).

4

Notificar

A la clínica afectada de inmediato; a titulares y autoridad según la ley aplicable — en Costa Rica, PRODHAB exige notificar en 5 días. Estándar interno adoptado: 72 horas máximo, más estricto que el plazo legal.

5

Remediar y aprender

Cerrar el vector, rotar secretos, post-mortem sin culpas con acciones fechadas, y actualización de este plan. El post-mortem se comparte con las clínicas Enterprise que lo pidan.

Checklist de cumplimiento

MVP — mínimo viable (bloqueante para el piloto)Pospuesto — con detonante definido
RLS multi-tenant con test de acceso cruzado en CI (SEC-01)SOC 2 Type I → cuando el primer cliente Enterprise lo exija
Cifrado en tránsito y reposo (Supabase) + backups PITR verificadosPentest externo anual → antes de Business/Enterprise a escala
Pseudonimización hacia IA operativa y testeada (SEC-03)Cifrado a nivel de campo para PHI de alto riesgo → con el Passport (Beta)
audit_logs inmutable + auditoría de accesos a PHI (SEC-02)Residencia de datos por país → con la expansión MX/CO
Consentimiento con expiración y revocación funcionalDPO formal / oficial de privacidad externo → >25 clínicas activas
Opt-in de WhatsApp + aviso de privacidad + ToS (gate legal)Contratos tipo BAA con clínicas → segmento Enterprise
Aislamiento de infraestructura: el sistema de salud no comparte servidores, CI ni credenciales con otros productos (Billing, etc.)
Secretos solo en gestor; acuerdos de confidencialidad del equipoCertificación ISO 27001 → decisión comercial, no antes de año 2
Política de contenido por canal (WhatsApp, email, Stripe): cero contexto clínico fuera del productoSupabase HIPAA add-on + Vercel Enterprise → primer cliente de EE.UU.
BAA de Anthropic firmado y org HIPAA-ready dedicada para rutas con PHICero píxeles/SDKs publicitarios en Passport → desde el diseño (riesgo FTC con usuarios US)
Política de retención por clase de dato documentada
Posicionamiento: "estándar de protección estilo HIPAA, verificado en cada despliegue" es un argumento de venta que ningún competidor local usa — pero solo si cada línea del checklist MVP es verificable. Prometer HIPAA sin serlo es peor que no mencionarla.

Roadmap a enero 2027

Seis meses, de agosto 2026 al MVP completo el 31 de enero de 2027, mapeados sobre las etapas de construcción. Dos hitos con fecha: piloto en producción el 30 de noviembre y MVP completo el 31 de enero. Los dos relojes que no controlamos — la aprobación de Meta y las entrevistas — arrancan en agosto o enero se mueve.

MVP · Ene 2027
AGO

Validación + Fundaciones (S0)

En paralelo: las 15–20 entrevistas de validación (umbral 40% en $99 decide el escenario de precio) y el Sprint 0 — repo, entornos, Supabase, RLS con test de acceso cruzado, backups PITR. Los 9 gates se tramitan desde el día 1: Meta es el más lento y no puede esperar.

Entrevistas 15–20Todos los gates iniciadosWABA creada · patrones WA probados en Billing

Salida agosto: escenario de precio elegido con datos, tenancy aislado probado, gates en trámite con fecha.

SEP

CRM núcleo (S1)

Tokens del sistema de diseño en código (UI-01), CRM con captura y pipeline, AI Gateway con ledger, pseudonimización (SEC-03) y la base de evals. Primer demo real a las clínicas entrevistadas.

Salida septiembre: un lead entra, avanza con auditoría, y cada llamada de IA queda medida y pseudonimizada.

OCT

Agenda y monetización (S2 + S3)

Agenda por profesional con Google Calendar/Meet, correo transaccional (Resend), onboarding e importación (ONB-01), Stripe Billing vivo con los planes, y telemedicina Nivel 0. Fecha límite dura: la aprobación de Meta debe cerrar este mes.

Salida octubre: una clínica importada agenda, confirma por correo y cobra su membresía por Stripe; una teleconsulta se confirma manualmente y crea el Meet.

NOV

Máquina de captación (S4) → 🏁 Piloto

Landing generada por Agents, quiz, inbox de WhatsApp, framework de evals y agente de disponibilidad — el ciclo commercial-first completo con guardrails verificados.

HITO · 30 de noviembre: 2–3 clínicas piloto en producción, pagando (50% × 3 meses), con el flujo landing → quiz → WhatsApp → agente → cita trazado de punta a punta.

DIC

Inteligencia con piloto vivo (S5a)

Scoring multidimensional entrenado con leads reales del piloto, next-best-action y el dashboard de funnel. Advertencia honesta: diciembre en Costa Rica rinde al 60% — el buffer del plan vive aquí, y nada del hito de enero depende de un diciembre completo.

Salida diciembre: el CRM prioriza y recomienda con datos reales; el dashboard muestra conversión por canal del piloto.

ENE

Cierre del MVP · 🏁 31 de enero 2027

El agente de audio para médicos (el cierre, no el requisito del piloto), hardening del checklist de seguridad MVP completo, y las correcciones que dos meses de piloto exijan.

Checklist seguridad MVP ✓Correcciones del piloto

HITO · 31 de enero 2027: MVP completo (etapas S0–S5 en verde) + decisión go/no-go de lanzamiento comercial con dos meses de datos reales de piloto: conversión, no-show, adopción y costo AI por clínica.

Los dos relojes externos: (1) la verificación de Meta para WhatsApp — si no cierra en octubre, el piloto de noviembre se mueve mes por mes; (2) las entrevistas de agosto — sin el umbral de precio resuelto, todo lo demás se construye sobre una hipótesis. Todo lo demás está bajo nuestro control.