Proyectos
Case studyDesarrollo activo · NDA

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.

  1. 01

    Telemetría real desde sensores Doback Elite + Webfleet, parseada en pipeline declarativo

  2. 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

  3. 03

    Eventos críticos clasificados por reglas auditables; cada nota tiene trazabilidad completa de qué eventos la formaron

  4. 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

0+
Canales scoring
0
Blueprints Flask
0+
Reglas event detection

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.