LS0/100Lädt
Zum Inhalt springen
Llavisahu
Kontakt
Pläne, die halten. Lieferketten, die nicht zucken.
Sag hallo ✦KontaktKontakt
StartArbeitBibliothekReisenSpieleLaborBlogÜber mich
LinkedInGitHubEmail
© 2026 Lavi Sahu
07Labor — Bautagebuch

Ich baue diese Seite so, wie ich es erwarten würde, dass ein KI-Anbieter ein Planungssystem baut: Zeig den Diff, nicht den Pitch.

Labor — Open Source

Acht Repos, kein Mockup

Öffentlicher, funktionierender Code, keine Portfolio-Folie: Supply-Chain-Planning-Tools, ein KI-Konfigurationssystem, eine Offline-Sprachdiktier-App und das Designsystem, aus dem diese Seite selbst gebaut ist. Klick auf eine Karte, um zu sehen, was sie wirklich tut.

Explore GitHub @LaviSahu
Resilience Radar — Python (stdlib only) — self-contained HTML dashboard
View on GitHub →

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
What the code actually does
# 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).

Labor — Bautagebuch

Verification ledger — what's above, and how each piece was actually checked

Seen by human eyes

Every animation on the rebuilt pages

The merge-conflict resolutions of 2026-09-19

Read, not run

The twin's system prompt

Each repo description (2 of 8 carry verbatim code excerpts)

Nobody has checked

Everything the twin tells you

Whether anyone has ever used these repos

The third column is the honest one. It empties only when the gap does — not before.

Labor — Bautagebuch

Verlass dich nicht auf mein Wort — beweg die Stellschrauben.

Zwei Live-Tools, die zeigen, wie Planungs-Trade-offs sich wirklich verhalten. Keine Folien, kein Handwaving.

Labor — Bautagebuch

Ein echtes KI-Feature, kein Mockup

Das ist kein eingebetteter Chatbot. Es ist eine Cloudflare Pages Function, die Workers AI direkt aufruft — an diese Domain gebunden, pro IP rate-limitiert, mit einem Systemprompt, der ihr sagt, sie soll „Ich weiß es nicht“ sagen, statt einen Kundennamen oder eine Zahl zu erfinden. Frag sie etwas zu S&OP oder Bestandsplanung.

Frag meinen KI-Zwilling

Beta

Eine Demo: ein Sprachmodell mit einem kurzen Prompt in meiner Stimme. Es kann überzeugend falsch liegen — handle nicht nach dem, was es sagt. Frag es zu S&OP, IBP, o9, Beständen.

Frag alles zur Planung. Der Zwilling antwortet in meiner Stimme.

Twin self-grade — Tone: close. Facts: unverified by anyone, including me. Model: @cf/meta/llama-3.3-70b-instruct-fp8-fast, capped at 512 tokens, prompted to say "I don't know" rather than invent a client name or a number. A guardrail, not a guarantee.

KI-generiert · kein Ersatz für den echten Lavi

Labor — BautagebuchGemerged, nicht geshipped.

Bautagebuch — 2026-09-19

Labor — Bautagebuchrefkit

Refkit — 28 ports, 1 in production

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.

Lab — essays

Five frameworks, worked through properly

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 →

S&OP-Szenario-Simulator

Live

Beweg die Stellschrauben, die ein Planer wirklich kontrolliert — und sieh zu, wie die Trade-offs in Echtzeit mitgehen. Illustratives Modell.

0%
100%
95%
4 Wo.
Erwarteter Servicelevel90.5%
Kapazitätsauslastung100%
Bestandsindex (Plan = 100)100
Obsoleszenzrisiko0%

Ausgeglichener Betriebspunkt. Der Service hält sich nahe am Ziel, Bestand und Auslastung in einem gesunden Bereich.

What this hides: one SKU, one line, one season. Obsolescence here is a proxy, not a write-off model. The version I get paid for has a demand plan arguing with the statistical baseline — that argument is where the trade-off actually gets settled.

Bestandsoptimierung

Live

EOQ (wirtschaftliche Bestellmenge), Sicherheitsbestand und Bestellpunkt aus deinen eigenen Zahlen — die Mathematik hinter jeder Dispositionsregel.

4,767
EOQ (Stück)
563
Sicherheitsbestand
5,183
Bestellpunkt

Bestellung von 4,767 Stück, etwa 25.2× pro Jahr. Nachbestellen, wenn der Bestand 5,183 erreicht — 563 Stück Sicherheitsbestand halten einen 97 %-Servicelevel über eine Beschaffungszeit von 14 Tagen.

What this hides: σ is daily demand variability, not forecast error — the production version uses forecast error, which is bigger and less polite. The z-value comes from a ten-row table, not the full normal curve. And 97% is only a target — check whether the safety stock is sized for the service level you actually promised.

Bullwhip-Effekt-Visualizer

Live

Ein kleines Zucken im Regal wird zum Sturm flussaufwärts. Sieh zu, wie sich die Nachfragevolatilität Stufe für Stufe verstärkt. Illustratives Modell.

20%
4
100Händler120Distributor144Großhändler173Regionaler DC

Kleine Nachfrageschwankungen im Regal verstärken sich zu großen Bestellschwankungen flussaufwärts — auf Stufe 4 (Regionaler DC) wird ein CV von 20 % zu einem Bestellindex von 173. Nachfragetransparenz, kürzere Durchlaufzeiten und geglättete Bestellungen dämpfen die Peitsche.

What this hides: each tier multiplies the swing by one-plus-CV — a teaching model, not a simulation. Real whips are gamed rationing and batched orders. The dampeners in the note are the ones that survive contact with a real order book.

> cat build-log.md

Fünf Feature-Branches — Home, Work, Library, Travel, Games, About, 404 — jeder unabhängig über rund zwei Wochen gebaut und ungemerged liegen geblieben. Heute wurden sie zu einem Branch: fünf Merge-Commits, drei brauchten manuelle Konfliktauflösung — alle in derselben Datei, alle durch das Behalten beider Seiten gelöst, ein echter Duplicate-Import-Bug entdeckt und gefixt, bevor er live gehen konnte.

Was fast verloren ging: 207 Dateien und etwa 10 MB früherer Arbeit — neue Motion-Komponenten, ein Frame-für-Frame-Pull-Apart-Rig, ein 3D-Build mit beiden bekannten Bugs gefixt, der Vorgänger genau dieser Seite — waren nie committed. Lag in einem Ordner auf einem Laptop. Mit einem Befehl gefixt; ein einziger böser git clean hätte gereicht, und alles wäre weg gewesen.

Was noch offen ist: Die Pipeline, die diese Arbeit gemacht hat, kann die Seite kompilieren und ihr HTML zurücklesen, aber keinen Pixel rendern. Jede Animation auf dieser Seite — und auf den vier Seiten davor — wird derzeit durch Code-Review und menschliche Augen verifiziert, nicht durch eine KI. Diese Lücke steht hier absichtlich drin, sie wird nicht glattgebügelt.

Selbstbewertung — Planung: 8/10 (eine Spec existierte und wurde befolgt). Verifikation: 4/10 (visuelles QA in dieser Umgebung blockiert — echte Lücke, offengelegt, nicht versteckt). Ohne Rückfrage getroffene Entscheidungen: mehrere (die neue Bundle-Obergrenze, der Stil der Merge-Konflikt-Auflösung, das Committen der bisher uncommitteten Arbeit) — alle reversibel, keines nach Production gepusht.

Next entry, not yet written: giving the pipeline eyes — a headless browser in CI that renders this page's animations and diffs each frame against the last known good one. If it lands, the Verification score above moves. If it doesn't, this line stays, undated, as the receipt.

refkit · VengeanceUI ports

The port wall

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.

VeAnimatedTooltipVengeanceUI port
What is this?
VeMaskedAvatarsVengeanceUI port
  • Ada
    Ada
  • Bram
    Bram
  • Cleo
    Cleo
  • Dario
    Dario
  • Esme
    Esme
VeDiagonalCarouselVengeanceUI port

Harbor Line

Kiln Study

North Pier

Paper Hills

Tidal Steps

VePerspectiveCarouselVengeanceUI port

Harbor Line

Kiln Study

North Pier

Paper Hills

Tidal Steps

VeImageTrailVengeanceUI port
VeStatsCounterVengeanceUI port
0ports
0batches
0new deps
VeInteractiveBookVengeanceUI port

Porting Notes

refkit

Porting Notes

Interactive Edition

1

Why port

Each piece starts as a registry component and lands here as one TSX file plus a CSS batch.

2
2
3

Token pass

Tailwind classes go first, swapped for POP tokens: ink outlines, hard shadows, cream ground.

4
4
5

Motion pass

Springs move to motion/react and every animation learns to sit still under reduced motion.

6
6

The End

Click to Open
VeScrollDissolveRevealVengeanceUI port — WebGL, mounts on scroll
VeLineHoverLinkVengeanceUI port
Slide underlineArc underlineScribble underline
VePerspectiveGridVengeanceUI port
VeImageRevealListVengeanceUI port
  • Field Notes on Slow Mail01Field Notes on Slow MailEssay
  • The Torii Trail at Dawn02The Torii Trail at DawnTravel
  • Shipping a Type Foundry03Shipping a Type FoundryInterview
  • Notes from the Night Market04Notes from the Night MarketPhoto
VeTeamRevealGridVengeanceUI port

The people behind the product

Meet the team

A small, multidisciplinary team building thoughtful tools for ambitious people.

VeGlowBorderCardVengeanceUI port
glow ring
VeTypingKeyboardVengeanceUI port
VePixelatedImageTrailVengeanceUI port
VeAsciiGlitchRippleVengeanceUI port
VeMorphTextVengeanceUI port
SHIPSHAPESHOW

one word morphs into the next

VeLiquidTextVengeanceUI port — WebGL, mounts on scroll
VeAnimatedFooterVengeanceUI port

Refkit

VeImageScatterVengeanceUI port

VeStaggeredGridVengeanceUI port
POP
ExploreProjects
ExploreWriting
ExploreContact
ExploreProjects
ExploreWriting
ExploreContact
ExploreProjects
ExploreWriting
ExploreContact
ExploreProjects
ExploreWriting
ExploreContact
ExploreProjects
ExploreWriting
ExploreContact
ExploreProjects
Builds

Builds

Builds
Notes

Notes

Notes
Reach out

Reach out

Reach out
ExploreWriting
ExploreContact
Built with refkitMore demos
VeCircularGalleryVengeanceUI port
VeVerseCardsVengeanceUI port
Work
Atlas
Nimbus
Vertex
Harbor
Quill
Click the front card to deal it away.
VeGooeyTextRevealVengeanceUI port

Goo in, goo out.

Lines split, blur, and snap back into focus.

VeInteractiveParticlesVengeanceUI port — WebGL, mounts on scroll
VeMusicPlayerVengeanceUI port — dark zone, white-on-glass UI
Paper Signals artwork
Paper Signals
Refkit Radio
VeBooksShowcaseVengeanceUI port — WebGL, mounts on scroll
VeCreepyVengeanceUI port
Don't hoverDon't hover
btn-ve-pophand-made — refkit-vengeance.css