Docs
OfficialJev Cookbooks
Demo: Smart Home Assistant
A smart home assistant that uses TypeSafe to evaluate user requests, pick a tool, and fill its arguments from plain language.
- Format
- Docs
- Reading time
- 3 min
- Published by
- TypeSafe AI
- Last verified
- Sep 2026
Works forJev for Classification
Used inJev for Robotics & Hardware
Highlights
- Core pattern is speculative fan-out: all questions go out in one batch before relevance is known, then code filters out irrelevant answers.
- A turn-off-all-lights request resolves through four questions: request category, target domain, device type, and action.
- A Noul question detects whether a request asks for more than one action; if so, an LLM splits it into atomic commands TypeSafe evaluates individually.
- General-information or conversational requests fall back to a conversational LLM; the TypeSafe pass adds negligible latency by comparison.
- The demo is a Vite/React single-page app; full source was slated for GitHub at release with README instructions for running locally.
Watch out
The page is an architecture write-up plus a Loom video with no code shown, and the demo source was still promised for GitHub at release rather than linked.
Questions about this entry
Short answers drawn from the linked project or page.
A Noul detects whether a request asks for more than one action; if so, an LLM splits it into atomic commands that TypeSafe evaluates individually. Otherwise a request resolves through four questions: category, target domain, device type, and action.
The page is an architecture write-up plus a Loom video with no code shown. The demo is a Vite/React single-page app, and the source was promised for GitHub at release rather than linked.
Each request is evaluated against a long list of questions, most of which turn out irrelevant. For turn off all of the lights in the house, the action question is written on the assumption the user is commanding lights and is asked before that is known, so everything evaluates in parallel and code filters the irrelevant answers afterwards.
Sequential calls minimize the number of questions but are much slower and more expensive than batching them into one upfront call. You would ask the category question, wait, then the domain question, wait again, then the device question, and only then the action question.
It handles the two steps that need generated strings: splitting a compound request into atomic commands, and answering general-information or conversational queries with a freeform response. The TypeSafe pass is so much faster than the LLM response that it adds negligible latency to the turn.
Because requests with known deterministic behavior resolve in one batched TypeSafe call that is far faster and cheaper than sequential LLM steps. The LLM is kept for the two steps that need generated strings: splitting a compound request into atomic commands and answering general-information or conversational queries.
A tool call with its arguments filled from plain language: the four questions resolve the request category, target domain, device type and the action to take, such as smarthome command, whole house, lights and turn off. Requests that are not commands fall back to a freeform LLM answer.
Reactions & coverage
Posts, threads, and videos about this entry from around the web.
X: Tool calling as classify plus action, back to twelve-factor agents
X: A chat bot with no LLM
From the Jev guides
Original write-ups on what this entry is for.
From the Jev AI model community
Posts from builders shipping with Jev right now.