View in English

Proyectos

Sistemas que construí

Cuatro productos, escritos como los explicaría en una entrevista: cuál era la restricción, qué elegí y qué me costó esa elección.

ApiFuel

Gestión y despacho de leads · 2012 — 2025

Operado entre 2012 y 2025

apifuel.com

Ingesta leads y despacha cada uno a múltiples APIs de compradores. Lo interesante no es la tasa de peticiones: es que cada lead se multiplica en varias llamadas salientes.

Carga entrante probada
~10k peticiones en ~4 minutos
Workers salientes
~300 por instancia
Flota máxima
~30 instancias (tope 50)
Tipo de instancia
AWS t4g.small

La restricción que definió todo

Un lead entra una vez y sale varias: cada uno se despacha a múltiples APIs de compradores, y cada una puede fallar, demorarse o rechazar de forma independiente. Eso hace que la capacidad sea función de la concurrencia saliente, no de cuántas peticiones entran por segundo. Optimizar el throughput de entrada habría resuelto el problema equivocado.

Tres arquitecturas, el mismo producto

PHP nativo, construido para rendimiento bajo hosting compartido (2012). Después AWS Lambda y API Gateway (2016), cambiando administración de servidores por escalado gestionado y aceptando cold starts. Después una reconstrucción de la capa de despacho en TypeScript con BullMQ y Redis Cluster (2025), porque la semántica de colas y la visibilidad que el stack anterior no daba pasaron a ser el requisito.

Escalar antes de la demanda en lugar de reaccionar

Una t4g.small nueva tarda entre uno y dos minutos en estar lista, y los picos que diseñé duran unos cuatro. Un autoscaler reactivo entregaría capacidad cuando el pico ya terminó. Por eso un controlador observa la concurrencia en vivo y provisiona workers por delante de la curva, con el umbral calibrado a partir de pruebas de carga en vez de estimado. El tope de cincuenta instancias es un guardrail de costo, no un límite técnico.

Cómo se obtuvieron los números

Campañas automatizadas enviando POSTs, con concurrencia, profundidad de cola y conexiones a base de datos leídas desde CloudWatch, Bull Board y PgBouncer. Fue una prueba de carga, no tráfico de clientes — la distinción importa y la mantengo explícita.

PHP · TypeScript · AWS Lambda · API Gateway · BullMQ · Redis Cluster · PostgreSQL · PgBouncer

ArticleAI

Plataforma SaaS de contenido · Construida y publicada en solitario

Construido y operado

articleai.io

Un producto comercial completo: front end, back end, API, licenciamiento y un plugin de WordPress que lo distribuye.

Qué hace

Genera artículos orientados a SEO de forma automática, con múltiples formatos de exportación, detrás de una interfaz en React y TypeScript sobre un back end MySQL y una API propia.

La parte que casi todos saltean

Un SaaS no es solamente la aplicación. Necesita distribución, y eso vino del plugin oficial ArticleAI Fetcher publicado en wordpress.org — una vía de instalación para quien ya usa WordPress, en lugar de otro embudo de registro que construir.

React · TypeScript · MySQL · plugin de WordPress

DialReveal

Detección de llamadas spam · Plataforma integrada

Construido y operado

dialreveal.com

Tres fuentes externas poco confiables — eventos de telefonía, datos públicos de reclamos y scraping — normalizadas en una sola señal sobre la que el cliente puede actuar.

Normalizar tres fuentes malas en una buena respuesta

Twilio aporta eventos de llamada, la FTC aporta datos de reclamos, y el scraping cubre los huecos entre ambas. Cada fuente tiene su latencia, su idea de qué es un número de teléfono y su manera de estar temporalmente caída. El producto es la reconciliación, no las integraciones.

El comercio adentro

El acceso se vende con Stripe detrás de un panel, lo que significa que la superficie de integración incluye el estado de facturación, no solo la lógica de detección.

PHP · Twilio · Stripe · MySQL · jQuery

Opticaz

Sistema de gestión para optometría · Sistema multi-cliente

Sigue en operación, bajo mi administración

Una API REST detrás de tres clientes: aplicación web, app Android y panel administrativo.

Una API, tres consumidores

Turnos, inventario, clientes y reportes, servidos a una aplicación web, un cliente Android nativo y un panel de administración. El contrato de la API tenía que ser lo bastante estable como para que tres interfaces independientes avanzaran sin pisarse.

PHP · MySQL · REST · Android

Además

El código de todos estos proyectos es privado, y la mayoría ya no está bajo mi administración. Lo que sigue describe qué construí y las decisiones detrás — sin código de clientes, credenciales ni datos confidenciales.