LS0/100読み込み中
本文へスキップ
Llavisahu
コンタクト
計画は 持ちこたえる。 たじろがないサプライチェーン。
声をかける ✦コンタクトコンタクト
ホーム実績ライブラリ旅ゲームラボBlog私について
LinkedInGitHubEmail
© 2026 Lavi Sahu
07ラボ — ビルドログ

このサイトは、AIベンダーに計画システムを作ってほしいやり方で作っています — 売り込みではなく、diffを見せる。

ラボ — オープンソース

モックアップではなく、8つのリポジトリ

ポートフォリオのスライドではなく、公開されて動くコード: サプライチェーン計画ツール、AI設定システム、オフライン音声入力アプリ、そしてこのページ自体が使っているデザインシステム。カードを選ぶと、実際に何をするものか分かります。

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).

ラボ — ビルドログ

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.

ラボ — ビルドログ

私の言葉は信じないで — 自分でレバーを動かして。

計画のトレードオフが実際どう動くかを見せる、2つの動くツール。スライドも、ごまかしもなし。

ラボ — ビルドログ

モックアップではなく、動くAI機能

これはチャットボットの埋め込みではありません。Cloudflare Pages FunctionがWorkers AIを直接呼ぶ仕組みです — このドメインに限定され、IPごとにレート制限があり、クライアント名や数字をでっち上げる代わりに「知りません」と答えるようシステムプロンプトで指示されています。S&OPや在庫計画について聞いてみてください。

AIツインに聞く

Beta

デモです: 私の口調の短いプロンプトを与えた言語モデル。自信たっぷりに間違えることがあります — 言われたことを鵜呑みにしないでください。S&OP、IBP、o9、在庫について聞いてみてください。

計画について何でも聞いてください。ツインが私の口調で答えます。

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.

AI生成 · 本物のLaviの代用にはなりません

ラボ — ビルドログマージ済み、未リリース。

ビルドログ — 2026-09-19

ラボ — ビルドログrefkit

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シナリオシミュレーター

稼働中

プランナーが実際に制御するレバーを動かす — トレードオフがリアルタイムで動くのを見てください。説明用のモデルです。

0%
100%
95%
4 週
予測サービスレベル90.5%
稼働率100%
在庫指数(計画 = 100)100
陳腐化リスク0%

均衡した操業点。 在庫と稼働率が健全な範囲にあり、サービスは目標近くで維持されています。

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.

在庫最適化

稼働中

自分の数値からEOQ、安全在庫、発注点を算出 — あらゆる補充ポリシーの背後にある数学です。

4,767
EOQ(個数)
563
安全在庫
5,183
発注点

4,767個を、年に約25.2×回発注します。在庫が5,183に達したら発注 — 14日間のリードタイムをまたいで97%のサービスレベルを維持するため、563個の安全在庫を保有します。

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.

ビルウィップ効果ビジュアライザー

稼働中

棚での小さな揺らぎが、上流では嵐になる。需要変動が階層ごとに増幅していくのを見てください。説明用のモデルです。

20%
4
100小売120ディストリビューター144卸売173地域DC

棚での小さな需要の揺らぎが、上流では大きな発注の揺らぎに増幅します — 階層4(地域DC)では、20%のCVが発注指数173になります。需要の可視化、リードタイムの短縮、発注の平準化がこの鞭を鎮めます。

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

5つのフィーチャーブランチ — Home、Work、Library、Travel、Games、About、404 — それぞれ約2週間かけて独立に作られ、未マージのまま置かれていました。今日、それらが1つのブランチになりました: マージコミット5つ、うち3つは手動のコンフリクト解消 — すべて同じファイル内で、すべて両側を残す形で解決。出荷前に、実際の重複インポートバグを1つ見つけて修正しました。

ほとんど失われるところだったもの: 207ファイル、約10MBに及ぶ過去の作業 — 新しいモーションコンポーネント、フレームごとの分解リグ、既知のバグを両方直した3Dビルド、そしてこのページの前身 — が、一度もコミットされていなかった。1台のノートPCのフォルダの中に眠っていたのです。コマンド1つで復旧。タイミングの悪いgit clean一発で消えていてもおかしくなかった。

まだ残っている課題: この作業を行ったパイプラインは、サイトをコンパイルしてHTMLを読み返すことはできるものの、ピクセルを1つも描画できません。このページとその前の4ページのすべてのアニメーションは、いまのところコードレビューと人間の目で検証されています — AIの目ではなく。このギャップは、意図的にここに記しておきます。取り繕いません。

自己評価 — 計画: 8/10(スペックがあり、それに従った)。検証: 4/10(この環境ではビジュアルQAがブロック — 実際のギャップであり、隠さず公開)。事前に確認せずに下した判断: いくつか(新しいバンドル上限の数値、マージコンフリクトの解消方針、未コミットだった過去作業のコミット)— すべて可逆で、本番には何もプッシュしていません。

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