Uso interno · No distribuir fuera de Kigo 30 de octubre de 2026

Dossier de datos · Vehicle Vision

Lectura de placa, marca, modelo y color
desde una sola foto

Estado de producción, impacto medido y decisiones que pedimos. Todos los números salen de producción: base de datos enforcement_kigo (mx-central-1), logs en Loki y buckets de evidencia en S3. Corte de datos: 30-oct-2026 18:30 UTC.

Resumen ejecutivo

  1. El problema ya no existe. El oficial tomaba una foto del vehículo y transcribía la placa a mano. Hoy esa misma foto se lee sola: placa, marca, modelo y color con su confianza, y la multa sale prellenada.
  2. Ya está en producción en tres frentes: enforcement (LPR + lectura interna de placa), officer-bff (app del oficial) y guard-bff (app de Seguridad). WhatsApp-pay va en PR abierto y Puebla queda para la siguiente.
  3. El cambio de motor tuvo un costo medible: la tasa de 404 pasó de 1.8% a 14.1%. Ya identificamos las dos causas y el fix entró en producción el 29-oct; falta medir su efecto (ver Hallazgos).
  4. Riesgo abierto: el motor no conserva la foto, y las trazas con evidencia bajó de 98.8% a 81.7%. El PR #285 ya está guardando 223 fotos LPR (117 MB) en los buckets de evidencia.

Números clave

1.24 Mtrazas LPR acumuladas desde julio-2025
5,207consultas LPR en el pico de un solo día
266 / 300coincidencia con el motor anterior (88.7%)
1.8% → 14.1%tasa de 404: de Geosek al motor nuevo
731lecturas de la ruta nueva desde el 13-oct
223fotos LPR ya guardadas en S3 (117 MB)
3,110verificaciones LPR al día en 14 municipios
4.5%de esas verificaciones ya usan la lectura con foto

1 · Volumen y tasa de error

Consultas LPR por día y tasa de 404
Cómo leerlo: el volumen de consultas LPR se mantiene estable y alto (2,000–5,200 al día; los fines de semana caen a ~100–300). La línea es la tasa de 404 que ve el oficial: 1.8% con Geosek y 14.1% con el motor nuevo. El fix #287 entra el 29-oct y la curva empieza a bajar (11.1% ese día).

2 · Qué se perdió y qué se recuperó

Porcentaje de trazas que conservan la foto y adopción de la ruta nueva
Cómo leerlo: a la izquierda, el porcentaje de trazas que conservan la foto — cae de 98.8% a 81.7% el 23-oct, porque el motor no guarda la imagen. A la derecha, la adopción de la ruta nueva recognize_plate_lpr: grew de 2 a 118 lecturas diarias en una semana, y su cobertura de foto pasó de 100% a 0%.
Causas del 404: lecturas dudosas y sin placa detectada
Cómo leerlo: el 404 no es un problema único. Se reparte entre lecturas marcadas como dudosas (~101 al día, que el código descartaba hasta el fix #287) y placas no detectadas (~83 al día, límite del motor de visión). Son dos problemas distintos con dos caminos distintos.

Hallazgos

Impacto · abierto

La regresión del 404 está medida y explicada

El cambio de motor (Geosek → kigo-vehicle-vision) en producción el 23-oct subió el 404 de 1.8% a 14.1%. Con logs de Loki separamos las dos causas: lecturas dudosas que el código descartaba (~10% del tráfico) y placas no detectadas (~6.5%). El fix que consulta la lectura dudosa entró el 29-oct. Falta medir 7 días completos para cerrar el hallazgo.

Riesgo · cadena de custodia

La foto dejó de guardarse en las trazas

El motor no conserva la imagen, así que las trazas con evidencia bajaron de 98.8% a 81.7% y la ruta nueva quedó en 0%. Para una multa esto es material de evidencia: sin foto no hay respaldo para una impugnación. El PR #285 ya escribe cada foto LPR en el bucket de evidencia del municipio — 223 fotos (117 MB) en 24 buckets.

Adopción

La ruta nueva se está adoptando rápido

recognize_plate_lpr arrancó el 13-oct con 2 lecturas y llegó a 118 el 23-oct: el oficial ya prefiere tomar la foto y confirmar la placa en pantalla en vez de transcribirla. Es el comportamiento que buscábamos.

Proyección · la foto se puede multiplicar ×4.5 sin crecer la carga

Hoy solo 4.5% de las verificaciones de la flota usan la lectura con foto. Apizaco ya va en 20.4% y Zapopan en 100% de su flujo. Si el resto de la flota llega al nivel de Apizaco, las lecturas con foto pasan de 139/día a 622/día; con un 40% serían 1,244/día. El motor es el mismo, el bucket es el mismo y no hay que crear infraestructura por municipio.

Proyección de lecturas con foto por día
Cómo leerlo: la barra de hoy (139 lecturas/día) es el estado real medido de la flota. Las otras tres barras son escenarios de adopción, no promesas: el motor ya procesa picos de 5,207 lecturas LPR/día en un solo día, así que el techo de capacidad está muy por encima de cualquiera de los escenarios.

Casos · Apizaco y Zapopan

Los dos municipios que se activaron con la tecnología nueva son la evidencia de que esto no solo no lastró el volumen: lo hizo crecer donde había Encendido.

Verificaciones LPR antes y después del cambio de motor por municipio
Cómo leerlo: ventanas de 8 días antes y después del 23-oct. Los municipios que ya operaban se mantienen o bajan (mediana ≈ −15%); el crecimiento de la flota (+27.5%) lo explican Apizaco (+333%) y Zapopan (+1550%), que se activaron con el motor nuevo. El 39% del incremento neto viene de esos dos municipios.

Apizaco

+333%

De 77 verificaciones/día (15-22 oct) a 332/día (23-30 oct). El 23-oct, el día del cambio de motor, su flujo migró de la consulta por placa a la lectura con foto: 518 lecturas el 23-oct y desde el 29-oct ya opera 100% con la ruta nueva (92 lecturas/día). Hoy 20.4% de su volumen usa la foto: es el municipio piloto de laFlota.

Zapopan

+1,550%

De 18 verificaciones en 8 días a 297. Zapopan no tiene consulta por placa: el 100% de su flujo es lectura con foto (42 lecturas/día de promedio en la última semana, con un pico de 222 el 26-oct). Es el caso de uso más limpio de la tecnología: el oficial manda la foto y la placa sale ya leída.

Porcentaje de verificaciones con lectura con foto por municipio
Cómo leerlo: porcentaje de verificaciones que ya usan la lectura con foto. Monterrey, con 2,351 verificaciones/día —el 75% de la flota—, está en 0.4%: es la mayor oportunidad individual y el siguiente paso natural.

Escalar · lo que cuesta hoy poner un municipio en el flujo

Antes (Geosek / LPR externo)Hoy (kigo-vehicle-vision)
Dependencia externaProveedor LPR por municipioNinguna — motor propio de Kigo
Infraestructura por municipioBucket propio (16 buckets kigo-prod-lpr-*, hoy descartados)Cero — se reutiliza el bucket de evidencia que ya se crea solo (24 buckets kigo-prod-enf-*)
ConfiguraciónCredenciales + bucket + verificación manual2 variables de entorno (VEHICLE_VISION_API_URL / _API_KEY)
Foto de evidenciaDependía del proveedor externoSe guarda en el bucket del municipio (PR #285, ya en prod: 223 fotos)
Lectura de marca, modelo y colorNo existíaEn la misma foto, con confianza y corrección por catálogo
Activación de un municipio nuevoSemanas (contrato + infra + verificación)Días (config + una ruta en el BFF)

La conclusión operativa: escalar el proyecto a más municipios dejó de ser un problema de infraestructura y pasó a ser un problema de configuración. Con la foto y la lectura de marca/modelo/color incluidas en el mismo flujo, el valor por municipio crece sin multiplicar el costo de despliegue.

Decisiones que pedimos

#DecisiónResponsableCuándoImpacto si no se hace
1 Llevar a producción el PR #285 (guardado de cada foto LPR en el bucket de evidencia del municipio) y cerrar el hueco de evidencia en las trazas. EnforcementAntes del 3-nov Multas sin foto de respaldo → riesgo en impugnaciones y auditorías.
2 Medir 7 días el efecto del fix #287 y cerrar formalmente el hallazgo del 404 (origen de la regresión). Enforcement + Observabilidad7-nov El oficial sigue escribiendo la placa a mano en ~1 de cada 7 consultas.
3 Habilitar Puebla (su BFF responde 501): agregar la ruta y liberar el alcance del municipality. officer-bff + infraAntes de la 2ª edición El municipio con mayor operación de foto sigue sin el beneficio.

Pendientes y riesgos

Anexo · Cómo se obtuvieron los datos

Base de datos

Esquema enforcement_kigo en el cluster nuevo (mx-central-1), tabla enf_agent_traces (search_type='lpr'). 1.24 M de trazas desde 2025-07-28. Lectura de solo SELECT.

Logs

Loki vía gcx sobre app="kigo-enforcement": serie diaria de status-lpr y responded with 404, más los mensajes LPR read needs review y No plate detected in LPR result.

Almacenamiento

S3 con perfil kigo-prod-x (mx-central-1): 24 buckets kigo-prod-enf-*, ~16.8 K objetos de evidencia y 223 fotos bajo el prefijo lpr/.

Corte de datos: 30-oct-2026 18:30 UTC. Las tasas de 404 provienen de la muestra de Loki (no del 100% del tráfico): el ratio es válido porque numerador y denominador salen de la misma muestra, pero no debe leerse como porcentaje sobre el total de consultas LPR de la base (que es ~9× mayor).