01 — CONTEXT
El contexto
Un fotógrafo con doscientas fotos de una sesión tiene dos trabajos agotadores: seleccionar las que valen y revelarlas. RetoQ nació como un evaluador local —un servidor Node de un solo archivo con SQLite que corría en el ordenador de su autor— y se reescribió como aplicación multiusuario.
02 — PROBLEM
El problema
El criterio se desplaza a lo largo de una sesión: las primeras fotos se juzgan con un listón y las últimas con otro. Y traducir una intención visual («blancos limpios que conserven textura») a treinta reguladores concretos, foto a foto, es lento. Un modelo de visión puede opinar sobre una imagen; el reto era convertir esa opinión en algo estable, comprobable y ejecutable.
03 — CONSTRAINTS
Las restricciones
- 01La nota no puede depender de la aritmética de un modelo.
- 02El archivo original del fotógrafo no se sube ni se modifica nunca.
- 03El precio se enseña antes de gastar y el coste real se registra después.
- 04Cada fila tiene dueño: nadie puede ver ni intuir el trabajo de otro usuario.
- 05No fingir capacidades que no tiene: las máscaras del preset son geométricas, no semánticas.
04 — SYSTEM
Qué decidí construir
Una aplicación Nuxt 4 multiusuario que evalúa cada fotografía con cinco criterios, devuelve veredicto, fortalezas y mejoras, y propone tres revelados con valores absolutos de Lightroom. Cada receta se convierte en un preset .xmp real y, si se pide, en la imagen ya editada. Incluye un flujo HDR y un taller de retoque por lotes.

05 — ARCHITECTURE
Arquitectura del sistema
SOFTWARE
Software
- Evaluación por arrastre: el navegador reduce la foto a 2500 px y la convierte a WebP antes de enviarla.
- Ficha por fotografía con URL propia: puntuación, veredicto, tres recetas y ediciones generadas.
- Presets .xmp de Adobe Camera Raw y Lightroom Classic, con las máscaras ya nombradas y sus valores.
- Flujo HDR de 2 a 7 exposiciones: receta aplicada idéntica a cada toma y TIFF RGB de 16 bits.
- Retoque por lotes con instrucciones base combinables.
DATA
Datos
- MariaDB con Prisma: usuarios, fotos, generaciones, presets, proyectos y operaciones HDR.
- Todo cuelga del usuario con borrado en cascada; lo ajeno devuelve 404, no 403.
- Clave de OpenAI de cada usuario cifrada con AES-256-GCM.
- Coste real de cada operación calculado con el uso de tokens y registrado.
- Datos del evaluador original migrados: evaluaciones, ediciones y presets con sus archivos.
AI / AUTOMATION
IA y automatización
- Un modelo de visión evalúa la imagen con una rúbrica de escala dura: 5 es corriente, 8 sobresaliente, 10 rarísimo.
- Esquemas JSON estrictos: si el modelo devuelve puntuaciones fuera de rango, la evaluación se rechaza entera.
- Tres recetas por foto, con el motivo de cada parámetro: globales, curva, HSL, detalle y máscaras.
- Un segundo modelo traduce cada receta a atributos de Adobe; el servidor escribe el XML y descarta lo que no reconoce.
- Generación opcional de la imagen editada, que respeta encuadre, geometría y contenido.
06 — DECISIONS
Decisiones importantes, y por qué
El modelo juzga; el servidor calcula
La nota final es la suma de los cinco criterios por dos, calculada en el servidor. La aritmética no se le confía a un modelo.
El XML lo escribe el sistema, no la IA
El modelo propone nombres de atributo; la construcción del .xmp es determinista. El archivo siempre es válido aunque el modelo se despiste.
Cada usuario trae su clave
Cada usuario paga directamente a OpenAI lo que consume, sin margen oculto. El precio estimado se ve antes y el coste exacto queda registrado después.
Decir lo que no hace
Una máscara llamada «Cielo» trae los valores correctos, pero no detecta el cielo. El producto lo dice claramente en lugar de fingir lo contrario.

07 — RESULT
Resultado
- Aplicación desplegada en retoq.es, con acceso por cuenta.
- Probada de extremo a extremo con una evaluación real, incluido el aislamiento entre usuarios.
- Pendiente, y documentado como tal: la página pública de aterrizaje, la recuperación de contraseña y los límites por usuario.
Sin cifras de negocio inventadas: lo que se muestra es lo que existe y está documentado.

08 — STACK
Stack técnico
- Nuxt 4
- Vue 3
- TypeScript
- Tailwind CSS v4
- Prisma
- MariaDB
- OpenAI
- Adobe XMP
09 — SIMILAR PROBLEMS
Qué problema parecido puedo resolver
- →Tu equipo aplica un criterio experto a mucho material y ese criterio se desplaza con el cansancio.
- →Quieres que la IA produzca algo ejecutable —un archivo, una configuración, una acción—, no solo una opinión.
- →Necesitas controlar y enseñar el coste de cada llamada a un modelo.
- →Quieres un producto de IA que diga con claridad qué no sabe hacer.
Este proyecto es un ejemplo de ia y automatización y software a medida.
