Auditoría de Calidad de Datos

LeadFlow · leads_pipeline_2026_q1.csv · Auditoría completa · 2026-06-12

508 filas · 15 columnas · Skill: auditor-calidad-datos v1.0

72
DQS Ajustado
Usable con caveats
⚠️
Veredicto: WARN — Usable con caveats documentados. El DQS base del profiler fue 92.7/100, pero tras análisis profundo de outliers y validación de dominio, el DQS ajustado es 72/100. Los problemas críticos en phone, deal_value_eur y probability_pct deben resolverse antes de entrenar el modelo de scoring.
Dimensiones DQS
87.3
Completeness
Peso 30%
100
Consistency
Peso 25%
55
Validity
Peso 20%
78
Uniqueness
Peso 15%
42
Timeliness
Peso 10%
Hallazgos Críticos (ranked por severidad × impacto)
phone P1 — Crítico
38.0%
193 de 508 filas sin teléfono. Patron MCAR confirmado — no correlaciona con segmento ni país. Origen probable: formularios de inbound donde el campo no es obligatorio.
No imputar. Investigar fuente. Considerar eliminar del feature set del modelo.
deal_value_eur P1 — Crítico
31 outliers
6.54% de filas con outliers IQR. Rango válido: [124€, 23.685€]. Detectados: deals negativos (-139€), deals a 0€ y deals >800K€. Media inflada artificialmente a 56.351€ (vs mediana ~11.800€).
Validar deals >50K€ con el equipo de ventas. Capping o log-transform para el modelo.
probability_pct P2 — Warning
Max: 140.5
Campo debe estar entre 0–100 por definición. Se detectaron valores hasta 140.5 (bug de formulario). ~10 filas afectadas. Pasó la detección de outliers porque la distribución general es amplia.
Capping hard a 100. Añadir constraint en el CRM. Validar con el equipo de producto.
last_activity_at P2 — Warning
~30 filas
Timestamps con fechas futuras (hasta dic 2026), causados por bug de integración con Zapier. Corrompen cualquier análisis de lag o velocidad de pipeline. Timeliness score: 42/100.
Filtrar fechas > hoy. Reportar bug a equipo de integraciones. Forward-fill desde created_at como fallback.
email P2 — Warning
Silent nulls
~25 emails con dominio "N/A" (ej: contact3@N/A.com). Null silencioso — no detectado como null por el profiler. El campo aparece completo pero los valores son inválidos.
Regex check: filtrar emails que no cumplan /^[^@]+@[^@]+\.[a-z]{2,}$/i. Reclasificar como null.
lead_id P3 — Info
21 duplicados
508 filas pero solo 487 lead_id únicos. 21 filas con PK duplicada (incluyendo 8 filas completamente duplicadas). Invalida joins y agrega métricas de conversión de forma incorrecta.
Dedup con keep='last' (estado más reciente del lead). Confirmar con data owner.
Risk Triggers Detectados
🔇
Silent Nulls
Emails con "N/A" como dominio. El profiler reportó 0% nulls en email, pero ~25 valores son inválidos.
DETECTADO
Leaky Timestamps
~30 filas con last_activity_at en el futuro (hasta dic 2026). Bug confirmado en integración Zapier.
DETECTADO
📊
Cardinality Explosion
lead_id y email tienen alta cardinalidad, pero son identificadores legítimos, no categorías. Sin riesgo real.
NO APLICA
🔑
Duplicate Keys
21 lead_id duplicados detectados. 8 filas completamente idénticas. Invalida joins de pipeline.
DETECTADO
🔗
Correlated Missingness
Los nulos en phone no correlacionan con segmento/país. Patrón MCAR — no hay MNAR oculto.
VERIFICADO — MCAR
📐
Domain Violations
probability_pct > 100 (max: 140.5), deal_value_eur < 0 (-139€). Valores fuera de dominio físico.
DETECTADO
Perfil por Columna
Estado Columna Tipo Nulos Únicos Rango / Top valores Observación
phone string
38.0%
309 +34 6XXXXXXXX MCAR — investigar origen
deal_value_eur float
6.7%
459 Min:-139€ Max:1.4M€ Med:~11.8K€ 31 outliers IQR · deals negativos · 0€
probability_pct float
0.0%
396 Min:0.8 Max:140.5 Media:49.3 Valores >100 — violación de dominio
last_activity_at string
0.0%
118 Rango: 2026-01 a 2026-12 ~30 fechas futuras (bug Zapier)
employees int
6.3%
9 Min:5 Max:5000 Media:762 51 outliers IQR (empresa 5000 empl.)
email string
0.0%
500 contact{n}@example.com ~25 silent nulls (@N/A.com)
lead_id string
0.0%
487 LD-00001…LD-00500 21 duplicados — PK no única
industry string
2.8%
8 Retail(77), SaaS(69), E-com(66) Impute mode + indicator
converted bool
3.5%
2 False(258), True(232) Target label — imputar con False (no convertido)
source string
0.0%
5 Partner(116), Outbound(104) Limpio
stage string
0.0%
7 Closed Lost(85), Qualified(79) Limpio
country / assigned_to string
0.0%
10 / 5 BR(71), MX(63) / Sofia Chen(107) Limpio
Plan de Remediacion Priorizado
# Prioridad Columna Accion Confianza
1 P1 lead_id
Deduplicar con keep='last'. Verificar PK única antes de cualquier join.
Impacto: agrega métricas de conversión incorrectas sin esto.
🟢 Verificado
2 P1 probability_pct
Capping hard a 100. Añadir validación en origen (CRM/Zapier). Registrar filas afectadas.
Impacto: el modelo aprende probabilidades imposibles como válidas.
🟢 Verificado
3 P1 deal_value_eur
Filtrar deals negativos (error de entrada). Validar deals >50K€ con equipo de ventas. Log-transform para el modelo. Imputar nulls con mediana + flag binario.
Impacto: media inflada 4.7x por outliers. El modelo sobreestima revenue esperado.
🟡 Probable
4 P1 last_activity_at
Filtrar fechas futuras (> 2026-06-12). Reportar bug a equipo de integraciones. Usar created_at como fallback para filas afectadas.
Impacto: features de velocidad de pipeline completamente rotos.
🟢 Verificado
5 P2 email
Regex validation. Reclasificar @N/A.com como null. Añadir validación de formato en el formulario de captación.
Impacto: ~25 filas con email inútil para cualquier enriquecimiento o dedup.
🟢 Verificado
6 P2 phone
No imputar (38% missing). Excluir del feature set del modelo. Investigar si es campo requerido en formularios de inbound.
Impacto: cualquier feature de contactabilidad basada en phone es inválida.
🟡 Probable
7 P3 industry, employees, converted
Imputar con mode/mediana + columna indicadora _was_null. Nivel de riesgo bajo.
Impacto menor en el modelo. Documentar asunción de imputación.
🟢 Verificado