Isaac Martínez Ríos

Del dato a la decisión.From data to decision.

Soy Isaac Martínez Ríos, analista y científico de datos. Tomo una pregunta de negocio y la llevo hasta una respuesta concreta: cuánto pedir de cada producto, en qué cadena sale más barata la canasta, cuántas bicicletas mover y a qué hora.

I'm Isaac Martínez Ríos, a data analyst and data scientist. I take a business question all the way to a concrete answer: how much of each product to order, which chain sells the cheapest food basket, how many bikes to move and when.

Figura 1. Las 537 estaciones de ECOBICI según su balance de viajes entre julio y septiembre de 2026. En azul, las que pierden bicicletas porque salen más viajes de los que llegan; en ocre, las que las acumulan. El tamaño indica la magnitud. Figure 1. The 537 ECOBICI stations by trip balance, July to September 2026. Blue stations lose bikes because more trips leave than arrive; ochre ones pile them up. Size shows magnitude. Fuente: datos abiertos de ECOBICI, 4.46 M de viajes. Análisis propio. Source: ECOBICI open data, 4.46 M trips. Own analysis.

Casos de estudioCase studies

Tres proyectos completos, cada uno con su pregunta, sus datos, un modelo que se compara contra una línea base y lo que el análisis no permite afirmar.

Three end-to-end projects, each with its question, its data, a model measured against a baseline, and what the analysis cannot claim.

Área
Field
Cadena de suministro
Supply chain
Datos
Data
M5 Forecasting (Walmart), 1,429 productos, 2011–2016
M5 Forecasting (Walmart), 1,429 products, 2011–2016
Stack
Python · LightGBM · statsforecast · DuckDB · GitHub Actions

Pronóstico de demanda y política de inventarioDemand forecasting and inventory policy

¿Cuánto vamos a vender de cada producto en las próximas cuatro semanas, y cuánto inventario hace falta para cumplir un 95 % de nivel de servicio sin sobre-stock?

How much of each product will we sell over the next four weeks, and how much inventory do we need to hit a 95% service level without overstocking?

Un modelo de demanda por producto se traduce en safety stock, punto de reorden y cantidad a pedir. Después, la política se simula día a día contra demanda real que el modelo no vio. Con el mismo nivel de servicio, necesita 14 % menos inventario que una política clásica de media móvil.

A per-product demand model becomes safety stock, reorder point and order quantity. The policy is then simulated day by day against real demand the model never saw. At the same service level it needs 14% less inventory than a classic moving-average policy.

    Figura 2. Inventario promedio necesario para cada fill rate, con 7 días de lead time. Más abajo es mejor. Figure 2. Average inventory needed for each fill rate, with a 7-day lead time. Lower is better. Fuente: simulación de 12 semanas fuera de muestra, tienda CA_1. Source: 12-week out-of-sample simulation, store CA_1.
    Área
    Field
    Precios y consumo
    Prices and consumers
    Datos
    Data
    Quién es Quién en los Precios (PROFECO), 35.6 M de precios, ene 2024 – jul 2026
    PROFECO "Quién es Quién en los Precios", 35.6 M prices, Jan 2024 – Jul 2026
    Stack
    Python · DuckDB · dbt · PostgreSQL · GitHub Actions

    Precios de la canasta QQPThe QQP food basket

    ¿Cuánto cuesta la misma canasta de 16 alimentos en distintas cadenas y municipios, y cuánto puede ahorrar una familia al elegir bien la tienda?

    How much does the same 16-item food basket cost across chains and cities, and how much can a household save by picking the right store?

    Un pipeline reproducible lleva los archivos abiertos de PROFECO a un modelo dimensional con pruebas en cada paso y genera un dashboard sin servidor. Elegir bien la tienda vale entre 48 y 64 pesos por canasta y semana, y cinco productos frescos explican el 73 % de la diferencia.

    A reproducible pipeline turns PROFECO's open files into a tested dimensional model and builds a serverless dashboard. Picking the right store is worth 48 to 64 pesos per basket per week, and five fresh items explain 73% of the gap.

    Figura 3. Costo mediano semanal de la misma canasta de 16 alimentos, en pesos. El eje no empieza en cero para mostrar la distancia entre cadenas. Figure 3. Median weekly cost of the same 16-item basket, in pesos. The axis does not start at zero, to show the gap between chains. Fuente: PROFECO, 135 semanas, comparaciones pareadas por municipio y semana. Source: PROFECO, 135 weeks, comparisons paired by city and week.
    Área
    Field
    Movilidad urbana
    Urban mobility
    Datos
    Data
    Histórico abierto de ECOBICI y feed GBFS, 4.46 M de viajes, jul–sep 2026
    ECOBICI open trip history and GBFS feed, 4.46 M trips, Jul–Sep 2026
    Stack
    Python · DuckDB · scikit-learn · Streamlit · GitHub Actions

    ECOBICI: dónde faltan bicicletas y a qué horaECOBICI: where bikes run out, and when

    ¿Qué estaciones se quedan sin bicicletas, en qué franjas, y cuántas convendría mover y desde dónde para reducir el desabasto?

    Which stations run out of bikes, at what times, and how many bikes should be moved, and from where, to reduce shortages?

    Un modelo de demanda por estación y hora supera a la línea base y casi elimina su sesgo. Encima, un algoritmo de rebalanceo propone 117 movimientos que evitarían cerca del 22.6 % del desabasto estimado en la ventana evaluada.

    A per-station, per-hour demand model beats the baseline and nearly removes its bias. On top of it, a rebalancing algorithm proposes 117 moves that would avoid about 22.6% of the estimated shortage in the evaluated window.

      Figura 4. Viajes promedio por estación en cada hora del día. Las franjas sombreadas marcan los picos de las 8:00 y de 17:00 a 18:00. Figure 4. Average trips per station for each hour of the day. Shaded bands mark the peaks at 8:00 and from 17:00 to 18:00. Fuente: datos abiertos de ECOBICI, julio a septiembre de 2026. Source: ECOBICI open data, July to September 2026.

      Cómo trabajoHow I work

      Los tres casos siguen el mismo método. Cualquiera puede reproducirlos con un solo comando, y cada cifra sale de un reporte que está en el repositorio.

      All three cases follow the same method. Anyone can reproduce them with a single command, and every number comes from a report kept in the repository.

      PreguntaQuestion

      Empiezo por la decisión que alguien tiene que tomar y por la métrica que diría si salió bien.

      I start from the decision someone has to make and the metric that would tell whether it went well.

      DatosData

      Ingesta automatizada, reglas de calidad y un contrato de datos. Si la fuente llega incompleta, el pipeline se detiene en lugar de publicar a medias.

      Automated ingestion, quality rules and a data contract. If the source arrives incomplete, the pipeline stops instead of publishing half the data.

      ModeloModel

      Siempre contra una línea base, evaluado en un periodo que el modelo no vio. Si una media móvil gana en un segmento, lo digo.

      Always against a baseline, scored on a period the model never saw. If a moving average wins in some segment, I say so.

      DecisiónDecision

      El resultado se traduce a algo accionable: pesos, piezas, bicicletas. Lo acompaña una lista explícita de lo que no se puede afirmar.

      The result is translated into something actionable: pesos, units, bikes. It comes with an explicit list of what cannot be claimed.

      ArchivoArchive

      Dashboards anteriores de Business Intelligence en Tableau y Looker Studio.

      Earlier Business Intelligence dashboards in Tableau and Looker Studio.

      Vista previaPreview ProyectoProject HerramientaTool EnlaceLink
      Ventas de una pizzeríaPizza restaurant sales Dashboard ejecutivo con KPIs y tendencias de venta. Análisis escrito Executive dashboard with sales KPIs and trends. Written analysis Tableau VerView
      Ventas de chocolateChocolate sales Productos, tendencias en el tiempo y métricas de rendimiento. Products, trends over time and performance metrics. Tableau VerView
      Perfil de usuarios webWeb user profile Demografía, comportamiento y segmentación a partir de Google Analytics. Demographics, behavior and segmentation from Google Analytics. Looker Studio VerView
      Freshmart Inventario, ventas y rendimiento por categoría de un supermercado. Inventory, sales and category performance for a supermarket. Looker Studio VerView

      Sobre míAbout

      Isaac Martínez Ríos con toga y estola de la UNAM frente a la Biblioteca Central de Ciudad Universitaria
      Ciudad Universitaria, UNAM.
      Ciudad Universitaria, UNAM.

      Estudié Administración de Empresas en la UNAM. De ahí viene mi manera de trabajar: un análisis está terminado cuando alguien puede tomar una decisión con él.

      I studied Business Administration at UNAM. That shapes how I work: an analysis is done when someone can make a decision with it.

      Después me especialicé en Business Intelligence y análisis de datos, y hoy trabajo en todo el ciclo: ingesta y calidad de datos con DuckDB, dbt y PostgreSQL; modelos de pronóstico y clasificación con Python y scikit-learn; y dashboards que publico de forma automática.

      I then specialized in Business Intelligence and data analysis, and today I work across the whole cycle: data ingestion and quality with DuckDB, dbt and PostgreSQL; forecasting and classification models with Python and scikit-learn; and dashboards that publish themselves.

      FormaciónEducation

      • Licenciatura en Administración de EmpresasB.A. in Business AdministrationUNAM2020–2024
      • Diplomado en Transformación Digital en NegociosDiploma in Digital Business TransformationREDEC UNAM · 245 horasREDEC UNAM · 245 hours2024

      Rutas completadas en PlatziCompleted Platzi paths

      232 cursos aprobados y 21 rutas completadas. Ver perfil completo

      232 courses passed and 21 paths completed. See full profile

      ¿Tienes una pregunta que los datos puedan responder?Got a question data could answer?

      isaac.amr15@gmail.com