20 KiB
Dirección estratégica — InQ ROI
Documento de decisiones estratégicas del director (Marcos) que orientan el desarrollo del producto en sprints futuros. Se actualiza al cerrar cada sprint con reflexiones del director.
NO es backlog (ver
BACKLOG.md) ni deuda técnica (verTECH_DEBT.md). Es el "por qué" detrás de las decisiones de prioridad.
Versión actual: post-Sprint 1.5 (mayo 2026)
Reorientación estratégica detectada al cerrar Sprint 1.5
Durante el Sprint 1.5, el director identificó que la inversión de tiempo en el producto estaba desbalanceada:
- 7 de 11 etapas del Sprint 1.5 fueron sobre PDF (Etapas 4, 5, 6, 7, 8 + porción de 1 y 11)
- 3 de 11 etapas fueron sobre web app (Etapas 1, 3, 9)
- 1 etapa fue mixta (Etapa 2: helper compartido)
Esta proporción tuvo justificación válida en Sprint 1.5 porque se establecía identidad visual y sistema de diseño desde cero. Pero replicar esa proporción en Sprint 2+ sería un error estratégico.
Decisión: rebalanceo de prioridades
El producto es la herramienta web. El PDF es entregable final del producto.
A partir de Sprint 2:
| Componente | Inversión esperada |
|---|---|
| Web app (workspace + reporte + features) | 60-70% del tiempo del sprint |
| PDF (refinamientos, nuevas secciones) | 15-25% |
| Infraestructura (deuda técnica, build, deploy) | 10-15% |
| Documentación / metodología | 5-10% |
Razón: el consultor de InQuality usa el web app decenas de veces mientras itera sobre un caso. Exporta el PDF una vez al final. Una mejora en el web app tiene 10× más impacto en la productividad del consultor que un refinamiento del PDF.
Implicancia operativa para Sprint 2+
- No abrir sprints con foco principal en PDF
- Si un sprint requiere trabajo de PDF, que sea acotado a una etapa puntual, no transversal
- Los refinamientos del PDF se acumulan en
TECH_DEBT.mdpara resolver en sprints periódicos de "polish", no continuamente - Features nuevas del producto se construyen en el web app primero, exporte al PDF segundo
Decisión: criterio de "wow" como parte del scope de cada feature
Detectado durante validación visual del Sprint 1.5 (Etapa 6). Se observó que la implementación "mínima" cumple la funcionalidad pero pierde el efecto de experiencia que diferencia un producto profesional de un funcional.
Política a partir de Sprint 2
Cada ETAPA_PROMPT.md que defina una feature nueva debe incluir una sección explícita "Criterio de wow" con dos versiones del scope:
- Versión mínima: lo que cumple la funcionalidad
- Versión con wow: mismo objetivo + 1-2 detalles de experiencia que generen impacto positivo en el usuario
El director decide en cada feature si se implementa la mínima o la con wow. Por defecto, la versión con wow es la recomendada si el costo extra es menor al 40% del tiempo de la versión mínima.
Ejemplo aplicado: feature "Recursos con costo por hora"
- Mínimo: input numérico, cálculo en backend, número en tabla
- Con wow: input con sugerencias de salario por rol (CEO, Analista, etc.), validación en tiempo real, cálculo actualiza mientras escribís, helper que dice "esta actividad cuesta el equivalente a X días de trabajo de Y persona"
Ambas resuelven el problema. La segunda es lo que diferencia InQ ROI de una calculadora Excel.
Definiciones estables — no se reabren hasta nuevo aviso
Identidad visual (estable hasta Sprint 4+)
- Paleta cromática: naranja InQ
#F59845, magenta#ED3E8F, gradiente identidad - Tipografía: system-ui stack
- Sistema de componentes (KPI cards, banners, tablas, botones)
- Reglas de marca no negociables: "InQ" siempre I-n-Q, "Powered by InQuality" en footer
- Tono: técnico-pragmático, profesional, sin marketing-speak
Lo que NO está definido pero NO bloquea
- Logo SVG de InQuality (es texto por ahora, OK)
- Ícono ⚡ refinado (es emoji, OK)
- Color de tipos de recurso (se define cuando aparezca la feature)
- Manual de marca formal de InQuality (cuando exista, se incorpora)
Cuándo reabrir identidad
Solo si InQuality consolida manual de marca formal con assets nuevos, o si feedback de uso real en talleres revela un problema específico.
Definiciones por consolidar — requieren input externo
Posicionamiento de mercado de InQ ROI
Estado: indefinido más allá de "herramienta interna de InQuality + consultoras LATAM".
Preguntas abiertas:
- ¿InQ ROI se vende a otras consultoras o se mantiene interno?
- Si se vende, ¿con qué pricing?
- ¿Qué pasa si una consultora competidora descubre el producto?
- ¿El nombre "InQ ROI" sobrevive cuando se venda fuera de InQuality?
Decisión pendiente: post-Sprint 2 con feedback de uso real en InQuality.
Métricas de éxito del producto
Estado: no definidas formalmente.
Sugerencia para definir: post-Sprint 2 con datos reales de uso interno. Algunas candidatas:
- Cantidad de procesos costeados por consultor por semana
- Tiempo promedio de la primera simulación útil
- NPS interno del equipo InQuality
- Cantidad de propuestas pre-venta que incluyen output de InQ ROI
Filosofía operativa que orienta las decisiones
El equipo es héroe, el director es guía (Donald Miller)
El equipo de 5 técnicos de InQuality va a ser el operador del día a día. El director (Marcos) los guía con metodología, pero no es el operador. Las decisiones del producto y del método se documentan para que sean transferibles.
Validación humana es ojo, no test
Los artefactos visibles requieren validación visual del director (o un miembro del equipo capacitado) antes del cierre de etapa. Tests verdes no equivalen a aprobación final. Este principio se aplicará en todos los sprints futuros.
Iniciativa agéntica con consulta clasificada
Los agentes pueden proponer cambios proactivos, pero se clasifican por impacto:
- Nivel 1 (trivial): ejecutar
- Nivel 2 (visible reversible): ejecutar y reportar
- Nivel 3 (marca, arquitectura, datos): consultar antes
Esta política aplica indefinidamente. Documentada en methodology/PRINCIPLES.md.
Anti-perfeccionismo prematuro
Refinamientos visuales finos se acumulan en TECH_DEBT.md y se resuelven en sprints periódicos de "polish", no continuamente. Esto evita gastar 3 horas refinando un componente que va a tener que tocarse otra vez al agregar features.
Decisiones de método aprendidas durante Sprint 1.5
Estas son aprendizajes operativos validados con casos reales. Se documentan acá como guía estratégica, no como reglas dogmáticas.
Briefs versionados son innegociables
Sin un brief en sprints/sprint-N/BRIEF.md, cualquier sesión con Claude Code es improvisación. Esta práctica aplica a todos los sprints futuros.
Mockups son contratos visuales
Cuando un cambio es visual, el mockup interactivo aprobado por el director es el ground truth. El agente lo replica, no lo interpreta libremente.
La metodología evoluciona caso por caso
Los patrones documentados en methodology/ se validan en proyectos reales. No se inventan patrones especulativos. Cuando un problema operativo aparece, se registra como observación; cuando aparece dos veces, se promueve a patrón.
Próxima revisión de este documento
Fecha: al cerrar Sprint 3.
Qué actualizar:
- Confirmar decisión sobre Modelo B (AS-IS/TO-BE con dos BPMNs)
- Evaluar catálogo global de recursos vs por proceso con datos de uso real
- Refinar posicionamiento y métricas con feedback de talleres InQuality
Reflexiones del cierre de Sprint 1.5
Agregado el 2026-05-18 al cerrar formalmente el sprint.
Lo que funcionó bien
El brief como ancla de coherencia. Las 11 etapas mantuvieron consistencia de marca, paleta y arquitectura sin re-explicar el contexto en cada sesión. El BRIEF.md de ~850 líneas más CLAUDE.md con reglas no negociables resultaron suficientes para que el agente retomara contexto en sesiones nuevas incluso con compactación de contexto.
La validación visual como capa de calidad independiente. En dos casos los tests estaban 100% verdes pero el output visual tenía problemas reales: compactación de páginas (Etapa 5) y artefactos de esquinas en el KPI Hero (Etapa 11). La validación visual del director los cazó en ambos casos. Esta práctica se consolida como mandatoria en todos los sprints futuros.
La documentación del método en tiempo real. AP.8, el refinamiento de C.6 y D.4 surgieron de problemas reales durante el sprint y se documentaron en el momento. El material resultante para transmisión al equipo es concreto, no especulativo.
Los PDFs como entregable de clase profesional. Al cierre del sprint, los 3 PDFs tienen identidad visual coherente, son 100% reproducibles via E2E, y pasan inspección visual de nivel "presentable a cliente". Esto no era el caso al abrir el sprint.
Lo que costó más de lo esperado
Las esquinas redondeadas del KPI Hero. 3 iteraciones para resolver un problema aparentemente simple: (1) overlay de rectángulos blancos + arcos naranja → colisión con el gradiente magenta en esquina derecha; (2) canvas clip con transparencia PNG → jsPDF no renderiza alpha correctamente; (3) canvas con fondo blanco opaco + clip → solución definitiva. El tiempo invertido fue desproporcionado al impacto visual.
La proporción PDF/web. 7 de 11 etapas fueron sobre PDF. El rebalanceo debió haberse decidido en el brief del sprint, no al cerrarlo. La decisión de "establecer identidad visual desde cero" fue correcta para Sprint 1.5, pero el método de trabajo no contempló explícitamente el límite de inversión en PDF antes de empezar.
Los casos de mala clasificación de iniciativa. Dos casos (Etapas 5 y 7-8) requirieron revisión retroactiva y discusión meta sobre el método. El costo no fue solo el tiempo de corrección, sino la incertidumbre sobre qué otros cambios podrían haberse aplicado sin consulta. Originaron el refinamiento más detallado del Patrón C.6.
Decisiones arquitectónicas tomadas en el sprint
| Decisión | Estado al cierre |
|---|---|
| Gráfico de trayectoria SVG nativo en jsPDF (sin html2canvas) | Definitiva — aplicada en página 5 del PDF ROI |
| Fórmulas ASCII puro en notas metodológicas | Definitiva — alineada con terminología financiera de la audiencia |
| Portrait en todas las páginas del PDF ROI | Definitiva — consistencia con los otros PDFs |
| Canvas clip con fondo blanco para esquinas redondeadas | Definitiva — sin artefactos de color |
automatable persiste solo al Guardar (no auto-save) |
Provisional — revisar en Sprint 2 con feedback de uso real |
Estado de definiciones del producto al cierre de Sprint 1.5
Estables (no se reabren):
- Identidad visual completa: paleta naranja, gradiente, reglas de marca
- Stack tecnológico: sin cambios respecto al MVP
- Modelo de escenarios: Modelo A (dos campos por actividad, un BPMN)
- ROI: cálculos nominales simples sin VPN ni Monte Carlo
Pendientes de input externo:
- Posicionamiento de mercado (¿herramienta interna o venta a otras consultoras?)
- Métricas de éxito del producto (post-Sprint 2 con datos reales de uso)
- Nombre comercial definitivo ("InQ ROI" es nombre de trabajo)
- Manual de marca formal de InQuality (cuando exista, se incorpora)
Nueva prioridad para Sprint 2:
- Rebalanceo web/PDF: 60-70% features de web app, 15-25% PDF
- Criterio de wow obligatorio en cada ETAPA_PROMPT.md
- Feedback de uso real en talleres InQuality como insumo para decisiones de UX
Reflexiones del cierre de Sprint 2
Agregado el 2026-05-20 al cerrar formalmente el sprint.
Rebalanceo web/PDF — cumplido
Sprint 2 tuvo 4 etapas de web app (1, 2, 3, 4), 2 de PDF (5, 6) y 0 de infraestructura pura. Proporción aproximada: 65% web, 30% PDF, 5% tests/fixes. Dentro del rango comprometido. El criterio de wow se aplicó en ActivityPanel (Etapa 2) y en la tabla expandible del reporte (Etapa 3).
Decisiones arquitectónicas tomadas en el sprint
| Decisión | Estado al cierre |
|---|---|
Modelo de recursos: utilizationMinutes + units reemplaza utilizationPercent |
Definitiva — migración Dexie v3 aplicada |
| Catálogo de recursos por proceso (no global) | Provisional — revisar en Sprint 3 con uso real |
| Recursos solo en AS-IS en Sprint 2 | Provisional — TO-BE con Modelo B en Sprint 3 |
| Modelo A mantenido (un BPMN, dos sets de campos) | Provisional — Modelo B evaluado en Sprint 3 |
| Badge ⚡ en 20×20px | Definitiva — validado visualmente |
| Tabla de recursos en PDF como página condicional (4 o 5) | Definitiva |
Lo que funcionó bien
El control preventivo git diff agregado a partir de Etapa 2 eliminó completamente las sorpresas de scope en Etapas 3-6. Ningún archivo no autorizado apareció en el diff sin explicación. El aprendizaje de Etapa 1 (AP.9) se capturó en tiempo real y se aplicó inmediatamente.
El modelo de recursos utilizationMinutes + units resultó más natural para documentar en talleres que el utilizationPercent anterior. La pregunta "¿cuántos minutos dedica el analista a esta actividad?" es verificable en una entrevista; "¿qué porcentaje de utilización tiene?" no lo es.
La separación de CLAUDE.md en dos archivos (implementación vs. estrategia) funcionó bien operativamente. Claude Code lee su propio archivo sin contexto innecesario; el asesor en Cowork lee el estratégico.
Lo que costó más de lo esperado
El bug del slider en Etapa 1. La restricción contradictoria en el prompt (❌ ActivityPanel.tsx + build sin errores TypeScript) generó una decisión unilateral del agente que requirió una etapa completa para corregir. Originó AP.9 y C.7 — dos adiciones al método que valen más que el tiempo perdido.
rowSpan en jsPDF-autotable. No está soportado en body cells. El prompt lo advirtió y dio la salida de emergencia correcta, pero fue tiempo de investigación que podría haberse ahorrado con ese conocimiento documentado. Va a TECH_DEBT.md como anotación para futuros prompts de PDF con tablas agrupadas.
Decisiones de producto pendientes para Sprint 3
- Modelo B (AS-IS / TO-BE): ¿abrimos esa puerta o seguimos con Modelo A y mejoramos la experiencia del modelo actual?
- Catálogo global de recursos: ¿el valor de compartir recursos entre procesos justifica la complejidad en Sprint 3, o esperar a Sprint 4 con más procesos cargados?
- Indicador de simulación desactualizada: alto impacto en talleres, bajo esfuerzo. Candidato a entrar en Sprint 3.
- Posicionamiento: post-Sprint 2 es el momento comprometido para una primera conversación sobre herramienta interna vs. venta externa.
Reflexiones del cierre de Sprint 4
Agregado el 2026-06-23 al cerrar formalmente Sprint 4 y 5 juntos (Sprint 5 Etapa 6).
Decisión estratégica
Refactor arquitectural completo: migración de IndexedDB (Dexie) a Supabase, con autenticación Google Workspace OAuth. Sin features de producto nuevas — el sprint completo fue inversión en infraestructura.
Justificación: la deuda técnica de IndexedDB (persistencia local, sin colaboración multi-usuario) bloqueaba cualquier feature colaborativa futura (compartir procesos entre consultores, catálogo de recursos entre cuentas, identidad de "quién editó qué"). Postergar el refactor habría compuesto el costo de migración a medida que crecía el volumen de datos en producción.
Resultado
Auth Google OAuth + Supabase, migración completa IndexedDB→PostgreSQL, RLS (is_platform_admin() + políticas granulares), catálogo global de recursos (sin processId), identidad en UI (avatar/dropdown, "Actualizado por"), ResourceCatalogPage + ResourceFormSheet, fix Web Locks API deadlock (processLock). ~550+ tests al cierre.
Cerrado: 2026-06-18.
Reflexiones del cierre de Sprint 5
Agregado el 2026-06-23 al cerrar formalmente el sprint.
Decisión estratégica
Retorno al rebalanceo normal (60-70% features de producto web, 10-15% infraestructura/deuda técnica) tras el sprint 100% infraestructural de Sprint 4. Foco en UX polish y quick wins de alto impacto/bajo esfuerzo — explícitamente sin features de gran escala (historial de simulaciones, setShared() real, Keycloak, PWA, i18n, Excel).
Resultado
Fix crítico workspace loading (race condition auth/processId), zoom BPMN (fit-viewport con padding + controles +/−/fit), heatmap con gradiente continuo de 4 stops + toggle percentile/min-max persistido en localStorage, "ver procesos por recurso" en catálogo, campo empresa en perfil de usuario, columna "Eficiencia de automatización" en ComparisonTable (A/B con "Ahorro esperado" para focus group), reescritura de specs E2E Dexie→Supabase, fix de flakiness en botón "Guardar cambios".
Hallazgo operativo del sprint: el bug de freeze al guardar perfil (Etapa 4) requirió 12 commits y ~10 iteraciones de diagnóstico basado en lectura de código fuente de Supabase/Radix antes de resolverse. El quiebre llegó cuando el director compartió el HTML real de la pantalla congelada en vez de seguir teorizando sobre el comportamiento esperado de las librerías — un dato observable (document.body.style.pointerEvents = 'none') colapsó el espacio de hipótesis de inmediato. Ver sprints/sprint-5/INFORME_ETAPA_4_FREEZE_PERFIL.md y memoria de feedback asociada.
Cerrado: 2026-06-23 (pendiente validación visual final del director sobre Etapas 5 y 6).
Reflexiones del cierre de Sprint 6
Agregado el 2026-06-24 al cerrar formalmente el sprint.
Decisión estratégica
Sprint orientado a "client-readiness": cerrar los dos gaps que impedían usar InQ ROI en vivo con un cliente externo — PDF sin marca visual y ROI sin capacidad de análisis what-if. Se abrió también la planificación de Sprint 7 (multi-usuario y acceso de clientes) a partir de una evaluación estratégica de posicionamiento del producto.
Resultado
Etapa 1: logo InQuality en header de PDFs (páginas 2+, isotipo 15mm proporcional, fallback a texto si falla el fetch); whitespace-nowrap en MetricCell de Eficiencia. Bug detectado en proceso: Claude Code agregó logo en portada sin autorización (fuera del scope explícito del prompt) — revertido. Aprendizaje de método: auditar archivos adyacentes al scope declarado.
Etapa 2: panel de análisis de sensibilidad con dos sliders (volumen −50%/+100%, inversión −50%/+100%), recálculo de KPIs en tiempo real vía calculateRoi() sin re-simulación, badge "Análisis activo", versión wow con doble línea en CumulativeSavingsChart (base gris dashed + área sombreada + ajustada naranja). Layout del tab ROI reordenado post-validación: CumulativeSavingsChart sube por encima de ComparisonTable para mantener adyacencia visual con los sliders.
Etapa 3: bug real confirmado y corregido — ProfileSheet.getAccessToken() leía 'supabase.auth.token' (clave inexistente en supabase-js v2); el guardado de perfil nunca llegó a Supabase desde Sprint 4. Fix: calcular sb-${projectRef}-auth-token. setTimeout(350) eliminado de ProfileSheet; fix de sheet.tsx es suficiente. Specs E2E de diagnóstico y validación de auth. 552 tests al cierre.
Decisiones estratégicas tomadas durante el sprint
Modelo de negocio clarificado: InQ ROI es herramienta de consultor, no de cliente final. El "trabajo de prep" (modelar BPMN, cargar costos, configurar recursos) es el relevamiento de consultoría facturable. Funnel: relevamiento pago → diagnóstico ROI → venta de automatización. El consultor usa InQ ROI como argumento de precio (de "horas de desarrollo" a "valor percibido por ahorro potencial").
Clientes piloto definidos: Banco Solar → Banco Itaú → Aseguradora Yacyretá → Negofin (en ese orden).
Sprint 7 abierto: multi-usuario y acceso de clientes. Modelo de 4 roles (platform_admin, member, client_editor, client_viewer). Patrón de InQ Sizing (documento de referencia: cowork/InQ ROI - Simulador de procesos/autenticacion-y-usuarios.md). InQuality como organización administradora de la plataforma.
Cerrado: 2026-06-24.