Du code public qui fonctionne, pas une slide de portfolio : des outils de planification supply chain, un système de config IA, une appli de dictée vocale hors ligne, et le design system avec lequel cette page même est construite. Choisissez une carte pour voir ce qu'elle fait vraiment.
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 troisième colonne est celle qui est honnête. Elle ne se vide que quand le manque se vide — pas avant.
Trois outils en direct — simulateur de scénarios, calculateur de stocks, graphique de l'effet coup de fouet. Pas de slides, pas de vague : chaque chiffre est calculé dans votre navigateur pendant que vous bougez les leviers.
Ce n'est pas un chatbot embarqué. C'est une Cloudflare Pages Function qui appelle Workers AI directement — verrouillée sur ce domaine, limitée en débit par IP, avec un prompt système qui lui dit de répondre « je ne sais pas » plutôt que d'inventer un nom de client ou un chiffre. Demandez-lui quelque chose sur le S&OP ou la planification des stocks.
Une démo : un modèle de langage avec un court prompt dans ma voix. Il peut se tromper en toute assurance — n'agissez pas sur ce qu'il dit. Demandez-lui des choses sur le S&OP, l'IBP, o9, les stocks.
Posez n'importe quelle question sur la planification. Le jumeau répond dans ma voix.
Auto-évaluation du jumeau — Ton : proche. Faits : non vérifiés par qui que ce soit, moi compris. Modèle : @cf/meta/llama-3.3-70b-instruct-fp8-fast, plafonné à 512 tokens, invité à dire « je ne sais pas » plutôt que d'inventer un nom de client ou un chiffre. Un garde-fou, pas une garantie.
Généré par IA · ne remplace pas le vrai Lavi
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 →
Bougez les leviers qu'un planificateur contrôle vraiment — regardez les arbitrages bouger en temps réel. Modèle illustratif.
Point de fonctionnement équilibré. Le service tient près de la cible avec un stock et une utilisation dans une plage saine.
Ce que ça cache : un SKU, une ligne, une saison. L'obsolescence ici est un proxy, pas un modèle de dépréciation. La version pour laquelle je suis payé a un plan de demande qui se dispute avec la baseline statistique — cette dispute est là où l'arbitrage se règle vraiment.
EOQ (quantité économique de commande), stock de sécurité et point de commande à partir de vos propres chiffres — les maths derrière chaque politique de réapprovisionnement.
Commandez environ 4,767 unités, 25.2× par an. Repassez commande à 5,183 en stock — en portant 563 unités de stock de sécurité pour tenir un niveau de service de 97% sur un délai de 14 jours.
Ce que ça cache : σ est la variabilité journalière de la demande, pas l'erreur de prévision — la version de production utilise l'erreur de prévision, plus grande et moins polie. Le z vient d'une table de dix lignes, pas de la courbe normale complète. Et 97 % n'est qu'une cible — vérifiez si le stock de sécurité est dimensionné pour le niveau de service que vous avez réellement promis.
Une petite oscillation au rayon devient une tempête en amont. Regardez la variabilité de la demande s'amplifier étage par étage. Modèle illustratif.
Les petites variations de demande au rayon s'amplifient en grandes variations de commandes en amont — à l'étage 4 (Entrepôt régional), un CV de 20% devient un indice de commande de 173. La visibilité de la demande, des délais plus courts et le lissage des commandes amortissent le fouet.
Ce que ça cache : chaque étage multiplie l'amplitude par un-plus-CV — un modèle pédagogique, pas une simulation. Les vrais coups de fouet, ce sont les rationnements joués et les commandes groupées. Les amortisseurs de la note sont ceux qui survivent au contact d'un vrai carnet de commandes.
Cinq branches de fonctionnalités — Home, Work, Library, Travel, Games, About, 404 — chacune construite indépendamment sur environ deux semaines, restées non fusionnées. Aujourd'hui elles sont devenues une seule branche : cinq commits de fusion, trois nécessitant une résolution manuelle de conflits — tous dans le même fichier, tous résolus en gardant les deux côtés, un vrai bug d'import dupliqué repéré et corrigé avant de pouvoir partir en production.
Ce qui a failli se perdre : 207 fichiers et environ 10 Mo de travail antérieur — nouveaux composants d'animation, un rig de démontage image par image, une build 3D avec ses deux bugs connus corrigés, l'ancêtre de cette page même — n'avaient jamais été commités. Posés dans un dossier sur un seul portable. Réglé avec une commande ; à un mauvais git clean près, tout pouvait disparaître.
Ce qui reste ouvert : le pipeline qui a fait ce travail sait compiler le site et relire son HTML, mais ne sait pas rendre un seul pixel. Chaque animation de cette page, et des quatre pages d'avant, est pour l'instant vérifiée par la relecture de code et des yeux humains — pas par ceux d'une IA. Ce manque est écrit ici exprès, pas lissé.
Auto-évaluation — Planification : 8/10 (une spec existait et a été suivie). Vérification : 4/10 (la QA visuelle est bloquée dans cet environnement — un vrai manque, divulgué, pas caché). Décisions prises sans demander d'abord : plusieurs (le nouveau plafond de bundle, le style de résolution des conflits de fusion, le commit du travail antérieur non commité) — toutes réversibles, aucune poussée en production.
Prochaine entrée, pas encore écrite : donner des yeux au pipeline — un navigateur headless dans la CI qui rend les animations de cette page et diff chaque image contre la dernière connue comme bonne. Si ça arrive, le score de Vérification ci-dessus bougera. Sinon, cette ligne restera, sans date, comme reçu.
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.