Sistema de evaluación competitiva
Motor de scoring parametrizable sobre telemetría real para oposición pública de conductores.
- Cliente
- Cliente bajo NDA
- Año
- 2025–2026
- Rol
- Developer
- Stack
- Python 3.12 · Flask 3 · SQLAlchemy 2
01 — El problema
Una administración pública necesita evaluar conductores candidatos en condiciones reales — no en simulador. Cada candidato hace una ruta con un vehículo instrumentado, y al final hay que producir un ranking objetivo, auditable y defendible ante un tribunal. Cualquier sesgo o decisión automática puede invalidar la oposición.
02 — El enfoque
Cómo lo construí, pieza por pieza.
- 01
Telemetría real desde sensores Doback Elite + Webfleet, parseada en pipeline declarativo
- 02
Motor de scoring parametrizable: cada canal (GPS, estabilidad, frenado, rotativo) tiene su fuente declarada y su política de fallback — la administración configura sin tocar código
- 03
Eventos críticos clasificados por reglas auditables; cada nota tiene trazabilidad completa de qué eventos la formaron
- 04
El sistema prepara el ranking pero NO decide — un tribunal humano califica APTO/NO APTO sobre el ranking final, cumpliendo GDPR art. 22
03 — Decisiones técnicas
Cada decisión tiene un porqué.
Python/Flask en lugar de seguir con Node
El equipo de cliente ya tenía rutinas Python y SQLAlchemy con GeoAlchemy2. Alinear stack reduce fricción operativa y permite que CMadrid lo mantenga internamente.
Scoring Source Engine declarativo
Cada canal declara su origen (sensor primario, fallback secundario, política si ambos fallan). Esto permite cambiar la fuente sin re-deploy, y deja el config versionado en BD — auditable.
Validación humana obligatoria
El cumplimiento GDPR art. 22 prohíbe decisiones automatizadas con efectos jurídicos. El sistema deliberadamente presenta el ranking y obliga a un humano a firmar.
04 — Los números
05 — Lo que aprendí
Lecciones que me llevo.
- En dominios regulados, lo que NO hace el sistema es tan importante como lo que sí hace.
- Scoring parametrizable + versionado de configs en BD = auditoría futura sin pesadilla.
- Cuando hay un tribunal del otro lado, cada decisión técnica necesita una respuesta clara a '¿quién es responsable?'.
Stack completo
- Python 3.12
- Flask 3
- SQLAlchemy 2
- GeoAlchemy2 + PostGIS
- Celery
- Flask-SocketIO
- Redis
- pytest
- Playwright
Siguiente caso
DobackSoft V3
SaaS multi-tenant de telemetría vehicular para flotas profesionales y servicios de emergencia.