Resumen
Este documento desglosa la estimación macro de la propuesta v2 (10 semanas de proyecto) a horas-hombre por componente, recurso asignado, y nivel. Sirve como insumo para tres decisiones:
- Validar que la estimación inicial es viable dado el alcance detallado descubierto en el AF (DOC-AF-01, AF-02, AF-05).
- Identificar dependencias críticas que no pueden paralelizarse y fijan el camino crítico.
- Asignar buffer/contingencia por nivel según riesgo.
Resultado: con la estimación detallada, la propuesta de 10 semanas tiene ~3.5 semanas-persona de buffer agregado (descontando paralelismo). Es viable pero el margen es ajustado para Nivel 3.
Metodología
Unidad
Estimaciones en horas-hombre (h-h). Una semana de trabajo se considera 40 h por persona (9 AM – 6 PM L-V, descontando 1 h almuerzo).
Equipo y roles asignados
| Rol | Asignación | Capacidad | Tarifa estimada |
|---|---|---|---|
| Squad Lead (Adrian) | 100% al proyecto | 40 h/sem | senior |
| Dev Senior (Joseph) | 100% al proyecto | 40 h/sem | senior |
| Dev Mid (TBD si se asigna) | 50% al proyecto · solo Nivel 2-3 | 20 h/sem | mid |
| PM (Sheila) | ~5 h/sem | seguimiento, sesiones AJE | — |
Capacidad total semanal: 80 h (squad lead + dev senior, 100%) + 20 h (dev mid, 50%, Nivel 2-3).
Approach
Se estima por componente, no por país, porque la parametrización del pipeline es justamente lo que distingue al refactor: un cambio en el componente sirve para los 7 países simultáneamente. Cuando hay esfuerzo país-específico (validación, casos especiales), se nota como factor multiplicador.
Cada componente se estima con tres anchors:
- Optimista (P10) · si todo sale bien y no hay imprevistos
- Esperado (P50) · escenario más probable
- Pesimista (P90) · si hay 2-3 imprevistos típicos
Se reporta el P50 + buffer del 15% para imprevistos generales.
Estimación Nivel 1 · Automatización
Ventana propuesta: sem 2-4 (25 may → 12 jun, 3 semanas). Esfuerzo total disponible: 80 h × 3 sem = 240 h-h.
Componentes
| # | Componente | Esfuerzo (h-h P50) | Recurso | Sub-tareas |
|---|---|---|---|---|
| 1 | Parametrización completa de los 3 scripts canónicos (limpieza · modelado · reglas) — soportar los 7 países con un solo código | 40 | Dev Senior | Refactor de hardcoded country values · validación de configs por país · tests por país |
| 2 | Validación de la lógica de México como referencia · ajustes finos por país documentados en DOC-AF-02 | 24 | Squad Lead + Dev Senior | Comparar outputs por país · alinear con AJE en Touchpoints intermedios |
| 3 | Schedules de EventBridge escalonados · 7 países × 10 min | 6 | Dev Senior | Ya implementado parcialmente; afinar timing |
| 4 | Trigger Lambda · pasar {code_country} al SM Pipeline |
4 | Dev Senior | Lambda existe; agregar testing |
| 5 | CloudWatch Dashboard · panels por país y consolidado | 12 | Dev Senior | 1 dashboard + 7 widgets por país |
| 6 | CloudWatch Alarms × 2 (failed/stopped) + SNS topic + suscripciones | 8 | Dev Senior | 2 alarms baseline. Suscriptores se confirman con AJE en Sesión 1 |
| 7 | S3 Versioning + lifecycle policies en buckets críticos | 4 | Dev Senior | Configuración CDK |
| 8 | Docker images versionadas · tag con SHA del commit | 6 | Dev Senior | Modificar build_push_ecr_images.sh |
| 9 | Tests automatizados (schema del output · volumen · smoke) | 20 | Dev Senior | pytest + S3 mocks · uno por step del pipeline |
| 10 | Pre-commit hook que detecta anti-patterns (ej. f-string nested same-quote) | 4 | Dev Senior | Hook de git con ruff/pyflakes |
| 11 | Documentación operacional inicial (runbooks 1 y 2 de DOC-AF-09) | 16 | Squad Lead | "Pipeline falló · ¿qué hago?" · "Cómo verificar status diario" |
| 12 | Validación Técnica 1 (VT1) (sem 4) | 32 | Squad Lead + AJE | Pipeline corre 2 países × 3 días sin intervención · alertas <5min · rollback Docker probado |
| 13 | Coordinación + sesiones con AJE (Sesión 1 + responses async) | 12 | Squad Lead | Sesión 1, 2, 3 + Q&A async |
| 14 | Imprevistos / buffer general 15% | 28 | — | Resolución de issues no anticipados |
| Total Nivel 1 | 216 h-h | dentro de capacidad 240 h-h ✓ | margen 10% |
Camino crítico Nivel 1
Parametrización scripts (40h, Dev) ─────────┐
├──► Schedule + Lambda (10h, Dev) ─────► VT1 (32h)
Tests automatizados (20h, Dev) ────────────┘
│
Dashboard + Alarms (20h, Dev) ──────────────┘
Bloqueo crítico: VT1 requiere que el pipeline esté completo. Parametrización es el bloqueador principal (40h) · si toma 60h se retrasa VT1 1 semana.
Estimación Nivel 2 · Gestión del modelo
Ventana propuesta: sem 5-7 (15 jun → 3 jul, 3 semanas). Esfuerzo disponible con dev mid: (80 + 20) × 3 = 300 h-h.
Componentes
| # | Componente | Esfuerzo (h-h P50) | Recurso | Sub-tareas |
|---|---|---|---|---|
| 1 | Separar pipelines train (semanal) e inference (diaria) | 32 | Dev Senior | Refactor del SM Pipeline canónico en 2 pipelines distintos |
| 2 | Feature Store · 2 Feature Groups (cliente, producto) | 40 | Dev Senior + Dev Mid | Schema design · ingestion offline · validación |
| 3 | Model Registry · 7 model groups + lógica de versionado | 16 | Dev Senior | Crear registry · workflow de Register |
| 4 | Gates de aprobación · Gate 1 (regresión) + Gate 2 (métricas) | 32 | Dev Senior | Tests específicos · lógica de promotion |
| 5 | Aprobación humana (Gate 3) · notificación SNS + endpoint console | 12 | Dev Senior | Documentar workflow para AJE |
| 6 | Métricas de calidad cuantificadas (NDCG@10, Precision@K, Coverage) en código | 40 | Dev Senior + Squad Lead | Implementación · validación con holdout temporal · baseline por país |
| 7 | SageMaker Model Monitor · baseline + schedule diario | 20 | Dev Senior | 1 Model Monitor por país |
| 8 | CI/CD enriquecido · stages Test + Staging + Approval + Prod | 30 | Dev Senior | Modificar CodePipeline; agregar 3 CodeBuild projects |
| 9 | DynamoDB de model metrics · histórico por país | 8 | Dev Mid | Tabla + ingestion al final del entrenamiento |
| 10 | Dashboard CloudWatch · model quality (NDCG/Precision/Coverage) por país | 12 | Dev Mid | 1 dashboard + 21 widgets (3 métricas × 7 países) |
| 11 | Touchpoint Nivel 2 (DT-N2) · sesión 1.5h con AJE + preparación material | 6 | Squad Lead | 15-jun · confirmación de features, gates, CI/CD stages |
| 12 | Documentación operacional Nivel 2 (runbooks 3 y 4) | 16 | Squad Lead | "Promoción manual de modelo · paso a paso" · "Cómo agregar feature al Feature Store" |
| 13 | Validación Técnica 2 (VT2) (sem 8 · semana extra) | 28 | Squad Lead + AJE | Modelo registrado con métricas · Model Monitor activo · CI/CD funcional |
| 14 | Coordinación + sesiones con AJE | 8 | Squad Lead | Touchpoint + status weekly |
| 15 | Imprevistos / buffer 20% (más buffer porque introducimos servicios nuevos) | 60 | — | Feature Store y Model Registry tienen curva de aprendizaje |
| Total Nivel 2 | 360 h-h | excede capacidad 300 h-h por 60 h ⚠️ | requiere overrun de 1.5 semana o asignación extra |
Mitigación del overrun
Tres opciones para cerrar la brecha de 60 h-h:
- Asignar Dev Mid a 100% durante Nivel 2 (no 50%) — agrega 60 h, cierra exacto. Costo: el Dev Mid no está 100% disponible.
- Reducir scope de Feature Store (1 Feature Group inicial en vez de 2) — ahorra ~20 h. Compromiso técnico aceptable si se justifica.
- Posponer dashboard CloudWatch de model quality al Nivel 3 — ahorra 12 h. Acceptable porque las métricas se persisten en DynamoDB de todas formas.
Recomendación: combinación de 1 + 2 (asignar Dev Mid 100% y empezar con 1 Feature Group, agregar 2do en Nivel 3 si surge necesidad). Confirmar con AJE en DT-N2.
Estimación Nivel 3 · Automatización completa
Ventana propuesta: sem 8-10 (6 jul → 24 jul, 3 semanas). Esfuerzo disponible: (80 + 20) × 3 = 300 h-h.
Componentes
| # | Componente | Esfuerzo (h-h P50) | Recurso | Sub-tareas |
|---|---|---|---|---|
| 1 | Retraining trigger · Lambda + EventBridge rules por drift | 16 | Dev Senior | 1 Lambda + 7 EventBridge rules |
| 2 | Multi-modelo · grid de hiperparámetros con SageMaker Experiments | 36 | Dev Senior | Tuning job config · selección automática por NDCG@10 |
| 3 | Lógica de promoción automática post-retrain | 20 | Dev Senior | Aprobación automática si pasan Gate 1+2 (excepto concept drift) |
| 4 | Model Cards · metadata estandarizada por modelo | 16 | Dev Senior + Squad Lead | Template de Model Card · ingestion en cada Register |
| 5 | CloudTrail trail dedicado del proyecto | 8 | Dev Senior | Trail + S3 bucket de logs + retention policy |
| 6 | Concept drift detection · alarmas y workflow | 24 | Dev Senior | CloudWatch alarms basados en NDCG@10 cae > 5% durante 2 sem |
| 7 | Cooldown de 14 días post-retrain · lógica | 8 | Dev Mid | DynamoDB lookup en Lambda de retrain trigger |
| 8 | IaC final · CDK app completa y parametrizable por stage | 40 | Squad Lead + Dev Senior | Refactor de AjePsInfraStack para soportar dev/qa/prod con un solo deploy |
| 9 | Endpoint de inferencia · setup batch transform diario | 16 | Dev Senior | Configurar batch transform job · alternativa a endpoint persistente |
| 10 | Documentación completa · arquitectura + manual de usuario | 32 | Squad Lead | Docs de arquitectura (post-implementación) · manual de usuario para AJE |
| 11 | Touchpoint Nivel 3 (DT-N3) · sesión 1.5h + preparación | 6 | Squad Lead | 6-jul · confirmar thresholds drift, multi-modelo, retraining workflow |
| 12 | Runbooks finales (5 y 6 de DOC-AF-09) | 16 | Squad Lead | "Drift detectado · ¿qué hago?" · "Agregar país nuevo al pipeline" |
| 13 | Sesiones de capacitación a AJE (6 sesiones del plan de handover) | 24 | Squad Lead + Dev Senior | 6 sesiones de ~3h cada una (propuestas en DOC-AF-09) |
| 14 | Validación Técnica 3 (VT3) (sem 10) | 32 | Squad Lead + AJE | Retrain por drift simulado · 2 países multi-modelo · Model Cards + CloudTrail funcionales |
| 15 | Acta de Conformidad final · empaquetado de entregables · entrega formal | 12 | Squad Lead + PM | Recolección de evidencia · firma del acta de cierre del proyecto |
| 16 | Imprevistos / buffer 25% (más buffer aún porque retraining es lo más complejo) | 80 | — | Detección de drift y promoción automática tienen muchos casos edge |
| Total Nivel 3 | 386 h-h | excede capacidad 300 h-h por 86 h ⚠️ | mayor presión de calendario |
Mitigación del overrun del Nivel 3
86 h-h de overrun es significativo. Opciones:
- Reducir scope de Model Cards a campos mínimos (versión + training data + métricas) en lugar de "metadata completa" — ahorra ~10 h
- Multi-modelo · solo 2 países piloto en VT3 (como dice la propuesta v2 explícitamente) en lugar de 7 países — ahorra ~16 h
- Sesiones de capacitación · 4 en lugar de 6 (combinar 1+2, 5+6) — ahorra ~8 h
- Dev Mid a 100% durante Nivel 3 también — agrega 60 h
- Posponer IaC parametrizable por stage a una "Fase 2" después del proyecto (solo entregamos IaC para dev en Nivel 3) — ahorra 24 h
Recomendación: combinación de 2 + 4 + 5. Cierra la brecha. Confirmar con AJE en DT-N3.
Comparación vs propuesta v2
| Métrica | Propuesta v2 | Estimación detallada AF | Delta |
|---|---|---|---|
| Duración total | 10 semanas | 10 semanas | 0 |
| Esfuerzo total (h-h, P50) | ~800 (implícito) | ~960 (216 + 360 + 386 / sin buffer) o ~1240 con buffer | +160 h (con buffer) |
| Recursos asignados | 2 personas + PM | 2 + dev mid 50%-100% | +0.5 a 1 persona |
| Capacidad disponible total | 800 h (80 × 10) | 900 (con dev mid 50%) a 1100 h (con dev mid 100%) | suficiente con dev mid 100% |
| Margen efectivo | implícito | 15% sobre P50 con buffer ya incluido | viable pero ajustado |
Lectura: la propuesta de 10 semanas se mantiene como objetivo. Para cerrarla sin riesgo significativo, conviene asignar al Dev Mid a 100% desde el Nivel 2 y aplicar las mitigaciones propuestas en cada nivel.
Buffer y contingencia por nivel
| Nivel | Buffer aplicado | Razón |
|---|---|---|
| Nivel 1 | 15% | Refactor de código conocido, complejidad media. Tests bien definidos. |
| Nivel 2 | 20% | Servicios AWS nuevos (Feature Store, Model Registry, Model Monitor). Curva de aprendizaje. |
| Nivel 3 | 25% | Lógica de retraining automatizado es la pieza más compleja. Casos edge en drift detection. |
Dependencias críticas
Las siguientes dependencias bloquean el inicio de tareas posteriores:
| Dependencia | Bloquea | Notas |
|---|---|---|
| Schemas de inputs validados por AJE (DOC-AF-02) | Parametrización de los 3 scripts canónicos | Si AJE confirma que los datos de México y Perú llegarán al bucket, podemos completar la parametrización. Si no, hay riesgo |
| Datos disponibles para los 7 países en S3 | VT1 (pipeline corre 7 países sin intervención) | El gap actual de MX y PE bloquea VT1 (ver DOC-AF-02 riesgo #1) |
| Baseline cuantitativo del modelo actual | Gates de aprobación de modelo en Nivel 2 | Computar baselines durante sem 2-3 (Nivel 1) antes de empezar Nivel 2 |
| Permisos IAM adicionales (CloudTrail, KMS, etc.) | Componentes Nivel 3 (audit, encryption) | Confirmar en Touchpoint Nivel 3, no antes |
| Confirmación de scripts canónicos México (versión vigente) | Nivel 1 entero | Confirmar en Sesión 1 (propuesta dice TEST México es la versión correcta · validar) |
Recursos por rol · sumarizado
| Recurso | Horas P50 Niveles 1-3 | Horas con buffer | Porcentaje del proyecto |
|---|---|---|---|
| Squad Lead (Adrian) | 280 h (coordinación + arquitectura + handover) | 322 h | 27% |
| Dev Senior (Joseph) | 504 h (implementación principal) | 580 h | 49% |
| Dev Mid (asignar 100% Niveles 2-3) | 144 h | 166 h | 14% |
| PM (Sheila) | 40 h (seguimiento + sesiones) | 46 h | 4% |
| AJE (validaciones + sesiones) | 60 h (estimado, no es esfuerzo Tuxpas) | 60 h | 6% del esfuerzo del cliente |
Próximos pasos
- Sesión 2 (Mié 20-may) · presentar a AJE la estimación detallada con la decisión clave: ¿asignar Dev Mid a 100% desde Nivel 2 para cerrar el calendario sin overrun?
- Cláusula del proposal · si la estimación detallada justifica re-evaluación de tiempos/costos, se discute con AJE conforme a la cláusula "post-AF se puede re-evaluar".
- Antes del inicio del Nivel 2 · validar baselines computados durante Nivel 1 (no asumidos) para confirmar viabilidad de los gates de aprobación.
- Touchpoint Nivel 2 (Lun 15-jun) · re-validar estimación de Nivel 2 con aprendizajes de Nivel 1 (¿la parametrización tomó las 40 h estimadas o más?).
- Touchpoint Nivel 3 (Lun 6-jul) · igualmente re-validar Nivel 3 con aprendizajes de Niveles 1-2.