The fastest way I’ve found to lose a room is to pitch AI with a slide full of bullet points. The fastest way to win it back is to show them a thing they can click. So lately, instead of writing another deck, I’ve been vibe-coding small interactive prototypes — single-page HTML apps, no backend — and dropping them on GitHub Pages for free.
Here are five from the last little while.
The builds
Smart Selangor use-case map

Smart Selangor use-case map — 14 AI/smart-state use cases (citizen-services agents, dengue prediction, flood now-casting, C5i incident fusion) laid out by domain and confidence. Turns a vague “what could we even do with AI” conversation into something concrete.
JCorp × Copilot adoption program

JCorp × Copilot adoption program — a playful microsite framing a 12-month Copilot rollout as a movement (quests, champions, leaderboards) instead of dull training. The vibe is the pitch.
Malaysia macro explorer

Malaysia macro explorer — a time-series tool to compare any two economic indicators on a shared timeline. Drag to pan, scroll to zoom.
Cambodia ASEAN AI-readiness dashboard

Cambodia ASEAN AI-readiness dashboard — a composite index across ASEAN built from public sources (Oxford Insights, UN, WIPO, ITU). A prototype meant to later swap in live API feeds.
Malakoff CEO ops cockpit

Malakoff CEO ops cockpit — a live-feeling executive dashboard: plant alerts, coal stockpile cover, desal output, FX, receivables aging. Built to show what an “AI ops copilot” could surface at a glance.
What I learned
- Self-contained HTML is a cheat code. No build step, no backend, no database. One file, push to GitHub Pages, share a link. The whole thing is disposable on purpose — which is exactly why it’s fast.
- Fake data, real feeling. None of these are wired to live systems. They don’t need to be. The point is to make the idea tangible enough that the customer starts arguing about the details — that’s when you know it landed.
- The vibe carries the message. The JCorp one works because it feels like a party, not a syllabus. Tone is a feature.
- Disposable still deserves a home. These were scattered across random repos. Collecting them here, with a note on why I built each, is half the reason this blog exists.
That’s the loop I’m in right now: hear a problem, vibe-code a clickable strawman, show it, throw it away. This site is where the throwaways get to stick around.
Built with
- Tool: GitHub Copilot CLI — prompted in the terminal, with a straight push to GitHub from the prompt (no manual commit dance).
- Model: Claude Opus 4.7
- Hosting: GitHub Pages (free, static)