Código público y funcional, no una diapositiva de portafolio: herramientas de planificación de cadena de suministro, un sistema de configuración de IA, una app de dictado por voz offline, y el design system con el que esta misma página está construida. Elige una tarjeta para ver qué hace de verdad.
Supply chain resilience control tower — risk radar, what-if simulation (time-to-recover / time-to-survive), and mitigation ranking. No dependencies to install; the dashboard is one self-contained HTML file.
git clone https://github.com/LaviSahu/resilience-radar.git# risk_score = likelihood(1-5) * impact(1-5), range 1-25.
TIER_THRESHOLDS: list[tuple[int, RiskTier]] = [
(20, RiskTier.CRITICAL),
(12, RiskTier.HIGH),
(6, RiskTier.MEDIUM),
(1, RiskTier.LOW),
]
def likelihood_score(event: Event, classification: Classification) -> int:
"""1-5, from event confidence (0-1) plus a source-reliability adjustment."""
base = event.confidence * 5
adjustment = SOURCE_RELIABILITY_ADJUSTMENT.get(classification.source_category, 0)
return _clamp(base + adjustment, 1, 5)src/resilience_radar/scoring.py — classic likelihood × impact risk scoring, plus a per-source reliability adjustment (geopolitical/regulatory signals score noisier than, say, a supplier or logistics event).
Every animation on the rebuilt pages
The merge-conflict resolutions of 2026-09-19
The twin's system prompt
Each repo description (2 of 8 carry verbatim code excerpts)
Everything the twin tells you
Whether anyone has ever used these repos
La tercera columna es la honesta. Se vacía solo cuando lo hace el vacío — no antes.
Tres herramientas en vivo — simulador de escenarios, calculadora de inventario, gráfico de efecto látigo. Sin diapositivas, sin humo: cada cifra se calcula en tu navegador mientras mueves las palancas.
Esto no es un chatbot incrustado. Es una Cloudflare Pages Function llamando a Workers AI directamente — fijada al origen de este dominio, con límite de tasa por IP, con un system prompt que le dice que diga 'no lo sé' en vez de inventar un nombre de cliente o un número. Pregúntale algo sobre S&OP o planificación de inventario.
Una demo: un modelo de lenguaje con un prompt corto en mi voz. Puede estar equivocado con total confianza — no actúes según lo que diga. Pregúntale sobre S&OP, IBP, o9, inventario.
Pregunta lo que quieras sobre planificación. El gemelo responde en mi voz.
Autoevaluación del gemelo — Tono: cercano. Hechos: sin verificar por nadie, incluido yo. Modelo: @cf/meta/llama-3.3-70b-instruct-fp8-fast, limitado a 512 tokens, instruido para decir "no lo sé" en vez de inventar un nombre de cliente o un número. Una barrera de protección, no una garantía.
Generado por IA · no sustituye al Lavi real
Every card below is a real VengeanceUI port — working code, not a screenshot. Exactly one of them, VeCreepy, is actually load-bearing right now: it's the Connect link in this site's own footer. The other twenty-seven are verified to render, not yet asked to carry a real page's weight. Same rule as the build log above — a component only counts as shipped once it's doing a job, not once it looks good in a gallery.
Not case studies from my own client work — original, research-driven essays on real named frameworks and formulas (bullwhip ratio, TTR/TTS resilience, the Kraljic matrix, Theory of Constraints, digital twins), each grounded in a cited real source, not invented. Pick a card for the summary, or read the full essay.
For the fuller story behind the bullwhip math — two 2000s-era factory fires and what they cost — see Buffer Shock, on the Blog →
Mueve las palancas que un planificador realmente controla — mira cómo se mueven los trade-offs en tiempo real. Modelo ilustrativo.
Punto de operación equilibrado. El servicio se mantiene cerca del objetivo con inventario y utilización en un rango saludable.
Lo que esto esconde: un SKU, una línea, una temporada. La obsolescencia aquí es un proxy, no un modelo de bajas contables. La versión por la que me pagan tiene un plan de demanda discutiendo con la línea base estadística — esa discusión es donde de verdad se resuelve el trade-off.
EOQ, stock de seguridad y punto de reorden a partir de tus propios números — la matemática detrás de cada política de reposición.
Pide 4,767 unidades unas 25.2× al año. Reordena con 5,183 en mano — manteniendo 563 unidades de stock de seguridad para sostener un nivel de servicio de 97% en un plazo de entrega de 14 días.
Lo que esto esconde: σ es la variabilidad diaria de la demanda, no el error de pronóstico — la versión de producción usa el error de pronóstico, que es más grande y menos amable. El valor z sale de una tabla de diez filas, no de la curva normal completa. Y 97% es solo un objetivo — verifica si el stock de seguridad está dimensionado para el nivel de servicio que de verdad prometiste.
Una pequeña ondulación en el anaquel se convierte en una tormenta río arriba. Mira cómo se amplifica la variabilidad de la demanda eslabón por eslabón. Modelo ilustrativo.
Las pequeñas oscilaciones de demanda en el anaquel se amplifican en grandes oscilaciones de pedidos río arriba — en el eslabón 4 (CD regional), un CV de 20% se convierte en un índice de pedidos de 173. Visibilidad de demanda, plazos más cortos y suavizado de pedidos amortiguan el látigo.
Lo que esto esconde: cada eslabón multiplica la oscilación por uno-más-CV — un modelo de enseñanza, no una simulación. Los látigos reales son racionamientos manipulados y pedidos por lotes. Los amortiguadores de la nota son los que sobreviven al contacto con una libreta de pedidos real.
Cinco ramas de funcionalidades — Home, Work, Library, Travel, Games, About, 404 — cada una construida de forma independiente durante unas dos semanas, sin fusionar. Hoy se convirtieron en una sola rama: cinco merge commits, tres con resolución manual de conflictos — todos en el mismo archivo, todos resueltos conservando ambos lados, un bug real de import duplicada detectado y corregido antes de que pudiera publicarse.
Lo que casi se pierde: 207 archivos y unos 10MB de trabajo previo — nuevos componentes de movimiento, un rig de despiece fotograma a fotograma, una build 3D con sus dos bugs conocidos corregidos, el precursor de esta misma página — nunca se habían hecho commit. Estaban en una carpeta de un solo portátil. Se arregló con un comando; pudo estar a un mal git clean de desaparecer.
Lo que sigue abierto: el pipeline que hizo este trabajo puede compilar el sitio y leer su HTML, pero no puede renderizar un píxel. Cada animación en esta página, y en las cuatro anteriores, hoy se verifica con revisión de código y los ojos de un humano — no los de una IA. Ese vacío está declarado aquí a propósito, no disimulado.
Autoevaluación — Planificación: 8/10 (había una spec y se siguió). Verificación: 4/10 (QA visual bloqueado en este entorno — vacío real, declarado, no oculto). Decisiones de juicio tomadas sin preguntar antes: varias (el nuevo número de techo del bundle, el estilo de resolución de conflictos del merge, hacer commit del trabajo previo sin commitear) — todas reversibles, ninguna llegó a producción.
Siguiente entrada, aún no escrita: darle ojos al pipeline — un navegador headless en CI que renderice las animaciones de esta página y compare cada fotograma contra el último bueno conocido. Si llega, la nota de Verificación de arriba se mueve. Si no, esta línea se queda, sin fecha, como el recibo.
refkit · VengeanceUI ports
28 components ported from the VengeanceUI registry to plain POP-token CSS — every demo below is live. The heavy WebGL pieces wait until you scroll to them. Tap a card's name for what it demonstrates and its real-vs-demo status.
Interactive Edition
Each piece starts as a registry component and lands here as one TSX file plus a CSS batch.
Tailwind classes go first, swapped for POP tokens: ink outlines, hard shadows, cream ground.
Springs move to motion/react and every animation learns to sit still under reduced motion.
The End
The people behind the product
A small, multidisciplinary team building thoughtful tools for ambitious people.
one word morphs into the next
Lines split, blur, and snap back into focus.