That's why they can't hold a conversation, can't ask a good question, and fall apart the moment you're the slightest bit unclear about what you want.
Assistant Factory is a framework for building domain-specific agents that treat ambiguity as a first-class signal — not an exception. Hugo is the first assistant off the line: a blog-writing collaborator with 48 flows, a real dialogue stack, and the nerve to ask you what you meant.
Real users don't speak in well-formed JSON. They say "rework the aviation post", and they mean one of six things. A tool-calling agent guesses. A ReAct loop picks a plausible tool, produces confident output, and moves on — whether or not it understood you. The cost of being wrong is hidden inside the response.
That's the ambiguity tax. You pay it every turn, in the quiet gap between what you said and what the agent decided you meant.
Hugo's dialogue layer declares ambiguity at two levels — specific (missing slot) and confirmation (high-stakes action). The flow pauses. The policy decides whether to ask, confirm, or proceed. Asking one good question is a feature, not a failure.
A flow stack, typed slots, and a scratchpad survive the turn. When the user clarifies five turns later, the agent doesn't re-read the conversation — it resumes. Long sessions don't drift, don't hallucinate state, and don't re-ask what you already said.
A flow is a sub-agent — multiple prompts, real decision power, its own slot schema. A tool is a deterministic function. Hugo's Plan intent orchestrates Research → Draft → Revise → Publish as a queue of sub-agents, not a brittle chain of tool calls.
A single conversation. Four turns. Watch the stack grow, the slots fill, and the ambiguity get answered — on purpose.
A ReAct agent would dump all of this into a growing prompt and hope the next call picks up the thread. Hugo keeps it in structure.
Classifies intent, selects a flow, extracts slots. When something's missing or uncertain, it marks it rather than guessing.
Runs the policy for the active flow: calls tools, invokes skills, handles ambiguity, writes to the scratchpad, and emits a DisplayFrame.
Composes the spoken reply from the frame's blocks and templates. Pops completed flows. Leaves state ready for the next turn.
Twelve universal slot types — Category, Exact, FreeText, Source, Level, and more — plus four domain-specific ones per assistant. Hugo adds Channel and Image. Slots know their own priority, their own validators, and when they're satisfied.
A slot is missing or unclear. Ask one targeted question.
Action is consequential. Surface the stakes, wait for a yes.
Put together, these give the agent something a while-loop never gets: a stable place to stand between turns.
Blog-writing. 48 flows across Research, Draft, Revise, Publish, Converse, Plan, Internal.
Data analysis. Clean, Transform, Analyze, Report. Same scaffolding; different slots, different flows.
Onboarding. Entity-heavy, form-like, but powered by the same three-stage pipeline.
The thesis isn't another harness. It's that personal assistants — grounded in a domain, patient with ambiguity, transparent about state — are a different species of agent, and they need a factory that treats them that way.