Latest / Agentic Conversations (formally mlops.community) / Tool definitions are the new Prompt Engineering
Transcript
- 0:00We've got Kiara to my left, Alex to my right.
- 0:02CEO of Arcade. Kiara is working on ifood.
- 0:06She's at process lead data scientists.
- 0:08Data Scientist. You're a lead in our book.
- 0:15You've been. Working on a project at ifood?
- 0:17You gave a talk last night. I loved it.
- 0:19I wanted to bring you on here to talk about some of your
- 0:21learnings. For those who don't know why
- 0:23Food is the biggest food delivery company in Brazil, it
- 0:27has a huge order volume, 160 million per month.
- 0:31Brazilians use it a lot. What we realise is that users
- 0:34often go to the app and they don't know what to order.
- 0:37They are a bit undecided and sometimes they get frustrated
- 0:40because they have too many options.
- 0:42It's a paradox of choice, right? So the problem we solved with
- 0:45this agent is to help them decide.
- 0:48We built something that knows who the users are and knows
- 0:52their preferences, their habits and the price range they're
- 0:57willing to pay. And we use that plus the users
- 1:01questions to suggest the best options for them, even
- 1:05proactively. And we, yeah, we have a flow
- 1:09where the user can can search and refine and then order at the
- 1:12end we prepare 2 interfaces for the agent. 1 is in the app and 1
- 1:18is on WhatsApp. WhatsApp is very popular in
- 1:22Brazil. I think there are 160 million
- 1:26active users. So they, they use it a lot.
- 1:29If you don't know, people use it to order food with just voice
- 1:33messages. It's, it's really smooth.
- 1:35They just send a voice note to the, to the restaurant and they
- 1:37can order like that. So we will leverage this
- 1:40familiarity with conversational interface.
- 1:45Both had different challenges in terms of UX, how we show results
- 1:51to the user. It often happens with agents,
- 1:54right. So the the biggest challenges
- 1:55are not AI related, but UX and adoption related.
- 2:00So the agent that we built is kind of a React agent.
- 2:05We didn't use like to fancy multi agent set up because we
- 2:08needed things to go very fast. Users are hungry, they don't
- 2:12want to wait. So we need to have the simplest
- 2:15flow. We need to make sure that the
- 2:18recommendations that we give to them are are good.
- 2:21They work for them. And we also need to to remember
- 2:24if they don't like certain foods, like the agent really
- 2:27needs to be a smart companion, almost reading their mind.
- 2:32One of the things we wanted to make sure is that the
- 2:34conversational interface was not just textual and there were
- 2:38multiple modalities for the user to talk to the agent because
- 2:42when they're hungry, they don't want to spend time typing,
- 2:44right. So we we made sure that tools
- 2:47that we built were connected to UX and UI elements so that the
- 2:51user could directly interact with them to have some short
- 2:57circuits, let's say. Like swiping.
- 3:00Also, yeah, we also implemented A swiping interface.
- 3:03Voice also. Also voice.
- 3:05Yeah, yeah. So voice is a modality, but it's
- 3:08still textual in a way. What we we did was also making
- 3:13sure that there were buttons to Click to do actions quickly
- 3:17without having to type like I want the third item that you're
- 3:20showing me and that that's not needed.
- 3:22One interesting thing we noticed is that people on WhatsApp were
- 3:25way more lenient towards this conversational behaviour than in
- 3:29app. In app, really, people really
- 3:31want to use buttons. They expect a different type of
- 3:33interface, so our tools needed to work very well.
- 3:38One of the challenges we encountered was that the two
- 3:43definitions that we had made a lot of sense for us, but it
- 3:47didn't make sense to someone external that would see them for
- 3:52the first time. We realized this afterwards, of
- 3:55course, with trailer and error. What we noticed was that we we
- 4:00created the tools right? Things made sense.
- 4:03But as soon as we were getting edge cases in production, we
- 4:06were adding this to the tool. So whenever the user wants to
- 4:11order something and you don't have enough information about
- 4:15it, make sure to call the get information tool.
- 4:18Like a lot of edge cases for this flows and it quickly
- 4:22becomes code like a false statement and that you don't
- 4:26want, right. So the exercises we made was to
- 4:30try to to standardise this tool. Like think if I would share this
- 4:35tool with another team and if they would want to use it in
- 4:39their own agent, how would I write things there?
- 4:42Like the idea is to make them as clear as possible.
- 4:45Would the name of the tool even make sense?
- 4:47Right. And after that we had a massive
- 4:50improvement in latency because we could cut a lot of tokens and
- 4:54our system become became much more stable.
- 4:57Making sure that a tool encapsulates the right things is
- 5:03the hardest part of the problem. And I think people really
- 5:07struggle with that. They they think of it as an API.
- 5:10Oh, we just have an API, we'll call it.
- 5:11Well, that's not really gonna work.
- 5:13You know, there's a lot of usability.
- 5:15It's like, well, what's the user experience gonna be?
- 5:17What's the intention that the user has?
- 5:20What's the intention that the agent needs to have?
- 5:21And then figuring out, OK, well, what's what's right,
- 5:24encapsulation of that in a tool is what everybody's struggling
- 5:28with. It's a new paradigm.
- 5:30It's a mental model. What we, what we see as a best
- 5:34practice is people try and build that is that it's, you know,
- 5:38there's like a laddering of tools.
- 5:42And so you might have a shared tool that is a, a workflow or
- 5:48maybe even an MCP server that's integrating to another service.
- 5:53But even if you have those things, the agents tend to do
- 5:56better if you then build a very domain specific or agent
- 6:00specific tool to capture that particular agents nuances.
- 6:06And so when you get that, you get both the accuracy and the
- 6:09lower latency that you're looking for because you're
- 6:13pushing more off to deterministic software.
- 6:16And then you're able to abstract out the common elements so that
- 6:19other teams can reuse them really easily.
- 6:22I love how you talk about the difference between just a basic
- 6:26API and then an agent needing to consume some kind of a service
- 6:31and that one keyword which is the intention, and how that
- 6:37intention plays such a big part in what is trying to consume.
- 6:42Yeah, I think there's a lot of confusion right now because
- 6:46every engineer is familiar with APIs and then you throw in MCP
- 6:51and people go, oh, it's the same thing.
- 6:53Let me just wrap in API and MCP and success.
- 6:57We, we have an agent and we have tools and it doesn't work for a
- 7:02bunch of reasons. MCP is just a wire protocol.
- 7:05But more importantly, tools are not APIs.
- 7:07And so in engineering speak, an API is a service contract for
- 7:13the downstream service. So we'll use Google Drive as an
- 7:16example, it has an API. That API is a service contract
- 7:19on how Google Drive works. And yes, there's a lot of work
- 7:23that goes into building a really nice Google Drive MCP server.
- 7:27Like we have to make it a bit more workflow wish to make it
- 7:32more intention based to kind of remove or at least abstract away
- 7:37in the structured inputs that are required.
- 7:39So, and LM has no idea what a Unix timestamp is.
- 7:44So your MCP tool has to like know what yesterday is as a
- 7:47concept and then translate that to Unix timestamp.
- 7:50But even with all of that, if you're building a sales agent,
- 7:54for example, and, and a, and a Rep is gonna ask, hey, I need
- 8:00the brochure for this product 'cause I'm going into this
- 8:03customer account. The agent doesn't care at all
- 8:07about Google Drive. It's not its intention.
- 8:09Its intention. It's to find the brochure that
- 8:11it needs. And so you give it even a
- 8:14pristine, beautiful Google Drive MCP server.
- 8:20You're asking for higher latency and you're asking for
- 8:22hallucinations. Because now you have to stuff
- 8:25the context window with explanations of how to find the
- 8:29brochure using the MCP server. Which means it's going to have
- 8:32to take multiple turns figuring out what the right folder is and
- 8:35where the right files are and how to determine which ones are
- 8:38brochures and which ones aren't brochures and which is the right
- 8:40brochure. But if you instead give it a get
- 8:43brochure tool, and that get brochure tool can call the
- 8:47Google Drive MCP server, then all of a sudden all the agent
- 8:52has to do is say, oh, I need a brochure.
- 8:54There's a get brochure tool. I have the context that I need.
- 8:56Let me submit that as arguments and then it's done.
- 8:58It's one call, it's low latency. You don't have to stop the
- 9:01context window. You minimize the amount of tool
- 9:04definitions that you passed over.
- 9:06And then likely much of the code inside of the get brochure tool
- 9:13is deterministic. You know, chances are it's not
- 9:16calling a model or if it is, it's calling 1 maybe once I
- 9:19think very specific. So the whole system just gets
- 9:22more accurate and faster. And So what that means is a tool
- 9:28is actually kind of the inverse of an API.
- 9:31Well, an API is a service contract of what a of what a
- 9:33downstream service looks like, like Google Drive.
- 9:35In my opinion, a tool is kind of like the service contract for
- 9:39the agents intentions. It's it's what it expects to do.
- 9:45OK, and being able to write the proper tool definition is really
- 9:51the key. It's like, it's like half the
- 9:53battle. Yeah, it's like half the battle.
- 9:54That's why evaluations are so important as well.
- 9:57Something funny happened to me six months ago.
- 9:59I asked Deep Research for a report on different GPU
- 10:03providers and it was absolutely shit.
- 10:07I couldn't figure out what each Neo Cloud Value prop was, so
- 10:11that set me off on my latest side quest of creating a
- 10:15practitioner's guide to choosing GPU's.
- 10:18I'm happy to announce this guide is now ready to see the light of
- 10:22day and you can download it for free right now by clicking the
- 10:26link in the show notes. We've already got some community
- 10:29members feedback of what they wish they would have known
- 10:34before signing a gigantic contract and I would love to
- 10:38hear from you if this provides any value or you have some
- 10:42things that the rest of the community should be thinking
- 10:45about when they're on the market for GPU's.
- 10:48Go ahead, download that resource right now completely free.
- 10:51It's in the link in the show notes.
- 10:54Well, I think also I just want to highlight such an important
- 10:58thing that you said yesterday and just now again, which is let
- 11:02somebody else look at your tool definitions, let them see if
- 11:06they can understand it. And if they can, then you're can
- 11:11try it with the agent. But if they can't, you already
- 11:14know, all right? This is probably where the
- 11:16problem is. Yeah, exactly.
- 11:19And this exercise really forces you to to have clear tool
- 11:23definitions. And I think it's also important
- 11:27to try to limit the agent choices as much as possible.
- 11:31I think if there is a lesson I've learned in this year's
- 11:33building agents, that's that's this one.
- 11:38It decreases. Hallucinations, it decreases
- 11:41context bloating as well. If you have tool that's like
- 11:46tools that are always called together, like in the get
- 11:48brochure case, it makes so much more sense to create a workflow
- 11:53and encapsulate that into a tool.
- 11:55A tool is something that LLM can use to take action.
- 11:59It doesn't need to know what's inside.
- 12:01It can be a it can even be another agent, right?
- 12:05So yeah, one way is also to use multi agent setup of course, but
- 12:10for from the point of view of the main agent, it doesn't
- 12:12really matter. Yeah, we think a lot about this.
- 12:16So, yeah, in a perfect world, you give it, you give it one
- 12:20tool, right? In a perfect world, the agent
- 12:23doesn't have to think at all. And you don't even need an LLM,
- 12:27right? Because it's faster, it's
- 12:30cheaper, it's deterministic. But that's not the real world.
- 12:35The power of an agent is that it can handle generality.
- 12:40And so there's this careful balance.
- 12:43You know, Sam, my Co founder talks about turning the knob on
- 12:46determinism. And so you can give it fewer
- 12:51tools and you and arguably today you should because you want to
- 12:58minimize error rates. But the point of all of this,
- 13:03that where all this is going, where all the investments are
- 13:07going, where the the model companies are investing heavily,
- 13:10where the orchestration systems like land graph are investing
- 13:13heavily, where we're investing heavily as a world, which is the
- 13:16opposite, where you can turn up the the, you know, the non
- 13:20determinism, you can turn up the ability to give it as many tools
- 13:24as you want and then let the agent intelligently decide what
- 13:28to do. That's very hard.
- 13:30That's where we're going to get to at the limit.
- 13:33You know, we ourselves have achieved, you know, incredible
- 13:37things in the lab that we haven't yet announced where
- 13:41we're making it possible to kind of turn that that dial up on the
- 13:46tool level. But for most people today,
- 13:49you're right. You're better off really
- 13:51thinking through in a multi agent system, you know, which
- 13:56are the right tools based on the node that I'm in or the state
- 13:58that I'm in and trying to be very specific.
- 14:03But the benefits of giving it more tools are huge because then
- 14:07you have fewer nodes, the agents more intelligent.
- 14:09But it really depends on what you're trying to do.
- 14:12Yeah. Well, so I think the we haven't
- 14:15touched on this topic, but the way output I would the way you
- 14:21construct a tool output is also important because you can put a
- 14:23lot of instructions there as well.
- 14:26So by limiting the amount of choices, I don't mean the agent
- 14:29shouldn't have tools like we should try to make it as
- 14:32deterministic as possible. We can still live freedom, but I
- 14:36think we need to be smart in where we put the information
- 14:39where we put the instructions. So if for instance, I always
- 14:44have certain options for tools after a given tool is called, I
- 14:49can put the instructions in the tool response.
- 14:52I don't need to to blow the system prompt with those
- 14:55instructions. I've heard that a ton that
- 14:56dynamically inserting context in there, that's one way of doing
- 15:00it. There's all kinds of fancy ways
- 15:03that you can make sure to leave things out that need to be left
- 15:07out. And then when it needs it, if it
- 15:10needs it, it's like this is a need to know basis here, yeah.
- 15:13Well, I think I'll, I'll go back to this concept of layering up
- 15:20tools. If you look at APIs, this
- 15:23pattern already exists. You've got your, your low level
- 15:27system APIs, you've got your workflow APIs in the back end.
- 15:33And then you have the APIs that the, that, the, that the mobile
- 15:36application or the JavaScript that kind of talks to.
- 15:38And there are like 3 different sets of APIs.
- 15:41And when you get all the way to the top where it's a JavaScript
- 15:43app talking to the back end, those APIs are very, very
- 15:47specific to that application most of the time.
- 15:50And similarly in what you're describing, and we talked a
- 15:52little more about this last night, so I'm gonna, I'm gonna
- 15:55steal from last night. You can insert UI code in the
- 15:59response, right? You can present a table.
- 16:03It doesn't have to be just text. You can present a React
- 16:07component in the tool that gets very agent specific.
- 16:12But that's kind of the point. You minimize the amount of work
- 16:15being done by the rest of the system by the tool caring and
- 16:19doing a lot of the heavy lifting.
- 16:22And you know, I'll go back to the Google Drive example, right?
- 16:26Sure, it can pull about the brochure, but it can also go
- 16:28pull a bunch of context that you know the models going to need on
- 16:32the next turn. Yeah.
- 16:35It reminds me of a conversation I had with Zach from Sierra and
- 16:39he was saying that a lot of times since they're doing voice
- 16:43agents and it's real time voice agents, what happens is they'll
- 16:47have almost like a supervisor agent that will recognize and
- 16:53preemptively assume if this conversation is going in a
- 16:59direction that I think I may need this context for, they just
- 17:04go and grab it just in case it comes up And all right, we have
- 17:07it now, I can give it to you. And then you don't have that
- 17:10user experience where the person is waiting on the other line
- 17:13because the context needs to go and you need to grab it and
- 17:18bring it back. And that takes a little bit
- 17:19longer. It's just like, let's have
- 17:21everything kind of loaded up and then if we need it, we can serve
- 17:24it to the agent that's interacting with the human.
- 17:27Well, I mean, I, I think that speaks to, you know, how quickly
- 17:31the history's changed. It's November of 2025 right now
- 17:35and the conversation is no longer about accuracy and
- 17:40consistency being the blocker to production.
- 17:43Five months ago, maybe even less, that was the only
- 17:46conversation we were having. Now we're talking about latency,
- 17:51everyone like that is the biggest problem.
- 17:53We're going to prod now, but now we're just having, you know,
- 17:55mediocre experience because we're all waiting 30 seconds.
- 17:59And, and now, and it's, it's amusing to me because if we were
- 18:03waiting 30 seconds five months ago, we would have been totally
- 18:05cool with it, but now we're like 30 seconds.
- 18:09It also connects to what I said earlier about WhatsApp versus OP
- 18:13experience. So on WhatsApp people are
- 18:15totally fine. We're waiting because they
- 18:18expected it's a it's a familiar interface.
- 18:20They don't expect it to go so fast, probably because normally
- 18:23you have another person speaking on the other side.
- 18:26But on app you're punished if you if you don't deliver in
- 18:29time. The the expectations are
- 18:32completely different even for the same user.
- 18:35In a perfect world where you had user feedback from everybody
- 18:39who's using your acting with your agent in real time, I'd be
- 18:42very curious to see a generational distribution on, on
- 18:45patients for waiting for the agent.
- 18:47Because one of the things that one of the things that I see,
- 18:50but I'm very curious is the, the generation of people who are
- 18:58let's say under 30 expect everything to be agentic.
- 19:03If they see a menu, you know, they've got to click around.
- 19:09They just, they bail, right? The later generations are the
- 19:14opposite. They expect a snappy UI, very
- 19:17snappy and responsive buttons and clicks.
- 19:21But I'm very curious how the the generational distribution might
- 19:26be on on patients for latency. And I also feel like when you're
- 19:31in WhatsApp, you can go and you can talk to your friend, you can
- 19:33look at something else and then come back.
- 19:36And so you get that because I imagine that you get a
- 19:40notification when the agent is done and it's sending you the
- 19:44information. You don't have to sit there and
- 19:46wait the 30 seconds looking at the WhatsApp chat.
- 19:49When I'm in WhatsApp, I'm talking with three or four
- 19:51people at the same time and I'm going back and forth between
- 19:54those conversations. The data that we got was really
- 19:57clear about this. That's why we spent so much time
- 20:00refining UX, thinking how to present, you know, the data to
- 20:04the user. There's a lot of work done.
- 20:06Around the Asian that is not Asian itself.
- 20:08And I think this was one of the biggest challenges.
- 20:11Also users, you know, they are familiar with AI by now, but
- 20:17it's still hard to to trust an AI interface to suggest your
- 20:21food. People are pretty sensitive
- 20:23around that. They have their preferences.
- 20:26So we really needed to build customer adoption, make it like
- 20:32also in terms of the persona that we developed, they needed
- 20:35to be friendly, but also engaging.
- 20:37We wanted people to come back, right?
- 20:40It all connects to tools at the end.
- 20:42The tools that how do you define it, how you use it, how smart
- 20:47you want it to be. Can I call it something you said
- 20:50that I think is perfectly on point today?
- 20:56The, the intersection between an application and an agent is now
- 21:01complete. And you mentioned earlier,
- 21:03right, like so many of the things that you ran into as you
- 21:06were building this weren't necessarily like the model or
- 21:10the AI, it was the, the application and, and I feel
- 21:15again, you know, speaking at least today and you know, we'll
- 21:19see what the world looks like in three months.
- 21:21That's itself a huge transition. And now we're having the debate
- 21:26is now, well, how do I make this UI work properly?
- 21:28And you know, how do I deliver this to the, to the, to the, to
- 21:32the user properly as opposed to getting all caught up in this
- 21:36super deep ML data science of the AI?
- 21:41And this also connects to evaluations.
- 21:43How do you evaluate such a system 'cause when we talk about
- 21:47evaluations, we have this standard metrics in mind like
- 21:49faithfulness, helpfulness, so you name it, but they're not
- 21:53necessarily connected to the business value that your
- 21:56upbrings like. How can you leave UX out of the
- 22:02evaluation? Like you, you need to take this
- 22:04UX elements into account. That's part of the of the user
- 22:07journey and that's also part of the agent.
- 22:09It's really really hard to to separate these two.
- 22:12We were joking last night that every developer believes so
- 22:17strongly in Test Driven development that they recommend
- 22:19every other developer do Test driven Development.
- 22:21They just too lazy to do themselves right.
- 22:24But I feel with agents, especially around evals, you
- 22:29have to start there. And so I'm curious on this
- 22:33point, which I think is a really incredible point around
- 22:37assessing the connection between business value and, and, and the
- 22:40user UI. How did you, how did you
- 22:42structure your evals? What what were the evals you you
- 22:45ultimately landed on? We have different levels of
- 22:49evals, right? You have those more connected to
- 22:53development like making sure everything works, like
- 22:56regression tests, things you can evaluate with codes that that's
- 23:00like the foundation. We also have a golden data set
- 23:04that we run what we realized after.
- 23:08I think the, the evil communities shifting towards,
- 23:12towards this as well is to that error analysis is really, really
- 23:17important. Like we, we started like many
- 23:20teams to think of metrics like is the agent helpful?
- 23:24Did the agent satisfy the user request, which are like, they're
- 23:29OK, but they're very generic. You need to write them in a way
- 23:32that is very specific for your product.
- 23:35And when you don't have a product yet, this is really,
- 23:38really hard to define. So we were lucky enough to have
- 23:43community of eye food employees. There are more than 7000 people
- 23:47employed at Eye food. So the user up and they give us
- 23:49feedback. There's nothing that can
- 23:53substitute Looking at the data, we had to go and look at the the
- 23:57traces, identify the the errors that we were seeing.
- 24:01And once you have the you have a good overview of what can go
- 24:06wrong in in your application. That's when you can build a
- 24:10taxonomy of errors. So we desire a taxonomy you, you
- 24:13can build a test set and make it, it can inform you of, you
- 24:19know, things like like how, how good you're doing with your
- 24:22evaluation and if the agent is performing better or not.
- 24:26And this is connected to LLMS judge.
- 24:29When you write an LLMS judge, having this very specific domain
- 24:35knowledge helps a lot. So we couldn't separate it from
- 24:39error analysis. It's something we learned later.
- 24:41If I would start a new project, I would start from that straight
- 24:44away. And but you're also checking for
- 24:46evals on the tools and which tools were called, was it the
- 24:51right tool? So there's like higher level
- 24:54objectives, did it satisfy the user?
- 24:56But then there's those very nuanced pieces, right?
- 24:58Yeah, we we have of course evals for the tools.
- 25:00Some of our tools are Smart Tools, you could call them
- 25:04agents themselves, like searching in our life.
- 25:07With catalog you need to take into account user preferences,
- 25:11source the items, pick the ones that have most variety and like
- 25:14match with the user intent and profile.
- 25:17So that's just a tool, but deserves a whole set of
- 25:21evaluation itself. Is that and just?
- 25:23Is that how you were able to see which tools were used together
- 25:27and then create workflows from the tools?
- 25:29We analyzed the data like we did a lot of ad hoc analysis.
- 25:35A-Team member of us is completely, completely dedicated
- 25:38to this, like assessing the quality of the agent and like
- 25:43understanding what goes on behind the scenes and also what
- 25:47goes on in front of the of the user.
- 25:49Another thing that we did, I didn't mention yet, what I
- 25:52presented yesterday was to create an evil set that was
- 25:57going to be picked up by an agent that would impersonate a
- 26:01user. So that was something that was
- 26:04defined by product team. So what what we noticed was that
- 26:10was very easy to define scenarios and what the agent
- 26:13should do in those scenarios. What was hard was to create an
- 26:17LLM judge. It could judge any scenario, but
- 26:20given a scenario you could say like the agent should do this
- 26:22and that. So we started with a set of of
- 26:26queries to find this way. And sometimes you need some pre
- 26:31processing steps to get there. Like for instance when you have
- 26:35an item in the cart, like when you start to make sure there is
- 26:37already an item, things like that.
- 26:40And then we we built an interface between the agent that
- 26:45would would test our endpoint and the endpoint.
- 26:49And this interface made sure that when we were returning UI
- 26:51elements, these were also shown to the user impersonating agent.
- 26:56So we like the agent could choose to click on certain UI
- 27:00elements. And at the end we would judge
- 27:02the outcome of all of this. So I think this allowed us to
- 27:07also test the UX in a way it doesn't substitute AB testing.
- 27:12Of course, that's like online testing is another story, but it
- 27:17helped us to identify regressions.
- 27:21On the tool side, how much work went into evaluating the tools
- 27:25themselves to make sure that you design them or at least their
- 27:28definitions properly and the parameters the parameter
- 27:31definitions properly to see if the model was selecting them
- 27:35correctly at the right time? Yeah.
- 27:37So we we did evaluate if the agent was calling the right
- 27:42tools. Of course depends on the tools.
- 27:46I think like some tools are so clear to use, like create cart,
- 27:51you know, some definitions are so clear that you don't need to
- 27:55spend too much time on that. You just want to know that the
- 27:58agent can pick it up correctly. But some others are whole
- 28:02workflows, like searching what I was talking about before that
- 28:06had a lot of evaluation being done.
- 28:08And there is still a lot going on there because it's building a
- 28:12recommendation system basically, right?
- 28:16Yeah. So like what we have is a user
- 28:21who's searching for something or maybe just exploring options.
- 28:23They just say I'm hungry, surprise me, give me promotions
- 28:27without any intent. What they're building is is a
- 28:30home page right in the agent. So you want to show options that
- 28:36are really, really good for them, even when they don't
- 28:39specify anything. So that's a yeah, that's a
- 28:43recommendation problem. Is there ways that you're
- 28:48plugging in? Because I imagine when it comes
- 28:50to the workflow, you're plugging in structured data and
- 28:53unstructured data in this, like you're giving the context to the
- 28:56agent of the last three, five meals that this person ordered,
- 29:02when they ordered it, the timing, what they like in
- 29:05general, All of these features quote, UN quote that you would
- 29:09normally put in the recommendation model, but now
- 29:13you're serving it up to the agent in different moments of
- 29:17that workflow. Yeah, Yeah, exactly.
- 29:21We have a team at Process AI that is completely dedicated to
- 29:25building a model we call LCM large commerce model.
- 29:29So it's a model that was fine-tuned based on user
- 29:34behavior in our OPS in the ecosystem.
- 29:37So whether user searches for something like something or
- 29:41there's. So using this model, we build
- 29:45representations of who the users are.
- 29:47So it goes way beyond the last orders.
- 29:50We know what type of customer they are.
- 29:53We have some segmentation as well in there that's occurred
- 29:56naturally while while using this model.
- 30:01We know their their patterns. So that that's like the core of
- 30:05who the user is. And we have similar things for
- 30:08restaurants items. So it's, it's much more nuanced
- 30:12than just a list of like order history.
- 30:17So we use that in the main agent to to select the best way to
- 30:21communicate to them, like select to select the tools in the best
- 30:25way. But within the tools also we are
- 30:27connecting to white food recommendation system.
- 30:30So when we plug dishes, we also have models that were trained to
- 30:37to show the best recommendation. So it it's in several places
- 30:40that we're doing this. It's almost like there's a,
- 30:43yeah, there's like a Rexis tool in a way or like I'm going to
- 30:48use the recommendation tool and it's calls a machine learning
- 30:51model. Yeah, yeah.
- 30:53But there are several models for different use cases for that.
- 30:57Plus the agent has the brain and we have LLM friendly
- 31:00representation of the user. Like for instance, if you order
- 31:05pizza in Brazil, you can put a lot of toppings and
- 31:08customization. If you always put pepperoni on
- 31:11your pizza, I know you're a meat lover.
- 31:14This you don't see it from the order history, but I can extract
- 31:17this nuanced information. So the next time you say I want
- 31:21something healthy, I'm going to propose you something with meat
- 31:24because I know you like it, right?
- 31:27So the. Yeah, there is a lot of emergent
- 31:29patterns that. You just can't get with
- 31:32traditional machine learning models because they're so
- 31:35specific. And so here you can infer it
- 31:38because of the LLM being that intelligence.
- 31:41Yeah, exactly. That's the the beauty of
- 31:44exploring this field and we learn this as we go.
- 31:48There is so much, yeah, so many learnings on this.
- 31:52And we also get feedback from the user which is amazing to
- 31:56see. I feel like, I feel like I, I'm
- 31:58now like excited for this app. What are you guys?
- 32:00When are you guys going to be in San Francisco?
- 32:05Yeah, that's it. We got to go to Brazil.
- 32:08That's the easier option than them coming to San Fran.
- 32:11Do you have some kind of a checker agent that makes sure
- 32:15what's happening is actually what should be happening, like
- 32:19overseer? I don't know what that would how
- 32:22you architect it, but. We have a system in place for
- 32:25guardrails and making sure you know the response that we were
- 32:30given as makes sense let's say, but we didn't choose a full
- 32:38blown multi agent set up because we wanted to keep it simple.
- 32:42Our use case is relatively simple.
- 32:44I think what's, what's difficult is given the right
- 32:47recommendations, having the right context, but you know that
- 32:53the, the context of the agent is pretty self-contained.
- 32:57We, we don't have an agent to schedule a trip, for instance.
- 33:00That would be another agent. But the set of tools that our
- 33:03agent has are, you know, compatible with each other.
- 33:08We, we don't need another agent for that.
- 33:10What we did, however, was to have a dynamic system prompt
- 33:13that would change based on the state so that we would not need
- 33:17to to have so much information every time.
- 33:20And yeah, that of course help with latency and having less
- 33:23choices to make to go back to the stratification we were
- 33:28talking about earlier. The way that someone interacts
- 33:31with ifood on WhatsApp is still almost like through the ifood
- 33:37app, but that's just to verify their profile and then they go
- 33:40back to WhatsApp. Did I understand it?
- 33:42Correctly to kick off the first authorization flow.
- 33:46So we need to make sure that you or you, you know, connect to
- 33:50your profile. So yeah, they didn't.
- 33:54If they don't have an account, if they write to us from a phone
- 33:56number, they don't have an iPhone account, we need to make
- 33:59sure that they create 1 like. And then you have all the
- 34:03information about that user in ifood.
- 34:05Yeah. And we connect, Yeah.
- 34:06Including the payment options and all of that stuff.
- 34:09And so the agent, I'm assuming just says, do you want to use
- 34:14your regular credit card or do you want to use one of these
- 34:17options? There are some systems in Brazil
- 34:20for payments that we are connecting with.
- 34:23Yeah, but. I remember Nishi talking to me
- 34:26about how hard it was to context engineer the types of payment
- 34:32systems that people would ask for.
- 34:35And it goes back to what you were talking about at the
- 34:38beginning of you end up just adding all these edge cases to
- 34:42the prompt and before you know it your prompt is so bloated.
- 34:46And if last night 6 hour stream taught me anything, it is like
- 34:52the least amount of context as necessary.
- 34:55If you think about what a user can ask in an app to order
- 34:58foods, they could ask for specific payment method, price
- 35:03range, delivery time, like distance from the restaurant or
- 35:09they're vegetarian, they're one gluten free discounts.
- 35:12They have a specific membership that they want to like that
- 35:16allows them specific discounts. They want to use that.
- 35:19Like there is so much. It's really impossible to give
- 35:23all this information to the agent because then you need to
- 35:26like the agent needs to convert that in the into a query, right?
- 35:30If you give all this information to the main agents, it's going
- 35:32to blow up the the prompt. So what we did was like having
- 35:38converting the query into something more LLM friendly with
- 35:42some basic knowledge from the main agent and then giving
- 35:45context of like who the user, what the user wants.
- 35:49And in a way this is like preparing a task for another
- 35:53agent. So we would delegate and the
- 35:55main agent doesn't need to worry about anything.
- 35:58And that first touch is just through like a small language
- 36:03model or sentiment analysis or it still is an LLM call.
- 36:07No, we, we use an LLM straight away for that.
- 36:09Yeah, it's it's simpler, but we implemented some classification
- 36:15later in the way. So yeah, we we have some
- 36:18classifier steps to simplify. Nice.
- 36:22How much are you using the foundation foundational models
- 36:26like Open AI or Claude versus your own?
- 36:31I would say we use foundational almost everywhere.
- 36:36We use smaller models, fine-tuned models for specific
- 36:39steps in the workflow like creating representations for the
- 36:44users for instance. It's a task where there is a
- 36:46fine-tuned model. But for the conversational part
- 36:51we haven't explored yet. I think foundational model are
- 36:56models are so good right now that if you don't need to fine
- 37:00tune, that's probably you shouldn't do it.
- 37:04I think I hear a lot about fine tuning, like maybe we should
- 37:08fine tune that to fix the output.
- 37:09No, it's it's just a specification problem.
- 37:11You're not specifying enough or you're maybe you're specifying
- 37:16too much in the front. If something can be fixed there,
- 37:20that's the first step. Well, I think it's a great, I
- 37:22think it's a, that's a great point I'd love to dig into
- 37:24because you know, you know so much more about this than most
- 37:27people. Where do you draw the line on
- 37:32when and where to fine tune me? You guys have an incredible
- 37:35amount of data and I know that much of it is leveraged.
- 37:42Where do you decide to do that work?
- 37:44So I think one of the biggest reasons why you might want to
- 37:49fine tune is cost and latency as well.
- 37:53If you're building a model for a very specific task and the model
- 37:57doesn't need to be able to converse with the user.
- 38:01They just need to take user data and build a representation of
- 38:05the user, for instance. So it's a very specific task and
- 38:08then you you want to scale it to 60 million users and you want to
- 38:11do it every day. Foundational model is not going
- 38:15to going to work very well. It's going to be extremely
- 38:19expensive. Yeah.
- 38:20So and also performance wise, right, because at the end we're
- 38:27talking about embeddings and you want, if you, if you're working
- 38:31on a very specific space like food delivery, you want to, we
- 38:36want the model to clearly differentiate terms that might
- 38:39look the same, but are actually semantically different.
- 38:43And that nuance you don't get in foundation model.
- 38:48So you at the end when you're fine tuning, you're changing the
- 38:52space where your model moves and you're making this the meaning
- 38:58of words that might look similar, more far apart from
- 39:00each other so that that that thing you want to do.
- 39:05And we proved that for our application, it's better.
- 39:09Actually we AB tested this and yeah, it get better results.
- 39:15If you want to just kick start the projects, then yeah, first,
- 39:20you know, make it work, then make it cheap, then make it fast
- 39:22etcetera. Yeah.
- 39:23It's interesting we see this as well with a lot of customers is
- 39:29again today versus last year people used to start with all of
- 39:35their own data and with fine tuning and that's that was the
- 39:38beginning of the journey and now today it's the end of the
- 39:41journey. You instead you throw a
- 39:42foundational model at it. Most of the time it's good
- 39:45enough. You do some prompt engineering,
- 39:47you touch some tools and you're good to go.
- 39:49But when you want that extra last inch, now that's where
- 39:52everybody's using fine tuning. I'm curious within the work that
- 39:57you've been doing, where's the dividing line of fine tuning an
- 40:03existing large language model, whether it's a foundational
- 40:07model or open source one, versus building your own model that
- 40:12might not be LLM based? Yeah, it's very fine line.
- 40:15Sometimes I think regular like more traditional machine
- 40:20learning approaches are good to get patterns from the data like
- 40:23when the data is numeric or when you have graph type of data like
- 40:29collaborative filtering for instance.
- 40:31We're also working on that. I think traditional ML can find
- 40:37patterns that and an LLM like conversational type of LLM would
- 40:43not necessarily find because it can leverage also connection
- 40:47between user data points. You're embedding different type
- 40:51of information. So for instance, to give an
- 40:54example with collaborative filtering, the the model might
- 41:00know that we are similar users and I ordered some foods that
- 41:04you haven't ordered yet and then we'll suggest you this food.
- 41:06I don't necessarily have this connection in an LLM that is
- 41:10conversational. So yeah, that's there is a very
- 41:16fine line. What what we're trying to do is
- 41:18use LLM for finding patterns based on the user behavior.
- 41:25Things that are not just hard data like the the example I
- 41:29mentioned before where you ordered pizza with pepperoni.
- 41:32You might be a meat lover. I know you're not.
- 41:34But from the opposite. Yeah, but I.
- 41:37Understand but you know just to give you an idea.
- 41:40And then I can extract the filter that I will use in every
- 41:44query to to filter the data that I show you.
- 41:50Yeah, with traditional machine learning, I wouldn't get these
- 41:52patterns out. Yeah, it's it's a hard question,
- 41:57I think because it yeah, at the end it boils down on what what
- 42:01type of data you want to show to the user.
- 42:05I think for data to fit to LLMS, sometimes it makes more sense to
- 42:10get like text based representation.
- 42:13But when you we need to do operation like search in a
- 42:17database, yeah, that you need vectors, you need to to
- 42:22optimize. Yeah, based on vector
- 42:24representations. Yeah, it's a, it's a very good
- 42:29question. Yeah.
- 42:30It's cool to hear that you're still grappling with it and
- 42:32there are these pros and cons of each and obviously it's always a
- 42:36trade off. I like the idea of how you can
- 42:40leverage 1 and at the same time kind of plug in the machine
- 42:45learning models. So it's like the majority of the
- 42:49stuff is happening with the large language models and the
- 42:51agents that are going and they're doing stuff and maybe
- 42:54one node or one tool that it can call is a machine learning
- 42:56model. I think one of the things that I
- 42:58find most, most interesting about process is how far, how
- 43:03far ahead and how advanced you folks are in agent building.
- 43:08And you've got a target for 30,000 agents in the
- 43:10organization, which you know, which is funny because you know,
- 43:14we can laugh about how crazy that number is, but then how
- 43:16many do you actually have right now?
- 43:18It's it's more than anyone else and so.
- 43:21Not that far off. Yeah, like you, you have at
- 43:24least over 1000 at this point. And yeah, over 10,000.
- 43:27Yeah. And so, you know, we can joke
- 43:29about 30,000, but most people are struggling to get one out
- 43:32right. And and we've talked and we've
- 43:35talked a fair bit and I'm sure we'll talk more in in different
- 43:37sessions about how what it took to get there both from a
- 43:40technical perspective and from an organizational perspective.
- 43:43But you had made a really interesting point about tools
- 43:48and and how, you know, different teams start in one way, but then
- 43:54eventually you guys are thinking you guys start layering in
- 43:57governance. I'm wondering if you could share
- 43:58more about that. Yeah, this is I think transition
- 44:03and happens in an other organization as well where we
- 44:06are approaching Gen. AI and we have very vertical
- 44:11type of vision. We're trying to build a product
- 44:13for specific use case, right. So what what you do if you're a
- 44:19team building this is you go very old, lean and very deep in
- 44:23this vertical direction. But if you do this and you
- 44:27multiply it for 1020 teams in our organization, you realise
- 44:30that often similar tools are being built, for instance,
- 44:36answer the user questions using knowledge base, right?
- 44:41So what what I think tools are really good for is also creating
- 44:47layers of governance where for instance, in the case of the
- 44:51knowledge base, there is a team that makes sure that that works
- 44:54very well and then can be shared across different teams.
- 44:58The the trick here is that the teams defining these rules needs
- 45:04to be very LLM savvy as well because the interface that this
- 45:08tool would use needs to be used by an agent.
- 45:11What we see sometimes is that these definitions get to
- 45:15verbose. There is a lot of requirements
- 45:18for how the tool should be used and like the language that
- 45:22should be used. Sometimes you don't need all of
- 45:23that and you really need engineers to work together to to
- 45:28define the interfaces of this. And I think if you nailed that,
- 45:32then you can really scale up because you can then share tools
- 45:35across the organization. And this also applies to agents
- 45:38by the way in multi agent setups.
- 45:41It's having that ownership of the tools, being able to clearly
- 45:44define this is your tool. You're expected to keep it up to
- 45:49date to make sure that it's working and that the agent can
- 45:54consume it in a way. Yeah, exactly.
- 45:58And when you create tools that can that are directly connected
- 46:04to the public image of the company, like you're defining
- 46:08persona that represents the company, then the type of people
- 46:13who write these rules are not developers, right.
- 46:15So the the person defining these rules maybe is a designer or
- 46:21like product team, but you cannot give them to the agent as
- 46:25they are. You need some some translation
- 46:28layer in here. And I think, yeah, governance is
- 46:31really it's really important and it's important to get it right
- 46:35because once you do it once, then you know, it's it's more
- 46:39maintainable. And if I would let ILO be used
- 46:43by other agents, for instance like expose it through agent to
- 46:47agent framework or I'll let other teams use it, then I also
- 46:52need to make sure that that is used correctly.
- 46:57Yeah, I, I think, I think what we've been seeing, which echoes
- 47:02your experience is it's very easy for an agent team to get
- 47:09their agent working in, you know, in a silo and they'll
- 47:15build the tools they need and, and it'll work.
- 47:20But there's almost always an organizational context that
- 47:26agent team is focused on its agent, but its manager or the
- 47:30director or the VP or the CTO or CIO is looking horizontally.
- 47:35And they're the most organizations are typically
- 47:38building more than one agent. And the same problems that
- 47:42everybody saw in the last cycle with APIs is, is the exact same
- 47:48problem now with tools, MCP or not.
- 47:52Like take the wire protocol out of it.
- 47:54It's OK, great. These two people are inserting
- 47:57user records into the CRM. Why do they have two different
- 48:02tools that are being maintained separately with different logic?
- 48:06Like that should all be the same thing.
- 48:07Let's elevate that and make that a shared tool.
- 48:10But then when you do that, you suddenly introduce a governance
- 48:13problem that's never been resolved before.
- 48:15Which tools? Well, how you know, how do we do
- 48:17versioning? How do we do ownership?
- 48:20Who gets access to which tools? Team A, which is working on
- 48:25customer facing. We talked about this last night.
- 48:27Agent A is a customer facing agent and Agent B is an
- 48:31internally facing agent. And those teams probably
- 48:35shouldn't be seeing the same tools because the policy at an
- 48:38organization, I think, which is the policy here is an internally
- 48:42facing agents shouldn't have any access to anything outside of
- 48:45the organization. And so like sharing is the, the
- 48:50beginning of it, but one, the moment you start sharing tools,
- 48:53which is a, a best practice, it looks at first like a
- 48:56productivity gain, but immediately you inherit a bunch
- 48:59of governance challenges and governance gains.
- 49:03So for example, who has access to the tool, this agent, What's
- 49:10the policy for how access is being doled out, not just to the
- 49:14individual developers on different teams, but to the
- 49:17nature of the agent itself, internally facing agent versus
- 49:20externally facing agent? And how do you handle versioning
- 49:24and if and if you're the one that wrote the user insert tool
- 49:27for the CRM and my agent depends on it, who owns the tool?
- 49:33Like who's in charge of bug fixing it?
- 49:36Is it me? Is it you?
- 49:37Yeah. And when this impacts multiple
- 49:40agents, like changing a tool definition is actually changing
- 49:45the the prompt that the agent has access to.
- 49:48So it's crucial to evaluate because if you, if you change
- 49:52that, you're going to impact all these downstream tasks.
- 49:55And it's, yeah, it's really crucial to have good evaluations
- 49:58in place, not just for the tool, but for how the agent will use
- 50:02this tool and will interact with that.
- 50:04And and I to link it back. I mean, I think this is where
- 50:08laddering up tools really matters because my agent
- 50:13consuming the shared, you know, user insertion into the CRM tool
- 50:18is going to likely have different set of evals than your
- 50:22tool because we just have different contexts.
- 50:24We have different intentions. And and I'm gonna blow your tool
- 50:31irreparably for all the other agents if I try and insert all
- 50:34of my needs and demands onto it. But if I then if I'm just, if I
- 50:39instead I just layer up my own domain specific tool or agent
- 50:44specific tool that sits on top of yours, then suddenly sharing
- 50:48and repeatability still works without having to sacrifice
- 50:54accuracy and consistency and latency for for the agent.
- 50:58So now I can share that we can share the same tool and I can
- 51:01have my own little domain specific issues with my own set
- 51:04of evals that are maintained in my agent separate from yours.
- 51:06I see what you're saying, where it's like you normally have to
- 51:10go really deep on something and really craft it so that you
- 51:15understand the problem set, you understand how to build that
- 51:18agent in the best way possible. But at the same time, I feel
- 51:21like if you're getting that detailed with it, you're now
- 51:27creating a whole lot more work for every team.
- 51:30Yeah, you are, you are absolutely creating more work.
- 51:33But this is this is the trade off, right?
- 51:34It's all about knobs and dials. It's, if you're a single agent
- 51:39team, you don't need this, right?
- 51:42But the and, and, and the individual agent developers, you
- 51:45know, aren't going to be thinking about this.
- 51:48It's the moment that you're running an agent program, you
- 51:51know, call it a center of excellence or whatever.
- 51:54I mean, what, the moment you're building multiple agents across
- 51:57an organization, if you're a Fortune 2000 and you're, you've
- 52:02even here, you've amended for 30,000 agents.
- 52:05And this becomes a requirement at scale.
- 52:09If everybody's rebuilding the wheel every single time you have
- 52:15you, the productivity gains of, of flipping the script become
- 52:21pretty high. Because when I go start my, my
- 52:24new agent, I don't have to go build all this stuff from
- 52:28scratch. I can go see in the registry,
- 52:31Oh, what are all the different tools that already exist?
- 52:34Oh, let me pick that one. Let me pick this one.
- 52:36Let me pick this one and then I can build my own tools on top,
- 52:39personalize them and everybody wins.
- 52:42But that's just develop a productivity piece.
- 52:44If you think about senior leadership and and the
- 52:48governance problems, it becomes possible to put your arms around
- 52:52it. If you don't have any kind of
- 52:55reuse for reusability or registry or things like that,
- 53:00you know, when the CSO or the compliance team or senior
- 53:03leadership worried about performance wants to go see
- 53:07what's happening, they have to go look at what 300,000 tools?
- 53:12That's not going to work. They're all marginally different
- 53:15and that's that's a fail, right? Yeah, at the same time, there is
- 53:17no substitute for really digging deep into a problem, because
- 53:22starting the other way around, I think would be a disaster.
- 53:25Like if you start from defining what tools can be built for the
- 53:29teams before even you're solving the business problem, that is a
- 53:34recipe for disaster. Like you're going to over
- 53:36engineer things and like this was going to have to be changed
- 53:39so many times. So yeah, what we found at works
- 53:43was really to to build something, you know, you know,
- 53:47like building an agent in production is way different from
- 53:50thinking about an agent like you, you you find challenges you
- 53:55didn't even think about. So before you have done that, I
- 53:58think you shouldn't even even start thinking about how this
- 54:03can be shared across teams. I, I, I, I agree with a few
- 54:09nuances. I think that's, that's generally
- 54:11the best practice. We, again, we talked to a lot of
- 54:14customers and they're all coming from different angles, right?
- 54:16You know, there's a particular agent team that needs to go
- 54:19unlock a particular piece of functionality.
- 54:21They want to talk to e-mail or calendar or, you know, some
- 54:26custom service. And then we'll also talk to CIOs
- 54:30and, you know, their VPS who are trying to architect the
- 54:33organization and the enterprise for agents.
- 54:36And we, we have a saying internally, which is regardless
- 54:42of where we come in as a vendor and to help an organization, we
- 54:46always drive the conversation to the first agent for that same
- 54:51reason. It's like, well, before anybody
- 54:53gets caught off, you know, in, in building like the Sistine
- 54:57Chapel of, of complex agent governance and systems, let
- 55:01let's first make sure that you've got your agent, your
- 55:05first agent at least successful and working and you got the
- 55:08right patterns. And you're absolutely right.
- 55:11You should go deep 1st and then once it's working, then abstract
- 55:14out and then start optimizing for sharing and reusability and
- 55:18all that fun stuff. But you can't start there.
- 55:20Whoever with some third party tools that are, you know, pretty
- 55:25widely accepted by now, like managing calendar emails, I
- 55:29think, you know, that's a, it's a good bet to, yeah.
- 55:33Those are easier, which is how you guys use arts.
- 55:35Good reason to incorporate those, right?
- 55:38Everybody should use Arcade. And on that we get.
- 55:43Dude the governance piece is wild.
- 55:46Oh my God, It's become like the conversation everywhere.
- 55:49It's crazy because like three months ago I never heard the
- 55:53word. Well, I remember I told you
- 55:55after I was in San Francisco, I was like, oh, you see?
- 55:57So I was talking about. Government, when you and I
- 55:59spoke, I was like governance. Now it has been every single
- 56:02conversation we're in. It is just, it's wild to me how
- 56:05fast everything's changing. The maturity curve for most
- 56:08organizations is rapid. We notice also teams using multi
- 56:12agent setups way more and sometimes agents look like they
- 56:17have multi agent setup where agents look very similar to each
- 56:19other. And when when you start to dig
- 56:22deeper into the reasons, it's governance.
- 56:24Yeah. I'll tell you what I'm seeing
- 56:26though, my bet a year from now when we do this podcast again, I
- 56:30think multi agent systems are going to be a lot less common.
- 56:32Oh, interesting. Yeah, we're starting to see the
- 56:34early signs of it. Felt like as we talked through
- 56:38this, agents and tools can be almost like interchanged in a
- 56:43way. Yeah, actually we actually our
- 56:46sales engineer Shub, who is incredible, he he basically
- 56:53proved to all of us in a really dramatic way.
- 56:56I don't think he's even doing it on purpose that an agent is
- 56:59really just a collection of prompts and tools.
- 57:02And people say it, but nobody really believes it, Susan that
- 57:05they all want to use all all the big systems and Shub just like
- 57:08slammed together a little YAML based agent builder and it
- 57:12fucking works. Like take that.
- 57:14Yeah, it just works. You just really just prompt the
- 57:16tools and you're done. And it's got land graph under
- 57:18the hood. But it's wild, right.
- 57:21And what we've been seeing is the scope definition of a of an
- 57:27of a sub agent is is getting bigger and bigger and bigger as
- 57:33context windows get bigger as it can handle more tools all of a
- 57:37sudden like you're seeing bigger sub agents.
- 57:40And so if you take that to the limit like you're not going to
- 57:43see as complex of sub agents as you've both been saying.