AI Engineer World's Fair 2024
Building Reliable Agentic Systems
Read the talk
Building Reliable Agentic Systems
Reliable software agents need plans that stay coherent, decisions that can be evaluated, and interfaces that turn environmental feedback into useful next actions.
From a talk by Eno Reyes
Before you start: Familiarity with LLM prompts, tool use, and software development workflows will help you follow the examples.
Different software tasks need different agent architectures
A code review follows a relatively constrained workflow. A request to migrate a codebase or implement a feature leaves far more decisions open. Factory’s Droids span that range: review, documentation, testing, refactors, migrations, and feature work. In Eno Reyes’s account, ReviewDroid and DocumentationDroid operate with more guardrails, while CodeDroid attempts coding tasks expressed in natural language. Those differences call for different cognitive architectures rather than one universal agent loop.
Three capabilities organize the engineering problem:
- Planning: Choose one or more future actions.
- Decision-making: Apply criteria and a decision procedure when the available choices are broad.
- Environmental grounding: Read from and write to an external environment.
The third capability makes the first two operational. An agent’s plan and decisions must remain connected to the environment in which its actions actually take effect.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Keep long plans coherent without preserving every mistake
Even migrating a small part of a codebase can involve hundreds of steps. Across a long sequence, an agent can drift: its reasoning changes, and later decisions stop fitting the assumptions behind earlier ones. Factory borrows an idea from control systems and robotics that Reyes calls a pseudo Kalman filter. The mechanism described here is passing intermediate reasoning between plan steps; the name is an analogy, not a specification of a mathematical Kalman filter.
Carrying that reasoning forward gives each decision access to the rationale accumulated so far. How the system modifies or shares it can become sophisticated, but the immediate benefit is continuity: individual decisions converge toward consistent reasoning. The corresponding danger is error propagation. If an early conclusion is wrong, preserving it can make subsequent steps consistently wrong. Reasoning continuity therefore improves coherence without establishing correctness.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Choose task granularity, then replan against reality
Sub-task decomposition gives the system smaller decisions to make. Reyes places it in the lineage of approaches such as ReAct, which interleaves reasoning and actions while allowing plans to change as information arrives. That connection does not require a fixed hierarchical decomposition. Factory experiments with the structure and resolution of sub-tasks: finer steps clarify the action space and give the system more precise control.
The trade-off is the number of decisions introduced. Breaking every operation into tiny tasks can leave the model with more choices to get right, even if each action is narrowly defined.
| Plan granularity | Benefit | Cost |
|---|---|---|
| Finer sub-tasks | More precise control; clearer actions | More decisions for the model |
| Coarser sub-tasks | Fewer explicit decision points | Less fine-grained control |
The useful resolution is the one that makes the workflow easier to execute reliably, not simply the one with the most detailed plan.
Model predictive control supplies another planning idea: evaluate sub-task outcomes against the current state, then adapt the remaining plan using feedback received during execution. This matters when humans continue developing software while an agent runs a long workflow. The environment can change underneath an otherwise coherent plan.
The practical sequence is to observe what happened, update the trajectory information, and replan from the updated state. Reyes emphasizes that useful improvements do not require implementing the full Bayesian or predictive-model machinery associated with control theory. Keeping feedback and planning current is itself valuable.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Make successful plans recognizable
Simple agents often start with explicit plan criteria. As builders pursue more general behavior, they may remove those constraints. Factory’s experience suggests retaining useful definitions of successful plan structures and acceptable initial states. These give the system a more reliable starting point before a long trajectory unfolds.
Criteria can enter the system through several mechanisms:
- Instruction tuning: Teach the model the desired planning behavior.
- Few-shot examples: Show concrete examples of acceptable plans in the prompt.
- Hard-coded validation: Check plans against explicit domain rules.
All three aim to reduce errors and keep trajectories successful for longer. The cost is that explicit logic takes work to build and becomes difficult to scale.
Domain constraints are part of delivering a working agent. Reyes connects this choice to lessons from symbolic AI: when the goal is to solve a customer’s concrete problem, successful generalization is not the only design objective. Factory deliberately uses explicit criteria and hard-coded logic where they help deliver useful behavior today.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Sample decisions and make their criteria explicit
At a decision point, the system does not have to accept its first model output. Consensus approaches include self-consistency, prompt ensembles, and cluster sampling. They generate multiple candidates and use a selection or aggregation mechanism to choose among them. Factory found this useful for producing consistent, high-quality decisions; the benefit depends on selecting useful samples, not merely increasing their number. More runtime inference costs more, and serial calls can increase waiting time.
A separate approach makes the decision criteria explicit. Reyes groups together checklists, chain-of-thought reasoning, analogical prompting, and Chain of Density. These methods are not interchangeable: the matched Chain of Density work concerns summarization, rather than establishing a general decision procedure. The practical idea here is to give the model a clearer structure for deciding.
Consider choosing left or right. A checklist can describe what makes a left choice reasonable and what makes a right choice reasonable. The model can then compare the situation with those criteria instead of making an unconstrained choice. This becomes harder as the domain broadens or the action space grows: a comprehensive checklist may no longer be practical, motivating exploration of more flexible reasoning approaches.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Specialize difficult decisions and simulate candidate paths
Fine-tuning becomes attractive once there is data for a specific decision. Reyes sketches a direct workflow:
- Select an open-source model.
- Generate training examples using a high-quality model.
- Have team members validate those examples.
- Fine-tune the selected model for the target decision.
This is an option for a well-defined decision problem, rather than a prerequisite for every agent.
Training introduces expense and ties the system to the quality of the resulting specialized model. A system that can sample from interchangeable general models can more easily benefit when a stronger model becomes available. Fine-tuning gives up some of that automatic improvement, but Reyes finds it particularly useful for decisions that are out of distribution for the base model.
Simulation adds a way to inspect possible consequences before selecting a path. Its feasibility depends on the domain. Software is favorable because code can be executed, and candidate execution trajectories can also be reasoned through. Factory uses both real execution and LLM-imagined execution paths when exploring decisions; an imagined result is not an observed execution outcome.
Once several paths are available, search can help determine which to pursue. Reyes cites Language Agent Tree Search and describes its relationship to Monte Carlo tree search informally, with a qualification that his sketch is not exact. The published method does integrate Monte Carlo tree search with language-model evaluation and reflection. The engineering question is how to use the simulation results to choose the next move.
These techniques need an evaluation of the decisions the system is supposed to make. Apply a technique, inspect whether those decisions improve, weigh its costs and drawbacks, and adapt. Neither extra sampling nor a more elaborate search procedure substitutes for measuring the behavior that matters in the application.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Turn repeated workflows into usable tools
Environmental grounding begins with tools, or what Reyes calls AI-computer interfaces. Existing tool ecosystems provide useful starting points: calculators, Python execution, and open-source implementations of artifact-style experiences associated with Claude. Reyes mentions LangChain and sandboxed execution in this context; a Python execution tool still needs an actual isolation boundary to constitute a sandbox.
Custom interfaces become useful when the available tools do not match a recurring workflow. Consider the sequence Reyes describes:
- Run a calculation.
- Pass its output to another system.
- Read and parse that system’s logs.
- Transform the parsed result.
If this sequence is predictable and frequently needed, asking the agent to reconstruct it every time adds unnecessary decisions. Package the operation as a tool and give the model an interface through which it can invoke the combined workflow.
Software development already has an enormous collection of capable tools. Their interfaces, however, may be designed for a person using a CLI or navigating to a definition in an editor. An agent needs both a way to invoke those capabilities and a way to interpret their outputs. Adapting those interfaces is a substantial part of Factory’s work: the underlying developer capability may already exist, while its usable interface for an LLM does not.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Process feedback before asking the agent to use it
A tool returning data does not complete the feedback loop. CI/CD logs illustrate the gap: they can contain test results, debug statements, and large amounts of information irrelevant to the next decision. If the agent will need that output, design an explicit processing path for it. That path may use a tool, programmed decisions, or a dedicated LLM interpretation step.
For the log example, extract the failing tests and provide a brief explanation of what the rest of the logs contain. The result gives the model the failures it needs to act on while retaining context about the surrounding output. This is a deliberate interface between environmental feedback and the next decision, rather than an expectation that the agent will always find the important evidence in raw logs.
The same principle applies to feedback generated inside the agent. When it reflects on an error trajectory, process that trajectory into meaningful information before passing it back to the model. Reyes cautions that responding to an instruction to criticize itself is not the same as reliably diagnosing its own actions. A useful reflection loop needs informative feedback, not just a request for self-criticism.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Gather enough context, then begin solving
Agents need opportunities to gather context about the problem, often near the beginning of a workflow, though not exclusively there. Long-context models make it possible to retain more of that information. Reyes’s examples from the period are Gemini Pro 1.5 and Sonnet 3.5. But the capacity to keep adding context does not tell the system when to stop exploring and start solving the problem.
Bounded exploration requires evaluation. Factory found it difficult to determine the right exploration duration in advance. The agent needs time to collect data, judge relevance, and establish a useful starting state, but eventually it must act. The talk supplies no universal exploration budget; the balance depends on evaluating how context gathering affects the subsequent trajectory.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Choose where human guidance belongs
Human participation is also an interface design problem. Decide where in the workflow the system should ask a person to intervene or provide guidance. Those interaction points determine when the agent can proceed independently and when a human helps it recover or choose a direction.
Reyes suggests that careful UX and interaction design for human guidance can move reliability from 30–40% to 90–100%. These are illustrative figures, not a specified benchmark: the talk does not define the task population, reliability metric, sample size, or intervention protocol. The claimed improvement includes human participation, so it should not be read as autonomous agent performance.
That leaves a product decision as well as a technical one. Human guidance can make a workflow more dependable, while reducing how much of it is fully autonomous. Designing a reliable agent includes choosing that balance explicitly.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
Interleaves reasoning and environmental actions so agents can gather information and revise plans.
Explains selecting consistent answers from multiple sampled reasoning paths.
Studies iterative summary refinement that adds important entities while keeping length fixed.
Combines tree search, language-model evaluation and reflection for reasoning and interactive tasks.
Further reading
Factory's technical account of Code Droid planning, tool integration, candidate selection and historical SWE-bench evaluation.
Read the complete timestamped transcript
- 0:00
[upbeat music] So for this talk, uh, basically what we thought was it'd be cool to give kind of practical examples and lessons of, uh, problems and solutions that we identified while
- 0:25
building, uh, the Droids. Uh, and so for context about Factory, uh, our mission is to bring autonomy to software engineering, and what that means concretely, we build these products that we call Droids.
- 0:36
They are, uh, autonomous systems that are applied to different stages of the software development life cycle. Think code review, documentation, testing, all the way to end-to-end coding tasks like a refactor, a migration, feature work.
- 0:49
Uh, and so each of the Droids, uh, has, like, separate cog-cognitive architectures which are mapped to the tasks at hand. And, uh, in particular, the, uh, you know, Droids like ReviewDroid or, uh, the DocumentationDroid, which handle processes which we think are kind of more on guardrails, are pretty different from something like the CodeDroid, which is able to
- 1:11
take nearly any natural language task and make an attempt or complete, uh, a coding task that is associated with that, like, request. Uh, and so the idea for this talk is let's just start describing what we think of as an agentic system.
- 1:29
Uh, this sy-- like, agentic systems have a lot of different interpretations, a lot of different definitions. We think that, uh, there's three characteristics which are kind of most, uh, representative of an agentic system.
- 1:44
The first is planning. I think you've probably seen a lot of this in this track. The idea that the agentic system can make decisions about one or future-- or, or many future actions that it's going to take.
- 1:56
Uh, decision-making. Some people call this reasoning. Uh, I think that on a lot of these systems, just the ability to make a decision, have some criteria and some algorithm that's associated with making that decision is kind of critical in order for agentic systems to take on more general or broad tasks where the decision space is very wide.
- 2:17
Uh, and then you have environmental grounding. Uh, and so, you know, a lot of, uh, systems have planning, they have decision-making, but I think the existence of an agent within an external environment is very critical to understanding some of the unique properties of agentic systems when you're actually implementing them.
- 2:36
Um, so being able to read and write to these environments is, is a, you know, a, a critical part of this process. Uh, and so... Oh. Let's talk about planning first.
- 2:49
Uh, so the first idea that we kind of encountered is inspired by control systems and robotics. The idea of the pseudo Kalman filter is as you are working through a plan, what happens is you tend to notice that your agentic systems will lead-- will be led astray.
- 3:07
Their reasoning will change rapidly, and as you kind of iterate through especially long plans, you can imagine that in order to migrate even a small section of a code base, you might have literally hundreds of steps in a process.
- 3:21
Uh, and so inspired by a lot of the folks that on our team come from backgrounds in self-driving and robotics, uh, the pseudo Kalman filter is basically passing intermediate reasoning.
- 3:31
And you can get pretty complex about how you modify or share the intermediate reasoning through the different plan steps, but as you pass that intermediate reasoning through the execution of the plan steps, uh, it allows the, like, individual decisions that happen on the plan to slowly converge towards at least consistent reasoning.
- 3:52
Uh, the kind of core issue with this is it also facilitates error propagation. A simple mistake, especially early on in the plan, can lead to, like, you know, strong downstream effects.
- 4:05
Sub-task decomposition. This is pretty well known. Uh, even ReAct, uh, like some of the earlier agentic, uh, action systems, uh, have some form of sub-task decomposition. Uh, but you know, what we found is that experimenting with different forms or structures of sub-task decomposition in our planning process, uh, has led to a lot of, like, pretty interesting downstream
- 4:28
positive effects. Uh, in particular, it-- when you basically increase the resolution or the fidelity of your sub-tasks in a given plan, it gives you more fine-grained control. It allows you to define kind of the action space a lot more clearly.
- 4:43
However, the risk is you're introducing a lot of decisions for the LLM to make. The more, like, small, tiny tasks you introduce, the harder it is for the system or the agentic system to decide what's right.
- 4:56
Um, then you have model predictive control. This is again, you know, not a new idea, not invented by anyone here, but the idea of evaluating outcomes of your sub-tasks in your current state, uh, and enabling kind of adaptive replanning based on real-time feedback that occurs during the execution of the plan.
- 5:18
So, you know, if you have, you know, rapidly changing environment or information, this can occur especially in, you know, situations for us where there are other humans actively engaged in either a development process or some other workflow while your agent is executing perhaps a long-running workflow.
- 5:35
Uh, and so if you have, you know... You, you can honestly, like, find a lot of information about these techniques and kind of reason around, you know... I, I-- You don't have to necessarily jump into the true, like, Bayesian statistics, predictive modeling stuff.
- 5:49
I think a lot of the, like, general ideas of replanning, taking in the trajectory information, and making sure that you keep that up to date, uh, is honestly enough to see some, like, pretty solid quality improvements on your agents.
- 6:02
And then finally, uh, explicit plan criteria. So I think you actually kind of see this pretty often for very simple agents, and then people start to remove explicit plan criteria in order to increase generalizability.
- 6:15
Uh, but, uh, what we found is that clearly defining kind of successful structures or at least successful initial states for plans, uh, can lead to, uh, very strong kind of downstream effects.
- 6:28
Uh, and, and, you know, this can be done in a lot of different ways: instruction tuning, uh, you know, few pro-- uh, few-shot prompt examples. You can validate, like, your plans with different kind of hard-coded logic.
- 6:40
Uh, you know, ultimately, all of this is about error reduction and keeping your, like, trajectories as successful as possible as long as possible. Uh, but it's difficult to build and scale these 'cause basically what I'm recommending is that you hard code a lot of logic into your system.
- 6:54
Uh, I think that this is like a general idea that people maybe, you know-- Depending on your domain, this may seem appealing or not appealing, but ultimately, we're probably not building AGI like tomorrow or next week or in the next six months.
- 7:08
And so I think taking some of the lessons from the kind of like symbolic era of AI is useful if you have like a domain challenge that you wanna solve in the next three months.
- 7:18
Uh, for us, you know, we think about delivering real value to customers today, and that means that a lot of what we do is thinking about things like explicit plan criteria, hard-coded logic, uh, and I think that a lot of folks may not, like, be open to admitting that, but I think it's a very important part of
- 7:32
the, the process of building these kind of agentic systems. Um, so now talking about decision-making, and I know this is also meant to be kind of like a word vomit, honestly, because I think hopefully you guys are like building agents and you care a lot about this stuff, and it can spark or inspire some ideas in your
- 7:50
own systems when you're working on them. Um, so first for decision-making, consensus mechanisms. Uh, there's a lot of these. Self-consistency is a very popular one. Prompt ensembles, cluster sampling.
- 8:04
You know, basically, the more inference at runtime that you run and the more that you can like build a clever way of selecting ideal or optimal samples from those like many number of inferences, the higher the accuracy.
- 8:19
It's just gonna cost more. It may introduce longer inference wait times if you're not parallelizing, uh, but we found this very important, uh, to getting high-quality decisions that are consistent.
- 8:30
Uh, next you have explicit and analogical reasoning. These also have a lot of different names: chain of thought, uh, checklists, chain of density, analogical prompting. You know, basically you want the system to explicitly outline its reasoning or decision-making criteria to reduce the complexity of the decision-making process.
- 8:52
So when you have, for example, a checklist of things that-- Let's say you wanna make a decision about left or right. If you just create a checklist of what constitutes a reasonable left and what constitutes a reasonable right, your system will do better at choosing left or right.
- 9:07
Um, obviously though, this introduces challenge if you have like very broad domain stuff, uh, and-- or you like have a decision which has a huge action space, in which case techniques like chain-of-thought reasoning, uh, you know, chain of density, uh, honestly, like there's like galactic tree of mega brain thought that like...
- 9:24
There's a lot of these like techniques that exist and I think, uh, you know, exploring these is super worth it, uh, for improving performance. Uh, fine-tuning, this is kind of a cop-out answer, but I actually think it is pretty valuable once you really get into having data, uh, for specific decisions that you wanna make.
- 9:42
It may just be true that the best thing to do is to spend a weekend pulling the latest open source model, generate a bunch of training data with a high-quality model, validate it with a bunch of your team members, and just train like or fine-tune a model.
- 9:55
Uh, this is expensive and it locks in the quality of your system. Like a lot of the like benefit of relying on basically being able to sample from different models is every time a new state-of-the-art model comes out, your system gets better.
- 10:09
I think that's a huge benefit. However, for certain decisions, especially those that are really out of distribution, uh, fine-tuning is a pretty effective way, uh, to make a good decision.
- 10:20
Uh, and then simulation. So simulation of decision-making is super tricky. Uh, this is definitely gonna be very domain-specific. If you're working with software development, simulation is luckily kind of built into like the thought process here.
- 10:37
The ability to execute code, the ability to reason through code trajectories, uh, is super doable. And so for us, simulation makes up a huge amount of how we think about decision-making processes.
- 10:48
So sampling multiple decision paths, uh, simulating them both with real and s-- and kind of like LLM imagined execution paths, uh, techniques like language agent tree search, which basically says amongst this simulation of decision nodes, let's implement like a fancy Monte Carlo tree search algorithm and, uh, y- you know, it's k- it's kind of like Monte Carlo
- 11:10
tree search. It's not exactly, but you know, let's do fancy algorithms to decide where we want to move based on the simulation results. Uh, and so you can do all these things and ultimately the, the kind of core goal here is y- you wanna have some evaluation of whether or not your system makes good decisions when you
- 11:27
want it to make good decisions. You can take all of these techniques, apply them, and then see what's working, what's not working, look at the pros and cons, and then adapt.
- 11:36
Um, so that's decision-making. Now we have environmental grounding. So the first, uh, you know, this is oftentimes called tool use. I think that that's like an e-equivalently like valid way to describe AI computer interfaces.
- 11:54
But I think the idea of like building these is kind of the interesting challenge. So there's dedicated tools that are very common. Like you can like Pull down LangChain and start using a calculator, a sandboxed even Python script execution.
- 12:09
Like, I'm pretty sure you can clone an open source repo today that implements Claude's artifacts, like, in your own, like, environment. It's awesome how great the open source community has pushed tool use.
- 12:21
Uh, but I think a lot of the kind of edge of tool use and where you start to move towards building custom AI computer interfaces is when you need workflows or trajectories which don't exist with the kind of known tool set that you have today.
- 12:37
So if you have a calculator, you can definitely run a calculation. But what if you know that very consistently you are going to use a calculator, take the output of that calculator and maybe pass it to another system, and then you're gonna read them and parse the logs and then take the output of those parsed logs and
- 12:55
do some, like, additional transformation? If you're going to consistently do that and you want your agent to just come up with that every single time, then that's probably not the right mental model for what, like, the agent should be thinking about or making a decision about.
- 13:08
Uh, instead, what you wanna do is say, "How can we build this tool and then build the interface to the LLM for this tool so that you can kind of streamline those types of, uh, actions that you wanna take?"
- 13:21
Uh, and so this is honestly really effective, especially in domains like code where there's tons of dev tools. Like, I mean, there's infinite numbers of tools that people have made to be really good at developing software that are honestly really effective, and they just have kind of weird interfaces.
- 13:38
Maybe it's a CLI. Maybe it's like Command+Shift clicking to go to definition on your VS Code. All these things that exist in, like, the world need a way for an LLM-based system to invoke and reason around the outputs.
- 13:52
Uh, so we spend a ton of our time building these AI computer interfaces. Um,
- 14:00
then I, I kind of alluded to this, but, uh, designing explicit feedback processing is I think a very critical step of grounding your agent in an external environment. Uh, in particular, if you have, for example, logs I think is the great-- is like a great example of this.
- 14:19
Uh, your CI/CD probably outputs an enormous amount of data about, you know, all the tests that ran, all the debug statements, all this kind of garbage that you don't care about.
- 14:31
If you know that you're going to need to process that data and use it at some point, it's definitely good to build into the system explicit kind of paths or decisions or tools that take all of this feedback, process it, and then maybe even do like a step which is solely about LLM reasoning.
- 14:50
Uh, I guess the example here is you have your logs, you parse through it, and then you say, "Well, what is-- You know, I know the LLM is going to want the failing tests, so let me get the failing tests and also provide a brief ex-- like explainer of what the rest of the logs were doing."
- 15:09
Uh, that type of, like, feedback processing is pretty critical, uh, into making these systems work really well. It also applies to-- I'm talking a lot about external tools and external mechanisms like the LLM or agentic system interacting with something else.
- 15:25
There's also the LLM or agentic system interacting with itself. And so as you, as the agent kind of reflects and reasons about error trajectories, processing that feedback in a meaningful way and passing it back to the LLM, uh, is super important because a lot of the time the LLM is not great at actually criticizing its own action.
- 15:44
It's just good at listening to you tell it to criticize itself. Uh, and so that we found to be very important. Uh, bounded exploration. So you definitely want your agents to be able to gather as much context as they can about the problem space.
- 16:03
As you introduce additional ways of gathering this context, probably at the beginning of the problem, not always, but probably, uh, there is a huge benefit for co-- uh, models that can handle this, like very long-context models.
- 16:18
If you use Gemini Pro 1.5 or, uh, Sonnet 3.5, or honestly, there's a lot of models now that have very long context windows. Um, you can continue to, you know, include information, but at a certain point you need to kind of say, "Let's jump into the problem."
- 16:34
And what we found is that finding the right balance of bounded exploration time is very difficult to actually know in advance, uh, and honestly requires a lot of evaluation.
- 16:46
Uh, and so if you can allow your agent to gather this context, have longer exploration phases, collect data, decide which data is or isn't relevant, and kind of begin the problem with the maximum likelihood of success, then that is, like, one of the single most important things to having a successful trajectory, uh, in the, in the kind
- 17:06
of extent. Um, and then human guidance. Uh, so this is also a little bit of a cop-out answer, but I think it's important to, like, describe. You know, as you have your agentic system interact with humans, you want to decide when in those interaction patterns do we wanna ask the human to interfere or when do we want
- 17:29
them to provide guidance? So as-- You know, with careful UX desi- design and, like, interaction design, I, I think that this can be extremely effective at allowing your systems to go from thirty or forty percent reliability to ninety or a hundred percent reliability.
- 17:46
Um, but you know, ultimately this is balancing autonomy with human oversight, and so it's a trade-off that you have to make. Um, anyway, so those are all of the, uh, things that we learned at Factory.
- 17:55
There's many more, and if you'd like to join us, we are hiring AI engineers, software engineers, go-to-market, everybody. So please give me an email. [upbeat music]