EN ← Volver al Portafolio

Contacto Legislativo

Una plataforma de tecnología cívica que transformó información legislativa pública en indicadores de desempeño y paneles accesibles para la ciudadanía, centrada en la Cámara de Diputados de México.

Rol Desarrollador Principal
Estado Archivado
Tipo Tecnología Cívica
Web Scraping Ingeniería de Datos ETL Desarrollo Backend Tecnología Cívica Visualización de Datos

El Problema

La información legislativa pública en México estaba técnicamente disponible pero era prácticamente inaccesible. Los ciudadanos que querían entender a sus representantes enfrentaban un panorama fragmentado de sitios web gubernamentales, formatos de documentos inconsistentes y ninguna vista consolidada del desempeño.

Preguntas básicas no tenían respuesta sencilla:

  • ¿Quién representa a mi distrito?
  • ¿Qué tan activo es mi representante?
  • ¿Qué iniciativas ha presentado?
  • ¿Está cumpliendo con los requisitos de transparencia?

Responder cualquiera de estas preguntas requería navegar múltiples sitios gubernamentales y revisar documentos manualmente — una barrera que en la práctica mantenía a los ciudadanos desconectados de su propio proceso legislativo. El objetivo era consolidar y simplificar el acceso a esta información.

Arquitectura del Pipeline de Datos

La plataforma fue construida alrededor de un pipeline de datos automatizado que llevaba los datos gubernamentales en bruto a través de varias etapas de procesamiento antes de llegar a la ciudadanía.

Fuentes Oficiales de la Cámara de Diputados
Web Scrapers
Extracción de Datos
Normalización de Datos
Modelo de Datos Unificado
Generación de Métricas
Paneles y Reportes para Ciudadanos

Ingeniería de Datos

El componente técnicamente más significativo de la plataforma fue el pipeline de datos automatizado. Los scrapers personalizados recopilaban información legislativa directamente de fuentes públicas oficiales — sin ninguna API ni feed de datos estructurado disponible.

La información extraída pasaba por un proceso ETL de múltiples etapas antes de almacenarse en el modelo de datos unificado utilizado en toda la aplicación:

Extracción

Scrapers personalizados navegaban sitios gubernamentales para recopilar datos legislativos en bruto, manejando paginación, estado de sesión y marcado inconsistente en distintos periodos.

Limpieza y Validación

Los datos en bruto eran validados por completitud y consistencia. Los campos faltantes, registros duplicados y anomalías de formato se detectaban y resolvían antes de la transformación.

Normalización

Los datos de diferentes periodos legislativos y formatos fuente se mapeaban a modelos de dominio canónicos, permitiendo consultas unificadas en todo el historial del dataset.

Enriquecimiento y Métricas

Se calculaban indicadores derivados de los datos normalizados — puntuaciones de actividad, tasas de cumplimiento de transparencia y mapeos de distrito que no existían en ningún sistema fuente.

Desafíos Técnicos

Sitios Gubernamentales No Diseñados para Automatización

Los sitios web públicos estaban construidos para consumo humano. Las páginas dependían de estado de sesión, renderizado con JavaScript, estructura HTML inconsistente entre periodos legislativos y no tenían identificadores estables para los registros — haciendo que la extracción automatizada fuera poco confiable.

Solución

Se desarrolló lógica de extracción personalizada por fuente, capaz de navegar estructuras inconsistentes, mantener contexto de sesión y recuperarse con gracia de fallos parciales sin corromper el dataset.

Formatos de Datos Inconsistentes entre Periodos Legislativos

La información aparecía en diferentes formatos dependiendo del periodo legislativo y de qué sección del sitio provenía. El mismo diputado podía aparecer con distintas grafías en su nombre, códigos de distrito o afiliaciones de partido en distintas fuentes.

Solución

Se creó una capa de normalización con reglas de mapeo explícitas y un modelo de dominio canónico que reconciliaba la identidad entre fuentes, permitiendo consultas confiables entre periodos.

Métricas Derivadas que No Existían en los Sistemas Fuente

Los indicadores ciudadanos — puntuaciones de actividad, tasas de cumplimiento de transparencia, conteos de iniciativas por categoría — no estaban disponibles en ninguna parte. Debían calcularse a partir de los datos en bruto recolectados mediante lógica de negocio específica del dominio.

Solución

Se diseñó una capa de generación de métricas que calculaba todos los indicadores derivados desde el modelo de datos unificado, separando la lógica de negocio del almacenamiento y facilitando la evolución de las definiciones de métricas.

Métricas y Analítica

Todos los indicadores ciudadanos fueron generados por la plataforma a partir de datos de actividad legislativa procesados — ninguno existía como punto de datos listo para usar en los sistemas fuente.

📊
Porcentaje de diputados sin iniciativas registradas
Tasa de cumplimiento de declaración de transparencia
📋
Indicadores de actividad legislativa por diputado
📁
Conteo de iniciativas por categoría y periodo
🏛️
Participación en comisiones y asistencia
📍
Consulta de representación por distrito

Impacto

La plataforma transformó información pública fragmentada en análisis cívico accesible. Por primera vez, los ciudadanos podían responder preguntas básicas sobre sus representantes sin navegar la burocracia gubernamental.

Los ciudadanos podían identificar a su representante, revisar su actividad legislativa, consultar indicadores de rendición de cuentas y verificar el cumplimiento de transparencia — todo en un solo lugar.

El resultado fue una reducción significativa del esfuerzo necesario para entender el desempeño de los representantes, mejorando directamente el acceso a información pública para la ciudadanía común.

Aunque el proyecto está archivado, demostró que la tecnología cívica puede tender puentes entre los datos gubernamentales públicamente disponibles y los ciudadanos a quienes representan — un modelo aplicable a cualquier jurisdicción con registros legislativos abiertos.

Contacto Legislativo — pantalla de búsqueda de diputado por distrito
Contacto Legislativo — indicador de financiamiento de partido e iniciativas cívicas
Contacto Legislativo — infografía promocional original con estadísticas de actividad legislativa

Material promocional histórico utilizado durante la fase activa de Contacto Legislativo.

Tecnologías y Arquitectura

Recolección de Datos
Scrapers Personalizados Automatización HTTP Parsing de HTML
Procesamiento
Pipelines ETL Normalización de Datos Modelado de Dominio Cálculo de Métricas
Backend
Java Spring REST APIs
Persistencia
Base de Datos SQL Modelado Relacional
Presentación
Aplicación Web Paneles de Control Visualización de Datos Reportes

Aprendizajes

1
Los scrapers resilientes requieren diseño defensivo desde el principio. Los sitios gubernamentales cambian sin previo aviso. Construir lógica de extracción que falle de forma visible — en lugar de producir silenciosamente datos corruptos — es esencial para cualquier operación de scraping de largo plazo.
2
Los datasets públicos imperfectos requieren contratos de datos explícitos. Trabajar con datos gubernamentales reales significa aceptar la inconsistencia como punto de partida. Definir reglas de normalización explícitas y modelos canónicos desde el inicio evita que esas inconsistencias se filtren a la lógica de la aplicación.
3
Los pipelines ETL deben ser probables de forma independiente. Cada etapa del pipeline — extracción, normalización, enriquecimiento — debe ser verificable de forma aislada. Acoplar etapas hace casi imposible diagnosticar dónde se originan los problemas de calidad de datos.
4
Traducir datos complejos en métricas simples es el problema de producto más difícil. El reto de ingeniería no es el pipeline — es decidir qué indicadores importan a los ciudadanos y cómo presentarlos sin distorsionar los datos subyacentes. El conocimiento del dominio y la perspectiva del usuario son tan importantes como la habilidad técnica.
5
La tecnología puede mejorar significativamente la participación cívica. Hacer que la información pública sea genuinamente accesible — no solo técnicamente disponible — cambia la forma en que los ciudadanos interactúan con su gobierno. El mismo patrón aplica a cualquier dominio donde existan datos abiertos en bruto pero ninguna interfaz usable.