Skip to content
Josef Richter

Realtime GenUI

A command bar that turns a sentence into the interface you need, while you type.

Jev · Design & engineering · Working prototype

Four sentences become four forms: a new prospect, a new contact, a stage change and a reminder. Recorded in the working prototype with sample data.

The next action, in context

This prototype is a sales CRM for aviation services. Jev powers a natural-language command bar available throughout the app, including over an open account.

“Add Delta as new prospect” opens a prospect form with the company already looked up. “Remind me to call Lufthansa on Wednesday” opens a reminder form with the date filled in. Each request shows the component that finishes the task, with its fields filled from the sentence and a chance to review the details before saving. A question such as “top airlines” produces a ranked list.

Fast enough to follow a thought

The four recorded requests took 289, 247, 270 and 279 ms to interpret, measured on the server from candidate selection through the Jev request and result assembly.

Jev selects the intent and relevant entities from candidates supplied by the application. Code handles dates, calculations, form fields and saved records. The result uses the product’s components and interaction rules.

A partial sentence can change meaning as someone types. The prototype stabilizes those interpretations, offers a choice when the intent is ambiguous, and ignores late answers to earlier input. Values a person edits in the form take precedence over later interpretations.

The prototype’s aviation sales pipeline, with airline accounts organized by deal stage

A working product around the interaction

The prototype includes a pipeline, account records, reminders and a dashboard, built in Phoenix LiveView. Opening an account gives the command bar context, so a follow-up can refer to that record without naming it again.

If the model is unavailable, the bar falls back to ordinary search. The core product remains usable.

Any spreadsheet becomes a working board

The same prototype can start from any CSV. I uploaded 32 job applications, and the import worked out the board. Code reads the value types. Jev picks the column that names a card and the one that holds its stage. Claude names the cards and puts the stages in order.

None of that is in the CSV. Every card also gets notes, contacts and reminders, whatever the data is.

A CSV of 32 job applications becomes a pipeline in the order a job search runs. Recorded in the working prototype with sample data.

The command bar reshapes the board too

“Show waiting on on the cards” or “show the seniority filter as buttons” changes the board itself. The bar shows each change in plain words before I apply it. Every change is saved with the board and listed in its history, and the newest can be undone.

Jev handles a single change on its own, in 231 to 344 ms in the recording. Bigger requests go to Inception’s diffusion model Mercury 3, which wrote each change in 0.5 to 3.4 seconds. The card layout took longest.

Typed requests put a flagged chip on the cards, add filters as buttons and as a “Waiting on me” switch, and add a column. Recorded with sample data.

Changes stay inside the design system

Mercury can only use a fixed set of board changes, and code checks each one before it’s shown. Cards are composed from the design system’s elements: a heading, a line of text and a chip, each at three levels, with an optional blue, orange or red flag.

The components declare what each element can do. A property added to a component becomes available to the command bar with no other change.

Records, contacts and job links from a sentence

The bar works on the data the same way. It reads “maya at lumenstack dot dev” as an email address, and “her phone is …” right after goes to the contact I just added. A pasted job link fills the form while the posting is read. If I save before that finishes, the card fills in afterwards.

The same bar adds, moves and edits applications, adds a contact and a reminder, and reads a pasted job post into a new card. Recorded with sample data.