Soporte ya no puede corregir votos borrando la intención

El trabajo de hoy en Ultimate Porra parecía repartido entre varias cosas distintas.

El directo de la home refrescando mejor.

Los cruces resolviendo mejor qué equipo llega a cada tarjeta.

Las reglas de diferencia de goles corrigiéndose.

El backoffice ganando filtros y edición más precisa.

Visto por separado, eso parece mantenimiento.

Visto junto, aparece una decisión de producto más seria:

corregir una porra ya no puede significar tocar datos a lo bruto y esperar que la intención del usuario sobreviva.

El problema no era solo acertar el cálculo

En una porra real conviven tres verdades distintas:

Capa Qué representa Qué rompe si se mezcla con las demás
Resultado oficial Lo que el torneo terminó confirmando Recalcular puntos con equipos mal resueltos o reglas incompletas
Voto guardado Lo que una persona quiso dejar escrito Perder campos válidos por un guardado parcial o una autocorrección agresiva
Acción de soporte La intervención excepcional para corregir un caso Convertir una ayuda puntual en un borrado masivo o en una sobrescritura invisible

El sistema estaba acercándose justo a esa mezcla peligrosa.

Si una previa parcial podía pisar campos ya guardados, si una corrección administrativa podía parecerse a una propagación masiva, o si una validación automática limpiaba una elección sin pedir contexto, la app dejaba de proteger votos y pasaba a “recomponerlos” desde fuera.

Eso es cómodo a corto plazo.

Pero para un producto con ranking, bonus y cruces dinámicos, también es una forma de fabricar desconfianza.

La corrección dejó de parecerse a un reset

La decisión fuerte del día fue esta:

soporte corrige un caso; no reescribe el sistema entero.

Eso empujó varios cambios en la misma dirección:

  • las correcciones administrativas pasaron a requerir confirmación explícita;
  • la lógica dejó de aceptar que una corrección se propagara como operación en lote;
  • el borrado global de votos dejó de ser una salida válida;
  • y la edición de la previa pasó a conservar lo que ya estaba bien cuando el formulario no trae todos los campos.

Esa combinación importa más de lo que parece.

No es solo “poner más validaciones”.

Es cambiar el modelo mental de soporte: de rehacer el estado a preservar la intención original y tocar solo la pieza equivocada.

El guardado parcial dejó de ser una amenaza silenciosa

Aquí había una tensión interesante.

La previa de Ultimate Porra ya no es un bloque pequeño: incluye campeón, finalista, goleador, equipo revelación y lecturas de grupos que luego alimentan cruces y bonus.

Cuando esa superficie crece, guardar desde una vista parcial deja de ser inocente.

Si el sistema interpreta “este formulario no envió el dato” como “este dato debe vaciarse”, el producto castiga al usuario por la forma de la UI, no por su decisión.

Por eso el guardado cambió de criterio:

  • lo omitido no se destruye por defecto;
  • lo inválido se comunica;
  • y lo que exige corrección humana se separa de lo que puede recalcularse automáticamente.

La lección no es exclusiva de una porra.

En cualquier producto con formularios largos y reglas derivadas, un submit parcial no debería comportarse como una amnesia del sistema.

El torneo oficial tuvo que convertirse en una dependencia explícita

También cambió la forma de resolver equipos, cruces y feedback de puntos.

No bastaba con tener tarjetas bonitas o resultados llegando al directo.

La app necesitaba una relación más estricta entre:

  1. la clasificación oficial,
  2. la identidad canónica de los equipos,
  3. el cálculo de puntos,
  4. y la explicación visible de por qué una predicción vale lo que vale.

Ahí está el patrón de fondo.

Mientras la realidad del torneo entra por un lado y la UI explica por otro, aparecen pequeñas mentiras:

  • un cruce muestra un nombre todavía ambiguo;
  • una diferencia de goles se puntúa con una regla incompleta;
  • un panel enseña un estado y otro conserva el anterior.

El trabajo de hoy empujó lo contrario:

si el torneo oficial mueve una pieza, la resolución de equipos, el cálculo y la lectura pública tienen que moverse como una sola cadena.

El backoffice dejó de ser solo una puerta de emergencia

La otra señal importante fue el cambio en la herramienta de administración.

No creció para “hacer más cosas”.

Creció para hacer menos daño por acción.

Los filtros por competición, porra, fase y país no son un lujo visual.

Son una forma de obligar a que una corrección se haga con contexto suficiente antes de tocar nada.

La edición separada de la previa y de los votos por partido también va en esa línea: no todas las predicciones viven en la misma escala ni deberían corregirse con el mismo gesto.

Cuando soporte madura, la pregunta deja de ser “qué permisos tiene”.

Pasa a ser:

¿qué tan fácil es corregir exactamente una cosa sin mover accidentalmente tres más?

Una porra seria necesita memoria, no reflejos

La idea fuerte del día es esta:

una porra no se vuelve fiable solo porque calcule puntos.

Se vuelve fiable cuando sabe distinguir entre lo que ocurrió, lo que alguien quiso votar y lo que un administrador está autorizado a corregir.

Si esas tres capas se pisan, el producto parece rápido pero deja de ser creíble.

Si se separan bien, el soporte deja de comportarse como un reset manual y empieza a parecerse a una operación de precisión.

Ahí es donde una app de predicciones deja de ser un formulario con ranking y empieza a comportarse como un sistema que respeta el historial, el contexto y la intención.

Parte de mis notas de producto y plataforma. Sigue el blog o escríbeme.