Typed shared state
Saved after each step, so a run can pause, resume or be replayed.
LangGraph development
Agents built as a graph of steps: call a model, run a tool, ask a person, retry. For assistants that act in order, recover from errors and stop for approval.
Why a graph, not a loop
A free loop works in a demo. In production, the model picks what to say and which tool to call, but the graph decides what is allowed next. Fixed structure where the process is known, model judgement where it helps. More on what an Ultrabot agent does.
Saved after each step, so a run can pause, resume or be replayed.
Validated inputs, caps per turn, timeouts, and a defined reply when a tool fails.
Sending, booking or refunding waits for a person to approve, edit or reject.
A failed search is retried; an unsure answer goes to a person, not the user.
Each extra agent adds delay and cost. We split only when tests show a gain.
Users see progress as it happens, and a voice can start at the first sentence.
Quality you can measure
We score both the outcome and the path, on a set of real tasks.
Did it finish the task, within the allowed actions?
Right tool, valid arguments, no extra calls.
Every claim backed by a source, or an honest "I don't know".
Tracked on every change to prompts or models.
What we have built
A voice-and-avatar assistant for a healthcare app, currently in development: Claude on Bedrock with about twenty tools, capped per turn, and no settings change without on-screen confirmation. Earlier, a self-serve website chatbot that answered in Hebrew or English and captured leads. The lesson from both: tight tools, and log what the agent did, not what users said.
We describe client projects in general terms. Details are shared in conversation, subject to confidentiality.
A practical delivery path
Steps, systems, approvals, and what success means.
Real requests and edge cases, before tuning prompts.
Build, measure, fix the worst failures first.
Tracing, cost limits and alerts, re-tested on every change.
Before we start
When the assistant has to take several actions in order, recover from failures, pause for a person or resume later. For a single retrieval-and-answer step, a simple chain or a direct API call is easier to maintain.
Yes. The graph is ordinary Python, so it runs in a container or serverless function on AWS, Azure or Google Cloud, or on your own servers, with any model your policies allow, including models through Amazon Bedrock.
We test candidate models on your evaluation set and compare success rate, latency and cost. Often a smaller, faster model handles routing and simple steps while a stronger model handles the hard ones.
Tools only do what their code allows, inputs are validated, and consequential actions stop at an approval step. The agent cannot reach systems it was not given a tool for.
Yes. We have built assistants that work in Hebrew and English, including retrieval over mixed-language content. Hebrew needs its own test cases, because tokenisation, search and model behaviour differ from English.
Keep exploring
Talk to a person
Share the problem, the data you have and what success would look like. We’ll discuss a practical next step.
Please don’t include confidential datasets, credentials or patient information.