Jeffrey WangAI & Software Engineer
Website for Jeff's thoughts, demo of AI/UI, and visualization into agent tools.Featuring coffee cowork, poetry generation, and more.
AI Overlay
This page is embedded with AI functionality, from familiar chat flows to inline editor controls and command-driven async agents.
Message UIs
There are two ways to interact with the AI on this page depending on whether you want a conversational response or async execution.
Chat Interface
The familiar conversational entry point with visible assistant responses.
- ⌘J
- Open chat
Command Interface
Built for async execution. Launches agents that perform work and return tool effects instead of chat replies.
- ⌘K
- Open agent dispatch command bar
- ⌘U
- Toggle agent runtime tray
Text Editors
There is only so much you can do with a textarea. Text editors are an important part of any serious AI integration. I use the Lexical library to create advanced features in an application. Features on this page are noted below.
Hotkeys
- ⌘I
- Toggle autocomplete
- @
- Insert mention
- /
- Switch action
- Shift+Tab
- Cycle action
- Tab
- Accept completion
- Esc
- Dismiss completion
- Esc Esc
- Clear field
JavaScript & UI
Thoughts and opinions.
React
React is popular and standard. Too flexible, so harder to generate good code. I used to think agents would favor Python and JS because the training corpus is huge, but actually they do well in strongly typed, opinionated languages like Rust — probably the reinforcement learning. A more opinionated JS framework might help in theory, but TypeScript plus the React Compiler covers most of it. JSX is useful for thinking in components. Colocating backend, frontend, and dev server helps e2e.
Next.js and React Router
I'd avoid Next.js. Not necessarily bad with rules, but a lot of built-in magic, and magic encourages hallucinations. React Router 7 instead — routes, layouts, loaders, actions, UI all in one file. Not the most comfortable for humans, but agents can scan and trace. Tanstack Start I don't know as well, but strong type checks look promising.
Composability
I like shadcn and one of the ideas it's built on is composability. Predictable extension points, fewer ways for an agent to veer. Keeps the UI consistent as things grow.
Theming
Catppuccin Latte and Mocha mapped to semantic tokens. Warmth is intentional, not systemic. Toggle to see it.
Primary
Interactive elements and focus
--primary-foregroundSecondary
Supporting UI surfaces
--secondary-foregroundAccent
Hover and highlight states
--accent-foregroundMuted
Subdued backgrounds
--muted-foregroundSuccess
Positive and confirmation states
--success-foregroundDestructive
Error and danger states
--backgroundCard
Card surfaces and panels
--card-foregroundContrast
Example displays and inset panels
--contrast-background-foregroundWarm Contrast
Intentional warm accent surfaces
--warm-contrast-foregroundWarm Accent
Emphasis and warm highlight states
--warm-accent-foregroundState
The less state, the better. When you can't avoid it, colocate with the component that uses it. If state is getting crazy, it's usually a sign the database isn't doing enough. For reads — RPCs with Suspense. For writes where feedback matters — optimistic UI, a temporary guess held in state until persistence resolves.
About
Jeff Wang is a full-stack AI engineer building agentic systems and developer tooling. Currently founder & lead engineer at Nizami, Inc., shipping a React Router 7 + Supabase platform with an 11-agent orchestration network and a deterministic RAG pipeline. Previously built React UI for the DOD's GAMECHANGER AI platform at Booz Allen Hamilton, and led real-time CV and streaming work on a USCENTCOM-deployed Counter-UAS platform at MITRE.
Experience
Nizami, Inc.
Founder & Lead Full Stack AI Engineer — June 2025 - Present
Building a full-stack AI platform (React Router 7, Supabase) with an embedded browser-native runtime and an 11-agent orchestration network, backed by a deterministic RAG system using MECE taxonomy and Postgres FTS to eliminate retrieval drift. A crash-recoverable Python pipeline (FastAPI, PydanticAI) on the Gemini Batch API cuts inference costs 50%, and a custom 4-skill agentic dev framework with TDD enforcement and adversarial reviewers has 10x'd codebase velocity.
Booz Allen Hamilton
Software Engineer, SF — June 2022 - June 2025
Built the React UI for DOD's GAMECHANGER AI platform, enabling 6,000+ stakeholders to query policy documents, and cut document processing from 450s to 7s through data chunking and parallelized async calls. Accelerated 252MB PDF embedding pipelines from 83s to 12s via optimized batching, and deployed a VA Aspire AI Tech Sprint finalist — a Llama 2 extraction service with strict parsing guardrails.
MITRE Corporation
Software Engineer, Shaw AFB — Jan 2020 - June 2022
Led AI development in 5-person team building a real-time Counter-UAS detection platform (Kafka, Docker) deployed by USCENTCOM, stabilizing command-center UI state for zero-latency threat tracking during live 50km field experiments. Also deployed custom CV models (Detectron2/ResNet) on crowdsourced drone imagery, achieving 40 mAP (COCO).
Name
Rihaku is the Japanese name for Li Bai, a Tang dynasty poet. I like his poetry. I often feel the vibes of "Drinking Alone Under the Moon". There are many comparisons between programming and poetry.
"I invite the bright moon and turn to my shadow. We are now three." Late nights and Claude is like a shadow I presume.
Rihaku is also a sake brand.