Ideas que acabaron en código.

Una selección de productos, sistemas de datos y PoCs. Unos resuelven problemas; otros existen para entenderlos mejor. Todos enlazan a su repositorio.

Talktor

Un tutor de inglés para conversaciones cortas por voz o texto con feedback estructurado.

¿Qué se resuelve?

Practicar un idioma por tu cuenta es fácil; saber qué corregir, no tanto. Muchas herramientas interrumpen constantemente la conversación o devuelven comentarios demasiado genéricos para mejorar en el siguiente intento.

¿Cómo?

Una interfaz en Next.js simplifica la práctica por voz o texto, mientras FastAPI y WebSockets gestionan la conversación en tiempo real. OpenAI se ocupa de la voz y el análisis, y PostgreSQL guarda las sesiones para dar contexto al feedback y poder repetir la práctica.

Stack relevante

  • FastAPI
  • Next.js
  • PostgreSQL
  • OpenAI Realtime
  • WebSockets
  • Docker

Agentic PoC Framework

Una base full stack reutilizable para construir PoCs con agentes de código.

¿Qué se resuelve?

Una PoC puede construirse rápido y aun así resultar imposible de continuar una semana después. Los comandos quedan en el historial de un terminal, las decisiones no se documentan y los agentes de código no tienen suficiente contexto para modificar el proyecto con seguridad.

¿Cómo?

Una base reutilizable con FastAPI y Next.js empaqueta la aplicación con Docker y ofrece comandos predecibles mediante Make. Los tests y la CI protegen los cambios; los ADRs, runbooks e instrucciones acotadas explican cómo funciona el sistema y hasta dónde puede actuar cada agente.

Batch, streaming y dbt sobre GCP

Implementación de un data warehouse sencillo y escalable desde cero para empezar con data analytics, batch y streaming.

¿Qué se resuelve?

Una empresa recibe parte de sus datos de forma continua y otra parte en ficheros programados. Cuando ambos caminos se construyen por separado, la información puede llegar tarde, contarse dos veces o dar respuestas distintas según el dashboard.

¿Cómo?

Pub/Sub y Dataflow procesan los eventos según llegan, mientras Cloud Storage cubre las cargas batch. Ambos caminos convergen en BigQuery, donde dbt genera modelos consistentes; Composer orquesta el flujo y Looker Studio consume la capa de reporting. Los servicios gestionados de GCP permiten reproducir la plataforma sin mantener infraestructura innecesaria.

E2E Shop PipeDash

Un pipeline de comercio desde los datos de origen hasta dashboards de ventas, clientes e inventario.

¿Qué se resuelve?

Los datos de ventas, clientes e inventario suelen llegar desde sistemas distintos y en momentos diferentes. Sin un recorrido fiable, los informes no coinciden y los equipos dedican más tiempo a cuadrar cifras que a decidir qué hacer con ellas.

¿Cómo?

AWS Lambda y S3 reciben y almacenan los datos de origen; Glue y Airflow preparan y coordinan el procesamiento, y Snowflake sirve como capa analítica. Varias validaciones detienen los datos incompletos antes de que lleguen a un dashboard de Tableau centrado en ventas, clientes y stock.

Una capa conversacional para dbt

Un sistema de retrieval que aporta a agentes LLM el contexto de un proyecto dbt real.

¿Qué se resuelve?

Un proyecto grande de dbt contiene mucho conocimiento útil, pero está repartido entre modelos, dependencias, configuración y documentación. Un asistente genérico no puede responder bien si no entiende esas relaciones y puede proponer con demasiada seguridad cambios que rompan el proyecto.

¿Cómo?

El sistema analiza el repositorio y extrae relaciones entre modelos y convenciones del proyecto para guardarlas en ChromaDB. Un flujo RAG recupera solo el contexto relevante para varios agentes especializados, mientras Streamlit ofrece una interfaz sencilla sin enviar todo el código al modelo en cada consulta.

Análisis de reseñas de clientes

Una aplicación para analizar sentimiento, temas y patrones en reseñas de clientes.

¿Qué se resuelve?

Las reseñas de clientes contienen quejas repetidas, peticiones y señales positivas, pero leerlas una por una no escala. Además, cada persona escribe de forma distinta, por lo que un simple recuento de palabras puede ocultar los patrones realmente útiles.

¿Cómo?

Un pipeline de limpieza normaliza el texto antes de combinar sentimiento, análisis de temas y embeddings para agrupar opiniones relacionadas. Los resúmenes opcionales con LLM convierten esos grupos en hallazgos legibles y una aplicación Streamlit permite que una persona no técnica explore la evidencia.

Stack relevante

  • Python
  • NLP
  • scikit-learn
  • Embeddings
  • OpenAI
  • Streamlit

Framework de A/B testing

Un flujo reutilizable para diseñar, validar y analizar experimentos.

¿Qué se resuelve?

Un test A/B puede mostrar una mejora convincente y aun así llevar a una mala decisión. Una muestra pequeña, grupos desbalanceados o una prueba estadística inadecuada pueden hacer que una variación normal parezca un cambio real en el producto.

¿Cómo?

El flujo en Python comprueba primero el diseño de la muestra y la calidad de los datos para después elegir el test adecuado. Junto a la métrica principal muestra intervalos de confianza y resultados por segmento, de forma que la conclusión incluya la incertidumbre y qué grupos explican el cambio.

Stack relevante

  • Python
  • pandas
  • SciPy
  • statsmodels
  • Experimentation
  • Jupyter

Flujo de forecasting

Un flujo que compara baselines, modelos estadísticos y machine learning.

¿Qué se resuelve?

Un modelo de forecasting complejo no es automáticamente útil. Si se compara mal contra los datos históricos, puede parecer preciso y fallar justo en el siguiente periodo, además de costar mucho más de mantener que un baseline sencillo.

¿Cómo?

El flujo revisa la serie temporal, establece baselines simples y los compara con modelos estadísticos y de machine learning. La validación walk-forward reproduce cómo habría funcionado cada predicción en la práctica, y el stacking solo se contempla cuando la mejora medible compensa la complejidad adicional.

Stack relevante

  • Python
  • Time series
  • statsmodels
  • XGBoost
  • Validation
  • Jupyter

¿Hablamos?

Un problema, una propuesta o solo ganas de hablar de datos: cualquiera de las tres es buena razón para escribirme.

eduardoalmazang@gmail.com