Catálogo
Tuxpas S.A.C / AJE Group / Pedido Sugerido MLOps

Estimación de esfuerzo

Refinamiento de la propuesta v2 a horas-hombre por componente × país × nivel, con buffer y dependencias críticas
Código
DOC-AF-06
Fase
Análisis Funcional · sem 1 (18 → 22 may)
Fecha
2026-05-15
Autor
Adrian Ulloa · Squad Lead Tuxpas

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:

  1. Validar que la estimación inicial es viable dado el alcance detallado descubierto en el AF (DOC-AF-01, AF-02, AF-05).
  2. Identificar dependencias críticas que no pueden paralelizarse y fijan el camino crítico.
  3. 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:

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:

  1. Asignar Dev Mid a 100% durante Nivel 2 (no 50%) — agrega 60 h, cierra exacto. Costo: el Dev Mid no está 100% disponible.
  2. Reducir scope de Feature Store (1 Feature Group inicial en vez de 2) — ahorra ~20 h. Compromiso técnico aceptable si se justifica.
  3. 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:

  1. Reducir scope de Model Cards a campos mínimos (versión + training data + métricas) en lugar de "metadata completa" — ahorra ~10 h
  2. 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
  3. Sesiones de capacitación · 4 en lugar de 6 (combinar 1+2, 5+6) — ahorra ~8 h
  4. Dev Mid a 100% durante Nivel 3 también — agrega 60 h
  5. 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

  1. 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?
  2. 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".
  3. Antes del inicio del Nivel 2 · validar baselines computados durante Nivel 1 (no asumidos) para confirmar viabilidad de los gates de aprobación.
  4. 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?).
  5. Touchpoint Nivel 3 (Lun 6-jul) · igualmente re-validar Nivel 3 con aprendizajes de Niveles 1-2.