The problem
AI UI builders are slow and unpredictable: every message reruns the model, and one small edit can rewrite the whole page.
What I shipped
Describe a UI in plain language and watch it get built from real component libraries. A ~1s structured decision on every message routes the work, so the LLM only runs when it is needed.
- TypeSafe Jev decides on every message: new page or edit, which elements are in scope, option values, and change type.
- Deterministic edits run in code with no LLM call. Scoped edits only see the elements in scope, and code rejects anything outside it.
- New pages are planned as streamed JSON; each section is built by its own LLM call, 4 at a time, and patches stream into a live preview.
- Production hardening: model fallback chain, per-visitor rate limits, request validation, sanitized AI-written links.
Stack React 19, Bun, TypeSafe Jev, json-render, shadcn