built on google's genui sdk · server-driven ui · governed catalog

Generative UI, made production-grade

Generative UI flips the contract: instead of the user mapping their intent onto your screens, the interface assembles itself around what they are trying to do right now. The first move is to stop answering in walls of text and start answering in real widgets. We build that on Google's GenUI SDK - officially alpha, the right primitive to start with - and add the governance, evals, and design system that make it shippable.

Answers in widgetsagents respond with real interface, not a wall of text the user has to read and re-type
You set the catalogthe model can only compose components you defined - it cannot render anything you did not approve
One Flutter buildthe generated UI runs on mobile, web, and kiosk from a single codebase
why this exists

An agent that speaks in widgets, not paragraphs.

You wired an LLM into the product and it works - and it answers in a wall of text the user has to read, parse, and turn back into a tap. That was a real step up from a static screen, and it is already where it stops. The interaction the user wanted was never a paragraph; it was a screen.

Generative UI closes that gap: the model returns structured output, the SDK maps it to a widget tree, and the user gets an interface shaped around what they are doing right now - with their interactions fed back so it refines within the session. The objection lands immediately - so the AI can render anything it wants? No. It composes from a governed widget catalog: you define the components, and the model can only assemble those. Nothing reaches the screen that you did not put there.

The primitive for this is Google's GenUI SDK - new, officially alpha, and the right place to build. We are the production layer on top of it: the catalog and schema, the evals that keep generated interfaces honest, and a real design system - so you ship a governed feature instead of wiring up alpha primitives yourself.
what we do

What we build on top of the SDK.

// 01

A governed widget catalog

The answer to "who decides what the AI is allowed to render?" - you do. We define a catalog of approved, composable components and a schema the model has to compose within, so generation is bounded to interfaces you signed off on.

// 02

Server-driven, schema-to-widget UI

The model emits structured output against your schema; the layer maps it to a native widget tree and feeds interaction state back so the interface refines within the session. It is LLM-agnostic - any model that returns structured output drives it, so you are not locked to one provider.

// 03

One Flutter codebase across surfaces

Because the generated UI renders through Flutter, the same build runs on mobile, web, and kiosk. One generative layer, one design system, native rendering everywhere - instead of rebuilding the dynamic interface per platform.

// 04

Evals & guardrails for generated UI

Generated interfaces are non-deterministic, so they get the same discipline as the rest of the product: an eval harness that scores what the model assembled on real cases, guardrails on inputs and outputs, and observability that records what was asked and what got rendered - so a prompt change cannot silently regress the UI.

// 05

A bounded pilot sprint

The entry point is one fixed-scope pilot on a use case that matters - a defined catalog, the GenUI layer wired onto your existing model investment, and a working generative interface you can judge - not an open-ended research engagement.

the pilot, step by step

From one use case to a shipped generative interface.

  1. 01

    Scope

    We pick one real use case where answering in widgets clearly beats answering in text, and tell you in writing where generative UI will earn its place and where a fixed screen is the honest call.

  2. 02

    Define the catalog

    We design the governed widget catalog and the schema the model composes against - the set of components the AI is allowed to render, and the contract that keeps generation inside it.

  3. 03

    Wire the GenUI layer

    We build the layer on Google's GenUI SDK in Flutter, connect it to your model, and get the loop running: structured output in, native widgets out, interaction state back.

  4. 04

    Evaluate & guard

    We stand up the evals and guardrails, run the generated interface against real cases, and close the ones where it drifts - so what ships is measured.

  5. 05

    Ship & hand over

    The pilot goes live and the code is yours - the catalog, the schema, the evals, documented Flutter your team can extend and re-run the evals against without us in the loop.

where this stands today

Google's GenUI SDK is new and officially alpha - no production case exists yet, ours included, and we will tell you that plainly rather than imply otherwise. What is real: the governed-catalog pattern, the evals-for-generated-UI approach, and the Flutter delivery layer are the same discipline we apply everywhere else we build.

common questions

Questions we get asked.

Isn't the GenUI SDK still alpha - is it safe to build on?

It's genuinely alpha, and we say so rather than hide it. What makes it safe to start on now is that the governed-catalog pattern, the evals, and the Flutter delivery layer we build around it don't depend on the SDK's API surface staying fixed - they're the discipline layer around it.

What keeps the AI inside our design system?

The model composes only from a catalog of components you define and approve - it cannot render anything outside that catalog. The schema is the contract that keeps generation bounded to interfaces you signed off on.

Is this one build across mobile, web, and kiosk, or separate per platform?

One Flutter codebase renders the generated UI on all three - one generative layer, one design system, instead of rebuilding the dynamic interface per platform.

What's actually in scope for a "bounded pilot sprint"?

One real use case, a defined widget catalog, the GenUI layer wired onto the model you already use, and a working generative interface you can judge at the end - fixed scope, not an open-ended research engagement.

How do you keep a generated interface from breaking silently?

The same way we keep any AI feature honest: an eval harness scores what the model assembled against real cases, so a prompt change that regresses the UI gets caught before it reaches a user.

talk to us

Tell us where your AI still answers in text. We'll scope a bounded pilot.

Send the screen your model keeps describing instead of building. A founder reads it and replies within 24 hours.

Read our case studies