Hoy un doctor atraviesa siete pasos, tres archivos y una contraseña antes de ver una sola pantalla de Amedi. Le pedimos la cédula en el minuto cuatro, cuando todavía no sabe para qué sirve esto. Esta propuesta reduce la puerta a tres pasos y unos 75 segundos —entrar con Google, confirmar el WhatsApp, tocar la especialidad— y mueve identidad y credenciales adentro, donde el doctor ya vio qué desbloquean. Quien no usa Google entra igual, con un código al correo.
El wizard de /register acumula siete pasos antes del primer render del consultorio.
Cada uno es defendible por separado; juntos forman un peaje. El más caro no es el más largo:
es el paso 4, subir la cédula, porque llega en el momento de menos confianza de toda la relación.
El criterio para dejar algo antes del umbral es uno solo: ¿el producto funciona sin esto en el primer minuto? Identidad y credenciales gobiernan si el doctor aparece, no si el producto funciona — por eso salen. La especialidad se queda, aunque no sea identidad, porque es lo único que evita que la primera pantalla esté vacía.
| Se queda en la puerta porque… | Sale al hub porque… |
|---|---|
| La cuenta — sin identidad de sesión no hay nada que guardar. | La identidad — bloquea aparecer en búsqueda, no usar el producto. Ya tiene su rito aprobado. |
| El WhatsApp — es por donde llegan las citas. Un número sin verificar rompe el producto después, en silencio. | Las credenciales — el MPPS se valida contra SACS de forma asíncrona; esperar no aporta nada. |
| La especialidad — cuesta un toque y decide qué ve al entrar: plantillas, duración de cita, motivos. | Clínica y horarios — necesitan decisiones reales (dirección, bloques) que nadie toma con prisa en un registro. |
El panel derecho promete algo concreto —el enlace público con su nombre— en vez de decorar. Es lo primero que un doctor quiere ver de Amedi.
Tus pacientes te encuentran, agendan y te escriben desde un solo lugar. Empezar toma menos de dos minutos.
¿Solo quieres explorar? Entrar al demo →
Al continuar aceptas los términos y la política de privacidad.
¿Ya tienes cuenta? Inicia sesión
/register · escritorio · el único momento del flujo con dos caminos visibles
El demo ya existe y funciona: /demo entra de un toque a un consultorio sembrado, con
banner, guardrails y cuota. Lo que faltaba era ponerlo en la puerta —hoy solo vive en
/login— y diseñar su salida: cómo un visitante que ya se convenció se vuelve doctor real.
Entras a un consultorio con pacientes, citas e historias ya cargadas. Nada que llenar, nada que dar.
Los datos son de prueba y se reinician solos.
Te toma unos 75 segundos y entras con Google. Lo que viste acá es exactamente lo que vas a tener.
Aparece cuando intenta algo que el demo no permite — no antes.
/demo · la entrada de un toque, y el momento en que el demo invita a convertirse
/login, que es para quien ya tiene cuenta — justo al revés. Va en /register, tercero y sin peso visual, para no competir con Google.La conversión entra por la misma puerta de tres pasos. El demo no es un flujo aparte: es una antesala.
No se pide como trámite de seguridad; se pide porque es por donde Amedi le va a avisar de cada cita. Cuando la razón es esa, la pantalla se explica sola y el «omitir» deja de tener sentido.
Ahí te avisamos de cada cita nueva, cada cancelación y el resumen de tu día. Es entre Amedi y tú — tus pacientes nunca lo ven.
Este número no se publica nunca. El que ven tus pacientes lo eliges tú al configurar tu clínica.
Te los enviamos por WhatsApp al +58 414 555 1820 · cambiar
móvil · pedir el número y confirmarlo · el código se autopega al volver de WhatsApp
Depende de que la plantilla phone_verification_otp exista y esté aprobada en WhatsApp Business. Hoy este paso es un mock.
Es el primer momento en que el producto le devuelve algo. Deja de configurar y empieza a recibir.
Con esto dejamos tu consultorio listo antes de que entres. Puedes agregar más especialidades cuando quieras.
/register · escritorio · seleccionar avanza; la card de abajo confirma qué se precarga
Setenta y cinco segundos después está adentro — y no en un dashboard con todo en cero, que es la peor primera impresión posible, sino en el hub, con 3 de 8 ya hechos y una sola cosa por hacer. Esa cosa es el rito de identidad, que no se rediseña acá: ya está aprobado en Verificación de identidad. Esta pieza solo lo deja servido.
Tu consultorio de cardiología ya existe. Faltan cinco cosas para que los pacientes puedan encontrarte y agendar.
Una selfie y tu cédula, desde el teléfono. Es lo que nos deja responder por ti ante un paciente — y sin eso no apareces en búsqueda.
amedisalud.com/dra-carolina-mendez
Ver mi perfil público ↗
/doctor/setup · escritorio · el hub arranca en 3/8, no en cero
Nada de confeti al llegar. La recompensa se guarda para cuando el perfil se vuelve público de verdad — decisión 3 de la pieza de verificación.
Hoy doce de los catorce ítems abren un modal centrado y dos te mandan a otra pantalla. El modal tapa el anillo, la lista y la vista previa — justo las tres cosas que le dan sentido a lo que estás llenando. La fila se abre hacia abajo, en su sitio, y todo lo demás sigue visible.
EditorDialog se reemplaza por una fila que se expande. Editar tus horarios no debería taparte el progreso que estás construyendo.actionHref que saquen del hub.Única excepción: el rito de identidad sigue a pantalla completa — es deliberado y está aprobado en su pieza. Al terminar devuelve al hub, en la fila siguiente.
La sección que estás tocando se resalta acá mientras escribes.
/doctor/setup · la fila de horarios abierta en sitio · el anillo, la lista y la vista previa siguen visibles
Hoy son catorce ítems en una sola lista, donde «Idiomas que atiendes» tiene el mismo peso visual que «Configura tus horarios». Uno decide si el doctor existe para los pacientes; el otro es un detalle. Tres grupos y un anillo que solo cuenta los ocho que deciden. Los demás quedan en un estante aparte, disponibles y sin culpa.
Cada una se abre en sitio, como las de arriba. Suman a tu perfil, no a tu permiso de aparecer.
/doctor/setup · los catorce ítems de hoy, agrupados por lo que de verdad hacen
skip por ítem. Con lo opcional fuera del anillo, saltar deja de tener sentido: ya no hay nada que saltar.Los catorce ítems siguen existiendo en setup-items.ts. Lo que cambia es blocksPublic convertido en jerarquía visual, y el porcentaje calculado solo sobre el grupo que bloquea.
No es un camino de segunda ni un callejón: es la misma puerta de tres pasos, con otra forma de hacer el primero. Si el correo hay que verificarlo de todos modos, el mismo código sirve para entrar — así que tampoco acá aparece una contraseña.
otp_length y hay un test de contrato que la vigila. Bajarla a seis obliga a cambiar también el proyecto alojado, y si alguien cambia solo uno de los dos el registro se rompe en silencio. Se acepta la asimetría antes que esa fragilidad.Supabase ya soporta OTP por correo; es el mismo mecanismo que hoy verifica el registro, usado un paso antes.
Te mandamos un código de 8 dígitos. Con eso entras — no hace falta inventar una contraseña.
Enviamos 8 dígitos a carolina.mendez@ucv.ve · cambiar
Después puedes vincular Google desde ajustes y dejar de escribir códigos.
móvil · dos pantallas y adentro · la contraseña no aparece en ninguna rama
Con siete pasos, un tropiezo cuesta un paso. Con tres, cuesta un tercio del flujo. Estos cuatro fallos son los que de verdad ocurren, y cada uno tiene que decir qué pasó y cuál es la salida — nunca disculparse ni dejar al doctor adivinando.
Ese código no coincide. Te quedan 2 intentos, o te lo reenviamos.
Los dígitos se marcan juntos, no uno: el error es del código, no de una casilla. El ejemplo es el de WhatsApp, que lleva intentos contados; el del correo se comporta igual con 8 casillas.
Ya hay una cuenta con este número. Inicia sesión o usa otro.
No decimos de quién es la cuenta ni si el correo existe: enumerar usuarios es un regalo para quien busca.
La creaste con un código al correo. ¿Vinculamos Google para que entres de un toque?
Nunca «ese correo ya está en uso» a secas. Sabemos cómo entra: se lo decimos y lo resolvemos ahí.
Puedes crear tu consultorio igual — toma unos 75 segundos.
Ya existe en producción con este tono. Se mantiene, y ahora ofrece la salida en vez de dejar al visitante en un callejón.
Seis familias sostienen toda la puerta. Acá están en sus estados reales — incluidos los aburridos,
que son los que se olvidan y luego aparecen en producción con el rounded-md de fábrica.
Todo sale de css/tokens.css: botón pill, campo quieto, foco en menta.
Alto mínimo 44 px y radio pill. El texto de carga nombra la acción en curso, no «cargando».
Los cuatro hex del logo son de Google y van literales: es su marca, no la nuestra. Es la única excepción a los tokens en toda la pieza.
Sin sombra en reposo. El foco es un anillo menta —el mismo --focus-ring-color del sistema— y el error no depende solo del color: siempre trae mensaje.
Cifras tabulares para que no bailen al escribir. El estado correcto dura un instante antes de avanzar solo — no hay botón «confirmar». Son 6 por WhatsApp y 8 por correo: la longitud del correo la fija Supabase (otp_length), no nosotros, y hay un test de contrato que lo vigila.
Sentence case siempre, nunca mayúsculas. El punto de color acompaña al texto; no lo reemplaza.
Tres pasos caben sin abreviar, así que llevan nombre y no número. Un doctor sabe qué le falta con solo mirar, sin contar.
El wizard de apps/consultorio pasa de 7 pasos a 3. Nada de esto toca el rito de identidad,
que se construye por su propia pieza.
| Cambio | Dónde | Nota |
|---|---|---|
| Google OAuth en el consultorio | apps/consultorio | Portar google-oauth-section y oauth-buttons desde apps/client; ya existen y funcionan. |
| El wizard baja a 3 pasos | use-register-wizard.ts | Se van los pasos de documentos y contraseña; el de correo se vuelve rama alterna del paso 1. |
| OTP de correo para entrar | apps/consultorio · Supabase | Mismo mecanismo que hoy verifica el registro, movido un paso antes y usado como credencial. |
| WhatsApp OTP real | apps/api · WhatsApp Cloud | Plantilla phone_verification_otp + endpoints send/verify. Hoy el paso es un mock con «omitir». |
| Una especialidad en la puerta | register-step-specialty | De multi-select (máx 5) a selección única que avanza; las demás se agregan en el perfil. |
| Los file inputs salen del registro | register-step-documents | Se elimina del wizard. La captura de cédula pasa a MetaMap dentro del hub. |
| El hub cuenta 8 ítems | lib/setup/setup-items.ts | Los 3 de la puerta entran como hechos; foto y descripción se fusionan en «tu presentación». |
El aterrizaje apunta a /doctor/setup | welcome-screen.tsx | Ya es así desde la fase 2 del hub; solo cambia el copy de bienvenida. |
| El demo sube a la entrada | demo-login-link.tsx | El componente ya existe y se monta en /login. Se monta también en /register, en tercer lugar. |
| La invitación se ancla al guardrail | demo-guardrail-handler.tsx | Ya dispara DemoInvitationModal; solo cambia el copy para nombrar la acción que el visitante intentó. |
| Estados de error del flujo | apps/consultorio | Código inválido con intentos restantes, número duplicado, correo con otro método de entrada. Hoy no existen como diseño. |
| La fila se abre en sitio | editor-dialog.tsx | El wrapper deja de montar Dialog y pasa a expandir dentro de SetupItemRow. Los 12 editores de editors/ no cambian: solo su contenedor. |
Se acaban los editMode: 'link' | setup-items.ts | password se elimina del listado; documents pasa a credentials con editor propio. El tipo SetupItemEditMode deja de hacer falta. |
| Autoguardado por ítem | editors/* | Guardar al salir del campo e invalidar useCurrentDoctor. Ya se invalida tras cada mutación; cambia el disparador, no el mecanismo. |
| Tres grupos y anillo sobre 8 | setup-items.ts | completionPercentage pasa a contar solo el grupo bloqueante. blocksPublic ya existe por ítem: se vuelve la clave de agrupación. |
| Plantillas de un toque | edit-schedule · edit-about | Horarios típicos precargados y borrador de descripción a partir de especialidad y formación. |
El rito de identidad, sus siete estados y la discrepancia de nombre están resueltos en Verificación de identidad. La regla de producto que las une —bloqueante para publicar el perfil, no para registrarse— viene de ahí y esta propuesta la respeta al pie de la letra.