Manejar excepciones del mundo real empieza por ejemplos reales. Aprende a recopilar aprobaciones tardías, datos faltantes y casos especiales antes de escribir la lógica de la app.

Un diagrama de flujo ordenado funciona bien en la teoría porque asume que las personas siguen el orden correcto, con los datos correctos y en el momento correcto. El trabajo real rara vez es así. Alguien envía un formulario tarde, un responsable está de baja, un cliente omite un dato clave o un pago necesita una aprobación especial que nadie mencionó al principio.
Por eso la primera versión de una app puede parecer terminada en una demo y luego empezar a fallar cuando la usan personas reales. El camino ideal funciona; el trabajo diario no se mantiene en ese camino por mucho tiempo.
El punto de partida más seguro es asumir que la versión ordenada está incompleta. Una solicitud simple puede cambiar rápido cuando un pequeño detalle falta. Un campo omitido, un cliente inusual o una aprobación retrasada pueden detener todo el proceso y dejar a la gente adivinando qué hacer.
Las fallas comunes suelen ser sencillas:
Esto es más que una molestia. Un caso raro puede bloquear todo lo que viene detrás. El personal empieza a usar soluciones alternativas en chat, hojas de cálculo o correo, y la app deja de ser el único lugar donde se hace el trabajo.
Un objetivo mejor es simple: recoge las excepciones antes de escribir las reglas. Pregunta qué pasa cuando faltan datos, cuando el tiempo no coincide y cuando una solicitud no encaja en la ruta estándar. Esos ejemplos desordenados no son detalles secundarios: deciden si tu app funciona en la vida real.
Los primeros problemas a capturar no son casos raros. Son los eventos desordenados que ocurren cada semana y que silenciosamente rompen un flujo limpio. Si quieres una primera versión más sólida, busca lugares donde el trabajo se retrasa, se bloquea o se entrega a una persona porque el sistema no puede decidir.
Las aprobaciones tardías suelen estar en la parte alta de la lista. Un responsable aprueba una solicitud después de la fecha límite, tras el cierre de nómina o después de que ya se haya hecho un nuevo pedido. La app necesita una regla para ese momento. ¿Reabre la solicitud, crea una nueva, notifica a finanzas o la envía a revisión en lugar de fingir que la aprobación llegó a tiempo?
Los datos faltantes son otro bloqueo común. Un formulario puede enviarse sin NIF, sin factura, sin fecha de entrega o sin contacto del cliente. Si el siguiente paso depende de ese campo, el flujo no debe fallar con un error críptico. Debe pausarse, mostrar lo que falta y facilitar su corrección.
Los casos especiales importan porque muestran los límites del camino normal. Quizá la mayoría de reembolsos son simples, pero los superiores a cierta cantidad requieren pruebas extra. Tal vez un departamento sigue una regla de aprobación distinta. Estos casos no necesitan otra app, pero sí rutas claras.
Un primer repaso útil es buscar cuatro patrones: aprobaciones que llegan demasiado tarde para seguir la ruta original, detalles faltantes que bloquean la siguiente acción, solicitudes inusuales que necesitan otra regla y momentos en los que el sistema debe parar y pedir a una persona.
La revisión humana no es un fracaso. A menudo es la opción más segura cuando la app encuentra datos en conflicto, una excepción de política o una acción de alto coste. Una cola de revisión en pausa suele ser mejor que un error silencioso.
Si detectas estas excepciones temprano, la primera versión se sentirá mucho más real y mucho menos frágil.
La forma más rápida de perder una excepción grave es preguntar solo al responsable que diseñó el proceso. Los problemas reales suelen vivir con quienes hacen el trabajo cada día. Ellos saben qué pasos se saltan, qué campos quedan vacíos y qué aprobaciones llegan tarde, fuera de orden o fuera del sistema.
Empieza con conversaciones cortas. Pide a la gente que explique un caso normal y luego qué cambió la última vez que todo se volvió un desastre. No pidas opiniones generales sobre el proceso. Pide historias verdaderas: qué pasó, qué faltó, quién lo arregló y qué hicieron manualmente.
El trabajo antiguo es otra buena fuente. Correos pasados, tickets de soporte, mensajes de chat y notas de traspaso suelen mostrar el momento exacto en que un flujo limpio se rompió. Estos registros son útiles porque capturan el lenguaje que la gente usa cuando algo falla, no la versión pulida del documento de procesos.
También revisa las herramientas que usan al margen. Si alguien mantiene una hoja de cálculo, una lista en post-it o un documento privado para controlar excepciones, es una señal clara. Las soluciones alternativas existen por una razón y suelen revelar reglas que tu app necesitará desde el día uno.
Las mejores fuentes para revisar primero suelen ser sistemas paralelos como hojas de cálculo y listas personales, hilos de correo donde se piden datos faltantes o aprobaciones manuales, conversaciones de chat sobre arreglos urgentes, tickets de soporte que mencionan retrasos o rechazos, y los últimos casos que salieron mal con la cronología completa.
Esa última fuente importa más de lo que parece. Los casos fallidos recientes suelen ser mejores que resúmenes antiguos porque muestran la cadena exacta de eventos. Puedes encontrar patrones como aprobaciones que llegan después del cierre, un cliente que nunca envió un archivo requerido o alguien usando una regla especial sin documentarla.
Si estás esbozando una primera versión en un constructor basado en chat, recopila estos ejemplos antes de generar la lógica. Es mucho más fácil crear flujos seguros cuando los casos desordenados son visibles desde el principio.
Empieza con un caso real, no con una teoría. Escríbelo como lo explicaría una persona a un compañero: qué intentaban hacer, qué salió mal, quién intervino y cómo terminó.
Una historia desordenada como "la solicitud se quedó atascada porque el responsable estaba de baja, luego finanzas la aprobó tarde con un campo faltante" es más útil que un diagrama perfecto. Muestra los puntos donde las apps suelen romperse.
Para cada caso, extrae cuatro hechos: qué pasó, quién tomó la decisión, por qué la tomó y qué debería hacer la app después.
Eso mantiene el foco en el comportamiento, no solo en pantallas. La meta no es cubrir cada caso extraño desde el día uno, sino detectar patrones repetibles.
Una vez tengas varias historias, agrupa las que parezcan similares. Surgen cubos simples: aprobación tardía, información faltante, persona equivocada consultada, solicitud duplicada o aprobación especial sobre un límite.
Después convierte cada grupo en la regla más ligera que funcione. Esa regla no siempre necesita automatización completa. A veces la mejor regla es una advertencia, una pausa o un paso de revisión manual.
Por ejemplo, si la aprobación llega tarde porque el aprobador está fuera, la app puede enviar un recordatorio a las 24 horas, reasignar a las 48 horas o pedir a un aprobador alterno que lo revise. Si falta un campo importante, la mejor opción puede ser guardar como borrador y permitir volver después en lugar de bloquear todo. Eso mantiene el proceso en movimiento sin ocultar el problema.
Si construyes en una herramienta basada en chat como Koder.ai, los casos en lenguaje natural ayudan mucho. Le dan al sistema algo concreto para trabajar, así la primera versión del flujo se basa en decisiones reales en lugar de una suposición limpia pero poco realista.
Antes de fijar la lógica, ejecuta dos o tres historias reales contra ella. Haz preguntas básicas. ¿El flujo llega al mismo resultado que el caso real? ¿Falla de forma segura cuando falta información? ¿Sabe pausar y pedir a un humano?
Si la respuesta es no, no añadas complejidad de inmediato. Reescribe la regla con palabras más simples primero. Las reglas claras suelen llevar a mejores flujos que las reglas ingeniosas que nadie puede explicar.
Empieza con la versión limpia. Un empleado envía un gasto de $42 por un taxi tras visitar a un cliente. Añade fecha, importe, proyecto y recibo. Su responsable lo aprueba antes del cierre de nómina y finanzas lo incluye en el siguiente pago.
Ese camino es fácil de modelar, pero no es todo el trabajo.
Ahora añade la primera excepción. El empleado envía la solicitud a tiempo, pero el responsable la aprueba un día después del cierre de nómina. La app no debería procesarlo como si nada pasara, ni rechazar el reclamo.
Una respuesta mejor es mover la solicitud a un estado claro como "aprobado fuera de corte". Desde allí la app puede retener el pago para el siguiente ciclo de nómina, notificar al empleado sobre la nueva fecha de pago y enrutar el caso a finanzas solo si la política permite un pago fuera de ciclo.
Eso significa que la app debe guardar más de una fecha. Debe rastrear cuándo se presentó el gasto, cuándo se aprobó y a qué corte pertenece o cuál se perdió.
Ahora añade la segunda excepción. El empleado olvidó el recibo, así que el responsable aprueba la solicitud basándose solo en la explicación. Dos días después llega el recibo.
Si la app está bien construida, el caso no desaparece ni vuelve a empezar desde cero. Pasa a un estado "en espera por recibo", envía un recordatorio y permanece abierto. Cuando se sube el recibo, la app reabre el caso y lo envía solo al paso que aún requiere acción.
Un flujo así puede pasar por estados simples: presentado, esperando aprobación del responsable, aprobado fuera de corte, en espera por recibo y reabierto para revisión de finanzas.
Así es como se ve en la práctica el manejo de excepciones reales. La app no solo decide sí o no. Decide si retener, enrutar o reabrir un caso sin perder contexto, fechas o responsabilidades.
La información faltante es normal, no un caso raro. Si tu app asume que cada formulario estará completo a la primera, el flujo se detendrá cuando los usuarios reales encuentren una laguna. Una regla mejor es simple: exige solo lo necesario para el siguiente paso.
Planifícalo paso a paso. Pregunta qué necesita saber la app ahora y qué puede esperar. Un gasto puede necesitar el importe y el nombre del empleado para enviarse, pero el recibo final solo puede ser necesario antes del pago. Eso mantiene el trabajo en movimiento sin perder control.
Los usuarios deben poder guardar el progreso incluso cuando falten detalles. Un borrador que se pueda reabrir es mucho mejor que un formulario que obliga a empezar de nuevo. Esto importa aún más cuando la información faltante depende de otra persona, como un responsable, un proveedor o finanzas.
Estados claros ayudan a todos a entender qué pasa. Mantén etiquetas cortas y fáciles de escanear: esperando información, bloqueado por documento faltante, necesita revisión, listo para aprobación, devuelto para actualización.
Estas etiquetas hacen dos trabajos a la vez: muestran el estado actual y le dicen al usuario qué tipo de problema necesita atención.
Cada elemento faltante también necesita un dueño. Si falta un NIF, ¿quién lo añade? Si un recibo no se entiende, ¿quién lo reemplaza? Si falta una nota de aprobación, ¿quién puede proporcionarla? Cuando nadie es responsable, los registros quedan en el limbo.
Un ejemplo sencillo lo deja claro. Imagina que un empleado envía un gasto de viaje sin recibo porque el hotel aún no lo remitió. La app debería permitir guardar y presentar la solicitud con un estado como "esperando recibo". Finanzas puede revisar el resto, el empleado sabe qué falta y la solicitud no se pierde en un error silencioso.
La automatización funciona mejor cuando la misma entrada debería llevar casi siempre al mismo resultado. Si una solicitud sigue un patrón claro, dale una regla. Si la respuesta depende de contexto faltante, tiempo inusual o juicio, envíala a una persona.
Esa separación importa. Una buena app debe moverse rápido en los casos normales y frenar en los inciertos. Una decisión automática equivocada puede generar más trabajo que una breve revisión manual.
Una prueba sencilla ayuda: ¿dos miembros distintos del equipo tomarían la misma decisión con los mismos datos? Si sí, automátizalo. Si no, mantén a una persona en el bucle.
Buenos candidatos para automatizar son formularios completos con todos los campos requeridos, solicitudes que cumplen límites de política, acciones repetidas con plazos claros y aprobaciones que siempre siguen la misma ruta.
Algunas situaciones no deben adivinarse: faltan detalles clave, la solicitud rompe un patrón, hay conflicto entre reglas, el coste o el riesgo es alto o alguien debe explicar una excepción.
Imagina una solicitud de viaje sin destino, con fecha urgente y coste por encima del límite habitual. La app no debe intentar ser lista; debe marcar el caso, pausar el flujo y enrutarlo a la persona adecuada.
Igualmente importante, deja visible la razón de cada excepción. Muestra por qué la app paró, qué regla se activó y qué información falta. Eso acelera las revisiones y ayuda al equipo a mejorar el flujo después.
Muchos proyectos de apps fallan antes de escribir lógica. El equipo dibuja un camino limpio, asume que todos lo seguirán e ignora los casos extraños que pasan cada semana. Así los flujos simples se convierten en tickets de soporte, arreglos manuales y usuarios confundidos.
El primer error es diseñar solo desde suposiciones. Si adivinas cómo funcionan aprobaciones, campos faltantes o excepciones, perderás los casos que más importan. Un responsable aprueba tarde, un registro llega incompleto o un pago necesita revisión extra por ser inusual.
Otro error es esconder muchas situaciones distintas en una regla vaga. Una regla como "enviar a admin si algo parece mal" suena flexible, pero crea problemas: ¿quién es el admin? ¿qué cuenta como "mal"? ¿qué pasa si nadie responde en dos días?
También perjudica a los usuarios cuando la app obliga a reiniciar todo. Si falta un documento o un aprobador rechaza, la gente no debería tener que volver a introducirlo todo desde cero. Un mejor flujo guarda el progreso, marca el problema y permite corregir solo la parte bloqueada.
Otros problemas son fáciles de pasar por alto porque parecen secundarios: tiempo, propiedad e historial. No son secundarios. Si una aprobación llega después de la fecha límite, la app debe saber si aceptarla, escalarla o reabrir la solicitud. Si un caso está bloqueado, alguien debe hacerse cargo de la siguiente acción. Si el estado cambia, la gente necesita ver quién lo cambió y por qué.
El historial de auditoría importa por razones sencillas. La gente necesita saber quién cambió un valor, quién aprobó una excepción y cuándo se movió el estado.
Antes de convertir un flujo en reglas, pausa y comprueba si tus entradas coinciden con el trabajo real. Los diagramas limpios suelen perder los casos raros que causan retrasos, confusión o arreglos manuales más adelante.
Una revisión rápida ayuda:
Un caso de prueba simple suele bastar para exponer lógica débil. Imagina una solicitud de compra enviada sin nombre del proveedor y aprobada tarde por un responsable de departamento. ¿Puede el solicitante corregir el campo faltante? ¿Sabe la app si reabrir la solicitud, continuar o pedir revisión a finanzas?
Ese es el nivel de detalle que quieres antes de generar lógica. Historias cortas y reales llevan a primeras versiones más seguras y a menos sorpresas cuando la gente empiece a usar la app.
Empieza pequeño. Elige un flujo, no todo el negocio. Luego recopila cinco casos reales de excepción de las personas que hacen el trabajo cada día: una aprobación tardía, un recibo faltante, un responsable de baja, una solicitud duplicada o un caso que necesita intervención de finanzas.
Construye la primera versión entorno a ese flujo estrecho y esos cinco casos. Mantén las reglas fáciles de leer. Si una solicitud está incompleta, muestra qué falta. Si la aprobación llega tarde, decide cuándo recordar, cuándo escalar y cuándo pausar. Si un caso no sigue la ruta normal, deja claro quién debe revisarlo.
Después pruébalo con las personas involucradas: quien envía la solicitud, el primer aprobador, quien arregla excepciones, el responsable que recibe escalaciones y cualquiera que vea el resultado final.
Observa dónde se detienen, adivinan o piden ayuda. Esos momentos importan más que lo que funcionó sin problemas. Si tres personas se atascan en el mismo paso, la regla o la pantalla necesita cambiar.
Una app de gastos puede funcionar hasta que alguien envía un recibo de taxi sin código de proyecto o después del cierre mensual. Tu primera versión no necesita resolver todos los casos raros. Debe captar las excepciones comunes, explicar la siguiente acción y dejar una vía clara para la revisión humana.
Luego ajusta las reglas en pequeñas rondas. Elimina pasos que generan confusión. Añade campos solo cuando prevengan problemas repetidos. Cambia los tiempos de aprobación si los recordatorios son muy pronto o muy tarde. Pequeñas correcciones tras pruebas reales suelen ser mejores que añadir lógica compleja de casos especiales demasiado pronto.
Si quieres prototipar rápido, un constructor basado en chat como Koder.ai puede ayudar a convertir estos ejemplos reales en una app funcional paso a paso. La clave sigue siendo la misma: empieza con las historias desordenadas primero y luego construye las reglas alrededor de ellas.
La mejor manera de entender el poder de Koder es verlo por ti mismo.