{"title": "AI Talks", "generated": "2026-09-12T14:42:03+00:00", "count": 102, "about": "Sentence-level transcripts of every talk. start and end are seconds into the video; a sentence's id is its line anchor in the HTML transcript and its cue id in the WebVTT. Deep link: url + '&t=' + int(start) + 's'.", "endpoints": {"index": "/api/index.json", "talk": "/api/talks/{id}.json", "summary": "/#{id}", "transcript_html": "/transcripts/{id}.html", "transcript_txt": "/transcripts/{id}.txt", "transcript_vtt": "/transcripts/{id}.vtt", "transcripts_index": "/transcripts/", "transcripts_all_txt": "/transcripts/all.txt", "transcripts_all_json": "/transcripts/all.json"}, "talks": [{"id": "-jY2T2PiJBE", "title": "MCP Apps: Extending the Frontier — Ido Salomon & Liad Yosef", "channel": "AI Engineer", "duration": 1118, "upload_date": null, "url": "https://www.youtube.com/watch?v=-jY2T2PiJBE", "api": "/api/talks/-jY2T2PiJBE.json", "summary_url": "/#-jY2T2PiJBE", "transcript": {"html": "/transcripts/-jY2T2PiJBE.html", "txt": "/transcripts/-jY2T2PiJBE.txt", "vtt": "/transcripts/-jY2T2PiJBE.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 13.44, "text": "Hi."}, {"id": "s3", "start": 13.44, "end": 15.4, "text": "So, hi everyone."}, {"id": "s4", "start": 15.4, "end": 18.72, "text": "We built this talk yesterday, so it might be out of date."}, {"id": "s5", "start": 18.72, "end": 26.0, "text": "I'm Ido Sadan, I am the creator of MCPY and co-creator and maintainer of MCP apps in the MCP steering committee."}, {"id": "s6", "start": 26.0, "end": 30.2, "text": "I also created Adam Craft if you were in the talk yesterday."}, {"id": "s7", "start": 30.2, "end": 30.84, "text": "I'm the Adi."}, {"id": "s8", "start": 30.84, "end": 32.119, "text": "I work with Ido on MCPY."}, {"id": "s9", "start": 32.119, "end": 39.88, "text": "I'm also the co-creator and maintainer of the MCP apps spec and recently co-founded Aura, which is a research lab for the agentic web."}, {"id": "s10", "start": 39.88, "end": 44.12, "text": "And we're going to talk a little bit more about it later."}, {"id": "s11", "start": 45.68, "end": 47.84, "text": "So, MCP apps are all around us."}, {"id": "s12", "start": 47.84, "end": 59.0, "text": "You might not even realize it, but all the fancy apps you have today in ChatGPT and VS Code and Slack are actually all based on MCP and the MCP app spec."}, {"id": "s13", "start": 61.04, "end": 65.0, "text": "And if we take a step back and we ask, why do we need MCP apps?"}, {"id": "s14", "start": 65.0, "end": 67.6, "text": "What's the idea behind MCPY or MCP apps?"}, {"id": "s15", "start": 67.6, "end": 78.56, "text": "So, when we work with chats, when we chat client clients, we used to text because that's the natural interface, but text is really the worst way to convey a lot of information, right?"}, {"id": "s16", "start": 78.56, "end": 80.72, "text": "Because we don't want walls of text."}, {"id": "s17", "start": 80.72, "end": 85.28, "text": "And actually, this is the main blocker from companies to build an MCP server."}, {"id": "s18", "start": 85.28, "end": 87.84, "text": "They don't want to be reduced to a textual database."}, {"id": "s19", "start": 87.84, "end": 90.44, "text": "They don't want to lose their brand identity in the process."}, {"id": "s20", "start": 90.44, "end": 97.88, "text": "They don't want their data that they work so hard on um building the UX for to look something like this."}, {"id": "s21", "start": 97.88, "end": 106.92, "text": "So, instead of this, what if the apps could just send their UI to the chat, right?"}, {"id": "s22", "start": 106.92, "end": 111.6, "text": "What if every service and every brand could just send their user interface to the chat?"}, {"id": "s23", "start": 111.6, "end": 123.76, "text": "So, instead of us looking at something like this, we could just have the apps send their own identity, their own UI chunks into the chat, and then we take a look and we see, \"Okay, yeah, I know this is Shopify in the middle."}, {"id": "s24", "start": 123.76, "end": 125.08, "text": "I know this is Hugging Face."}, {"id": "s25", "start": 125.08, "end": 126.36, "text": "I know this is Monday.\""}, {"id": "s26", "start": 126.36, "end": 130.64, "text": "And what if we don't want to do it only as a visualization?"}, {"id": "s27", "start": 130.64, "end": 132.68, "text": "We also want to do it interactive."}, {"id": "s28", "start": 132.68, "end": 138.32, "text": "So, we want the users to be able to actually interact with Hugging Face, for example."}, {"id": "s29", "start": 138.36, "end": 142.52, "text": "And for Hugging Face to actually do something with it."}, {"id": "s30", "start": 142.6, "end": 155.36, "text": "So, we don't have to imagine the future as we said with MCPUI, which I created in May last year, and took that, which is essentially like an open protocol for"}, {"id": "s31", "start": 155.36, "end": 157.959, "text": "interactive applications over MCP."}, {"id": "s32", "start": 157.959, "end": 166.88, "text": "So, it's not only how you transmit UI, but also how that UI, that application connect connect communicates with the host."}, {"id": "s33", "start": 166.88, "end": 180.2, "text": "And just a few months ago, we partnered with Anthropic and OpenAI to create the official extension to MCP, which we call MCP apps based on MCPUI, MCP SDK, and other"}, {"id": "s34", "start": 180.2, "end": 181.88, "text": "solutions in the field."}, {"id": "s35", "start": 181.88, "end": 193.04, "text": "Their launch was pretty cool with Claude and VS Code supporting it to begin with, but now obviously also OpenAI and others have adopted it."}, {"id": "s36", "start": 193.239, "end": 197.32, "text": "Yeah, and there are a lot of early adopters to MCPUI."}, {"id": "s37", "start": 197.32, "end": 199.76, "text": "11 Labs, Shopify, Postman."}, {"id": "s38", "start": 199.76, "end": 203.88, "text": "Those were one of the first first companies to support it back like a year ago."}, {"id": "s39", "start": 203.88, "end": 207.519, "text": "They were the one believing in this spec, in this vision."}, {"id": "s40", "start": 207.519, "end": 210.04, "text": "And Goose also supported it."}, {"id": "s41", "start": 210.04, "end": 216.519, "text": "And it's a it's a funny anecdote because today Block released their agentic commerce solution that is based on MCP apps."}, {"id": "s42", "start": 216.519, "end": 225.0, "text": "So, a year ago Goose was the first client to support MCPUI, and now it is part of Block's product uh product."}, {"id": "s43", "start": 225.0, "end": 229.72, "text": "And today we have a lot more clients that are supporting MCPUI."}, {"id": "s44", "start": 229.72, "end": 237.84, "text": "We We Cursor, and we have co-pilot and GitHub ChatGPT support MCP apps."}, {"id": "s45", "start": 237.84, "end": 248.04, "text": "ChatGPT apps that you know are actually based on MCP apps and open eye actually recommend using MCP apps as the protocol to build ChatGPT apps."}, {"id": "s46", "start": 248.04, "end": 252.48, "text": "Postman and a lot more and obviously Cloud supports MCP apps."}, {"id": "s47", "start": 252.48, "end": 255.24, "text": "But we also have a lot large community around it, right?"}, {"id": "s48", "start": 255.24, "end": 264.04, "text": "So people start to to build plugins to MCP apps and um integrations to different agents and also courses on how to build MCP apps."}, {"id": "s49", "start": 264.04, "end": 266.44, "text": "This is by integration for MCP apps."}, {"id": "s50", "start": 266.44, "end": 268.84, "text": "So we have a lot community around it."}, {"id": "s51", "start": 268.84, "end": 281.52, "text": "Um There's a repo X app which is the repo for MCP apps where everyone can just come and propose PRs and ideas of how to how to extend this spec and we have a work group in the MCP committee"}, {"id": "s52", "start": 281.52, "end": 283.08, "text": "and we're convening every 3 weeks."}, {"id": "s53", "start": 283.08, "end": 291.64, "text": "We have a tri-weekly meeting on the future of the protocol and how to make the spec not just serve the bigger apps but also the community."}, {"id": "s54", "start": 291.64, "end": 298.56, "text": "So it's an open working group with Anthropic, Open AI and all the partners in in the MCP apps protocol."}, {"id": "s55", "start": 298.68, "end": 303.32, "text": "Okay, so let's look at a few of the core concepts of MCP apps."}, {"id": "s56", "start": 303.32, "end": 308.72, "text": "The first and most obvious one is how do we even transmit UI over MCP?"}, {"id": "s57", "start": 308.72, "end": 320.76, "text": "So if we look at this example of Cloud like you know agent times like a few months ago and I would ask something best case scenario it would reach out to my MCP server"}, {"id": "s58", "start": 320.76, "end": 326.52, "text": "and it would get back a textual response which is obviously suboptimal."}, {"id": "s59", "start": 326.52, "end": 331.04, "text": "So let's say I do want to get some something better."}, {"id": "s60", "start": 331.04, "end": 338.28, "text": "So now I can use existing MCP primitives like a resource and now return HTML."}, {"id": "s61", "start": 338.28, "end": 349.96, "text": "And I can take that HTML and since Cloud supports MCP apps it can turn it into an interactive application of the best soundtrack in the world."}, {"id": "s62", "start": 350.52, "end": 353.8, "text": "And what if you wanted to be really interactive, right?"}, {"id": "s63", "start": 353.8, "end": 355.88, "text": "This is nice because it shows the best soundtrack in the world."}, {"id": "s64", "start": 355.88, "end": 358.6, "text": "What if I want to favorite one of the songs there?"}, {"id": "s65", "start": 358.6, "end": 360.6, "text": "I want interaction."}, {"id": "s66", "start": 360.6, "end": 364.76, "text": "I want communication between the app and the host."}, {"id": "s67", "start": 364.76, "end": 369.88, "text": "So, when the user clicks on the favorite button, MCP apps actually standardizes this flow."}, {"id": "s68", "start": 369.88, "end": 379.36, "text": "So, instead of the app sending a message to to the backend, to Spotify's backend, it's actually sending a message to the host saying, \"Hey, user clicked a button."}, {"id": "s69", "start": 379.36, "end": 380.4, "text": "Do something with it."}, {"id": "s70", "start": 380.4, "end": 383.76, "text": "I recommend you to call a tool in Spotify's MCP server.\""}, {"id": "s71", "start": 383.76, "end": 385.04, "text": "And the host decides what to do."}, {"id": "s72", "start": 385.04, "end": 387.24, "text": "The host keeps this control of the flow."}, {"id": "s73", "start": 387.24, "end": 391.04, "text": "In this case, the host can decide to actually call the favorite favorite tool."}, {"id": "s74", "start": 391.04, "end": 395.04, "text": "And MCP apps standardizes this flow."}, {"id": "s75", "start": 395.04, "end": 396.64, "text": "Okay, so seeing is believing."}, {"id": "s76", "start": 396.64, "end": 400.0, "text": "So, let's see an example from Claude."}, {"id": "s77", "start": 402.44, "end": 403.2, "text": "Yeah."}, {"id": "s78", "start": 403.2, "end": 408.32, "text": "Uh so, let's say that I'm a product manager to understand the status of my funnel."}, {"id": "s79", "start": 408.32, "end": 411.68, "text": "So, I would go to Claude and I would ask what's the status?"}, {"id": "s80", "start": 411.68, "end": 416.15999999999997, "text": "In the again, old world of a few months ago, uh I would get back the textual response."}, {"id": "s81", "start": 416.15999999999997, "end": 418.24, "text": "Let's say that it's PostHog."}, {"id": "s82", "start": 418.24, "end": 421.52, "text": "So, it reached out to the PostHog server, got back the textual response."}, {"id": "s83", "start": 421.52, "end": 423.919, "text": "It's factually correct, but it's useless."}, {"id": "s84", "start": 423.919, "end": 428.04, "text": "I mean, how do I even take that and understand quickly what's going on?"}, {"id": "s85", "start": 428.04, "end": 430.56, "text": "I would have to read, which I don't want to do."}, {"id": "s86", "start": 430.56, "end": 432.68, "text": "Uh and it's pretty challenging."}, {"id": "s87", "start": 432.68, "end": 441.76, "text": "Uh but luckily, because both PostHog server and Claude as a host support MCP apps, I can just say, \"Show me.\""}, {"id": "s88", "start": 441.76, "end": 452.28, "text": "And now, instead of getting that block of text, I can actually get something useful, uh which is this interactive um widget that you would get, you know, on the PostHog"}, {"id": "s89", "start": 452.28, "end": 453.44, "text": "uh uh server."}, {"id": "s90", "start": 453.44, "end": 456.64, "text": "And when you have that, you can at a glance see what's going on."}, {"id": "s91", "start": 456.64, "end": 459.0, "text": "And as you can see, it's branded PostHog."}, {"id": "s92", "start": 459.0, "end": 466.96, "text": "So, you're actually getting the PostHog experience within ChatGPT or Claude, etc. Uh but it doesn't really end there."}, {"id": "s93", "start": 466.96, "end": 470.52, "text": "As we said, MCP apps is also like an interactive photo call."}, {"id": "s94", "start": 470.52, "end": 478.0, "text": "So, not only can I see and and interact with it, I can also do stuff like ask him to explain what a funnel is."}, {"id": "s95", "start": 478.0, "end": 479.4, "text": "I might not even know that."}, {"id": "s96", "start": 479.4, "end": 489.2, "text": "So, again, instead of getting that huge wall of text explaining what a funnel is, I can just get this generative UI answer from Claude, which uses MCP apps."}, {"id": "s97", "start": 489.2, "end": 495.84, "text": "It streams like the HTML inside, and now I can get this nice interactive experience of learning."}, {"id": "s98", "start": 495.84, "end": 502.52, "text": "And not only is it visually nice and helps me understand, but it's also fully interactive."}, {"id": "s99", "start": 502.52, "end": 509.08, "text": "And when we say interactive, it actually means that clicking it would help me communicate with the host."}, {"id": "s100", "start": 509.08, "end": 513.32, "text": "So, let's say that I want to understand like a particular step in the funnel."}, {"id": "s101", "start": 513.32, "end": 523.96, "text": "Uh I just go and I click on it, and since it's an MCP app, it can send a prompt back to the uh model and say, \"Okay, explain this specific step to me.\""}, {"id": "s102", "start": 523.96, "end": 526.68, "text": "And I can advance the flow."}, {"id": "s103", "start": 526.68, "end": 531.24, "text": "Uh so, this is a like an example of of how that uh looks."}, {"id": "s104", "start": 531.24, "end": 532.44, "text": "So, how does it actually work?"}, {"id": "s105", "start": 532.44, "end": 537.12, "text": "If you look at the architecture of it, uh so, we started by prompting."}, {"id": "s106", "start": 537.12, "end": 538.6, "text": "So, we type something in."}, {"id": "s107", "start": 538.6, "end": 541.0, "text": "Uh we asked for the funnel information."}, {"id": "s108", "start": 541.0, "end": 542.88, "text": "A tool call went out."}, {"id": "s109", "start": 542.88, "end": 548.96, "text": "Since our server supports MCP apps, that tool call is actually linked to a resource."}, {"id": "s110", "start": 548.96, "end": 555.64, "text": "And if you look at the uh code here, then, you know, it's it's a it's just a resource with a uh some prefix."}, {"id": "s111", "start": 555.64, "end": 556.52, "text": "Uh we take that."}, {"id": "s112", "start": 556.52, "end": 557.92, "text": "It's pretty simple code."}, {"id": "s113", "start": 557.92, "end": 561.64, "text": "I could just add the but it's still the the resource with the HTML, and you're done."}, {"id": "s114", "start": 561.64, "end": 567.04, "text": "Uh that resource is then um consumed by the host."}, {"id": "s115", "start": 567.04, "end": 570.56, "text": "In practice, it's usually consumed beforehand, like it's preloaded."}, {"id": "s116", "start": 570.56, "end": 573.36, "text": "Uh but imagine that it's just consumed in real time."}, {"id": "s117", "start": 573.36, "end": 577.84, "text": "That same HTML then passed to the host that also supports MCP apps."}, {"id": "s118", "start": 577.84, "end": 591.6, "text": "MCP apps basically if you look at the MCP UI SDK, just a React component or a web component that just accepts that resource plus a callback which is how we implement that communication protocol as I said earlier."}, {"id": "s119", "start": 591.6, "end": 594.0, "text": "And renders it in a sandbox."}, {"id": "s120", "start": 594.0, "end": 597.8, "text": "So, like we said, not only is it presentational, I can click."}, {"id": "s121", "start": 597.8, "end": 599.44, "text": "So, what happens when I click?"}, {"id": "s122", "start": 599.44, "end": 604.12, "text": "So, we click on it, it sends back through that callback the event all the way up."}, {"id": "s123", "start": 604.12, "end": 614.0, "text": "The model takes that event and then it can send out a tool call or call a resource or anything else that's completing the agentic flow."}, {"id": "s124", "start": 614.28, "end": 618.2, "text": "And this architecture actually brings a new philosophy or a new vision to the web."}, {"id": "s125", "start": 618.2, "end": 630.52, "text": "So, instead of us thinking of the web as tabs or services that we need to consume using a browser, we're now consuming it using our own personal assistants, right?"}, {"id": "s126", "start": 630.52, "end": 631.36, "text": "What does it mean?"}, {"id": "s127", "start": 631.36, "end": 636.6, "text": "It means that if I want to accomplish a task, for example, plan a um anniversary."}, {"id": "s128", "start": 636.6, "end": 643.32, "text": "So, up until now I had to open 20 tabs in the browser and I had to try to convey my intent to each of those services."}, {"id": "s129", "start": 643.32, "end": 649.76, "text": "And by saying conveying my intent, it means that I have to interact with the dashboards or the UIs of those companies."}, {"id": "s130", "start": 649.76, "end": 660.839, "text": "So, just to plan an anniversary, I need to convey my intent to Google Calendar and Amazon and Booking and Booking again and Amazon again and all and I don't need 99%"}, {"id": "s131", "start": 660.839, "end": 663.52, "text": "of the UI that is shown there because this UI doesn't know me."}, {"id": "s132", "start": 663.52, "end": 665.28, "text": "It doesn't have the context on me."}, {"id": "s133", "start": 665.28, "end": 670.36, "text": "What if we could just take these UIs and just break them into atoms?"}, {"id": "s134", "start": 670.36, "end": 674.08, "text": "And those atoms can be composed by my own personal assistant, right?"}, {"id": "s135", "start": 674.08, "end": 676.16, "text": "Because I don't need the the UI."}, {"id": "s136", "start": 676.16, "end": 677.72, "text": "I need those atoms."}, {"id": "s137", "start": 677.72, "end": 687.96, "text": "So, if we can take these atoms and have my cloud or ChatGPT or OpenCloud just use them using MCP UI, we can have this flow."}, {"id": "s138", "start": 687.96, "end": 690.76, "text": "So, my proactive assistant can say, \"Yeah, I know."}, {"id": "s139", "start": 690.76, "end": 697.28, "text": "I see that you have an anniversary coming and instead of just showing me data from Google Calendar, it can display a Google Calendar chunk."}, {"id": "s140", "start": 697.28, "end": 700.76, "text": "Now, for me it's good because I know Google Calendar, I trust Google."}, {"id": "s141", "start": 700.76, "end": 708.52, "text": "For Google it's good because it maintains their brand and identity and for the host it's good because they don't need to develop these capability themselves."}, {"id": "s142", "start": 708.52, "end": 717.68, "text": "And it goes even deeper because if I'm interacting with Amazon, instead of Amazon being reduced to just a list of items or or text, I can see Amazon."}, {"id": "s143", "start": 717.68, "end": 725.44, "text": "I can I can know that this is this is Amazon and I can complete my entire flow without even leaving my assistant."}, {"id": "s144", "start": 725.44, "end": 727.48, "text": "And this is the agentic web."}, {"id": "s145", "start": 727.48, "end": 732.6, "text": "This is how we're going to consume the web because my assistant will have the context on me."}, {"id": "s146", "start": 732.6, "end": 735.32, "text": "It It will know to pull the the map from booking.com."}, {"id": "s147", "start": 735.32, "end": 737.36, "text": "I don't need to know that, right?"}, {"id": "s148", "start": 737.36, "end": 745.76, "text": "So, this is going to be the shift that we're going to see very soon where websites are going to shift into small chunks of UIs inside inside personal assistants."}, {"id": "s149", "start": 745.76, "end": 746.053, "text": "Um"}, {"id": "s150", "start": 746.053, "end": 746.28, "text": "[snorts]"}, {"id": "s151", "start": 746.28, "end": 755.88, "text": "and with that come new interaction mindset because um if I click on something in the Shopify's MCP app, then Shopify doesn't control my journey anymore."}, {"id": "s152", "start": 755.88, "end": 757.16, "text": "The host does."}, {"id": "s153", "start": 757.16, "end": 759.68, "text": "Um and no application will control the user journey anymore."}, {"id": "s154", "start": 759.68, "end": 763.08, "text": "So, Amazon won't be able to know to see my flow."}, {"id": "s155", "start": 763.08, "end": 766.44, "text": "It everything will go through the chat for auditability."}, {"id": "s156", "start": 766.44, "end": 773.64, "text": "Um and MCP apps actually standardizes it by defining this three level of control over the user journey."}, {"id": "s157", "start": 773.64, "end": 782.48, "text": "So, an app can notify the chat that something happened or an app can actually ask the chat to run a prompt and and releasing all responsibility to the chat."}, {"id": "s158", "start": 782.48, "end": 793.52, "text": "So, MCP apps actually standardizes it and this is the new software flow, the new flow of interaction that we're going to see between applications, the chats, and the users."}, {"id": "s159", "start": 793.52, "end": 803.44, "text": "Um in 2026, we had we had an amazing year of standardizing MCP UI and 2026 is going to be the year where it's going to be a global standard for UI."}, {"id": "s160", "start": 803.44, "end": 803.68, "text": "Yeah."}, {"id": "s161", "start": 803.68, "end": 805.24, "text": "But, it's still evolving."}, {"id": "s162", "start": 805.24, "end": 807.12, "text": "There's a lot of stuff going on."}, {"id": "s163", "start": 807.12, "end": 814.52, "text": "Even in these past few months, these are some of the things that are already in or already contributed or proposed uh, by the community."}, {"id": "s164", "start": 814.52, "end": 819.64, "text": "Uh, so you still have a lot of time and a lot of room to influence how this future will look like."}, {"id": "s165", "start": 819.64, "end": 821.68, "text": "Uh, so you can go to X apps."}, {"id": "s166", "start": 821.68, "end": 825.2, "text": "Uh, that's the official SDK and spec is also hosted there."}, {"id": "s167", "start": 825.2, "end": 828.48, "text": "It's under the official model context protocol uh, repository."}, {"id": "s168", "start": 828.48, "end": 829.88, "text": "There will be a QR code later."}, {"id": "s169", "start": 829.88, "end": 833.56, "text": "Uh, so you don't have to uh, to uh, photograph it."}, {"id": "s170", "start": 833.56, "end": 844.68, "text": "Uh, and also um, the the cool thing about using X apps in particular is that because it's maintained by us directly, uh, all changes to the spec are immediately"}, {"id": "s171", "start": 844.68, "end": 846.04, "text": "uh, reflected in the SDK."}, {"id": "s172", "start": 846.04, "end": 850.76, "text": "So, if you use that SDK, then you automatically get all the new stuff out of the back."}, {"id": "s173", "start": 850.76, "end": 853.32, "text": "Uh, these are some of the issues that we have."}, {"id": "s174", "start": 853.32, "end": 856.24, "text": "So, please feel free to come and uh, contribute."}, {"id": "s175", "start": 856.24, "end": 857.4, "text": "So, what's next?"}, {"id": "s176", "start": 857.4, "end": 860.52, "text": "Um, there's a bunch of stuff coming up."}, {"id": "s177", "start": 860.52, "end": 867.12, "text": "Uh, the first thing uh, that we get a lot of uh, uh, of asked for is kind of reusable views."}, {"id": "s178", "start": 867.12, "end": 876.44, "text": "So, if you have uh, um, companies like Autodesk that have really heavy apps like they have in, you know, the entire 3D render there."}, {"id": "s179", "start": 876.44, "end": 882.64, "text": "They don't want to keep re-rendering that over and over again because it just it takes time, it's inefficient."}, {"id": "s180", "start": 882.64, "end": 886.52, "text": "Uh, that is the way that we had to do it uh, for the MVP."}, {"id": "s181", "start": 886.52, "end": 896.52, "text": "But we are working on thinking of maybe we can pass some identifier from the server uh, in a way that would help the model actually keep updating the same view."}, {"id": "s182", "start": 896.52, "end": 899.96, "text": "Uh, the other way to do this is"}, {"id": "s183", "start": 899.96, "end": 907.88, "text": "Um, app tools, which is something uh, if you've heard of web MCP, which is Google standard of how agents will interact in with web views."}, {"id": "s184", "start": 907.88, "end": 910.76, "text": "So, in MCP us, we actually standardize it into app tools."}, {"id": "s185", "start": 910.76, "end": 917.28, "text": "So, up until now we saw the flow where users does something in the app and the app talks to the host."}, {"id": "s186", "start": 917.28, "end": 920.0, "text": "But what if the host or the chat wants to speak to the app?"}, {"id": "s187", "start": 920.0, "end": 925.8, "text": "If the user writes something, uh, fill out this form for me and the chat will fill out the form for the user."}, {"id": "s188", "start": 925.8, "end": 929.72, "text": "So, MCP apps actually standardizes this this flow which we call view tools."}, {"id": "s189", "start": 929.72, "end": 931.6, "text": "That's actually that's in the spec right now."}, {"id": "s190", "start": 931.6, "end": 934.72, "text": "It's also it's going to be released very soon."}, {"id": "s191", "start": 934.72, "end": 938.92, "text": "And we're working on this generative UI spectrum where you have predefined UI."}, {"id": "s192", "start": 938.92, "end": 939.72, "text": "That's MCP apps."}, {"id": "s193", "start": 939.72, "end": 945.56, "text": "That's like the black box iframe that renders all trace UI in that example."}, {"id": "s194", "start": 945.56, "end": 951.08, "text": "But you also have other things on this spectrum like declarative UI like JSON render or A2UI."}, {"id": "s195", "start": 951.08, "end": 958.04, "text": "These specs that say yeah, the the app just returns an instructions on how to build the UI, but the chat will actually build the UI."}, {"id": "s196", "start": 958.04, "end": 961.12, "text": "And you have fully generative UI on the other end of the spectrum."}, {"id": "s197", "start": 961.12, "end": 966.08, "text": "And if you know cloud apps, yeah, MCP apps is agnostic to the way the UI is generated."}, {"id": "s198", "start": 966.08, "end": 972.04, "text": "And if you know cloud apps imagine feature where you can just ask cloud to generate a UI for you."}, {"id": "s199", "start": 972.04, "end": 974.16, "text": "That's actually based on MCP apps."}, {"id": "s200", "start": 974.16, "end": 978.48, "text": "So, this is an MCP app behind the scenes, but it supports generative UI."}, {"id": "s201", "start": 978.48, "end": 982.36, "text": "So, we're working on interoperability with those other standards."}, {"id": "s202", "start": 982.36, "end": 993.4, "text": "And actually just a few days ago we released a guide on how to do A2UI versus a generative UI standard and MCP apps which is the standard."}, {"id": "s203", "start": 993.4, "end": 995.04, "text": "How to do interoperability."}, {"id": "s204", "start": 995.04, "end": 1002.88, "text": "How can a server can write A2UI and ship it to Gemini, but also wrap it as an MCP app to ship to ChatGPT and vice versa."}, {"id": "s205", "start": 1002.88, "end": 1004.96, "text": "An MCP app is supported everywhere."}, {"id": "s206", "start": 1004.96, "end": 1006.08, "text": "So, it can run everywhere."}, {"id": "s207", "start": 1006.08, "end": 1012.0, "text": "If you build it once, it runs in Libra Chat which is an open source MCP app supported in ChatGPT."}, {"id": "s208", "start": 1012.0, "end": 1018.08, "text": "That's the same app that you're seeing the same code base that runs in in both which is pretty cool."}, {"id": "s209", "start": 1018.08, "end": 1020.08, "text": "Yeah."}, {"id": "s210", "start": 1020.4, "end": 1021.56, "text": "Yeah."}, {"id": "s211", "start": 1021.56, "end": 1024.839, "text": "So, this isn't just a technology or a cool feature."}, {"id": "s212", "start": 1024.839, "end": 1028.16, "text": "This is an entirely new way to distribute applications."}, {"id": "s213", "start": 1028.16, "end": 1040.12, "text": "So, if you look just a few months back then someone said that ChatGPT in particular has 800 million weekly users which is 10% of the entire world population."}, {"id": "s214", "start": 1040.12, "end": 1041.92, "text": "That's insane."}, {"id": "s215", "start": 1041.92, "end": 1047.64, "text": "So, if you think about the web in general, it took around 13 years to get to that number of users."}, {"id": "s216", "start": 1047.64, "end": 1054.92, "text": "So, if you look at that and you think that in the last few months we actually had a growth of over 1 billion."}, {"id": "s217", "start": 1054.92, "end": 1062.12, "text": "Just that we have like 170 times the total addressable market of the Apple App Store when it launched."}, {"id": "s218", "start": 1062.12, "end": 1063.96, "text": "So, MCP apps are everywhere."}, {"id": "s219", "start": 1063.96, "end": 1069.24, "text": "So, actually to list them, it is called cloud, open AI, etc. It's already there."}, {"id": "s220", "start": 1069.24, "end": 1071.12, "text": "So, how do you get started?"}, {"id": "s221", "start": 1071.12, "end": 1075.96, "text": "You can clone those you can go to the X apps."}, {"id": "s222", "start": 1075.96, "end": 1079.2, "text": "As a host also go to X apps or the MCP website."}, {"id": "s223", "start": 1079.2, "end": 1081.417, "text": "Please visit the official repo."}, {"id": "s224", "start": 1081.417, "end": 1081.88, "text": "[laughter]"}, {"id": "s225", "start": 1081.88, "end": 1084.4, "text": "The X apps repo to get involved."}, {"id": "s226", "start": 1084.4, "end": 1085.52, "text": "And yeah."}, {"id": "s227", "start": 1085.52, "end": 1086.92, "text": "So, embrace the new web."}, {"id": "s228", "start": 1086.92, "end": 1088.2, "text": "It's awesome."}, {"id": "s229", "start": 1088.2, "end": 1091.48, "text": "With MCP apps you can write once and run it everywhere."}, {"id": "s230", "start": 1091.48, "end": 1093.56, "text": "And the future is looking bright."}, {"id": "s231", "start": 1093.56, "end": 1097.04, "text": "Not quite Travis, but with MCP and MCP apps we're close."}, {"id": "s232", "start": 1097.04, "end": 1098.88, "text": "And come talk to us afterwards."}, {"id": "s233", "start": 1098.88, "end": 1101.32, "text": "Yeah, thank you."}, {"id": "s234", "start": 1116.132, "end": 1118.132, "text": "[music]"}]}, {"id": "-npY6XjM8CQ", "title": "When Will The Benchmaxxing Plague End? — Nick Heiner, Surge AI", "channel": "AI Engineer", "duration": 1045, "upload_date": null, "url": "https://www.youtube.com/watch?v=-npY6XjM8CQ", "api": "/api/talks/-npY6XjM8CQ.json", "summary_url": "/#-npY6XjM8CQ", "transcript": {"html": "/transcripts/-npY6XjM8CQ.html", "txt": "/transcripts/-npY6XjM8CQ.txt", "vtt": "/transcripts/-npY6XjM8CQ.vtt"}, "sentences": [{"id": "s1", "start": 12.88, "end": 14.799, "text": "Let's get started."}, {"id": "s2", "start": 14.799, "end": 18.8, "text": "When will the benchmaxing plague end?"}, {"id": "s3", "start": 18.96, "end": 21.76, "text": "In the tech industry, we love a hype cycle."}, {"id": "s4", "start": 21.76, "end": 24.96, "text": "And in AI, we really love a hype cycle."}, {"id": "s5", "start": 24.96, "end": 32.48, "text": "And the way we do that is when a model comes out, there's a big announcement, there's a lot of benchmark cited."}, {"id": "s6", "start": 32.48, "end": 36.16, "text": "Sometimes to keep things interesting, we do a little chart crime."}, {"id": "s7", "start": 36.16, "end": 38.879, "text": "And then people actually go and use it."}, {"id": "s8", "start": 38.879, "end": 45.92, "text": "And if the expectations aren't met by the reality, then we have allegations of benchmaxing."}, {"id": "s9", "start": 45.92, "end": 54.16, "text": "Benchmaxing, of course, being when labs are training too hard on benchmarks in a way that deviates from what people actually care about."}, {"id": "s10", "start": 55.039, "end": 60.399, "text": "So the existence of that term indicates that we have a sense that benchmarks don't always equal reality."}, {"id": "s11", "start": 60.399, "end": 64.96, "text": "And so in this talk we're going to figure out why does benchmaxing happen?"}, {"id": "s12", "start": 64.96, "end": 70.24, "text": "Why are traditional benchmarks not always accurate reflections of real world value?"}, {"id": "s13", "start": 70.24, "end": 72.0, "text": "Is this intrinsic to all benchmarks?"}, {"id": "s14", "start": 72.0, "end": 74.96000000000001, "text": "And will we ever know which models are best?"}, {"id": "s15", "start": 74.96000000000001, "end": 80.0, "text": "And the answers are incentives, poor methodologies, no and yes."}, {"id": "s16", "start": 80.0, "end": 81.119, "text": "All right, that was my talk."}, {"id": "s17", "start": 81.119, "end": 82.96000000000001, "text": "Thank you so much for coming."}, {"id": "s18", "start": 82.96000000000001, "end": 87.36, "text": "Um actually it looks like I have a few extra minutes so let's let's move on."}, {"id": "s19", "start": 87.36, "end": 91.03999999999999, "text": "I have a few extra slides we'll we'll go through."}, {"id": "s20", "start": 91.52, "end": 99.92, "text": "So we have a sense that benchmarks don't equal reality but the industry is dominated by a lot of popular but very bad benchmarks."}, {"id": "s21", "start": 99.92, "end": 116.32, "text": "So there's millions of dollars on prediction markets being wagered on Elm Marina outcomes even as we have industry leaders openly bragging about gaming Elm Marina and you have thought leaders like Wor saying it can be easily gamed."}, {"id": "s22", "start": 116.32, "end": 122.479, "text": "It's past time for the Elm Marina people to sit down and think about whether they're doing more harm than good."}, {"id": "s23", "start": 122.479, "end": 131.84, "text": "Andre Karpathy had a similar observation when he noticed that the models that he thought were best were not lining up with what Elmarina was ranking."}, {"id": "s24", "start": 131.84, "end": 141.76, "text": "He said unfortunately the teams are not getting better models overall but better Elm Marina models whatever that is possibly something with a lot of nested list bullet points and emojis."}, {"id": "s25", "start": 141.76, "end": 150.4, "text": "So why does this happen that sort of industry insiders are telling us that this benchmark is not useful but it still gets a lot of play."}, {"id": "s26", "start": 150.4, "end": 157.519, "text": "The problem is that AI is aimed at everyone in the world is is something everyone in the world can use."}, {"id": "s27", "start": 157.519, "end": 161.04, "text": "And so everyone needs some tool to figure out which models are best."}, {"id": "s28", "start": 161.04, "end": 163.44, "text": "And benchmarks are what we have for that."}, {"id": "s29", "start": 163.44, "end": 170.07999999999998, "text": "But if you can't if you don't have the ability to assess if a benchmark is good, what you do have is the ability to assess what's popular."}, {"id": "s30", "start": 170.07999999999998, "end": 179.599, "text": "And this creates this avalanche, this feedback effect where the conversation is very much driven by incumbency and marketing and less by real world value."}, {"id": "s31", "start": 179.599, "end": 180.959, "text": "and even myself, right?"}, {"id": "s32", "start": 180.959, "end": 185.76, "text": "Like unless I actually look at a benchmark in a fair amount of detail, I don't have an opinion on it."}, {"id": "s33", "start": 185.76, "end": 188.8, "text": "So, it's a very challenging problem."}, {"id": "s34", "start": 188.8, "end": 194.319, "text": "So, what are the things that benchmarks do that lead to these problems?"}, {"id": "s35", "start": 194.319, "end": 198.72, "text": "There are a handful of key antiatterns that we're going to go through."}, {"id": "s36", "start": 199.04, "end": 200.56, "text": "The first is price."}, {"id": "s37", "start": 200.56, "end": 208.48, "text": "Let's say you want to make an agentic coding benchmark, which these days is a very popular thing to want to do, and you want a thousand tasks in your benchmark."}, {"id": "s38", "start": 208.48, "end": 210.72, "text": "Each task takes 60 hours to make."}, {"id": "s39", "start": 210.72, "end": 214.64, "text": "Each software engineer in your workforce costs half a million a year."}, {"id": "s40", "start": 214.64, "end": 217.92000000000002, "text": "That's $15 million to make your benchmark."}, {"id": "s41", "start": 217.92000000000002, "end": 228.0, "text": "And if you think that over time about a third of those tasks are going to get washed away every year due to models getting better, that's $5 million to replace them."}, {"id": "s42", "start": 228.0, "end": 232.4, "text": "So that puts you out of budget for most projects."}, {"id": "s43", "start": 232.4, "end": 236.56, "text": "So then people turn to a variety of workarounds that have their own problems."}, {"id": "s44", "start": 236.56, "end": 242.4, "text": "One of which is trying to use a lot of AI assistance which ultimately does not really work."}, {"id": "s45", "start": 242.4, "end": 245.84, "text": "Like you can't push the frontier forward from within the frontier."}, {"id": "s46", "start": 245.84, "end": 252.0, "text": "You need to inject that external human expertise and it needs to be good expertise."}, {"id": "s47", "start": 252.0, "end": 259.12, "text": "If you try to use cheap labor, you're going to get what you pay for and the whole result is not going to be that useful."}, {"id": "s48", "start": 259.12, "end": 264.24, "text": "At Surge, one of our differentiators has long been that we are not trying to minimize cost."}, {"id": "s49", "start": 264.24, "end": 271.44, "text": "We are trying to maximize quality and part of that means paying a lot of money for good workers."}, {"id": "s50", "start": 271.44, "end": 279.919, "text": "We've always believed that but especially in 2026 models are just beyond the point where you can make do with anything less than the best workers."}, {"id": "s51", "start": 281.12, "end": 293.68, "text": "Contamination is often thought of as when labs are explicitly training on the test set and that does happen sometimes but really contamination is the default outcome unless you are very very good."}, {"id": "s52", "start": 293.68, "end": 300.72, "text": "So labs put a lot of effort into holding back this flood of data that's going to contaminate their models."}, {"id": "s53", "start": 300.72, "end": 308.08, "text": "But inevitably if you have public questions and answers on the internet that's going to get memorized to some extent."}, {"id": "s54", "start": 308.08, "end": 311.36, "text": "So SweetBench verified here's an example prompt."}, {"id": "s55", "start": 311.36, "end": 316.639, "text": "You can give opus the first part of the prompt and it will verbatim spit out the rest."}, {"id": "s56", "start": 316.639, "end": 320.32, "text": "It does that with the answers as well."}, {"id": "s57", "start": 320.32, "end": 327.36, "text": "And we actually did an investigation where we compared looking at the repos that Sweepbench verified was built out of."}, {"id": "s58", "start": 327.36, "end": 333.28, "text": "How much has Opus memorized the Sweepbench verified contents versus the rest of the repo?"}, {"id": "s59", "start": 333.28, "end": 338.32, "text": "And we found very clear evidence that Opus had memorized a lot of Sweetbench."}, {"id": "s60", "start": 338.32, "end": 341.919, "text": "In the most recent model card, Opus 4.8 talks about its SWE score."}, {"id": "s61", "start": 341.919, "end": 344.72, "text": "It does not disclose this contamination."}, {"id": "s62", "start": 344.72, "end": 348.15999999999997, "text": "We as an industry aren't really in the habit of doing those disclosures."}, {"id": "s63", "start": 348.15999999999997, "end": 354.08, "text": "And so what that means is that as benchmarking consumers, we're just missing that information."}, {"id": "s64", "start": 354.72, "end": 357.36, "text": "Reward hacking is also a big problem."}, {"id": "s65", "start": 357.36, "end": 364.8, "text": "Reward hacking is basically when a model finds a lazy and creative way to meet the letter of the law, but not the spirit."}, {"id": "s66", "start": 364.8, "end": 372.319, "text": "You need to think about designing your rewards as a adversarial process against this maximally lazy agent."}, {"id": "s67", "start": 372.319, "end": 378.24, "text": "Gradient descent is basically like water flowing downhill looking for the path of least resistance."}, {"id": "s68", "start": 378.24, "end": 383.039, "text": "And so your verifiers need to be robust to that."}, {"id": "s69", "start": 383.84, "end": 389.759, "text": "Another key challenge is simply just not having the ambition to make a sophisticated enough benchmark."}, {"id": "s70", "start": 389.759, "end": 395.84000000000003, "text": "Automation bench tests that agents are able to make tool calls in an enterprise environment."}, {"id": "s71", "start": 395.84000000000003, "end": 400.08, "text": "The problem is that a lot of the verifiers are these hard-coded string matches."}, {"id": "s72", "start": 400.08, "end": 406.639, "text": "And so you'll see it for things like phone numbers where there are many different acceptable phone number formats."}, {"id": "s73", "start": 406.639, "end": 411.039, "text": "But this verifier just picks one and the prompt doesn't tell you which one it is."}, {"id": "s74", "start": 411.039, "end": 415.6, "text": "So the result of this is that Haiku and Fable both score 20% on this task."}, {"id": "s75", "start": 415.6, "end": 425.039, "text": "Haiku scores 20% because it makes a bunch of mistakes and Fable scores 20% because it gets it right 80% of the time but then just happens to pick different formats."}, {"id": "s76", "start": 425.039, "end": 431.759, "text": "So if the benchmark task is not differentiating between Haiku and Fable, it's not a useful task."}, {"id": "s77", "start": 431.759, "end": 438.88, "text": "And more broadly, in 2026, many of us in this room are looking towards AI that's about to remake entire industries."}, {"id": "s78", "start": 438.88, "end": 444.16, "text": "And benchmarks are ideally our lighthouse on the horizon to let us know when that's coming."}, {"id": "s79", "start": 444.16, "end": 451.52, "text": "And a simple hard-coded string match is just not going to do it to measure that sort of impact."}, {"id": "s80", "start": 452.319, "end": 455.68, "text": "Another important aspect of a good benchmark is taste."}, {"id": "s81", "start": 455.68, "end": 460.56, "text": "Perhaps it used to be the case that benchmarks were these dry academic, you know, questions."}, {"id": "s82", "start": 460.56, "end": 461.44, "text": "and answer sets."}, {"id": "s83", "start": 461.44, "end": 468.72, "text": "But nowadays, a benchmark is an artifact expressing what it's an aspirational artifact."}, {"id": "s84", "start": 468.72, "end": 472.8, "text": "It's an expression of values of what you want your AI to do and how you want it to behave."}, {"id": "s85", "start": 472.8, "end": 478.56, "text": "And so you need to have some product sense in this process, some sort of a sense of what you want the AI to do."}, {"id": "s86", "start": 478.56, "end": 484.4, "text": "And that sense is unfortunately missing from ifal if has been cited on many model cards."}, {"id": "s87", "start": 484.4, "end": 496.08, "text": "And the way it was constructed was taking a bunch of arbitrary prompts that no user has ever asked in earnest and mashing them up with a bunch of other prompts to create a prompt set."}, {"id": "s88", "start": 496.08, "end": 503.759, "text": "The problem is that because no user actually has asked do not use any commas in your response or use the letter T at most once."}, {"id": "s89", "start": 503.759, "end": 512.24, "text": "You have to believe for this to be useful, you have to believe that there's a generalization from this to actual things that users are going to ask."}, {"id": "s90", "start": 513.44, "end": 520.159, "text": "If eval just happens also to have a bunch of prompts that are fully unsolvable due to having contradictory instructions."}, {"id": "s91", "start": 520.159, "end": 525.8389999999999, "text": "So this one starts by saying repeat this response verbatim and it ends by saying translate this into Hindi."}, {"id": "s92", "start": 525.8389999999999, "end": 529.279, "text": "Obviously you can't do both of those at once."}, {"id": "s93", "start": 529.279, "end": 533.519, "text": "Here's one that says write a riddle that includes exactly one bullet point."}, {"id": "s94", "start": 533.519, "end": 536.08, "text": "Make sure to include a few bullet points."}, {"id": "s95", "start": 536.08, "end": 539.279, "text": "Again this is just fully impossible."}, {"id": "s96", "start": 539.519, "end": 546.24, "text": "It uses a sentence splitter that does not align with how humans would actually split the sentences."}, {"id": "s97", "start": 546.72, "end": 550.16, "text": "And a lot of the prompts are not fully verified."}, {"id": "s98", "start": 550.16, "end": 551.92, "text": "So this one says write a story."}, {"id": "s99", "start": 551.92, "end": 555.04, "text": "There's nothing in the verifier that checks that a story was written."}, {"id": "s100", "start": 555.04, "end": 570.56, "text": "It just checks that the asky character I is not used more than once, which means that all of these responses get a full score, including response D. The way it gets a full score is by reward hacking and using the cerrillic eye character instead of the asy eye character."}, {"id": "s101", "start": 570.56, "end": 578.48, "text": "If is totally fine with that another challenge is operational ability."}, {"id": "s102", "start": 578.48, "end": 586.24, "text": "Making a big benchmark requires a lot of QC work and plenty of organizations just don't make that investment."}, {"id": "s103", "start": 586.24, "end": 592.16, "text": "Apex is a rag benchmark where the agent is given files and then asked questions about them."}, {"id": "s104", "start": 592.16, "end": 598.0, "text": "And in some instances, what's in the file and then what's expected in the rubric don't line up."}, {"id": "s105", "start": 598.0, "end": 605.04, "text": "So an agent that does the thing that it's seeing in the ground truth is going to get a negative score."}, {"id": "s106", "start": 605.2, "end": 617.04, "text": "And a lot of the data in Apex is seemingly synthetically generated because it's full of obvious placeholder values or dates or places that don't exist."}, {"id": "s107", "start": 617.04, "end": 626.959, "text": "And so as a result, the model is more likely to develop eval awareness where it realizes that it's being tested which undermines the entire exercise."}, {"id": "s108", "start": 626.959, "end": 634.48, "text": "It also just takes you out of distribution from actual real world data to something that is obviously fake."}, {"id": "s109", "start": 634.72, "end": 640.48, "text": "So that's an overview of some of the key antiatterns that happen during benchmark creation."}, {"id": "s110", "start": 640.48, "end": 651.12, "text": "But benchmaxing is a two-way process and there are all sorts of fun things that labs can do to benchmax and that's what we're going to talk about next."}, {"id": "s111", "start": 651.12, "end": 663.519, "text": "So the the core value that we're all trying to get towards as human eval right AI exists to serve humans and so just having humans look at the responses and make ratings like that's what we care about."}, {"id": "s112", "start": 663.519, "end": 665.519, "text": "The problem is that human eval is very expensive."}, {"id": "s113", "start": 665.519, "end": 678.32, "text": "And so a lot of what benchmarks are doing is trying to get around that and you are trying to distill human preference into something more scalable and you're hoping you do that distillation in a way that's still sufficiently faithful to what human eval wants."}, {"id": "s114", "start": 678.32, "end": 687.68, "text": "But what this means is that inevitably there is a point where you can keep hill climbing on a benchmark and the human eval stays flat."}, {"id": "s115", "start": 687.92, "end": 695.04, "text": "And you can actually take it even further if you want where you keep hill climbing on a benchmark even as the human eval goes down."}, {"id": "s116", "start": 695.04, "end": 704.16, "text": "But if for whatever reason you think this is necessary for marketing or we have sort of organizational politics or incentives that are demanding this that's how it can end up happening."}, {"id": "s117", "start": 704.16, "end": 707.2, "text": "In this instance the prompt is what time is it?"}, {"id": "s118", "start": 707.2, "end": 710.079, "text": "And the response is absolutely deranged."}, {"id": "s119", "start": 710.079, "end": 715.36, "text": "No human eval is ever going to choose this but El Marina puts it at the top of the leaderboard."}, {"id": "s120", "start": 715.36, "end": 722.16, "text": "So again, you have this divergence and if you're trying to benchmax, you just cannot care about that."}, {"id": "s121", "start": 722.16, "end": 731.279, "text": "Another thing you can do that I've heard stories of is you can actually hire a crowdsource army to vote for you in Elmarina since Elmarina basically does no filtering of their workforce."}, {"id": "s122", "start": 731.279, "end": 735.44, "text": "And you might say, well, we anonym, you know, Elmarina anonymizes."}, {"id": "s123", "start": 735.44, "end": 737.12, "text": "So how are they going to know who to vote for?"}, {"id": "s124", "start": 737.12, "end": 738.56, "text": "That's actually quite simple."}, {"id": "s125", "start": 738.56, "end": 744.48, "text": "You have your model include a watermark that tells the crowd who to vote for."}, {"id": "s126", "start": 745.12, "end": 754.399, "text": "There's also all sorts of things you can do with running your evals in conditions that are like not fully representative of the applesto apples comparison you're trying to make"}, {"id": "s127", "start": 754.399, "end": 765.68, "text": "and then not always being super transparent about those conditions in such a way that undermines the validity that the community is trying to interpret because they don't have that contextualizing"}, {"id": "s128", "start": 765.68, "end": 767.44, "text": "information."}, {"id": "s129", "start": 767.44, "end": 775.6, "text": "This was a paper um again about Elmarina and talking about how some of the dynamics of how it's run lead to models overfitting on Elmarina."}, {"id": "s130", "start": 775.6, "end": 782.72, "text": "Um in this instance, the specific chart we're seeing is that Meta tested 27 models without disclosing that it was doing so."}, {"id": "s131", "start": 782.72, "end": 786.88, "text": "Um which you know distorts the results."}, {"id": "s132", "start": 789.839, "end": 792.399, "text": "So how are we going to end benchmaxing?"}, {"id": "s133", "start": 792.399, "end": 798.079, "text": "We need to hold the benchmark industry and the labs to a higher standard."}, {"id": "s134", "start": 798.56, "end": 804.32, "text": "The first thing we need to do when making a good benchmark is start with great human experts."}, {"id": "s135", "start": 804.32, "end": 812.0, "text": "And those experts inform everything that is downstream from what types of tasks are we going to have the agent do?"}, {"id": "s136", "start": 812.0, "end": 814.399, "text": "How is success measured?"}, {"id": "s137", "start": 814.399, "end": 816.24, "text": "What are the input files that agents are given?"}, {"id": "s138", "start": 816.24, "end": 818.079, "text": "What are the tools that they're given?"}, {"id": "s139", "start": 818.079, "end": 819.8389999999999, "text": "But we also do need that product sense."}, {"id": "s140", "start": 819.8389999999999, "end": 822.24, "text": "So imagine you're making a medical benchmark."}, {"id": "s141", "start": 822.24, "end": 830.9590000000001, "text": "It's not enough to have doctors who can answer specific medical questions because if you're trying to test how ready are we for agents to be deployed into hospitals."}, {"id": "s142", "start": 830.9590000000001, "end": 841.44, "text": "You also need someone with the business sense to know what's the regulatory environment, what's the legal requirements because that is going to impact what types of tasks you're trying to have the AI solve."}, {"id": "s143", "start": 841.519, "end": 850.32, "text": "You need high fidelity input data which is best done by going out and getting it from the real world, having actual people create this data."}, {"id": "s144", "start": 850.32, "end": 854.88, "text": "Synthetic approaches are possible, but it is very very hard to do it reliably."}, {"id": "s145", "start": 854.88, "end": 856.32, "text": "The tools need to actually work."}, {"id": "s146", "start": 856.32, "end": 859.44, "text": "A lot of benchmarks have tools that are buggy in various ways."}, {"id": "s147", "start": 859.44, "end": 865.6, "text": "And unless you're intentionally making a benchmark about buggy tools, this just introduces noise."}, {"id": "s148", "start": 866.639, "end": 868.88, "text": "You need verifiers that are fully aligned with the prompts."}, {"id": "s149", "start": 868.88, "end": 870.48, "text": "And this is a two-way alignment."}, {"id": "s150", "start": 870.48, "end": 875.76, "text": "So the verifiers need to be verifying everything the prompt asks for."}, {"id": "s151", "start": 875.76, "end": 879.92, "text": "And everything the prompt asks for needs to be covered by the verifiers."}, {"id": "s152", "start": 879.92, "end": 886.72, "text": "And if you get either side of those two misaligned, then it's going to be unfair to models and you're introducing random noise."}, {"id": "s153", "start": 886.72, "end": 893.92, "text": "You need to thoroughly QC everything and you need to have a private hold out set so you don't get contaminated."}, {"id": "s154", "start": 894.32, "end": 903.199, "text": "And if you do all this right, then you'll avoid what often happens with benchmarks, which is when labs get to like 80% and say, \"Okay, this is saturated.\""}, {"id": "s155", "start": 903.199, "end": 910.8, "text": "And I used to think that saturation was just them saying again we don't think training on this further is going to increase real world value."}, {"id": "s156", "start": 910.8, "end": 918.079, "text": "And it often does mean that but it can mean that because the lab is saying we realize 20% of these tasks are broken."}, {"id": "s157", "start": 918.079, "end": 925.92, "text": "But the problem is that as you're hill climbing you don't know what 20% are broken until you solve all the others."}, {"id": "s158", "start": 925.92, "end": 928.8, "text": "And so as a result you have a lot of noise."}, {"id": "s159", "start": 928.8, "end": 940.72, "text": "And if that 20% of broken tasks is randomly but in a biased way assigning the rewards, it's going to really distort the model relative ranking you're trying to get."}, {"id": "s160", "start": 941.36, "end": 945.92, "text": "So at Serge, we created a benchmark called Hemingway bench to measure writing."}, {"id": "s161", "start": 945.92, "end": 959.8389999999999, "text": "There have been a number of writing benchmarks that use various mechanical means to try to assess writing quality, but we believe that writing is just too rich and deep and nuanced and frankly human of an activity to measure"}, {"id": "s162", "start": 959.8389999999999, "end": 965.759, "text": "with mechanical benchmarks and LM as a judge doesn't really work either because LLMs don't have good taste in writing."}, {"id": "s163", "start": 965.759, "end": 970.639, "text": "Again, this is sort of the you can't expand the frontier from within the frontier situation."}, {"id": "s164", "start": 970.639, "end": 986.56, "text": "So what we've done is we've just created a workforce of thousands of professional writers in various domains, technical writers, poets, journalists, editors, and we just have them do blind model comparisons and then we create this leaderboard"}, {"id": "s165", "start": 986.56, "end": 988.48, "text": "and it is quite expensive, right?"}, {"id": "s166", "start": 988.48, "end": 989.6, "text": "Human eval is very expensive."}, {"id": "s167", "start": 989.6, "end": 992.72, "text": "Getting the time of these professionals is quite expensive."}, {"id": "s168", "start": 992.72, "end": 997.92, "text": "But again, our goal is to maximize quality, not to minimize costs."}, {"id": "s169", "start": 997.92, "end": 1009.04, "text": "So in conclusion, benchmaxing is the exploitation of benchmark misalignments between human preference, but we can do better and we can hold the industry to a higher standard."}, {"id": "s170", "start": 1009.04, "end": 1015.199, "text": "Both the people making the benchmarks like myself and the people who are reporting on the benchmarks."}, {"id": "s171", "start": 1015.199, "end": 1020.56, "text": "And if you'd like to be a part of that, of course, obligatory pitch at Serge, we're hiring for basically all aspects of that."}, {"id": "s172", "start": 1020.56, "end": 1024.48, "text": "Uh and if you'd like more spicy takes from me, uh please follow my substack."}, {"id": "s173", "start": 1024.48, "end": 1026.959, "text": "Thank you very much."}]}, {"id": "0I6aoPSRzVc", "title": "What If Your Chip Design Team Moved Like a Single Body? — Abduallah Mohamed, AIDAChip", "channel": "AI Engineer", "duration": 1006, "upload_date": null, "url": "https://www.youtube.com/watch?v=0I6aoPSRzVc", "api": "/api/talks/0I6aoPSRzVc.json", "summary_url": "/#0I6aoPSRzVc", "transcript": {"html": "/transcripts/0I6aoPSRzVc.html", "txt": "/transcripts/0I6aoPSRzVc.txt", "vtt": "/transcripts/0I6aoPSRzVc.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.04, "end": 14.4, "text": "Hello everyone."}, {"id": "s3", "start": 14.4, "end": 19.16, "text": "Um So, I want to start with a simple question."}, {"id": "s4", "start": 19.16, "end": 24.36, "text": "What if your team or your org or company moves like a single body?"}, {"id": "s5", "start": 24.36, "end": 28.12, "text": "I'm Abdullah Muhammad, the VP of AIML at A Data Chef."}, {"id": "s6", "start": 28.12, "end": 34.8, "text": "And today was supposed to be Khalid with me to present this, but he's he's down with our development partner at the moment."}, {"id": "s7", "start": 34.8, "end": 38.16, "text": "So, I will be presenting the whole presentation for today."}, {"id": "s8", "start": 38.16, "end": 41.28, "text": "So, let's go for the next slide."}, {"id": "s9", "start": 41.28, "end": 47.48, "text": "So, how many of you have been attending the World Cup soccer or watching some games on ice?"}, {"id": "s10", "start": 47.48, "end": 49.24, "text": "We have a couple of fans."}, {"id": "s11", "start": 49.24, "end": 51.0, "text": "Yeah, it's over all over the place."}, {"id": "s12", "start": 51.0, "end": 58.0, "text": "And imagine for a moment, just a single moment, you are a soccer player, all right?"}, {"id": "s13", "start": 58.0, "end": 67.84, "text": "And if you are a soccer player, you have this intent the moment you go into the field, you just going to run and score a goal."}, {"id": "s14", "start": 67.84, "end": 70.16, "text": "This is what you want to do."}, {"id": "s15", "start": 70.16, "end": 81.92, "text": "And for the second thing, you have this knowledge that you've been accumulated through your training the whole day, your exercises with your coach, and the best practices and the videos you have watched."}, {"id": "s16", "start": 81.92, "end": 90.48, "text": "And you at the moment in the field like the moment of truth that you are there, you combine both of the intent and knowledge and compound both of them."}, {"id": "s17", "start": 90.48, "end": 95.0, "text": "And through your nervous system, you execute to achieve your goal."}, {"id": "s18", "start": 95.0, "end": 103.47999999999999, "text": "And we can call this, in a sense, you are being self-aligned as a single entity by yourself."}, {"id": "s19", "start": 104.4, "end": 111.8, "text": "And accept the fact that a soccer team or a football team, depending where you're coming from, is not a single player."}, {"id": "s20", "start": 111.8, "end": 114.72, "text": "It's actually 11 players."}, {"id": "s21", "start": 114.72, "end": 121.24, "text": "And on the field, you are up against another team with 11 players they playing against you."}, {"id": "s22", "start": 121.24, "end": 131.0, "text": "And at this moment it's not about your individual skills, it's about how your team working together well."}, {"id": "s23", "start": 131.0, "end": 144.44, "text": "So, in general like the team keep changing and everything is getting harder and harder and the team that wins actually the team that the most aligned in both of the both of teams."}, {"id": "s24", "start": 144.44, "end": 151.28, "text": "So, in short we can say alignment beats individual skills."}, {"id": "s25", "start": 151.306, "end": 152.04, "text": "[snorts]"}, {"id": "s26", "start": 152.04, "end": 153.48, "text": "Okay."}, {"id": "s27", "start": 153.48, "end": 158.8, "text": "Now, what if your team is over 50 engineers or 50 players?"}, {"id": "s28", "start": 158.8, "end": 162.4, "text": "This is completely changes the whole scene right now."}, {"id": "s29", "start": 162.4, "end": 172.4, "text": "So, everyone at these days we empower the engineers with AI tools, AI agents and we want to increase the productivity."}, {"id": "s30", "start": 172.4, "end": 181.56, "text": "But we know from literature that the more people you have, the quadratic term of communication between them and alignment them keep growing and keep growing."}, {"id": "s31", "start": 181.56, "end": 187.84, "text": "And at a specific point actually it actually starts to going declining."}, {"id": "s32", "start": 187.84, "end": 190.48, "text": "Your throughput actually is not what you getting."}, {"id": "s33", "start": 190.48, "end": 192.2, "text": "It's diminishing cost."}, {"id": "s34", "start": 192.2, "end": 200.04, "text": "So, everyone trying to solve this linear problem of more tools and more stuff but nobody actually tackling the quadratic term over there."}, {"id": "s35", "start": 200.04, "end": 201.88, "text": "And this is why the alignment is important."}, {"id": "s36", "start": 201.88, "end": 211.2, "text": "If you are able to change this quadratic term into a linear term or build a multi-layer AI system that will solve this problem."}, {"id": "s37", "start": 212.88, "end": 215.0, "text": "Okay, moving into ship design."}, {"id": "s38", "start": 215.0, "end": 219.16, "text": "Ship design is a different story."}, {"id": "s39", "start": 219.16, "end": 225.36, "text": "If you are in software company, you have a bug in your software, you can ship a batch to fix it."}, {"id": "s40", "start": 225.36, "end": 227.07999999999998, "text": "You can roll out a new version."}, {"id": "s41", "start": 227.07999999999998, "end": 229.239, "text": "It's most of the time is doable."}, {"id": "s42", "start": 229.239, "end": 231.239, "text": "But in ships, you can't do this in ships."}, {"id": "s43", "start": 231.239, "end": 234.56, "text": "It's hardware, fixed it on silicon has been printed."}, {"id": "s44", "start": 234.56, "end": 240.08, "text": "And if you're going to do this, there is a cost actually, we call it the risk band cost."}, {"id": "s45", "start": 240.08, "end": 245.72, "text": "On average between chip design companies about $50 million."}, {"id": "s46", "start": 245.72, "end": 252.2, "text": "And for some companies like being 1 month late in the market, it's a make or break for them."}, {"id": "s47", "start": 252.2, "end": 254.92, "text": "And we spoke to many practitioners in the field."}, {"id": "s48", "start": 254.92, "end": 260.48, "text": "On average like 15 practitioner and we found that most of them pointed towards the same problem."}, {"id": "s49", "start": 260.48, "end": 266.52, "text": "That we spend 70% of our time doing alignment."}, {"id": "s50", "start": 266.52, "end": 270.28, "text": "Alignment to make sure that once we print the chip, nothing is there."}, {"id": "s51", "start": 270.28, "end": 281.56, "text": "And one of the key words that we heard and still resonating that the most successful chip organization are not the one with the best engineers, but they are the most aligned"}, {"id": "s52", "start": 281.56, "end": 283.56, "text": "organized."}, {"id": "s53", "start": 284.44, "end": 288.4, "text": "So, how chip design today works?"}, {"id": "s54", "start": 289.56, "end": 293.52, "text": "We start with bottom figure like the fragmented intent and decision."}, {"id": "s55", "start": 293.52, "end": 297.919, "text": "You attend couple of meetings, you talk about decisions, what you're going to do next."}, {"id": "s56", "start": 297.919, "end": 304.56, "text": "You have the specs written everywhere, you have the Slack messages, you have emails, everything is fragmented over there."}, {"id": "s57", "start": 304.56, "end": 308.68, "text": "And then we go into a second part, which is the knowledge."}, {"id": "s58", "start": 308.68, "end": 310.56, "text": "Nobody updates wikis, right?"}, {"id": "s59", "start": 310.56, "end": 312.28, "text": "Many of us has wikis."}, {"id": "s60", "start": 312.28, "end": 318.56, "text": "They've been collecting dust for years and the code keep evolving outside the wikis, it's not over there."}, {"id": "s61", "start": 318.56, "end": 324.2, "text": "And now we have the tools that you execute with, which comes with many many fractions."}, {"id": "s62", "start": 324.2, "end": 331.56, "text": "And these tools like the data is lost over there, what input, what output, what results, most of the time are not being captured."}, {"id": "s63", "start": 331.56, "end": 338.08, "text": "And what you see here is not something we came with like draw from our imagine, this is actually how is it today."}, {"id": "s64", "start": 338.08, "end": 344.4, "text": "We wrote from inside the companies and from the backgrounds of the people we have in our team."}, {"id": "s65", "start": 344.56, "end": 350.6, "text": "And what we're trying to solve here is building a multi-layer AI with a shared nervous system."}, {"id": "s66", "start": 350.6, "end": 358.76, "text": "Instead of having scattered knowledge or scattered intent all over the place, we build a living graph."}, {"id": "s67", "start": 358.76, "end": 360.76, "text": "We call it the system of intent."}, {"id": "s68", "start": 360.76, "end": 368.48, "text": "And this living graph actually has all the constraints of the system, has all the decisions over there."}, {"id": "s69", "start": 368.48, "end": 369.92, "text": "It keep evolving."}, {"id": "s70", "start": 369.92, "end": 379.68, "text": "And as an AI person actually, we don't allow the agents to touch it except with human in the loop approval for specific changes."}, {"id": "s71", "start": 379.68, "end": 382.0, "text": "And this thing is like the Bible of the whole system."}, {"id": "s72", "start": 382.0, "end": 386.68, "text": "This is where the whole org is going or whole company is going."}, {"id": "s73", "start": 386.68, "end": 388.919, "text": "And the next one is the tribal knowledge layer."}, {"id": "s74", "start": 388.919, "end": 399.15999999999997, "text": "The tribal knowledge layer we can think about it as a memory that keeps evolving with day-to-day usage and the knowledge base that capture all the information and documents."}, {"id": "s75", "start": 399.15999999999997, "end": 405.28, "text": "And it's keep evolving from a project to project and keeping the best practice over there."}, {"id": "s76", "start": 405.28, "end": 420.6, "text": "And lastly, instead of having this general coding agent that everyone uses today, we have a special designed agent that being developed by subject matter experts to help the engineers doing their work."}, {"id": "s77", "start": 420.6, "end": 428.04, "text": "So for example, like we have digital design agent, analog design agent, and so on."}, {"id": "s78", "start": 428.04, "end": 435.68, "text": "And by combining all of this, you will have this shared nervous system that allows you to move fast and move forward."}, {"id": "s79", "start": 438.04, "end": 438.919, "text": "Okay."}, {"id": "s80", "start": 438.919, "end": 441.2, "text": "So it's easy to say an idea on a slide."}, {"id": "s81", "start": 441.2, "end": 441.84, "text": "It's nice."}, {"id": "s82", "start": 441.84, "end": 443.44, "text": "Everyone makes slides."}, {"id": "s83", "start": 443.44, "end": 450.04, "text": "But I want to show you like a demo from what we have today and showing the intent, knowledge, and execution."}, {"id": "s84", "start": 450.04, "end": 452.08, "text": "It will be short demos."}, {"id": "s85", "start": 452.08, "end": 455.24, "text": "And we'll start with the first one."}, {"id": "s86", "start": 455.52, "end": 457.4, "text": "Yeah, the Yeah."}, {"id": "s87", "start": 457.4, "end": 458.4, "text": "Okay, cool."}, {"id": "s88", "start": 458.4, "end": 465.12, "text": "So we can see that each engineer gets a role-based AI teammate specific to their role."}, {"id": "s89", "start": 465.12, "end": 474.4, "text": "They can check the knowledge base of the whole project that being contained and being growing and compounding over time and now they have their own intent."}, {"id": "s90", "start": 474.8, "end": 485.12, "text": "And you have single place for design where it captures all the tooling you have."}, {"id": "s91", "start": 485.12, "end": 486.56, "text": "It captures the results."}, {"id": "s92", "start": 486.56, "end": 491.0, "text": "It captures what you did and what you're going to do next and analysis of everything."}, {"id": "s93", "start": 491.0, "end": 494.56, "text": "So, everything being contained in one place."}, {"id": "s94", "start": 497.08, "end": 503.36, "text": "And here we see a human finishing their work."}, {"id": "s95", "start": 503.36, "end": 512.52, "text": "This human signing off the the results of some space simulation and the system of intent realizes, okay, this person is done with this."}, {"id": "s96", "start": 512.52, "end": 520.96, "text": "I'm going to notify the next stakeholders of what they should do and signal to them that they are done with this."}, {"id": "s97", "start": 522.68, "end": 530.32, "text": "And now the system of intent, which actually the nervous system or the Bible of the system, it's a graph living graph that keep compounding with time."}, {"id": "s98", "start": 530.32, "end": 541.64, "text": "We see in this example, like it realizes like there is something off, like some value out of constraints that shouldn't be there that might cost you $50 million actually to suspend the whole ship"}, {"id": "s99", "start": 541.64, "end": 547.08, "text": "and it notified the system and the notification goes and some engineers start working on it."}, {"id": "s100", "start": 547.08, "end": 554.04, "text": "And once it got it fixed, it submit a game into the system and it keep evolving over time."}, {"id": "s101", "start": 555.28, "end": 556.64, "text": "Okay."}, {"id": "s102", "start": 556.64, "end": 558.64, "text": "Good."}, {"id": "s103", "start": 558.68, "end": 569.04, "text": "So, let's say for example, like um you were working in the system, you look at the Bible, you find, oh, there there's something wrong about it."}, {"id": "s104", "start": 569.04, "end": 571.2, "text": "Uh I don't like this value."}, {"id": "s105", "start": 571.2, "end": 572.96, "text": "And then you propose a change."}, {"id": "s106", "start": 572.96, "end": 585.84, "text": "So, the system of intent and this big graph captures all the values over there, all the stakeholders, and you start doing this modification, and it gather all the shared knowledge,"}, {"id": "s107", "start": 586.12, "end": 593.92, "text": "and then it fire a request, as you can see here, and this request goes to an architect or an owner of the system."}, {"id": "s108", "start": 593.92, "end": 601.4, "text": "The owner can approve or decline it, and the moment they approve that this is a valid change, it actually goes and echo in the whole system."}, {"id": "s109", "start": 601.4, "end": 604.48, "text": "Like everyone will know that this decision has been made."}, {"id": "s110", "start": 604.48, "end": 608.88, "text": "There is that change that advises everything over there."}, {"id": "s111", "start": 608.88, "end": 610.88, "text": "What?"}, {"id": "s112", "start": 614.44, "end": 615.04, "text": "Good."}, {"id": "s113", "start": 615.04, "end": 627.68, "text": "So, moving to a very difficult topic we have like how we going to evaluate uh our claims and measure the success of the system."}, {"id": "s114", "start": 628.52, "end": 634.52, "text": "The philosophy we are using this or the philosophy toward this, we don't grade the agents."}, {"id": "s115", "start": 634.52, "end": 636.56, "text": "We try to grade alignment itself."}, {"id": "s116", "start": 636.56, "end": 640.16, "text": "So, we have four axes, two horizontal, two vertical."}, {"id": "s117", "start": 640.16, "end": 649.08, "text": "The horizontal axes like qualitative, the vertical axes like qualitative and quantitative values, which is typical in this domain at the moment."}, {"id": "s118", "start": 649.08, "end": 653.52, "text": "And then horizontal ones, which is bare component and the system into it."}, {"id": "s119", "start": 653.52, "end": 653.697, "text": "And"}, {"id": "s120", "start": 653.697, "end": 654.12, "text": "[snorts]"}, {"id": "s121", "start": 654.12, "end": 665.2, "text": "if we're going to zoom into the bare component, you can measure like if that agent giving you the correct output for this voltage, like known values versus golden answers."}, {"id": "s122", "start": 665.2, "end": 671.6, "text": "Or you can use LNM judge and measure the golden answer versus the expert we have for this one."}, {"id": "s123", "start": 671.6, "end": 672.32, "text": "Which is okay."}, {"id": "s124", "start": 672.32, "end": 678.52, "text": "You can measure how good my memory, like if the recall state of art, which is the case in our thing."}, {"id": "s125", "start": 678.52, "end": 681.0, "text": "Are we doing inference really good?"}, {"id": "s126", "start": 681.0, "end": 686.88, "text": "But then it comes into the harder question, which is basically are we doing a task completion?"}, {"id": "s127", "start": 686.88, "end": 693.04, "text": "Like if someone uses this whole thing, is he really completing the task he want to do."}, {"id": "s128", "start": 693.04, "end": 695.16, "text": "Is he frustrated while using this?"}, {"id": "s129", "start": 695.16, "end": 699.12, "text": "Are our agent overstepping human in the loop approval or not?"}, {"id": "s130", "start": 699.12, "end": 702.4, "text": "Sometimes the agent go goes out on that end."}, {"id": "s131", "start": 702.4, "end": 710.0, "text": "And we measure also does does our system allow you to work concurrently on multiple task in parallel?"}, {"id": "s132", "start": 710.0, "end": 713.24, "text": "This is a success metric or success goal we have."}, {"id": "s133", "start": 713.24, "end": 714.96, "text": "And the last one is token tax."}, {"id": "s134", "start": 714.96, "end": 721.56, "text": "We don't want to overload you once you use this with all the lovely tokens and increase your budget."}, {"id": "s135", "start": 721.56, "end": 735.48, "text": "And there is hard frontier here like in the future now the topic of memory or graph memory or graph rag, whatever the title is, is there is around like 150 papers in this area at the moment"}, {"id": "s136", "start": 735.48, "end": 737.4, "text": "and all of them are addressing in a nice way."}, {"id": "s137", "start": 737.4, "end": 740.08, "text": "You can measure the recall there is data sets."}, {"id": "s138", "start": 740.08, "end": 747.4, "text": "But there is no work and research at the moment that targets tribal memory or institutional memory."}, {"id": "s139", "start": 747.4, "end": 748.88, "text": "Like what does it mean exactly?"}, {"id": "s140", "start": 748.88, "end": 752.28, "text": "How do you measure tribal memory success?"}, {"id": "s141", "start": 752.28, "end": 761.16, "text": "And also for the chip design domain, it's actually even harder because there is not enough data sets like computer vision domain, there is many data sets over there."}, {"id": "s142", "start": 761.16, "end": 762.36, "text": "So there is nothing collected."}, {"id": "s143", "start": 762.36, "end": 769.52, "text": "So we have our own wheel and going with SMEs collecting this kind of data sets."}, {"id": "s144", "start": 769.68, "end": 770.76, "text": "Cool."}, {"id": "s145", "start": 770.76, "end": 770.943, "text": "So"}, {"id": "s146", "start": 770.943, "end": 771.2, "text": "[snorts]"}, {"id": "s147", "start": 771.2, "end": 772.12, "text": "what broke?"}, {"id": "s148", "start": 772.12, "end": 777.44, "text": "Which actually when I attend any talk I like to hear what broke, how do you fix it?"}, {"id": "s149", "start": 777.44, "end": 780.0, "text": "First, agent overstepped."}, {"id": "s150", "start": 780.0, "end": 791.0, "text": "In early design phases of the system, we found that an analog agent that's specifically for analog design actually overstepping and doing RTL agent work."}, {"id": "s151", "start": 791.0, "end": 793.12, "text": "Which wasn't really great."}, {"id": "s152", "start": 793.12, "end": 796.24, "text": "Even we tried to enforce it, but it was a difficult problem."}, {"id": "s153", "start": 796.24, "end": 800.8389999999999, "text": "And then another thing is we noticed that truth has drifted."}, {"id": "s154", "start": 800.8389999999999, "end": 808.92, "text": "An agent modifying something in the system not necessarily means it modifies it everywhere it should be modified."}, {"id": "s155", "start": 808.92, "end": 809.92, "text": "And that make it harder."}, {"id": "s156", "start": 809.92, "end": 818.8, "text": "Like we have the cases specifically where one agent were modifying a parameter, it updated it in one place, five other places were forgotten."}, {"id": "s157", "start": 818.8, "end": 824.72, "text": "And the third one is one of my favorite is we asked the agent do not write into specs."}, {"id": "s158", "start": 824.72, "end": 826.84, "text": "Just don't don't change the specs."}, {"id": "s159", "start": 826.84, "end": 828.8, "text": "They said, \"Okay, I obey you."}, {"id": "s160", "start": 828.8, "end": 831.12, "text": "I'm not going to write into specs.\""}, {"id": "s161", "start": 831.12, "end": 835.44, "text": "But then they moved into bash and they used set to write into specs."}, {"id": "s162", "start": 835.44, "end": 837.48, "text": "We blocked, bash we blocked set."}, {"id": "s163", "start": 837.48, "end": 838.64, "text": "They said, \"Okay, cool."}, {"id": "s164", "start": 838.64, "end": 841.44, "text": "I will use cat actually to write over the specs.\""}, {"id": "s165", "start": 841.44, "end": 847.8, "text": "So we're being like a cat chasing a mouse around to just to prevent it from writing over specs."}, {"id": "s166", "start": 847.8, "end": 854.96, "text": "And based on these three failures we have, we came up with principles that we are working today."}, {"id": "s167", "start": 854.96, "end": 864.08, "text": "First, we have a spec hierarchy with agent scope and file isolation to allow them only to work on this specific task or specific domain."}, {"id": "s168", "start": 864.08, "end": 868.2, "text": "That's all this our problem of agents stepping on each other."}, {"id": "s169", "start": 868.2, "end": 879.12, "text": "Second one is we have a single source of truth with automatic conflict detection that is not element based but actually rule based that can detect that this agent did this issue."}, {"id": "s170", "start": 879.12, "end": 884.92, "text": "And we can or want to change this value and actually resonate in the whole system immediately."}, {"id": "s171", "start": 884.92, "end": 890.32, "text": "And thirdly, which I think of it as an IT administration for agent, we block at the source."}, {"id": "s172", "start": 890.32, "end": 897.08, "text": "Like we block from system level, not about level like tool by tool, but just we try to block it over there."}, {"id": "s173", "start": 897.08, "end": 909.32, "text": "And the key lesson we learned here that agents care about like if you have your agents which are intelligent, it what matters is substrate layer that they are living in."}, {"id": "s174", "start": 909.32, "end": 913.16, "text": "Like the world they living in is more important than the agents itself."}, {"id": "s175", "start": 913.16, "end": 918.76, "text": "Like what they can do, what they cannot do, what you allow and what you don't allow."}, {"id": "s176", "start": 919.04, "end": 919.64, "text": "Cool."}, {"id": "s177", "start": 919.64, "end": 922.32, "text": "So, I'm going to use the word bottleneck."}, {"id": "s178", "start": 922.32, "end": 926.04, "text": "It's been used many times, but actually it's bottleneck in our case."}, {"id": "s179", "start": 926.04, "end": 927.52, "text": "It wasn't missing intelligence."}, {"id": "s180", "start": 927.52, "end": 929.48, "text": "It was missing alignment."}, {"id": "s181", "start": 929.48, "end": 933.64, "text": "And a shared nervous system lets your team move like a one body."}, {"id": "s182", "start": 933.64, "end": 942.76, "text": "As we see at the moment, one of the things I like hearing from our subject matter experts that they're saying that at the beginning of system is not working fine."}, {"id": "s183", "start": 942.76, "end": 944.6, "text": "Now it is good."}, {"id": "s184", "start": 944.6, "end": 946.36, "text": "Now I feel it's racing me."}, {"id": "s185", "start": 946.36, "end": 948.52, "text": "This is success for our case."}, {"id": "s186", "start": 948.52, "end": 952.76, "text": "And we think that this gives you four x leverage from our measurement at the moment."}, {"id": "s187", "start": 952.76, "end": 955.44, "text": "And alignment is universal."}, {"id": "s188", "start": 955.44, "end": 960.16, "text": "We're building it for the hardest case, which is ship design."}, {"id": "s189", "start": 960.68, "end": 966.12, "text": "So currently we're in alpha stage with our development partners."}, {"id": "s190", "start": 966.12, "end": 969.24, "text": "And the sign ups for beta are open."}, {"id": "s191", "start": 969.24, "end": 975.4, "text": "And you can actually join now and we expect it to release it in October 26."}, {"id": "s192", "start": 975.56, "end": 984.08, "text": "If you want to reach out us, sign up for the beta, just use this QR code or the link over there."}, {"id": "s193", "start": 984.08, "end": 986.36, "text": "Thank you everyone."}, {"id": "s194", "start": 987.751, "end": 989.751, "text": "[applause]"}, {"id": "s195", "start": 1003.471, "end": 1005.471, "text": "[music]"}]}, {"id": "0uC6u0lJJl4", "title": "Your company brain will leak secrets: how we stopped it for big banks — Tanmai Gopal, PromptQL", "channel": "AI Engineer", "duration": 1585, "upload_date": null, "url": "https://www.youtube.com/watch?v=0uC6u0lJJl4", "api": "/api/talks/0uC6u0lJJl4.json", "summary_url": "/#0uC6u0lJJl4", "transcript": {"html": "/transcripts/0uC6u0lJJl4.html", "txt": "/transcripts/0uC6u0lJJl4.txt", "vtt": "/transcripts/0uC6u0lJJl4.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.88, "end": 13.599, "text": "All right."}, {"id": "s3", "start": 13.599, "end": 15.36, "text": "Um, everybody can see."}, {"id": "s4", "start": 15.36, "end": 17.039, "text": "Hey everybody."}, {"id": "s5", "start": 17.039, "end": 18.72, "text": "Um, thank you for being here."}, {"id": "s6", "start": 18.72, "end": 27.84, "text": "I'm going to talk about um the fact that if you go ahead and build a company brain, it will um likely leak company secrets."}, {"id": "s7", "start": 27.84, "end": 32.16, "text": "um which is kind of the big fear that we have about building a company brain anyway, right?"}, {"id": "s8", "start": 32.16, "end": 37.76, "text": "Which is this case of like intern joins the company and then suddenly gets like comp details and everybody kind of situation, right?"}, {"id": "s9", "start": 37.76, "end": 40.079, "text": "You want to you want to guard against that."}, {"id": "s10", "start": 40.079, "end": 49.2, "text": "Um this has kind of been I guess pretty much the biggest thing that's been holding us back from just deploying openclaw and Hermes all over the place, right?"}, {"id": "s11", "start": 49.2, "end": 57.76, "text": "It's also kind of the reason it's like this big opportunity that Claude Tag had with it recent launch a few days ago where like it was going to be the company brain but then everybody's like well"}, {"id": "s12", "start": 57.76, "end": 70.479, "text": "it's not um it doesn't look like it's going to be the company brain right so I'm going to talk about kind of what makes it challenging so before we get into that let's let's kind of understand and dissect this company brain business a little bit right um"}, {"id": "s13", "start": 70.479, "end": 84.56, "text": "I'm Tan I'm the co founderql um you can check promqql out um later but uh the our background as a team building This is we come from um the hustra graph we're creators of the hassur graphql engine which is very popular"}, {"id": "s14", "start": 84.56, "end": 98.07900000000001, "text": "open source project in the graphql space uh where we solved a lot of data access problems um we deployed everywhere from like apple to meta to JP Morgan etc. uh and um and that kind of gave us a lot of these this grounding"}, {"id": "s15", "start": 98.07900000000001, "end": 105.03999999999999, "text": "uh for uh and and you know kind of like a lovehate relationship with uh data and data security."}, {"id": "s16", "start": 105.03999999999999, "end": 107.52000000000001, "text": "Um, all right."}, {"id": "s17", "start": 107.52000000000001, "end": 115.119, "text": "So, I'm going to show you stuff that we've been working on over the last year and kind of what we've learned from that so that you can kind of take that"}, {"id": "s18", "start": 115.119, "end": 118.07900000000001, "text": "and exercise that and try it out for yourself."}, {"id": "s19", "start": 118.07900000000001, "end": 125.119, "text": "Um, and of course, at the end of the talk, happy to kind of exchange notes and see what works or what might what might not work for you."}, {"id": "s20", "start": 125.119, "end": 132.4, "text": "Um, over the last year, we've only partnered with a small set of people who've exhibited some kind of spike on scale."}, {"id": "s21", "start": 132.4, "end": 146.72, "text": "M so about 15 to 20 folks so far and now we're just starting to open it up to other people but over that course of time we've kind of looked at three different types of set of people with very different needs right you have AI native companies that are willing to just do whatever as long as it"}, {"id": "s22", "start": 146.72, "end": 160.8, "text": "works you have kind of tech forward companies right folks like Instacart who um like best of breed technology right um so they'll move fast they'll be tolerable to breaking things but it just needs to be really really good right and then you have fortune banks"}, {"id": "s23", "start": 160.8, "end": 162.959, "text": "uh who have like a me level security."}, {"id": "s24", "start": 162.959, "end": 165.36, "text": "Uh, thank God that they do because they're my bank."}, {"id": "s25", "start": 165.36, "end": 171.44, "text": "I definitely don't want vibecoded AI agents running inside a bank because that's where my money is."}, {"id": "s26", "start": 171.44, "end": 174.239, "text": "Um, so they have a lot of security rules."}, {"id": "s27", "start": 174.239, "end": 175.36, "text": "Uh, thank you so much."}, {"id": "s28", "start": 175.36, "end": 178.31900000000002, "text": "Uh, but we're deployed in places like those as well."}, {"id": "s29", "start": 178.31900000000002, "end": 182.72, "text": "Um, with kind of the beginnings or like the frontal lobe of a company brain, right?"}, {"id": "s30", "start": 182.72, "end": 185.12, "text": "So, we'll kind of talk about those kind of learnings."}, {"id": "s31", "start": 185.12, "end": 191.04, "text": "Our own personal usage of kind of building out our company brain."}, {"id": "s32", "start": 191.04, "end": 193.2, "text": "Um it kind of is about 5,000 pages."}, {"id": "s33", "start": 193.2, "end": 194.64, "text": "So we model it as a wiki."}, {"id": "s34", "start": 194.64, "end": 196.159, "text": "Uh you can model it however you want."}, {"id": "s35", "start": 196.159, "end": 198.07999999999998, "text": "You can model it as a set of markdown files on GitHub."}, {"id": "s36", "start": 198.07999999999998, "end": 200.879, "text": "You can put it into a remember graph frag."}, {"id": "s37", "start": 200.879, "end": 203.76, "text": "Uh you can model it in a you can model it in knowledge in knowledge graphs."}, {"id": "s38", "start": 203.76, "end": 204.879, "text": "You can do whatever you want."}, {"id": "s39", "start": 204.879, "end": 207.36, "text": "Um so you can you can place it wherever you want."}, {"id": "s40", "start": 207.36, "end": 211.84, "text": "But like it's about 5,000 interconnected pages for us."}, {"id": "s41", "start": 212.4, "end": 213.599, "text": "Question for you folks."}, {"id": "s42", "start": 213.599, "end": 216.64, "text": "So suppose you had a company brain that was working."}, {"id": "s43", "start": 216.64, "end": 217.599, "text": "It was working well."}, {"id": "s44", "start": 217.599, "end": 219.92000000000002, "text": "It was all set up right."}, {"id": "s45", "start": 219.92000000000002, "end": 224.4, "text": "um there would be a kind of daily number of updates that would happen to this com to this company brain, right?"}, {"id": "s46", "start": 224.4, "end": 227.36, "text": "Because it was learning stuff from everybody in the company, right?"}, {"id": "s47", "start": 227.36, "end": 232.07999999999998, "text": "From finance to HR to um your engineers to everybody."}, {"id": "s48", "start": 232.07999999999998, "end": 240.72, "text": "So if you were to plot the daily number of updates happening to the company brain, what would it sort of look like?"}, {"id": "s49", "start": 240.72, "end": 244.4, "text": "Would it sort of look like a roughly downward trend?"}, {"id": "s50", "start": 244.4, "end": 249.68, "text": "Like all of these are like random graphs, but would you would it sort of like start and then go down?"}, {"id": "s51", "start": 249.68, "end": 255.28, "text": "Would it kind of be steady going up and down as updates spike or would it kind of steadily increase upwards?"}, {"id": "s52", "start": 255.28, "end": 261.359, "text": "Um so kind of think about like what would the commit history to your shared skills repo look like, right?"}, {"id": "s53", "start": 261.359, "end": 266.8, "text": "How many updates are happening to a healthy company brain, right?"}, {"id": "s54", "start": 266.8, "end": 268.96, "text": "Um every single day, what does that trend look like?"}, {"id": "s55", "start": 268.96, "end": 271.84, "text": "Um anybody for option A?"}, {"id": "s56", "start": 271.84, "end": 273.04, "text": "Anybody thinks it's option A?"}, {"id": "s57", "start": 273.04, "end": 274.24, "text": "Okay, cool."}, {"id": "s58", "start": 274.24, "end": 277.52, "text": "Uh, option B. Okay."}, {"id": "s59", "start": 277.52, "end": 280.24, "text": "Option C. Ah, that's nice."}, {"id": "s60", "start": 280.24, "end": 287.36, "text": "Um, and and and so that's so when I kind of plotted our thing, right, to see what a healthy company brain looks like."}, {"id": "s61", "start": 287.36, "end": 293.12, "text": "Um, if you look at number one, it's basically saying we had a lot of enthusiasm."}, {"id": "s62", "start": 293.12, "end": 296.56, "text": "We built the company brain on day one, day two."}, {"id": "s63", "start": 296.56, "end": 305.36, "text": "somebody we gave somebody the task and said build all the shared skills repo scrape all the slack scrape all the emails build it and we'll all use it and then nobody cares"}, {"id": "s64", "start": 305.36, "end": 314.88, "text": "right or you have a system which is autolearning maybe you have a Hermes that's deployed internally something like that where it's kind of steadily adding more and more comments so it kind of goes up and down depending on who has enthusiasm"}, {"id": "s65", "start": 314.88, "end": 326.4, "text": "right um and then when I plotted our history over just the last uh two months and this is a little bit outdated now this is what we got and I was kind of shocked"}, {"id": "s66", "start": 326.4, "end": 330.479, "text": "I was like, why is it continuously increasing?"}, {"id": "s67", "start": 330.479, "end": 332.32, "text": "Like it's a gentle curve, right?"}, {"id": "s68", "start": 332.32, "end": 334.32, "text": "But why is it gently just going up?"}, {"id": "s69", "start": 334.32, "end": 338.32, "text": "Why is the number of updates per day increasing?"}, {"id": "s70", "start": 338.32, "end": 346.15999999999997, "text": "And that was fascinating for me to see because what I realized was that if you have a system that starts to work, what happens is people start to teach it a lot more."}, {"id": "s71", "start": 346.15999999999997, "end": 360.24, "text": "It's like saying if I taught you the skill for quering data then tomorrow I'm going to teach you the skill for interpreting that data and then day after tomorrow I'm going to teach you the skill of how to take an action based on that and then after that I'm going to figure out how to do AB testing"}, {"id": "s72", "start": 360.24, "end": 375.28, "text": "based on so people like you continuously add more but because everything is an agent where no amount of learning is perfect everything has its own kind of steady rate as well right so the rates kind of even your steady rates kind of keep adding up and that's what I started to notice in our thing as well this"}, {"id": "s73", "start": 375.28, "end": 375.919, "text": "is early."}, {"id": "s74", "start": 375.919, "end": 378.08, "text": "So, who knows if it'll kind of peter out eventually."}, {"id": "s75", "start": 378.08, "end": 388.16, "text": "Maybe it'll start to look more like option B. But a healthy brain, of course, the overall size keeps increasing, but even your daily updates per day kind of keep increasing as well."}, {"id": "s76", "start": 388.16, "end": 392.8, "text": "So, that's a sign of a good brain that you built, right?"}, {"id": "s77", "start": 392.8, "end": 395.28, "text": "A healthy brain that you built for your company."}, {"id": "s78", "start": 395.28, "end": 396.479, "text": "Awesome."}, {"id": "s79", "start": 396.479, "end": 402.56, "text": "The use cases for company brains, how we start to analyze how we build a system that won't leak secrets, right?"}, {"id": "s80", "start": 402.56, "end": 404.8, "text": "So, two use cases."}, {"id": "s81", "start": 404.8, "end": 408.88, "text": "The first use case is there is a company brain."}, {"id": "s82", "start": 408.88, "end": 414.88, "text": "I want to use it in my AI agent whatever to get work done, right?"}, {"id": "s83", "start": 414.88, "end": 416.639, "text": "Um I'll show you an example of that, right?"}, {"id": "s84", "start": 416.639, "end": 425.28, "text": "It's like I got an email with a security questionnaire I need to answer from a customer and I talk to my AI and I'm like look up the company brain and help me answer this security questionnaire."}, {"id": "s85", "start": 425.28, "end": 425.599, "text": "Right?"}, {"id": "s86", "start": 425.599, "end": 428.56, "text": "That's a totally valid use case of a company brain."}, {"id": "s87", "start": 428.56, "end": 430.24, "text": "Second, very useful use case, right?"}, {"id": "s88", "start": 430.24, "end": 434.319, "text": "because it's other people's knowledge that are that is coming to me."}, {"id": "s89", "start": 434.319, "end": 451.919, "text": "Second use case of a company brain is kind of similar to what uh cloud tag is is a this idea of multiplayer and if you've been putting agents inside slack in places where multiple people can interact with it it's kind of being using using it as a shared AI right to like get stiff stuff done."}, {"id": "s90", "start": 451.919, "end": 456.96, "text": "Um, and an example of that could be collaborative incident management, right?"}, {"id": "s91", "start": 456.96, "end": 460.639, "text": "So, for example, you want to say like, hey, I want to fetch logs."}, {"id": "s92", "start": 460.639, "end": 468.479, "text": "I want to investigate the there's an incident, go fetch some logs, investigate the code codebase, raise the PR, deploy to staging, deploy to prod, set up an alert, right?"}, {"id": "s93", "start": 468.479, "end": 471.919, "text": "You want like multiple people are doing things with the company brain."}, {"id": "s94", "start": 471.919, "end": 473.84000000000003, "text": "So, those are kind of two use cases of the company brain."}, {"id": "s95", "start": 473.84000000000003, "end": 480.56, "text": "One is kind of this like shared collaborative knowledge use case and one is like shared AI use case itself, right?"}, {"id": "s96", "start": 480.56, "end": 486.479, "text": "Both of those have a huge um security kind of problem, right?"}, {"id": "s97", "start": 486.479, "end": 495.759, "text": "Um so to start to secure it, let's kind of define that a little bit more strongly, right?"}, {"id": "s98", "start": 495.759, "end": 498.319, "text": "So what exactly is a company brain?"}, {"id": "s99", "start": 498.319, "end": 500.24, "text": "And this is my definition of it, right?"}, {"id": "s100", "start": 500.24, "end": 506.319, "text": "It's shared context that you'd put in a markdown that you'd put in a set of markdown files, right?"}, {"id": "s101", "start": 506.319, "end": 514.8, "text": "and its access control rules for the different data and tools that you want to access as given to a coding agent."}, {"id": "s102", "start": 514.8, "end": 521.12, "text": "So that's what I'm calling it for um because I'm speaking so I can define whatever I want."}, {"id": "s103", "start": 521.12, "end": 522.719, "text": "Um that's my definition."}, {"id": "s104", "start": 522.719, "end": 528.56, "text": "So I'm not saying this is knowledge that is pulled into an LLM that will do tool calls, right?"}, {"id": "s105", "start": 528.56, "end": 531.76, "text": "It is not a AI that is doing general purpose stuff."}, {"id": "s106", "start": 531.76, "end": 536.72, "text": "It is an AI that is a coding agent that is solving whatever problem you throw at it."}, {"id": "s107", "start": 536.72, "end": 536.9590000000001, "text": "Right?"}, {"id": "s108", "start": 536.9590000000001, "end": 544.32, "text": "And similar to the a little bit of the previous talk that you folks might have heard which is this idea of like can we just use a coding agent to solve general problems."}, {"id": "s109", "start": 544.32, "end": 545.12, "text": "It's that right?"}, {"id": "s110", "start": 545.12, "end": 554.88, "text": "So in the most trivial case if you say hey write me a tweet you're writing a small script that's making an AI call to write a small tweet right you probably don't need to do that."}, {"id": "s111", "start": 554.88, "end": 560.399, "text": "The AI itself can just like return the tweet back to you but like essentially claude code being used for everything."}, {"id": "s112", "start": 560.399, "end": 562.32, "text": "Cloud co-work is the same architecture."}, {"id": "s113", "start": 562.32, "end": 568.32, "text": "The codeex app is the same architecture which is this realization that you can use coding agents to solve general purpose problems."}, {"id": "s114", "start": 568.32, "end": 570.08, "text": "So we're building the brain for that."}, {"id": "s115", "start": 570.08, "end": 577.76, "text": "We're not building gigantic knowledge graph knowledge base for the company and then trying to secure it that anyway it doesn't hasn't worked won't work."}, {"id": "s116", "start": 577.76, "end": 584.88, "text": "Um, so in terms of how we want to approach designing the company brain, right?"}, {"id": "s117", "start": 585.92, "end": 590.16, "text": "Should we build a company brain?"}, {"id": "s118", "start": 590.399, "end": 602.959, "text": "So, if you're an enterprise and you're paid to twiddle your thumbs, then you like this idea of building a company brain because you're like, \"Yes, let me take on a two-year project and I will build the company brain for JP Morgan.\""}, {"id": "s119", "start": 602.959, "end": 603.76, "text": "That's not going to happen."}, {"id": "s120", "start": 603.76, "end": 607.279, "text": "You can't build a company brain for an organization that's like 100 years old, right?"}, {"id": "s121", "start": 607.279, "end": 610.399, "text": "you can barely build it for your own family, right?"}, {"id": "s122", "start": 610.399, "end": 613.279, "text": "Which might just be months or years old, right?"}, {"id": "s123", "start": 613.279, "end": 619.68, "text": "So, so the idea and the way that we want to build a company brain is we want each person who does a little bit of the work in the company"}, {"id": "s124", "start": 619.68, "end": 623.36, "text": "to own and build their part of the company brain, right?"}, {"id": "s125", "start": 623.36, "end": 625.6, "text": "That's the way we should build it."}, {"id": "s126", "start": 625.6, "end": 628.0, "text": "So, that's kind of constraint number two that I'm putting."}, {"id": "s127", "start": 628.0, "end": 635.2, "text": "One was the definition of the company brain and second is how the approach that we want to take for how a company brain is built."}, {"id": "s128", "start": 635.44, "end": 639.76, "text": "I like kind of this way of phrasing it, which is that we're going to grow a company brain."}, {"id": "s129", "start": 639.76, "end": 641.6, "text": "We're not going to build one, right?"}, {"id": "s130", "start": 641.6, "end": 644.079, "text": "We're going to like let it let it come together."}, {"id": "s131", "start": 644.079, "end": 647.8389999999999, "text": "The system needs to come together otherwise it'll it'll it's not it's not possible to build."}, {"id": "s132", "start": 647.8389999999999, "end": 648.64, "text": "All right."}, {"id": "s133", "start": 648.64, "end": 654.88, "text": "Um broadly, we want to let each person self-s serve their bit of the company brain."}, {"id": "s134", "start": 654.88, "end": 658.32, "text": "Um and so these are kind of like the various steps that you want to follow."}, {"id": "s135", "start": 658.32, "end": 660.72, "text": "I'll come back to this in more detail if we have time."}, {"id": "s136", "start": 660.72, "end": 663.6, "text": "But let's start with a particular use case, right?"}, {"id": "s137", "start": 663.6, "end": 672.16, "text": "So in this particular use case, what I have is this kind of situation where this is kind of the tangible example I want to take for you folks."}, {"id": "s138", "start": 672.16, "end": 675.519, "text": "Um I got an email just a security questionnaire example, right?"}, {"id": "s139", "start": 675.519, "end": 678.8, "text": "Hey, I got an email from Dave at StitchFix."}, {"id": "s140", "start": 678.8, "end": 681.36, "text": "Um and that has a bunch of questions I want to answer, right?"}, {"id": "s141", "start": 681.36, "end": 683.04, "text": "So it pulls up my email."}, {"id": "s142", "start": 683.04, "end": 690.399, "text": "It says the email has a screenshot of their security onboarding and then it starts to kind of answer those questions, right?"}, {"id": "s143", "start": 690.399, "end": 692.399, "text": "Um I have no idea how it knew."}, {"id": "s144", "start": 692.399, "end": 697.36, "text": "I was kind of very surprised to see that it answered all of the questions on like, hey, this is our trust center."}, {"id": "s145", "start": 697.36, "end": 699.279, "text": "This is how our security stuff looks."}, {"id": "s146", "start": 699.279, "end": 700.88, "text": "Um, they have a gateway, right?"}, {"id": "s147", "start": 700.88, "end": 702.0, "text": "It does something."}, {"id": "s148", "start": 702.0, "end": 705.8389999999999, "text": "All of this is kind of coming from the company brain, right?"}, {"id": "s149", "start": 705.8389999999999, "end": 706.88, "text": "Which is the answer to that."}, {"id": "s150", "start": 706.88, "end": 710.88, "text": "And then kind of go ahead and I'm like, hey, just go ahead and send this."}, {"id": "s151", "start": 710.88, "end": 712.0, "text": "I like this draft."}, {"id": "s152", "start": 712.0, "end": 713.76, "text": "Go ahead and send this draft to Dave, right?"}, {"id": "s153", "start": 713.76, "end": 715.519, "text": "And then goes and sends that email."}, {"id": "s154", "start": 715.519, "end": 717.2, "text": "Really simple example of what I want to do."}, {"id": "s155", "start": 717.2, "end": 720.399, "text": "Now, the challenge here, right?"}, {"id": "s156", "start": 720.399, "end": 736.72, "text": "And the issue is that how do we build a system right which somebody else can contribute to that a third person kind of uses how did this knowledge about what our security"}, {"id": "s157", "start": 736.72, "end": 753.04, "text": "thing is come in presumably somebody else had been working on the same security questionnaire right so they had let's say a Hermes agent or whatever they were working on it you autosaved some memory maybe somebody wrote down a skill somehow that piece piece has to come to my AI agent."}, {"id": "s158", "start": 753.04, "end": 756.399, "text": "How are we going to make that possible right now?"}, {"id": "s159", "start": 756.399, "end": 762.88, "text": "Um let's try obvious thing uh number one right which is that everybody writes shared skills for each other on GitHub."}, {"id": "s160", "start": 762.88, "end": 770.88, "text": "So the first time the security questionnaire was answered by your security person everybody visualize like your security and compliance person in your head right now."}, {"id": "s161", "start": 770.88, "end": 777.12, "text": "Imagine that they after answering the questionnaire, it sucks to answer questionnaires."}, {"id": "s162", "start": 777.12, "end": 786.24, "text": "After answering this gigantic Excel sheet of a of a questionnaire, they then went to GitHub and updated a shared skill, right?"}, {"id": "s163", "start": 786.24, "end": 797.2, "text": "Many of you are fortunate to work with people who are modeled after our Lord and Savior Christ, who are so nice, who will go and update shared skills in a GitHub repo,"}, {"id": "s164", "start": 797.2, "end": 797.68, "text": "right?"}, {"id": "s165", "start": 797.68, "end": 799.36, "text": "Most people will not."}, {"id": "s166", "start": 799.36, "end": 810.079, "text": "Nobody is going to write skills for another person in GitHub like that is not that is not something that is natural to us right in the dayto-day of doing work"}, {"id": "s167", "start": 810.079, "end": 827.8389999999999, "text": "we don't suddenly decide that ooh this might be really useful for somebody else I don't even know I'm not connected to in this situation in the future not happening I can barely get it to like curate my own memory and my context I do not have the time to send it to somebody else um to write it"}, {"id": "s168", "start": 827.8389999999999, "end": 829.239, "text": "down for somebody"}, {"id": "s169", "start": 829.239, "end": 829.8389999999999, "text": "[snorts]"}, {"id": "s170", "start": 829.8389999999999, "end": 833.76, "text": "Second, instead of having a company brain, why don't you do a team brain?"}, {"id": "s171", "start": 833.76, "end": 835.92, "text": "Why don't you all just use one shared?"}, {"id": "s172", "start": 835.92, "end": 841.68, "text": "Why doesn't the security team kind of use one more shared silo where you can do this, right?"}, {"id": "s173", "start": 841.68, "end": 845.04, "text": "So, build an agent and have it kind of save to memory itself, right?"}, {"id": "s174", "start": 845.04, "end": 850.079, "text": "Um, and that's kind of the architecture that I I'm guessing a lot of you folks have with maybe something like a Hermes added to Slack."}, {"id": "s175", "start": 850.079, "end": 858.24, "text": "Does anybody have kind of a team team brain situation going where you have an AI that multiple people use that autosaves memory and auto adds context?"}, {"id": "s176", "start": 858.24, "end": 863.199, "text": "Does anybody have kind of like a skill that does that already just for a small team?"}, {"id": "s177", "start": 863.199, "end": 863.6, "text": "One."}, {"id": "s178", "start": 863.6, "end": 864.32, "text": "Anybody else?"}, {"id": "s179", "start": 864.32, "end": 864.639, "text": "Okay."}, {"id": "s180", "start": 864.639, "end": 864.88, "text": "Okay."}, {"id": "s181", "start": 864.88, "end": 865.6, "text": "A few of you have that."}, {"id": "s182", "start": 865.6, "end": 866.24, "text": "That's cool."}, {"id": "s183", "start": 866.24, "end": 871.92, "text": "Um this is nice but the problem is it's still not a company brain because it's still isolated, right?"}, {"id": "s184", "start": 871.92, "end": 873.92, "text": "So it's like one more silo, right?"}, {"id": "s185", "start": 873.92, "end": 892.24, "text": "Like for example um if this gets like with claw tag um it it has a per channel memory right so in every channel it gets saved but now it's another silo in that one channel right so now it's again locked into one place that can't be used anywhere else so if somebody got added to that channel it"}, {"id": "s186", "start": 892.24, "end": 906.079, "text": "would work but otherwise it wouldn't work right um and so this is the third option the third option is saying all context text goes into a single shared wiki."}, {"id": "s187", "start": 906.079, "end": 908.88, "text": "A wiki is a set of markdown files and markdown files can link to each other."}, {"id": "s188", "start": 908.88, "end": 911.04, "text": "So imagine a gigantic folder."}, {"id": "s189", "start": 911.04, "end": 913.92, "text": "The folder has lots of markdown files, right?"}, {"id": "s190", "start": 913.92, "end": 928.56, "text": "And So all all context instead of saving it inside a folder, siloing it, you put it in a markdown file, the equivalent of a markdown file, and you let it link with each other."}, {"id": "s191", "start": 928.56, "end": 938.32, "text": "The second thing that you do is you allow each file to have scopes on who can have readwrite access to that file."}, {"id": "s192", "start": 938.9590000000001, "end": 947.36, "text": "The third thing that you do which is the most important, you don't let the agent auto add the memory."}, {"id": "s193", "start": 949.519, "end": 955.8389999999999, "text": "You don't let it auto add because if it auto adds, you have no idea what happened, right?"}, {"id": "s194", "start": 955.8389999999999, "end": 964.959, "text": "You can't the we we're back to kind of the same world where some stuff is getting added and as long as you're in that agent's memory, you're lucky, right?"}, {"id": "s195", "start": 964.959, "end": 979.36, "text": "So, the third thing that you do is instead of letting the agent auto add, do something that allows your agent to suggest what is added with what scopes and then have the human"}, {"id": "s196", "start": 979.36, "end": 981.92, "text": "accept or reject."}, {"id": "s197", "start": 981.92, "end": 993.12, "text": "So it's not as heavy as GitHub where I have to go and write this update a shared skill do a PR review and then get it merged but it's also not as yolo"}, {"id": "s198", "start": 993.12, "end": 1008.639, "text": "as the memory just kind of being autowritten by the agent right it's kind of the sweet spot where while you are working you pop it up suggest the right scopes and let somebody add it so now what happens is with this very simple addition"}, {"id": "s199", "start": 1008.639, "end": 1017.44, "text": "right you are able to let people add to a gigantic wiki, but you let that person take on responsibility for what they can see or not."}, {"id": "s200", "start": 1017.44, "end": 1024.0, "text": "So, if I'm adding something to the finance wiki, I want to make sure I'm adding something that's sensitive, I want to make sure it has a finance scope."}, {"id": "s201", "start": 1024.0, "end": 1026.959, "text": "If I'm adding something that's personal, I want to make sure that that's personal scope."}, {"id": "s202", "start": 1026.959, "end": 1029.199, "text": "Let me show you an example UX of what that might look like."}, {"id": "s203", "start": 1029.199, "end": 1031.679, "text": "This is what we do."}, {"id": "s204", "start": 1045.52, "end": 1053.28, "text": "This was a recent email that I got um from one of our sales reps adding me onto a call."}, {"id": "s205", "start": 1053.28, "end": 1063.919, "text": "I looked at that email, helped answer it, and then I got a little box that suggested a bunch of bullets that told me what it's going to add, right?"}, {"id": "s206", "start": 1063.919, "end": 1067.919, "text": "And when I hit add to wiki and and so now it's much easier for me to review what is getting added."}, {"id": "s207", "start": 1067.919, "end": 1074.96, "text": "I don't care I don't care if it gets added into this markdown file, that markdown file, what links that the agent takes care of."}, {"id": "s208", "start": 1074.96, "end": 1078.64, "text": "What I care about is are these facts correct?"}, {"id": "s209", "start": 1078.64, "end": 1083.12, "text": "If these facts are correct, I'm going to hit add to wiki and I'm going to be done, right?"}, {"id": "s210", "start": 1083.12, "end": 1088.64, "text": "And and during the time of add to wiki, I can choose what scopes need to be added per wiki page or not."}, {"id": "s211", "start": 1088.64, "end": 1088.88, "text": "Right?"}, {"id": "s212", "start": 1088.88, "end": 1097.12, "text": "So each wiki page itself can get a certain set of scopes that you want to decide who gets access to what for example right so for example my email"}, {"id": "s213", "start": 1097.12, "end": 1105.28, "text": "this is the wiki page that I have for my emails and how my emails are prioritized and I can now decide who gets access to this who are the owners for this and what the artback for this is."}, {"id": "s214", "start": 1105.28, "end": 1114.16, "text": "So whatever the system looks like is up to you folks but the core idea is that you want to get the agent to suggest a change instead of doing the change."}, {"id": "s215", "start": 1114.16, "end": 1115.2, "text": "All right."}, {"id": "s216", "start": 1115.2, "end": 1116.32, "text": "So, two rules."}, {"id": "s217", "start": 1116.32, "end": 1119.44, "text": "One, make sure that everything goes into one companywide wiki."}, {"id": "s218", "start": 1119.44, "end": 1121.36, "text": "Don't back down from this rule."}, {"id": "s219", "start": 1121.36, "end": 1127.52, "text": "Second, make sure that like as a part of that, every change is backed by a human's name."}, {"id": "s220", "start": 1127.52, "end": 1135.12, "text": "Nothing should be allowed inside the wiki that is Claude added this or like your AI agent added this or Hermes added this."}, {"id": "s221", "start": 1135.12, "end": 1136.32, "text": "No, Tanme added this."}, {"id": "s222", "start": 1136.32, "end": 1151.84, "text": "that that name needs to be there so that you can tie it back to this is the person who screwed up and like allowed everybody to see like everybody's comp right and like whatever now you can take remedial action uh right whatever that is put them on a pip"}, {"id": "s223", "start": 1151.84, "end": 1164.16, "text": "um you didn't know how to edit a wiki so so that is very very important and rule number two once you decide that you can then go to the second scope of like okay you've got to make it easy for them to do that which is where this business of scopes come in where you want to scope"}, {"id": "s224", "start": 1164.16, "end": 1167.44, "text": "each file according to who gets access you to build kind of a system around it."}, {"id": "s225", "start": 1167.44, "end": 1181.76, "text": "This is what an architecture diagram of that looks like where you have users um users talk to the agent uh agent when it's reading context uses that particular user's claims right so if I am reading"}, {"id": "s226", "start": 1181.76, "end": 1191.84, "text": "something for solving a finance problem it's using the finance claim to read as me because I had access to the finance wiki so I can read it and that is done"}, {"id": "s227", "start": 1191.84, "end": 1198.08, "text": "every single time right so the agent is always using the user's credential to read the right part of the wiki."}, {"id": "s228", "start": 1198.08, "end": 1201.52, "text": "Um, all right."}, {"id": "s229", "start": 1201.52, "end": 1205.2, "text": "I am um I'm fairly out of time for the second use case."}, {"id": "s230", "start": 1205.2, "end": 1209.44, "text": "So, what I'm going to do is give you a quick flavor of the second use case, but extend this idea."}, {"id": "s231", "start": 1209.44, "end": 1212.88, "text": "This is the daddy use case."}, {"id": "s232", "start": 1212.88, "end": 1214.799, "text": "This is like this is the big daddy use case."}, {"id": "s233", "start": 1214.799, "end": 1220.88, "text": "This is a really complicated use case because now it's not just one person answering an email."}, {"id": "s234", "start": 1220.88, "end": 1231.919, "text": "It's a bunch of us using the shared context to solve a problem with various different escalation like privilege levels at the same time, right?"}, {"id": "s235", "start": 1231.919, "end": 1240.08, "text": "And these are kind of the these are the these are the interactions AI where the most amount of company brain knowledge is created, right?"}, {"id": "s236", "start": 1240.08, "end": 1246.88, "text": "For example, I'm going to show you a quick real life example of um what it looks like for us."}, {"id": "s237", "start": 1246.88, "end": 1259.2, "text": "Um so this was a case from an SR situation where um somebody was like hey our autolearning our wiki learning uh fairly meta was failing it wasn't working what's going on"}, {"id": "s238", "start": 1259.2, "end": 1272.88, "text": "right and then it starts doing the investigation and it sucks cuz it's it didn't have a skill it failed so like bro don't do this please use this open telemetry span name used an open telemetry span name it did a slightly better job but was still really slow"}, {"id": "s239", "start": 1272.88, "end": 1276.96, "text": "so he looked at the code and he's like oh you're using a like query."}, {"id": "s240", "start": 1276.96, "end": 1278.48, "text": "You're you're a you're a dumbass."}, {"id": "s241", "start": 1278.48, "end": 1282.48, "text": "This is Opus 4.5. Um we like like don't do this."}, {"id": "s242", "start": 1282.48, "end": 1282.799, "text": "Right?"}, {"id": "s243", "start": 1282.799, "end": 1284.799, "text": "So then he's like don't use a like query."}, {"id": "s244", "start": 1284.799, "end": 1286.159, "text": "Use an equals to query."}, {"id": "s245", "start": 1286.159, "end": 1286.559, "text": "Right?"}, {"id": "s246", "start": 1286.559, "end": 1295.2, "text": "And then it does equals to query and it surfaces some details and it and then he says oh dig deeper into this and it says whatever this is a line of code where the error is coming from."}, {"id": "s247", "start": 1295.2, "end": 1296.32, "text": "Simple stuff right?"}, {"id": "s248", "start": 1296.32, "end": 1303.44, "text": "This is now where it surfaces some knowledge and says aha I learned that I should use equals to and not like."}, {"id": "s249", "start": 1303.44, "end": 1303.679, "text": "Right?"}, {"id": "s250", "start": 1303.679, "end": 1309.52, "text": "I learned that if you have a custom prefix added to wiki page names, it can cause issues, right?"}, {"id": "s251", "start": 1309.52, "end": 1313.12, "text": "Um, so it offers these learnings that you can choose to accept."}, {"id": "s252", "start": 1313.12, "end": 1316.96, "text": "So he kind of went dug in deeper um into what the problem was."}, {"id": "s253", "start": 1316.96, "end": 1319.76, "text": "Somebody else joined the conversation, right?"}, {"id": "s254", "start": 1319.76, "end": 1323.36, "text": "And said the technical decision that we've made here is wrong."}, {"id": "s255", "start": 1323.36, "end": 1324.64, "text": "Why is this happening?"}, {"id": "s256", "start": 1324.64, "end": 1328.159, "text": "And now two people start to have an argument, right?"}, {"id": "s257", "start": 1328.159, "end": 1330.72, "text": "They have an argument saying, hey, it should not be like this."}, {"id": "s258", "start": 1330.72, "end": 1339.679, "text": "it should be like this but why is it like this but it should be like this right that argument creates knowledge because the actual problem was that somebody made a technical decision that was not documented"}, {"id": "s259", "start": 1339.679, "end": 1347.12, "text": "right when they decide to fix that issue and they observe that that is indeed the root cause and they decide that this is the way it's going to be fixed"}, {"id": "s260", "start": 1347.12, "end": 1357.76, "text": "hey we should remove this prefix that's causing a problem whatever whatever the thing is that creates the highest quality context to be added to your brain because the previous suggestion"}, {"id": "s261", "start": 1357.76, "end": 1361.28, "text": "was to say uh pages should not pages have a prefix."}, {"id": "s262", "start": 1361.28, "end": 1364.24, "text": "But the fact that pages have a prefix is a problem."}, {"id": "s263", "start": 1364.24, "end": 1365.039, "text": "Right?"}, {"id": "s264", "start": 1365.039, "end": 1369.2, "text": "So now the thing that you're documenting in the brain is pages should not have a prefix."}, {"id": "s265", "start": 1369.2, "end": 1372.64, "text": "If they have a prefix, it can cause lookup issues and prod."}, {"id": "s266", "start": 1372.64, "end": 1376.4, "text": "This happens when multiple people talk to each other, right?"}, {"id": "s267", "start": 1376.4, "end": 1377.36, "text": "And solve problems together."}, {"id": "s268", "start": 1377.36, "end": 1378.88, "text": "This is what happens in a Slack thread."}, {"id": "s269", "start": 1378.88, "end": 1383.28, "text": "When two people talk to each other and solve a problem, it creates the highest quality context."}, {"id": "s270", "start": 1383.28, "end": 1386.08, "text": "But and so so that's kind of what you want here."}, {"id": "s271", "start": 1386.08, "end": 1391.84, "text": "But the challenge is that the priv privilege escalation around this becomes very very serious."}, {"id": "s272", "start": 1391.84, "end": 1404.559, "text": "If you if you're building an agent that can do everything surrounded by multiple people, that's scary because the engineer was allowed to do the PR work but now I can use the same agent to deploy to prod."}, {"id": "s273", "start": 1404.559, "end": 1405.44, "text": "That's too scary."}, {"id": "s274", "start": 1405.44, "end": 1412.64, "text": "I can't have a conversation where I debug and deploy securely, right?"}, {"id": "s275", "start": 1412.64, "end": 1414.08, "text": "Especially if you're in a bank, right?"}, {"id": "s276", "start": 1414.08, "end": 1419.36, "text": "like the people who are debugging, deploying to staging, setting up an alert and deploying are not the same."}, {"id": "s277", "start": 1419.36, "end": 1423.44, "text": "But but being the same has a lot of value because that's where all the knowledge is, right?"}, {"id": "s278", "start": 1423.44, "end": 1430.88, "text": "And so that kind of brings us to the second architecture which I'm not going to get into too much detail with, but think of it as the same idea"}, {"id": "s279", "start": 1430.88, "end": 1434.799, "text": "where user credentials and claims were used to read context."}, {"id": "s280", "start": 1434.799, "end": 1442.64, "text": "Instead of that, also use user credentials, right, when the code is executing tools."}, {"id": "s281", "start": 1442.64, "end": 1445.76, "text": "So never store credentials in the sandbox."}, {"id": "s282", "start": 1445.76, "end": 1456.159, "text": "Instead of that at the HTTP layer, at the SQL layer, inject the user's credentials, allowing the AI to behave as the human in a particular interaction, right?"}, {"id": "s283", "start": 1456.159, "end": 1459.2, "text": "Um so there's interesting details here."}, {"id": "s284", "start": 1459.2, "end": 1463.52, "text": "Um but that is what allows a shared AI to work with shared context, right?"}, {"id": "s285", "start": 1463.52, "end": 1466.64, "text": "And those are kind of the two um key pieces to work with."}, {"id": "s286", "start": 1466.64, "end": 1472.24, "text": "So I would summarize and you'll this architecture is not particularly complicated, but it's very simple to work back from these two rules."}, {"id": "s287", "start": 1472.24, "end": 1474.48, "text": "Do not store credentials in the cloud sandbox."}, {"id": "s288", "start": 1474.48, "end": 1479.84, "text": "And second, virtualize all interactions with real data."}, {"id": "s289", "start": 1479.84, "end": 1481.919, "text": "Proxy it, virtualize it, whatever word you want to use."}, {"id": "s290", "start": 1481.919, "end": 1484.08, "text": "And let users control them."}, {"id": "s291", "start": 1484.08, "end": 1489.919, "text": "So the user who adds a particular tool should control who gets access uh to that particular tool."}, {"id": "s292", "start": 1489.919, "end": 1494.88, "text": "So you can derive this entire thing if you just kind of follow these four principles and work backwards from that."}, {"id": "s293", "start": 1494.88, "end": 1503.6, "text": "there's only one architecture that is possible that makes sense uh in how you manage context and what constraints you set up and how you manage tools and what security rules you set up."}, {"id": "s294", "start": 1503.6, "end": 1513.36, "text": "Um that is my time um and and so um happy to chat more um after the talk um we have a booth as well so happy to chat more through that on"}, {"id": "s295", "start": 1513.36, "end": 1515.44, "text": "what the nuances inside this architecture are."}, {"id": "s296", "start": 1515.44, "end": 1516.88, "text": "I'm Tanme on Twitter."}, {"id": "s297", "start": 1516.88, "end": 1518.4, "text": "Um we're called PromQL."}, {"id": "s298", "start": 1518.4, "end": 1524.64, "text": "Um do check us out um at the end of the day um with the AI engineering community."}, {"id": "s299", "start": 1524.64, "end": 1526.88, "text": "We're going to do a product launch."}, {"id": "s300", "start": 1526.88, "end": 1530.799, "text": "Uh and so I would love to share that folks share that with everybody."}, {"id": "s301", "start": 1530.799, "end": 1535.84, "text": "I'm going to take a picture with everybody on stage so that I can uh I can share that."}, {"id": "s302", "start": 1535.84, "end": 1539.919, "text": "And so let me let me do that while I'm here."}, {"id": "s303", "start": 1540.559, "end": 1541.039, "text": "All right."}, {"id": "s304", "start": 1541.039, "end": 1543.1970000000001, "text": "Do folks want to say cheese?"}, {"id": "s305", "start": 1543.1970000000001, "end": 1545.1970000000001, "text": "[laughter]"}, {"id": "s306", "start": 1546.0, "end": 1547.12, "text": "Thank you so much."}, {"id": "s307", "start": 1547.12, "end": 1548.64, "text": "Um so watch out for that."}, {"id": "s308", "start": 1548.64, "end": 1563.039, "text": "Um it's our approach to um claude tag which is prompt tag which is very similar to the ideas that we tag chatted about here except that you're not stuck to cloud you can use GLM and you can use GPT and then soul comes out and we can use that and have a lot of fun."}, {"id": "s309", "start": 1563.039, "end": 1568.159, "text": "Um so do check that out and otherwise I'll see you folks soon."}]}, {"id": "17-YSUHo6Lk", "title": "Agentic SDLC at Uber — Uday Kiran Medisetty & Adam Huda, Uber", "channel": "AI Engineer", "duration": 1106, "upload_date": null, "url": "https://www.youtube.com/watch?v=17-YSUHo6Lk", "api": "/api/talks/17-YSUHo6Lk.json", "summary_url": "/#17-YSUHo6Lk", "transcript": {"html": "/transcripts/17-YSUHo6Lk.html", "txt": "/transcripts/17-YSUHo6Lk.txt", "vtt": "/transcripts/17-YSUHo6Lk.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.719, "end": 13.92, "text": "Hey uh let's get started."}, {"id": "s3", "start": 13.92, "end": 15.2, "text": "Uh good morning everyone."}, {"id": "s4", "start": 15.2, "end": 16.0, "text": "I'm Udai."}, {"id": "s5", "start": 16.0, "end": 17.76, "text": "I'm here with my colleague Adam."}, {"id": "s6", "start": 17.76, "end": 21.6, "text": "We'll talk about our journey towards manage software factory."}, {"id": "s7", "start": 21.6, "end": 26.24, "text": "And in the beginning in the first part of the talk I'll talk about the key building blocks that we are investing in."}, {"id": "s8", "start": 26.24, "end": 33.68, "text": "And later Adam's going to talk about how we take all of these blocks to build an end to-end cohesive solution for our engineers."}, {"id": "s9", "start": 33.68, "end": 38.48, "text": "To set some context, we have few thousand engineers across 12 global tech sites."}, {"id": "s10", "start": 38.48, "end": 49.039, "text": "Over the last year, all of the investments we made in agentic AI have led to more than 70% of our PRs now either by local or cloud agents."}, {"id": "s11", "start": 49.039, "end": 54.64, "text": "And all of this led to twice the number of lines of code per engineer year-over-year."}, {"id": "s12", "start": 54.64, "end": 60.16, "text": "And this extends way beyond coding and we see it in every aspect of the engineering life cycle today."}, {"id": "s13", "start": 60.16, "end": 64.64, "text": "And we are also accelerating toil at a toil reduction at a massive pace."}, {"id": "s14", "start": 64.64, "end": 72.4, "text": "We handled more than 250 automated migrations 9 million lines of code automatically for our engineers."}, {"id": "s15", "start": 72.4, "end": 85.759, "text": "And before even the building blocks um you know one all the investments we made over the last six years on moving to monor repos moving to basil all of that also laid a really solid foundation for us to accelerate this."}, {"id": "s16", "start": 86.96000000000001, "end": 97.03999999999999, "text": "So the first I'll cover all of these six building blocks and Adam's going to talk about a specific example and show how that feature can be built end to end"}, {"id": "s17", "start": 97.03999999999999, "end": 102.07900000000001, "text": "uh with all of these and all of these are in various stages of maturity and rollout within Uber."}, {"id": "s18", "start": 102.07900000000001, "end": 106.399, "text": "But we want to give everyone a sneak peek of what we are up to."}, {"id": "s19", "start": 106.399, "end": 109.84, "text": "So let's go to the building blocks the six building blocks one by one."}, {"id": "s20", "start": 109.84, "end": 112.0, "text": "The first one is model gateway."}, {"id": "s21", "start": 112.0, "end": 114.15899999999999, "text": "This is one of our earlier investments."}, {"id": "s22", "start": 114.15899999999999, "end": 127.36, "text": "The three things that we wanted to en ensure was no PII ever leaves our parimeter to any of the vendor by default and any guardrail that we add here the latency of that is strictly bounded"}, {"id": "s23", "start": 127.36, "end": 135.44, "text": "and every request that goes through this whether it's uh and we need to be able to attribute per user per project and per team."}, {"id": "s24", "start": 135.44, "end": 135.586, "text": "So"}, {"id": "s25", "start": 135.586, "end": 135.68, "text": "[snorts]"}, {"id": "s26", "start": 135.68, "end": 136.72, "text": "we have a model gateway."}, {"id": "s27", "start": 136.72, "end": 145.68, "text": "We made sure all of our internal use cases, our coding hardnesses, our external use cases, they all go through one single OpenAI anthropic compatible endpoint."}, {"id": "s28", "start": 145.68, "end": 147.76, "text": "It goes through a series of middleares."}, {"id": "s29", "start": 147.76, "end": 151.52, "text": "The first one is identity and authentication using Spire."}, {"id": "s30", "start": 151.52, "end": 156.16, "text": "Uh we have a data anonymizer that redacts 20 plus PII types."}, {"id": "s31", "start": 156.16, "end": 163.84, "text": "We have a AI guard that has five specialized models that handles various parts of safety and policy that we want to ensure."}, {"id": "s32", "start": 163.84, "end": 166.8, "text": "And all of that runs under 100 milliseconds."}, {"id": "s33", "start": 166.8, "end": 172.64, "text": "We also are investing in all kinds of caching and token optimization strategies at this layer."}, {"id": "s34", "start": 172.64, "end": 178.31900000000002, "text": "And every request that goes through this, we are able to attribute to a specific project in our catalog."}, {"id": "s35", "start": 178.31900000000002, "end": 185.519, "text": "And we can attribute per caller, per user, per team both in real time but also in our data lake."}, {"id": "s36", "start": 185.519, "end": 192.64, "text": "This enables us to create all kinds of spend years and guardrails in a holistic way across our portfolio."}, {"id": "s37", "start": 192.64, "end": 203.2, "text": "We also use this layer for capturing audit log session traces which are then plugged into our benchmarking and all kinds of self-improvement loop efforts."}, {"id": "s38", "start": 203.28, "end": 210.56, "text": "And for an engineer at Uber, you take the vanilla client, you set the project ID and we and we take care of everything else."}, {"id": "s39", "start": 210.56, "end": 218.0, "text": "Today we have 800 plus projects internally going through this cumulatively handling more than 100 million model requests per day."}, {"id": "s40", "start": 218.0, "end": 226.239, "text": "This includes both the frontier models and also open source models whether that is hosted in our infrastructure or some of our vendors."}, {"id": "s41", "start": 226.799, "end": 230.48, "text": "The next is how do we provide tools to all of these models."}, {"id": "s42", "start": 230.48, "end": 243.12, "text": "Last year when we started on this journey we had thousands of internal APIs but none of them are agent accessible out of the box and we had so many other SAS tools and each one of them have different way to authenticate"}, {"id": "s43", "start": 243.12, "end": 254.0, "text": "different way to set up which is a lot of hassle for for everyone and once you end up with enough MCPs they'll all add up to and and have a massive token tax"}, {"id": "s44", "start": 254.0, "end": 263.919, "text": "similar to model gateway we have an MCP gateway that handles whole bunch of middleares for for engineers And we have an automated crawler that looks at our internal APIs"}, {"id": "s45", "start": 263.919, "end": 269.759, "text": "and projects all of these into MCPS with one single config change."}, {"id": "s46", "start": 269.759, "end": 276.88, "text": "And we do the same thing even for our SAS MCPS whether it's Google, Slack, Jira, all of this, they go through the MCP gateway."}, {"id": "s47", "start": 276.88, "end": 279.68, "text": "We h we host them, we do the token exchange."}, {"id": "s48", "start": 279.68, "end": 284.56, "text": "So for all the engineers, they go through one single entry point, one common way to install any MCPS."}, {"id": "s49", "start": 284.56, "end": 289.12, "text": "This simplified a lot for all of our engineers and employees."}, {"id": "s50", "start": 289.199, "end": 292.8, "text": "And then the whole bunch of token optimization strategies."}, {"id": "s51", "start": 292.8, "end": 295.36, "text": "We initially had direct MCP pattern."}, {"id": "s52", "start": 295.36, "end": 305.12, "text": "Earlier this year we created Omni MCP which is one single MCP that you install which can discover and invoke any MCPS within the gateway."}, {"id": "s53", "start": 305.12, "end": 312.72, "text": "And couple of months ago we projected all of these MCPS into CLI pattern so that even the response doesn't eat up in your context."}, {"id": "s54", "start": 312.72, "end": 326.24, "text": "And of late we also have a code mode skill which is autoinstalled which on the fly creates Python scripts to hyper optimize some of the top MCP token consumer consuming use cases"}, {"id": "s55", "start": 327.68, "end": 339.759, "text": "and all of this led to like now we have thousand plus MCP tools and uh just with these optimization efforts we've saved more than 40% fleetwide savings."}, {"id": "s56", "start": 341.12, "end": 346.0, "text": "So once we have the models and the tools, we need a place to run all of this."}, {"id": "s57", "start": 346.0, "end": 350.96, "text": "For many years we had devpod which is our cloud remote environments."}, {"id": "s58", "start": 350.96, "end": 357.68, "text": "We we we had this because we had like large mono repos with millions of lines of code and this is how engineers work at Uber."}, {"id": "s59", "start": 357.68, "end": 362.56, "text": "And now we took what we had with devots and we agentified that."}, {"id": "s60", "start": 362.56, "end": 366.8, "text": "Now we need some environment for agents to run for longer period of time."}, {"id": "s61", "start": 366.8, "end": 367.759, "text": "They need to be quick."}, {"id": "s62", "start": 367.759, "end": 369.039, "text": "They need to be isolated."}, {"id": "s63", "start": 369.039, "end": 374.96, "text": "We can install any number of them and they need to be globally available across all of our sites."}, {"id": "s64", "start": 375.28, "end": 378.8, "text": "So we have a pre-provisioned Kubernetes balloon pods."}, {"id": "s65", "start": 378.8, "end": 384.4, "text": "When an agent requires a new environment to run, it can take one of that which is already pre-provisioned."}, {"id": "s66", "start": 384.4, "end": 386.88, "text": "It has all of the repositories already snapshotted."}, {"id": "s67", "start": 386.88, "end": 388.479, "text": "The search index is already built."}, {"id": "s68", "start": 388.479, "end": 392.4, "text": "So the agents can start working within a matter of seconds."}, {"id": "s69", "start": 392.4, "end": 397.919, "text": "The next thing we noticed is the the the roles of engineers are getting blurred."}, {"id": "s70", "start": 397.919, "end": 404.319, "text": "We used to offer a dev port per language flavor for Go, Java, Android and so on."}, {"id": "s71", "start": 404.319, "end": 409.52, "text": "Now we need agents to work across repositories and engineers also to work across repositories."}, {"id": "s72", "start": 409.52, "end": 417.84000000000003, "text": "So we have a mega dev port that has all of the repositories in one one common place and this is what we use for our autonomous coding agents now."}, {"id": "s73", "start": 417.84000000000003, "end": 428.639, "text": "And even for our non-engineer employees, we are providing a simple way for them to get started with any of the agent harnesses in matter of seconds."}, {"id": "s74", "start": 429.919, "end": 434.88, "text": "Then now we get to knowledge part of it and we jumped on this bandwagon earlier this year."}, {"id": "s75", "start": 434.88, "end": 439.44, "text": "Uh we started noticing engineers building tons of skills across many repositories."}, {"id": "s76", "start": 439.44, "end": 453.199, "text": "Um one three problems we noticed was there's a lot of duplication same skill being built by different engineers in different discovery and configuration was a huge hassle and a lot of skills were of superpar quality."}, {"id": "s77", "start": 453.199, "end": 455.599, "text": "So what we built an entire life cycle around skills."}, {"id": "s78", "start": 455.599, "end": 459.12, "text": "So we have core core skills and domain specific skills."}, {"id": "s79", "start": 459.12, "end": 462.08, "text": "All of that go into a managed skills marketplace."}, {"id": "s80", "start": 462.08, "end": 465.12, "text": "We have 2,500 skills there right now."}, {"id": "s81", "start": 465.12, "end": 474.15999999999997, "text": "Um and it goes through a whole bunch of lint checks, automated reviews which ensures a baseline skill quality for any skills that we have."}, {"id": "s82", "start": 474.15999999999997, "end": 477.28, "text": "And we also simplified the installation and discovery."}, {"id": "s83", "start": 477.28, "end": 482.479, "text": "So there is one single command to discover and install any plug-in in our ecosystem."}, {"id": "s84", "start": 482.479, "end": 487.52, "text": "And based on the engineer personas, we even autoinstall some of the default skills."}, {"id": "s85", "start": 487.52, "end": 489.84, "text": "So the agents automatically can pick up the right skill."}, {"id": "s86", "start": 489.84, "end": 493.039, "text": "You don't even have to even install them."}, {"id": "s87", "start": 493.199, "end": 504.08, "text": "And of late, we started working on collecting traces and comments and capturing continuous evals so that we can go give feedback back to the skill authors for skill improvements."}, {"id": "s88", "start": 504.08, "end": 507.36, "text": "And this is an area of big investment for us right now."}, {"id": "s89", "start": 507.36, "end": 515.44, "text": "and we have 2,500 skills and cumulatively more than 20,000 skill executions per day across our fleet."}, {"id": "s90", "start": 517.68, "end": 520.64, "text": "The next piece of knowledge is context graphs."}, {"id": "s91", "start": 520.64, "end": 528.88, "text": "Uh we we started noticing in our execution traces agents spending lot of time even trying to find basic context especially in our large monor repos."}, {"id": "s92", "start": 528.88, "end": 536.08, "text": "You need to identify where the service is located, what are the dependencies, um who owns it, what kind of patterns I need to follow."}, {"id": "s93", "start": 536.08, "end": 540.959, "text": "And all of this context is gathered across scattered systems across Uber."}, {"id": "s94", "start": 540.959, "end": 542.56, "text": "There's 20 to 30 different systems."}, {"id": "s95", "start": 542.56, "end": 547.279, "text": "Each needs its own skill skills, its own MCP to gather the context."}, {"id": "s96", "start": 547.279, "end": 549.44, "text": "And this burns tokens."}, {"id": "s97", "start": 549.44, "end": 555.12, "text": "This adds a lot of latency and it creates more unpredictable outcomes."}, {"id": "s98", "start": 555.36, "end": 557.519, "text": "So we have one context graph."}, {"id": "s99", "start": 557.519, "end": 561.76, "text": "We took all of the information of how Uber runs into one context graph."}, {"id": "s100", "start": 561.76, "end": 564.48, "text": "This has 150 unique node and edge types."}, {"id": "s101", "start": 564.48, "end": 566.72, "text": "We have 40 million entries there right now."}, {"id": "s102", "start": 566.72, "end": 572.16, "text": "It captures all the way from how our mobile apps are built to our back end to our data lake."}, {"id": "s103", "start": 572.16, "end": 581.279, "text": "All the design docs, Jira, incident bugs, everything is connected and this enables agents to quickly find the right context within our ecosystem."}, {"id": "s104", "start": 581.279, "end": 590.48, "text": "We are now plugging all of our skills and use cases into the graph whether it's our on call RCAs whe it's a planning or data analysis or security scans"}, {"id": "s105", "start": 590.48, "end": 607.44, "text": "and we see across all of this they we are improving uh the skills by a lot and I'm just showing a very simple example of asking a simple question of how many mobility trips in India are are cash this needs to understand the concepts of each of these which tables what kind of cities you need to create"}, {"id": "s106", "start": 607.44, "end": 618.48, "text": "for this SQL with and without graph we see massive improvement in tokens, turns and latency and we see that across any earlier val that we did within our infrastructure"}, {"id": "s107", "start": 619.44, "end": 623.8389999999999, "text": "and the last thing is how do we package all of this for everyone in the company to use."}, {"id": "s108", "start": 623.8389999999999, "end": 626.88, "text": "So we have uh our AI assistant called Cortana."}, {"id": "s109", "start": 626.88, "end": 637.44, "text": "All of the things that I mentioned so far, whether it's skills, MCPS and context graph, they're all plugged into that in every surface possible whether it's on Slack, CLI, web."}, {"id": "s110", "start": 637.44, "end": 640.0, "text": "So anyone in the company, they can ask a simple question."}, {"id": "s111", "start": 640.0, "end": 649.44, "text": "It can look up the context graph, invoke any skill, check any code, check any code in any codebase and give an answer across any of these surfaces."}, {"id": "s112", "start": 649.6, "end": 653.76, "text": "And now we started allowing employees to even personalize that."}, {"id": "s113", "start": 653.76, "end": 664.399, "text": "You can hook up your custom skills, custom prompt and hook it up into your team Slack channel so that it it knows all of the things about that team and works like a the"}, {"id": "s114", "start": 664.399, "end": 666.64, "text": "that teammate."}, {"id": "s115", "start": 667.44, "end": 671.92, "text": "And this this is a simple example of how you can invoke the same question before in Slack."}, {"id": "s116", "start": 671.92, "end": 679.2, "text": "Um and all of the employ more like one or more people can even collaborate on the same Slack channel."}, {"id": "s117", "start": 679.2, "end": 685.76, "text": "And we have the just in the last one month 300 unique personas created and more than 20,000 sessions per day."}, {"id": "s118", "start": 685.76, "end": 693.76, "text": "I'll now pass on to Adam who'll talk about how we take all of this and build uh take and ship a feature end to end."}, {"id": "s119", "start": 694.0, "end": 694.399, "text": "All right."}, {"id": "s120", "start": 694.399, "end": 695.6, "text": "Thank you, Ud."}, {"id": "s121", "start": 695.6, "end": 695.8389999999999, "text": "All right."}, {"id": "s122", "start": 695.8389999999999, "end": 698.079, "text": "And as Ud said, we've got those building blocks."}, {"id": "s123", "start": 698.079, "end": 700.64, "text": "We're going to use those to power our software factory."}, {"id": "s124", "start": 700.64, "end": 706.079, "text": "So, we're going to take a feature here and show it going end to end through this."}, {"id": "s125", "start": 706.079, "end": 706.399, "text": "All right."}, {"id": "s126", "start": 706.399, "end": 708.8, "text": "First up, right, we need to have an idea, right?"}, {"id": "s127", "start": 708.8, "end": 712.64, "text": "A good idea probably for this moment would be something around the World Cup, right?"}, {"id": "s128", "start": 712.64, "end": 719.279, "text": "Would it be awesome if you were a writer and you were leaving a busy stadium if there was a better pickup location to get you away from the crowd?"}, {"id": "s129", "start": 719.279, "end": 721.2, "text": "So, that's the idea, right?"}, {"id": "s130", "start": 721.2, "end": 722.32, "text": "We have our idea."}, {"id": "s131", "start": 722.32, "end": 724.64, "text": "We're jamming on it in Slack here."}, {"id": "s132", "start": 724.64, "end": 726.16, "text": "Let's tag in Cortana, right?"}, {"id": "s133", "start": 726.16, "end": 728.8, "text": "That's our AI assistant to help us with that idea."}, {"id": "s134", "start": 728.8, "end": 734.8, "text": "Cortana with that context graph can help us determine whether this is a good business opportunity to go after."}, {"id": "s135", "start": 734.8, "end": 740.8, "text": "So, we can go here from Slack and now open Cortana into a web interface."}, {"id": "s136", "start": 740.8, "end": 745.44, "text": "And you'll see an example here of what that business research could look like, right?"}, {"id": "s137", "start": 745.44, "end": 748.56, "text": "What other largecale venue events have happened before?"}, {"id": "s138", "start": 748.56, "end": 751.12, "text": "What are some stadiums that would make sense here?"}, {"id": "s139", "start": 751.12, "end": 753.6, "text": "From there, we start to think about the product requirements, right?"}, {"id": "s140", "start": 753.6, "end": 757.92, "text": "This should be probably just a North America rollout since that's where the stadiums are."}, {"id": "s141", "start": 757.92, "end": 762.24, "text": "We can even then bring in Cortana to help us think about uh the Figma designs."}, {"id": "s142", "start": 762.24, "end": 764.48, "text": "We can create some initial mock-ups, right?"}, {"id": "s143", "start": 764.48, "end": 765.44, "text": "Do two variants here."}, {"id": "s144", "start": 765.44, "end": 770.32, "text": "We want to run an experiment A and B. So the the button strings here are different between the two."}, {"id": "s145", "start": 770.32, "end": 774.48, "text": "So we'll test those two variants and see which one performs better."}, {"id": "s146", "start": 774.48, "end": 780.399, "text": "Now we'll start to think a little bit about the design and Cortana 2 can help us think about what code changes we need to happen, right?"}, {"id": "s147", "start": 780.399, "end": 782.24, "text": "What can we leverage that's in the app already?"}, {"id": "s148", "start": 782.24, "end": 785.6, "text": "what screens and what can we leverage on the back end."}, {"id": "s149", "start": 785.6, "end": 785.92, "text": "Right?"}, {"id": "s150", "start": 785.92, "end": 788.88, "text": "So this process before could take a long time."}, {"id": "s151", "start": 788.88, "end": 790.72, "text": "It could take weeks to get everyone aligned."}, {"id": "s152", "start": 790.72, "end": 793.76, "text": "Now we can compress this into a very short amount of time now."}, {"id": "s153", "start": 793.76, "end": 794.0, "text": "Right?"}, {"id": "s154", "start": 794.0, "end": 797.44, "text": "And get to a prototype here very quickly."}, {"id": "s155", "start": 797.6, "end": 797.8389999999999, "text": "All right."}, {"id": "s156", "start": 797.8389999999999, "end": 799.04, "text": "So now we got to go build this."}, {"id": "s157", "start": 799.04, "end": 802.72, "text": "So we we hand off from that Cortana agent to what we have at Uber."}, {"id": "s158", "start": 802.72, "end": 804.399, "text": "We have a Minion agent."}, {"id": "s159", "start": 804.399, "end": 808.16, "text": "It's a Uber's cloud coding agent solution."}, {"id": "s160", "start": 808.16, "end": 808.399, "text": "All right."}, {"id": "s161", "start": 808.399, "end": 812.639, "text": "So you can use Minion in an interactive mode or you can run it in an autonomous mode as well."}, {"id": "s162", "start": 812.639, "end": 814.88, "text": "So I'm going to show you what this looks like."}, {"id": "s163", "start": 814.88, "end": 817.36, "text": "Um UD mentioned the dev pod building block."}, {"id": "s164", "start": 817.36, "end": 819.04, "text": "So this is powered by that dev pod."}, {"id": "s165", "start": 819.04, "end": 822.32, "text": "So it's got a full build environment and it can work across repos."}, {"id": "s166", "start": 822.32, "end": 826.72, "text": "So we're doing backend changes and the front end changes here too as well."}, {"id": "s167", "start": 826.72, "end": 833.44, "text": "We're going to see Minion kind of progress here and it's going to stop at just creating a draft PR and it's not going to push it to CI yet."}, {"id": "s168", "start": 833.44, "end": 848.639, "text": "The reason being is that we were seeing um uh that this was great for doing like toil sort of workloads but to build more advanced like endtoend features we really need to be able to validate uh the feature first and we want to prevent a lot of extra load coming on to CI."}, {"id": "s169", "start": 848.639, "end": 854.72, "text": "So if we can validate sooner before we push to CI um that would be a big benefit."}, {"id": "s170", "start": 854.72, "end": 857.279, "text": "So that's what we're going to see here next on validation."}, {"id": "s171", "start": 857.279, "end": 857.519, "text": "Right?"}, {"id": "s172", "start": 857.519, "end": 859.279, "text": "In the SDLC, we have an inner loop."}, {"id": "s173", "start": 859.279, "end": 860.32, "text": "We have the outer loop."}, {"id": "s174", "start": 860.32, "end": 867.68, "text": "Of course, we can have these be aensified where we're shifting more checks now to happen in this inner loop."}, {"id": "s175", "start": 867.68, "end": 867.92, "text": "Right?"}, {"id": "s176", "start": 867.92, "end": 873.12, "text": "So, some of the checks that initially happen that we've had there previously is like this the static analysis sort of checks."}, {"id": "s177", "start": 873.12, "end": 875.44, "text": "When those are detected, now we fix those."}, {"id": "s178", "start": 875.44, "end": 877.44, "text": "But we can shift things to happen in inter loop."}, {"id": "s179", "start": 877.44, "end": 879.44, "text": "Things like visual validation."}, {"id": "s180", "start": 879.44, "end": 885.279, "text": "So, we can launch an simulator with a skill, grab a screenshot from the simulator, compare it to the Figma specs."}, {"id": "s181", "start": 885.279, "end": 893.04, "text": "We can also bring up the service and our backend staging environment and compare the front end and the backend integration together."}, {"id": "s182", "start": 893.36, "end": 904.399, "text": "So now that we've moved a um now that we've done uh that part uh we move to the outer loop where CI uh typically happens errors can still happen on CI"}, {"id": "s183", "start": 904.399, "end": 916.0, "text": "right uh so self-healing CI is something that we've implemented here where we can fix a lot of the issues that you hit on CI code review is another thing that happens in the outer loop but this is another thing that we've shifted"}, {"id": "s184", "start": 916.0, "end": 923.44, "text": "we've moved parts of code review to happen in the inner loop right the outer loop code review can have a powerful model use reasoning a skill to do a deeper review."}, {"id": "s185", "start": 923.44, "end": 930.0, "text": "And in the interloop, we can have a smaller model that runs uh faster with a with a with a medium model."}, {"id": "s186", "start": 930.0, "end": 939.6, "text": "Now, another key thing here, right, is this if this is an autonomous diff coming from minion, we want to give a human reviewer some confidence that this diff has gone through a lot of self-improvement"}, {"id": "s187", "start": 939.6, "end": 940.48, "text": "already, right?"}, {"id": "s188", "start": 940.48, "end": 944.88, "text": "That not just touching that initial generation that happened, but all these other steps have happened."}, {"id": "s189", "start": 944.88, "end": 952.48, "text": "And so on the PR, you will have a table attached that says all these different checks that it went through, including the screenshots."}, {"id": "s190", "start": 953.519, "end": 956.56, "text": "All right, so we've got a lot more code coming through the software factory now, right?"}, {"id": "s191", "start": 956.56, "end": 957.68, "text": "Let's talk about maintenance."}, {"id": "s192", "start": 957.68, "end": 960.079, "text": "Right, maintenance is even more important."}, {"id": "s193", "start": 960.079, "end": 970.0, "text": "Um, what we have set up now is we can actually enroll our feature or skill into u our feature or ser uh service into maintenance uh skills."}, {"id": "s194", "start": 970.0, "end": 973.759, "text": "So these are uh some examples of those skills that we have."}, {"id": "s195", "start": 973.759, "end": 975.12, "text": "Uh feature flag cleanup, right?"}, {"id": "s196", "start": 975.12, "end": 979.6, "text": "We had two variants of that world cup uh modal."}, {"id": "s197", "start": 979.68, "end": 984.88, "text": "Now that the the B variant is no longer needed, we can have that scheduled on a loop."}, {"id": "s198", "start": 984.88, "end": 988.32, "text": "So the key thing here is that this is actually a managed loop that you go to, right?"}, {"id": "s199", "start": 988.32, "end": 993.759, "text": "We don't want thousands of loops being set up across the company without any bounds."}, {"id": "s200", "start": 993.759, "end": 996.32, "text": "You have a managed surface that you go to to set up the loop."}, {"id": "s201", "start": 996.32, "end": 1000.88, "text": "So it runs on Sunday when we know we have better uh CI capacity available."}, {"id": "s202", "start": 1000.88, "end": 1005.519, "text": "U we also don't want to overwhelm engineers that Monday morning with a bunch of extra diffs."}, {"id": "s203", "start": 1005.519, "end": 1009.12, "text": "We want to control how many diffs they're seeing on Monday as well."}, {"id": "s204", "start": 1009.12, "end": 1016.639, "text": "Another cool key thing here is that when that ski uh skill runs and makes those diffs, those diffs will get comments and either get landed or not landed."}, {"id": "s205", "start": 1016.639, "end": 1020.8, "text": "That's all good label data that we can use to improve the skill itself."}, {"id": "s206", "start": 1020.8, "end": 1033.12, "text": "And then at a kind of monthly cadence, we're looking to see what skills can we now learn um from in our incident reviews and turn those into new maintenance skills that we can apply to all of our services."}, {"id": "s207", "start": 1034.72, "end": 1038.559, "text": "All right, so you've seen uh these parts of the SDLC that we've identified."}, {"id": "s208", "start": 1038.559, "end": 1041.28, "text": "There's other parts too like monitoring."}, {"id": "s209", "start": 1041.28, "end": 1047.28, "text": "Have you seen the uh building blocks that you can use to power those and the architecture underneath them?"}, {"id": "s210", "start": 1047.28, "end": 1051.6, "text": "One of the other things that we're really thinking about now is bottlenecks, right?"}, {"id": "s211", "start": 1051.6, "end": 1053.679, "text": "We're now we're putting more strain on our infrastructure."}, {"id": "s212", "start": 1053.679, "end": 1059.2, "text": "So we're trying to anticipate where our CI capacity needs to be and make the right foundational investments there."}, {"id": "s213", "start": 1059.2, "end": 1062.32, "text": "There's only so many experiments that we can feasibly run as well."}, {"id": "s214", "start": 1062.32, "end": 1063.679, "text": "So that's another bottleneck."}, {"id": "s215", "start": 1063.679, "end": 1065.84, "text": "And then lastly too, right, decision- making, right?"}, {"id": "s216", "start": 1065.84, "end": 1076.08, "text": "It's not about you know can we build we know we can probably build it now it's more of a question of should we build it all right so that's what we have for you today and the next talk"}, {"id": "s217", "start": 1076.08, "end": 1084.48, "text": "is going to be actually from Uber as well and if you want to learn more about our agentic code review aa and will be presenting that next uh in this room"}, {"id": "s218", "start": 1084.48, "end": 1086.72, "text": "thank Thank you."}, {"id": "s219", "start": 1102.377, "end": 1104.377, "text": "[music]"}]}, {"id": "1KOdiGgMtpY", "title": "The Signal Layer: What to Build When Anything Can Be Built — Lena Hall, Akamai", "channel": "AI Engineer", "duration": 1184, "upload_date": null, "url": "https://www.youtube.com/watch?v=1KOdiGgMtpY", "api": "/api/talks/1KOdiGgMtpY.json", "summary_url": "/#1KOdiGgMtpY", "transcript": {"html": "/transcripts/1KOdiGgMtpY.html", "txt": "/transcripts/1KOdiGgMtpY.txt", "vtt": "/transcripts/1KOdiGgMtpY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.56, "end": 16.08, "text": "How is the conference for all of you so far?"}, {"id": "s3", "start": 16.08, "end": 16.72, "text": "Great."}, {"id": "s4", "start": 16.72, "end": 18.28, "text": "Awesome."}, {"id": "s5", "start": 18.28, "end": 25.56, "text": "Um well, I think this was the best most productive year for so many of us."}, {"id": "s6", "start": 25.56, "end": 26.56, "text": "I'm Lena."}, {"id": "s7", "start": 26.56, "end": 32.96, "text": "A few days ago, I solved a production incident on a trail near a waterfall."}, {"id": "s8", "start": 32.96, "end": 37.96, "text": "My friend ran 18 agents while riding his bike."}, {"id": "s9", "start": 37.96, "end": 40.8, "text": "We're literally drowning in abundance."}, {"id": "s10", "start": 40.8, "end": 47.36, "text": "We have more output, more speed, more leverage than any of us have ever had."}, {"id": "s11", "start": 47.36, "end": 54.52, "text": "So, why do we have this feeling like the ground underneath is moving too fast?"}, {"id": "s12", "start": 54.52, "end": 67.6, "text": "One of the engineers that I met at this conference said yesterday that it feels like the opportunity cost for not working 9:00 a.m. to 9:00 p.m. 6 days a week is too high right now."}, {"id": "s13", "start": 67.6, "end": 69.2, "text": "So, we're all token maxing."}, {"id": "s14", "start": 69.2, "end": 72.4, "text": "We're all working all the time."}, {"id": "s15", "start": 72.4, "end": 77.92, "text": "But the same abundance that made you fast, it also made everyone else fast."}, {"id": "s16", "start": 77.92, "end": 81.56, "text": "So, now everyone can build everything."}, {"id": "s17", "start": 81.56, "end": 85.52, "text": "Your competitor can build your feature this afternoon, too."}, {"id": "s18", "start": 85.52, "end": 91.03999999999999, "text": "So, the cost of the average just went to zero and so did its value."}, {"id": "s19", "start": 91.03999999999999, "end": 97.36, "text": "A year ago, the superpower, as we were told, was to be good at using AI."}, {"id": "s20", "start": 97.36, "end": 109.52000000000001, "text": "But models got so good and they got so easy and everybody now is a lot more skilled at using AI and everybody's pointing AI at the same goals."}, {"id": "s21", "start": 109.52000000000001, "end": 115.36, "text": "Cuz AI gives everyone the same answer because everybody is asking the same question."}, {"id": "s22", "start": 115.36, "end": 120.2, "text": "It It on data and data is a record of what has already happened."}, {"id": "s23", "start": 120.2, "end": 124.68, "text": "So, when you point AI at tasks like, \"Tell me what users want."}, {"id": "s24", "start": 124.68, "end": 125.76, "text": "Make more money."}, {"id": "s25", "start": 125.76, "end": 127.12, "text": "What should we build?"}, {"id": "s26", "start": 127.12, "end": 128.64, "text": "Make this viral.\""}, {"id": "s27", "start": 128.64, "end": 131.44, "text": "It answers from the common knowledge."}, {"id": "s28", "start": 131.44, "end": 137.48, "text": "Very competent, very confident, but also very identical to what it tells your competitor."}, {"id": "s29", "start": 137.48, "end": 148.6, "text": "To see something that data doesn't show yet, we need to have a vision, a point of view, a read on where it's going, and then use all that automation to execute it."}, {"id": "s30", "start": 148.6, "end": 152.32, "text": "AI is a really smart convergence machine."}, {"id": "s31", "start": 152.32, "end": 157.04, "text": "So, if you leave it alone, it makes everything the same."}, {"id": "s32", "start": 157.56, "end": 161.2, "text": "There is one decision, though, that AI can't and shouldn't make for you."}, {"id": "s33", "start": 161.2, "end": 164.92000000000002, "text": "It is to decide what to point at."}, {"id": "s34", "start": 164.92000000000002, "end": 175.92000000000002, "text": "So, the job, the new job for everyone of us is deciding what it makes, being the reason the right people choose your version over the identical-looking rest."}, {"id": "s35", "start": 175.92000000000002, "end": 184.68, "text": "But also, I'm sure many of you uh walked around the Expo Hall at this conference, and there are so many amazing products, so many tools and vendors."}, {"id": "s36", "start": 184.68, "end": 187.04, "text": "They're all solving important problems."}, {"id": "s37", "start": 187.04, "end": 191.2, "text": "But what Why do they all sound the same?"}, {"id": "s38", "start": 191.519, "end": 195.16, "text": "So, when anyone can build anything, what makes me different?"}, {"id": "s39", "start": 195.16, "end": 196.92000000000002, "text": "What makes you different?"}, {"id": "s40", "start": 196.92000000000002, "end": 200.72, "text": "Why should anyone pick your version, your product?"}, {"id": "s41", "start": 200.72, "end": 204.28, "text": "Um I call this work uh signal layer."}, {"id": "s42", "start": 204.28, "end": 208.64, "text": "And there are two There's two halves to solving it, to getting this right."}, {"id": "s43", "start": 208.64, "end": 211.6, "text": "So, that's how we will walk through it."}, {"id": "s44", "start": 211.6, "end": 217.12, "text": "The first half is knowing your signal, being able to define it very clearly."}, {"id": "s45", "start": 217.12, "end": 220.92000000000002, "text": "What you're building and why it's yours and not the average."}, {"id": "s46", "start": 220.92000000000002, "end": 225.32, "text": "So, that's the build side, the code, the product, the road map."}, {"id": "s47", "start": 225.32, "end": 230.239, "text": "And the second half is emitting that signal without distortion."}, {"id": "s48", "start": 230.239, "end": 240.44, "text": "So, making sure that your customers um making sure what your customers come to believe about you actually matches what you believe and what you've built."}, {"id": "s49", "start": 240.44, "end": 245.2, "text": "That's the ship side the content and go to market engineering."}, {"id": "s50", "start": 245.4, "end": 248.28, "text": "And I've had an unusual vantage point in this."}, {"id": "s51", "start": 248.28, "end": 250.2, "text": "I've built products as an engineer."}, {"id": "s52", "start": 250.2, "end": 252.4, "text": "I created my own as a founder."}, {"id": "s53", "start": 252.4, "end": 255.28, "text": "I brought other people's products to market."}, {"id": "s54", "start": 255.28, "end": 259.76, "text": "So three very different jobs with one identical challenge."}, {"id": "s55", "start": 259.76, "end": 262.6, "text": "The signal doesn't always survive."}, {"id": "s56", "start": 262.6, "end": 265.84, "text": "So let's start with the build side."}, {"id": "s57", "start": 265.84, "end": 267.8, "text": "So what do we even work on?"}, {"id": "s58", "start": 267.8, "end": 270.36, "text": "Everything is implementable."}, {"id": "s59", "start": 270.96, "end": 282.52, "text": "Two years ago the best autonomous coding agents you know solved on the fraction of the tasks on the standard software benchmark and now the best agents are in the high eighties."}, {"id": "s60", "start": 282.52, "end": 289.52, "text": "So we nearly tripled the amount of writing and shipping barely moved a third."}, {"id": "s61", "start": 289.52, "end": 299.64, "text": "The benchmark was measuring the part of software engineering that has a greater and shipping is where all the ungraded parts come back in."}, {"id": "s62", "start": 299.64, "end": 303.56, "text": "So here is the rule underneath it."}, {"id": "s63", "start": 303.56, "end": 309.32, "text": "Anything that you can measure you can train against as Sarah Guo puts it."}, {"id": "s64", "start": 309.32, "end": 311.6, "text": "A compiler is a free grader."}, {"id": "s65", "start": 311.6, "end": 314.08, "text": "A test suite is a free grader."}, {"id": "s66", "start": 314.08, "end": 322.24, "text": "And the instant a task can grade itself you can grind a model against you know that grade until it wins."}, {"id": "s67", "start": 322.24, "end": 328.88, "text": "Automation of code was first because it's the most checkable thing that we have."}, {"id": "s68", "start": 328.88, "end": 340.4, "text": "So implementation is converging for free for everyone at the same time and the most buildable thing and the most valuable thing are almost never the same thing."}, {"id": "s69", "start": 340.4, "end": 346.12, "text": "So the model will build whatever you point it at but it will tell you nothing about where to point."}, {"id": "s70", "start": 346.12, "end": 349.52, "text": "Anything visible is replicatable."}, {"id": "s71", "start": 350.12, "end": 354.68, "text": "So now, some people when they hear everything is implementable, they panic."}, {"id": "s72", "start": 354.68, "end": 356.92, "text": "Um but we can flip the question."}, {"id": "s73", "start": 356.92, "end": 359.32, "text": "The pointing is actually the job."}, {"id": "s74", "start": 359.32, "end": 361.48, "text": "It has always been the job."}, {"id": "s75", "start": 361.48, "end": 368.36, "text": "We just had so much implementation work in the way um that we never had to get good at it."}, {"id": "s76", "start": 368.36, "end": 371.4, "text": "So, how do you decide where to point that?"}, {"id": "s77", "start": 371.4, "end": 374.84, "text": "Paul Graham shared some wisdom on this."}, {"id": "s78", "start": 374.84, "end": 380.68, "text": "Where you find something that people genuinely want is by feeling the need yourself."}, {"id": "s79", "start": 380.72, "end": 391.48, "text": "Build something you and your friends need because the market hasn't formed yet, surveys can't see it, and your own need is the only signal that isn't a crap signal."}, {"id": "s80", "start": 391.48, "end": 401.64, "text": "And the best ideas may sound genuinely lame at first, like a guy uh strapped with a with a camera on his head live streaming his his life."}, {"id": "s81", "start": 401.64, "end": 404.6, "text": "That sounds really ridiculous, but it became Twitch."}, {"id": "s82", "start": 404.6, "end": 414.04, "text": "Um and the convergence machine doesn't really, you know, propose proactively these uh weird, specific, genuinely embarrassing ideas."}, {"id": "s83", "start": 414.04, "end": 423.919, "text": "But even with the Twitch example, it worked, but there were a thousand other similar startups I start startup ideas that didn't."}, {"id": "s84", "start": 423.919, "end": 429.56, "text": "So, the weird specific signal is necessary, but it is not sufficient."}, {"id": "s85", "start": 430.08, "end": 437.88, "text": "It's also really tempting to say that we just need to have good judgment and good taste and call it safe."}, {"id": "s86", "start": 437.88, "end": 446.48, "text": "But taste is really just preference under feedback, and preference under feedback is exactly what these systems can learn."}, {"id": "s87", "start": 446.48, "end": 454.96, "text": "Anything you can demonstrate enough times uh with a better or worse signal attached, the machine can eventually imitate."}, {"id": "s88", "start": 454.96, "end": 459.2, "text": "So, broad good taste is not really a differentiator."}, {"id": "s89", "start": 459.56, "end": 464.72, "text": "What actually resists training is more narrow and more durable."}, {"id": "s90", "start": 464.72, "end": 466.52, "text": "So, two things."}, {"id": "s91", "start": 466.52, "end": 470.48, "text": "Taste and judgement about what hasn't happened yet."}, {"id": "s92", "start": 470.48, "end": 473.28, "text": "Because there's no data for an event that hasn't occurred."}, {"id": "s93", "start": 473.28, "end": 478.44, "text": "And then taste and judgement embedded in a relationship that the model can't observe."}, {"id": "s94", "start": 478.44, "end": 485.68, "text": "What this customer in this situation with this history that you share actually needs."}, {"id": "s95", "start": 485.68, "end": 492.32, "text": "The model has read everything ever written about your customer, but it has never actually met them."}, {"id": "s96", "start": 492.32, "end": 501.76, "text": "So, if broad judgement is not safe, and the AI just handed everyone the ability to build anything, what's left to be good at?"}, {"id": "s97", "start": 501.76, "end": 512.2, "text": "Richard Hamming uh spent his career studying why some scientists did great work and others who were just as smart didn't."}, {"id": "s98", "start": 512.2, "end": 517.08, "text": "He found that the great ones worked on important problems."}, {"id": "s99", "start": 517.52, "end": 522.08, "text": "And the problem isn't important because it just sounds impressive."}, {"id": "s100", "start": 522.08, "end": 525.48, "text": "It's important when you have a reasonable attack on it."}, {"id": "s101", "start": 525.48, "end": 532.64, "text": "For example, time travel is consequential, he would say, but it's not important because nobody has an attack on it."}, {"id": "s102", "start": 532.64, "end": 544.0, "text": "So, Hamming would tell you to keep 10 or 20 ideas um on important problems in the back of your mind so that when you finally have an attack, a new tool, a new angle"}, {"id": "s103", "start": 544.0, "end": 548.04, "text": "I think that only you noticed, then you go for it."}, {"id": "s104", "start": 548.04, "end": 552.0, "text": "But in Hamming's world, the rarest thing was having an attack."}, {"id": "s105", "start": 552.0, "end": 555.96, "text": "And AI just handed everyone an attack on everything."}, {"id": "s106", "start": 555.96, "end": 559.92, "text": "So, the rarest thing is knowing which problem is actually worth attacking."}, {"id": "s107", "start": 559.92, "end": 572.32, "text": "And that judgement comes from being a real person, close to a real domain, with your own battle scars, your weirdly specific experience, the thing that you care about more than is reasonable."}, {"id": "s108", "start": 572.32, "end": 574.32, "text": "And you don't actually need to be first."}, {"id": "s109", "start": 574.32, "end": 585.2, "text": "You just need to be genuinely close to a problem you actually understand where your insight is in the delta between what AI has been trained on and what should exist."}, {"id": "s110", "start": 585.2, "end": 586.76, "text": "So, let's say you did it."}, {"id": "s111", "start": 586.76, "end": 593.52, "text": "You found that sweet spot problem that the one that you had an honest attack on, that you built this thing."}, {"id": "s112", "start": 593.52, "end": 594.52, "text": "It's genuinely good."}, {"id": "s113", "start": 594.52, "end": 598.12, "text": "It's genuinely yours, not the average."}, {"id": "s114", "start": 598.12, "end": 603.76, "text": "You can still lose uh because knowing your signal is only half the job."}, {"id": "s115", "start": 603.76, "end": 609.88, "text": "The other half is getting it from your head into the head of a person that it was meant for."}, {"id": "s116", "start": 609.88, "end": 612.2, "text": "And it's about reaching the right people."}, {"id": "s117", "start": 612.2, "end": 615.72, "text": "And what do most of us do for that?"}, {"id": "s118", "start": 615.72, "end": 616.88, "text": "We make content."}, {"id": "s119", "start": 616.88, "end": 622.76, "text": "So, let's talk about what uh AI convergence machine does to that."}, {"id": "s120", "start": 623.28, "end": 626.24, "text": "What happened to the internet in the last 2 years?"}, {"id": "s121", "start": 626.24, "end": 630.76, "text": "Open any feed, everything has started to sound the same."}, {"id": "s122", "start": 630.76, "end": 642.08, "text": "The same LinkedIn posts, the same, you know, three bullet points and a bold takeaway, and the same blog post that uh says nothing but actually looks very polished."}, {"id": "s123", "start": 642.12, "end": 646.96, "text": "Um your readers can now pattern match AI in just half a second."}, {"id": "s124", "start": 646.96, "end": 656.48, "text": "So, if a model could have written your post from a one-line prompt, your reader brain just skips it for the same reason."}, {"id": "s125", "start": 656.8, "end": 658.72, "text": "So, AI has really learned the algorithm."}, {"id": "s126", "start": 658.72, "end": 660.839, "text": "It has learned the format that performs."}, {"id": "s127", "start": 660.839, "end": 667.68, "text": "It has learned what gets clicks, and everyone wants to hand the machine a paragraph and say, you know, \"Make it viral."}, {"id": "s128", "start": 667.68, "end": 669.0, "text": "Make me rich.\""}, {"id": "s129", "start": 669.0, "end": 673.56, "text": "It fills every gap that you leave with sameness."}, {"id": "s130", "start": 673.56, "end": 677.2, "text": "So, what do you put in and what do you let it fill in?"}, {"id": "s131", "start": 677.2, "end": 684.12, "text": "Cuz these there there are two different ways to use this thing, and they look very identical from the outside."}, {"id": "s132", "start": 684.12, "end": 688.36, "text": "One is you give it an average prompt, and gives you the average output."}, {"id": "s133", "start": 688.36, "end": 694.32, "text": "And you ship one more indistinguishable drop into an ocean of indistinguishable drops."}, {"id": "s134", "start": 694.32, "end": 698.88, "text": "So, you've automated your own irrelevance very efficiently."}, {"id": "s135", "start": 698.88, "end": 709.32, "text": "And two, you can bring in the part that it can't have, your specific point of view, the real story that you were actually in the room for, and then let the machine do the converging work,"}, {"id": "s136", "start": 709.32, "end": 717.64, "text": "the formatting, the drafting, the algorithm optimization, the cleanup around the core that it could have never generated."}, {"id": "s137", "start": 718.0, "end": 720.96, "text": "The signal distorts on the way out."}, {"id": "s138", "start": 720.96, "end": 730.6, "text": "So, you can have the signal perfectly clear for you and still watch it fall apart between your brain and your users' understanding of it."}, {"id": "s139", "start": 730.6, "end": 734.08, "text": "And in my experience, it breaks in three places."}, {"id": "s140", "start": 734.08, "end": 742.04, "text": "And there are fixes for each, but they're different depending on product, the type, and the size of the company."}, {"id": "s141", "start": 742.04, "end": 746.92, "text": "One of them is source distortion, which is very common in startups."}, {"id": "s142", "start": 746.92, "end": 757.4, "text": "Founders, actually, they usually know the signal so well that they always have this accidental gift of compressing it past legibility."}, {"id": "s143", "start": 757.4, "end": 768.24, "text": "They often assume the context that the audience doesn't have, and the room hears something technically very cool, but they doesn't they don't really understand why it matters."}, {"id": "s144", "start": 768.24, "end": 773.44, "text": "I helped this one YC company with uh this exact thing recently."}, {"id": "s145", "start": 773.44, "end": 785.88, "text": "Absolutely brilliant founders, genuinely new product, but every pitch that they started um was you know starting with architecture, with the clever parts, with things that they were very proud of."}, {"id": "s146", "start": 785.88, "end": 792.48, "text": "But it really landed as noise because the customer pain has been deleted from the whole story."}, {"id": "s147", "start": 792.48, "end": 798.72, "text": "So, we rewrote the opening to include the thing that the user hated, and this product actually killed."}, {"id": "s148", "start": 798.72, "end": 808.92, "text": "So, the same product, the same week, the next conversations converted into pilots, and then we turned that into repeatable GTM system."}, {"id": "s149", "start": 808.92, "end": 815.4, "text": "Organization distortion is another type of distortion that almost every big company has."}, {"id": "s150", "start": 815.4, "end": 826.52, "text": "As signal travels through layers of management, through legal, through sales, through every department, at every hand handoff, it gets rewound towards the average."}, {"id": "s151", "start": 826.52, "end": 830.96, "text": "And this really doesn't come from incompetence, it comes from investment."}, {"id": "s152", "start": 830.96, "end": 839.52, "text": "So, hand a founder and the person three layers down the same task and the same AI, and you get two different things."}, {"id": "s153", "start": 839.52, "end": 849.2, "text": "Um the founder really sweats the unaverageable details because the outcome is really theirs and they're personally invested and affected by it."}, {"id": "s154", "start": 849.2, "end": 858.36, "text": "And others just ship it to spec, they close Jira tickets, they were asked for, you know, something like compliance, not as much conviction."}, {"id": "s155", "start": 858.36, "end": 867.96, "text": "So, a long delegation chain plus convergence machine is really a factory for automating the signal out of your own company."}, {"id": "s156", "start": 867.96, "end": 875.64, "text": "So, the first instinct usually is to add more process, which adds layers, bureaucracy, and slows everything down."}, {"id": "s157", "start": 875.64, "end": 877.24, "text": "And we don't want that."}, {"id": "s158", "start": 877.24, "end": 888.32, "text": "Um to fix this, we have to help take the signal back and reattach it to the outcome like a founder and add the very thin signal layer to your go-to-market engineering,"}, {"id": "s159", "start": 888.32, "end": 895.76, "text": "where its only job is to validate and carry the original intent across the handoffs intact."}, {"id": "s160", "start": 895.76, "end": 899.04, "text": "Machine distortion is another way you can lose signal."}, {"id": "s161", "start": 899.04, "end": 911.52, "text": "You write one careful launch, your claim, your evidence, and your scope is very clear, but then of course AI remixes it um into a tweet, into a sales deck, into a partner one-pager."}, {"id": "s162", "start": 911.52, "end": 923.6, "text": "For example, you might have had this one very narrow eval that scored 94% but it was repeated enough times that your customers actually heard it as a promise."}, {"id": "s163", "start": 923.84, "end": 925.28, "text": "So, we see the same through line."}, {"id": "s164", "start": 925.28, "end": 929.92, "text": "Your signal has to survive the trip undistorted."}, {"id": "s165", "start": 930.36, "end": 933.36, "text": "And this is something you can engineer."}, {"id": "s166", "start": 933.36, "end": 943.64, "text": "So, we need a thin signal layer, a small deliberate function whose job is to make sure that what your users take away is still the specific thing you meant."}, {"id": "s167", "start": 943.64, "end": 945.88, "text": "Say you're building a monitoring tool."}, {"id": "s168", "start": 945.88, "end": 950.88, "text": "There are 12 other tools in this category, but yours does something different."}, {"id": "s169", "start": 950.88, "end": 954.48, "text": "It tells you what not to wake up for, for example."}, {"id": "s170", "start": 954.48, "end": 960.64, "text": "It stays quiet on the noise, so when you get paged at night, you believe it."}, {"id": "s171", "start": 960.64, "end": 965.2, "text": "So, that quiet, that trust earned by silence is your signal."}, {"id": "s172", "start": 965.2, "end": 969.0, "text": "So, first, say it in one sentence with the limit built in."}, {"id": "s173", "start": 969.0, "end": 974.76, "text": "Definitely don't say intelligent AI-native observability platform."}, {"id": "s174", "start": 974.76, "end": 984.36, "text": "Say something like uh stays quiet on anything it can't tie to a real user impact and shows you everything it silenced so you can overrule it."}, {"id": "s175", "start": 984.36, "end": 988.08, "text": "The promise and the scope are welded together here."}, {"id": "s176", "start": 988.08, "end": 990.76, "text": "Then make sure that the limit can't be edited out."}, {"id": "s177", "start": 990.76, "end": 994.64, "text": "So, in the product, every suppressed alert is visible."}, {"id": "s178", "start": 994.64, "end": 1003.6, "text": "In the launch, statements like 90% fewer pages uh live next to statements like every silence is visible and reversible."}, {"id": "s179", "start": 1003.6, "end": 1015.52, "text": "So, when AI chops your launch into a tweet, it can keep the impressive number, but also remove the part that keeps the part that uh keeps the product honest."}, {"id": "s180", "start": 1015.52, "end": 1018.88, "text": "And before you scale it, check what people actually heard."}, {"id": "s181", "start": 1018.88, "end": 1027.16, "text": "So, give a readme to an SRE who has never seen your project and ask a person to describe the product back to you."}, {"id": "s182", "start": 1027.16, "end": 1034.04, "text": "The gap between what they say and what you meant is the distortion that you were about to broadcast."}, {"id": "s183", "start": 1034.04, "end": 1043.48, "text": "And it's a very lightweight signal layer, and a lot of it is buildable, So, you can automate more of the checking and the catching and the surveying than most people realize."}, {"id": "s184", "start": 1043.48, "end": 1051.32, "text": "So, step back and ask what all of this, the building, the shipping, the undistorted signal, is actually for."}, {"id": "s185", "start": 1051.32, "end": 1062.8, "text": "It's for one thing of getting a human or increasingly an agent to choose you and rely on you when they have an infinite identical-looking alternatives."}, {"id": "s186", "start": 1062.8, "end": 1064.4, "text": "So, that's trust."}, {"id": "s187", "start": 1064.4, "end": 1067.32, "text": "Trust is the one thing that's left with no greater."}, {"id": "s188", "start": 1067.32, "end": 1070.52, "text": "There's no benchmark for it, no reward signal."}, {"id": "s189", "start": 1070.52, "end": 1077.6, "text": "It can't be entirely automated because it's granted slowly through relationship with consent."}, {"id": "s190", "start": 1077.6, "end": 1085.28, "text": "For example, doctors who open one particular tool every morning, they didn't have that habit trained into them."}, {"id": "s191", "start": 1085.28, "end": 1088.04, "text": "And what happens if we get this wrong?"}, {"id": "s192", "start": 1088.04, "end": 1091.16, "text": "Getting your signal wrong is actually not neutral."}, {"id": "s193", "start": 1091.16, "end": 1092.88, "text": "It's negative."}, {"id": "s194", "start": 1092.88, "end": 1095.16, "text": "Producing averageness is not free."}, {"id": "s195", "start": 1095.16, "end": 1107.92, "text": "You actually pay for it in tokens, in infra, in the salaried hours of good people, you know, with with customers that take a look at your product once, decide once, and never come back."}, {"id": "s196", "start": 1107.92, "end": 1113.32, "text": "So, every generic post teaches them that your name isn't worth the click."}, {"id": "s197", "start": 1113.32, "end": 1117.36, "text": "So, you spend real money to make yourself harder to choose."}, {"id": "s198", "start": 1117.36, "end": 1119.44, "text": "So, back to the main question."}, {"id": "s199", "start": 1119.44, "end": 1124.52, "text": "We got faster, but the speed is not where the value went."}, {"id": "s200", "start": 1124.52, "end": 1130.8, "text": "Uh the value moved up to deciding what is worth building, what is worth saying, what deserves trust."}, {"id": "s201", "start": 1130.8, "end": 1138.12, "text": "And where does the thing that you actually um that that you meant survives the trip to the people that it was for."}, {"id": "s202", "start": 1138.12, "end": 1139.56, "text": "So, you don't need to be first."}, {"id": "s203", "start": 1139.56, "end": 1148.16, "text": "You need a real problem and enough conviction to carry the signal clearly through to, you know, right people to find it."}, {"id": "s204", "start": 1148.16, "end": 1152.12, "text": "So, when you can build anything, you should build trust."}, {"id": "s205", "start": 1152.12, "end": 1161.16, "text": "Have the strongest conviction, define the signal yourself, protect it from distortion, and use AI aggressively for everything else."}, {"id": "s206", "start": 1161.16, "end": 1161.84, "text": "Thank you."}, {"id": "s207", "start": 1161.84, "end": 1164.8, "text": "Let's connect and happy to chat with you afterwards."}, {"id": "s208", "start": 1164.8, "end": 1166.568, "text": "Thank you."}, {"id": "s209", "start": 1166.568, "end": 1168.568, "text": "[applause]"}, {"id": "s210", "start": 1180.323, "end": 1182.323, "text": "[music]"}]}, {"id": "2WZsT-znFTQ", "title": "Guardians of the State: An Air-Gapped AI Fortress for Consumer Data — Rachna Srivastava, DFPI", "channel": "AI Engineer", "duration": 1273, "upload_date": null, "url": "https://www.youtube.com/watch?v=2WZsT-znFTQ", "api": "/api/talks/2WZsT-znFTQ.json", "summary_url": "/#2WZsT-znFTQ", "transcript": {"html": "/transcripts/2WZsT-znFTQ.html", "txt": "/transcripts/2WZsT-znFTQ.txt", "vtt": "/transcripts/2WZsT-znFTQ.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.88, "end": 28.76, "text": "By the time this presentation ends, someone, somewhere will make life-altering decisions based on something generated entirely by AI."}, {"id": "s3", "start": 30.36, "end": 38.96, "text": "Last 30 years, digital infrastructure is based on these unwritten rules."}, {"id": "s4", "start": 39.2, "end": 47.08, "text": "If you see a face or you hear a voice, you trust someone behind it."}, {"id": "s5", "start": 47.08, "end": 53.24, "text": "If you see a signature, you trust someone has approved it."}, {"id": "s6", "start": 53.24, "end": 63.0, "text": "Every business transaction, every government workflow is based on this foundation of trust."}, {"id": "s7", "start": 63.0, "end": 72.36, "text": "So, trust is a invisible layer on top of it all this digital infrastructure based on."}, {"id": "s8", "start": 72.64, "end": 77.84, "text": "But, generative AI trashed it completely."}, {"id": "s9", "start": 77.84, "end": 80.92, "text": "AI agent can clone a voice."}, {"id": "s10", "start": 80.92, "end": 85.32, "text": "Synthetic face can bypass identity check."}, {"id": "s11", "start": 85.32, "end": 96.12, "text": "AI can impersonate people at a speed no criminal organization have been able to do that before."}, {"id": "s12", "start": 96.12, "end": 104.44, "text": "So, in the era of generative AI, seeing is no longer believing, neither is hearing."}, {"id": "s13", "start": 104.44, "end": 113.52000000000001, "text": "The cost of deception is collapsed and the speed of deception is exploded."}, {"id": "s14", "start": 114.36, "end": 116.75999999999999, "text": "Hi, my My is Rachna Srivastava."}, {"id": "s15", "start": 116.75999999999999, "end": 122.76, "text": "I work for California Department of Financial Protection and Innovation."}, {"id": "s16", "start": 122.76, "end": 131.6, "text": "Our mission is to protect 39 million Californian and their financial identities."}, {"id": "s17", "start": 131.6, "end": 133.88, "text": "Let me tell you what we do."}, {"id": "s18", "start": 133.88, "end": 146.28, "text": "When a massive fraud attack in in the state of California, we identify the fraud, we examine the fraud, and we run enforcement."}, {"id": "s19", "start": 146.28, "end": 149.84, "text": "Let me take you behind the scene what we actually do."}, {"id": "s20", "start": 149.84, "end": 153.4, "text": "Fraud comes, we investigate the fraud."}, {"id": "s21", "start": 153.4, "end": 158.32, "text": "When the investigation happen, we collect all the evidences for the fraud."}, {"id": "s22", "start": 158.32, "end": 163.76, "text": "When we have all the evidence, we take that evidence to the court."}, {"id": "s23", "start": 163.88, "end": 174.32, "text": "And in the court, the defense attorney has only one job, to attack the system that we have built."}, {"id": "s24", "start": 174.36, "end": 182.0, "text": "So, the question arises, how should we build a system which is credible?"}, {"id": "s25", "start": 183.239, "end": 191.32, "text": "What are the attributes we need to have in a system which can appear in the court?"}, {"id": "s26", "start": 191.32, "end": 196.28, "text": "And appear in the court means system should be defendable."}, {"id": "s27", "start": 196.28, "end": 203.239, "text": "Defendable means it should be we should be able to explain the system at every step of the process."}, {"id": "s28", "start": 203.239, "end": 207.72, "text": "We should be able to reproduce the issue at every step of the process."}, {"id": "s29", "start": 207.72, "end": 220.64, "text": "We should be able to audit the issue at every step of the process because everything, every data that we produce, it's going to appear in the court."}, {"id": "s30", "start": 220.64, "end": 223.84, "text": "So, how do you build that kind of system?"}, {"id": "s31", "start": 223.84, "end": 231.6, "text": "You Since we deal with financial data, we have to ensure that the data is secure for sure."}, {"id": "s32", "start": 231.6, "end": 237.4, "text": "We have to ensure that the data is evolving and learning."}, {"id": "s33", "start": 237.4, "end": 237.84, "text": "Why?"}, {"id": "s34", "start": 237.84, "end": 241.44, "text": "Because the fraud space is changing every day."}, {"id": "s35", "start": 241.44, "end": 250.36, "text": "We have to ensure that the data is available to be appear in the court and reproducible."}, {"id": "s36", "start": 250.36, "end": 261.16, "text": "So, what I'm going to show you now, the system that we built, and the lessons we have learned the hard way."}, {"id": "s37", "start": 261.16, "end": 270.88, "text": "So, the first and foremost decision that we have taken was to build our solution offline."}, {"id": "s38", "start": 271.12, "end": 275.24, "text": "So, you might be wondering like it's it's extreme."}, {"id": "s39", "start": 275.24, "end": 284.44, "text": "Like, why are you Okay, why do you want to create a solution offline when we have a secure cloud?"}, {"id": "s40", "start": 284.56, "end": 294.6, "text": "So, before we show you what we build, let's talk about what do industry do in the normal way."}, {"id": "s41", "start": 294.6, "end": 299.4, "text": "So, the gold standard of security is encryption."}, {"id": "s42", "start": 299.4, "end": 306.72, "text": "Encryption means you encrypt the data at rest or encrypt the data on the transit."}, {"id": "s43", "start": 306.72, "end": 321.16, "text": "That means the thing is but for machine learning model to work, the data has to be decrypted and available in the plain text in the model memory."}, {"id": "s44", "start": 321.16, "end": 330.28, "text": "And if the data is already decrypted and present in the plain text, it is prone to prompt injection attack."}, {"id": "s45", "start": 330.8, "end": 333.6, "text": "Secondly, let's talk about private endpoint."}, {"id": "s46", "start": 333.6, "end": 342.56, "text": "Private endpoints are actually a isolated environment given to you from your cloud provider."}, {"id": "s47", "start": 343.15999999999997, "end": 351.48, "text": "But cloud providers actually own the on the on the disk."}, {"id": "s48", "start": 351.48, "end": 370.64, "text": "So, the question the thing is that according to the Cloud Act federal government can access your data which is in the cloud and they don't even have to tell you that your data have been accessed."}, {"id": "s49", "start": 371.56, "end": 374.76, "text": "Let's talk about certification."}, {"id": "s50", "start": 374.84, "end": 380.08, "text": "FedRAMP compliant, I also certified SOC 2 compliant."}, {"id": "s51", "start": 380.08, "end": 384.919, "text": "All these compliance are just paper."}, {"id": "s52", "start": 384.919, "end": 395.8, "text": "And we have seen these highly compliant organization fail over and over again."}, {"id": "s53", "start": 395.8, "end": 411.12, "text": "So, only way you can make your data secure to be available in the court to present as a as a evidence is to build the solution offline."}, {"id": "s54", "start": 413.72, "end": 427.72, "text": "So, like everyone else we thought like what a big deal, let's just download a open-source model, create an isolated environment, spin up some GPU, add some system prompt, and add some guardrails,"}, {"id": "s55", "start": 427.72, "end": 429.4, "text": "and done we are running."}, {"id": "s56", "start": 429.4, "end": 432.08, "text": "Push the live data into it."}, {"id": "s57", "start": 432.08, "end": 435.08, "text": "We did the same like everyone else."}, {"id": "s58", "start": 435.08, "end": 441.32, "text": "And the model the system collapsed in 2 hours."}, {"id": "s59", "start": 442.16, "end": 449.44, "text": "And our first instinct was you know, we took the model free model from online."}, {"id": "s60", "start": 449.44, "end": 454.44, "text": "Model is not good for our use case."}, {"id": "s61", "start": 455.36, "end": 468.0, "text": "But the issue was we were we were treating machine learning model as a magic box instead of as a data pipeline."}, {"id": "s62", "start": 469.52, "end": 478.56, "text": "So, anything that garbage comes into the system, we were expecting the model to clean up and do all the processing."}, {"id": "s63", "start": 478.64, "end": 490.92, "text": "So, to solve this problem, we introduce Kafka for data ingestion, a Spark for data processing, and large language model for reasoning."}, {"id": "s64", "start": 490.92, "end": 497.0, "text": "Three different tools to solve three different problems."}, {"id": "s65", "start": 498.0, "end": 502.08, "text": "We use Kafka for these three things."}, {"id": "s66", "start": 502.08, "end": 510.919, "text": "First, the data that enter into our system does not come at a consistent speed."}, {"id": "s67", "start": 510.919, "end": 515.84, "text": "When a fraud attack happen, it attack all over the state."}, {"id": "s68", "start": 515.84, "end": 520.32, "text": "So, we get a high spike of traffic into our system."}, {"id": "s69", "start": 520.32, "end": 531.6, "text": "So, we needed a tool that can buffer that traffic so that the downstream component can access the data at a consistent speed."}, {"id": "s70", "start": 531.6, "end": 533.8, "text": "And Kafka did that."}, {"id": "s71", "start": 533.8, "end": 545.0, "text": "Secondly, we wanted all the events that occur in the system to come and store in a sequential order."}, {"id": "s72", "start": 545.0, "end": 546.96, "text": "When did you open the account?"}, {"id": "s73", "start": 546.96, "end": 548.6, "text": "When did the transaction happen?"}, {"id": "s74", "start": 548.6, "end": 553.88, "text": "The order of events in the fraud is extremely important."}, {"id": "s75", "start": 553.92, "end": 556.72, "text": "Kafka helped us solve that problem."}, {"id": "s76", "start": 556.72, "end": 564.64, "text": "But the main problem that Kafka helped us solve is reproducibility."}, {"id": "s77", "start": 564.8389999999999, "end": 574.6, "text": "In Kafka, it let you move the checkpoint to the point at which the decision was made, and it helped you replay the event."}, {"id": "s78", "start": 574.6, "end": 582.96, "text": "And this replayability of the event is the proof that we present in the courtroom."}, {"id": "s79", "start": 584.08, "end": 589.56, "text": "So, now Kafka did solve our data storage problem."}, {"id": "s80", "start": 589.56, "end": 594.6, "text": "But, the data that enter into the system is really messy."}, {"id": "s81", "start": 594.6, "end": 597.88, "text": "We get 10 different format of bank statement."}, {"id": "s82", "start": 597.88, "end": 599.52, "text": "We get audio file."}, {"id": "s83", "start": 599.52, "end": 604.88, "text": "We get screenshot, facts statement."}, {"id": "s84", "start": 605.16, "end": 612.84, "text": "And, if you dump all this data to model memory, then no wonder model hallucinate."}, {"id": "s85", "start": 613.44, "end": 627.56, "text": "So, we introduced a Spark because a Spark let us process this data behind the scene in the clusters of CPU instead of working on GPU."}, {"id": "s86", "start": 627.56, "end": 632.2, "text": "And, Spark let it let us clean the data."}, {"id": "s87", "start": 632.2, "end": 645.88, "text": "And, then when we process send the clean data through the model memory, to our utter surprise, the same model started giving us so good results."}, {"id": "s88", "start": 645.88, "end": 651.76, "text": "It found the connection between the points which we never thought expected."}, {"id": "s89", "start": 652.92, "end": 655.48, "text": "So, we learn our first lesson."}, {"id": "s90", "start": 655.48, "end": 666.92, "text": "The lesson is most of the data problem in AI are data engineering problem wearing AI mask."}, {"id": "s91", "start": 666.92, "end": 674.2, "text": "So, I recommend you to consider using data engineering tool to solve those problems."}, {"id": "s92", "start": 674.72, "end": 681.8, "text": "Now, our model memory is filled with a very condensed clean data."}, {"id": "s93", "start": 682.0, "end": 684.92, "text": "But, then we found our next issue."}, {"id": "s94", "start": 684.92, "end": 690.76, "text": "The issue was the memory was filled with lot of sensitive information."}, {"id": "s95", "start": 690.76, "end": 697.72, "text": "Your credit card number, your bank account number, your social security number."}, {"id": "s96", "start": 697.72, "end": 702.6, "text": "So, we introduce something called cryptographic vault."}, {"id": "s97", "start": 702.6, "end": 711.16, "text": "Which is basically a SHA-256 cryptographic algorithm with hardware security module."}, {"id": "s98", "start": 711.4, "end": 723.84, "text": "So, in the simple sense, it means that as we get the data into the system, cryptographic vault which convert the data into cryptographic hash."}, {"id": "s99", "start": 723.84, "end": 733.0, "text": "But, the key that is used to do the conversion is physically attached to our server rack."}, {"id": "s100", "start": 733.0, "end": 748.08, "text": "So, if tomorrow somebody is able to get our data, they have to walk into our office physically, break the server rack, get the key to actually make sense of the data."}, {"id": "s101", "start": 748.48, "end": 750.6, "text": "Then, we learn our second lesson."}, {"id": "s102", "start": 750.6, "end": 759.64, "text": "If the stakes are really high, trust hardware over software."}, {"id": "s103", "start": 761.16, "end": 765.6, "text": "Now, we have a model which is working really well."}, {"id": "s104", "start": 765.6, "end": 768.52, "text": "All the PII is redacted."}, {"id": "s105", "start": 768.52, "end": 774.28, "text": "We thought, let's just run a quick round of load testing and release this product."}, {"id": "s106", "start": 774.96, "end": 781.16, "text": "The problem is in the cloud, the scaling is unlimited."}, {"id": "s107", "start": 781.16, "end": 790.64, "text": "You get a high spike of traffic, it is spins off more server, it's it's distribute the load to those server, and you are done."}, {"id": "s108", "start": 790.64, "end": 799.52, "text": "But, when you are creating an isolated environment, you have limited GPU, limited compute, limited VRAM."}, {"id": "s109", "start": 799.52, "end": 805.72, "text": "So, we have to step back and figure out what is the actual problem here."}, {"id": "s110", "start": 805.72, "end": 815.56, "text": "The problem was we were using one state of the art machine learning model to do every single processing."}, {"id": "s111", "start": 815.56, "end": 824.16, "text": "The same model was doing the summarization, entity extraction, fraud ring detection."}, {"id": "s112", "start": 826.32, "end": 834.76, "text": "So, we were actually making a neurosurgeon take the blood pressure of every single patient."}, {"id": "s113", "start": 835.0, "end": 842.2, "text": "To solve this, we introduced triage nurse or semantic router."}, {"id": "s114", "start": 842.2, "end": 856.56, "text": "And the goal of semantic router is as we get the data, it analyzes the data and forward the request to the smallest possible model which is capable of processing"}, {"id": "s115", "start": 856.56, "end": 858.88, "text": "that request."}, {"id": "s116", "start": 859.88, "end": 876.44, "text": "And by making this simple architecture change, we found that more than 80% of of our task could be easily done by the smallest, fastest, cheapest model."}, {"id": "s117", "start": 876.56, "end": 891.48, "text": "By not adding any new GPU, we could process three times more traffic and cost of processing each request reduced to nearly 70%."}, {"id": "s118", "start": 895.8389999999999, "end": 907.52, "text": "Now, we have done the unit testing, we have done the load testing, and then we found the hardest problem of all."}, {"id": "s119", "start": 908.52, "end": 918.88, "text": "The problem was we built this highly secure system, but the system was not learning."}, {"id": "s120", "start": 919.6, "end": 924.2, "text": "System did not know what is happening in the threat space."}, {"id": "s121", "start": 924.2, "end": 933.56, "text": "So, the question arises, how do we make our system learn without creating a security hole?"}, {"id": "s122", "start": 936.0, "end": 943.2, "text": "Usually in industry, people solve this problem by configuring software firewall."}, {"id": "s123", "start": 944.2, "end": 948.52, "text": "But any configuration can be misconfigured."}, {"id": "s124", "start": 948.52, "end": 956.4, "text": "And once you have misconfigured, your highly secure system will be highly exploited one."}, {"id": "s125", "start": 957.2, "end": 964.16, "text": "We decided to not trust the configuration, and we took help from physics."}, {"id": "s126", "start": 964.56, "end": 976.56, "text": "We introduce one-way data diode, which is basically a fiber optics cable physically cut into half."}, {"id": "s127", "start": 976.56, "end": 982.44, "text": "The first half of the cable is connected to the internet to receive the data."}, {"id": "s128", "start": 982.44, "end": 986.76, "text": "Second half of the cable is connected to our solution."}, {"id": "s129", "start": 986.76, "end": 996.266, "text": "First of the half of the cable has laser transmitter, which receives the data from the internet and transmit the data to the second half."}, {"id": "s130", "start": 996.266, "end": 996.4, "text": "[snorts]"}, {"id": "s131", "start": 996.4, "end": 1001.92, "text": "Second half has a laser receiver to receive the data from the first half."}, {"id": "s132", "start": 1001.92, "end": 1008.28, "text": "But there is no laser transmitter from our end to the outside world."}, {"id": "s133", "start": 1008.28, "end": 1015.8, "text": "So, it is physically im- possible for data to leak from the system."}, {"id": "s134", "start": 1015.8, "end": 1024.6799999999998, "text": "And this is how we ensure 100% guarantee of the security of the system."}, {"id": "s135", "start": 1029.76, "end": 1035.36, "text": "Data diode solves the problem of directionality of the data."}, {"id": "s136", "start": 1035.36, "end": 1043.68, "text": "But anything enter into the data is is considered to be unsafe till proven."}, {"id": "s137", "start": 1043.68, "end": 1050.64, "text": "So anything from outside first first lands into quarantine zone."}, {"id": "s138", "start": 1050.64, "end": 1056.56, "text": "Where we run a spark job that runs a validation on each input data."}, {"id": "s139", "start": 1056.56, "end": 1064.52, "text": "And when all the validation is successful, then the data goes to the production layer."}, {"id": "s140", "start": 1065.28, "end": 1072.24, "text": "In the production layer, we also save the data into Apache Iceberg."}, {"id": "s141", "start": 1072.4, "end": 1081.48, "text": "Apache Iceberg is a time traveled queryable immutable data store."}, {"id": "s142", "start": 1082.88, "end": 1095.28, "text": "We enter the data in this data store because 2 years from now one of our results from our system goes to the court."}, {"id": "s143", "start": 1095.28, "end": 1098.76, "text": "We cannot present We cannot go to the court and tell them, \"You know what?"}, {"id": "s144", "start": 1098.76, "end": 1105.84, "text": "This system is result is produced by AI and we don't know anything about it.\""}, {"id": "s145", "start": 1106.12, "end": 1121.32, "text": "At that moment, we travel the Apache Iceberg, go to the point at which the decision was made and get the state of the system at that moment from the database."}, {"id": "s146", "start": 1121.32, "end": 1128.68, "text": "And that is state of the system appear as a proof in the court."}, {"id": "s147", "start": 1129.4, "end": 1143.84, "text": "And that is how we build a solution which is secure, which is evolving, and which is defensible in the court."}, {"id": "s148", "start": 1147.92, "end": 1151.16, "text": "This is the whole architecture end to end."}, {"id": "s149", "start": 1151.16, "end": 1165.36, "text": "If you see this only at the very end of the system, we are when a user logs into the system, they we authorize the user into multi-factor factor authorize"}, {"id": "s150", "start": 1165.36, "end": 1170.92, "text": "authentication and only then the data is reverted."}, {"id": "s151", "start": 1170.92, "end": 1181.72, "text": "Data is not opened till the very end at the browser where the user is actually evaluating the threat case."}, {"id": "s152", "start": 1185.52, "end": 1189.52, "text": "So, don't look at the solution as a fraud detection solution."}, {"id": "s153", "start": 1189.52, "end": 1193.8, "text": "This is the architecture of the future."}, {"id": "s154", "start": 1193.8, "end": 1204.28, "text": "Soon the same architecture will be used to predict the health care, banking e-statements, legal and other domains."}, {"id": "s155", "start": 1204.56, "end": 1208.48, "text": "In the end, I just want to say one thing."}, {"id": "s156", "start": 1208.48, "end": 1213.4, "text": "Build solution that can be trusted."}, {"id": "s157", "start": 1213.72, "end": 1217.88, "text": "And remember, trust is not a policy."}, {"id": "s158", "start": 1217.88, "end": 1222.32, "text": "Trust is a physical property of the system."}, {"id": "s159", "start": 1222.32, "end": 1233.44, "text": "You have to build the trust from day one into your hardware, into your physics, into your architecture or it's not there."}, {"id": "s160", "start": 1233.44, "end": 1235.08, "text": "It's that simple."}, {"id": "s161", "start": 1235.08, "end": 1238.92, "text": "So, years from now nobody will remember the models you trained."}, {"id": "s162", "start": 1238.92, "end": 1242.12, "text": "Nobody will remember the benchmark you received."}, {"id": "s163", "start": 1242.12, "end": 1253.04, "text": "People will only remember the solution that you have built can be trusted when it needed the most."}, {"id": "s164", "start": 1253.04, "end": 1255.48, "text": "Thank you so much."}, {"id": "s165", "start": 1270.714, "end": 1272.28, "text": "[music]"}, {"id": "s166", "start": 1272.28, "end": 1274.28, "text": "Mhm."}]}, {"id": "2aS7aKoXn64", "title": "Rethinking Environments for Long-Horizon Work — Rayan Garg, Theta Software", "channel": "AI Engineer", "duration": 1275, "upload_date": null, "url": "https://www.youtube.com/watch?v=2aS7aKoXn64", "api": "/api/talks/2aS7aKoXn64.json", "summary_url": "/#2aS7aKoXn64", "transcript": {"html": "/transcripts/2aS7aKoXn64.html", "txt": "/transcripts/2aS7aKoXn64.txt", "vtt": "/transcripts/2aS7aKoXn64.vtt"}, "sentences": [{"id": "s1", "start": 12.48, "end": 14.24, "text": "It's uh great to see all of you here today."}, {"id": "s2", "start": 14.24, "end": 18.32, "text": "We're super excited to talk about one of our favorite topics uh here at Theta."}, {"id": "s3", "start": 18.32, "end": 21.119, "text": "Um before we get started, we just want to introduce ourselves."}, {"id": "s4", "start": 21.119, "end": 25.359, "text": "Um so, hi, I'm a co-founder and CTO at Data Software."}, {"id": "s5", "start": 25.359, "end": 26.16, "text": "Hi, I'm Ryan."}, {"id": "s6", "start": 26.16, "end": 28.08, "text": "I'm a co-founder and CEO at Thata Software."}, {"id": "s7", "start": 28.08, "end": 34.399, "text": "Prior to this, I was previously a founding engineer at Deep Silken where we did research into turnary models."}, {"id": "s8", "start": 34.399, "end": 35.2, "text": "Awesome."}, {"id": "s9", "start": 35.2, "end": 37.28, "text": "So, I can get us started with the topic today."}, {"id": "s10", "start": 37.28, "end": 41.92, "text": "Um, we're going to be talking about oral environments uh within the context of long horizon tasks."}, {"id": "s11", "start": 41.92, "end": 48.239, "text": "And I think the most important thing for us to start with at the beginning is just talk about the trends and what long horizon actually means."}, {"id": "s12", "start": 48.239, "end": 54.96, "text": "So, you know, we all know that the horizon at which AI agents can work autonomously is accelerating really fast."}, {"id": "s13", "start": 54.96, "end": 59.039, "text": "Um this is just some of the metrics that you can look at to see how this progress is really accelerating."}, {"id": "s14", "start": 59.039, "end": 63.52, "text": "Um but I think it's really important to actually define what the time horizon here actually means."}, {"id": "s15", "start": 63.52, "end": 68.56, "text": "Uh we've gotten this data from one of the most common benchmarks out there that you've probably heard of for time horizons."}, {"id": "s16", "start": 68.56, "end": 70.479, "text": "I'm sure you've seen in your Twitter feed all the time."}, {"id": "s17", "start": 70.479, "end": 73.52, "text": "It's um comes from meter."}, {"id": "s18", "start": 73.52, "end": 80.799, "text": "Uh and meter kind of has one response or answer to this really important question about how do we actually define long horizon?"}, {"id": "s19", "start": 80.799, "end": 87.36, "text": "Um, it's really important to understand because what we consider long horizon a year ago probably isn't really long horizon in our definition today."}, {"id": "s20", "start": 87.36, "end": 90.32, "text": "And what's long horizon today probably won't be long horizon in a year or two."}, {"id": "s21", "start": 90.32, "end": 95.439, "text": "Um, and I think that gets to our first point which is that long horizon is really kind of a scalar metric."}, {"id": "s22", "start": 95.439, "end": 106.0, "text": "Uh, it's useful for kind of measuring relative tasks like one task might be more long than another, but it's really hard to define into kind of a binary category of this task is long and this task is not."}, {"id": "s23", "start": 106.0, "end": 109.36, "text": "Uh, especially as the kind of scope changes over time."}, {"id": "s24", "start": 109.36, "end": 124.96, "text": "So I think the first way we can talk about defining this is how meter kind of looks at it which is human horizon meaning can we use humans as a benchmark of oh this task takes humans a certain amount of time so if AI agents can do that then they've reached this certain critical"}, {"id": "s25", "start": 124.96, "end": 130.959, "text": "uh level of kind of a time horizon uh and the way meter kind of does it is they have thresholds for the tasks they care about."}, {"id": "s26", "start": 130.959, "end": 141.76, "text": "So, you know, they have a 50% threshold, meaning, you know, if a certain model reaches a 16- hour threshold on this benchmark, that means it can achieve tasks with a 50% success rate that take a human 16 hours."}, {"id": "s27", "start": 141.76, "end": 148.48, "text": "And, you know, there's a really rigorous methodology of how they actually measure how did it take human 16 hours, but we will kind of avoid some of those details."}, {"id": "s28", "start": 148.48, "end": 156.8, "text": "Um, the other way we usually think about what long horizon actually means is not with the reference of humans, but instead the reference of models."}, {"id": "s29", "start": 156.8, "end": 160.72, "text": "Uh so some of the relevant model units we usually care about are things like tokens."}, {"id": "s30", "start": 160.72, "end": 165.519, "text": "How many tokens are consumed in a trajectory, how many steps it took, how many tool calls it kind of takes."}, {"id": "s31", "start": 165.519, "end": 167.76, "text": "Um and these can be really noisy, right?"}, {"id": "s32", "start": 167.76, "end": 169.599, "text": "Because I'm sure you guys have used different models."}, {"id": "s33", "start": 169.599, "end": 174.56, "text": "Um like you know a lot of the codeex models are seen as more token efficient than some of the cloud models."}, {"id": "s34", "start": 174.56, "end": 177.519, "text": "Um and it's a pretty noisy estimate for a couple reasons."}, {"id": "s35", "start": 177.519, "end": 184.56, "text": "One is that which model you're using like I just said and different harnesses you care about have a pretty big impact on how many tokens are actually consumed on a task."}, {"id": "s36", "start": 184.56, "end": 184.879, "text": "Right?"}, {"id": "s37", "start": 184.879, "end": 189.44, "text": "So, um, this can be pretty hard to interpret when you're not holding variables constant."}, {"id": "s38", "start": 189.44, "end": 198.64, "text": "Um, you know, if a task takes GPT model 500,000 tokens, that doesn't really tell you a lot about what that task would look like for cloud models until you actually run on those cloud models."}, {"id": "s39", "start": 198.64, "end": 213.36, "text": "But despite it being a pretty noisy metric, it's actually really useful uh and important for us to understand because, you know, the amount of tokens that are consumed tells us a lot about how difficult a task actually is for an AI agent to kind of tackle it autonomously, right?"}, {"id": "s40", "start": 213.36, "end": 216.4, "text": "uh we have to deal with things like compaction over long horizons."}, {"id": "s41", "start": 216.4, "end": 221.76, "text": "Um you know they don't really stay coherent over enough steps or trajectory uh length that you kind of achieve."}, {"id": "s42", "start": 221.76, "end": 235.12, "text": "So even though it's kind of a noisy metric uh it can be really useful when you know if we look at what a GPT 5.5 model can do uh now and then you use the same model generation and kind of see oh now can actually achieve a a million trajectory based on an increased context window or improved"}, {"id": "s43", "start": 235.12, "end": 236.0, "text": "compaction endpoint."}, {"id": "s44", "start": 236.0, "end": 242.159, "text": "That tells us a lot about how autonomous AI agents can actually go for long periods of time in that sense."}, {"id": "s45", "start": 242.159, "end": 247.439, "text": "Um, and it really defines for us what the technical frontier actually means uh for models right now."}, {"id": "s46", "start": 247.439, "end": 249.12, "text": "Maybe not really human adjacent."}, {"id": "s47", "start": 249.12, "end": 255.36, "text": "It's really hard to say how many tokens a task takes for a human because we don't really think in tokens, but still very useful in that kind of sense."}, {"id": "s48", "start": 255.36, "end": 258.239, "text": "Um, so these are two different approaches we can think about."}, {"id": "s49", "start": 258.239, "end": 260.88, "text": "But what's actually the right way to think about this?"}, {"id": "s50", "start": 260.88, "end": 263.6, "text": "Uh, the answer is that we probably want to think about all of these."}, {"id": "s51", "start": 263.6, "end": 268.24, "text": "And if we just look at one of these metrics in isolation, it's probably not a great way of measuring things."}, {"id": "s52", "start": 268.24, "end": 278.56, "text": "So, I went through some of the weaknesses with measuring with like model specific metrics like tokens and and steps, but there's also a lot of weaknesses in the other approach of kind of relying on humans."}, {"id": "s53", "start": 278.56, "end": 285.759, "text": "Um, you know, what's long horizon for a human isn't necessarily that difficult for a model depending on what the actual task you care about is."}, {"id": "s54", "start": 285.759, "end": 288.56, "text": "You know, there's a lot of tasks that are really tedious and time inensive."}, {"id": "s55", "start": 288.56, "end": 295.6, "text": "Maybe like, you know, some financial analyst has to go into like an Excel file and fix a bunch of formatting issues throughout uh the the task."}, {"id": "s56", "start": 295.6, "end": 300.4, "text": "Maybe they're changing like the theming of like the colors in the in the actual file, right?"}, {"id": "s57", "start": 300.4, "end": 302.24, "text": "That might be really tedious for a human to take."}, {"id": "s58", "start": 302.24, "end": 309.84, "text": "It might take them like days to do that if it's a really big Excel file, but for a model, it can maybe write a Python script or find some other cool trick to do that really quickly."}, {"id": "s59", "start": 309.84, "end": 316.639, "text": "And that's not really hard for it to do, but you never really expect a financial expert to do that because, you know, they most of them don't really know how to write these Python scripts."}, {"id": "s60", "start": 316.639, "end": 319.52, "text": "Um, so I think that's one thing to note."}, {"id": "s61", "start": 319.52, "end": 325.28, "text": "And the other that I kind of briefly touched upon before is that the methodology of how we actually measure this has a really big impact."}, {"id": "s62", "start": 325.28, "end": 331.6, "text": "And if you, you know, someone is out there saying, \"Hey, we have some tasks or environments that are 16 hours long on average, someone else is 20 hours.\""}, {"id": "s63", "start": 331.6, "end": 337.759, "text": "That's really hard to compare across people because there's so many different things in the methodology that really impact uh kind of what that actually means."}, {"id": "s64", "start": 337.759, "end": 340.4, "text": "It can mean, you know, the quality of the experts you're using."}, {"id": "s65", "start": 340.4, "end": 346.0, "text": "Some more experienced experts might actually be way more efficient at doing a certain type of financial or coding task, whatever it kind of is."}, {"id": "s66", "start": 346.0, "end": 353.52, "text": "Um and I think this becomes really really important as we start shifting towards uh kind of the frontier of even human capabilities."}, {"id": "s67", "start": 353.52, "end": 366.96, "text": "So you know as this meter talks about this but as you shift towards more long resin tasks and tasks that only the top 10% the top 1% top.1% of humans can really do these estimates start to get really really noisy and it's something that we really have to consider."}, {"id": "s68", "start": 366.96, "end": 376.16, "text": "Uh and I think you know the way agents work is kind of developing in its own separate path and there are a lot of different bottlenecks and different things that AI agents are better at than even the way humans work."}, {"id": "s69", "start": 376.16, "end": 383.52, "text": "And with that in mind uh you know as these paths kind of diverge of how humans do work and what their limitations are and what agents do and what their limitations are."}, {"id": "s70", "start": 383.52, "end": 394.639, "text": "Uh it's really important to kind of keep both these metrics in mind because they kind of tell and paint different pictures uh of of what's actually relevant and and you don't really get the whole picture by just looking at one in that sense."}, {"id": "s71", "start": 396.319, "end": 396.72, "text": "Yep."}, {"id": "s72", "start": 396.72, "end": 400.639, "text": "So now the question becomes, how do you measure model capabilities?"}, {"id": "s73", "start": 400.639, "end": 406.56, "text": "And this is a really important question because fundamentally long horizon tasks aren't the only thing we care about."}, {"id": "s74", "start": 406.56, "end": 413.12, "text": "This is the larger question that we want to think about every time we're trying to create tasks, create environments to train our models."}, {"id": "s75", "start": 413.12, "end": 417.6, "text": "And so the first way we can think about this is environment complexity."}, {"id": "s76", "start": 417.6, "end": 421.68, "text": "And specifically environment complexity related to tool coordination, right?"}, {"id": "s77", "start": 421.68, "end": 425.68, "text": "So how many tools or external dependency does the agent have to coordinate?"}, {"id": "s78", "start": 425.68, "end": 429.759, "text": "How many tools or external dependencies does the agent have to move information across?"}, {"id": "s79", "start": 429.759, "end": 444.08, "text": "So if we start off kind of thinking about what the world looked like before a long horizon task uh you know world, we'll notice that there was you know a low complexity world where the agent maybe had to read one file or one set of files in a code base and that's kind of what a task entailed."}, {"id": "s80", "start": 444.08, "end": 455.84000000000003, "text": "But now we can see increasingly as these tasks become more long horizon what is important to define for measuring model capabilities is okay the the agent should be using a ton of different tools like graphana for observability"}, {"id": "s81", "start": 455.84000000000003, "end": 468.08, "text": "to parse logs or GitHub for CI/CD or AWS cloudatch or reading and writing to a database and we're going to notice that as we sort of start to have these agents and these environments"}, {"id": "s82", "start": 468.08, "end": 477.28, "text": "use many tools that we also start to think about environment complexity in regards to state changes which is effectively the degree to which the environment changes throughout the task."}, {"id": "s83", "start": 477.28, "end": 483.919, "text": "And so fundamentally the way we want to think about this is right all long horizon tasks aren't equal."}, {"id": "s84", "start": 483.919, "end": 491.919, "text": "So for example, one task can you know maybe be made by artificially long horizon by chaining together unrelated independent tasks."}, {"id": "s85", "start": 491.919, "end": 497.68, "text": "However, that doesn't actually tell us or meaningfully measure the model capabilities."}, {"id": "s86", "start": 497.68, "end": 505.36, "text": "Instead, a key component of this is actually being able to have the earlier decisions in the in the environment influence the later decisions."}, {"id": "s87", "start": 505.36, "end": 514.08, "text": "And this comes back to how the agents are asked to interact with the tools, how these tools change the state of the environment, etc. So, we can look at an a concrete example for this."}, {"id": "s88", "start": 514.08, "end": 526.399, "text": "One example where you'll see paralyzable complexity, which is effectively not involving a lot of state changes, is when you can maybe have an agent analyzing a large code base and then the agent needs to spawn off multiple sub aents and it can very easily paralyze this, right?"}, {"id": "s89", "start": 526.399, "end": 532.32, "text": "it can look at a lot of the different files in parallel, come back to the to to the master agent and then kind of wrap this all up, right?"}, {"id": "s90", "start": 532.32, "end": 545.36, "text": "But meanwhile, if we look at sequential complexity, we'll see if you have to use a dashboard or logs, a bad early query or a misread can cascade into these downstream steps that really start to have major consequences later on, right?"}, {"id": "s91", "start": 545.36, "end": 549.839, "text": "It's all dependent on how you use those tools and how the state of the environment changed."}, {"id": "s92", "start": 549.839, "end": 555.36, "text": "So the third area that we also need to consider for measuring model capabilities is ambiguity, right?"}, {"id": "s93", "start": 555.36, "end": 560.959, "text": "And ambiguity is defined as the information you give the agent and the environment when starting the task."}, {"id": "s94", "start": 560.959, "end": 568.16, "text": "So this could be the instructions, this could be the artifacts, etc. And increasingly as these agents work with more artifacts at the start, right?"}, {"id": "s95", "start": 568.16, "end": 570.959, "text": "We want to have them mirror the work that humans really do."}, {"id": "s96", "start": 570.959, "end": 575.76, "text": "And the work that humans really do has a lot to deal with ambiguity, right?"}, {"id": "s97", "start": 575.76, "end": 580.9590000000001, "text": "They always are are don't have the most complete information and they want to let exploration happen."}, {"id": "s98", "start": 580.9590000000001, "end": 590.72, "text": "And so we believe that to measure model capabilities, we need to test the model's ability to explore and explore throughout the environment as well and explore these artifacts similar to how a human would."}, {"id": "s99", "start": 590.72, "end": 599.04, "text": "Now the trade-off with this, right, is that if you are going to have ambiguity in the materials you give, there's a lot more possible paths that the agent could take."}, {"id": "s100", "start": 599.04, "end": 601.04, "text": "There's a lot more ways the agent could be right."}, {"id": "s101", "start": 601.04, "end": 605.92, "text": "And that means that standardized evaluation gets much, much harder."}, {"id": "s102", "start": 606.08, "end": 606.88, "text": "Awesome."}, {"id": "s103", "start": 606.88, "end": 616.0, "text": "So I'm going to talk about one of the hardest things there are to build environments and one of the most complex things to really think about where there's a lot of nuance which is the verifier in the environment."}, {"id": "s104", "start": 616.0, "end": 620.88, "text": "How do we actually know that the work the agent did was correct and give it some reward signal during the training process."}, {"id": "s105", "start": 620.88, "end": 622.88, "text": "So I think there's a few challenges here."}, {"id": "s106", "start": 622.88, "end": 630.48, "text": "Um you know I think just to give a high level overview um you know tasks are getting more complex the environments are getting more complex the trajectories are getting longer"}, {"id": "s107", "start": 630.48, "end": 645.04, "text": "and we've shifted a lot from you know a lot of the early RL that we were doing in in recent times was really in hard verifiable domains and that's why we saw these gains in in math and kind of uh like data structure style coding problems but what's happened over time is now we really care about a"}, {"id": "s108", "start": 645.04, "end": 658.64, "text": "bunch of economically valuable work in software file domains is is a way to put it where uh you know we can't just run a Python script or run test cases is or or write a proof to really see whether or not the output was correct or whether or not the environment was changed correctly."}, {"id": "s109", "start": 658.64, "end": 670.079, "text": "We have to start using other techniques and the main way we're really going to use that is kind of introduce a judge model or critic model as some people put it and they kind of can add a lot of nuance to how we actually look at a few things here."}, {"id": "s110", "start": 670.079, "end": 674.399, "text": "Um you know very critical for how we actually determine correctness and assign reward."}, {"id": "s111", "start": 674.399, "end": 675.92, "text": "Um they'll look at two things mainly."}, {"id": "s112", "start": 675.92, "end": 680.32, "text": "One is usually either the state final state of the environment and kind of how it was impacted."}, {"id": "s113", "start": 680.32, "end": 689.92, "text": "Um and the other is looking at the trajectory of how the model that you're actually training made kind of changes to the the state of the environment as well and and what kind of correctness look like there."}, {"id": "s114", "start": 689.92, "end": 697.279, "text": "Um so you know why do we actually use uh judges and usually rubrics um as a technique?"}, {"id": "s115", "start": 697.279, "end": 701.44, "text": "I think it's really important to understand before we can even understand how to use them properly which you know I think there's a few reasons."}, {"id": "s116", "start": 701.44, "end": 710.079, "text": "One is that like I said for these software fellow domains there's like an entire class of problems that are really important and a lot of the problems we care about that really you can't really write a deter deterministic"}, {"id": "s117", "start": 710.079, "end": 716.56, "text": "verifier for um they would be really impractical brittle or just downright impossible depending on what the problem setup really is."}, {"id": "s118", "start": 716.56, "end": 727.76, "text": "Um and you know I think the other thing also is that like I said we're going to look at the trajectory uh and you know not all solutions are really created equal and not all paths of those solutions are equal either."}, {"id": "s119", "start": 727.76, "end": 731.68, "text": "uh you know the worst case of a bad solution we can get is some reward hacking that happens."}, {"id": "s120", "start": 731.68, "end": 735.76, "text": "Lots of different types of reward hacking can happen depending on the setup or the task you kind of care about."}, {"id": "s121", "start": 735.76, "end": 742.72, "text": "You know agent can escape a sandbox maybe see privilege information it shouldn't be seeing about maybe a hidden test suite for like a coding task."}, {"id": "s122", "start": 742.72, "end": 748.399, "text": "Um this is all behavior that we want to prevent obviously because those are not actually really valid solutions we really care about."}, {"id": "s123", "start": 748.399, "end": 756.9590000000001, "text": "Um, and you know, a lot of this mitigating this is going to require strengthening your verifier and your environment setup, but the judge is really, really important in actually catching this behavior."}, {"id": "s124", "start": 756.9590000000001, "end": 761.76, "text": "And that's an important reason of why we actually look at the trajectory that the agent actually took to get there."}, {"id": "s125", "start": 761.76, "end": 765.8389999999999, "text": "Um, yeah, and I think there's a lot of careful things you want to be doing here."}, {"id": "s126", "start": 765.8389999999999, "end": 773.279, "text": "Uh, one is that there's nuance in how much guidance or uh like explicit rigidness you want to add to the trajectories that the model can actually take."}, {"id": "s127", "start": 773.279, "end": 780.16, "text": "um if we kind of enforce this too tightly, we collapse the state space of how many actual paths the agent actually explores."}, {"id": "s128", "start": 780.16, "end": 792.24, "text": "Uh and that can be really bad, especially because I think some of the more simple approaches we've seen with judges early on is, hey, we'll just give it a reference answer or solution or maybe a sample trajectory of what a good solution looks like and then just compare against"}, {"id": "s129", "start": 792.24, "end": 794.56, "text": "uh what the model did and say, hey, does it match up with that?"}, {"id": "s130", "start": 794.56, "end": 799.68, "text": "Uh and that really does not work for these more ambiguous or open-ended tasks because there's so many possible correct solutions."}, {"id": "s131", "start": 799.68, "end": 802.32, "text": "It's basically impossible to account for every single one."}, {"id": "s132", "start": 802.32, "end": 806.8, "text": "and we want to check for more robust methods that allow for these different solutions."}, {"id": "s133", "start": 808.079, "end": 817.279, "text": "So now that we've kind of established why we use judges, uh we want to go through some of the general heristics and kind of principles we think about when we're designing good judges."}, {"id": "s134", "start": 817.279, "end": 819.44, "text": "Um some of the things that we think about at data."}, {"id": "s135", "start": 819.44, "end": 825.8389999999999, "text": "So you know I think the first important uh consideration to make is that judges are agents too."}, {"id": "s136", "start": 825.8389999999999, "end": 835.68, "text": "Um, you know, so as environments get really complex, oftent times we a consideration we kind of have is like, hey, we have to make sure the harness can kind of scale and and kind of match up with whatever environment"}, {"id": "s137", "start": 835.68, "end": 836.48, "text": "uh you kind of have."}, {"id": "s138", "start": 836.48, "end": 840.16, "text": "Maybe that means introducing a bunch of new tools and making sure your harness can support those tools really well."}, {"id": "s139", "start": 840.16, "end": 843.12, "text": "The agent has clear observability over what's happening in the environment."}, {"id": "s140", "start": 843.12, "end": 850.32, "text": "Um, but I think like we said, the way the judge determines correctness is that it oftent times has to look at the state of the environment itself as well."}, {"id": "s141", "start": 850.32, "end": 855.04, "text": "So a lot of the harness that you've designed for the agent might also be reused uh for the judge as well."}, {"id": "s142", "start": 855.04, "end": 857.76, "text": "Um, I think the best way to illustrate this is the example we have here."}, {"id": "s143", "start": 857.76, "end": 867.36, "text": "Let's say you've defined a task where, you know, there's some deployment failure with the software engineering task of some platform you're deploying and the agent's task is to like sift through the CI/CD logs on GitHub,"}, {"id": "s144", "start": 867.36, "end": 877.519, "text": "look through the cloud cloudatch logs, figure out whatever happened, uh, kind of apply the changes you care about to the codebase and then open a PR and and kind of kick off a redeploy there once the PR is merged."}, {"id": "s145", "start": 877.519, "end": 890.16, "text": "Um for a lot of for a lot of that if the judge actually wants to verify uh whether or not this is correct besides just like looking at the tool calls agent mate which are usually not very reliable it actually has to also check the GitHub logs it might check the AWS"}, {"id": "s146", "start": 890.16, "end": 894.72, "text": "logs or the GitHub logs after the deployment happened to make sure oh are things actually working properly."}, {"id": "s147", "start": 894.72, "end": 900.24, "text": "So it's really important that the judge has access to the environment in the same way uh with some important safeguards of course."}, {"id": "s148", "start": 900.24, "end": 904.959, "text": "One is that we don't want the judge to make an accidental mutation in some way to the environment after the agent is done."}, {"id": "s149", "start": 904.959, "end": 906.32, "text": "So you want to be very careful about that."}, {"id": "s150", "start": 906.32, "end": 909.04, "text": "Maybe that means enforcing readon permissions for a lot of this information."}, {"id": "s151", "start": 909.04, "end": 911.04, "text": "It can't actually kick off a deployment or anything like that."}, {"id": "s152", "start": 911.04, "end": 912.88, "text": "So those are things to be careful about."}, {"id": "s153", "start": 912.88, "end": 920.32, "text": "But I think this is really really important especially where there's a lot of open-ended approaches and the only way we can really verify correctness is to actually look at the state itself."}, {"id": "s154", "start": 920.32, "end": 924.32, "text": "Uh you the answer isn't obvious of whether or not the agent completed the task just from looking at the trajectory."}, {"id": "s155", "start": 924.32, "end": 927.519, "text": "So I think that's one example where this approach is really really important."}, {"id": "s156", "start": 927.519, "end": 942.56, "text": "Um I think uh the other thing to be notable of is you know as these environments get more complex the agent trajectories get longer and longer and part of the reason we also need the judge to be an agent is that you can't just use this really basic approach of taking the trajectory and stuffing it in the"}, {"id": "s157", "start": 942.56, "end": 945.519, "text": "context window of the judge and kind of have it be a basic LM call."}, {"id": "s158", "start": 945.519, "end": 949.04, "text": "Uh these trajectories can get really really long and really really complex."}, {"id": "s159", "start": 949.04, "end": 954.72, "text": "So we need to do a lot more thoughtful uh processing of the trajectory in some meaningful way."}, {"id": "s160", "start": 954.72, "end": 957.6, "text": "So you know that might mean we put into some database."}, {"id": "s161", "start": 957.6, "end": 960.16, "text": "We use sub agents to actually enrich certain information."}, {"id": "s162", "start": 960.16, "end": 963.6, "text": "Maybe we parse out specific phases that the agent was actually in."}, {"id": "s163", "start": 963.6, "end": 965.68, "text": "Maybe the beginning part was it going through logs."}, {"id": "s164", "start": 965.68, "end": 967.36, "text": "The second part was actually writing code."}, {"id": "s165", "start": 967.36, "end": 969.759, "text": "The third part was actually it checking what happened after that."}, {"id": "s166", "start": 969.759, "end": 971.6, "text": "These are all different things we want we want to do."}, {"id": "s167", "start": 971.6, "end": 974.48, "text": "And in that sense we need to make the trajectory itself queryable."}, {"id": "s168", "start": 974.48, "end": 979.44, "text": "So that might mean enriching of information like I just said or some other metadata we can kind of look at at certain steps."}, {"id": "s169", "start": 979.44, "end": 986.56, "text": "is really important so the agent can find critical steps um you know like failure points and and verify whether or not those are actually failures."}, {"id": "s170", "start": 986.56, "end": 991.519, "text": "Making that uh kind of usable for the agent is really really important."}, {"id": "s171", "start": 992.72, "end": 996.56, "text": "Um I think another important thing to consider is learnability of our environments."}, {"id": "s172", "start": 996.56, "end": 1003.519, "text": "Um you know the most important thing here is just the density of the reward signal and a lot of that comes from your rubric and kind of how the judge is defining that."}, {"id": "s173", "start": 1003.519, "end": 1014.88, "text": "So, I think if you be very careful with just uh you know overloading with density in in your rubric, a lot of times, especially for frontier problems that models aren't really capable of yet, judges will really struggle to apply that rubric consistently."}, {"id": "s174", "start": 1014.88, "end": 1019.12, "text": "So, there's a lot of QA we kind of need to do to make sure judges are able to apply that information correctly."}, {"id": "s175", "start": 1019.12, "end": 1026.4, "text": "Um, you know, there's other learnability factors that we care about and we measure in environments like the distribution of tasks and and and the actual underlying data there is."}, {"id": "s176", "start": 1026.4, "end": 1035.76, "text": "Uh and and these are all kind of things we think about for learnability and it's really important otherwise you're just wasting a bunch of compute on on problems where the model can't actually effectively learn."}, {"id": "s177", "start": 1036.88, "end": 1039.839, "text": "Um you know these are some emerging rubric judge patterns we've seen."}, {"id": "s178", "start": 1039.839, "end": 1041.039, "text": "I'll quickly skim over this."}, {"id": "s179", "start": 1041.039, "end": 1044.959, "text": "Um you know oftent times you deterministic verifiers aren't completely dead."}, {"id": "s180", "start": 1044.959, "end": 1046.959, "text": "oftentimes we use them in tandem with judges."}, {"id": "s181", "start": 1046.959, "end": 1056.72, "text": "Maybe generating an artifact for the judge to actually look over where you're maybe collecting metrics or interesting thing that we could also use is dynamic evaluation time rubrics where we're actually generating"}, {"id": "s182", "start": 1056.72, "end": 1062.0, "text": "um you know we're maybe giving partial credit where we've baked in some assumptions that the models made and assume they're correct."}, {"id": "s183", "start": 1062.0, "end": 1067.2, "text": "It's like grading a test assuming like if you got the first part wrong, let's just assume it's correct, did they get the rest of the part right?"}, {"id": "s184", "start": 1067.2, "end": 1071.919, "text": "That can be really important as well as well for kind of assigning credit there."}, {"id": "s185", "start": 1073.679, "end": 1075.12, "text": "skip over this part."}, {"id": "s186", "start": 1075.12, "end": 1078.96, "text": "Um I will let R just close things off with some things about QA for rubrics."}, {"id": "s187", "start": 1078.96, "end": 1079.44, "text": "Yep."}, {"id": "s188", "start": 1079.44, "end": 1082.64, "text": "So for each rubric we produce, we run a couple different tests."}, {"id": "s189", "start": 1082.64, "end": 1083.679, "text": "We won't go into all of them."}, {"id": "s190", "start": 1083.679, "end": 1084.96, "text": "Some of them are pretty basic, right?"}, {"id": "s191", "start": 1084.96, "end": 1086.08, "text": "Gold, no op variance."}, {"id": "s192", "start": 1086.08, "end": 1098.32, "text": "These are tests you want to be considering regardless for your verifiers, but I think increasingly, you know, as as you involve AI in the process of even creating rubrics or verifying rubrics or aiding experts, you need to have more and more tests, especially as the tasks become more long horizon."}, {"id": "s193", "start": 1098.32, "end": 1101.52, "text": "And so that really touches on the coverage and the expert agreement."}, {"id": "s194", "start": 1101.52, "end": 1105.36, "text": "But I think what we wanted to close off with today is why a lot of this stuff matters, right?"}, {"id": "s195", "start": 1105.36, "end": 1109.12, "text": "We spent a lot of time earlier in this presentation defining what long horizon means."}, {"id": "s196", "start": 1109.12, "end": 1119.6, "text": "And a huge reason we did that is because we feel like a lot of the literature and data, a lot of the literature shows that a lot of the data being produced right now and being used to train and evaluate models is actually flawed."}, {"id": "s197", "start": 1119.6, "end": 1124.08, "text": "So we present three major benchmarks in the area of finance predominantly."}, {"id": "s198", "start": 1124.08, "end": 1127.12, "text": "And so this is GDP valer toolbench and Apex agents."}, {"id": "s199", "start": 1127.12, "end": 1129.039, "text": "There's a couple of notable issues here."}, {"id": "s200", "start": 1129.039, "end": 1141.2, "text": "First, if you look at the average human hours per task, based on what Meter has defined for a lot of the leading frontier models, a lot of these different average human hours per task fall far below that and so they wouldn't actually be considered long horizon tasks."}, {"id": "s201", "start": 1141.2, "end": 1150.799, "text": "The second notable issue here, right, is that we see that these benchmarks are already reasonably saturated and we think this is a downstream effect of the average human hours per task."}, {"id": "s202", "start": 1150.799, "end": 1153.44, "text": "So, it's really important to look at the metrics that are being used here."}, {"id": "s203", "start": 1153.44, "end": 1164.64, "text": "If you look at, you know, the Apex agents IB section of this benchmark that they put out, pass at one effectively means that for like 57% of cases, the tasks are 100% solved."}, {"id": "s204", "start": 1164.64, "end": 1170.96, "text": "That is effectively telling us that like there's a large part of these tasks that models are solving similar to what we've seen already."}, {"id": "s205", "start": 1170.96, "end": 1174.559, "text": "But I think a third key important part here is the breath."}, {"id": "s206", "start": 1174.559, "end": 1181.44, "text": "For each of these different uh benchmarks, particularly GDP val, they have a very narrow set of Excel tasks that they consider for finance."}, {"id": "s207", "start": 1181.44, "end": 1184.16, "text": "And for Apex agents, they're largely focused on IB."}, {"id": "s208", "start": 1184.16, "end": 1193.039, "text": "What this means is that a lot of these more important areas for learnability like, you know, credit, debt, risk in the domain of finance don't really get covered."}, {"id": "s209", "start": 1193.039, "end": 1199.12, "text": "And then I think lastly, I'll I'll I'll note there the reward signal as Gver mentioned is really important."}, {"id": "s210", "start": 1199.12, "end": 1209.12, "text": "And in regards to the reward signal here, we'll we'll notice that there's like really, you know, if you look at if you look at what you need for a rubric, you need very granular,"}, {"id": "s211", "start": 1209.12, "end": 1210.559, "text": "detailed reward signal."}, {"id": "s212", "start": 1210.559, "end": 1217.52, "text": "You need, you know, we we have 20 different subriteria and 10 different subriteria per criteria."}, {"id": "s213", "start": 1217.52, "end": 1226.64, "text": "So, I think there's a lot of room that's left when you read these benchmarks into how granular reward signal they're giving, which is really important for being able to go ahead and train your models."}, {"id": "s214", "start": 1226.64, "end": 1230.4, "text": "With that, I think I wanted to round off with a couple of stats about the data we produced."}, {"id": "s215", "start": 1230.4, "end": 1233.2, "text": "Here we, you know, you can look at some statistics for our finance data."}, {"id": "s216", "start": 1233.2, "end": 1238.4, "text": "We can see that the human time to complete one task on average is 15 hours over a 50 task sample set."}, {"id": "s217", "start": 1238.4, "end": 1241.679, "text": "Furthermore, it takes models a pretty long time to work through these tasks."}, {"id": "s218", "start": 1241.679, "end": 1247.2, "text": "And after all of that, across all the domains we care about within finance, for example, they still struggle significantly."}, {"id": "s219", "start": 1247.2, "end": 1252.72, "text": "And so here we provide mean five notably different than, you know, all of these previous scores uh we see here."}, {"id": "s220", "start": 1252.72, "end": 1256.64, "text": "So, thanks for for taking the time to talk with us today."}, {"id": "s221", "start": 1256.64, "end": 1258.88, "text": "Thank you."}]}, {"id": "2bvtay8wGYI", "title": "Scaling to Long Horizons — Ross Taylor & Chengxi Taylor, General Reasoning", "channel": "AI Engineer", "duration": 1087, "upload_date": null, "url": "https://www.youtube.com/watch?v=2bvtay8wGYI", "api": "/api/talks/2bvtay8wGYI.json", "summary_url": "/#2bvtay8wGYI", "transcript": {"html": "/transcripts/2bvtay8wGYI.html", "txt": "/transcripts/2bvtay8wGYI.txt", "vtt": "/transcripts/2bvtay8wGYI.vtt"}, "sentences": [{"id": "s1", "start": 12.48, "end": 15.32, "text": "Uh so this talk is called scaling to long horizons."}, {"id": "s2", "start": 15.32, "end": 16.0, "text": "My name is Ross."}, {"id": "s3", "start": 16.0, "end": 17.68, "text": "Uh I'm the CEO of GR."}, {"id": "s4", "start": 17.68, "end": 20.32, "text": "We're a London-based reinforcement learning company."}, {"id": "s5", "start": 20.32, "end": 27.24, "text": "Uh before GR, I was the reasoning lead at Meta AI working on Llamas, uh Galactica, lots of other models back in the day."}, {"id": "s6", "start": 27.24, "end": 30.56, "text": "I'm joined by Chengxi, uh co-founder and president of GR."}, {"id": "s7", "start": 30.56, "end": 41.2, "text": "Uh and yeah, hit today we're going to talk about algorithms, environments, compute, all the things you need to do to get agents scaling uh to kind of long with tasks."}, {"id": "s8", "start": 41.24, "end": 42.84, "text": "So we're going to have two parts of this talk today."}, {"id": "s9", "start": 42.84, "end": 52.08, "text": "I'm going to first of all start with a personal perspective about, you know, the early days, the golden age of language modeling in between like maybe 2020 and 2023."}, {"id": "s10", "start": 52.08, "end": 56.72, "text": "Uh I'll talk about, like I said, all these models and some of our early reinforcement learning efforts for LLMs."}, {"id": "s11", "start": 56.72, "end": 60.56, "text": "And then Chengxi is going to talk about, you know, what's ahead, you know, what the next frontiers."}, {"id": "s12", "start": 60.56, "end": 66.16, "text": "And yeah, that's going to be a really talk with a lot of alpha, so I'd encourage you to stick around for that."}, {"id": "s13", "start": 66.16, "end": 67.64, "text": "So the journey so far."}, {"id": "s14", "start": 67.64, "end": 70.2, "text": "So my journey started here."}, {"id": "s15", "start": 70.2, "end": 72.88, "text": "Um so this was the Papers With Code team."}, {"id": "s16", "start": 72.88, "end": 75.36, "text": "I'm sure many of you used Papers With Code back in the day."}, {"id": "s17", "start": 75.36, "end": 78.16, "text": "So we were a London-based startup 2019."}, {"id": "s18", "start": 78.16, "end": 80.36, "text": "Uh we were acquired by Meta later that year."}, {"id": "s19", "start": 80.36, "end": 83.68, "text": "And then we had a crazy transition within Meta to do research."}, {"id": "s20", "start": 83.68, "end": 86.28, "text": "Um so we did, like I said, Galactica."}, {"id": "s21", "start": 86.28, "end": 94.56, "text": "Then after ChatGPT came out, we started the post-training for Llama 2, Llama 3. So all the great work you uh saw there was folks in this room."}, {"id": "s22", "start": 94.56, "end": 97.08, "text": "And lots of other interesting stuff that never got published as well."}, {"id": "s23", "start": 97.08, "end": 99.2, "text": "Uh reasoning Llama and lots of other things."}, {"id": "s24", "start": 99.2, "end": 104.4, "text": "Um so yeah, this this small team I'd like to think like the open weight kind of revolution started in this room."}, {"id": "s25", "start": 104.4, "end": 114.75999999999999, "text": "And you know, it really like hit home this idea to me that kind of small focused teams, like even in like the age of scaling, can do amazing things if people are aligned."}, {"id": "s26", "start": 114.96000000000001, "end": 119.03999999999999, "text": "Now for me, uh things got particularly crazy in 2022."}, {"id": "s27", "start": 119.03999999999999, "end": 120.56, "text": "Uh so let me tell you a story."}, {"id": "s28", "start": 120.56, "end": 130.36, "text": "Um the media perception is that ChatGPT came out of nowhere, you know, shocked the world, and that's how kind of the modern AI wave started."}, {"id": "s29", "start": 130.36, "end": 138.959, "text": "But, you know, I have a different personal perspective on this because 2 weeks before ChatGPT came along, there was another language model called Galactica."}, {"id": "s30", "start": 138.959, "end": 140.84, "text": "So let's talk about Galactica."}, {"id": "s31", "start": 140.84, "end": 145.48, "text": "Galactica and, you know, ChatGPT, you know, they were both, you know, in some respects quite similar."}, {"id": "s32", "start": 145.48, "end": 147.92000000000002, "text": "They're both based on pretty good base models."}, {"id": "s33", "start": 147.92000000000002, "end": 153.24, "text": "Galactica itself was a base model, and then ChatGPT was based on GPT-3.5."}, {"id": "s34", "start": 153.24, "end": 155.0, "text": "But there was a clear difference in outcomes."}, {"id": "s35", "start": 155.0, "end": 159.0, "text": "So Galactica at the time shipped with this slight base model demo."}, {"id": "s36", "start": 159.0, "end": 162.56, "text": "And as you guys know now, like base models, they come with a lot of quirks."}, {"id": "s37", "start": 162.56, "end": 163.92000000000002, "text": "You know, they hallucinate."}, {"id": "s38", "start": 163.92000000000002, "end": 167.36, "text": "You prompt them to do, you know, silly things, they would do silly things."}, {"id": "s39", "start": 167.36, "end": 174.07999999999998, "text": "Whereas ChatGPT wasn't just a base model, but had this like crucial reinforcement learning from human feedback pipeline."}, {"id": "s40", "start": 174.07999999999998, "end": 178.32, "text": "And this was the key thing that made LLMs like really products for the first time."}, {"id": "s41", "start": 178.32, "end": 185.68, "text": "So I like to think in a weird kind of way, this is like the first like kind of natural experiment showing you that kind of RL like provides value, right?"}, {"id": "s42", "start": 185.68, "end": 191.8, "text": "Uh and to my misfortune, it was like a very personal like kind of a natural experiment and you know, Galactica blew up."}, {"id": "s43", "start": 191.8, "end": 193.6, "text": "Uh but that's like a good like kind of lesson there."}, {"id": "s44", "start": 193.6, "end": 195.76, "text": "A good base model is not enough."}, {"id": "s45", "start": 195.76, "end": 198.64, "text": "So I took that lesson quite early on."}, {"id": "s46", "start": 198.64, "end": 201.56, "text": "So like I said, RLHF made LLMs products."}, {"id": "s47", "start": 201.56, "end": 207.32, "text": "They were the thing that kind of made LLMs cross the Rubicon into something that wasn't just a toy, but used by now billions of people."}, {"id": "s48", "start": 207.32, "end": 209.92000000000002, "text": "But you didn't have to wait until ChatGPT to see this."}, {"id": "s49", "start": 209.92000000000002, "end": 214.92000000000002, "text": "Like even at the time, like InstructGPT in 2022 had these pretty stunning results."}, {"id": "s50", "start": 214.92000000000002, "end": 220.56, "text": "Like a 1 billion parameter model with RLHF was outperforming 175 billion models."}, {"id": "s51", "start": 220.56, "end": 224.88, "text": "So two orders of magnitude fewer parameters, but getting better results."}, {"id": "s52", "start": 224.88, "end": 225.8, "text": "So that was astonishing."}, {"id": "s53", "start": 225.8, "end": 232.76, "text": "So if you were paying attention closely, you know, maybe we should have been as well, but we were focused on a, you know, bloody base model, which is hard work in 2022."}, {"id": "s54", "start": 232.76, "end": 237.56, "text": "But that shows you how you know important even basic RL is."}, {"id": "s55", "start": 237.56, "end": 239.48, "text": "And the Galactica demo itself, I mean, it set off a storm."}, {"id": "s56", "start": 239.48, "end": 241.96, "text": "So, ancient history now, but we put out a demo."}, {"id": "s57", "start": 241.96, "end": 245.24, "text": "We let people play around with it um because it's kind of cool."}, {"id": "s58", "start": 245.24, "end": 247.04, "text": "And at the time people got scared."}, {"id": "s59", "start": 247.04, "end": 256.2, "text": "So, it was like, you know, like I said, you prompt it on like a research paper on Dyson spheres or a report on the benefits of eating crushed glass and people are like, \"Oh my god.\""}, {"id": "s60", "start": 256.2, "end": 258.799, "text": "Um so, that was the state of things in 2022."}, {"id": "s61", "start": 258.799, "end": 262.2, "text": "And yeah, I'll be honest, the meta association didn't you know help us either."}, {"id": "s62", "start": 262.2, "end": 268.16, "text": "Um and yeah, the tragic story in a way was a lot of the, you know, novel work was maybe overshadowed."}, {"id": "s63", "start": 268.32, "end": 272.72, "text": "But you know, the paradox of this whole thing is that at the time Galactica was actually a bloody good model."}, {"id": "s64", "start": 272.72, "end": 278.36, "text": "Um like it outperformed Palm, Chinchilla, GPT-3.5 with a lot less compute in scientific domains."}, {"id": "s65", "start": 278.36, "end": 279.56, "text": "It was state-of-the-art."}, {"id": "s66", "start": 279.56, "end": 282.32, "text": "So again, that also shows you how powerful RL is."}, {"id": "s67", "start": 282.32, "end": 285.28, "text": "You can have a sota base model, but that is not enough."}, {"id": "s68", "start": 285.28, "end": 289.04, "text": "Um so, here you see on like a math who's kind of beating Chinchilla."}, {"id": "s69", "start": 289.04, "end": 294.88, "text": "Uh kind of latex equations, you know, science, you know, it was getting around 68% compared to GPT-3.5, 49%."}, {"id": "s70", "start": 294.88, "end": 296.68, "text": "So, crushing there."}, {"id": "s71", "start": 296.68, "end": 297.84000000000003, "text": "And chain of thought as well."}, {"id": "s72", "start": 297.84000000000003, "end": 301.64, "text": "So, you know, a Palm at the time which was a Google Brain model, 540 billion."}, {"id": "s73", "start": 301.64, "end": 305.04, "text": "You know, that's 30 billion in Galactica was getting like 36 versus 19%."}, {"id": "s74", "start": 305.04, "end": 307.6, "text": "So, double the performance, order of magnitude less results."}, {"id": "s75", "start": 307.6, "end": 312.2, "text": "So, that again reinforces base good base models not enough."}, {"id": "s76", "start": 312.28, "end": 314.64, "text": "But it introduced some key ideas which I think are very important."}, {"id": "s77", "start": 314.64, "end": 317.96, "text": "I mean, Galactica was the first LM to really crack data efficiency."}, {"id": "s78", "start": 317.96, "end": 323.36, "text": "105 billion uh token corpus compared to you know, trillion uh tokens in Chinchilla."}, {"id": "s79", "start": 323.36, "end": 327.44, "text": "And it was a really contrarian at the time cuz you know, at the time everyone was like, \"Okay, we just need more tokens.\""}, {"id": "s80", "start": 327.44, "end": 328.84, "text": "And Galactica said, \"No."}, {"id": "s81", "start": 328.84, "end": 331.96, "text": "High quality, you know, curated data sets really matter.\""}, {"id": "s82", "start": 331.96, "end": 334.56, "text": "And that was a real driver of those results you just saw."}, {"id": "s83", "start": 334.56, "end": 338.36, "text": "And it was also like the first major LM to really crack multi-epoch training."}, {"id": "s84", "start": 338.36, "end": 342.36, "text": "It sounds ridiculous now, but at the time the consensus was you don't do more than an epoch."}, {"id": "s85", "start": 342.36, "end": 347.84000000000003, "text": "Um but this kind of rule of thumb, you may have heard of it like four uh epochs repeated data, that was formalized later."}, {"id": "s86", "start": 347.84000000000003, "end": 351.08, "text": "but Galactica was the first like real empirical result for that."}, {"id": "s87", "start": 351.08, "end": 354.08, "text": "Now, perhaps more importantly, there's this idea of thinking tokens."}, {"id": "s88", "start": 354.08, "end": 357.24, "text": "And some of you might remember this, but it was like really quite buried within the paper."}, {"id": "s89", "start": 357.24, "end": 359.76, "text": "So, around this time there were like different ideas for reasoning."}, {"id": "s90", "start": 359.76, "end": 361.36, "text": "There was chain of thought, which was one idea."}, {"id": "s91", "start": 361.36, "end": 363.64, "text": "It's where you prompt for like kind of like the steps."}, {"id": "s92", "start": 363.64, "end": 368.76, "text": "There were scratch pads where you just like put like very like numerical kind of intermediate steps."}, {"id": "s93", "start": 368.76, "end": 373.68, "text": "But, Galactica was really this first idea which said, \"No, this is an internal working memory process."}, {"id": "s94", "start": 373.68, "end": 375.0, "text": "This is an internal thinking."}, {"id": "s95", "start": 375.0, "end": 379.12, "text": "You should be inside these tags, and you should spend the inference computer before you get to an answer, right?\""}, {"id": "s96", "start": 379.12, "end": 383.08, "text": "So, these are all like quite like pressing ideas."}, {"id": "s97", "start": 383.08, "end": 390.8, "text": "But, you know, Galactica came and went, blew up, and then, you know, we were kind of tasked as a team to kind of spin up the post-training effort for Llama."}, {"id": "s98", "start": 390.8, "end": 394.0, "text": "But, I had like a personal obsession, which was like reasoning."}, {"id": "s99", "start": 394.0, "end": 402.32, "text": "And I had like a really simple idea at the time, which is, \"What if we applied kind of reinforcement learning pressure to this like kind of thinking tags as work?\""}, {"id": "s100", "start": 402.32, "end": 405.919, "text": "Like, what if we just optimize the thing in between the thinking?"}, {"id": "s101", "start": 405.919, "end": 411.15999999999997, "text": "And if that sounds familiar, then this is like kind of what Deep Seek 01 ended up doing 2 years later."}, {"id": "s102", "start": 411.15999999999997, "end": 412.4, "text": "But, there's a key difference."}, {"id": "s103", "start": 412.4, "end": 418.48, "text": "So, at the time we only had Llama 2 base models, terrible mathematics corpus, terrible results on math."}, {"id": "s104", "start": 418.48, "end": 423.44, "text": "And, you know, the context window, you know, we're all like, you know, very context-rich now, 1 million tokens."}, {"id": "s105", "start": 423.44, "end": 425.56, "text": "You know, the back in the day it was 4,000."}, {"id": "s106", "start": 425.56, "end": 427.8, "text": "It wasn't too fun."}, {"id": "s107", "start": 427.8, "end": 431.6, "text": "But, we still had a recipe at the time, and this is unpublished, but it was a really good for the meta."}, {"id": "s108", "start": 431.6, "end": 434.12, "text": "So, RSP was this."}, {"id": "s109", "start": 434.12, "end": 438.52, "text": "Number one, continue pre-training of Llama 2 towards mathematics and science data."}, {"id": "s110", "start": 438.52, "end": 439.44, "text": "So, that's the first thing."}, {"id": "s111", "start": 439.44, "end": 442.68, "text": "Llama 2, math corpus, so let's fix that."}, {"id": "s112", "start": 442.68, "end": 445.8, "text": "Number two, PPO with verifiable rewards."}, {"id": "s113", "start": 445.8, "end": 447.48, "text": "But, notice this isn't GRPO, right?"}, {"id": "s114", "start": 447.48, "end": 451.8, "text": "So, we had a time and a strong outcome reward model to initialize the value model."}, {"id": "s115", "start": 451.8, "end": 454.919, "text": "That was a key thing, lots of data on value models at the time."}, {"id": "s116", "start": 454.919, "end": 459.64, "text": "And internally at the time, this kind of recipe led to state-of-the-art results on math and reasoning."}, {"id": "s117", "start": 459.64, "end": 464.04, "text": "So, we were kind of like, \"Wow, this is like really shows the power of having the right objective.\""}, {"id": "s118", "start": 464.04, "end": 471.0, "text": "But, the really fascinating thing is like we had great results, but we didn't have like inference time scaling."}, {"id": "s119", "start": 471.0, "end": 475.24, "text": "We didn't have this reflective behavior that became like the hallmark of R1 and O1."}, {"id": "s120", "start": 475.24, "end": 478.48, "text": "You know, back weights, you know, back tracking, all this kind of stuff."}, {"id": "s121", "start": 478.48, "end": 480.16, "text": "So, it begs like the question like, \"Why?"}, {"id": "s122", "start": 480.16, "end": 482.92, "text": "Well, why didn't we have that moment?\""}, {"id": "s123", "start": 482.92, "end": 485.08, "text": "And we got an answer around like 2 years later."}, {"id": "s124", "start": 485.08, "end": 491.48, "text": "So, there's a couple of like things going on here, but essentially better base models were the thing that really got RL cooking."}, {"id": "s125", "start": 491.48, "end": 493.8, "text": "And when DeepMind came out, I was kind of shocked at the time."}, {"id": "s126", "start": 493.8, "end": 496.04, "text": "I was like, \"Holy we just like tried the same thing."}, {"id": "s127", "start": 496.04, "end": 496.68, "text": "We didn't have this."}, {"id": "s128", "start": 496.68, "end": 497.72, "text": "What's going on here?\""}, {"id": "s129", "start": 497.72, "end": 503.64, "text": "And in a weird kind of way, the real lesson was it was just like the bitter lesson, like the most purest form of bitter lesson possible."}, {"id": "s130", "start": 503.64, "end": 511.24, "text": "Like, better base models, more RL computes, bigger context windows, and that's all you need for this kind of emergent behavior."}, {"id": "s131", "start": 511.24, "end": 521.56, "text": "It also like says something like quite important about the sociology of like research because the fact that OpenAI had this model, you know, GPT-4 level model before anyone else, it allowed them to see further, right?"}, {"id": "s132", "start": 521.56, "end": 522.84, "text": "So, that's a really interesting point."}, {"id": "s133", "start": 522.84, "end": 529.68, "text": "Like, the the age of scaling means that if you have certain prerequisites in place, you become smarter, you see further, you see more ideas."}, {"id": "s134", "start": 529.68, "end": 532.2, "text": "So, really interesting point."}, {"id": "s135", "start": 532.2, "end": 533.48, "text": "So, this was me in 2024."}, {"id": "s136", "start": 533.48, "end": 537.92, "text": "I was a very sad panda, uh defeated by ChatGPT and O1."}, {"id": "s137", "start": 537.92, "end": 539.52, "text": "But, I wasn't deterred."}, {"id": "s138", "start": 539.52, "end": 545.04, "text": "Um so, I wanted to seek the next wave, and I still was like convinced that kind of reasoning hadn't been solved."}, {"id": "s139", "start": 545.04, "end": 548.48, "text": "So, we started GR uh to take on truly like big tasks."}, {"id": "s140", "start": 548.48, "end": 550.4, "text": "And with that in mind, I'm going to hand over to Chengxi."}, {"id": "s141", "start": 550.4, "end": 553.52, "text": "He's going to talk about what we're kind of thinking about now."}, {"id": "s142", "start": 553.52, "end": 554.12, "text": "Ross."}, {"id": "s143", "start": 554.12, "end": 554.64, "text": "Ross."}, {"id": "s144", "start": 554.64, "end": 556.64, "text": "Ross."}, {"id": "s145", "start": 560.44, "end": 561.2, "text": "Hi, everyone."}, {"id": "s146", "start": 561.2, "end": 570.36, "text": "I'm Chengxi Taylor, co-founder and president of General Intelligence Inc. I'm going to share what it takes to scale to long horizon."}, {"id": "s147", "start": 571.96, "end": 573.88, "text": "First, I want to make it clear."}, {"id": "s148", "start": 573.88, "end": 578.04, "text": "Long horizon task is not just an engineering problem."}, {"id": "s149", "start": 578.04, "end": 580.12, "text": "It is a mindset."}, {"id": "s150", "start": 580.12, "end": 591.2, "text": "If we want to solve humanity's biggest problems, such as cure cancer, solve millennium's prize problem, or go into Mars, we have to be patient."}, {"id": "s151", "start": 591.2, "end": 592.68, "text": "It take time."}, {"id": "s152", "start": 592.68, "end": 600.4, "text": "And if we want AI to move us towards that level impact, we have to think about long horizon."}, {"id": "s153", "start": 602.16, "end": 604.48, "text": "But here's the first problem."}, {"id": "s154", "start": 604.48, "end": 607.04, "text": "We have a scarce context window."}, {"id": "s155", "start": 607.04, "end": 618.68, "text": "If you take Fermat's Last Theorem as example, what it take for the mathematician was over 10 years time of reading paper, writing down thoughts in the scratch pad, or taking a walk"}, {"id": "s156", "start": 618.68, "end": 621.36, "text": "to generate the creative ideas."}, {"id": "s157", "start": 621.36, "end": 626.96, "text": "If we convert to token, that's probably tens of a billions of even hundreds billions."}, {"id": "s158", "start": 626.96, "end": 632.76, "text": "But where we are now, just a 1 million token context window."}, {"id": "s159", "start": 632.76, "end": 635.6, "text": "So one solution is use compaction."}, {"id": "s160", "start": 635.6, "end": 645.08, "text": "So what it essentially does is generate the token until the end of the context window, summarize, and then on top of that generate more tokens."}, {"id": "s161", "start": 645.08, "end": 650.68, "text": "And the beauty of applying RL in the situation is kind of like kill two birds with one stone."}, {"id": "s162", "start": 650.68, "end": 656.0, "text": "You apply RL to the compaction and also the task."}, {"id": "s163", "start": 656.0, "end": 657.64, "text": "But here's the problem."}, {"id": "s164", "start": 657.64, "end": 660.08, "text": "With long horizon, there are three issues."}, {"id": "s165", "start": 660.08, "end": 664.12, "text": "The first is the gradient variance scales with the length."}, {"id": "s166", "start": 664.12, "end": 666.72, "text": "And the second is a sparse reward."}, {"id": "s167", "start": 666.72, "end": 669.72, "text": "And you have this credit assignment problem."}, {"id": "s168", "start": 669.72, "end": 676.96, "text": "And finally, there's also variable length of the trajectory that adds to the problem of optimization."}, {"id": "s169", "start": 677.2, "end": 682.52, "text": "So to solve this issue, we can apply critics, which is the value model."}, {"id": "s170", "start": 682.52, "end": 694.52, "text": "And value model can reduce the variance and also have a couple advantages, such as on the trajectory level that fits compaction very well, and also encourage the batch diversity."}, {"id": "s171", "start": 694.52, "end": 697.12, "text": "And also, I'll talk later on bootstrapping."}, {"id": "s172", "start": 697.12, "end": 700.84, "text": "Basically, get signal before the end of the episode."}, {"id": "s173", "start": 700.84, "end": 712.4, "text": "But, the downside for this is that um it's more complicated than GRPO, and basically, you have to train another value model alongside with the policy model."}, {"id": "s174", "start": 712.64, "end": 722.92, "text": "And there's some tools to help with the context limitations, such as a file system tools, which essentially like a scratchpad for AI to write to the uh reasoning thought."}, {"id": "s175", "start": 722.92, "end": 728.88, "text": "And self-search tools, which allows agent to search over the previous trajectory."}, {"id": "s176", "start": 728.88, "end": 731.12, "text": "And then you have archive tools."}, {"id": "s177", "start": 731.12, "end": 735.48, "text": "In the case like auto research, you can build upon your previous result."}, {"id": "s178", "start": 735.48, "end": 736.8, "text": "But, we have to be careful."}, {"id": "s179", "start": 736.8, "end": 743.88, "text": "In other scenario, you don't want an AI to cheat by just to grab the previous answer without thinking."}, {"id": "s180", "start": 744.32, "end": 751.04, "text": "So, how good are the current model on this long horizon task?"}, {"id": "s181", "start": 751.04, "end": 759.24, "text": "In the general reasoning, we construct the benchmark called a Kelly bench, where we're actually featured in the front page of the Financial Times."}, {"id": "s182", "start": 759.24, "end": 763.68, "text": "Kind of a caught us off guard how much the mainstream have interest in this."}, {"id": "s183", "start": 763.68, "end": 774.36, "text": "So, basically, what we did is that we allowed the agents to build machine learning models to um trade in the football matches over 1-year horizon."}, {"id": "s184", "start": 774.36, "end": 778.68, "text": "In this case, it's a Premier League, if you're interested in football."}, {"id": "s185", "start": 778.68, "end": 786.4, "text": "And we're so fascinated by this because there's a real money to be made, and if it was a successful, couldn't make a billions."}, {"id": "s186", "start": 786.4, "end": 788.96, "text": "There's a whole industry on sports betting."}, {"id": "s187", "start": 788.96, "end": 795.48, "text": "And unlike things like a cargo competition, this has a real-world implication."}, {"id": "s188", "start": 795.76, "end": 798.4, "text": "But, here's the result."}, {"id": "s189", "start": 798.4, "end": 803.92, "text": "As you can see, we gave all the frontier models a 100K to start."}, {"id": "s190", "start": 803.92, "end": 808.12, "text": "All of them lost her Sad."}, {"id": "s191", "start": 808.12, "end": 810.96, "text": "And that captured the public's imagination."}, {"id": "s192", "start": 810.96, "end": 814.48, "text": "Oh, AI is not as great as they thought."}, {"id": "s193", "start": 814.48, "end": 817.8, "text": "And why are models so bad at long horizon?"}, {"id": "s194", "start": 817.8, "end": 825.0, "text": "First, I believe now the AI industry is a little bit too biased towards coding and procedure task."}, {"id": "s195", "start": 825.0, "end": 831.16, "text": "What I mean is that the current task is a most formulated like do this and fix that."}, {"id": "s196", "start": 831.16, "end": 834.32, "text": "Normally that limits the solution like one or two."}, {"id": "s197", "start": 834.32, "end": 837.76, "text": "There isn't just too much space for creativity."}, {"id": "s198", "start": 837.76, "end": 841.84, "text": "And second of all, not enough focus on open-ended task."}, {"id": "s199", "start": 841.84, "end": 850.16, "text": "We live in the real world with a lot of a complexity, uncertainty, and that's not fully captured by the current benchmark."}, {"id": "s200", "start": 850.16, "end": 853.92, "text": "And also, there isn't enough simulation of the real world."}, {"id": "s201", "start": 853.92, "end": 856.16, "text": "We live in the world that there are other players."}, {"id": "s202", "start": 856.16, "end": 863.6, "text": "Like in today's conference room, there are other real people who have a different thought, a different games than you have in your mind."}, {"id": "s203", "start": 863.6, "end": 867.44, "text": "That's the complexity that's not fully captured."}, {"id": "s204", "start": 868.36, "end": 873.88, "text": "And another thing I want to talk about is the long horizon impact on compute."}, {"id": "s205", "start": 873.88, "end": 877.6, "text": "We know that GPUs are scarce and precious resources."}, {"id": "s206", "start": 877.6, "end": 886.16, "text": "And in this case of a long horizon reasoning, you have to be careful about how to optimize your use between training and inference."}, {"id": "s207", "start": 886.16, "end": 890.12, "text": "And pipeline RL is a quite popular technique nowadays."}, {"id": "s208", "start": 890.12, "end": 896.64, "text": "So basically, it's a trade-off between off-policy and the GPU utilization."}, {"id": "s209", "start": 896.64, "end": 902.28, "text": "So traditionally, you let inference run towards the end and then you start to train the model."}, {"id": "s210", "start": 902.28, "end": 907.12, "text": "But in the case of long horizon, you have to wait until the inference finish."}, {"id": "s211", "start": 907.12, "end": 917.2, "text": "What the pipeline RL does is that you let the sequence to be generated and you start to train the model while there's a still more sequences being generated."}, {"id": "s212", "start": 917.2, "end": 919.52, "text": "And you see this created off-policy."}, {"id": "s213", "start": 919.52, "end": 924.76, "text": "But from the our experience, normally off-policy up to eight steps is okay."}, {"id": "s214", "start": 924.76, "end": 931.32, "text": "So, essentially, we made a trade-off between the off-policy and the GPU utilization."}, {"id": "s215", "start": 931.44, "end": 933.2, "text": "But, here comes the issue."}, {"id": "s216", "start": 933.2, "end": 939.48, "text": "As we the long horizon indicates, sometimes the inference would take weeks or even more."}, {"id": "s217", "start": 939.48, "end": 945.96, "text": "In that case, inevitably, it will goes beyond the constraint of the eight steps of our policy."}, {"id": "s218", "start": 945.96, "end": 950.8, "text": "So, your GPU have just to sit there idle and wait for it to finish."}, {"id": "s219", "start": 950.8, "end": 957.4, "text": "And if you don't want to wait, as I mentioned before, applying the value model allows you to bootstrap."}, {"id": "s220", "start": 957.4, "end": 962.36, "text": "What it means is that before the end of the episode, you generate expectation."}, {"id": "s221", "start": 962.36, "end": 964.56, "text": "It's like a dopamine in human brain."}, {"id": "s222", "start": 964.56, "end": 966.92, "text": "And that allows you to train the model."}, {"id": "s223", "start": 966.92, "end": 968.76, "text": "But, here's another trade-off."}, {"id": "s224", "start": 968.76, "end": 973.44, "text": "While you utilize the GPU fully, you introduce the value model bias."}, {"id": "s225", "start": 973.44, "end": 977.8, "text": "So, there's always a bit of trade-off in those solutions."}, {"id": "s226", "start": 977.92, "end": 985.4, "text": "And I want to also mention that in the long horizon, infrastructure is important, especially for the environment."}, {"id": "s227", "start": 985.4, "end": 989.44, "text": "And Open Review was a product is a platform by General Reasoning."}, {"id": "s228", "start": 989.44, "end": 991.28, "text": "If you're interested, you can check it out."}, {"id": "s229", "start": 991.28, "end": 993.08, "text": "openreview.ai."}, {"id": "s230", "start": 993.08, "end": 1000.88, "text": "So, it's a place where host over 350 environments and with a single API endpoint."}, {"id": "s231", "start": 1000.88, "end": 1007.8389999999999, "text": "And we use this for our internal RL and also some frontier labs and new labs are using this."}, {"id": "s232", "start": 1008.76, "end": 1018.0, "text": "So, to summarize both Ross and my speech, it has been a long journey as long horizon indicate."}, {"id": "s233", "start": 1018.0, "end": 1026.04, "text": "We as a team have seen the paradigms in AI reasoning on pre-training and agents in the past few years."}, {"id": "s234", "start": 1026.04, "end": 1030.8, "text": "But, looking ahead, what makes us really excited is the long horizon."}, {"id": "s235", "start": 1030.8, "end": 1039.28, "text": "And it requires us to think, have a new thinking on the algorithm, environments, and compute."}, {"id": "s236", "start": 1039.28, "end": 1051.84, "text": "There are a lot of challenges and trade-offs, but we find it's really exciting to take on this journey because, as I mentioned in the very beginning, long horizon is not just engineering problem."}, {"id": "s237", "start": 1051.84, "end": 1059.56, "text": "It is a mindset, and if we really are ambitious to solve humanity's biggest problems, this is the journey for everyone."}, {"id": "s238", "start": 1059.56, "end": 1062.12, "text": "And that's also the mission for general reasoning."}, {"id": "s239", "start": 1062.12, "end": 1065.0, "text": "So, if you are interested, follow us."}, {"id": "s240", "start": 1065.0, "end": 1068.56, "text": "General Reasoning, we're London-based AI research company."}, {"id": "s241", "start": 1068.56, "end": 1070.76, "text": "Thank you."}, {"id": "s242", "start": 1084.037, "end": 1086.037, "text": "[music]"}]}, {"id": "32nrHU6zHU8", "title": "Agents Are Where Microservices Were in 2015 — Roberto Milev & Uday Kanagala, Navan", "channel": "AI Engineer", "duration": 1168, "upload_date": null, "url": "https://www.youtube.com/watch?v=32nrHU6zHU8", "api": "/api/talks/32nrHU6zHU8.json", "summary_url": "/#32nrHU6zHU8", "transcript": {"html": "/transcripts/32nrHU6zHU8.html", "txt": "/transcripts/32nrHU6zHU8.txt", "vtt": "/transcripts/32nrHU6zHU8.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.68, "end": 14.12, "text": "Right."}, {"id": "s3", "start": 14.12, "end": 15.4, "text": "Hello, everybody."}, {"id": "s4", "start": 15.4, "end": 17.2, "text": "Um welcome to our talk."}, {"id": "s5", "start": 17.2, "end": 18.68, "text": "My name is Roberto Milev."}, {"id": "s6", "start": 18.68, "end": 21.32, "text": "I am the chief architect at Navan."}, {"id": "s7", "start": 21.32, "end": 25.36, "text": "And I have Uday here, who's also part of the architecture team."}, {"id": "s8", "start": 25.36, "end": 30.16, "text": "Uh Navan is a travel and expense management company."}, {"id": "s9", "start": 30.16, "end": 37.92, "text": "And we'll share with you some of our learnings around how you run an AI and what have we uh discovered."}, {"id": "s10", "start": 37.92, "end": 47.32, "text": "So, uh if you've been long enough um in this industry, you remember that over time there are a few paradigm shifts."}, {"id": "s11", "start": 47.32, "end": 53.28, "text": "And we all tend to jump on a bandwagon and try to uh kind of do things, all right?"}, {"id": "s12", "start": 53.28, "end": 58.32, "text": "Last time was when we all jumped on the microservices bandwagon."}, {"id": "s13", "start": 58.32, "end": 64.48, "text": "And out of that, a lot of good things came out, like container orchestration, Kubernetes."}, {"id": "s14", "start": 64.48, "end": 70.96000000000001, "text": "Then we had service mesh, uh circuit breakers, all of those good things."}, {"id": "s15", "start": 70.96000000000001, "end": 72.56, "text": "But it didn't happen overnight."}, {"id": "s16", "start": 72.56, "end": 74.56, "text": "Like it took a long time."}, {"id": "s17", "start": 74.56, "end": 78.16, "text": "It took some time for us to learn how to do these things."}, {"id": "s18", "start": 78.16, "end": 85.16, "text": "So, one of the quotes from there is, \"If you can't build a well-structured monolith, why even try to build microservices?\""}, {"id": "s19", "start": 85.16, "end": 97.6, "text": "Uh it kind of translates today because if you can't build a single agentic loop, why go in and try to build a multi-agent orchestrated system?"}, {"id": "s20", "start": 97.88, "end": 104.28, "text": "So, over time, just like previously, uh a reference architecture is emerging."}, {"id": "s21", "start": 104.28, "end": 110.36, "text": "So, we have learned a few things by by doing in production."}, {"id": "s22", "start": 110.36, "end": 115.28, "text": "We have a lot of agents, a lot of tokens per day being used."}, {"id": "s23", "start": 115.28, "end": 127.92, "text": "And as I said, there are few layers that have standardized, that have crystallized around what do we need to run agentic flows reliably in production."}, {"id": "s24", "start": 127.92, "end": 136.04, "text": "Runtime memory, context management, all around operational cross-cutting concerns, and around orchestration as well."}, {"id": "s25", "start": 136.04, "end": 146.44, "text": "So, today we'll go over some of these layers, all of these layers actually, and we will show kind of where the industry is, what we have done, what we have learned,"}, {"id": "s26", "start": 146.44, "end": 148.56, "text": "and and so on."}, {"id": "s27", "start": 148.56, "end": 160.68, "text": "So, starting at the runtime layer, we've talked a lot and we've built a lot of services in order to scale them statelessly before."}, {"id": "s28", "start": 160.68, "end": 164.88, "text": "And now we're in a new world where, you know, agents are stateful by nature."}, {"id": "s29", "start": 164.88, "end": 168.44, "text": "They need to have persistent sessions."}, {"id": "s30", "start": 168.44, "end": 170.84, "text": "They need to have isolation."}, {"id": "s31", "start": 170.84, "end": 177.56, "text": "Their life cycle is different than the life cycle of a traditional API service, and so on."}, {"id": "s32", "start": 177.56, "end": 183.68, "text": "So, the cloud providers have jumped in and try to fill this gap."}, {"id": "s33", "start": 183.68, "end": 193.16, "text": "Um, you know, AWS, GCP, Azure, they all have a some incarnation of a agentic runtime."}, {"id": "s34", "start": 193.16, "end": 203.72, "text": "If you scan the QR code for this slide and for the following slides, you will see a comparison of some of the features and how different cloud providers try to try to"}, {"id": "s35", "start": 203.72, "end": 205.12, "text": "approach this."}, {"id": "s36", "start": 205.12, "end": 208.8, "text": "At Nvono, we run everything on AWS."}, {"id": "s37", "start": 208.8, "end": 211.28, "text": "AWS has an agent core runtime."}, {"id": "s38", "start": 211.28, "end": 221.48, "text": "We heavily use that, but we have filled some gaps around that, like the session persistence and rehydration is something that we have built."}, {"id": "s39", "start": 221.48, "end": 227.2, "text": "And we also run a bunch of other bunch of SDKs for writing agents."}, {"id": "s40", "start": 227.2, "end": 237.0, "text": "And part of these runtimes is typically they are framework agnostic, although they all prefer their native framework in a way."}, {"id": "s41", "start": 237.64, "end": 243.12, "text": "Um the next layer in the stack is around memory."}, {"id": "s42", "start": 243.12, "end": 245.92, "text": "Um we started with rag."}, {"id": "s43", "start": 245.92, "end": 248.72, "text": "Rag was kind of a big thing for a while."}, {"id": "s44", "start": 248.72, "end": 258.12, "text": "We were kind of driven to that out of necessity because you cannot fit an unlimited amount of context into an agent."}, {"id": "s45", "start": 258.12, "end": 272.4, "text": "And over time um all of these cloud providers and the industry has implemented a pipeline where memory is kind of automatically generated by following a workflow of ingestion, extraction,"}, {"id": "s46", "start": 272.4, "end": 274.919, "text": "and then consolidation and retrieval."}, {"id": "s47", "start": 274.919, "end": 283.6, "text": "And there are parts of rag that are built in things like a long-term memory that inherently has some semantic characteristics."}, {"id": "s48", "start": 283.6, "end": 291.64, "text": "But memory is built up over time from short-term conversational memory to long-term memory that you kind of manage yourself."}, {"id": "s49", "start": 291.64, "end": 297.76, "text": "Uh then episodic memories about kind of instances that worked well and didn't work well."}, {"id": "s50", "start": 297.76, "end": 298.88, "text": "Uh and so on."}, {"id": "s51", "start": 298.88, "end": 306.36, "text": "We at Navan again being a AWS shop, um utilize their agent core memory."}, {"id": "s52", "start": 306.36, "end": 313.64, "text": "But we are also kind of doing it in a way that uh matches matches our our use case."}, {"id": "s53", "start": 314.0, "end": 316.919, "text": "And then the next thing is context management."}, {"id": "s54", "start": 316.919, "end": 318.04, "text": "You know, it's a hot topic."}, {"id": "s55", "start": 318.04, "end": 320.44, "text": "It was a hot topic and it's still a hot topic."}, {"id": "s56", "start": 320.44, "end": 331.0, "text": "Context windows are growing bigger, but there's never enough context or if there is too much context again, agents struggle with that cuz you lose focus and so on."}, {"id": "s57", "start": 331.0, "end": 338.72, "text": "Um what we found working is that uh focusing on skills as a unit of context."}, {"id": "s58", "start": 338.72, "end": 340.8, "text": "And I'll explain what I mean by that."}, {"id": "s59", "start": 340.8, "end": 349.6, "text": "Uh we look at skills as both having context, meaning instructions and uh setup about a certain domain or a task."}, {"id": "s60", "start": 349.6, "end": 356.6, "text": "And there's also the the second part of the skill, which is the tool execution and you know, the agentic part."}, {"id": "s61", "start": 356.6, "end": 371.48, "text": "And we compose context dynamically out of skills that we use as units of work that are pluggable, that we can test independently, and that we can reuse."}, {"id": "s62", "start": 371.48, "end": 379.32, "text": "So, for example, when we are we have an agent, we have skills that are that are specific to a domain."}, {"id": "s63", "start": 379.32, "end": 381.56, "text": "And based on that, we compose them."}, {"id": "s64", "start": 381.56, "end": 394.76, "text": "And we rely on the you know, the progressive disclosure, which is a feature of the skills itself to start with a limited scope of context and then expand by included"}, {"id": "s65", "start": 394.76, "end": 399.2, "text": "metadata further down the the line."}, {"id": "s66", "start": 399.2, "end": 404.919, "text": "I'll hand it over to Uday Uday now to kind of walk us through the rest of this."}, {"id": "s67", "start": 404.919, "end": 406.6, "text": "Thanks, Rudra."}, {"id": "s68", "start": 406.6, "end": 407.36, "text": "All right."}, {"id": "s69", "start": 407.36, "end": 420.4, "text": "Can I have a quick show of hands here who have who had built an agent uh which failed halfway through multi 20 20 step or 30 step process and be able to figure out quickly"}, {"id": "s70", "start": 420.4, "end": 423.8, "text": "or reason about why the agent failed."}, {"id": "s71", "start": 425.28, "end": 431.48, "text": "So, again, logs we've generally been traditionally with microservices, we all are familiar with logs."}, {"id": "s72", "start": 431.48, "end": 433.96, "text": "There's logs out there and then we go check out the logs."}, {"id": "s73", "start": 433.96, "end": 437.8, "text": "But this changes everything the moment we switch to agents."}, {"id": "s74", "start": 437.8, "end": 440.44, "text": "Agents output a lot of thinking."}, {"id": "s75", "start": 440.44, "end": 442.04, "text": "There's too much to consume."}, {"id": "s76", "start": 442.04, "end": 443.76, "text": "So, that's not the right way to do it, right?"}, {"id": "s77", "start": 443.76, "end": 448.72, "text": "So, traditionally, that was the way, but our thought has to be changed right now."}, {"id": "s78", "start": 448.72, "end": 460.24, "text": "In the in the way they Claude as an example, when we take Claude as an example for an agent, there is hooks and we can intercept everything that Claude as an agent that does at that level."}, {"id": "s79", "start": 460.24, "end": 463.15999999999997, "text": "So, what kind of tool it calls, right?"}, {"id": "s80", "start": 463.15999999999997, "end": 464.56, "text": "What kind of decision it's making?"}, {"id": "s81", "start": 464.56, "end": 474.8, "text": "So, before pre-tool and post-tool call or a pre-decision or a post-decision, so all of that are a point point in time for us to intercept and make a decision"}, {"id": "s82", "start": 474.8, "end": 481.88, "text": "and either block to do a blocking operation or to log in metric or emit a metric, right?"}, {"id": "s83", "start": 481.88, "end": 486.84, "text": "So, this is a critical place where we can emit auto traces."}, {"id": "s84", "start": 486.84, "end": 500.52, "text": "At Nvone, we use one of our provider to interest to emit these auto traces and through these traces we should be able to figure out the spans, the traces and at what point in time where the agent is stuck,"}, {"id": "s85", "start": 500.52, "end": 506.24, "text": "which gives much more confidence into how we operate and build the agent."}, {"id": "s86", "start": 506.24, "end": 509.52, "text": "This is day-to-day operational challenge."}, {"id": "s87", "start": 509.52, "end": 517.64, "text": "Building agent these days there's so many frameworks, but how do you navigate building and operating an agent later is primary concern."}, {"id": "s88", "start": 517.64, "end": 530.64, "text": "Um And moreover, the reasoning chain, the thought process and critical signals that we emit here as part of the trace captures, we emit a few primary signals here."}, {"id": "s89", "start": 530.64, "end": 538.16, "text": "What is the current goal the agent is going through, the reasons behind its operations and the belief status and the tool calls that it's making."}, {"id": "s90", "start": 538.16, "end": 540.72, "text": "So, this kind of gives us a judgment pointers."}, {"id": "s91", "start": 540.72, "end": 543.12, "text": "Um Um in the traces."}, {"id": "s92", "start": 543.12, "end": 552.0, "text": "And when we make when the agent makes a decision, there is a confidence score, how confident it is when it makes the judgment, right?"}, {"id": "s93", "start": 552.0, "end": 558.36, "text": "So, whether there are multiple paths that it leads to this choice or whether this is an inferred answer."}, {"id": "s94", "start": 558.36, "end": 562.96, "text": "So, basically these are signals that gives us confidence later to review."}, {"id": "s95", "start": 562.96, "end": 570.8, "text": "If this is an inferred answer, there could be a human in the loop to guide through and tweak the agent to perform a little better."}, {"id": "s96", "start": 572.48, "end": 583.64, "text": "Again, um Can I have a raise of hands again to see how confident are you like 100% confident in testing pipelines with your agents?"}, {"id": "s97", "start": 583.72, "end": 583.96, "text": "Right."}, {"id": "s98", "start": 583.96, "end": 589.24, "text": "So, this is one of the other um critical aspect today."}, {"id": "s99", "start": 589.24, "end": 593.08, "text": "Um Because agents are non-deterministic."}, {"id": "s100", "start": 593.08, "end": 597.76, "text": "We've all been used to program and write much more deterministic flows."}, {"id": "s101", "start": 597.76, "end": 600.28, "text": "And we know how it works."}, {"id": "s102", "start": 600.28, "end": 601.8, "text": "The Can I ask an engineer?"}, {"id": "s103", "start": 601.8, "end": 605.0, "text": "Engineer can come and tell me how this the algorithm, the sequence of operations."}, {"id": "s104", "start": 605.0, "end": 606.4, "text": "Everything is programmed in our mind."}, {"id": "s105", "start": 606.4, "end": 608.08, "text": "Everything is expectations."}, {"id": "s106", "start": 608.08, "end": 610.92, "text": "But now the agents come into a non-deterministic way."}, {"id": "s107", "start": 610.92, "end": 611.96, "text": "And how do we test them, right?"}, {"id": "s108", "start": 611.96, "end": 614.0, "text": "So, that is very criticality here."}, {"id": "s109", "start": 614.0, "end": 615.8, "text": "And yeah."}, {"id": "s110", "start": 615.8, "end": 617.2, "text": "We are also struggling."}, {"id": "s111", "start": 617.2, "end": 620.68, "text": "Um we've uh started doing building agents."}, {"id": "s112", "start": 620.68, "end": 624.56, "text": "We the day to operations was challenging and then we failed in a lot of steps."}, {"id": "s113", "start": 624.56, "end": 625.36, "text": "How do we course correct?"}, {"id": "s114", "start": 625.36, "end": 629.6, "text": "The moment we change something, something else broke breaks, right?"}, {"id": "s115", "start": 629.6, "end": 630.64, "text": "So, how do we do that?"}, {"id": "s116", "start": 630.64, "end": 646.68, "text": "Um one one approach that we took uh this is from um research papers uh around the in a multi-step uh orchestration, when an agent makes uh 30 steps or decisions to make to reach to a goal,"}, {"id": "s117", "start": 646.68, "end": 649.68, "text": "if that is a program or that's a different story."}, {"id": "s118", "start": 649.68, "end": 650.76, "text": "But this is not a program."}, {"id": "s119", "start": 650.76, "end": 658.32, "text": "This is non-deterministic way of It makes up its own steps every time uh differently."}, {"id": "s120", "start": 658.32, "end": 663.24, "text": "So, how can we chart a deterministic graph here?"}, {"id": "s121", "start": 663.24, "end": 664.36, "text": "Is it possible?"}, {"id": "s122", "start": 664.36, "end": 677.32, "text": "No. Can we have a trajectory of its starting from an end to a goal and then see how much how far it went in the trajectory and how far it went from the source to the destination"}, {"id": "s123", "start": 677.32, "end": 686.68, "text": "is what we can compute to evaluate the efficiency or the completeness of the agent agent evaluation."}, {"id": "s124", "start": 686.68, "end": 698.56, "text": "So, we we heavily rely on um trajectory vals um and uh this There are few other signals uh as I briefly spoke around uh in the previous slide around the inferred signal."}, {"id": "s125", "start": 698.56, "end": 715.24, "text": "Um If the answer is from an in in inferred answer, uh how can we uh loop that into uh and make a signals around uh how can we classify that this is a regression and make fixes towards the agent?"}, {"id": "s126", "start": 719.12, "end": 726.28, "text": "Uh So, the next is the uh guardrails."}, {"id": "s127", "start": 726.28, "end": 732.96, "text": "Um Where Is this the one?"}, {"id": "s128", "start": 732.96, "end": 734.96, "text": "Yeah."}, {"id": "s129", "start": 735.2, "end": 744.8, "text": "So, guardrails and authorization, um this is uh critical displays a critical role in enterprise AI."}, {"id": "s130", "start": 744.96, "end": 748.8, "text": "A lot of information is being piped to models."}, {"id": "s131", "start": 748.8, "end": 753.52, "text": "Um there could be sensitive information that goes into it uh without our knowledge."}, {"id": "s132", "start": 753.52, "end": 763.4, "text": "And we as uh uh leaders, how can we put in this governance layer um to stop this um is very uh critical here."}, {"id": "s133", "start": 763.4, "end": 771.12, "text": "And and the concept of uh authentication and authorization um is taking up a different approach here."}, {"id": "s134", "start": 771.12, "end": 777.4, "text": "Um traditionally, we've seen um a user or a service account, but now what is an agent?"}, {"id": "s135", "start": 777.4, "end": 780.36, "text": "Agent can be acting as on behalf of users."}, {"id": "s136", "start": 780.36, "end": 783.56, "text": "There is so much of things uh so many of use cases there."}, {"id": "s137", "start": 783.56, "end": 787.4, "text": "Hey, book me a flight whenever it's cheaper than $200, right?"}, {"id": "s138", "start": 787.4, "end": 792.72, "text": "So, we just tell this assertion and then agent go figures out and does this action on behalf of me."}, {"id": "s139", "start": 792.72, "end": 797.96, "text": "So, is it me making this purchase or is it agent me making on behalf of me?"}, {"id": "s140", "start": 797.96, "end": 804.68, "text": "So, there is Agent acts as a on behalf of user or agent uses a service account as well."}, {"id": "s141", "start": 804.68, "end": 816.08, "text": "So, the line is being blurred here and we need to make fine-grained authorization decisions here, and the policy layer that's where the guardrails and authentication authorization plays a critical role."}, {"id": "s142", "start": 816.08, "end": 829.48, "text": "And in the one what we employ here is before every tool call pre-tool and post-tool, we have this guardrails to check and block and make a informed decisions."}, {"id": "s143", "start": 832.0, "end": 843.32, "text": "And this single agent versus multi-agent, again, this is kind of a orchestration wars you can think of with it to build a single agent or a multi-agent."}, {"id": "s144", "start": 843.32, "end": 852.12, "text": "Again, as Roberto briefly hinted if you can't perfect and build a single agent, why go towards multi-agent, right?"}, {"id": "s145", "start": 852.12, "end": 858.2, "text": "So, learn from our uh failures, experiences, and build towards that."}, {"id": "s146", "start": 858.2, "end": 860.2, "text": "At Navan, yeah."}, {"id": "s147", "start": 860.2, "end": 866.96, "text": "What the approach that we have taken is single master, and then we adopted sub-skills."}, {"id": "s148", "start": 866.96, "end": 869.48, "text": "Um There are sub-agents within it."}, {"id": "s149", "start": 869.48, "end": 884.0, "text": "So, it's a single agent that can progressively load the skills and understand decisively what needs to be loaded into the context, and then make this navigation through the use case."}, {"id": "s150", "start": 884.0, "end": 888.32, "text": "But there are other patterns that are also emerging."}, {"id": "s151", "start": 888.32, "end": 890.16, "text": "There are different class of use cases here."}, {"id": "s152", "start": 890.16, "end": 893.16, "text": "One is um agent-to-agent communication."}, {"id": "s153", "start": 893.16, "end": 902.68, "text": "So, there are If you take a large scale organization, and there are so many of these teams that are that are acting as the boundaries, and they don't talk to each other, let's say."}, {"id": "s154", "start": 902.68, "end": 903.56, "text": "How do we communicate?"}, {"id": "s155", "start": 903.56, "end": 906.44, "text": "There are two agents on either of the side, right?"}, {"id": "s156", "start": 906.44, "end": 907.2, "text": "How do we do it?"}, {"id": "s157", "start": 907.2, "end": 914.36, "text": "So, there is A2A protocol which can help us establish the contracts in terms of skills."}, {"id": "s158", "start": 914.36, "end": 922.2, "text": "And we can use A2A as a protocol there, which kind of is a boundary between the teams."}, {"id": "s159", "start": 922.68, "end": 925.44, "text": "Yeah, over to you, Uday."}, {"id": "s160", "start": 929.08, "end": 929.52, "text": "All right."}, {"id": "s161", "start": 929.52, "end": 940.92, "text": "So, as we went through the stack, it's obvious that um some components of the stack are in a more mature state and we already have good answers for them."}, {"id": "s162", "start": 940.92, "end": 943.92, "text": "As Uday said, the runtime, I think it's pretty much solved."}, {"id": "s163", "start": 943.92, "end": 951.12, "text": "We are so advanced in orchestration and we are running LLMs in kind of uh a very uh brute-force way."}, {"id": "s164", "start": 951.12, "end": 953.6, "text": "So, scaling is not a not a problem."}, {"id": "s165", "start": 953.6, "end": 970.52, "text": "Also, memory, I think uh as uh the frontier LLMs get better and as our practices get better, we will uh find a way to cover the majority of the use cases and there is good maturity around the the cloud providers."}, {"id": "s166", "start": 970.52, "end": 978.64, "text": "Uh MCP has emerged as the de facto protocol and tool calling is now a feature that everybody supports."}, {"id": "s167", "start": 978.64, "end": 985.56, "text": "So, we are seeing some industry convergence around that as well and MCP as a standard is also evolving."}, {"id": "s168", "start": 985.56, "end": 987.36, "text": "Now, it's becoming stateless."}, {"id": "s169", "start": 987.36, "end": 995.52, "text": "It's uh we are reaching a point where kind of we know how to invoke uh services and and and tools with agents."}, {"id": "s170", "start": 995.52, "end": 1001.8389999999999, "text": "Uh in some areas, things are happening, but you know, there's still a lot of unknown."}, {"id": "s171", "start": 1001.8389999999999, "end": 1009.24, "text": "Around observability, there is a push towards OTEL, but does OTEL really work for agentic calls?"}, {"id": "s172", "start": 1009.24, "end": 1012.68, "text": "Uh yeah, you can make it work as Uday was saying."}, {"id": "s173", "start": 1012.68, "end": 1019.12, "text": "Um also, we are getting more comfortable around um around that the the the the testing patterns."}, {"id": "s174", "start": 1019.12, "end": 1029.36, "text": "It's very hard to test, but we have found a way to give customers um quality experiences even with the unreliability of agentic system and I think that's kind of"}, {"id": "s175", "start": 1029.36, "end": 1035.079, "text": "uh getting in a in a state that is uh that is more better defined."}, {"id": "s176", "start": 1035.079, "end": 1047.52, "text": "Orchestration is another one um, where, you know, we have a uh, we have patterns, uh, we can build, you know, bigger agents, smaller agents."}, {"id": "s177", "start": 1047.52, "end": 1054.04, "text": "Uh, as we said previously, probably the right answer is to not over-engineer."}, {"id": "s178", "start": 1054.04, "end": 1061.6, "text": "Uh, so we're learning there and and and uh, a pattern of school thought is also emerging."}, {"id": "s179", "start": 1061.6, "end": 1074.36, "text": "Uh, where we're all struggling with and the previous talk was about this for the developer, um, AI assistant development perspective, but also we're seeing these issues from our production agents."}, {"id": "s180", "start": 1074.36, "end": 1087.36, "text": "It's very hard to predict cost and it's very hard to manage cost, uh, and put guardrails and solve this in a way where there is reliable, maybe fallback or have agents be,"}, {"id": "s181", "start": 1087.36, "end": 1091.2, "text": "uh, using cheaper models for certain tasks."}, {"id": "s182", "start": 1091.2, "end": 1101.44, "text": "Uh, uh, this is all driven by kind of the big AI vendors who, I think, their interest is for us all to spend more tokens."}, {"id": "s183", "start": 1101.44, "end": 1106.28, "text": "Um, replay and debugging, Woody talked about that, that's also a big big issue."}, {"id": "s184", "start": 1106.28, "end": 1121.88, "text": "It's very hard to understand, but I think this is also something that that is going to be solved because we can now use, uh, agents to uh, get over the cognitive overload of trying to debug"}, {"id": "s185", "start": 1121.88, "end": 1123.4, "text": "what they do."}, {"id": "s186", "start": 1123.4, "end": 1130.96, "text": "And then standards, um, standards are emerging uh, by, you know, the community."}, {"id": "s187", "start": 1130.96, "end": 1140.52, "text": "Uh, Hotel, as I mentioned, agent to agent is young, it's kind of pushed by certain vendors, but I think over time we will we will get, uh, there."}, {"id": "s188", "start": 1140.52, "end": 1147.76, "text": "Uh, with all of this said, you know, we know what we need and it's up to us to write and build it."}, {"id": "s189", "start": 1147.76, "end": 1149.538, "text": "Thank you, everybody."}, {"id": "s190", "start": 1149.538, "end": 1151.538, "text": "[applause]"}, {"id": "s191", "start": 1167.0, "end": 1169.0, "text": "I"}]}, {"id": "4loPnxvWWhg", "title": "Your Fine-Tuned Model Is Tech Debt: A 50x ROI House of Cards — Dan Bjornn, Lease End", "channel": "AI Engineer", "duration": 999, "upload_date": null, "url": "https://www.youtube.com/watch?v=4loPnxvWWhg", "api": "/api/talks/4loPnxvWWhg.json", "summary_url": "/#4loPnxvWWhg", "transcript": {"html": "/transcripts/4loPnxvWWhg.html", "txt": "/transcripts/4loPnxvWWhg.txt", "vtt": "/transcripts/4loPnxvWWhg.vtt"}, "sentences": [{"id": "s1", "start": 14.0, "end": 14.559, "text": "All right."}, {"id": "s2", "start": 14.559, "end": 16.24, "text": "Hello everybody."}, {"id": "s3", "start": 16.24, "end": 17.279, "text": "Thank you for coming."}, {"id": "s4", "start": 17.279, "end": 18.72, "text": "I'm Dan Bujorn."}, {"id": "s5", "start": 18.72, "end": 21.84, "text": "I'm a senior data scientist at Lease End."}, {"id": "s6", "start": 21.84, "end": 22.72, "text": "Lease End."}, {"id": "s7", "start": 22.72, "end": 32.88, "text": "We connect people who are coming to the end of their auto lease with financing uh options so that they can buy out their lease and keep their car."}, {"id": "s8", "start": 32.88, "end": 47.12, "text": "Now, as part of this uh we uh built a an LLM based application in late 2024 to help our customers connect with uh with our sales team."}, {"id": "s9", "start": 47.12, "end": 51.52, "text": "This application allowed them to send messages through text."}, {"id": "s10", "start": 51.52, "end": 58.96, "text": "uh they could ask questions about the sales process, they could schedule calls, uh they could get reminders, all of this stuff."}, {"id": "s11", "start": 58.96, "end": 72.4, "text": "Our first solution used a workflowbased approach uh built on top of uh a rag system where we searched a vector database of messages that we had already seen and classified"}, {"id": "s12", "start": 72.4, "end": 75.2, "text": "with the customer's intent."}, {"id": "s13", "start": 75.2, "end": 86.24, "text": "So for example, uh a message saying call me tomorrow would be classified as the customer wants to uh wants to talk later."}, {"id": "s14", "start": 86.24, "end": 93.03999999999999, "text": "A message saying I've got time now would be classified as uh the customer wants to talk right now."}, {"id": "s15", "start": 93.03999999999999, "end": 96.96000000000001, "text": "U this has worked but not super amazing."}, {"id": "s16", "start": 96.96000000000001, "end": 108.72, "text": "there's a lot of nuance in in messages and and conversation and this rags approach just couldn't quite pick up on that nuance and so we started to look for"}, {"id": "s17", "start": 108.72, "end": 121.6, "text": "uh for new options to improve this and naturally being a data scientist my first thought was hey let's start fine-tuning this seemed like a fun thing to do and I was sure that this was the right call"}, {"id": "s18", "start": 121.6, "end": 134.8, "text": "um there's a few reasons for that first of all uh we needed better accuracy Our entire system uh was built upon us getting the user's intent correct."}, {"id": "s19", "start": 134.8, "end": 136.239, "text": "Did they want to talk now?"}, {"id": "s20", "start": 136.239, "end": 137.599, "text": "Do they want to schedule a call?"}, {"id": "s21", "start": 137.599, "end": 139.44, "text": "Do they want to opt out?"}, {"id": "s22", "start": 139.44, "end": 141.36, "text": "All of this hinged on that decision."}, {"id": "s23", "start": 141.36, "end": 145.68, "text": "And so we needed to make sure that we got that first and foremost."}, {"id": "s24", "start": 145.68, "end": 150.0, "text": "Next, uh we could use smaller models with fine-tuning."}, {"id": "s25", "start": 150.0, "end": 154.07999999999998, "text": "And so this would lower the cost and also lower latency."}, {"id": "s26", "start": 154.07999999999998, "end": 166.31900000000002, "text": "So this was really important for us because we were uh responding to thousands of messages a day in real time and so it it uh would help us scale a lot."}, {"id": "s27", "start": 166.31900000000002, "end": 178.72, "text": "Then next like I said we were classifying the intent of the user and so this was a very narrow structured task that we were trying to do and so it lent itself very nicely to supervised fine-tuning."}, {"id": "s28", "start": 178.72, "end": 187.599, "text": "uh we would bucket uh that conversation in one of six different categories and the model would learn the differences between those."}, {"id": "s29", "start": 187.599, "end": 190.72, "text": "Uh so seemed like a great option there."}, {"id": "s30", "start": 190.72, "end": 200.07999999999998, "text": "Lastly, uh I believe that this would help us have a little bit more control over our destiny with the the model providers."}, {"id": "s31", "start": 200.07999999999998, "end": 211.36, "text": "The idea was that we had the data and all we would need to do is pass that into a new model, go through the fine-tuning process and we could get"}, {"id": "s32", "start": 211.36, "end": 215.28, "text": "similar results no matter uh what we decided to use."}, {"id": "s33", "start": 215.28, "end": 218.159, "text": "So we could be model agnostic."}, {"id": "s34", "start": 218.159, "end": 221.2, "text": "So this was the approach that we took."}, {"id": "s35", "start": 221.2, "end": 231.12, "text": "Um, and I built a pipeline to collect examples, run LLM as judge, uh, classifications to label our data."}, {"id": "s36", "start": 231.12, "end": 238.48, "text": "I'd manually review that, create holdout sets, go through the fine-tuning process, check my metrics."}, {"id": "s37", "start": 238.48, "end": 240.799, "text": "This was a data scientist's dream."}, {"id": "s38", "start": 240.799, "end": 243.519, "text": "And, uh, the numbers sure helped."}, {"id": "s39", "start": 243.519, "end": 251.04, "text": "Within a year, this application had helped us bring in $12 million of revenue at a 50x ROI."}, {"id": "s40", "start": 251.04, "end": 260.4, "text": "Um, it was pretty awesome, but uh, the whole time it was quietly accumulating debt underneath that we didn't see."}, {"id": "s41", "start": 260.4, "end": 267.52, "text": "So, I want to show a couple examples of how this application could get things wrong."}, {"id": "s42", "start": 267.52, "end": 284.15999999999997, "text": "Uh first of all uh the confused confirmer is a situation where um when customers set up an appointment with a sales rep, we send them a confirmation message to let them know that it's been scheduled and give them the details of that."}, {"id": "s43", "start": 284.15999999999997, "end": 288.4, "text": "Uh so a conversation may look like this."}, {"id": "s44", "start": 288.4, "end": 296.8, "text": "We reach out and say, \"Hi Tracy, just confirming your lease and call with your advisor is set for Thursday at 2 p.m. We'll call you then.\""}, {"id": "s45", "start": 296.8, "end": 301.04, "text": "Tracy then sends us a message back saying, \"Sounds good.\""}, {"id": "s46", "start": 301.04, "end": 304.32, "text": "And then our LLM responds with, \"Great."}, {"id": "s47", "start": 304.32, "end": 306.08, "text": "I'm calling you right now."}, {"id": "s48", "start": 306.08, "end": 307.919, "text": "Uh, it's not what we want."}, {"id": "s49", "start": 307.919, "end": 312.08, "text": "We just confirmed a an appointment for a following day.\""}, {"id": "s50", "start": 312.08, "end": 314.24, "text": "And then all of a sudden, we start calling them."}, {"id": "s51", "start": 314.24, "end": 319.68, "text": "This led to frustrated customers and some missed opportunities."}, {"id": "s52", "start": 319.68, "end": 324.8, "text": "The next one, um, I've come to lovingly call the overeager puppy."}, {"id": "s53", "start": 324.8, "end": 329.199, "text": "Um the the conversation looks like this."}, {"id": "s54", "start": 329.199, "end": 336.24, "text": "So first, hi James, this is Alex with Lease End reaching out about your upcoming lease maturity."}, {"id": "s55", "start": 336.24, "end": 338.72, "text": "James then says, hi, good morning."}, {"id": "s56", "start": 338.72, "end": 341.6, "text": "And good morning."}, {"id": "s57", "start": 341.6, "end": 343.199, "text": "I'm giving you a call."}, {"id": "s58", "start": 343.199, "end": 353.12, "text": "Um just like a puppy that gets so excited that somebody's giving it attention, our model decided to to give a call right there."}, {"id": "s59", "start": 353.12, "end": 356.32, "text": "Um, obviously this is not what James wanted."}, {"id": "s60", "start": 356.32, "end": 358.56, "text": "This actually did happen in production."}, {"id": "s61", "start": 358.56, "end": 361.52, "text": "Um, very embarrassing there."}, {"id": "s62", "start": 361.52, "end": 366.639, "text": "Uh, but this is a these are a couple examples of of where it went wrong."}, {"id": "s63", "start": 366.639, "end": 369.759, "text": "And and don't get me wrong, the the app did well."}, {"id": "s64", "start": 369.759, "end": 377.44, "text": "The revenue numbers show that that it was working, but it could also mess up pretty spectacularly."}, {"id": "s65", "start": 377.44, "end": 384.88, "text": "Um the big issue wasn't how to fix it, but how to make it the fix manageable."}, {"id": "s66", "start": 384.88, "end": 388.56, "text": "The the fine-tuning process was pretty complex."}, {"id": "s67", "start": 388.56, "end": 393.84000000000003, "text": "Uh first we needed to gather examples of the problems that we started to see."}, {"id": "s68", "start": 393.84000000000003, "end": 403.44, "text": "Um then we needed to ask ourselves uh do we have enough examples for uh to go through fine-tuning?"}, {"id": "s69", "start": 403.44, "end": 406.639, "text": "If not, we synthesized those examples."}, {"id": "s70", "start": 406.639, "end": 411.759, "text": "uh we passed it through an LLM, it created some some possible examples there."}, {"id": "s71", "start": 411.759, "end": 419.36, "text": "We'd have to validate those, which was a very manual process uh because we wanted to make sure it had the best training data possible."}, {"id": "s72", "start": 419.36, "end": 429.599, "text": "And then once we had enough, uh we labeled those with the the categorization bins and we validated validated those through a manual review."}, {"id": "s73", "start": 429.599, "end": 434.16, "text": "Surprisingly, the fine-tuning process was the shortest part of all of this."}, {"id": "s74", "start": 434.16, "end": 443.52, "text": "uh normally took about an hour depending on the size of the data that we had but uh we never got it on the first iteration."}, {"id": "s75", "start": 443.52, "end": 456.96, "text": "Uh normally what happened was we would uh we would fine-tune and we'd evaluate this and uh we fix the problem that we were just trying to solve but then we caused regressions and other things."}, {"id": "s76", "start": 456.96, "end": 467.199, "text": "And so this turned into kind of a whack-a-mole process where we would solve something new, but then other old issues kept popping up that we had to to whack down."}, {"id": "s77", "start": 467.199, "end": 476.479, "text": "Um, this whole process took about a week to gather the data, label everything, go through the fine-tuning process, and iterate and then deploy."}, {"id": "s78", "start": 476.479, "end": 478.319, "text": "So it was costly."}, {"id": "s79", "start": 478.319, "end": 484.639, "text": "Um, therefore, we needed to triage all of these issues that we ran into."}, {"id": "s80", "start": 484.639, "end": 489.52, "text": "We asked ourselves three questions before we did any any retraining."}, {"id": "s81", "start": 489.52, "end": 492.08, "text": "How frequent is the issue?"}, {"id": "s82", "start": 492.08, "end": 494.96, "text": "Is it something that customers are seeing every day?"}, {"id": "s83", "start": 494.96, "end": 496.56, "text": "Is it one off?"}, {"id": "s84", "start": 496.56, "end": 503.599, "text": "Um, one big exception to this was if it was hurting the customer experience too much."}, {"id": "s85", "start": 503.599, "end": 516.479, "text": "So for example of this would be uh somebody repeatedly stating what their uh their preference for a call time is and then the uh the model ignoring that."}, {"id": "s86", "start": 516.479, "end": 520.56, "text": "Another one would be a customer scheduling a call."}, {"id": "s87", "start": 520.56, "end": 531.2, "text": "We tell them that we've scheduled it for them but we don't return the payload in in the proper way and so the the call never gets scheduled and so we don't follow up with them."}, {"id": "s88", "start": 531.2, "end": 533.92, "text": "So these kinds of things needed to be fixed right away."}, {"id": "s89", "start": 533.92, "end": 542.32, "text": "But before we did that, uh we asked the last question, is there any thing that we can do in order to prevent a retrain?"}, {"id": "s90", "start": 542.32, "end": 551.04, "text": "Can we have some kind of a band-aid fix to get out there so we don't have to go through a whole week-long process uh for one or two issues?"}, {"id": "s91", "start": 551.04, "end": 559.12, "text": "And so we we ranked our own bugs uh based on how much customer pain we could tolerate at the moment."}, {"id": "s92", "start": 559.12, "end": 563.519, "text": "Um, so not a great situation to be in with a production system."}, {"id": "s93", "start": 563.519, "end": 567.92, "text": "This led to what I've come to call the calcification tax."}, {"id": "s94", "start": 567.92, "end": 572.88, "text": "Uh, the more we used the model, the more rigid everything became."}, {"id": "s95", "start": 572.88, "end": 575.279, "text": "This manifested in a couple different ways."}, {"id": "s96", "start": 575.279, "end": 578.48, "text": "First, we were locked into our model."}, {"id": "s97", "start": 578.48, "end": 585.68, "text": "You remember when I said that uh fine-tuning would give us uh more freedom in what model we did?"}, {"id": "s98", "start": 585.68, "end": 587.519, "text": "That was not the case."}, {"id": "s99", "start": 587.519, "end": 598.56, "text": "Um within providers there's nuance between one model version to another and so that changes the the training data that you need to provide it."}, {"id": "s100", "start": 598.56, "end": 606.08, "text": "Um across model provisors uh it's extremely different the structure of the data you need to pass to it be different."}, {"id": "s101", "start": 606.08, "end": 613.2, "text": "The amount of the training data to get good results the way to interact with the training interface."}, {"id": "s102", "start": 613.2, "end": 618.959, "text": "All of this caused a lot of complexity and so it was just too costly for us to switch."}, {"id": "s103", "start": 618.959, "end": 630.959, "text": "And so um to we kept it the same model for consistency because we already had a lot to do with uh with each retraining process and we couldn't afford"}, {"id": "s104", "start": 630.959, "end": 634.48, "text": "to uh upgrade the model."}, {"id": "s105", "start": 634.56, "end": 640.8, "text": "So uh the other way that this locked in was architecture."}, {"id": "s106", "start": 640.8, "end": 657.279, "text": "We built this app in uh late 2024 when workflows were kind of the um gold standard if you wanted good u production results and uh the AI world moves very fast"}, {"id": "s107", "start": 657.279, "end": 668.16, "text": "and we couldn't adapt to that because we were so locked into this just trying to keep it running and we couldn't take advantage of the new architectures um and"}, {"id": "s108", "start": 668.16, "end": 675.2, "text": "and improve performance that Okay, so earlier this year I had an aha moment."}, {"id": "s109", "start": 675.2, "end": 687.44, "text": "Um, we started using cloud code for our coding tasks and I noticed that we never needed to change the model depending on what task we're using."}, {"id": "s110", "start": 687.44, "end": 693.279, "text": "Um, we just changed the skill, the resources that we passed it, the context."}, {"id": "s111", "start": 693.279, "end": 697.92, "text": "Um, you drop in the better better context, you get better results."}, {"id": "s112", "start": 697.92, "end": 703.04, "text": "And I thought, why can't we do this with our messaging app?"}, {"id": "s113", "start": 703.04, "end": 709.04, "text": "Um, this was obviously difficult for me to admit because I was the champion for fine-tuning."}, {"id": "s114", "start": 709.04, "end": 715.8389999999999, "text": "And, uh, luckily we were able to piggyback on a project that was already happening."}, {"id": "s115", "start": 715.8389999999999, "end": 727.279, "text": "Um, and so we migrated our workflow approach to a series of skills, tools, and resources that the skills could could load into or load up."}, {"id": "s116", "start": 727.279, "end": 729.36, "text": "um and get that context."}, {"id": "s117", "start": 729.36, "end": 738.8, "text": "And so we pushed this as one of our first production tests of our our new agentic framework that that was being built already."}, {"id": "s118", "start": 738.8, "end": 744.32, "text": "Now uh I want to compare the process before and after our rebuild."}, {"id": "s119", "start": 744.32, "end": 755.44, "text": "Uh before we already went through the kind of the training cycle, but there was this triage cycle beforehand where we needed to make sure that we had reached a critical mass"}, {"id": "s120", "start": 755.44, "end": 763.8389999999999, "text": "of problems before we would even attempt to uh fine-tune again to improve everything."}, {"id": "s121", "start": 763.8389999999999, "end": 768.48, "text": "Like I said, this took about a week, so it was a long process, costly."}, {"id": "s122", "start": 768.48, "end": 780.079, "text": "Uh after the rebuild um it was a simple process of you find a problem you adjust the simp system prompt or the skill that was affected."}, {"id": "s123", "start": 780.079, "end": 786.639, "text": "We validated performance on a curated set that we have been collecting over the time that this was in production."}, {"id": "s124", "start": 786.639, "end": 794.639, "text": "We iterate a few times and then we deploy that simply by uploading MD files to an S3 bucket."}, {"id": "s125", "start": 794.639, "end": 802.8, "text": "um this whole process from discovering a problem to deploying the fix we reduced down to less than an hour."}, {"id": "s126", "start": 802.8, "end": 814.399, "text": "So it extremely improved all of this and we could be far more reactive give our our customers way better performance or better experience there."}, {"id": "s127", "start": 814.48, "end": 818.399, "text": "Now I'll be honest it did cost us a little bit more per message."}, {"id": "s128", "start": 818.399, "end": 820.399, "text": "we were using better models."}, {"id": "s129", "start": 820.399, "end": 828.8, "text": "Um, so the API costs were a little higher, but accuracy went way up."}, {"id": "s130", "start": 828.8, "end": 833.44, "text": "I said before that accuracy was the key to to getting all of this right."}, {"id": "s131", "start": 833.44, "end": 835.12, "text": "Um, and we did that."}, {"id": "s132", "start": 835.12, "end": 840.32, "text": "Accuracy uh was far better with this than it ever was with fine-tuning."}, {"id": "s133", "start": 840.32, "end": 849.12, "text": "Um, next, like I said, we reduced our uh our fixed process from days down to minutes."}, {"id": "s134", "start": 849.12, "end": 857.76, "text": "Next, we were able to unfreeze our model and finally get that freedom from a vendor that we never had with fine-tuning."}, {"id": "s135", "start": 857.76, "end": 862.079, "text": "Um, our agentic framework was built model agnostic."}, {"id": "s136", "start": 862.079, "end": 867.76, "text": "So, we could use open AI, we can use uh anthropic, we can use any other model that we want."}, {"id": "s137", "start": 867.76, "end": 872.079, "text": "The important part is the context that we're providing to that model."}, {"id": "s138", "start": 872.079, "end": 885.6, "text": "And then lastly, while it cost us a little more per message, the total cost went down because we were spending far less time trying to keep it up and running and"}, {"id": "s139", "start": 885.6, "end": 889.68, "text": "fine-tuning to uh to keep it working properly."}, {"id": "s140", "start": 889.68, "end": 896.9590000000001, "text": "So before you fine-tune, I'd ask you, can you cross your reason off of this list?"}, {"id": "s141", "start": 896.9590000000001, "end": 900.079, "text": "So, I thought we would get better accuracy."}, {"id": "s142", "start": 900.079, "end": 904.88, "text": "Uh, the rebuild beat the fine-tuned model."}, {"id": "s143", "start": 904.88, "end": 907.92, "text": "I thought we would get lower cost of the volume we were doing."}, {"id": "s144", "start": 907.92, "end": 910.959, "text": "Um, I was looking at the wrong costs."}, {"id": "s145", "start": 910.959, "end": 916.72, "text": "We we paid more per message, but the total cost ended up going down with our rebuild, lower latency."}, {"id": "s146", "start": 916.72, "end": 926.16, "text": "We we did see marginal gains on these smaller models, but they were so small that in practice it really didn't make any difference."}, {"id": "s147", "start": 926.16, "end": 930.32, "text": "And then maybe you've got a narrow or structured task."}, {"id": "s148", "start": 930.32, "end": 934.88, "text": "Our textbook case still became tech debt."}, {"id": "s149", "start": 935.279, "end": 937.279, "text": "And lastly, vendor control."}, {"id": "s150", "start": 937.279, "end": 940.72, "text": "It's not as simple as just plugging the data in."}, {"id": "s151", "start": 940.72, "end": 949.759, "text": "The other two situations where you you might have privacy and data control or you need some offline offline solution."}, {"id": "s152", "start": 949.759, "end": 956.24, "text": "I would say this these are the situations where a fine-tuned model may be useful."}, {"id": "s153", "start": 956.24, "end": 957.8389999999999, "text": "But you need to be cautious."}, {"id": "s154", "start": 957.8389999999999, "end": 960.0, "text": "There are other solutions out there."}, {"id": "s155", "start": 960.0, "end": 967.519, "text": "Um but um you need to make sure that it's not uh not causing issues in the long run."}, {"id": "s156", "start": 967.519, "end": 978.639, "text": "So finally fine-tune only when you literally cannot call a frontier model and even then your decision still has to beat the the tax."}, {"id": "s157", "start": 978.639, "end": 980.8, "text": "Thank you."}]}, {"id": "5Bn0xro2ol8", "title": "How to Get Your Org to Adopt Coding Agents (Without Shipping Garbage) — Eyal Blum, Figma", "channel": "AI Engineer", "duration": 1063, "upload_date": null, "url": "https://www.youtube.com/watch?v=5Bn0xro2ol8", "api": "/api/talks/5Bn0xro2ol8.json", "summary_url": "/#5Bn0xro2ol8", "transcript": {"html": "/transcripts/5Bn0xro2ol8.html", "txt": "/transcripts/5Bn0xro2ol8.txt", "vtt": "/transcripts/5Bn0xro2ol8.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.72, "end": 13.48, "text": "Good afternoon."}, {"id": "s3", "start": 13.48, "end": 15.4, "text": "My name is Alon Blum."}, {"id": "s4", "start": 15.4, "end": 17.68, "text": "I am a software engineer at Figma."}, {"id": "s5", "start": 17.68, "end": 31.84, "text": "And in my talk today, we're going to talk about how we've adopted or are adopting agent into our workflow at Figma while maintaining high quality for our code base."}, {"id": "s6", "start": 31.96, "end": 43.92, "text": "So, as you may know, Figma is the browser-based editor where design and engineering and now AI agent collaborate together to ship code."}, {"id": "s7", "start": 43.92, "end": 52.16, "text": "Uh this Figma has pivoted very strongly from being a traditional tool to an AI-first tool."}, {"id": "s8", "start": 52.16, "end": 54.36, "text": "But in this talk, I'm not going to talk about our product."}, {"id": "s9", "start": 54.36, "end": 63.28, "text": "I'm going to talk more about our internal organization and how our engineering org has been adopting AI agents."}, {"id": "s10", "start": 64.44, "end": 76.56, "text": "Um what we we found internally is both organizations, companies, and individual there's kind of a three-act process of AI adoption."}, {"id": "s11", "start": 76.56, "end": 90.24, "text": "You start with picking up something, whether it was a lot of the people in this room who have been doing using our AI pal and have been using AI for a while and they picked up something and got some simple things to work very well."}, {"id": "s12", "start": 90.24, "end": 92.4, "text": "10x faster."}, {"id": "s13", "start": 92.4, "end": 105.75999999999999, "text": "Then you start applying those same practices to bigger problems and AI fails pretty badly at that, gives you bad stuff, lots of bugs, and the trust that you build breaks down."}, {"id": "s14", "start": 105.75999999999999, "end": 118.44, "text": "And then from that point, you start building the real skill, which is learning how to use AI correctly and put the right guardrails and the right prompting and the right context and all the stuff that we've been talking"}, {"id": "s15", "start": 118.44, "end": 123.68, "text": "all day about here in all the talks in order to actually build a real scale."}, {"id": "s16", "start": 123.8, "end": 133.28, "text": "And one thing that is happening internally as we we adopted whether teams or individuals the adoption is uneven."}, {"id": "s17", "start": 133.28, "end": 148.6, "text": "We have teams that are very AI forward and have already transformed their entire workflows and then we have teams that are still experimenting in the earlier act and or have lost confidence and they all need to work together in order to ship"}, {"id": "s18", "start": 148.6, "end": 149.92000000000002, "text": "our product."}, {"id": "s19", "start": 149.92000000000002, "end": 163.92000000000002, "text": "Um So, they need to coexist in the organization and we need to find a way to support them and while bringing on everybody along for the journey and getting everybody to the third act of the story."}, {"id": "s20", "start": 164.52, "end": 173.2, "text": "Aside from that main friction point, we have also noticed other friction points that happened as we adopt AI."}, {"id": "s21", "start": 173.959, "end": 184.239, "text": "One thing that we've heard a lot from developers and managers have have been noticing is that reduced developer agency causes um engineers to lose some of their job satisfaction."}, {"id": "s22", "start": 184.239, "end": 194.88, "text": "So, if a lot of people used to take a lot of pride and enjoyment in writing code and getting into the flow and a lot of people feel like that's been lost or they're losing a lot of that"}, {"id": "s23", "start": 194.88, "end": 205.12, "text": "element and getting into more of a prompt cycle where they just wait on output from AI and then speak to the AI that like not as much fun as they used to have and they're getting burned out."}, {"id": "s24", "start": 205.32, "end": 207.72, "text": "Um we've noticed another interesting thing."}, {"id": "s25", "start": 207.72, "end": 211.519, "text": "It's actually our best engineer, the one that hold all their contacts in their brain."}, {"id": "s26", "start": 211.519, "end": 214.48, "text": "Um they end up getting out of the burden."}, {"id": "s27", "start": 214.48, "end": 217.8, "text": "What ends up happening is they they know where all the pitfalls are."}, {"id": "s28", "start": 217.8, "end": 230.76, "text": "They are like holding together with with like their mental duct tape all the places that agents are not working well and they're preventing all the really bad stuff from coming in or all they they have all the"}, {"id": "s29", "start": 230.76, "end": 238.8, "text": "institutional contact that have never written down in their head and they get so much burden and and become bottlenecks and gets really frustrated."}, {"id": "s30", "start": 238.8, "end": 244.52, "text": "So, they actually end up being slowest to adopt because they see all the problem uh first hand."}, {"id": "s31", "start": 244.52, "end": 248.0, "text": "That's another big big issue that we've seen."}, {"id": "s32", "start": 248.0, "end": 255.8, "text": "Um and this one I'm sure everybody can resonate or in Sorry, I'm sure everybody here will resonate."}, {"id": "s33", "start": 255.8, "end": 266.2, "text": "Um that all of a sudden all the design docs and all the Slack messages you know, this the emails have gotten three or four times as long and we've gotten two or three times as many emails"}, {"id": "s34", "start": 266.2, "end": 269.24, "text": "and they say basically as much as they did before."}, {"id": "s35", "start": 269.24, "end": 281.8, "text": "So, communication has gotten quite inefficient and some of the markers of like what is high quality and important things versus not so much high quality um has become challenging to navigate."}, {"id": "s36", "start": 282.52, "end": 290.76, "text": "Um so, I'm going to spend uh the next few minutes talking about some of the lessons that we've learned and how we've been trying to apply this."}, {"id": "s37", "start": 290.76, "end": 291.48, "text": "This is a journey."}, {"id": "s38", "start": 291.48, "end": 298.96, "text": "We have not come out through the other end, but we've seen some really interesting progress along a lot of these lines."}, {"id": "s39", "start": 300.2, "end": 310.4, "text": "Um I think this uh a lot of the speakers here have touched upon this, but investing in verification is probably the highest value thing we can do in our code base."}, {"id": "s40", "start": 310.4, "end": 320.76, "text": "Um anytime that we can lift a left shift anything in our workflow from a human needing to do it to an agent being able to verify it."}, {"id": "s41", "start": 320.76, "end": 330.08, "text": "So, for example, when uh Playwright and MCP came out, instead of having humans navigate the code, now the agent can explore the code."}, {"id": "s42", "start": 330.08, "end": 334.15999999999997, "text": "That was a big win unlock for productivity in a lot of our team."}, {"id": "s43", "start": 334.15999999999997, "end": 338.32, "text": "That's really That's always a a big win for us."}, {"id": "s44", "start": 338.32, "end": 350.2, "text": "The other thing is um it's even better if when you find something that the agent has found to be useful, take the time to take that and encode into a deterministic"}, {"id": "s45", "start": 350.2, "end": 351.44, "text": "flow."}, {"id": "s46", "start": 351.44, "end": 360.48, "text": "A deterministic flow that can be easily repeated is saved on tokens, save on time for the and then it also you also know that you're using the the LLM"}, {"id": "s47", "start": 360.48, "end": 371.32, "text": "when it needs to reason, but when you have something that is already known and basically can be encoded into a test, spending that time always always pays dividends."}, {"id": "s48", "start": 371.32, "end": 383.44, "text": "Um And another tip, if you tell your scale your agent to write the code that you're writing um like at the red to green to red to green at the TDD"}, {"id": "s49", "start": 383.44, "end": 399.56, "text": "style, it almost always gives you better results because you set a goal, then you tell the agent to strive toward that goal, it will almost always give you better results than writing the code and then writing the test afterward because then it will fit the test to the code rather than fit the code to pass the verification"}, {"id": "s50", "start": 399.56, "end": 401.56, "text": "criteria."}, {"id": "s51", "start": 402.48, "end": 415.32, "text": "Um this is the testing pyramid that uh can't the classic testing pyramid from the previous uh just when you think about the testing themselves, which you had the end-to-end test and the integration test and the unit test."}, {"id": "s52", "start": 415.32, "end": 417.28, "text": "This is very similar."}, {"id": "s53", "start": 417.28, "end": 425.52, "text": "Move as much as you can down to the deterministic analysis where that's linting, the compiler, um the unit test themselves."}, {"id": "s54", "start": 425.52, "end": 440.2, "text": "Whatever that can come be covered easily, you can have engine agent do reviews on it based on on criteria, so um architectural standards that that have been easily encoded into the code base, you can move into the agent."}, {"id": "s55", "start": 440.2, "end": 448.24, "text": "And then only at the very top you need to have some sort of human review, which is usually around the functionality and this is the right thing to build."}, {"id": "s56", "start": 448.24, "end": 454.04, "text": "That like only leave the human to do what the humans need to actually be involved in."}, {"id": "s57", "start": 454.84000000000003, "end": 459.24, "text": "Um Another really important thing is the planning versus prompting."}, {"id": "s58", "start": 459.24, "end": 468.88, "text": "This is really tied into the giving agency back to developers and finding a replacement to the craft of writing code."}, {"id": "s59", "start": 468.88, "end": 481.08, "text": "Um spending a lot of time writing the plan and then sending enough to the agent basically as a as an implementation that can be done automatically is something that we find to"}, {"id": "s60", "start": 481.08, "end": 487.68, "text": "really kind of reintroduce the joy of of building back into the process."}, {"id": "s61", "start": 487.68, "end": 498.0, "text": "And so it's not uncommon to spend a week writing a very detailed plan, making all the decisions, flushing it out, iterating, sending it out to teammates to review."}, {"id": "s62", "start": 498.0, "end": 502.16, "text": "And then only when it's ready and you've flushed out all the decision, you can send it to the agent."}, {"id": "s63", "start": 502.16, "end": 506.36, "text": "The agent will um send it back to you when it's implemented."}, {"id": "s64", "start": 506.36, "end": 518.039, "text": "And that that has been really successful also in accelerating and also really restoring some of the joy into the development process."}, {"id": "s65", "start": 518.68, "end": 520.719, "text": "Uh so what makes a good plan?"}, {"id": "s66", "start": 520.719, "end": 524.08, "text": "Um really important to start with a why at the top."}, {"id": "s67", "start": 524.08, "end": 525.72, "text": "It really helps preventing agent drift."}, {"id": "s68", "start": 525.72, "end": 531.6, "text": "If you have like a bold big section of kind of like it when you write a design doc, you want to have the executive summary."}, {"id": "s69", "start": 531.6, "end": 532.92, "text": "Put that in there for the agent."}, {"id": "s70", "start": 532.92, "end": 539.0, "text": "Otherwise, they'll start drifting over time and make sure that the agent don't go back and change that because they feel like it."}, {"id": "s71", "start": 539.0, "end": 541.4, "text": "Uh so we start with a why."}, {"id": "s72", "start": 541.4, "end": 548.8, "text": "Make sure that the plan can be broken down into small parts that can each be verified independently."}, {"id": "s73", "start": 548.8, "end": 556.16, "text": "And my personal way of knowing what is a good size would I want to review that the PR that will correspond to that part?"}, {"id": "s74", "start": 556.16, "end": 563.16, "text": "If it's going to be too big for me to want to review in one sitting, it's kind of like the test is I'm going to get need to get a cup of coffee before I read this."}, {"id": "s75", "start": 563.16, "end": 567.72, "text": "That means it's too big and I'm going to want to have it broken down into pieces."}, {"id": "s76", "start": 567.72, "end": 581.76, "text": "And then I make sure that each part can be validated independently cuz what I don't want to have is have five stages and then the first one is written but not validated, and then everything else is is built on top of all the assumptions."}, {"id": "s77", "start": 581.76, "end": 591.8, "text": "So, having kind of a validation gate or an exception criteria for each phase really helps and make the plan uh resilient to drift."}, {"id": "s78", "start": 591.8, "end": 599.48, "text": "And all and and there's all kind of technique on how to manage the contacts and doing a a software factory on top of that."}, {"id": "s79", "start": 599.48, "end": 607.6, "text": "But once you have the plan, you can use whatever loop uh you want or whatever workflow you want in order to implement it."}, {"id": "s80", "start": 607.6, "end": 612.72, "text": "Uh this is a screenshot that I randomly picked up a plan, but this is what I usually look for."}, {"id": "s81", "start": 612.72, "end": 620.68, "text": "The executive summary at the top, the phases break it down, and then each one of them I would go into lots of details so that I can just fit it into a sub agent,"}, {"id": "s82", "start": 620.68, "end": 625.04, "text": "and the sub agent can independently work on that and not have to worry about it."}, {"id": "s83", "start": 625.04, "end": 626.64, "text": "Um that's that's it."}, {"id": "s84", "start": 626.64, "end": 629.84, "text": "There are other workflows that would work or other structure to the plan."}, {"id": "s85", "start": 629.84, "end": 638.04, "text": "I find that part of the things that great about uh AI workflows is that everybody can set up the thing that works best for them."}, {"id": "s86", "start": 638.04, "end": 640.04, "text": "Oh-oh."}, {"id": "s87", "start": 641.16, "end": 643.68, "text": "No, thank you."}, {"id": "s88", "start": 643.72, "end": 647.72, "text": "Everybody can very easily set up the workflow that work exactly for them for them."}, {"id": "s89", "start": 647.72, "end": 659.52, "text": "So, there's diminishing return in trying to centralize everybody on one thing, but as long as it works for their flow and other people can iterate with them, I find that it generally works very well."}, {"id": "s90", "start": 659.8, "end": 664.96, "text": "And this is just an example kind of a brag of like this is uh could be a result from a plan."}, {"id": "s91", "start": 664.96, "end": 667.88, "text": "Um there are probably 20 PRs here."}, {"id": "s92", "start": 667.88, "end": 671.12, "text": "Some of them would be maybe 10 lines, and some of them would be 100 lines."}, {"id": "s93", "start": 671.12, "end": 680.16, "text": "There's probably nothing bigger than that, and that allows us to This is in the pre-AI world, this plan probably worked in that for a week."}, {"id": "s94", "start": 680.16, "end": 687.4, "text": "I aligned with the other with three other teams for another week on that, and then I just sent it to an agent to implement overnight, and it came back."}, {"id": "s95", "start": 687.4, "end": 699.44, "text": "This is probably from two plans, not one, but it's it's basically six weeks of of coding work just It's um only took 1 week, so that's where I got the 5x"}, {"id": "s96", "start": 699.44, "end": 700.24, "text": "speed up."}, {"id": "s97", "start": 700.24, "end": 704.72, "text": "If I include the review cycle at the end that we always have to remember."}, {"id": "s98", "start": 705.76, "end": 719.84, "text": "Um moving on from planning back to the issue that we had with the skeptics and the people who are burdened with the most work, make sure that you bring them in and take their feedback really seriously."}, {"id": "s99", "start": 719.84, "end": 725.68, "text": "They're skeptic because they're seeing the the way you are lacking validation, where your tools fail."}, {"id": "s100", "start": 725.68, "end": 732.56, "text": "So, and their feedback is basically the road map of how to improve your agent interacting with the code base."}, {"id": "s101", "start": 732.56, "end": 739.28, "text": "So, just make sure to bring them in rather than trying to um figure out how to make them use the AI."}, {"id": "s102", "start": 739.28, "end": 752.96, "text": "Just let's have them be in charge of the road map to make AI safe your organization, and they will come along once they see that that the improvement that they're making actually making their life better."}, {"id": "s103", "start": 753.24, "end": 757.28, "text": "Um and as you can see, they'll not be shy about telling you what you need to fix."}, {"id": "s104", "start": 757.28, "end": 764.12, "text": "This is Latin hour sitting with a bunch of people, and this is the result of brainstorms."}, {"id": "s105", "start": 765.32, "end": 778.72, "text": "Um another thing that's been really helpful with my team specifically, and we're working to adopt it in the broader organization as well, is to make sure that you have an attention-aware communication."}, {"id": "s106", "start": 778.72, "end": 781.24, "text": "In the age of AI, human attention is a scarce resource."}, {"id": "s107", "start": 781.24, "end": 786.32, "text": "I think I've heard it for multiple talks, and a lot of people have have come to the same conclusion."}, {"id": "s108", "start": 786.32, "end": 788.16, "text": "You can't get more human attention."}, {"id": "s109", "start": 788.16, "end": 793.36, "text": "So, where you spend your time and what you're reading is really becomes really important."}, {"id": "s110", "start": 793.36, "end": 809.04, "text": "Um so, since it's such a scarce resource, marking what was generated by AI versus what was written by human is really helpful to know how much time you need to spend reading this, and how much slop can you expect in this part of the communication?"}, {"id": "s111", "start": 809.04, "end": 816.8, "text": "Um and that can building a new culture around that self-communication that really helps."}, {"id": "s112", "start": 816.8, "end": 827.88, "text": "Um So, for example, um the team that team that I work with, we've decided we always every PR description will start with something like that, something that I wrote by hand."}, {"id": "s113", "start": 827.88, "end": 831.8, "text": "It could be very short that I describe what this is in code and what this is doing."}, {"id": "s114", "start": 831.8, "end": 835.92, "text": "And then the AI description is going to come after that, which is I will probably read it."}, {"id": "s115", "start": 835.92, "end": 846.68, "text": "I will probably edit it to remove uh some wrong things, but they didn't write every line here, so they should be more suspicious and they should pay more attention to what I wrote in the top and they should override it."}, {"id": "s116", "start": 846.68, "end": 859.76, "text": "Things like that in Slack, in email, it's like leaning into the fact that everybody knows that you're using AI to to craft your communication, but just let them share about it, tell them what they should read and what"}, {"id": "s117", "start": 859.76, "end": 862.52, "text": "you they should pay less attention to."}, {"id": "s118", "start": 862.52, "end": 879.52, "text": "And I remember early on, maybe like earlier in this year, I tried to I had some senior engineers in our org that had kind of were very much AI skeptic and I tried to reach out to them to see what was the problem, what was going on."}, {"id": "s119", "start": 879.52, "end": 883.24, "text": "I said, \"I tried to run an analysis on some of the PR comments that you've run.\""}, {"id": "s120", "start": 883.24, "end": 886.64, "text": "And obviously I used the AI to do that."}, {"id": "s121", "start": 886.64, "end": 893.52, "text": "And then I didn't distinguish very clearly what I wrote versus what they what AI generated."}, {"id": "s122", "start": 893.52, "end": 895.04, "text": "And they got very upset."}, {"id": "s123", "start": 895.04, "end": 902.96, "text": "They're like, \"Why is sending I did not expect somebody um that I respect this much to send me something that's clearly this sloppy.\""}, {"id": "s124", "start": 902.96, "end": 906.36, "text": "And then like I I took immediately like I apologize."}, {"id": "s125", "start": 906.36, "end": 910.64, "text": "I realize I should have marked it clearly and marked my intention like this is what I wrote."}, {"id": "s126", "start": 910.64, "end": 917.64, "text": "This is what the AI wrote and I need your feedback on that because I don't have the context to know if it is sloppy or not and that's what I'm asking you for, so"}, {"id": "s127", "start": 917.64, "end": 926.28, "text": "lesson like that and change the culture is just as important as some the engineering challenges that we've been facing."}, {"id": "s128", "start": 928.16, "end": 940.52, "text": "Um another thing that's really helpful around the adoption is um as you progress through adoption, there's a lot of very fancy tools and a lot of very fancy workflow that we've"}, {"id": "s129", "start": 940.52, "end": 947.32, "text": "we've been implementing, but one of the really effective thing is just letting people use the AI where they're at."}, {"id": "s130", "start": 947.32, "end": 955.48, "text": "So, uh it help it really helps normalize uh the use of AI for everyday tasks and it helps reduce the friction."}, {"id": "s131", "start": 955.48, "end": 963.44, "text": "And really one of the most powerful thing is being able to tag an agent in the Slack message with somebody and they can you just do this for me?"}, {"id": "s132", "start": 963.44, "end": 966.48, "text": "And have the agents to close the loop in the thread."}, {"id": "s133", "start": 966.48, "end": 969.88, "text": "Um that that's kind of thing is really powerful."}, {"id": "s134", "start": 969.88, "end": 981.32, "text": "And then you can go on top of that and have all this thing automated and do all kind of fancy things, but if you have a new conversation with somebody who's not fully bought in and then you can tag it in a non"}, {"id": "s135", "start": 981.32, "end": 983.56, "text": "like non-passive-aggressive way."}, {"id": "s136", "start": 983.56, "end": 987.6, "text": "You can tag it and say, \"Let's try to see if the agent can get it this time.\""}, {"id": "s137", "start": 987.6, "end": 995.08, "text": "And they close the loop and if it's a good experience, that really helps people try it out on their own in other cases."}, {"id": "s138", "start": 996.24, "end": 997.72, "text": "And our journey continues."}, {"id": "s139", "start": 997.72, "end": 1007.68, "text": "We're still learning even though we're shipping AI externally, our AI adoption um we're experimenting with with so many things all the time."}, {"id": "s140", "start": 1007.68, "end": 1011.52, "text": "Our automation story is not uh fully there yet."}, {"id": "s141", "start": 1011.52, "end": 1020.24, "text": "We're still trying trying to figure out when we should use how we can use cloud agent effectively given all the dependencies we have for some of our bell system."}, {"id": "s142", "start": 1020.24, "end": 1021.92, "text": "And so we are continuing to learn."}, {"id": "s143", "start": 1021.92, "end": 1034.6, "text": "It's a culture shift, it's an engineering shift and I don't know about you, but for I've been I've been working in the valley for the last 15 years and this is the biggest change by orders of magnitude of everything that I've seen"}, {"id": "s144", "start": 1034.6, "end": 1037.0, "text": "in term culture and technology."}, {"id": "s145", "start": 1037.0, "end": 1043.04, "text": "So, um we're all here together and we're all figuring it out and that's that's what I wanted to talk to you today."}, {"id": "s146", "start": 1043.04, "end": 1044.736, "text": "Thank you."}, {"id": "s147", "start": 1044.736, "end": 1046.736, "text": "[applause]"}, {"id": "s148", "start": 1060.457, "end": 1062.457, "text": "[music]"}]}, {"id": "5Cxe5dv2Xlw", "title": "Why AI Agents Need Million-Token Context — Thomas Wolf & Olive Song, MiniMax", "channel": "AI Engineer", "duration": 1248, "upload_date": null, "url": "https://www.youtube.com/watch?v=5Cxe5dv2Xlw", "api": "/api/talks/5Cxe5dv2Xlw.json", "summary_url": "/#5Cxe5dv2Xlw", "transcript": {"html": "/transcripts/5Cxe5dv2Xlw.html", "txt": "/transcripts/5Cxe5dv2Xlw.txt", "vtt": "/transcripts/5Cxe5dv2Xlw.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 20.12, "text": "Joining us on stage is the co-founder and chief science officer at Hugging Face, Thomas Wolf."}, {"id": "s3", "start": 20.305, "end": 22.305, "text": "[music]"}, {"id": "s4", "start": 26.2, "end": 28.2, "text": "[music]"}, {"id": "s5", "start": 32.0, "end": 33.56, "text": "Hello everyone."}, {"id": "s6", "start": 33.56, "end": 36.04, "text": "Hello Olive, nice to have you on stage."}, {"id": "s7", "start": 36.04, "end": 37.0, "text": "Hi, nice to meet you."}, {"id": "s8", "start": 37.0, "end": 38.64, "text": "Thanks for having me, yeah."}, {"id": "s9", "start": 38.64, "end": 48.44, "text": "So I think you're on for a treat today because you just saw a GLM uh which is current number two on the artificial intelligence leaderboard."}, {"id": "s10", "start": 48.44, "end": 51.64, "text": "I take Fable out because nobody can use it."}, {"id": "s11", "start": 51.64, "end": 52.68, "text": "And now we have number four."}, {"id": "s12", "start": 52.68, "end": 57.76, "text": "So you basically you will have all the top models, at least the top open source model in a row."}, {"id": "s13", "start": 57.76, "end": 64.72, "text": "And we're very lucky to have Olive who has a pretty amazing path in life."}, {"id": "s14", "start": 64.72, "end": 66.96, "text": "Uh so she came to the US, Pennsylvania."}, {"id": "s15", "start": 66.96, "end": 77.52, "text": "She was studying, doing PhD at uh NYU uh in the lab of Jan LeCun working on J Pa, but we decided we won't talk about J Pa today, right?"}, {"id": "s16", "start": 77.52, "end": 79.08, "text": "Something for another day."}, {"id": "s17", "start": 79.08, "end": 88.03999999999999, "text": "Um and then instead of joining Hugging Face, which was in New York also at that time she decided to go join MiniMax."}, {"id": "s18", "start": 88.03999999999999, "end": 98.47999999999999, "text": "So for those who who maybe don't know all the all the neo labs around the world and you're you're forgiven because I think there's like 64 neo labs right now."}, {"id": "s19", "start": 98.47999999999999, "end": 103.24000000000001, "text": "MiniMax is one of the top of what we call the AI dragons in China."}, {"id": "s20", "start": 103.24000000000001, "end": 113.24000000000001, "text": "So these are the new there's there's Deep Seek which is very well known now, Moonshot who does Kimi Z and GLM that you just saw and now we have a MiniMax."}, {"id": "s21", "start": 113.24000000000001, "end": 119.0, "text": "They're all extremely good, extremely a team uh fighting for the first spot."}, {"id": "s22", "start": 119.0, "end": 129.08, "text": "Uh so the the the latest uh release of MiniMax was M3 uh just earlier earlier in June, which was the the top model at the time, top open-source model."}, {"id": "s23", "start": 129.08, "end": 130.28, "text": "Uh very impressive."}, {"id": "s24", "start": 130.28, "end": 135.12, "text": "There's a lot of very interesting things about this model, so we'll quickly dive in them."}, {"id": "s25", "start": 135.12, "end": 142.04, "text": "And then talk a little bit about uh what's what's what's specific about MiniMax, what's what's great there."}, {"id": "s26", "start": 142.04, "end": 145.04, "text": "So uh maybe Olive to to start a little bit."}, {"id": "s27", "start": 145.04, "end": 153.2, "text": "Can you Can you give us, you know, a a little bit of your your view of of M3, what you like about this model, how was the release?"}, {"id": "s28", "start": 153.2, "end": 154.07999999999998, "text": "Mhm."}, {"id": "s29", "start": 154.07999999999998, "end": 165.48, "text": "Yeah, M3 we released M3 earlier this month, and it is a smaller model with 400 around 400 billion total parameters and 20 billion activated."}, {"id": "s30", "start": 165.48, "end": 172.88, "text": "Um but it is very capable in terms of both coding performances, and also it understands vision."}, {"id": "s31", "start": 172.88, "end": 178.92000000000002, "text": "So um that's uh what open-source models don't usually have."}, {"id": "s32", "start": 178.92000000000002, "end": 189.76, "text": "It's that they can the model can only deal with coding, but it can also understand videos, um images, and it has a super uh long context of 1 million."}, {"id": "s33", "start": 189.76, "end": 194.28, "text": "Um with our new architecture called MSA, MiniMax Sparse Attention."}, {"id": "s34", "start": 194.28, "end": 205.4, "text": "So we we really put these three things together uh because we know that they are they will be very important in future AI applications."}, {"id": "s35", "start": 205.4, "end": 212.32, "text": "Coding capabilities, agentic capabilities, longer context, and multimodal understanding."}, {"id": "s36", "start": 212.32, "end": 215.56, "text": "Um yeah, I think that would be very interesting about the model."}, {"id": "s37", "start": 215.56, "end": 226.12, "text": "Yeah, so so there's a lot to unpack unpack in this model, and it's um it's it's still, I think, the only top five model open-source model that is actually multimodal, so we need to talk about that."}, {"id": "s38", "start": 226.12, "end": 239.16, "text": "But maybe first about the long context, because that was also the first one that really had this real 1 million token long context is actually functional and you guys had also the the Minimax pass attention"}, {"id": "s39", "start": 239.16, "end": 245.24, "text": "which is this one technique to to make that efficient that you also published and and share extensively."}, {"id": "s40", "start": 245.24, "end": 247.16, "text": "So can you can you talk a little bit about this?"}, {"id": "s41", "start": 247.16, "end": 252.08, "text": "Maybe how the project went from from the attention how to make this long context."}, {"id": "s42", "start": 252.08, "end": 265.08, "text": "Yeah, I would say the story about long context went back to even Minimax M1 and Minimax 01 where the model was actually was able to perform tasks of 10 million"}, {"id": "s43", "start": 265.08, "end": 266.08, "text": "token context."}, {"id": "s44", "start": 266.08, "end": 266.88, "text": "10 million?"}, {"id": "s45", "start": 266.88, "end": 268.919, "text": "10 million, yes."}, {"id": "s46", "start": 268.919, "end": 271.68, "text": "But then it was not an agentic model, right?"}, {"id": "s47", "start": 271.68, "end": 277.68, "text": "It was just 10 for example, you dump in a book, it would be able to give reviews on it and stuff like that."}, {"id": "s48", "start": 277.68, "end": 294.56, "text": "So what we realized was that, you know, longer context actually unlocks a lot of capabilities especially when interacting with users and now when, you know, the agent is interacting with the whole environment and getting all the tool responses,"}, {"id": "s49", "start": 294.56, "end": 304.48, "text": "getting multi rounds the like shorter context wouldn't be enough to perform the complex task."}, {"id": "s50", "start": 304.48, "end": 310.64, "text": "So for this version we said, \"Oh, we have to have our longer context backs.\""}, {"id": "s51", "start": 310.64, "end": 315.919, "text": "So what we pursued was with our Minimax sparse attention."}, {"id": "s52", "start": 315.919, "end": 324.12, "text": "Um which you know, was the architecture that was scalable and had a simple design."}, {"id": "s53", "start": 324.12, "end": 327.52, "text": "So I would say from a higher level, right?"}, {"id": "s54", "start": 327.52, "end": 343.28, "text": "It has an index branch that, you know, selects on a higher level what is what matters more in the context and then we have a sparse attention branch that calculates performs the calculation on the selected blocks"}, {"id": "s55", "start": 343.28, "end": 345.48, "text": "to actually performs the task."}, {"id": "s56", "start": 345.48, "end": 357.6, "text": "Um and so yeah, like that we really designed um an elegant architecture so that we can scale the length and then scale the model size in the future with that."}, {"id": "s57", "start": 357.6, "end": 358.4, "text": "That's beautiful."}, {"id": "s58", "start": 358.4, "end": 363.44, "text": "I like how for those who've been in the field for quite some time, we we had a lot of work on attention, right?"}, {"id": "s59", "start": 363.44, "end": 366.28, "text": "This N square and there was a lot of linear attention."}, {"id": "s60", "start": 366.28, "end": 366.76, "text": "Yeah."}, {"id": "s61", "start": 366.76, "end": 371.2, "text": "And then some that somehow all of these disappeared at some point when flash attention came around."}, {"id": "s62", "start": 371.2, "end": 373.72, "text": "We discovered we just needed more efficient camera."}, {"id": "s63", "start": 373.72, "end": 378.36, "text": "Now, I like how we come back to thinking, you know, first principle, what is attention?"}, {"id": "s64", "start": 378.36, "end": 380.84, "text": "How can we make that more efficient?"}, {"id": "s65", "start": 380.84, "end": 383.28, "text": "So, 1 million token is crazy, right?"}, {"id": "s66", "start": 383.28, "end": 387.0, "text": "GPT-2 was 1,024 and and everyone was like, \"Oh, that's really big."}, {"id": "s67", "start": 387.0, "end": 389.16, "text": "We we we never need more.\""}, {"id": "s68", "start": 389.16, "end": 390.48, "text": "Where do you see this coming?"}, {"id": "s69", "start": 390.48, "end": 391.6, "text": "Like, going in the future?"}, {"id": "s70", "start": 391.6, "end": 395.4, "text": "Like, Jeff Dean was pitching me the other day a trillion token attention."}, {"id": "s71", "start": 395.4, "end": 398.36, "text": "You think we should go to a trillion token attention?"}, {"id": "s72", "start": 398.36, "end": 402.0, "text": "So, that's definitely something we can explore towards, right?"}, {"id": "s73", "start": 402.0, "end": 404.76, "text": "Ultra lengths of the context."}, {"id": "s74", "start": 404.76, "end": 407.8, "text": "Definitely, it's something that's very exciting to explore with."}, {"id": "s75", "start": 407.8, "end": 414.52, "text": "And something that architecture design along with hardware um would require a lot of research onto that."}, {"id": "s76", "start": 414.52, "end": 414.919, "text": "Yeah."}, {"id": "s77", "start": 414.919, "end": 417.28, "text": "You think there's still a lot of low-hanging fruits?"}, {"id": "s78", "start": 417.28, "end": 429.08, "text": "So, typically today we saw Open AI really reducing I mean, we don't know how as of firm, but like reducing their their inference bill by half, by probably having some more efficient processing around tensions of any type."}, {"id": "s79", "start": 429.08, "end": 434.44, "text": "You think there's still a lot of low-hanging fruit that can be getting um how we can process that."}, {"id": "s80", "start": 434.44, "end": 443.16, "text": "So, so one one thing we're still very interesting about M3 is how cheap it is in particular because of this part attention and part because of its small one, but it's also very efficient."}, {"id": "s81", "start": 443.16, "end": 443.6, "text": "Right."}, {"id": "s82", "start": 443.6, "end": 445.96, "text": "You think we can go even way further?"}, {"id": "s83", "start": 445.96, "end": 450.12, "text": "And maybe how did you guys invented uh Min Max Fast Attention?"}, {"id": "s84", "start": 450.12, "end": 452.12, "text": "Was it an agent coming up with the idea?"}, {"id": "s85", "start": 452.12, "end": 454.44, "text": "Was it a human still coming up with the idea?"}, {"id": "s86", "start": 454.44, "end": 455.88, "text": "Tell us a little bit about"}, {"id": "s87", "start": 455.88, "end": 456.76, "text": "Yeah."}, {"id": "s88", "start": 456.76, "end": 469.8, "text": "Um, so we do think there's still a lot of work that can get into architecture and inference optimization so that the model can be more efficient, especially if there are tasks that are very task sensitive"}, {"id": "s89", "start": 469.8, "end": 472.88, "text": "but require very strong capabilities, right?"}, {"id": "s90", "start": 472.88, "end": 477.0, "text": "And for that those kind of tasks we really want model to be efficient."}, {"id": "s91", "start": 477.0, "end": 483.2, "text": "Um and who came up with this part of actually I think an intern from our team worked on that."}, {"id": "s92", "start": 483.2, "end": 485.44, "text": "That yeah, an intern."}, {"id": "s93", "start": 485.44, "end": 495.72, "text": "Uh that doesn't usually happen in a lot of labs because I think in some labs interns don't have access to the data, the work, and stuff."}, {"id": "s94", "start": 495.72, "end": 500.6, "text": "Uh but yeah, we are open to anyone who would like to contribute to our models."}, {"id": "s95", "start": 500.6, "end": 504.36, "text": "So, um the architecture was actually designed by an intern."}, {"id": "s96", "start": 504.36, "end": 505.04, "text": "It's very good."}, {"id": "s97", "start": 505.04, "end": 507.12, "text": "Still some work for interns here."}, {"id": "s98", "start": 507.12, "end": 508.68, "text": "Good good news."}, {"id": "s99", "start": 508.68, "end": 512.599, "text": "Um that's also a good segue to also how Min Max is working internally."}, {"id": "s100", "start": 512.599, "end": 518.28, "text": "So, so we were discussing before coming on stage I was saying everyone can propose a project."}, {"id": "s101", "start": 518.28, "end": 522.159, "text": "Can you tell us a little bit about how you are organized, how you do your research?"}, {"id": "s102", "start": 522.159, "end": 522.56, "text": "Mhm."}, {"id": "s103", "start": 522.56, "end": 523.32, "text": "Mhm."}, {"id": "s104", "start": 523.32, "end": 534.0, "text": "I think that is very different from uh even in school or even in earlier you know, the earlier tech companies is pretty pretty different."}, {"id": "s105", "start": 534.0, "end": 548.36, "text": "It's that um what we what we make sure is that we have good foundation and good um infrastructure so that anyone can play with the model and can think of what they can improve with the model."}, {"id": "s106", "start": 548.36, "end": 551.88, "text": "And then after model releases when they are free, right?"}, {"id": "s107", "start": 551.88, "end": 553.64, "text": "They can play with the model."}, {"id": "s108", "start": 553.64, "end": 556.24, "text": "They can think of their own evaluations."}, {"id": "s109", "start": 556.24, "end": 561.8, "text": "They can find their own weaknesses and propose a thing that they want to improve on the model."}, {"id": "s110", "start": 561.8, "end": 570.28, "text": "And then other people who are interested in that would, you know, propose to join the project and they will work on for a couple of weeks or even a couple of months."}, {"id": "s111", "start": 570.28, "end": 574.24, "text": "And when they work out, the final thing is shipped to our model."}, {"id": "s112", "start": 574.24, "end": 579.48, "text": "It it is, you you we use that in our final training and it's shipped out to the audience."}, {"id": "s113", "start": 579.48, "end": 579.8, "text": "Interesting."}, {"id": "s114", "start": 579.8, "end": 582.44, "text": "So, you can have people working for a really long time on project."}, {"id": "s115", "start": 582.44, "end": 586.04, "text": "When you say a couple of months, it can be like really deep exploration of"}, {"id": "s116", "start": 586.04, "end": 586.84, "text": "Yes."}, {"id": "s117", "start": 586.84, "end": 588.04, "text": "Yes."}, {"id": "s118", "start": 588.04, "end": 598.4, "text": "I would say, for example, architecture might require longer time of investigation, research, experiments, even redoing the evaluations for pre-training."}, {"id": "s119", "start": 598.4, "end": 600.6, "text": "Yes, so it might require longer time."}, {"id": "s120", "start": 600.6, "end": 601.4, "text": "Very nice, yeah."}, {"id": "s121", "start": 601.4, "end": 603.32, "text": "And I know you're also very big on evaluation."}, {"id": "s122", "start": 603.32, "end": 603.8, "text": "I agree."}, {"id": "s123", "start": 603.8, "end": 604.8, "text": "We could talk about that."}, {"id": "s124", "start": 604.8, "end": 612.28, "text": "I think what One thing probably related to that is this unique specificity that M3 and your team has um around multimodality."}, {"id": "s125", "start": 612.28, "end": 616.72, "text": "So, not just text, but the similar can also understand image and video."}, {"id": "s126", "start": 616.72, "end": 628.32, "text": "And as I understand, but but please explain explain better, when you read the model card on Hugging Face, it say the model was trained from the first step as a multimodal, not just have a like user one as after solved, right?"}, {"id": "s127", "start": 628.32, "end": 637.4, "text": "Can you tell us a little bit more about that and why you think it's important and and and why starting from the first step on multimodal training and not just just training this."}, {"id": "s128", "start": 637.4, "end": 640.8389999999999, "text": "Um so, we call it native multimodality."}, {"id": "s129", "start": 640.8389999999999, "end": 654.08, "text": "Um and so, it is somehow typical for model labs to train the multimodal, let's say, vision understanding capabilities after the text pre-training is done."}, {"id": "s130", "start": 654.08, "end": 657.56, "text": "Um they put adapters and then train that part."}, {"id": "s131", "start": 657.56, "end": 663.24, "text": "But what we found out was that that would actually harm the text performance."}, {"id": "s132", "start": 663.24, "end": 672.28, "text": "And the vision vision understanding performance wouldn't converge that well because the model is kind of converges towards the model the text understanding."}, {"id": "s133", "start": 672.28, "end": 675.44, "text": "Um and it's just not the most optimal."}, {"id": "s134", "start": 675.44, "end": 678.56, "text": "And also not the most scalable, if you think about it."}, {"id": "s135", "start": 678.56, "end": 680.8389999999999, "text": "We want to scale the data, right?"}, {"id": "s136", "start": 680.8389999999999, "end": 687.96, "text": "And also, we can also some labs um train this capability from halfway through the pre-training."}, {"id": "s137", "start": 687.96, "end": 690.0, "text": "For example, continued pre-training."}, {"id": "s138", "start": 690.0, "end": 696.56, "text": "But what we found that this would be very, you know, uh recipe sensitive."}, {"id": "s139", "start": 696.56, "end": 704.6, "text": "It is different for the recipe would be different for different architectures, different, you know, data mixtures, different learning rates."}, {"id": "s140", "start": 704.6, "end": 715.56, "text": "It's hard to control, hard to, you know, scale to you can't really scale your experiment results and conclusions to a larger model."}, {"id": "s141", "start": 715.56, "end": 721.96, "text": "And so you know, what we thought was why not just training from the very first step?"}, {"id": "s142", "start": 721.96, "end": 724.2, "text": "That comes to the most natural."}, {"id": "s143", "start": 724.2, "end": 728.4, "text": "We know that a lot of labs run into problems doing that."}, {"id": "s144", "start": 728.4, "end": 738.88, "text": "The model would collapse after a couple of steps of training, you know, both text and vision understanding, but we managed to solve that problem."}, {"id": "s145", "start": 738.88, "end": 746.24, "text": "We did a lot of work on VIT and we did a lot of work on the data that we actually training."}, {"id": "s146", "start": 746.24, "end": 751.2, "text": "For example, we do interleave the data, what we call interleave the data."}, {"id": "s147", "start": 751.2, "end": 765.48, "text": "It's actually natural data, but we keep the images and videos in instead of masking it out and we do some pretty good cleaning and masking on the data and we do very good reward modeling"}, {"id": "s148", "start": 765.48, "end": 770.72, "text": "so that we train it from the first step and scales up a lot."}, {"id": "s149", "start": 770.72, "end": 773.08, "text": "Yeah, it does does not collapse."}, {"id": "s150", "start": 773.08, "end": 774.56, "text": "That's really impressive."}, {"id": "s151", "start": 774.56, "end": 775.24, "text": "Impressive."}, {"id": "s152", "start": 775.24, "end": 778.28, "text": "Should we Should we expect much larger model in the future?"}, {"id": "s153", "start": 778.28, "end": 780.16, "text": "So this one is still fairly small, right?"}, {"id": "s154", "start": 780.16, "end": 785.64, "text": "It's It's 428 billion parameters, 23 active billion."}, {"id": "s155", "start": 785.64, "end": 789.2, "text": "Well, do you think you will go past the trillion?"}, {"id": "s156", "start": 789.2, "end": 790.44, "text": "Definitely."}, {"id": "s157", "start": 790.44, "end": 793.12, "text": "Yeah, definitely in the future."}, {"id": "s158", "start": 793.12, "end": 802.12, "text": "There are many tasks that wouldn't be able to the more model wouldn't be able to perform very good at with smaller parameters."}, {"id": "s159", "start": 802.12, "end": 805.64, "text": "We are definitely going more ambitious than this."}, {"id": "s160", "start": 805.64, "end": 806.16, "text": "It's great."}, {"id": "s161", "start": 806.16, "end": 807.52, "text": "Looking forward."}, {"id": "s162", "start": 807.52, "end": 816.52, "text": "Um another interesting thing I I always been find fascinating about Min Max is how how you also have this whole range of of apps and product, right?"}, {"id": "s163", "start": 816.52, "end": 823.76, "text": "So, I remember already So, so Min Max started to open source things on the on the hugging face platform in in January last year."}, {"id": "s164", "start": 823.76, "end": 832.24, "text": "So, that 18 month ago and and we were chatting a little bit about the team to understand what you were doing and I remember you So, you were already having a huge usage"}, {"id": "s165", "start": 832.24, "end": 835.0, "text": "on some of these of some of these apps."}, {"id": "s166", "start": 835.0, "end": 838.0, "text": "Um can you tell us a little bit how how this started, right?"}, {"id": "s167", "start": 838.0, "end": 845.4, "text": "So, was it basically you had a lot of apps and then you thought we have we have all this data, why not training a model and then they build up research team."}, {"id": "s168", "start": 845.4, "end": 847.8, "text": "How is how is the story there?"}, {"id": "s169", "start": 847.8, "end": 852.4, "text": "Um our our story is modeled from the first day."}, {"id": "s170", "start": 852.4, "end": 866.08, "text": "So, um I believe that multi-modality model a model that can understand all visions and outputs all modalities was the first thing that our um CEO planned on the first day even before the company even started."}, {"id": "s171", "start": 866.08, "end": 867.6, "text": "So, that was the dream of AGI."}, {"id": "s172", "start": 867.6, "end": 871.24, "text": "I think that was very very early even before ChatGPT came out."}, {"id": "s173", "start": 871.24, "end": 871.72, "text": "Wow."}, {"id": "s174", "start": 871.72, "end": 873.12, "text": "Um yeah."}, {"id": "s175", "start": 873.12, "end": 880.96, "text": "And then apps were something that comes along because you have some model capabilities you want people to experience it well."}, {"id": "s176", "start": 880.96, "end": 883.56, "text": "Not many people can use it with API, right?"}, {"id": "s177", "start": 883.56, "end": 886.68, "text": "We can't expect everyone to experience with API."}, {"id": "s178", "start": 886.68, "end": 898.36, "text": "So, we need good um user interaction, you know, interfaces, good apps, good scenarios that people can can you know, experience experience model with."}, {"id": "s179", "start": 898.36, "end": 907.16, "text": "I think actually those apps covered more than 300 million people around 200 countries globally."}, {"id": "s180", "start": 907.16, "end": 910.2, "text": "And I think over a million companies as well."}, {"id": "s181", "start": 910.2, "end": 917.96, "text": "Yeah, this was a mind-blowing when I heard about the the size and we we don't often realize the size of of of this type of usage already."}, {"id": "s182", "start": 917.96, "end": 934.36, "text": "And and that I kind of brings me to the question around um open source business model, and and all of that, which is the always existing question, which is right now it's nice to open source model, but you you also need to have some revenue stream, right?"}, {"id": "s183", "start": 934.36, "end": 941.4, "text": "So, I guess M3 is something you you decided, for instance, to be for free, and I'm I think it's it's it's great for the world."}, {"id": "s184", "start": 941.4, "end": 942.88, "text": "Um how do you see this?"}, {"id": "s185", "start": 942.88, "end": 945.96, "text": "Do you also have some specific models you use for the app?"}, {"id": "s186", "start": 945.96, "end": 952.68, "text": "Do you think about Do you think in the future you'll keep It's probably hard to say for sure, but do you think you'll keep open sourcing models?"}, {"id": "s187", "start": 952.68, "end": 955.68, "text": "How is the culture around open sourcing right now?"}, {"id": "s188", "start": 955.68, "end": 961.44, "text": "Personally, and also for the model research team, we always hope to open source the models."}, {"id": "s189", "start": 961.44, "end": 963.12, "text": "Um that is our plan."}, {"id": "s190", "start": 963.12, "end": 969.68, "text": "Because we really see how the open source community together can help the model build better."}, {"id": "s191", "start": 969.68, "end": 980.52, "text": "For example, we receive a lot of um feedbacks on the model performance from the great community, and we receive PRs on uh wh- whatever we open source."}, {"id": "s192", "start": 980.52, "end": 984.48, "text": "And those are very very valuable and come comes to our later versions."}, {"id": "s193", "start": 984.48, "end": 987.76, "text": "So, definitely open sourcing is great."}, {"id": "s194", "start": 987.76, "end": 988.12, "text": "That's great."}, {"id": "s195", "start": 988.12, "end": 993.68, "text": "And actually, do you have some ask for the audience, people who are using uh M3 or MiniMax?"}, {"id": "s196", "start": 993.68, "end": 998.44, "text": "Is there something you would love them to send back to you as feedback?"}, {"id": "s197", "start": 998.44, "end": 1004.0, "text": "Do you Do you, for instance, do you read when people try to modify the models or play around, you know, tweaks?"}, {"id": "s198", "start": 1004.0, "end": 1010.88, "text": "Or what is the best thing you you think you can take from the community uh for future models, for instance?"}, {"id": "s199", "start": 1010.88, "end": 1011.96, "text": "Mhm."}, {"id": "s200", "start": 1011.96, "end": 1017.56, "text": "I would say whatever um issues that people are running into, especially with multimodality, right?"}, {"id": "s201", "start": 1017.56, "end": 1020.12, "text": "This is the first time that we're combining it together."}, {"id": "s202", "start": 1020.12, "end": 1023.56, "text": "We are definitely going more ambitious on that in the future."}, {"id": "s203", "start": 1023.56, "end": 1026.36, "text": "It might have some flaws right now, but we are improving on that."}, {"id": "s204", "start": 1026.36, "end": 1033.88, "text": "So, whatever that's uh feedback that model is not good doing that great, we will definitely improve that in future versions."}, {"id": "s205", "start": 1033.88, "end": 1037.68, "text": "And also, whatever features that uh people want."}, {"id": "s206", "start": 1037.68, "end": 1041.439, "text": "Say, you know, for example, thinking effort."}, {"id": "s207", "start": 1041.439, "end": 1041.68, "text": "Right?"}, {"id": "s208", "start": 1041.68, "end": 1043.56, "text": "Some people ask for that."}, {"id": "s209", "start": 1043.56, "end": 1049.24, "text": "Um like everyone can ask, and we will try to accomplish that in the future models."}, {"id": "s210", "start": 1049.24, "end": 1049.48, "text": "Yeah."}, {"id": "s211", "start": 1049.48, "end": 1054.16, "text": "Do you see a lot of usage right now already in multimodality in terms of coding agents?"}, {"id": "s212", "start": 1054.16, "end": 1058.12, "text": "I feel like it's it's a little bit un- underexplored."}, {"id": "s213", "start": 1058.64, "end": 1067.8, "text": "It is It is, but um it can actually unlocks a lot of capabilities and a lot of uh agent applications."}, {"id": "s214", "start": 1067.8, "end": 1075.84, "text": "Say that for example, you want a model to read a PP- PowerPoint, uh or to read some report that is not very structured."}, {"id": "s215", "start": 1075.84, "end": 1085.68, "text": "Um and you want it to understand a very long video, say that you dump in a long-playing video, and then you want the model to act uh using some tools"}, {"id": "s216", "start": 1085.68, "end": 1087.52, "text": "uh after understanding it."}, {"id": "s217", "start": 1087.52, "end": 1092.64, "text": "And it unlocks a wide variety of um agent use cases."}, {"id": "s218", "start": 1092.64, "end": 1098.88, "text": "So, like the agent could finally watch my YouTube tutorial and understand how to use my coding tools, how I described it?"}, {"id": "s219", "start": 1098.88, "end": 1100.52, "text": "Is it something like that?"}, {"id": "s220", "start": 1100.52, "end": 1101.2, "text": "Uh"}, {"id": "s221", "start": 1101.2, "end": 1105.2, "text": "Could the agent finally watch YouTube tutorials and understand things from them?"}, {"id": "s222", "start": 1105.2, "end": 1106.52, "text": "Yeah, yeah, yeah."}, {"id": "s223", "start": 1106.52, "end": 1107.4, "text": "I think so."}, {"id": "s224", "start": 1107.4, "end": 1110.68, "text": "Do you use a lot of uh agent coding tools internally?"}, {"id": "s225", "start": 1110.68, "end": 1115.24, "text": "Is it like I mean, coding for sure, but like is it also already in terms of research?"}, {"id": "s226", "start": 1115.24, "end": 1117.6, "text": "Is it automated part or not?"}, {"id": "s227", "start": 1117.6, "end": 1118.72, "text": "How How does this uh"}, {"id": "s228", "start": 1118.72, "end": 1119.28, "text": "Yes."}, {"id": "s229", "start": 1119.28, "end": 1119.64, "text": "work?"}, {"id": "s230", "start": 1119.64, "end": 1122.84, "text": "Um we have our own research harnesses."}, {"id": "s231", "start": 1122.84, "end": 1126.6, "text": "Um we build our own research harnesses that automate our workflows."}, {"id": "s232", "start": 1126.6, "end": 1129.8, "text": "I would say a lot of our workflows are automated."}, {"id": "s233", "start": 1129.8, "end": 1137.76, "text": "You can see how um the latest frontier models all pursues capability less kernel optimization, right?"}, {"id": "s234", "start": 1137.76, "end": 1141.4, "text": "Like let the model post string other models."}, {"id": "s235", "start": 1141.4, "end": 1143.72, "text": "Um let the model build data."}, {"id": "s236", "start": 1143.72, "end": 1145.84, "text": "Auto data, stuff like that."}, {"id": "s237", "start": 1145.84, "end": 1151.0, "text": "Um you can see how more and more models are capable of doing those, including M3."}, {"id": "s238", "start": 1151.0, "end": 1156.68, "text": "Actually, we were very good at those cases, longer horizons and coronal organizations."}, {"id": "s239", "start": 1156.68, "end": 1167.32, "text": "Um and so we can use that model capability, harness it together, and help with our um daily routine, and make our iterations even faster."}, {"id": "s240", "start": 1167.32, "end": 1169.64, "text": "Is M3 building M4 already?"}, {"id": "s241", "start": 1169.64, "end": 1172.12, "text": "Um building M3.1."}, {"id": "s242", "start": 1172.12, "end": 1173.773, "text": "M3.1, okay."}, {"id": "s243", "start": 1173.773, "end": 1174.0, "text": "[laughter]"}, {"id": "s244", "start": 1174.0, "end": 1174.88, "text": "Let's hit the gym."}, {"id": "s245", "start": 1174.88, "end": 1176.0, "text": "Already."}, {"id": "s246", "start": 1176.0, "end": 1185.12, "text": "Um I I would love to finish on what what you find exciting in the coming month, what what do you think it it can be Asia in terms of feature"}, {"id": "s247", "start": 1185.12, "end": 1194.2, "text": "or or things you want to see happening in in AI or more generally in terms of whatever whatever really is top of your mind I would say and it's going to"}, {"id": "s248", "start": 1194.2, "end": 1195.48, "text": "happen."}, {"id": "s249", "start": 1195.48, "end": 1198.28, "text": "A lot of things are very exciting."}, {"id": "s250", "start": 1198.28, "end": 1212.0, "text": "Um but what I recently find the most exciting would be a multi-agents that I think a lot of AI applications are using, model routing, multi-agents um that allows even more capabilities,"}, {"id": "s251", "start": 1212.0, "end": 1223.0, "text": "even more complex tasks, and also it tells us what the models are capable and not capable of, and you can, you know, do a lot of things with that."}, {"id": "s252", "start": 1223.0, "end": 1224.76, "text": "It's pretty exciting."}, {"id": "s253", "start": 1224.76, "end": 1226.0, "text": "Thanks a lot, Alif."}, {"id": "s254", "start": 1226.0, "end": 1227.4, "text": "Pleasure to have you."}, {"id": "s255", "start": 1227.4, "end": 1228.84, "text": "Thanks for having me."}, {"id": "s256", "start": 1228.84, "end": 1230.104, "text": "Thanks, everyone."}, {"id": "s257", "start": 1230.104, "end": 1232.104, "text": "[applause]"}]}, {"id": "6pbQgnJ9Voc", "title": "Knowledge Systems: The New GTM Stack — Jeffrey Wang, Exa", "channel": "AI Engineer", "duration": 1129, "upload_date": null, "url": "https://www.youtube.com/watch?v=6pbQgnJ9Voc", "api": "/api/talks/6pbQgnJ9Voc.json", "summary_url": "/#6pbQgnJ9Voc", "transcript": {"html": "/transcripts/6pbQgnJ9Voc.html", "txt": "/transcripts/6pbQgnJ9Voc.txt", "vtt": "/transcripts/6pbQgnJ9Voc.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 13.48, "text": "Hey everybody, I'm Jeff."}, {"id": "s3", "start": 13.48, "end": 22.76, "text": "I guess I was introduced, but I'm the co-founder of Exa, and today going to give a talk on turning go-to-market into an AI engineering problem in the spirit of this"}, {"id": "s4", "start": 22.76, "end": 24.0, "text": "AI engineering fair."}, {"id": "s5", "start": 24.0, "end": 30.16, "text": "And just a quick show of hands just to like understand the audience, like raise your hand if you're a technical."}, {"id": "s6", "start": 30.48, "end": 31.04, "text": "Okay, great."}, {"id": "s7", "start": 31.04, "end": 38.12, "text": "Okay, so I kind of oriented this talk around like go-to-market as presented to to engineers."}, {"id": "s8", "start": 38.12, "end": 40.84, "text": "So, happy that I did that."}, {"id": "s9", "start": 40.84, "end": 41.08, "text": "Cool."}, {"id": "s10", "start": 41.08, "end": 47.0, "text": "So, first just to like ground the ground like what what Exa is cuz it's sort of relevant inside of this presentation."}, {"id": "s11", "start": 47.0, "end": 49.88, "text": "Exa is a Exa is a search engine for agents."}, {"id": "s12", "start": 49.88, "end": 53.12, "text": "Think like agents are really smart, but they don't have access to the web."}, {"id": "s13", "start": 53.12, "end": 55.68, "text": "We're like this web MCP web tool that agents can access."}, {"id": "s14", "start": 55.68, "end": 60.44, "text": "We power Cursor, we power Cognition, we power a lot of the AI ecosystem at this point."}, {"id": "s15", "start": 60.44, "end": 66.4, "text": "And before we start, I also just want to like talk about, you know, especially to the technical audience, like why should you even care?"}, {"id": "s16", "start": 66.4, "end": 67.68, "text": "Like why should you care about go-to-market?"}, {"id": "s17", "start": 67.68, "end": 77.48, "text": "I guess this audience cares about go-to-market cuz you chose to go to this go-to-market talk, but I think there's this like funny narrative right now, which is like people are like, \"Oh, like product is the only thing that matters.\""}, {"id": "s18", "start": 77.48, "end": 79.76, "text": "Or \"Distribution is the only thing that matters.\""}, {"id": "s19", "start": 79.76, "end": 87.56, "text": "And there's all sort of like all sorts of like Twitter flame wars like like oh, is Glean going to succeed because they're really good at distribution, but they're like what what the heck is their product?"}, {"id": "s20", "start": 87.56, "end": 95.16, "text": "And then and other people are like, \"Oh, the like the the product needs to be super good cuz agents you know, agents shop for the product, so they'll shop the for the best product.\""}, {"id": "s21", "start": 95.16, "end": 100.72, "text": "And so, my view and my experience in the last few years is that you just kind of have to do both."}, {"id": "s22", "start": 100.72, "end": 104.32, "text": "Like I think you have to get product right and you have to get go-to-market right."}, {"id": "s23", "start": 104.32, "end": 108.28, "text": "Like you got to build this thing, it's got to be good, and then you got to get it into people's hands."}, {"id": "s24", "start": 108.28, "end": 111.44, "text": "If you don't do both things, then you don't have a company."}, {"id": "s25", "start": 111.44, "end": 114.44, "text": "So, that's kind of my view on the matter."}, {"id": "s26", "start": 114.44, "end": 126.56, "text": "And I I say like a really funny thing also is like as a technical person when you start a company or you start some some sort of project, like very much so the bias is like, \"Hey, I'm going to just build the thing."}, {"id": "s27", "start": 126.56, "end": 128.52, "text": "I'm going to make it really really freaking good, right?\""}, {"id": "s28", "start": 128.52, "end": 130.8, "text": "Like that's kind of like the bias you have as like an engineer."}, {"id": "s29", "start": 130.8, "end": 135.16, "text": "That's the bias we had when we started X.ai and we were like honestly pretty bad at go-to-market."}, {"id": "s30", "start": 135.16, "end": 135.586, "text": "Like we"}, {"id": "s31", "start": 135.586, "end": 136.24, "text": "[laughter]"}, {"id": "s32", "start": 136.24, "end": 138.84, "text": "we were not doing enough marketing, we were not doing enough sales."}, {"id": "s33", "start": 138.84, "end": 149.88, "text": "Um but I think the cool thing about about um go-to-market particularly in 2026 is you can treat go-to-market like an engineering problem and particularly an AI engineering problem."}, {"id": "s34", "start": 149.88, "end": 151.6, "text": "And so I think that's like a super exciting thing."}, {"id": "s35", "start": 151.6, "end": 157.6, "text": "Like it's like more fun for engineers than ever to do go-to-market cuz you can automate things."}, {"id": "s36", "start": 157.6, "end": 164.72, "text": "You can you can do so much as one person and uh etc. Also um I want to make this interactive."}, {"id": "s37", "start": 164.72, "end": 171.6, "text": "If if anybody has questions at any point, please please ask cuz I'm aware there's a lot of talks and I don't want to bore you."}, {"id": "s38", "start": 171.6, "end": 171.959, "text": "Cool."}, {"id": "s39", "start": 171.959, "end": 173.12, "text": "So um cool."}, {"id": "s40", "start": 173.12, "end": 178.72, "text": "So so the hypothesis I have is if you're an engineer or or if you're anyone, you can treat go-to-market like an engineering problem."}, {"id": "s41", "start": 178.72, "end": 181.48, "text": "So first, I guess like what does what do go-to-market teams do?"}, {"id": "s42", "start": 181.48, "end": 186.04, "text": "So I have like a laundry list of things here of things that go-to-market teams do, but here are a few."}, {"id": "s43", "start": 186.04, "end": 189.08, "text": "Like one is you got to research like your customer, right?"}, {"id": "s44", "start": 189.08, "end": 190.68, "text": "You got to research your targets."}, {"id": "s45", "start": 190.68, "end": 193.76, "text": "You have to find out information about your about targets."}, {"id": "s46", "start": 193.76, "end": 196.88, "text": "You have to find the right people at particular companies."}, {"id": "s47", "start": 196.88, "end": 198.88, "text": "You have to build POCs."}, {"id": "s48", "start": 198.88, "end": 201.8, "text": "Um there's like a just a ton of stuff you have to do, right?"}, {"id": "s49", "start": 201.8, "end": 206.959, "text": "Um so you know, I'm not going to I'm not going to list everything here, but like what is the grand unifying theme?"}, {"id": "s50", "start": 206.959, "end": 210.0, "text": "Well, go-to-market is a data problem, right?"}, {"id": "s51", "start": 210.0, "end": 219.2, "text": "So you have all you have this like entire world of uh of of what your product does and then and this entire world of like all your potential customers"}, {"id": "s52", "start": 219.2, "end": 225.04, "text": "and you're just going to like learn and figure out what your world looks like."}, {"id": "s53", "start": 225.04, "end": 227.48, "text": "And so this is my this is my uh proposal."}, {"id": "s54", "start": 227.48, "end": 231.48, "text": "It's a data problem and we have to solve from a data perspective."}, {"id": "s55", "start": 231.519, "end": 231.84, "text": "Cool."}, {"id": "s56", "start": 231.84, "end": 234.32, "text": "So okay, so what is data that is relevant?"}, {"id": "s57", "start": 234.32, "end": 240.52, "text": "Uh I propose that you need basically a live model of your world that agents can act on."}, {"id": "s58", "start": 240.52, "end": 241.92, "text": "And so, what does that mean?"}, {"id": "s59", "start": 241.92, "end": 244.32, "text": "Okay, well, one is you have a ton of internal data, right?"}, {"id": "s60", "start": 244.32, "end": 254.12, "text": "There's all this information that you know about your customers, about people that are at your company, uh data about how people use the product."}, {"id": "s61", "start": 254.12, "end": 256.6, "text": "That's like internal data that you know."}, {"id": "s62", "start": 256.6, "end": 258.28, "text": "And then there's all sorts of external data, right?"}, {"id": "s63", "start": 258.28, "end": 268.8, "text": "Like there's over 60 million companies in the world, and there's like billions of people, like over a billion that are on LinkedIn, for example, and all sorts of stuff are is is like happening every day, right?"}, {"id": "s64", "start": 268.8, "end": 270.52, "text": "Like there's all this news."}, {"id": "s65", "start": 270.52, "end": 282.8, "text": "And so, when you're building like this data go-to-market system, um it's important to keep in mind just like all the different sources that exist and and and uh and are available to your agents."}, {"id": "s66", "start": 282.96, "end": 283.32, "text": "And cool."}, {"id": "s67", "start": 283.32, "end": 291.08, "text": "So, I'm going to like go through, hopefully pretty fast, just all the different components of what we've built at Exa."}, {"id": "s68", "start": 291.08, "end": 294.84000000000003, "text": "And just for like context, uh I've been really passionate about this for a long time."}, {"id": "s69", "start": 294.84000000000003, "end": 301.52, "text": "So, like Exa was launched in uh the middle of 2023, and so we were post-GPT-4."}, {"id": "s70", "start": 301.52, "end": 312.04, "text": "And GPT-4 was really incredible, cuz it could actually, even then, even though it's way worse than like Fable or whatever, like it could actually just automate entire parts of go-to-market."}, {"id": "s71", "start": 312.04, "end": 317.6, "text": "And so, from the beginning, I've been thinking about our go-to-market from from a very, very uh AI agent-first perspective."}, {"id": "s72", "start": 317.6, "end": 322.52, "text": "And so, we're going to go over two interfaces that we have that help us, and then two agents."}, {"id": "s73", "start": 322.52, "end": 324.52, "text": "Cool."}, {"id": "s74", "start": 326.919, "end": 327.16, "text": "Cool."}, {"id": "s75", "start": 327.16, "end": 330.2, "text": "Okay, the first is what we call our ICP dashboard."}, {"id": "s76", "start": 330.2, "end": 336.24, "text": "And the ICP dashboard is a product that we have internally that answers the question, like what is our world?"}, {"id": "s77", "start": 336.24, "end": 341.48, "text": "Like what is the world of customers and use cases that we care about?"}, {"id": "s78", "start": 341.48, "end": 351.72, "text": "And what we actually do is we go ahead and use Exa, and again, Exa is this like uh arbitrarily powerful search engine for AIs essentially."}, {"id": "s79", "start": 351.72, "end": 357.4, "text": "And we just classify basically like every possible company that is inside of our total addressable market."}, {"id": "s80", "start": 357.4, "end": 363.48, "text": "And I kind of blurred out some of the details on like how much money we make from each category and stuff like that."}, {"id": "s81", "start": 363.48, "end": 369.6, "text": "But yeah, we have like categories like model providers, AI coding platforms like say Cursor, go-to-market intelligence tools."}, {"id": "s82", "start": 369.6, "end": 376.6, "text": "And this makes up our TAM and we have an understanding of literally like almost every company within those segments."}, {"id": "s83", "start": 376.6, "end": 378.84, "text": "And then for each of those companies we can deep dive, right?"}, {"id": "s84", "start": 378.84, "end": 380.52, "text": "So here's the example of SpaceX."}, {"id": "s85", "start": 380.52, "end": 385.76, "text": "We can see how much annual spend we could anticipate them to have then all this like metadata about the company."}, {"id": "s86", "start": 385.76, "end": 389.72, "text": "So we have a list of all the companies and then a ton of data about each company."}, {"id": "s87", "start": 389.72, "end": 391.0, "text": "How do we do this?"}, {"id": "s88", "start": 391.0, "end": 394.15999999999997, "text": "Again, we're able to do this because Exa is this search engine."}, {"id": "s89", "start": 394.15999999999997, "end": 399.44, "text": "We take the internet, we crawl it, we train we train embeddings to do web search really well."}, {"id": "s90", "start": 399.44, "end": 404.48, "text": "And so basically from a technical perspective you can think about Exa as like embeddings over the internet."}, {"id": "s91", "start": 404.48, "end": 412.68, "text": "And when you have embeddings over the internet you have this like arbitrarily powerful semantic filtering and slicing and dicing of any type of data that you want."}, {"id": "s92", "start": 412.68, "end": 418.12, "text": "And so we use that to generate this this like gigantic list of potential ICPs."}, {"id": "s93", "start": 419.68, "end": 420.0, "text": "Cool."}, {"id": "s94", "start": 420.0, "end": 423.6, "text": "Next, we have a tool we call Request Lens."}, {"id": "s95", "start": 423.6, "end": 424.96, "text": "Request Lens, what is Request Lens?"}, {"id": "s96", "start": 424.96, "end": 430.88, "text": "Well, it's basically a system where anytime something significant happens with any of our customers, we're alerted."}, {"id": "s97", "start": 430.88, "end": 437.68, "text": "Someone signed up, someone used a ton of searches, someone stopped using searches, someone showed up that we really really care about."}, {"id": "s98", "start": 437.68, "end": 444.04, "text": "All these things are signals that we are notified about and that our team can act on."}, {"id": "s99", "start": 448.76, "end": 449.8, "text": "Cool."}, {"id": "s100", "start": 449.8, "end": 453.72, "text": "So those are the two interfaces that we have and then I'll go over two types of agents that we have."}, {"id": "s101", "start": 453.72, "end": 456.0, "text": "So one is coding agents."}, {"id": "s102", "start": 456.0, "end": 462.04, "text": "So our go-to-market team is crazy crazy crazy deep on agents."}, {"id": "s103", "start": 462.04, "end": 469.52, "text": "So like like our our our engineering team uses a lot of agents, but our go-to-market team is like like you could look you could look at some of their like devin spend and like other agent spend."}, {"id": "s104", "start": 469.52, "end": 470.64, "text": "It's really freaking high."}, {"id": "s105", "start": 470.64, "end": 477.6, "text": "And that's because everybody on our go-to-market team is constantly asking agents about our customers."}, {"id": "s106", "start": 477.6, "end": 482.56, "text": "Uh we have like like account executives that build demos for our customers."}, {"id": "s107", "start": 482.56, "end": 489.08, "text": "Like it's just this crazy ecosystem where we have like maybe a dozen different agents inside of our Slack and anybody can use any of them."}, {"id": "s108", "start": 489.08, "end": 492.0, "text": "They all have access to tons and tons of our internal data."}, {"id": "s109", "start": 492.0, "end": 493.6, "text": "And uh yeah."}, {"id": "s110", "start": 493.6, "end": 500.08, "text": "Anytime we want to dig deeper on account, anytime we want to make a demo, etc., we depend heavily on agents."}, {"id": "s111", "start": 503.0, "end": 503.24, "text": "Cool."}, {"id": "s112", "start": 503.24, "end": 505.68, "text": "And then I want to talk about another really cool agent that I'm pretty proud of."}, {"id": "s113", "start": 505.68, "end": 507.08, "text": "We call it Jeff Bots."}, {"id": "s114", "start": 507.08, "end": 508.52, "text": "Uh or I call it Jeff Bots."}, {"id": "s115", "start": 508.52, "end": 512.0, "text": "Uh Jeff Bots is an AI clone of myself."}, {"id": "s116", "start": 512.0, "end": 513.28, "text": "Uh as much as possible."}, {"id": "s117", "start": 513.28, "end": 513.919, "text": "So, what is it?"}, {"id": "s118", "start": 513.919, "end": 522.64, "text": "Well, basically this winter break uh I'm sure a lot of you spent that break playing with Opus 4.5. And I was no different."}, {"id": "s119", "start": 522.64, "end": 525.24, "text": "So, I was in Puerto No, I was in Mexico."}, {"id": "s120", "start": 525.24, "end": 528.0, "text": "I was in Mexico and I would I had a week off."}, {"id": "s121", "start": 528.0, "end": 533.72, "text": "And so, my goal with that week and with Opus 4.5 was to uh just try to make a digital clone of myself."}, {"id": "s122", "start": 533.72, "end": 540.2, "text": "And so, I did things like analyze like 760 of my emails to figure out what my email voice is."}, {"id": "s123", "start": 540.2, "end": 545.44, "text": "Like, oh, I use 18 words on average per email and I like to end emails with best and not sincerely."}, {"id": "s124", "start": 545.44, "end": 546.96, "text": "Like all all that type of stuff, right?"}, {"id": "s125", "start": 546.96, "end": 550.32, "text": "So, I made like a like a voice for myself."}, {"id": "s126", "start": 550.32, "end": 553.44, "text": "And then I also made a decision-making framework."}, {"id": "s127", "start": 553.44, "end": 559.16, "text": "So, I made like a decision-making framework where I analyzed hundreds of decisions I've made in the past."}, {"id": "s128", "start": 559.16, "end": 561.96, "text": "And I I analyzed them and I created evals."}, {"id": "s129", "start": 561.96, "end": 569.08, "text": "So, I actually created evals from those decisions and calibrated this agent system to behave like myself."}, {"id": "s130", "start": 569.08, "end": 573.4, "text": "And then finally I gave it like read and write access to all the data that I personally have."}, {"id": "s131", "start": 573.4, "end": 584.12, "text": "And there's a cool advantage to this because like I basically have access to every single system at the company uh cuz I'm in the the the nice seat of of having that and so like"}, {"id": "s132", "start": 584.12, "end": 587.32, "text": "um yeah, this thing has access to like everything."}, {"id": "s133", "start": 587.32, "end": 596.04, "text": "And basically what happens is anybody at the company can use Jeffbot to create drafts of Slack messages that are basically like answers or decisions that are made."}, {"id": "s134", "start": 596.04, "end": 597.68, "text": "And this is a huge great thing."}, {"id": "s135", "start": 597.68, "end": 601.48, "text": "Like our go-to-market team uses it to like draft emails, for example."}, {"id": "s136", "start": 603.76, "end": 604.72, "text": "Cool."}, {"id": "s137", "start": 604.72, "end": 610.04, "text": "Um all right, so those those are the systems that uh that we have at at Exa."}, {"id": "s138", "start": 610.04, "end": 610.96, "text": "It works pretty well."}, {"id": "s139", "start": 610.96, "end": 614.08, "text": "Our go-to-market team is very lean, but very productive."}, {"id": "s140", "start": 614.08, "end": 625.84, "text": "Um and so yeah, I just want to cover like lastly just a few principles um principles I have around what it means to be an agent-first company."}, {"id": "s141", "start": 625.84, "end": 628.52, "text": "So firstly, to be agent-first you must be API-first, right?"}, {"id": "s142", "start": 628.52, "end": 640.68, "text": "So like all these systems that we built, whether they were those whether it was those agents or whether it was those GUIs that we have, like if there did not exist really good APIs on top of any internal and external data"}, {"id": "s143", "start": 640.68, "end": 642.12, "text": "we'd be we'd be out of luck, right?"}, {"id": "s144", "start": 642.12, "end": 644.04, "text": "Like you need to create really good APIs."}, {"id": "s145", "start": 644.04, "end": 649.72, "text": "If you don't have really good APIs your agents are not going to be able to have data access."}, {"id": "s146", "start": 649.72, "end": 652.04, "text": "So you can think about this as MCP, CLI, whatever, right?"}, {"id": "s147", "start": 652.04, "end": 653.32, "text": "Like it doesn't really matter."}, {"id": "s148", "start": 653.32, "end": 656.48, "text": "Uh you just need some interface that's programmatic."}, {"id": "s149", "start": 657.12, "end": 666.4, "text": "Secondly is like I I think there's like still this mistake in the agent world which is made that's like hey, does everything need to be a chatbot?"}, {"id": "s150", "start": 666.4, "end": 676.6, "text": "Uh I think the answer is no. Like I think I think both GUIs and chatbots are are both super useful and have their own benefits."}, {"id": "s151", "start": 676.6, "end": 684.92, "text": "Like uh I don't know how many people in this room have thought about dynamic user interfaces but like yes, dynamic user interfaces are amazing."}, {"id": "s152", "start": 684.92, "end": 689.56, "text": "Like yes, technically AI can just produce a new UI for any use case that you have."}, {"id": "s153", "start": 689.56, "end": 693.36, "text": "Like just to answer a question, it could produce like an HTML markdown file, right?"}, {"id": "s154", "start": 693.36, "end": 702.76, "text": "But I think there is something really nice about being able to visit the same consistent UX for the same use cases over time so that you can like learn how to use some tool."}, {"id": "s155", "start": 702.76, "end": 713.36, "text": "Um so yeah, I think like having crystallized UIs and then also arbitrarily powerful flexible chat agents are both important components of being agent first."}, {"id": "s156", "start": 713.52, "end": 724.52, "text": "And then finally, uh you know, there's this question like, \"Hey, should you like shop for like Salesforce or should you like build your own CRM or something, right?\""}, {"id": "s157", "start": 724.52, "end": 726.48, "text": "I actually think this is like a false dichotomy."}, {"id": "s158", "start": 726.48, "end": 730.24, "text": "It's like like there it's not a choice."}, {"id": "s159", "start": 730.24, "end": 734.56, "text": "Like we don't live in a world where the choice is between purchasing SaaS and building things yourself."}, {"id": "s160", "start": 734.56, "end": 742.36, "text": "Like the way I like to think about it is like you should just be using something that is arbitrarily customizable, right?"}, {"id": "s161", "start": 742.36, "end": 749.8, "text": "Like whether you like obviously if you build something yourself, then it's arbitrarily customizable cuz you can write code and make it better at any given point."}, {"id": "s162", "start": 749.8, "end": 759.32, "text": "But also if you procure SaaS, um if you can make that SaaS work on your behalf and be arbitrarily customizable, then that works too, right?"}, {"id": "s163", "start": 759.32, "end": 767.16, "text": "Like you don't need to build this like GUI and like have a proactive roadmap as to like what features would make really great sense inside of some system."}, {"id": "s164", "start": 767.16, "end": 772.96, "text": "Like if you can arbitrarily customize the system, even if it's a system you've purchased, then you're like pretty good, right?"}, {"id": "s165", "start": 772.96, "end": 774.48, "text": "So like for example, we use Salesforce."}, {"id": "s166", "start": 774.48, "end": 779.92, "text": "Like we use Salesforce at X.ai and uh it's great because uh it's a really good good database."}, {"id": "s167", "start": 779.92, "end": 785.96, "text": "It's made a lot of amazing choices around what sales should look like, choices that we don't want to make ourselves."}, {"id": "s168", "start": 785.96, "end": 787.2, "text": "And then it exposes MCP."}, {"id": "s169", "start": 787.2, "end": 789.56, "text": "So all of our agents have access to Salesforce MCP."}, {"id": "s170", "start": 789.56, "end": 790.24, "text": "Works really well."}, {"id": "s171", "start": 790.24, "end": 791.92, "text": "Our team uses it every day."}, {"id": "s172", "start": 791.92, "end": 798.24, "text": "And so yeah, I think infinite customizability um is is really the highest order bit."}, {"id": "s173", "start": 799.76, "end": 800.6, "text": "Cool."}, {"id": "s174", "start": 800.6, "end": 803.8389999999999, "text": "Um that's that's all I had."}, {"id": "s175", "start": 803.8389999999999, "end": 806.08, "text": "Uh Yeah, does anyone have any questions?"}, {"id": "s176", "start": 806.08, "end": 808.96, "text": "Oh, we have time for a few questions."}, {"id": "s177", "start": 808.96, "end": 811.28, "text": "Okay, coming."}, {"id": "s178", "start": 816.28, "end": 820.92, "text": "Hey, um so you said you uh took all your past decisions."}, {"id": "s179", "start": 820.92, "end": 823.32, "text": "Can you elaborate a bit about that?"}, {"id": "s180", "start": 823.32, "end": 825.88, "text": "What What artifacts are those?"}, {"id": "s181", "start": 825.88, "end": 827.92, "text": "Usually people don't save like their decisions."}, {"id": "s182", "start": 827.92, "end": 828.64, "text": "Is it Slack?"}, {"id": "s183", "start": 828.64, "end": 829.28, "text": "Is it email?"}, {"id": "s184", "start": 829.28, "end": 832.0, "text": "Is it other other artifacts?"}, {"id": "s185", "start": 832.0, "end": 832.88, "text": "Yeah, good question."}, {"id": "s186", "start": 832.88, "end": 836.72, "text": "I looked at decisions I made within Slack and email."}, {"id": "s187", "start": 836.72, "end": 842.56, "text": "I mean, a surprisingly large amount of everything that goes on a company is is is on Slack, right?"}, {"id": "s188", "start": 842.56, "end": 849.72, "text": "So like if you just read like a ton of Slack history, like you can definitely find hundreds of decisions that you made in the past."}, {"id": "s189", "start": 849.72, "end": 850.36, "text": "Awesome."}, {"id": "s190", "start": 850.36, "end": 851.76, "text": "Quick question uh over here."}, {"id": "s191", "start": 851.76, "end": 861.08, "text": "Uh so your go-to-market team, what's the split between uh are they just all like AI cracked or do they also have like the domain expertise, too?"}, {"id": "s192", "start": 861.08, "end": 864.12, "text": "What's the split between technical and non-technical?"}, {"id": "s193", "start": 864.12, "end": 871.72, "text": "Because obviously you need them to like know how to do marketing, sales, etc. But then do they also are they also upskilling in terms of using AI systems?"}, {"id": "s194", "start": 871.72, "end": 875.32, "text": "Are you handing them tools or they building their own?"}, {"id": "s195", "start": 875.32, "end": 876.56, "text": "That's a very good question."}, {"id": "s196", "start": 876.56, "end": 885.8, "text": "So our go-to-market team is comprised of like there's there's account executives which like run the deals."}, {"id": "s197", "start": 885.8, "end": 891.92, "text": "There are like sales like SDRs that help with uh demand generation."}, {"id": "s198", "start": 891.92, "end": 895.64, "text": "And then there are separately they're separate like a FDE org."}, {"id": "s199", "start": 895.64, "end": 898.08, "text": "So forward deployed engineering organization."}, {"id": "s200", "start": 898.08, "end": 911.0, "text": "And what I'll say is that like everyone that's Okay, everyone that's uh not not in FDE is like has learned how to use AI really well."}, {"id": "s201", "start": 911.0, "end": 914.48, "text": "So like the answer is like they're not vibe coding."}, {"id": "s202", "start": 914.48, "end": 917.12, "text": "They're not generally with you know, in some there's some exceptions."}, {"id": "s203", "start": 917.12, "end": 920.4, "text": "They're not generally vibe coding these interfaces that we have."}, {"id": "s204", "start": 920.4, "end": 922.56, "text": "Um but they're using the tools really really well."}, {"id": "s205", "start": 922.56, "end": 928.6, "text": "And like we make sure that we have training sessions and like just make sure that people really understand how to use these tools."}, {"id": "s206", "start": 928.6, "end": 937.44, "text": "And then this funny we have this funny thing which is like our four deployed engineering organization is actually the one that like does a lot of the maintenance and feature building"}, {"id": "s207", "start": 937.44, "end": 938.96, "text": "uh of these AI systems."}, {"id": "s208", "start": 938.96, "end": 953.24, "text": "And so they're both running deals and like like supporting deals um but then also making everything smoother by like doing sales but then also building the sales system."}, {"id": "s209", "start": 953.24, "end": 955.8, "text": "Like it's it's kind of it's kind of a funky thing we have going on."}, {"id": "s210", "start": 955.8, "end": 957.8, "text": "Yeah."}, {"id": "s211", "start": 958.44, "end": 962.08, "text": "How do you think about uh different security?"}, {"id": "s212", "start": 962.08, "end": 962.64, "text": "Oh."}, {"id": "s213", "start": 962.64, "end": 963.16, "text": "Hey."}, {"id": "s214", "start": 963.16, "end": 966.56, "text": "How do you think about different uh security boundaries within your enterprise?"}, {"id": "s215", "start": 966.56, "end": 977.8, "text": "What do you What you said suggested that you've got Jeffbot which had runs with all of your full privileges and then it's available to everybody which suggests that there's one security level and everyone can see everything all the time."}, {"id": "s216", "start": 977.8, "end": 982.76, "text": "Is that what you're going with or is there some uh other guardrails in place?"}, {"id": "s217", "start": 982.76, "end": 983.6, "text": "Yeah, that's a good question."}, {"id": "s218", "start": 983.6, "end": 987.4, "text": "We we pay pretty special we we pay pretty careful attention to guardrails."}, {"id": "s219", "start": 987.4, "end": 999.68, "text": "So for example um in the case of Jeffbot um when I use Jeffbot and I call Jeffbot has access to a ton of systems and it can for example do reads and writes."}, {"id": "s220", "start": 999.68, "end": 1011.92, "text": "However, when anybody else calls Jeffbot all can do is draft messages and also I don't give Jeffbot permissions to all of our MCPs and tools in the case where other people call it."}, {"id": "s221", "start": 1011.92, "end": 1018.72, "text": "And so in short it's like pretty it's pretty well defined or we we we do pay some care to the security."}, {"id": "s222", "start": 1018.72, "end": 1019.08, "text": "Yeah."}, {"id": "s223", "start": 1019.08, "end": 1021.48, "text": "Okay, last question."}, {"id": "s224", "start": 1024.56, "end": 1029.48, "text": "Um, can you can you share the origin story of the FDE team?"}, {"id": "s225", "start": 1029.48, "end": 1032.56, "text": "Did that just happen organically or did you intentionally do it?"}, {"id": "s226", "start": 1032.56, "end": 1036.48, "text": "I'm just really curious like how that came to exist."}, {"id": "s227", "start": 1036.48, "end": 1037.079, "text": "Yeah, for sure."}, {"id": "s228", "start": 1037.079, "end": 1045.36, "text": "I mean, uh my my philos- my my hypothesis on this is like, once upon a time the FDE role didn't really exist."}, {"id": "s229", "start": 1045.36, "end": 1049.8, "text": "Like, Palantir started calling some people FDEs, but it that was really it."}, {"id": "s230", "start": 1049.8, "end": 1054.52, "text": "And what tech companies had was like solutions and sales engineers."}, {"id": "s231", "start": 1054.52, "end": 1057.08, "text": "And then, like account executives."}, {"id": "s232", "start": 1057.08, "end": 1058.24, "text": "I was a solutions engineer."}, {"id": "s233", "start": 1058.24, "end": 1059.16, "text": "Got it."}, {"id": "s234", "start": 1059.16, "end": 1059.64, "text": "Yeah, yeah."}, {"id": "s235", "start": 1059.64, "end": 1075.96, "text": "The thing The thing that I think has changed is that um because of AI, as like en- as a technical person that is supporting revenue generation, you can actually not only support the revenue generation, but then very easily build the tooling"}, {"id": "s236", "start": 1075.96, "end": 1078.04, "text": "to smooth everything over."}, {"id": "s237", "start": 1078.04, "end": 1081.4, "text": "And make your own life easier, make the lives of AEs easier."}, {"id": "s238", "start": 1081.4, "end": 1083.0, "text": "Like, because of AI, this is just possible now."}, {"id": "s239", "start": 1083.0, "end": 1087.36, "text": "Like, that's like two Before that was like two jobs, and now it's like one job."}, {"id": "s240", "start": 1087.36, "end": 1088.84, "text": "Um in theory."}, {"id": "s241", "start": 1088.84, "end": 1095.2, "text": "Like, now when our team grows, like right now it's about eight or nine FDEs, like what will will it scale such that everyone does everything?"}, {"id": "s242", "start": 1095.2, "end": 1095.8, "text": "Probably not."}, {"id": "s243", "start": 1095.8, "end": 1100.24, "text": "But, at least right now that's what we have, and I think that's a really good working model to get pretty far."}, {"id": "s244", "start": 1100.24, "end": 1102.16, "text": "Eight out of how many?"}, {"id": "s245", "start": 1102.16, "end": 1104.56, "text": "Uh eight Oh, eight of like how big is our go-to-market org?"}, {"id": "s246", "start": 1104.56, "end": 1108.68, "text": "Or eight You have eight FDEs, and the size of the company right now is how many?"}, {"id": "s247", "start": 1108.68, "end": 1111.44, "text": "Oh, the We're about 115 people."}, {"id": "s248", "start": 1111.44, "end": 1111.84, "text": "Okay."}, {"id": "s249", "start": 1111.84, "end": 1113.84, "text": "Yeah."}]}, {"id": "7A65O-0lvKE", "title": "Which AI startups actually land enterprise contracts? — Brian Lewis, Millennium", "channel": "AI Engineer", "duration": 1125, "upload_date": null, "url": "https://www.youtube.com/watch?v=7A65O-0lvKE", "api": "/api/talks/7A65O-0lvKE.json", "summary_url": "/#7A65O-0lvKE", "transcript": {"html": "/transcripts/7A65O-0lvKE.html", "txt": "/transcripts/7A65O-0lvKE.txt", "vtt": "/transcripts/7A65O-0lvKE.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.68, "end": 14.24, "text": "Welcome everybody."}, {"id": "s3", "start": 14.24, "end": 17.36, "text": "Sorry for everybody who was already here and missed the Coinbase guy."}, {"id": "s4", "start": 17.36, "end": 20.4, "text": "I have no idea where he went or why he didn't come."}, {"id": "s5", "start": 20.4, "end": 23.72, "text": "I was actually pretty excited to hear about his his comments."}, {"id": "s6", "start": 23.72, "end": 28.16, "text": "But today I'm going to talk about which AI startups actually win enterprise contracts."}, {"id": "s7", "start": 28.16, "end": 32.279, "text": "So to begin I thought this was going to be a different audience."}, {"id": "s8", "start": 32.279, "end": 35.72, "text": "I didn't realize this was going to be mostly people on the leadership track."}, {"id": "s9", "start": 35.72, "end": 38.44, "text": "I thought I was going to be speaking to more AI engineers."}, {"id": "s10", "start": 38.44, "end": 45.0, "text": "So maybe just by show of hands, how many of you represent like the engineering or startup or like seller side?"}, {"id": "s11", "start": 45.0, "end": 47.36, "text": "And then how many of you represent maybe like the buyer side?"}, {"id": "s12", "start": 47.36, "end": 50.28, "text": "Like you're in the enterprise, you're trying to get these tools in."}, {"id": "s13", "start": 50.28, "end": 51.84, "text": "Okay, so we got a good mix."}, {"id": "s14", "start": 51.84, "end": 53.96, "text": "I'm going to try to balance that out today."}, {"id": "s15", "start": 53.96, "end": 57.4, "text": "I work on product stuff at Millennium, which is a hedge fund."}, {"id": "s16", "start": 57.4, "end": 58.72, "text": "We build a lot of stuff."}, {"id": "s17", "start": 58.72, "end": 60.16, "text": "I can't talk about any of it."}, {"id": "s18", "start": 60.16, "end": 64.199, "text": "So I'm going to talk about stuff that we we look at and evaluate."}, {"id": "s19", "start": 64.199, "end": 65.72, "text": "It's going to be pretty generic."}, {"id": "s20", "start": 65.72, "end": 71.28, "text": "I tried to make it as interesting as possible while still getting my compliance department to be okay with me doing this."}, {"id": "s21", "start": 71.28, "end": 75.03999999999999, "text": "But also need to say legally that I'm speaking as an individual."}, {"id": "s22", "start": 75.03999999999999, "end": 78.72, "text": "I am not representing my company and all opinions are my own."}, {"id": "s23", "start": 78.72, "end": 81.88, "text": "So with that we can dive in."}, {"id": "s24", "start": 81.88, "end": 85.0, "text": "So I ran through this with my parents last week."}, {"id": "s25", "start": 85.0, "end": 87.44, "text": "I don't I grew up not that far from here."}, {"id": "s26", "start": 87.44, "end": 91.48, "text": "And my mom basically said, \"Why are you spending your time teaching vendors how to sell to you?"}, {"id": "s27", "start": 91.48, "end": 93.72, "text": "Aren't you busy enough already?\""}, {"id": "s28", "start": 93.72, "end": 97.92, "text": "And the real answer to that question is I really like how stuff works."}, {"id": "s29", "start": 97.92, "end": 99.92, "text": "I like seeing stuff come together."}, {"id": "s30", "start": 99.92, "end": 102.36, "text": "My bachelor's degree was in economics."}, {"id": "s31", "start": 102.36, "end": 104.96000000000001, "text": "And I really love seeing things just work well."}, {"id": "s32", "start": 104.96000000000001, "end": 111.08, "text": "So AI's been really interesting because it's kind of a whole new paradigm of how businesses are doing work."}, {"id": "s33", "start": 111.08, "end": 114.47999999999999, "text": "That's the whole point of this track, this AI native enterprise track."}, {"id": "s34", "start": 114.47999999999999, "end": 122.56, "text": "And so even though I don't need more people DMing me on LinkedIn, um I'm actually really excited to talk about this."}, {"id": "s35", "start": 122.56, "end": 130.2, "text": "So, my hypothesis in short is basically at current model intelligence, most of the value available is already being left on the table."}, {"id": "s36", "start": 130.2, "end": 134.4, "text": "Um this is not a hot take for most people, I think who work in enterprise."}, {"id": "s37", "start": 134.4, "end": 136.16, "text": "You've probably seen this problem."}, {"id": "s38", "start": 136.16, "end": 146.16, "text": "This little stat at the bottom is uh pretty heavily uh repeated for a lot of people who work inside of business circles, and they all kind of like laugh, and they're like, \"Yeah, yeah, you know, all these AI tools,"}, {"id": "s39", "start": 146.16, "end": 147.959, "text": "how much are they actually doing?\""}, {"id": "s40", "start": 147.959, "end": 149.8, "text": "Um and I want to talk about why."}, {"id": "s41", "start": 149.8, "end": 153.92000000000002, "text": "So, there's kind of two sides to this becoming gen AI native."}, {"id": "s42", "start": 153.92000000000002, "end": 161.52, "text": "Um you have models and products, which are one side, that's the seller side, and then you also have systems and all of what's inside of the enterprise, that's the buyer side."}, {"id": "s43", "start": 161.52, "end": 164.56, "text": "So, that's the side that I deal with a lot."}, {"id": "s44", "start": 164.56, "end": 167.8, "text": "Um so, we're going to talk first about the seller side, and then we're going to talk about the buyer side."}, {"id": "s45", "start": 167.8, "end": 173.4, "text": "So, per pain point, uh a lot of my job is kind of go around the company and figure out like what are the pain points?"}, {"id": "s46", "start": 173.4, "end": 175.07999999999998, "text": "Uh what are we trying to solve for?"}, {"id": "s47", "start": 175.07999999999998, "end": 175.92000000000002, "text": "Uh can we buy it?"}, {"id": "s48", "start": 175.92000000000002, "end": 177.64, "text": "Can we build it?"}, {"id": "s49", "start": 177.64, "end": 183.44, "text": "So, let's say for a given pain point, maybe I identify 10 to 15 startups that look really interesting."}, {"id": "s50", "start": 183.44, "end": 187.239, "text": "Like, \"Huh, maybe these guys can solve our problem for us, we don't have to build it.\""}, {"id": "s51", "start": 187.239, "end": 194.519, "text": "Um of those, after doing a little bit of due diligence on my own, I might schedule two to three demo calls."}, {"id": "s52", "start": 194.519, "end": 199.2, "text": "Of those, we probably will land zero or one pilots."}, {"id": "s53", "start": 199.2, "end": 205.64, "text": "And of those, probably one in four of those longer term will actually end up with a contract."}, {"id": "s54", "start": 205.64, "end": 206.28, "text": "So, what does this mean?"}, {"id": "s55", "start": 206.28, "end": 211.56, "text": "This means about 5% of all of our demo calls actually end up in a signed contract."}, {"id": "s56", "start": 211.56, "end": 212.959, "text": "Um and this tracks with the industry."}, {"id": "s57", "start": 212.959, "end": 222.48, "text": "I had no idea that this was actually a benchmark, um but it turns out that there's quite a bit out there that indicates that this is really similar across the board."}, {"id": "s58", "start": 223.239, "end": 235.68, "text": "So, I want to talk about what enterprise ready actually means from the inside, uh because we have a lot of startups that tell me what enterprise ready means, and And we go through all of our requirements, and then we have a very different idea of what enterprise ready actually means."}, {"id": "s59", "start": 235.68, "end": 239.64, "text": "Um so we're going to talk about what breaks down and why."}, {"id": "s60", "start": 239.64, "end": 244.8, "text": "So 40% of this is efficacy, so just value, uh commercial issues."}, {"id": "s61", "start": 244.8, "end": 246.92, "text": "Then there's a lot that dies in security."}, {"id": "s62", "start": 246.92, "end": 252.2, "text": "There's other things that die in reliability, and then there's some stuff that dies in legal."}, {"id": "s63", "start": 252.2, "end": 259.48, "text": "So we're going to start with the requirements that we put forward and then some of the things that we've seen go wrong across various AI companies that we work with."}, {"id": "s64", "start": 259.48, "end": 264.919, "text": "So our requirements for efficacy, maybe unsurprisingly, the product actually needs to solve the problem."}, {"id": "s65", "start": 264.919, "end": 269.08, "text": "Um that seems pretty clear, but that's not always super clear."}, {"id": "s66", "start": 269.08, "end": 273.919, "text": "Uh the next one is pricing models that need to reflect real value."}, {"id": "s67", "start": 273.919, "end": 278.48, "text": "Clear demonstration of integrations on day one, not a hypothetical."}, {"id": "s68", "start": 278.48, "end": 282.76, "text": "And we define the success criteria, not the vendor."}, {"id": "s69", "start": 282.76, "end": 285.84000000000003, "text": "So things we've seen go wrong, uh vaporware in short."}, {"id": "s70", "start": 285.84000000000003, "end": 292.56, "text": "Um we've had a lot of startups who come in, they pitch us an idea, uh and it's something that our platform team can rebuild in about 6 weeks."}, {"id": "s71", "start": 292.56, "end": 299.96, "text": "So this is not a knock, uh this is actually just what's going on in the industry everywhere, um on all sides of the equation."}, {"id": "s72", "start": 299.96, "end": 306.04, "text": "Um sometimes it's actually better for us to build, and sometimes it is still better for us to buy even if we could rebuild."}, {"id": "s73", "start": 306.32, "end": 308.28, "text": "Upside down pricing, so this one's crazy."}, {"id": "s74", "start": 308.28, "end": 318.96, "text": "Um We had a startup just recently tell us, \"Hey, um we know that all of the LLM traffic that we're using for our wrapper is passing through your LLM gateway,"}, {"id": "s75", "start": 318.96, "end": 329.12, "text": "but we want you to report your gateway telemetry to us so that we can then price a huge margin on top of that, even though none of it's running through our infrastructure.\""}, {"id": "s76", "start": 329.12, "end": 331.64, "text": "Um that did not work."}, {"id": "s77", "start": 331.64, "end": 335.64, "text": "Another one is promises in demo calls, but no ETAs after 2 months."}, {"id": "s78", "start": 335.64, "end": 336.919, "text": "Um this is pretty common."}, {"id": "s79", "start": 336.919, "end": 340.0, "text": "Um not a lot to say here."}, {"id": "s80", "start": 340.0, "end": 342.48, "text": "Um and then repitching features we've already declined."}, {"id": "s81", "start": 342.48, "end": 347.84000000000003, "text": "So if you're a salesperson, um my best advice to you is listen to your customers."}, {"id": "s82", "start": 347.84000000000003, "end": 351.48, "text": "It's not novel, but uh it still seems to be a struggle for some."}, {"id": "s83", "start": 351.48, "end": 354.28, "text": "Uh it's really just better to address the things that we've asked for."}, {"id": "s84", "start": 354.28, "end": 358.52, "text": "So, the other thing I want to point out at the very bottom of this slide is the pilot window collapsing."}, {"id": "s85", "start": 358.52, "end": 367.52, "text": "So, uh I've been at Millennium for a little over 2 years, and when I started, a lot of these pilot timelines that people were used to were like, \"Oh, maybe we'll run a pilot for 6 months.\""}, {"id": "s86", "start": 367.52, "end": 372.28, "text": "And then, not that long after that, it was like, \"Oh, maybe we only need it for 3 months.\""}, {"id": "s87", "start": 372.28, "end": 375.84, "text": "And anymore, it's like, \"Maybe we can do this pilot for 2 weeks.\""}, {"id": "s88", "start": 375.84, "end": 379.64, "text": "Uh because it's just accelerated so rapidly."}, {"id": "s89", "start": 380.0, "end": 381.76, "text": "Um so, then moving on to security."}, {"id": "s90", "start": 381.76, "end": 382.6, "text": "Uh this is a huge one."}, {"id": "s91", "start": 382.6, "end": 388.04, "text": "I'm not a security expert, but I do run kind of frontline defense on talking to a lot of startups about security."}, {"id": "s92", "start": 388.04, "end": 391.4, "text": "And so, these are a lot of the things that that come up over and over."}, {"id": "s93", "start": 391.4, "end": 392.28, "text": "Uh ZDR."}, {"id": "s94", "start": 392.28, "end": 393.919, "text": "So, this is a really hot topic."}, {"id": "s95", "start": 393.919, "end": 402.64, "text": "Obviously, a lot going on with Fable, uh mandatory data retention requirements, uh and then a whole other battleground around customer-managed encryption keys."}, {"id": "s96", "start": 402.64, "end": 405.6, "text": "So, ZDR is always best, of course."}, {"id": "s97", "start": 405.6, "end": 412.28, "text": "If that's not possible, customer-managed encryption keys and, with a big parentheses, that don't break the product."}, {"id": "s98", "start": 412.28, "end": 414.6, "text": "Um there are a lot of things that people are like, \"Oh, yeah, it's fine."}, {"id": "s99", "start": 414.6, "end": 416.88, "text": "It'll work with customer-managed encryption keys.\""}, {"id": "s100", "start": 416.88, "end": 418.48, "text": "And then, it breaks the product."}, {"id": "s101", "start": 418.48, "end": 423.08, "text": "Uh so, that's a big product uh issue that we have to work through with people."}, {"id": "s102", "start": 423.08, "end": 425.08, "text": "Other requirements, bring your own gateway."}, {"id": "s103", "start": 425.08, "end": 429.56, "text": "We prefer to route all of our own traffic through our own gateway and BYO infrastructure."}, {"id": "s104", "start": 429.56, "end": 435.64, "text": "Uh we would prefer to host it in our own cloud infrastructure and have something that's deployable in our systems."}, {"id": "s105", "start": 435.72, "end": 436.919, "text": "This is another really big one."}, {"id": "s106", "start": 436.919, "end": 438.72, "text": "Um SCIM-tied RBAC."}, {"id": "s107", "start": 438.72, "end": 449.36, "text": "So, for all of you who who get that jargon, um it's really important that we can tie our AD groups or other permission and entitlement groups to role-based access control."}, {"id": "s108", "start": 449.36, "end": 453.24, "text": "We want to make sure that we don't just turn on features for everybody across the board."}, {"id": "s109", "start": 453.24, "end": 455.72, "text": "A lot of people don't think about this when they're designing their systems."}, {"id": "s110", "start": 455.72, "end": 457.32, "text": "They're like, \"Oh, this is a great feature."}, {"id": "s111", "start": 457.32, "end": 459.15999999999997, "text": "We should just turn it on for everybody.\""}, {"id": "s112", "start": 459.15999999999997, "end": 463.8, "text": "Um when you work at a a enterprise, that's not something that people want to do."}, {"id": "s113", "start": 463.8, "end": 471.2, "text": "Um there are usually different groups who should have different access at different times, and most of all we want it to be configurable via API."}, {"id": "s114", "start": 471.44, "end": 476.48, "text": "Um for smaller companies, we want to see at least one real security hire."}, {"id": "s115", "start": 476.48, "end": 478.15999999999997, "text": "So, this is something that's really important."}, {"id": "s116", "start": 478.15999999999997, "end": 481.72, "text": "We know that security is not the first thing that people hire for."}, {"id": "s117", "start": 481.72, "end": 491.04, "text": "Um but in the age of AI, this is a very real problem, and we need to make sure that the startups we're working with actually have somebody who can understand what's going on from the security standpoint."}, {"id": "s118", "start": 491.04, "end": 502.12, "text": "Uh so, some of the things we've seen go wrong, um outright people just sending data to their vendors, uh cloud servers, and not following any of what we've asked for."}, {"id": "s119", "start": 502.12, "end": 504.24, "text": "Um this has been a problem in pilots."}, {"id": "s120", "start": 504.24, "end": 508.4, "text": "Uh thankfully, all of our pilots run non-production data."}, {"id": "s121", "start": 508.52, "end": 512.36, "text": "Another one, like we kind of talked about, um read write all default scopes."}, {"id": "s122", "start": 512.36, "end": 516.76, "text": "So, there's a lot of really cool tools out there, integrations, features."}, {"id": "s123", "start": 516.76, "end": 518.28, "text": "They're really flashy."}, {"id": "s124", "start": 518.28, "end": 521.159, "text": "You can click a button, and it'll integrate with everything."}, {"id": "s125", "start": 521.159, "end": 529.64, "text": "And then you get a little bit deeper and find out the only way that it'll work is if you literally give it read write all to everything, uh which is a huge problem."}, {"id": "s126", "start": 529.64, "end": 535.16, "text": "Another one, uh kind of along the same lines, all or new beta features on by default with each release."}, {"id": "s127", "start": 535.16, "end": 540.2, "text": "So, if you're an enterprise, you don't want everything just turned on with each release."}, {"id": "s128", "start": 540.2, "end": 548.68, "text": "Um so, being able to control that, and then the line that we hear a lot, which is we'll get you the security architecture diagram next week."}, {"id": "s129", "start": 548.68, "end": 552.52, "text": "Uh we do weekly check-in calls during a pilot, and then we hear this over and over."}, {"id": "s130", "start": 552.52, "end": 555.6, "text": "Uh it's not usually a great sign."}, {"id": "s131", "start": 557.28, "end": 564.28, "text": "Uh the question that we often have our CISO end up asking, which is um what are you going to do if there's a breach?"}, {"id": "s132", "start": 564.28, "end": 567.52, "text": "And we get this response, well, we haven't had a breach yet."}, {"id": "s133", "start": 567.52, "end": 571.64, "text": "Uh with the subtext of we don't know what we would do if we did."}, {"id": "s134", "start": 571.64, "end": 573.8, "text": "Um okay, reliability, this is another one."}, {"id": "s135", "start": 573.8, "end": 576.24, "text": "So, a control plane that actually works."}, {"id": "s136", "start": 576.24, "end": 579.56, "text": "We want to see every admin setting available via API."}, {"id": "s137", "start": 579.56, "end": 581.92, "text": "We want to see audit logs on config changes."}, {"id": "s138", "start": 581.92, "end": 591.68, "text": "So, if there are five different people who are given admin access and somebody accidentally changes something or does it because uh maybe it was really late at night and maybe they had too many drinks."}, {"id": "s139", "start": 591.68, "end": 594.16, "text": "Uh we actually want to see what happened."}, {"id": "s140", "start": 594.16, "end": 597.64, "text": "Uh we want to be able to control the rollout on these changes."}, {"id": "s141", "start": 597.64, "end": 600.6, "text": "Uh we want to see real SLAs and a reachable support engineer."}, {"id": "s142", "start": 600.6, "end": 602.76, "text": "That goes a very, very long way."}, {"id": "s143", "start": 602.76, "end": 614.6, "text": "So, uh things we've seen go wrong, a lot of apps that are rapidly prototyping, they're shipping so quickly that they are maybe shipping updates multiple times a day and there's a really attractive little button that says relaunch to update"}, {"id": "s144", "start": 614.6, "end": 616.64, "text": "and it happens across 3,000 people."}, {"id": "s145", "start": 616.64, "end": 618.68, "text": "We have no way of tracking what's going wrong."}, {"id": "s146", "start": 618.68, "end": 628.52, "text": "Maybe then like SSL certificates break in one of the new releases and then we have no way of tracking because everybody's on a different version um and we have no way of being able to deploy at scale."}, {"id": "s147", "start": 628.52, "end": 630.72, "text": "Um that's really challenging."}, {"id": "s148", "start": 630.72, "end": 632.6, "text": "No documentation versioning."}, {"id": "s149", "start": 632.6, "end": 642.68, "text": "So, support articles with new terms or risks that are not actually in the legal contract but show up in the website somewhere in a random support page and then we have no way of tracking what they were before versus after"}, {"id": "s150", "start": 642.68, "end": 644.88, "text": "and it just says updated yesterday."}, {"id": "s151", "start": 644.88, "end": 646.32, "text": "All of these are real examples, by the way."}, {"id": "s152", "start": 646.32, "end": 647.8, "text": "I am not naming and shaming."}, {"id": "s153", "start": 647.8, "end": 649.24, "text": "Um I'm just shaming."}, {"id": "s154", "start": 649.24, "end": 653.76, "text": "So, uh maybe if any of you are familiar, you can put it together."}, {"id": "s155", "start": 653.76, "end": 657.8, "text": "Um core API's down for multiple hours during a busy trading day."}, {"id": "s156", "start": 657.8, "end": 662.04, "text": "Uh that is a really big problem for us because we run production systems."}, {"id": "s157", "start": 662.04, "end": 664.44, "text": "We are trading billions of dollars."}, {"id": "s158", "start": 664.44, "end": 667.04, "text": "Um this is a really big issue for us."}, {"id": "s159", "start": 667.04, "end": 670.32, "text": "And then lastly, no SLA roadmap or status page."}, {"id": "s160", "start": 670.32, "end": 672.88, "text": "Um the status page is a big one."}, {"id": "s161", "start": 672.88, "end": 674.56, "text": "Okay, last, legal issues."}, {"id": "s162", "start": 674.56, "end": 680.44, "text": "So, we don't want anybody training on our data regardless of what type of feature or product it is."}, {"id": "s163", "start": 680.44, "end": 684.4, "text": "Uh we also want to see a lot of transparency in the sub processors."}, {"id": "s164", "start": 684.4, "end": 688.08, "text": "Um any fourth-party risk becomes our risk."}, {"id": "s165", "start": 688.08, "end": 691.56, "text": "We want to see IP indemnification with reasonable liability caps."}, {"id": "s166", "start": 691.56, "end": 697.92, "text": "Uh we do not control the models, so if there's output that is IP infringing, we don't want to be held liable for it."}, {"id": "s167", "start": 697.92, "end": 708.84, "text": "So, we have seen in pilots that people claim they have ZDR, they have it legally, but then they find out or we find out later that they actually retain some of our data because they say, \"Hey, we were looking at something and we noticed this thing.\""}, {"id": "s168", "start": 708.84, "end": 710.52, "text": "And we're like, \"How did you notice that?"}, {"id": "s169", "start": 710.52, "end": 712.36, "text": "You weren't supposed to have this data.\""}, {"id": "s170", "start": 712.36, "end": 714.44, "text": "And they're like, \"Oh, yeah, you're right.\""}, {"id": "s171", "start": 714.44, "end": 715.92, "text": "Um so, that's not great."}, {"id": "s172", "start": 715.92, "end": 718.56, "text": "If you say ZDR, do ZDR."}, {"id": "s173", "start": 718.56, "end": 724.04, "text": "Um next, every feature that is conveniently beta with permissive data retention clauses."}, {"id": "s174", "start": 724.04, "end": 730.84, "text": "So, we've seen some vendors who they will stop releasing new features in general availability."}, {"id": "s175", "start": 730.84, "end": 739.04, "text": "They will only make them beta, and then the beta comes with a secret little clause that says that they're allowed to retain our data, which is a very sneaky way of trying to get our data."}, {"id": "s176", "start": 739.04, "end": 740.32, "text": "We don't like that."}, {"id": "s177", "start": 740.32, "end": 742.32, "text": "Um not great."}, {"id": "s178", "start": 742.32, "end": 749.16, "text": "Another one kind of similar is fourth-party risk that's tucked away on a random website page that's not listed in the contract."}, {"id": "s179", "start": 749.16, "end": 753.76, "text": "Uh this is a really big problem for us managing risk."}, {"id": "s180", "start": 754.12, "end": 757.6, "text": "So, um it was the best of times, it was the worst of times."}, {"id": "s181", "start": 757.6, "end": 769.16, "text": "As a recap, the best startups have security architecture that actually works, support engineers who respond, an admin API from the beginning, a 90-day plan that deploys into our infrastructure and cloud,"}, {"id": "s182", "start": 769.16, "end": 771.52, "text": "and success criteria that we write."}, {"id": "s183", "start": 771.52, "end": 782.16, "text": "The worst AI startups don't have any security architecture diagrams, no path to a support engineer, no deployment control or audit logs, no ETAs, and salesmanship over solid product building."}, {"id": "s184", "start": 782.16, "end": 788.32, "text": "Um this is really just kind of a recap of like what I have been through over the last 2 years."}, {"id": "s185", "start": 788.32, "end": 795.56, "text": "Um I actually don't think that any of this is novel, um but it is codifying a lot of what I feel like is good and best practice."}, {"id": "s186", "start": 795.56, "end": 802.0, "text": "Um okay, so a new frontier model comes out on average every 11 days, but your architecture might be a decade or more old."}, {"id": "s187", "start": 802.0, "end": 808.04, "text": "So, you've got a bunch of cool new models, there's some amazing capabilities is there, and then you have profitability on the other side of it."}, {"id": "s188", "start": 808.04, "end": 809.2, "text": "And what's in the middle?"}, {"id": "s189", "start": 809.2, "end": 815.28, "text": "Maybe it's your legacy architecture, probably a lot of security and privacy issues, and a lot of change management."}, {"id": "s190", "start": 815.28, "end": 817.88, "text": "Um ChatGPT has only been out for 43 months."}, {"id": "s191", "start": 817.88, "end": 822.48, "text": "There are a lot of companies who are still doing an ERP migration that might have been from 5 years ago."}, {"id": "s192", "start": 822.48, "end": 825.6, "text": "Um so, the timelines are very asymmetric."}, {"id": "s193", "start": 825.6, "end": 829.12, "text": "Uh and I think that sometimes we forget about that."}, {"id": "s194", "start": 829.24, "end": 829.8, "text": "Um okay."}, {"id": "s195", "start": 829.8, "end": 837.48, "text": "So, my thesis again, half or more of getting to AI native is unsexy and has absolutely nothing to do with AI."}, {"id": "s196", "start": 837.48, "end": 840.92, "text": "Um AI models and products today can't fix your legacy architecture."}, {"id": "s197", "start": 840.92, "end": 844.56, "text": "Although, if any of you are startup people, that's a great one to go for."}, {"id": "s198", "start": 844.56, "end": 847.12, "text": "Um and it also can't run your change management."}, {"id": "s199", "start": 847.12, "end": 855.12, "text": "These are unscientific numbers that I'm putting up here, but I hypothesize that 40% of getting to AI native is AI models and products."}, {"id": "s200", "start": 855.12, "end": 865.8, "text": "The other 60% is all the other stuff that no one really likes talking about anymore, uh which is like data hygiene, clean architecture, having good integration, strong enablement, and change management."}, {"id": "s201", "start": 866.44, "end": 870.0, "text": "Um I really look at AI as a flashlight, not a band-aid."}, {"id": "s202", "start": 870.0, "end": 874.72, "text": "Um I really think that AI shines a light on a lot of what's already working or not working."}, {"id": "s203", "start": 874.72, "end": 879.8389999999999, "text": "It can accelerate what's working really well, and it breaks down very quickly when things don't work well."}, {"id": "s204", "start": 879.8389999999999, "end": 888.08, "text": "Um I don't think that it's a band-aid, and I think that for everybody who's in tech leadership, it's really important to remember that if you have issues in your technology estate,"}, {"id": "s205", "start": 888.08, "end": 893.16, "text": "those need to be addressed before trying to plug in AI and just having everything rip."}, {"id": "s206", "start": 893.16, "end": 895.64, "text": "Um it's it's not going to work."}, {"id": "s207", "start": 895.64, "end": 903.08, "text": "Um so, hehehe again, maybe an unpopular message, but I really believe that we all need to start with the boring 60%."}, {"id": "s208", "start": 903.08, "end": 907.839, "text": "I think that's where we all need to start to get to the other side of the road."}, {"id": "s209", "start": 907.839, "end": 912.0, "text": "So, what did we learn as we shine the flashlight internally?"}, {"id": "s210", "start": 912.0, "end": 916.96, "text": "Again, not revealing anything super proprietary, but I do think these are big picture lessons."}, {"id": "s211", "start": 916.96, "end": 918.28, "text": "Number one, entitlements."}, {"id": "s212", "start": 918.28, "end": 920.56, "text": "Entitlements need a new paradigm."}, {"id": "s213", "start": 920.56, "end": 925.4, "text": "Uh there are a lot of people in a lot of large enterprises who are over entitled, under entitled."}, {"id": "s214", "start": 925.4, "end": 935.8, "text": "The entitlements model and how it works and how it's managed, all of that breaks down when you think about agents and how quickly you want agents to work and what you want them to work on and their ability to exercise judgment."}, {"id": "s215", "start": 935.8, "end": 938.84, "text": "Um the entire paradigm just shifts."}, {"id": "s216", "start": 938.84, "end": 941.76, "text": "Another one is cross-platform integration moved up the stack."}, {"id": "s217", "start": 941.76, "end": 946.08, "text": "So, AI is only as good as what it reaches and we want it everywhere."}, {"id": "s218", "start": 946.08, "end": 953.0, "text": "Uh so, having things that can integrate across platforms is really important uh even more than it already was."}, {"id": "s219", "start": 953.0, "end": 954.44, "text": "Another one is centralized knowledge."}, {"id": "s220", "start": 954.44, "end": 963.16, "text": "So, this is something that um Emil brought up this morning in his keynote, which is that basically we need thinner agents and a smarter substrate."}, {"id": "s221", "start": 963.16, "end": 965.0, "text": "Um centralized knowledge is really key to that."}, {"id": "s222", "start": 965.0, "end": 973.68, "text": "So, all of your documentation, all your support articles, everything that's going on inside of your company that's making it work, um all of that needs to be centralized and easily consumable."}, {"id": "s223", "start": 973.68, "end": 977.76, "text": "Even better if AI can help write that in real time in a feedback loop."}, {"id": "s224", "start": 977.76, "end": 981.2, "text": "Uh that's something we've been talking about with some of our vendors."}, {"id": "s225", "start": 981.2, "end": 984.12, "text": "Another one is a separate ecosystem for experimentation."}, {"id": "s226", "start": 984.12, "end": 987.0, "text": "Um some companies may need to get here."}, {"id": "s227", "start": 987.0, "end": 999.52, "text": "That gap between your legacy architecture and where you want to go might be so vast that you actually just decide, \"Hey, maybe we need a separate ecosystem to do a lot of this work, figure out what does work and what doesn't and then kind of go from there.\""}, {"id": "s228", "start": 999.52, "end": 1002.24, "text": "Um and that's something that we thought about as well."}, {"id": "s229", "start": 1002.24, "end": 1008.36, "text": "So, to just put a finer point on the agents and the entitlement thing, uh agents inherit your foundations."}, {"id": "s230", "start": 1008.36, "end": 1021.12, "text": "So, I strongly recommend that everybody fix their entitlements if they are not working really well now um because this is something that if you think about the problems that you run into when things go rogue, processes go rogue, people go rogue,"}, {"id": "s231", "start": 1021.12, "end": 1023.839, "text": "agents are going to like 100X that problem."}, {"id": "s232", "start": 1023.839, "end": 1028.36, "text": "Um so, this is really something that's worth figuring out now."}, {"id": "s233", "start": 1028.76, "end": 1040.88, "text": "So, to kind of recap uh as I wrap up here, the recipe, if you are one of the people in the first half who are raising your hand on like, \"What do I need to do if I'm a startup and I want to work with a really difficult large customer?"}, {"id": "s234", "start": 1040.88, "end": 1043.04, "text": "Millennium's got like 8,000 people."}, {"id": "s235", "start": 1043.04, "end": 1047.439, "text": "We have very, very tight security, compliance, regulatory requirements."}, {"id": "s236", "start": 1047.439, "end": 1050.2, "text": "Um this is the stuff that we care about."}, {"id": "s237", "start": 1050.2, "end": 1055.92, "text": "And we want to see more startups doing work that allows us to work with them."}, {"id": "s238", "start": 1055.92, "end": 1058.96, "text": "Um I really view this as like one of the highest bars."}, {"id": "s239", "start": 1058.96, "end": 1063.12, "text": "We're probably not the highest, um although we're probably pretty close."}, {"id": "s240", "start": 1063.12, "end": 1070.0, "text": "Um and I think if you can architect your startup to work with companies like this with this kind of architecture, um you're probably going to be able to satisfy"}, {"id": "s241", "start": 1070.0, "end": 1072.44, "text": "basically everybody else."}, {"id": "s242", "start": 1072.44, "end": 1081.64, "text": "Um on the other side for anybody who's buying, uh these are the things that I think again that kind of that boring 60% that really deserves a lot of work."}, {"id": "s243", "start": 1081.64, "end": 1092.2, "text": "Um off entitlements, governance, audit logging, etc. Um these are the things that I think we need to have in terms of systems to get it working on the other side of the equation."}, {"id": "s244", "start": 1092.2, "end": 1094.08, "text": "So, that's it."}, {"id": "s245", "start": 1094.08, "end": 1101.48, "text": "Um my only motivation here is to getting stuff working better and having better enterprise grade AI."}, {"id": "s246", "start": 1101.48, "end": 1105.44, "text": "Uh that's a QR code to my LinkedIn and I appreciate all of your time."}, {"id": "s247", "start": 1105.44, "end": 1106.962, "text": "Thank you."}, {"id": "s248", "start": 1106.962, "end": 1108.962, "text": "[applause]"}, {"id": "s249", "start": 1120.717, "end": 1122.717, "text": "[music]"}]}, {"id": "7GMKdpLsxwU", "title": "The Missing Layer: Design Taste in AI Agents — Hassan El Mghari, Together AI", "channel": "AI Engineer", "duration": 850, "upload_date": null, "url": "https://www.youtube.com/watch?v=7GMKdpLsxwU", "api": "/api/talks/7GMKdpLsxwU.json", "summary_url": "/#7GMKdpLsxwU", "transcript": {"html": "/transcripts/7GMKdpLsxwU.html", "txt": "/transcripts/7GMKdpLsxwU.txt", "vtt": "/transcripts/7GMKdpLsxwU.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 16.88, "end": 17.6, "text": "All right."}, {"id": "s3", "start": 17.6, "end": 18.4, "text": "Hello everybody."}, {"id": "s4", "start": 18.4, "end": 18.96, "text": "Welcome."}, {"id": "s5", "start": 18.96, "end": 20.4, "text": "Uh my name is Hassan."}, {"id": "s6", "start": 20.4, "end": 29.76, "text": "I lead the developer experience team over at Together AAI and I'm super excited to be here today to talk to you about how to make AI apps look good or"}, {"id": "s7", "start": 29.76, "end": 32.8, "text": "stop letting your agents ship ugly UIs."}, {"id": "s8", "start": 32.8, "end": 43.92, "text": "Um, I'm especially passionate about this project because uh a big part of my job and just my personal life I I just love building a lot of these AI apps and uh I'll go to the next slide."}, {"id": "s9", "start": 43.92, "end": 57.68, "text": "Uh I've been building about 10 apps a year for the last uh five years and I've been lucky enough that some of these apps have have gotten you know millions of users that have tried them out and I think the number one reason for that is honestly just design and UX and so that's what I want to"}, {"id": "s10", "start": 57.68, "end": 62.64, "text": "talk to you about today is how I approach design and UX in my apps as someone who's not a designer."}, {"id": "s11", "start": 62.64, "end": 67.6, "text": "Um but before we move on really quick I work at together AI we're an AI native cloud platform."}, {"id": "s12", "start": 67.6, "end": 68.72, "text": "We help you do three things."}, {"id": "s13", "start": 68.72, "end": 71.6, "text": "We help you run uh open source AI models."}, {"id": "s14", "start": 71.6, "end": 76.64, "text": "Uh chat models like GLM 5.2, image models like nanobanana, audio models, vision models."}, {"id": "s15", "start": 76.64, "end": 81.92, "text": "We have kind of all the different modalities and all the big open source models on our platform through our inference API."}, {"id": "s16", "start": 81.92, "end": 84.24, "text": "We let you fine-tune models on your own data."}, {"id": "s17", "start": 84.24, "end": 93.52000000000001, "text": "And then we also uh have a GPU cluster product where you can reserve H100s and B200s to uh train your own models or do your own inference."}, {"id": "s18", "start": 93.52000000000001, "end": 95.36, "text": "So, uh, getting into some demos."}, {"id": "s19", "start": 95.36, "end": 100.15899999999999, "text": "I just want to start with a couple apps that that I've built so you get a sense of like the the type of stuff that I build."}, {"id": "s20", "start": 100.15899999999999, "end": 106.799, "text": "Uh, they're usually very simple one-page apps, uh, where I try to index on the design and some animations and things like that."}, {"id": "s21", "start": 106.799, "end": 112.0, "text": "So, this is like a logo creator app that I built that got about 85,000 people uh, that that used it."}, {"id": "s22", "start": 112.0, "end": 117.68, "text": "This is one called Make Comics where it'll create a comic book from scratch starring you as as the superhero."}, {"id": "s23", "start": 117.68, "end": 123.439, "text": "Um, and uh, this one actually we actually have in person at our at the Together AI booth at this conference."}, {"id": "s24", "start": 123.439, "end": 130.0, "text": "Um, and where you can go and there's a little iPad and you can take a picture and and get a real comic book printed out that that you can take home."}, {"id": "s25", "start": 130.0, "end": 134.879, "text": "Um, other stuff like uh, this is generating subtitles from from videos."}, {"id": "s26", "start": 134.879, "end": 143.2, "text": "I upload a lot of videos uh to YouTube and to Twitter and so I needed something like this and uh, I looked into just like generating subtitles with with open source models."}, {"id": "s27", "start": 143.2, "end": 146.0, "text": "This one had about 8,000 people that that checked it out."}, {"id": "s28", "start": 146.0, "end": 148.48, "text": "uh you know AI chat app for open source models."}, {"id": "s29", "start": 148.48, "end": 150.16, "text": "This one's fairly straightforward."}, {"id": "s30", "start": 150.16, "end": 160.4, "text": "Um this one is a is a website that I built to help you build five or six different variations of whatever landing page you want to build and then you can kind of choose one of them."}, {"id": "s31", "start": 160.4, "end": 170.64, "text": "Um and then the the last one I'll show off really quickly is uh like an AI cloud agent where you can ask it to do things and uh give it a GitHub repo and it'll spin up a sandbox and actually"}, {"id": "s32", "start": 170.64, "end": 172.64, "text": "u create a PR for you from scratch."}, {"id": "s33", "start": 172.64, "end": 180.48, "text": "So this is just an example of like some of the stuff that that that I build and I that I put out and and I think really the big takeaway here is"}, {"id": "s34", "start": 180.48, "end": 186.319, "text": "uh you know we live in a world now where more and more AI apps are kind of slop."}, {"id": "s35", "start": 186.319, "end": 198.0, "text": "You know you can kind of look at it and within a second or two you can kind of tell that like h this this kind of looks AI generated and so I think just doing a little bit of extra effort like a little 10 to 20% after just focused on the UI"}, {"id": "s36", "start": 198.0, "end": 200.8, "text": "uh is a really really big competitive advantage for these things."}, {"id": "s37", "start": 200.8, "end": 204.159, "text": "Um, so like I said, vibe coded apps kind of all look the same."}, {"id": "s38", "start": 204.159, "end": 205.68, "text": "They have the same tells."}, {"id": "s39", "start": 205.68, "end": 210.72, "text": "Um, they have the same kind of purple gradient background in every single one."}, {"id": "s40", "start": 210.72, "end": 213.28, "text": "Uh, they have italics in in headers."}, {"id": "s41", "start": 213.28, "end": 216.879, "text": "Um, they always have the scroll to explore for some reason."}, {"id": "s42", "start": 216.879, "end": 223.599, "text": "Uh, they have these pills that are all like all caps and with with spaced out um uh letter spacing."}, {"id": "s43", "start": 223.599, "end": 225.12, "text": "They have these gradient logos."}, {"id": "s44", "start": 225.12, "end": 226.56, "text": "They use a bunch of emojis."}, {"id": "s45", "start": 226.56, "end": 228.48, "text": "And so it's it's the same kind of stuff."}, {"id": "s46", "start": 228.48, "end": 231.2, "text": "sometimes some some spacing and padding issues."}, {"id": "s47", "start": 231.2, "end": 242.72, "text": "Um, but the point is it's it's actually just like a if you really think about it and you look at all of these AI generated websites, you can come down, you could make a list of like 20 or 30 different things that are like, okay, this is this is what AI slop is, right?"}, {"id": "s48", "start": 242.72, "end": 244.319, "text": "All these like random graphics."}, {"id": "s49", "start": 244.319, "end": 249.519, "text": "Um, and so I'm going to talk about two different ways that I've tried to overcome this."}, {"id": "s50", "start": 249.519, "end": 254.319, "text": "Um, and and the first one I'm going to start with is this design skill that I built called Hallmark."}, {"id": "s51", "start": 254.319, "end": 267.44, "text": "And Hallmark basically takes all of these uh AI slop patterns uh and uh codifies them uh and and tells AI models like hey like don't don't use these you know don't do a purple gradient"}, {"id": "s52", "start": 267.44, "end": 274.8, "text": "um uh don't use italics in the title uh and and all of these uh AI slop gates is what I call them or slop patterns."}, {"id": "s53", "start": 274.8, "end": 276.08, "text": "Uh so that's one thing it does."}, {"id": "s54", "start": 276.08, "end": 283.28, "text": "And then the second thing it does which I think is really important when you're building stuff is it gives your AI model a lot of different themes."}, {"id": "s55", "start": 283.28, "end": 286.4, "text": "And so I I built a bunch of these different themes."}, {"id": "s56", "start": 286.4, "end": 287.6, "text": "We feed them into Hallmark."}, {"id": "s57", "start": 287.6, "end": 292.639, "text": "And so like when you ask Hallmark to create a a website for you, it'll use these as context."}, {"id": "s58", "start": 292.639, "end": 301.36, "text": "And then and that's kind of that's going to be a theme throughout this talk as well is of like if you give AI models really really good inspiration, they tend to perform"}, {"id": "s59", "start": 301.36, "end": 303.199, "text": "uh very very well."}, {"id": "s60", "start": 303.199, "end": 306.639, "text": "Um and so I launched this about uh a month and a half."}, {"id": "s61", "start": 306.639, "end": 308.4, "text": "I have about a month and a half ago."}, {"id": "s62", "start": 308.4, "end": 311.84, "text": "I have a little over 10,000 people that have tried it out so far."}, {"id": "s63", "start": 311.84, "end": 317.12, "text": "These are some examples of of uh I've mostly indexed it on landing pages, but uh landing pages using Hallmark."}, {"id": "s64", "start": 317.12, "end": 322.72, "text": "And so this is build a landing page for an indie podcast and it gives you that uh and there's different skills and stuff that I'm not going to get too deep into."}, {"id": "s65", "start": 322.72, "end": 330.639, "text": "Uh but the main things I just wanted to uh I just wanted to cover the AI slop gates and the themes and and those two things really uh they do a lot."}, {"id": "s66", "start": 330.639, "end": 337.52, "text": "Um and so this is the announcement tweet and and I got a bunch of really great feedback and we're still iterating a lot to to try to make it really really good."}, {"id": "s67", "start": 337.52, "end": 344.56, "text": "Um, but I found this to be a uh one way that I try to avoid slop AI slop websites."}, {"id": "s68", "start": 344.56, "end": 348.479, "text": "Uh, and so this is uh some some more examples of hallmark generated pages."}, {"id": "s69", "start": 348.479, "end": 351.759, "text": "This one's build a landing page for like an invoicing uh app."}, {"id": "s70", "start": 351.759, "end": 355.6, "text": "And and you can see like they don't have a lot of the same tells that you'd expect from an AI generated website."}, {"id": "s71", "start": 355.6, "end": 357.6, "text": "And these also are just one shot."}, {"id": "s72", "start": 357.6, "end": 360.4, "text": "Uh right, this is one single prompt and you get this whole website."}, {"id": "s73", "start": 360.4, "end": 364.8, "text": "And really a lot of the magic also is in kind of iterating on these things over and over and over again."}, {"id": "s74", "start": 364.8, "end": 366.88, "text": "Um, so this is uh this is another one."}, {"id": "s75", "start": 366.88, "end": 368.56, "text": "Uh, and then like a before and after."}, {"id": "s76", "start": 368.56, "end": 369.919, "text": "This is a a pretty good example."}, {"id": "s77", "start": 369.919, "end": 372.56, "text": "This is like build a page for like a learning app for kids."}, {"id": "s78", "start": 372.56, "end": 375.28, "text": "And on the left is like without Hallmark and on the right is with Hallmark."}, {"id": "s79", "start": 375.28, "end": 377.919, "text": "You can see it like, you know, it's just a little bit cleaner."}, {"id": "s80", "start": 377.919, "end": 379.12, "text": "It's a little bit nicer."}, {"id": "s81", "start": 379.12, "end": 384.96, "text": "Uh, it has more like animations, which I didn't record a video to show it, but um, it just looks a little bit nicer in general."}, {"id": "s82", "start": 384.96, "end": 385.919, "text": "This is another one as well."}, {"id": "s83", "start": 385.919, "end": 392.0, "text": "On the left, kind of like the the classic AI generated page with the with the gradients and and everything like that."}, {"id": "s84", "start": 392.0, "end": 393.84000000000003, "text": "And on the right is is with Hallmark."}, {"id": "s85", "start": 393.84000000000003, "end": 405.449, "text": "you you know you can look at the one on the right and still say like oh well that's not a perfect landing page um but it does give you a much better base to start out from right and then you can kind of iterate your way to something that you know really really looks incredible"}, {"id": "s86", "start": 405.449, "end": 406.0, "text": "[snorts]"}, {"id": "s87", "start": 406.0, "end": 416.72, "text": "um and you know I've been indexing on this thing but app iteration is also very important and I think specifically uh a lot of people I think undervalue the importance of using"}, {"id": "s88", "start": 416.72, "end": 430.479, "text": "uh smaller faster models for these app iteration uh cycles a lot of the apps that I build now I'll kind of start in like codec or cloud code to build a base and then for iterating I'll use usually smaller open source model like GLM 5.2. GLM 5.2 is amazing."}, {"id": "s89", "start": 430.479, "end": 432.0, "text": "Uh who who here has used it?"}, {"id": "s90", "start": 432.0, "end": 434.16, "text": "Uh show of hands."}, {"id": "s91", "start": 434.16, "end": 435.52, "text": "Okay, a few people."}, {"id": "s92", "start": 435.52, "end": 442.56, "text": "Um so this is a model that came out two weeks ago that in my opinion was like the first open source model that to actually be very very good at design."}, {"id": "s93", "start": 442.56, "end": 452.319, "text": "And actually we're going to play a little game here where one of these landing pages was generated by GLM 5.2 which is like a cheaper open source model and the other one was generated with Opus 4.8."}, {"id": "s94", "start": 452.319, "end": 459.68, "text": "Um, raise your hand if you think GLM 5.2 is a. Okay, four hands."}, {"id": "s95", "start": 459.68, "end": 461.44, "text": "That was the GLM 5.2 one, right?"}, {"id": "s96", "start": 461.44, "end": 472.319, "text": "So, they're almost almost indistinguishable in certain ways where the one on the left is generated with the GLM 5.2. It was created way faster um as well because it's just it's a smaller model, so it's just inherently a lot faster."}, {"id": "s97", "start": 472.319, "end": 477.44, "text": "And the one on the right, you know, cost five times as much and and was a lot slower as well."}, {"id": "s98", "start": 477.44, "end": 484.4, "text": "Um, so anyway, this is another one where the left and the right, the left one arguably is even more AI generated."}, {"id": "s99", "start": 484.4, "end": 489.84, "text": "Uh, and that's the one uh that that that Opus actually created, right?"}, {"id": "s100", "start": 489.84, "end": 501.759, "text": "So anyway, like when I say like use a cheaper model to iterate with, it still needs to be sufficiently good and and um GLM 5.2 is one of those models I feel is is really really incredible for for this kind of stuff."}, {"id": "s101", "start": 501.759, "end": 504.96, "text": "So this is another example where it's very hard to tell the difference."}, {"id": "s102", "start": 504.96, "end": 506.16, "text": "uh and and for iteration."}, {"id": "s103", "start": 506.16, "end": 510.479, "text": "So this is like a uh a really simple website I on one shot with just that one prompt."}, {"id": "s104", "start": 510.479, "end": 514.159, "text": "This is using GLM 5.2. And you can see this does have a lot of AI tells."}, {"id": "s105", "start": 514.159, "end": 515.279, "text": "It's impressive that it actually works."}, {"id": "s106", "start": 515.279, "end": 518.24, "text": "It's an image playground where you send it a prompt and you get an image."}, {"id": "s107", "start": 518.24, "end": 521.279, "text": "Um but just with a little bit of iteration on the left."}, {"id": "s108", "start": 521.279, "end": 522.88, "text": "I'm not going to go through all of it."}, {"id": "s109", "start": 522.88, "end": 532.399, "text": "um you get to a website that looks it it looks roughly similar, but it just looks a lot nicer and it has a much better logo and way better loading states and animations"}, {"id": "s110", "start": 532.399, "end": 537.76, "text": "and uh just better spacing overall uh with with just a sing one or two follow-up prompts."}, {"id": "s111", "start": 537.76, "end": 542.88, "text": "So I I think like uh iteration is is extremely extremely important."}, {"id": "s112", "start": 542.88, "end": 552.72, "text": "Um, so the final part of my talk is just takeaways for like how how I approach building apps that look good as someone who's not not really a designer as well."}, {"id": "s113", "start": 552.72, "end": 559.2, "text": "Um, a lot of other people speaking on this track are are incredibly talented designers and and you should take a look at their thing."}, {"id": "s114", "start": 559.2, "end": 563.68, "text": "My my objective is not necessarily to make the best designed app in the world."}, {"id": "s115", "start": 563.68, "end": 572.24, "text": "It's just to make apps that look and feel really good or at least much much better than like purely kind of AI generated slop."}, {"id": "s116", "start": 572.24, "end": 580.32, "text": "Um so so my my main takeaways for this one is like getting familiar with a lot of these AI tells right we went through some of the like patterns of of AI slop."}, {"id": "s117", "start": 580.32, "end": 589.04, "text": "Uh a lot of the time you know I sit down with people and I show them a website and they're like oh that's AI generated right in two seconds but they can't tell me why right they're like it just looks AI generated."}, {"id": "s118", "start": 589.04, "end": 590.08, "text": "I have no idea what it is."}, {"id": "s119", "start": 590.08, "end": 596.8, "text": "And so I I think it's it's worth understanding that like well yeah it's it's purple gradient and it's this this logo and it's this thing."}, {"id": "s120", "start": 596.8, "end": 607.279, "text": "Uh and when you understand that stuff I think it becomes a lot easier to um to uh bake that into the apps that you build or ask the AI models to hey like hey don't don't do this or don't do that."}, {"id": "s121", "start": 607.279, "end": 609.6, "text": "Um so so that's that's one tip I have."}, {"id": "s122", "start": 609.6, "end": 615.839, "text": "Uh another one that's kind of tangential is like saving your preferences in some sort of skill or markdown file."}, {"id": "s123", "start": 615.839, "end": 616.959, "text": "You can do an agent.mmd."}, {"id": "s124", "start": 616.959, "end": 618.48, "text": "You can do kind of whatever you want."}, {"id": "s125", "start": 618.48, "end": 625.44, "text": "Um, but the big thing here I think is as you build stuff, you start to build an intuition for like what you want, what you don't want."}, {"id": "s126", "start": 625.44, "end": 630.64, "text": "Like you generate a website and every single time the logo looks like crap and you have to regenerate the logo."}, {"id": "s127", "start": 630.64, "end": 636.0, "text": "Um, you can start to build out an agent.mmd that has a bunch of this stuff like avoid this for the logo."}, {"id": "s128", "start": 636.0, "end": 636.72, "text": "Do them this way."}, {"id": "s129", "start": 636.72, "end": 638.0, "text": "For this, do it that way."}, {"id": "s130", "start": 638.0, "end": 643.279, "text": "Uh, and and as I've gone, I've kind of built up like a substantial agents.mmd that helps me do this."}, {"id": "s131", "start": 643.279, "end": 646.0, "text": "And and to a degree, this is kind of what Hallmark is as well, right?"}, {"id": "s132", "start": 646.0, "end": 648.88, "text": "If you don't have your own, you can use something like like Hallmark."}, {"id": "s133", "start": 648.88, "end": 651.76, "text": "Um, this is maybe the most important one."}, {"id": "s134", "start": 651.76, "end": 656.32, "text": "If you take one thing away from this talk, please give your agents references and screenshots."}, {"id": "s135", "start": 656.32, "end": 662.48, "text": "I don't build anything uh nowadays without uh giving AI models a lot of inspiration."}, {"id": "s136", "start": 662.48, "end": 670.72, "text": "And I kind of have this like inspiration vault for like anytime I look at like a website or an app that I really like or that I'm like, \"Wow, like this this looks amazing.\""}, {"id": "s137", "start": 670.72, "end": 671.6, "text": "I'll just save it."}, {"id": "s138", "start": 671.6, "end": 672.8, "text": "Uh I'll just save it somewhere."}, {"id": "s139", "start": 672.8, "end": 674.88, "text": "And now I have a a really large collection of them."}, {"id": "s140", "start": 674.88, "end": 682.88, "text": "And so when I'm building a new app, I usually will will be like, \"Oh, I actually I kind of I think I want this look like a a mix of Dolingo and a mix of this app and a mix of this app.\""}, {"id": "s141", "start": 682.88, "end": 688.56, "text": "And I'll paste in a ton of screenshots for the AI model to look at and and the output will always be way way way better."}, {"id": "s142", "start": 688.56, "end": 693.12, "text": "So um always try to use references and and uh uh screenshots."}, {"id": "s143", "start": 693.12, "end": 697.279, "text": "Um longer and more specific prompts are always better."}, {"id": "s144", "start": 697.279, "end": 701.44, "text": "Um these days I I will just record voice notes."}, {"id": "s145", "start": 701.44, "end": 712.48, "text": "Uh, and so I'll start a voice note for like one, two, three minutes and I'll just rant and be like, well, I want to build an app that looks like this and here's how uh you you should use it and here's the type of user that's going to use it and we have a text box here and"}, {"id": "s146", "start": 712.48, "end": 716.56, "text": "we have an image upload thing and here's how it should look and here's and here's some inspiration, right?"}, {"id": "s147", "start": 716.56, "end": 720.16, "text": "And so it's usually like all my prompts now are like two two to three paragraphs."}, {"id": "s148", "start": 720.16, "end": 724.56, "text": "Um, so they're they're a lot longer prompt and and they usually do a lot better."}, {"id": "s149", "start": 724.56, "end": 727.12, "text": "Like this is like an example of a much longer prompt."}, {"id": "s150", "start": 727.12, "end": 736.48, "text": "I'm not going to go through all of it, but uh it just produces something that's just a little bit better like at the uh the thing on the bottom was was kind of produced with with with this prompt."}, {"id": "s151", "start": 736.48, "end": 740.24, "text": "Um break things down into steps."}, {"id": "s152", "start": 740.24, "end": 743.44, "text": "I think like so I just talked about make your prompt longer."}, {"id": "s153", "start": 743.44, "end": 748.88, "text": "Um but also if you're building seven different features, you probably don't want to put them all in the same prompt, right?"}, {"id": "s154", "start": 748.88, "end": 758.72, "text": "probably want um you can do one, you know, one or two features per prompt where you talk about them extensively and uh and uh usually I'll send off like"}, {"id": "s155", "start": 758.72, "end": 769.8389999999999, "text": "the start of the app will be like a a huge prompt with a bunch of screenshots of inspiration and then immediately I'll queue up like a bunch of other messages of like oh we'll do this feature and do this feature and do this feature and I'll kind of uh uh let it go."}, {"id": "s156", "start": 769.8389999999999, "end": 772.72, "text": "So that's something that I that I've seen helps."}, {"id": "s157", "start": 772.72, "end": 773.04, "text": "Cool."}, {"id": "s158", "start": 773.04, "end": 779.2, "text": "Uh this is one this is the one I talked about iterating with a cheaper open source model can be using closed source models for everything."}, {"id": "s159", "start": 779.2, "end": 782.56, "text": "Um for iteration tasks I I' I've found they're a lot better."}, {"id": "s160", "start": 782.56, "end": 789.279, "text": "Um I think uh cursor did a great job proving this with like composer 2.5 which is like an open source model that they postrained."}, {"id": "s161", "start": 789.279, "end": 794.399, "text": "Um and uh it kind of feels magical using it for iteration because it's so so so fast."}, {"id": "s162", "start": 794.399, "end": 799.279, "text": "And so you'll see that in in uh some of these uh open source models."}, {"id": "s163", "start": 799.279, "end": 799.44, "text": "Cool."}, {"id": "s164", "start": 799.44, "end": 799.6, "text": "Cool."}, {"id": "s165", "start": 799.6, "end": 806.16, "text": "And then the last thing is um I see people kind of trying to oneshot apps and then being like, well, that's it."}, {"id": "s166", "start": 806.16, "end": 806.56, "text": "I'm done."}, {"id": "s167", "start": 806.56, "end": 807.92, "text": "You know, I'm going to post this as is."}, {"id": "s168", "start": 807.92, "end": 813.68, "text": "And it's really really important to understand that like whatever your agent creates is just the base, right?"}, {"id": "s169", "start": 813.68, "end": 824.48, "text": "And it's on you to kind of like give it additional context, give it additional inspiration, and go back and forth and um make the apps look and feel really good, keep them simple,"}, {"id": "s170", "start": 824.48, "end": 828.32, "text": "uh and and uh kind of iterate that way."}, {"id": "s171", "start": 828.32, "end": 828.88, "text": "Cool."}, {"id": "s172", "start": 828.88, "end": 829.68, "text": "That's all I got."}, {"id": "s173", "start": 829.68, "end": 831.859, "text": "Thank you so much for coming."}, {"id": "s174", "start": 831.859, "end": 833.859, "text": "[applause]"}]}, {"id": "8KkibGU_DDY", "title": "Mousepower: agents that can’t be measured, can’t be managed. — Maximillian Piras, Yutori", "channel": "AI Engineer", "duration": 1238, "upload_date": null, "url": "https://www.youtube.com/watch?v=8KkibGU_DDY", "api": "/api/talks/8KkibGU_DDY.json", "summary_url": "/#8KkibGU_DDY", "transcript": {"html": "/transcripts/8KkibGU_DDY.html", "txt": "/transcripts/8KkibGU_DDY.txt", "vtt": "/transcripts/8KkibGU_DDY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 14.32, "text": "Um well, thanks all for your time."}, {"id": "s3", "start": 14.32, "end": 19.48, "text": "Really appreciate you dropping by and it's always a a great honor to speak at the world's fair."}, {"id": "s4", "start": 19.48, "end": 26.04, "text": "So, I'll do my best to uh give you guys some valuable insights and um yeah, hopefully make it worth your time."}, {"id": "s5", "start": 26.04, "end": 31.16, "text": "So, my name's Maximilian Piros and today I'll be talking about mouse power."}, {"id": "s6", "start": 31.16, "end": 35.76, "text": "And this is a talk about measuring agents through mental models."}, {"id": "s7", "start": 35.76, "end": 41.48, "text": "But before I get into talking about measuring agents, I'm going to talk through a bit about how I use them every day."}, {"id": "s8", "start": 41.48, "end": 45.0, "text": "And it might seem familiar to you, but just to level set, we'll go through it."}, {"id": "s9", "start": 45.0, "end": 49.52, "text": "So, uh I tend to background them like I'm sure a lot of you people are as well."}, {"id": "s10", "start": 49.52, "end": 57.2, "text": "Um so, while my active attention is focusing on one thing, like perhaps giving this talk to you, I still want to make some progress on peripheral tasks."}, {"id": "s11", "start": 57.2, "end": 67.96, "text": "So, I'll keep my attention focused on giving this talk, while my agents can help me explore some designs in the background cuz I think that uh my slides need a bit of work."}, {"id": "s12", "start": 67.96, "end": 70.44, "text": "So, you know, I've got my design system already set up."}, {"id": "s13", "start": 70.44, "end": 73.03999999999999, "text": "I've got some guidance uh given to my agents."}, {"id": "s14", "start": 73.03999999999999, "end": 79.44, "text": "So, I'll kick off an agent to just try to explore some different directions on the type type two treatment and the layout."}, {"id": "s15", "start": 79.44, "end": 83.2, "text": "And um you know, just try to get as many explorations as possible."}, {"id": "s16", "start": 83.2, "end": 85.12, "text": "But of course, uh one agent's never enough."}, {"id": "s17", "start": 85.12, "end": 87.68, "text": "So, I like to kick off a bunch in parallel."}, {"id": "s18", "start": 87.68, "end": 89.2, "text": "You know, I've got a lot of slides to get through."}, {"id": "s19", "start": 89.2, "end": 98.24000000000001, "text": "So, I need all of my agents on and exploring it in different directions and uh hopefully I can get some interesting things to make my slides a bit better."}, {"id": "s20", "start": 98.24000000000001, "end": 106.08, "text": "And uh hopefully they can finish the job pretty soon cuz we're obviously kind of up against uh the timeline the the uh deadline here."}, {"id": "s21", "start": 106.08, "end": 108.68, "text": "So, um this is generally how I work."}, {"id": "s22", "start": 108.68, "end": 116.36, "text": "I'm sure it's probably familiar to a lot of you where we're just trying to kick off agents for as much as possible in parallel cuz it always feels like there's just"}, {"id": "s23", "start": 116.36, "end": 117.8, "text": "way more research to do."}, {"id": "s24", "start": 117.8, "end": 119.72, "text": "We want it to be as thorough as possible."}, {"id": "s25", "start": 119.72, "end": 121.8, "text": "There's way more design explorations to do."}, {"id": "s26", "start": 121.8, "end": 129.24, "text": "So, whenever our main focus is on one thing, why not kick a bunch of agents off in parallel and just try to maximize your time."}, {"id": "s27", "start": 129.24, "end": 133.12, "text": "And it's a lot of fun, of course, until you get the bill."}, {"id": "s28", "start": 133.12, "end": 136.4, "text": "And then you start to wonder, was it all worth it?"}, {"id": "s29", "start": 136.4, "end": 136.72, "text": "Right?"}, {"id": "s30", "start": 136.72, "end": 140.4, "text": "Did did you vibe code too hard?"}, {"id": "s31", "start": 140.4, "end": 142.2, "text": "Were you token maxing too much?"}, {"id": "s32", "start": 142.2, "end": 148.52, "text": "Like, could you have been more efficient in how you approached your sequencing your agents?"}, {"id": "s33", "start": 148.52, "end": 150.12, "text": "And so, this is what I'm going to get into today."}, {"id": "s34", "start": 150.12, "end": 152.76, "text": "It's It's how do we evaluate the token cost?"}, {"id": "s35", "start": 152.76, "end": 156.04, "text": "And specifically, how do we help our customers value it?"}, {"id": "s36", "start": 156.04, "end": 163.959, "text": "So, for the past year and a half, I've had the pleasure of working as a founding designer at a company called території and we focus on computer use models."}, {"id": "s37", "start": 163.959, "end": 172.64, "text": "These are models that learn to use a computer like a human would and the use case for them is when you can't get information from an API or an MCP,"}, {"id": "s38", "start": 172.64, "end": 183.239, "text": "why not just send an agent out to use the computer like a human would and then we can extract all types of data and manipulate it in ways that let us access all the stuff that wasn't accessible"}, {"id": "s39", "start": 183.239, "end": 183.8, "text": "previously."}, {"id": "s40", "start": 183.8, "end": 192.32, "text": "So, obviously less efficient than APIs and MCPs, but as a last resort, just have an agent go use the computer and try to get the information."}, {"id": "s41", "start": 192.32, "end": 196.16, "text": "Here's the U території agent using the U території website."}, {"id": "s42", "start": 196.16, "end": 198.04, "text": "Um checking out its own benchmark."}, {"id": "s43", "start": 198.04, "end": 200.519, "text": "So, kind of it's admire itself in a way."}, {"id": "s44", "start": 200.519, "end": 203.04, "text": "So, yeah, it gets it gets a bit weird."}, {"id": "s45", "start": 203.04, "end": 212.88, "text": "Like, and a lot of what I do as a founding designer there is talk to customers, try to understand how can we make agents as intuitive as possible, how do we figure out the mental models they're using"}, {"id": "s46", "start": 212.88, "end": 216.68, "text": "to value the use cases they want to send out agents for."}, {"id": "s47", "start": 216.68, "end": 220.07999999999998, "text": "And a lot of them do seem pretty confused so far."}, {"id": "s48", "start": 220.07999999999998, "end": 226.76, "text": "A lot of people are excited about agents, but the phrase that comes up quite often is that they feel like they're just scratching the surface."}, {"id": "s49", "start": 226.76, "end": 230.64, "text": "Um it seems like it's not quite intuitive how we can best use them yet."}, {"id": "s50", "start": 230.64, "end": 238.2, "text": "And so, in a lot of my uh customer discussions, it's it always comes down to a question of like, what is the best way to use use uh to use agents?"}, {"id": "s51", "start": 238.2, "end": 239.6, "text": "What are the best use cases for them?"}, {"id": "s52", "start": 239.6, "end": 244.24, "text": "And how do I think about the trade-offs with regards to token costs relative to value?"}, {"id": "s53", "start": 244.24, "end": 247.16, "text": "So, I think we're still kind of building this muscle today."}, {"id": "s54", "start": 247.16, "end": 253.16, "text": "And this leads me to the thesis of the talk, which is that I think agents have a measurement problem."}, {"id": "s55", "start": 253.16, "end": 262.96, "text": "And uh as an example, here's me at work trying to measure some agents, and one of my co-workers took this photo and told me I looked like I was uh trying to solve the mystery of Pepe Silvia."}, {"id": "s56", "start": 262.96, "end": 269.36, "text": "So, uh as you can see, it's it's it's not a it's not an easy task to to measure agents."}, {"id": "s57", "start": 269.36, "end": 272.4, "text": "But, I'm sure some of you are saying, \"Hold on a sec."}, {"id": "s58", "start": 272.4, "end": 274.24, "text": "Like, what is this guy talking about?"}, {"id": "s59", "start": 274.24, "end": 276.28, "text": "I've got a fleet of agents working for me right now."}, {"id": "s60", "start": 276.28, "end": 283.12, "text": "We're building our next million-dollar app as we speak, and I'm having a a totally fine time uh measuring my agents.\""}, {"id": "s61", "start": 283.12, "end": 292.36, "text": "Uh to which I will agree with you, uh but then I will point you to the mandatory Upton Sinclair quote to remind us all that everybody in this room is very biased,"}, {"id": "s62", "start": 292.36, "end": 302.8, "text": "and we're early adopters, and we're very excited to explore this new technology, but it doesn't mean that we represent the people that ultimately we're going to be trying to help adopt this technology."}, {"id": "s63", "start": 302.8, "end": 310.84, "text": "And so, you know, I think it's important to remind ourselves that in some way or another, we probably are selling tokens, whether it's indirectly or directly."}, {"id": "s64", "start": 310.84, "end": 317.28, "text": "And so, when we think about our own token usage, uh is it really representative of all the people out there who have never touched an agent yet?"}, {"id": "s65", "start": 317.28, "end": 320.88, "text": "Uh some people are still copy and pasting into ChatGPT."}, {"id": "s66", "start": 320.88, "end": 328.08, "text": "I may be married to one of these people, and despite how much I tried to get her to try out agents, she's not let me uh set her up with it yet."}, {"id": "s67", "start": 328.08, "end": 340.603, "text": "And so, um as a reminder, uh when we think about helping people adopt agents, you know, all the people across the world that we think could get as much uh excitement and value as as we do when we run off parallel agents, let's uh just remember this quote."}, {"id": "s68", "start": 340.603, "end": 341.12, "text": "[snorts]"}, {"id": "s69", "start": 341.12, "end": 347.12, "text": "And um so, it really boils down to the age-old problem of a new technology."}, {"id": "s70", "start": 347.12, "end": 352.12, "text": "And of course, there's tons of history we can go to to study how people solved this in the past."}, {"id": "s71", "start": 352.12, "end": 357.76, "text": "We have this really exciting new thing, but we haven't quite uh figured out the right ways to communicate it."}, {"id": "s72", "start": 357.76, "end": 366.0, "text": "And so for this talk, I'll go back to the 1700s and we can take some notes from when James Watt was trying to sell steam engines."}, {"id": "s73", "start": 366.0, "end": 372.76, "text": "And at the time he decided that uh a great use case for his steam engines was trying to replace a horse gin."}, {"id": "s74", "start": 372.76, "end": 375.72, "text": "And these are the was the power source of a mill at the time."}, {"id": "s75", "start": 375.72, "end": 381.8, "text": "So when you're for uh let's say a brewery and you you need some power source to to grind your barley or whatever."}, {"id": "s76", "start": 381.8, "end": 382.0, "text": "I don't know."}, {"id": "s77", "start": 382.0, "end": 389.08, "text": "I'm not I'm not like a big brewery guy, so I don't know exactly what how it's made, but you need a power source and the power source at the time that was common"}, {"id": "s78", "start": 389.08, "end": 394.44, "text": "was you hooked a horse up to a rotary arm and the horse walked in a circle and that's how you generated your power."}, {"id": "s79", "start": 394.44, "end": 403.24, "text": "Uh and seems crazy today maybe, but um at the time was commonplace and Watt thought, you know, it would be much better than a horse is like a very efficient machine."}, {"id": "s80", "start": 403.24, "end": 413.12, "text": "Although he um rightfully acknowledged that one of the big barriers to adopting it would be this cognitive dissonance of trying to tell people who kind of think in horses,"}, {"id": "s81", "start": 413.12, "end": 423.84, "text": "how do you adapt to this to this uh cold machine that's kind of intimidating and scary and perhaps uh somebody's going to say it's going to solve all your problems, but you you can't quite see the vision yet."}, {"id": "s82", "start": 423.84, "end": 428.28, "text": "So uh perhaps that sounds familiar to any of us working in agents today."}, {"id": "s83", "start": 428.28, "end": 439.72, "text": "And Watt's solution was that he needed to understand um the mental model of these people and specifically to create a metric that would help him uh give some baseline of the relative improvement in efficiency."}, {"id": "s84", "start": 439.72, "end": 453.88, "text": "And so he literally studied uh horse gins and tried to get some kind of armchair measurements of of how is uh like where the mechanics and the average um performance of it and eventually came to a metric"}, {"id": "s85", "start": 453.88, "end": 457.12, "text": "called horsepower, which may sound familiar."}, {"id": "s86", "start": 457.12, "end": 469.6, "text": "And uh he used this measure to, you know, this was to quantify the the general power that the horses were were um creating at the time and then he could use that as a basis to show the multiplier of efficiency that a steam engine could provide."}, {"id": "s87", "start": 469.6, "end": 472.84000000000003, "text": "And this metric was not very scientific at the time."}, {"id": "s88", "start": 472.84000000000003, "end": 476.28, "text": "It was not necessarily even accurate, you could say."}, {"id": "s89", "start": 476.28, "end": 489.88, "text": "But the main thing it did was it communicated an increase in value and so this led people who love horses let them kind of calibrate their the the efficiency gains that they could get by by"}, {"id": "s90", "start": 489.88, "end": 492.2, "text": "attempting to adopt a steam engine."}, {"id": "s91", "start": 492.2, "end": 500.4, "text": "So not even necessarily um what you would get when you use it, but what would get you over the limit of trying it out in the first place."}, {"id": "s92", "start": 500.4, "end": 511.96, "text": "And you know, it's it's it's a pretty big feat because like although um he had efficiency on his side with regards to this metric you know, let's be honest regardless of how efficient this was"}, {"id": "s93", "start": 511.96, "end": 514.479, "text": "horses just have great vibes."}, {"id": "s94", "start": 514.479, "end": 526.2, "text": "So like it's kind of hard to beat the vibes of horses and so he knew he had to kind of overcome the emotion and actually speak to to something that gave them an ability to calculate the ROI."}, {"id": "s95", "start": 526.2, "end": 527.12, "text": "And oh, sorry."}, {"id": "s96", "start": 527.12, "end": 528.88, "text": "Skipped something."}, {"id": "s97", "start": 528.88, "end": 537.2, "text": "And so yeah, the the lesson being if we're not able to give something that is a tangible ROI for our customers, then it's very hard for us to communicate"}, {"id": "s98", "start": 537.2, "end": 538.64, "text": "value."}, {"id": "s99", "start": 538.64, "end": 548.0, "text": "And I think we only need look to our own industry to see all the examples where other people in the technology sector are failing to calculate good ROIs as well."}, {"id": "s100", "start": 548.0, "end": 551.48, "text": "And so we might in this room think this is some sort of solved problem."}, {"id": "s101", "start": 551.48, "end": 563.2, "text": "But if you look to the other engineers in the world who are perhaps not as AI pilled they're theoretically very smart and should be able to figure out how to calculate this pretty well, but then you get these scenarios where"}, {"id": "s102", "start": 563.2, "end": 577.16, "text": "people are blowing through their entire token budget for a year and they're blowing through it in in a quarter or they're like dealing with token leaderboards and such and so obviously the incentives haven't quite aligned and we haven't perhaps got the right measure of value"}, {"id": "s103", "start": 577.16, "end": 579.44, "text": "in terms of the technology sector itself."}, {"id": "s104", "start": 579.44, "end": 587.12, "text": "And so how then do we end up scaling past past that and talk to people who have no idea what we're talking about, but still try to provide them"}, {"id": "s105", "start": 587.12, "end": 591.56, "text": "um a measure of the like increase efficiency with agents."}, {"id": "s106", "start": 591.56, "end": 596.92, "text": "And so right now I think we're kind of in this doom loop where we're we're overspending and we're underusing."}, {"id": "s107", "start": 596.92, "end": 600.4, "text": "Uh this is a term I borrowed from Ramp um and they have a great blog post on this."}, {"id": "s108", "start": 600.4, "end": 612.16, "text": "And so it's kind of this vicious cycle where we're just token maxing and ourselves into austerity kind of dropping out of the loop until we get more FOMO to to get activated enough to try it again."}, {"id": "s109", "start": 612.16, "end": 619.12, "text": "And so I think we have to break this loop and I think the way we do that is by getting better measures of that will communicate value."}, {"id": "s110", "start": 619.12, "end": 621.16, "text": "Some people are obviously on the right track."}, {"id": "s111", "start": 621.16, "end": 634.76, "text": "There was this chart floating around on X recently that the Coinbase Coinbase CEO posted where they hadn't really started changing the defaults of what models they will start with and trying to only save the frontier models for the hardest tasks and"}, {"id": "s112", "start": 634.76, "end": 640.24, "text": "as a result saw some good saw AI spend start to diverge from token usage."}, {"id": "s113", "start": 640.24, "end": 641.64, "text": "And uh this is a good start."}, {"id": "s114", "start": 641.64, "end": 644.36, "text": "Uh Ramp also, as I mentioned, has a great blog post about this."}, {"id": "s115", "start": 644.36, "end": 648.76, "text": "Uh but I think the problem is still that it's too focused on tokens."}, {"id": "s116", "start": 648.76, "end": 656.8389999999999, "text": "And tokens are of course uh useful as a measurement of an internal system, but at at the end of the day they're just an output."}, {"id": "s117", "start": 656.8389999999999, "end": 661.36, "text": "And so the tokens need to then be traced very cleanly to an outcome."}, {"id": "s118", "start": 661.36, "end": 672.04, "text": "So how many uh bug how many bugs did the tokens uh how sorry how many um bugs squashed did the tokens that we bought um sorry, totally butchered that."}, {"id": "s119", "start": 672.04, "end": 675.839, "text": "Um how many uh bugs got squashed with the to with our token spend?"}, {"id": "s120", "start": 675.839, "end": 683.96, "text": "How many uh support requests got closed, etc. So clean outcomes and then cleanly tying those to to progress on our objectives."}, {"id": "s121", "start": 683.96, "end": 689.32, "text": "And so without uh a very tight measure of ROI, this becomes very hard to do."}, {"id": "s122", "start": 689.32, "end": 700.4, "text": "And I think I'll take this further and um say that it need not even be the the broader um, technology industry where it's encountering this problem, but also many of us in this room perhaps are."}, {"id": "s123", "start": 700.4, "end": 711.36, "text": "And uh, although we're all probably enjoying uh, coding with uh, with various agents and feeling like it it's it does feel like there's something there in terms of the increase in ability and efficiency."}, {"id": "s124", "start": 711.36, "end": 714.64, "text": "Um, the problem of course is that we're all kind of dying by a thousand pull requests."}, {"id": "s125", "start": 714.64, "end": 724.48, "text": "And so, uh, even Anthropic who has uh, some people on the team have claimed have solved coding, uh, they have also admitted that they've not solved code review."}, {"id": "s126", "start": 724.48, "end": 740.2, "text": "And so, as a result, um, the the bottleneck is now shifted to the human review where the efficiency gains from coding agents aren't quite are aren't seen yet because we spend most of the time reviewing the code and we've not figured out how to scale that in tandem with uh, the generation of the code itself."}, {"id": "s127", "start": 740.2, "end": 750.8, "text": "And so, the bottleneck ends up shifting to the verification side and thus we don't have a way to uh, measure value at scale and uh, to judge quality at at the same speed."}, {"id": "s128", "start": 750.8, "end": 760.16, "text": "And so, again going back to the ROI calculations, we generate all this code, but how do we know uh, we don't know that enough of it is good to justify the spend."}, {"id": "s129", "start": 760.28, "end": 769.24, "text": "And of course, maybe uh, code review was always flawed, uh, but it's just that agents are now exposing it for uh, the are exposing the actual problem."}, {"id": "s130", "start": 769.24, "end": 779.76, "text": "Um, but I like this quote by Noah Hein who from a a post about how to solve code review where he's mentioning specifically that the assumptions underneath code review are what's now being uh, what needs to be revisited."}, {"id": "s131", "start": 779.76, "end": 787.16, "text": "So, you have to uh, check our priors to try to figure out a new basis for um, how we can code review in the age of agents."}, {"id": "s132", "start": 787.16, "end": 789.6, "text": "And I'm not going to go into how to solve code review."}, {"id": "s133", "start": 789.6, "end": 800.16, "text": "I think that's definitely better uh, a talk that's better given by somebody else and um, is totally different subject, but uh, what I think is important for this talk is why does code review feel like it is solvable?"}, {"id": "s134", "start": 800.16, "end": 810.12, "text": "And I think that Noah is hitting on something important here which is that as a as a culture uh, code review has a a good uh, convergence on shared assumptions and that lets you"}, {"id": "s135", "start": 810.12, "end": 822.92, "text": "um that lets you measure things at scale when we can all kind of converge on the measurement and it becomes somewhat of clear rubric and so the task at hand now is we have to adopt"}, {"id": "s136", "start": 822.92, "end": 828.04, "text": "we have to adapt those assumptions for the agentic age."}, {"id": "s137", "start": 829.32, "end": 841.96, "text": "And so we can we need to go if we're able to do that then we can go from execution at the speed of computer to measurement at the speed of computer and of course the measurements need to fit the mental models of the customers using it."}, {"id": "s138", "start": 841.96, "end": 851.6, "text": "And I think the lesson here being that if you're going to think of how to build an agent for something you also have to think about how do you help the customers"}, {"id": "s139", "start": 851.6, "end": 863.92, "text": "build build or at least create a method for verifying that the output is good and so it's not enough to build it we also have to help them we also we also also have to help them get to clear ROI calculations"}, {"id": "s140", "start": 863.92, "end": 866.0, "text": "to justify their spend."}, {"id": "s141", "start": 866.0, "end": 879.56, "text": "And so this brings me to the idea of mouse power which could be the equivalent of horsepower for the agentic age just as James Watt was able to show a measure of efficiency relative to the horses in in the gins"}, {"id": "s142", "start": 879.56, "end": 888.64, "text": "in the horse gins that were the source of power at the time we perhaps can also figure out how do we create a baseline of efficiency for the way we use computers today"}, {"id": "s143", "start": 888.64, "end": 896.04, "text": "and can then demonstrate how much better or perhaps more performant on certain vectors an agent could be at that task."}, {"id": "s144", "start": 896.04, "end": 909.8, "text": "Um and of course it's not as easy perhaps as easy a task as he had back then where he could just study the horse gin cuz it's not as if we can create some method to measure cursor movements and like figure out the delta of how much more efficient"}, {"id": "s145", "start": 909.8, "end": 915.48, "text": "an agent could move them and thus we can say yeah agents are this much more performant than humans at these tasks."}, {"id": "s146", "start": 915.48, "end": 927.16, "text": "Trust me I've I've tried I had Claude vibe code me this measurement device and I thought maybe if I can figure out the movement like the potential movement across the screen and measure how fast it went,"}, {"id": "s147", "start": 927.16, "end": 929.6, "text": "I could get some clean measure of mouse power."}, {"id": "s148", "start": 929.6, "end": 931.6, "text": "Uh but of course this is only joking."}, {"id": "s149", "start": 931.6, "end": 943.0, "text": "Um this is of course um like a fool's errand because information space is just way too high dimensional and so I think mouse power is is never going to be a metric of course, but it's more so an idea."}, {"id": "s150", "start": 943.0, "end": 956.4, "text": "Which the idea being if you're going to sell somebody an agent, you also have to help them with the with the rubric of how do we actually verify that this agent is doing good work and thus we can uh have a good measure of saying that these tokens are worth it."}, {"id": "s151", "start": 956.4, "end": 968.4, "text": "Um so how to do that of course is is really up to you and I won't be able to tell you how do you I don't have any good frameworks for how do you figure out the right measurements to to help provide anybody you're building an agent for."}, {"id": "s152", "start": 968.4, "end": 975.08, "text": "Uh but what I can do is give a principle uh give an idea that I've been kicking around which is based um in information theory."}, {"id": "s153", "start": 975.08, "end": 980.72, "text": "So going back to Claude Shannon's ideas about measuring entropy and information."}, {"id": "s154", "start": 980.72, "end": 988.6, "text": "Uh entropy being uh the uncertainty of a probability distribution and of course very much the basis of how we train agents today."}, {"id": "s155", "start": 988.6, "end": 993.48, "text": "Things like cross entropy and such uh being a big factor in determining how capable an agent is."}, {"id": "s156", "start": 993.48, "end": 1002.96, "text": "Um I think that entropy's an interesting idea to think through with regards to not just the performance of an agent, but also the task that we're setting them out to to perform on."}, {"id": "s157", "start": 1002.96, "end": 1012.16, "text": "And so uh I put together this matrix which uh it maps on the x-axis axis the uncertainty in the steps it takes to perform a task."}, {"id": "s158", "start": 1012.16, "end": 1020.04, "text": "And so when we're thinking of building an agent, I think it's not enough to just think what would be a valuable task for the agent to do, but also thinking about how"}, {"id": "s159", "start": 1020.04, "end": 1024.04, "text": "um how much uncertainty are in the steps to perform that task itself."}, {"id": "s160", "start": 1024.04, "end": 1030.8, "text": "So an example would be uh booking a flight has uh much less uncertainty than let's say painting a masterpiece, right?"}, {"id": "s161", "start": 1030.8, "end": 1035.439, "text": "Because you know there's certain information that has to be that has to happen in the flight purchase."}, {"id": "s162", "start": 1035.439, "end": 1038.56, "text": "There has to be a departing destination, arriving destination."}, {"id": "s163", "start": 1038.56, "end": 1039.8, "text": "There's going to be a seat chosen."}, {"id": "s164", "start": 1039.8, "end": 1041.0, "text": "It might be by the person."}, {"id": "s165", "start": 1041.0, "end": 1042.52, "text": "It might just be random."}, {"id": "s166", "start": 1042.52, "end": 1045.439, "text": "But these things have to happen for that task to be completed."}, {"id": "s167", "start": 1045.439, "end": 1049.72, "text": "And on the other hand, there is the task of like painting a masterpiece, right?"}, {"id": "s168", "start": 1049.72, "end": 1052.0, "text": "And who knows what the steps are to that?"}, {"id": "s169", "start": 1052.0, "end": 1060.6, "text": "Maybe you can get an agent to do it, but it would be very hard to figure out how we can actually create a a relatively predictable pathway to that."}, {"id": "s170", "start": 1060.6, "end": 1066.0, "text": "But then on the other axis is the the uncertainty in the acceptance criteria itself."}, {"id": "s171", "start": 1066.0, "end": 1074.48, "text": "So not just can the agent perform the task, but can we help somebody actually or is is there actually a a clean rubric for how it's graded?"}, {"id": "s172", "start": 1074.48, "end": 1083.56, "text": "And so thinking about ideas on on these two axes and where they intersect, perhaps gives us a better guide for how to build agents and we can run through a few examples."}, {"id": "s173", "start": 1083.56, "end": 1089.12, "text": "So if we look at the at the left side, your right side."}, {"id": "s174", "start": 1089.12, "end": 1090.08, "text": "Yes."}, {"id": "s175", "start": 1090.08, "end": 1092.04, "text": "No, you're left as well."}, {"id": "s176", "start": 1092.04, "end": 1096.72, "text": "Then No, last speaker was also a confused about."}, {"id": "s177", "start": 1096.72, "end": 1107.8, "text": "So uh Yeah, on the left side when uncertainty in the task steps are low, then it's a very it's a very predictable outcome or it's a very predictable pathway to achieve that goal."}, {"id": "s178", "start": 1107.8, "end": 1110.36, "text": "And so then, you know, why would you waste tokens?"}, {"id": "s179", "start": 1110.36, "end": 1111.8, "text": "Just write a script."}, {"id": "s180", "start": 1111.8, "end": 1120.96, "text": "On the other side, when the the steps to do perform the task are very high in in uncertainty, then you you have very unpredictable information."}, {"id": "s181", "start": 1120.96, "end": 1127.88, "text": "And so it's probably at risk of being out of distribution in pre-training and probably has very sparse rewards for reinforcement learning."}, {"id": "s182", "start": 1127.88, "end": 1134.52, "text": "And so perhaps it's not a a good task for an agent because it's just much harder to figure out how to actually model that data."}, {"id": "s183", "start": 1134.52, "end": 1142.92, "text": "And so obviously in the middle is is um is so I'm I think I'm out of time, but I'm not getting kicked off yet."}, {"id": "s184", "start": 1142.92, "end": 1144.04, "text": "So I'll just finish this up quickly."}, {"id": "s185", "start": 1144.04, "end": 1150.68, "text": "Um so yeah, in the middle is is probably the sweet spot, but then on the other axis, what's the uncertainty in verifying that this is actually valuable?"}, {"id": "s186", "start": 1150.68, "end": 1157.8, "text": "So when you have high uncertainty in the acceptance criteria, you pretty much are in a spot where verification is indistinguishable from execution."}, {"id": "s187", "start": 1157.8, "end": 1164.12, "text": "So, why would you build an agent for something that to verify was useful, a person pretty much has to do the work again."}, {"id": "s188", "start": 1164.12, "end": 1167.08, "text": "So, like waste of tokens obviously."}, {"id": "s189", "start": 1167.08, "end": 1178.48, "text": "And then it leaves that that middle area where you have this interesting intersection of tasks that are um they're not too uncertain in that they or they they have"}, {"id": "s190", "start": 1178.48, "end": 1189.28, "text": "a degree of uncertainty where they're not great they're not just a a script or they're not out of distribution for training, but they have enough uncertainty to be interesting, but at the at the same time"}, {"id": "s191", "start": 1189.28, "end": 1196.4, "text": "they also have a property of being relatively easy to validate the to check the value of them."}, {"id": "s192", "start": 1196.4, "end": 1202.96, "text": "And so they become in this place where they kind of become the shape of an NP-style problem, which means they're easier to verify than to execute."}, {"id": "s193", "start": 1202.96, "end": 1211.88, "text": "And the reason I say that is because if you can figure out a pretty repeatable pattern for verifying their their work, you can actually just throw agents to that problem as well."}, {"id": "s194", "start": 1211.88, "end": 1217.88, "text": "And so of course you don't just build the agent, you perhaps build the agent that verifies the work of the agent."}, {"id": "s195", "start": 1217.88, "end": 1232.04, "text": "Um and so yeah, this is perhaps this is a thought starter mostly kind of have kind of still in the works, so I'm happy to hear any thoughts on it, but if with this guidance I hope when you're building your next agent you can also figure out how to"}, {"id": "s196", "start": 1232.04, "end": 1234.08, "text": "also build its mouse power."}, {"id": "s197", "start": 1234.08, "end": 1236.56, "text": "And thanks very much."}]}, {"id": "9R--1tg45Jg", "title": "Build-Time vs. Run-Time: Why Dev Tools Fail in Production — Averi Kitsch & Prerna Kakkar, Google", "channel": "AI Engineer", "duration": 1226, "upload_date": null, "url": "https://www.youtube.com/watch?v=9R--1tg45Jg", "api": "/api/talks/9R--1tg45Jg.json", "summary_url": "/#9R--1tg45Jg", "transcript": {"html": "/transcripts/9R--1tg45Jg.html", "txt": "/transcripts/9R--1tg45Jg.txt", "vtt": "/transcripts/9R--1tg45Jg.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.48, "end": 17.36, "text": "Hey everyone, how all of you are doing today?"}, {"id": "s3", "start": 17.52, "end": 18.88, "text": "Yeah."}, {"id": "s4", "start": 18.88, "end": 20.96, "text": "Uh so nice to meet you everyone."}, {"id": "s5", "start": 20.96, "end": 26.56, "text": "Uh today uh I and my friend Avery are going to talk about build time versus runtime."}, {"id": "s6", "start": 26.56, "end": 30.4, "text": "Why your developer tools fail in production."}, {"id": "s7", "start": 30.48, "end": 33.44, "text": "So firstly, know about us."}, {"id": "s8", "start": 33.44, "end": 34.399, "text": "Hi everybody."}, {"id": "s9", "start": 34.399, "end": 39.36, "text": "I'm Avery Kit and I'm a staff software engineer working on Google Cloud databases."}, {"id": "s10", "start": 39.36, "end": 51.36, "text": "I'm currently the technical lead for MCP toolbox for databases, our open-source uh database MCP server and our Google Cloud MCP server um maintainer."}, {"id": "s11", "start": 51.36, "end": 64.32, "text": "Hi, I'm Pna and I am currently working as senior software engineer at Google and I am currently tech lead for Eval bench which is the evaluation framework for all your agent tech MCP and skills need"}, {"id": "s12", "start": 64.32, "end": 68.72, "text": "and I'm also an active contributor to MCP toolbox."}, {"id": "s13", "start": 69.36, "end": 72.799, "text": "So today we are going to cover three areas broadly."}, {"id": "s14", "start": 72.799, "end": 76.799, "text": "We will firstly start with the history of MCP at Google."}, {"id": "s15", "start": 76.799, "end": 89.92, "text": "Then we will cover on the common tool patterns that we have found from our own work and practices and how did we use all those practices to build some tools for database access and how you can use them"}, {"id": "s16", "start": 89.92, "end": 98.56, "text": "and then lastly we will talk about security guard rails how you can stop data leaks using identity aware guardrails."}, {"id": "s17", "start": 98.96000000000001, "end": 102.799, "text": "So let's get to know the background quickly."}, {"id": "s18", "start": 102.799, "end": 105.68, "text": "Um I'll talk about MCB toolbox for database."}, {"id": "s19", "start": 105.68, "end": 110.64, "text": "It's an open-source self-managed uh serving that we provide."}, {"id": "s20", "start": 110.64, "end": 115.03999999999999, "text": "Uh it has currently about 15.7K GitHub stars."}, {"id": "s21", "start": 115.03999999999999, "end": 120.079, "text": "We have 132 plus active contributors across 40 plus different databases."}, {"id": "s22", "start": 120.079, "end": 129.599, "text": "It's highly customizable framework and basically we provide you with connection pooling integrated O and you don't even need to care about the observability."}, {"id": "s23", "start": 129.599, "end": 132.879, "text": "You will get all of them out of the box."}, {"id": "s24", "start": 132.879, "end": 143.12, "text": "Then if you don't want to do a self-managed one but you want to have a hosted scaled version, we provide something as Google managed MCP."}, {"id": "s25", "start": 143.12, "end": 144.64, "text": "It's fully managed."}, {"id": "s26", "start": 144.64, "end": 154.879, "text": "Uh you can plug it across various agents and ids or harnesses like Gemini CLI, anti-gravity CLI, cloud code, you name any."}, {"id": "s27", "start": 154.879, "end": 166.31900000000002, "text": "uh it's co uh it's governed and the discovery is simple and we also provide model armor which provides secure access management and identity control."}, {"id": "s28", "start": 166.31900000000002, "end": 176.239, "text": "So combined with uh the managed version of MCP and the MCP toolbox last month we had 20 million tool calls."}, {"id": "s29", "start": 176.8, "end": 181.36, "text": "Um some of the common tool patterns that we have observed specifically for databases."}, {"id": "s30", "start": 181.36, "end": 184.8, "text": "So I'm going to quickly talk about them."}, {"id": "s31", "start": 184.8, "end": 187.44, "text": "Firstly uh is the control plane tools."}, {"id": "s32", "start": 187.44, "end": 191.28, "text": "What we like to call them is admin tools or manage tools."}, {"id": "s33", "start": 191.28, "end": 194.319, "text": "It is basically in developer assistance space."}, {"id": "s34", "start": 194.319, "end": 201.44, "text": "So it will help you create like instance, manage your instance, create your databases, manage your databases."}, {"id": "s35", "start": 201.44, "end": 204.319, "text": "It will help you with all your DBA needs."}, {"id": "s36", "start": 204.319, "end": 206.56, "text": "But you need to be very careful."}, {"id": "s37", "start": 206.56, "end": 214.0, "text": "You need to be you need to have a human in the loop because we don't want to carry out any dangerous activities."}, {"id": "s38", "start": 214.0, "end": 223.84, "text": "Um so these tools are built on already provisioned public API so you get monitoring and other things out of the box."}, {"id": "s39", "start": 224.239, "end": 228.31900000000002, "text": "Next one is natural language to SQL or NL2SQL tools."}, {"id": "s40", "start": 228.31900000000002, "end": 236.31900000000002, "text": "So basically we are relying on a tool called as execute SQL and with the help of agent we generate raw SQL queries."}, {"id": "s41", "start": 236.31900000000002, "end": 241.68, "text": "So you can use this cases where you don't know uh what queries you would require beforehand."}, {"id": "s42", "start": 241.68, "end": 246.159, "text": "So you will get all these queries out of the out of the box."}, {"id": "s43", "start": 246.159, "end": 254.48, "text": "So it it focuses on the developer assistance and analytical agents and uh you can use it for flexible explorations."}, {"id": "s44", "start": 254.48, "end": 266.479, "text": "So for example, we have one of the examples like find all customers in California who bought a winter coat in July and returned it within 14 days and group them by the marketing campaign"}, {"id": "s45", "start": 266.479, "end": 268.96, "text": "that originally acquired them."}, {"id": "s46", "start": 268.96, "end": 275.759, "text": "So this is one of the queries where uh you can use this tool uh to get your answers."}, {"id": "s47", "start": 277.36, "end": 290.32, "text": "But then we have something called a structure SQL tools which is getting quite popular and this targets mainly the production use cases where you know like what SQL query you want to use and you want to have security"}, {"id": "s48", "start": 290.32, "end": 303.919, "text": "built in and uh you the parameters are already configured so uh you prevent SQL injection and ensure highly controlled access by restricting agent to predefined logic."}, {"id": "s49", "start": 303.919, "end": 310.24, "text": "It also helps you with your latency needs and reduce the hallucination on the agent side."}, {"id": "s50", "start": 310.8, "end": 317.12, "text": "Now we come to the main topic I guess for which you guys are here for buildtime versus runtime."}, {"id": "s51", "start": 317.12, "end": 320.08, "text": "So buildtime are the developer assistant use cases."}, {"id": "s52", "start": 320.08, "end": 326.88, "text": "Um you can think about the initial two cases that we presented to you like the NL2SQL tools and the control plane tools."}, {"id": "s53", "start": 326.88, "end": 329.759, "text": "They come into the category of buildtime tools."}, {"id": "s54", "start": 329.759, "end": 341.44, "text": "uh it's atomic and f flexible but again you don't want to delete your databases so it requires to be a human in the loop case and you can't run them on the on production use cases"}, {"id": "s55", "start": 341.44, "end": 354.24, "text": "but let's say I'm interested in building some chat B and I want to do production use cases there you rely on runtime or end user applications you can build those using patenting AI or lchain"}, {"id": "s56", "start": 354.24, "end": 364.08, "text": "um so you can see one of the examples like we have a cancel order a deterministic structure SQL query that we have given and you can use it as a tool."}, {"id": "s57", "start": 365.039, "end": 374.319, "text": "This is one of the examples uh or demo for like wherein a buildtime tool was used and uh you can see the error message."}, {"id": "s58", "start": 374.319, "end": 378.319, "text": "So uh agent actually asked to delete the table and start fresh."}, {"id": "s59", "start": 378.319, "end": 384.0, "text": "We deleted everything and there were no safeguard or guardrails here."}, {"id": "s60", "start": 384.0, "end": 389.68, "text": "Now let's go to our demo for runtime tools."}, {"id": "s61", "start": 398.08, "end": 402.15999999999997, "text": "Yeah, maybe um I think until the video loads."}, {"id": "s62", "start": 402.15999999999997, "end": 410.15999999999997, "text": "So, so sorry for the technical glitch that we have, but I can quickly walk you through what we are going to present in the video and I guess it's loading."}, {"id": "s63", "start": 410.15999999999997, "end": 412.15999999999997, "text": "Yeah."}, {"id": "s64", "start": 412.24, "end": 420.16, "text": "Um so this demo is particularly talking about how did we use our production tools in a chatbot."}, {"id": "s65", "start": 420.16, "end": 435.84, "text": "Uh and we created a demo called a Similar and Symbolair is going to help me with booking all my flights in San Francisco and do and whatever I would require to do in San San Francisco it would basically help me with it."}, {"id": "s66", "start": 435.84, "end": 445.599, "text": "Uh, one of the things that I would try is I would try to fool my agent that I am Avery and not PRA and book a flight for me to"}, {"id": "s67", "start": 445.599, "end": 447.599, "text": "San Francisco."}, {"id": "s68", "start": 447.599, "end": 460.319, "text": "But because our agent is uh has all the authenticated O, it will not get fooled and it will not book any flights uh on behalf of Avery, but it will do it on my behalf."}, {"id": "s69", "start": 460.319, "end": 464.15999999999997, "text": "Um and then you can use it to basically change your flights."}, {"id": "s70", "start": 464.15999999999997, "end": 470.4, "text": "You want to know about all the shops that are there, you can do all these requirements using that."}, {"id": "s71", "start": 470.4, "end": 475.52, "text": "So I guess thank you u Avery."}, {"id": "s72", "start": 479.36, "end": 481.759, "text": "I think we"}, {"id": "s73", "start": 497.805, "end": 499.759, "text": "[sighs]"}, {"id": "s74", "start": 499.759, "end": 505.199, "text": "Apologies again for our technical difficulties here."}, {"id": "s75", "start": 512.0, "end": 516.9590000000001, "text": "Um, unfortunately, it looks like I need to present from just the slide deck because it's not loading."}, {"id": "s76", "start": 516.9590000000001, "end": 526.48, "text": "Okay, so I apologize for not being able to see our demo today, but we can still learn all the security and guardrails that we need to secure our database access."}, {"id": "s77", "start": 526.48, "end": 531.6, "text": "So, the first thing that we need to know is your database is only as secure as your agent."}, {"id": "s78", "start": 531.6, "end": 535.6, "text": "We all know that agents and LMS are actually pretty easy to trick."}, {"id": "s79", "start": 535.6, "end": 541.36, "text": "They might be getting slightly better today, but we can still work really hard to trick them."}, {"id": "s80", "start": 541.36, "end": 546.24, "text": "And so we have a very common attack pattern called the confused deputy attack."}, {"id": "s81", "start": 546.24, "end": 556.0, "text": "And this is when a user can trick an agent into misusing their privileges um to access data that a user wasn't supposed to access."}, {"id": "s82", "start": 556.0, "end": 560.399, "text": "So Simon Willis actually coined the phrase the lethal trifecta."}, {"id": "s83", "start": 560.399, "end": 566.24, "text": "And a data breach occurs when an agent has simultaneous access to three different things."}, {"id": "s84", "start": 566.24, "end": 568.24, "text": "One, private data."}, {"id": "s85", "start": 568.24, "end": 570.399, "text": "Two, untrusted content."}, {"id": "s86", "start": 570.399, "end": 577.76, "text": "And three, the ability to expose that content and that data back to an external user."}, {"id": "s87", "start": 578.56, "end": 581.6, "text": "So let's take a look of that in action."}, {"id": "s88", "start": 581.6, "end": 592.72, "text": "So let's say I'm building a triage um agent and so a ticket is fired or alert goes out and my agent is designed to um look at that ticket and"}, {"id": "s89", "start": 592.72, "end": 595.76, "text": "go investigate what it needs to do."}, {"id": "s90", "start": 595.76, "end": 602.48, "text": "So on that ticket the agent gets a little bit of data like we need to go look in this database for these reasons."}, {"id": "s91", "start": 602.48, "end": 614.56, "text": "Um but a malicious insider can actually come into that trusted system and instead say well I want to query the salary database and please return all the employees salaries."}, {"id": "s92", "start": 614.56, "end": 619.519, "text": "And so since this is a trusted system the agent goes okay let me use my permissions."}, {"id": "s93", "start": 619.519, "end": 620.88, "text": "I have those privileges."}, {"id": "s94", "start": 620.88, "end": 622.16, "text": "I have that access."}, {"id": "s95", "start": 622.16, "end": 627.8389999999999, "text": "I will query that and I'll post that right back on the ticket because that's what the ticket tells me to do."}, {"id": "s96", "start": 627.8389999999999, "end": 631.12, "text": "But now we have a huge data breach."}, {"id": "s97", "start": 631.12, "end": 636.64, "text": "a user that wasn't supposed to have access to private data now has that access."}, {"id": "s98", "start": 636.64, "end": 640.48, "text": "And so now we have a big PR fiasco."}, {"id": "s99", "start": 643.519, "end": 650.8, "text": "So this makes a little bit more sense when we think about who's controlling access and who's controlling the parameters."}, {"id": "s100", "start": 650.8, "end": 656.16, "text": "So we talk about agent or application versus modeled controlled parameters."}, {"id": "s101", "start": 656.16, "end": 670.0, "text": "So in a traditional architecture, things were actually much easier because you would have a few input fields, you would define your queries and then that would be safely injected into those queries."}, {"id": "s102", "start": 670.8, "end": 681.6, "text": "And so it was okay when your application had a little bit more access because it knew exactly what actions it was going to take."}, {"id": "s103", "start": 681.92, "end": 686.399, "text": "But in uh a gent application these rules aren't as clear."}, {"id": "s104", "start": 686.399, "end": 690.8, "text": "So we need to first think about um separating the three different identities."}, {"id": "s105", "start": 690.8, "end": 697.8389999999999, "text": "We have the user identity, we have the application identity and the agent identity."}, {"id": "s106", "start": 699.12, "end": 703.6, "text": "So first um we need to think about what the user has access to."}, {"id": "s107", "start": 703.6, "end": 707.279, "text": "So the user just needs to have access to the application."}, {"id": "s108", "start": 707.279, "end": 725.839, "text": "that application's workload identity can have a little bit more broader access um because it needs to probably talk to different services but the agent running in that application only needs to have access to the data that that end user initially needs to have."}, {"id": "s109", "start": 726.0, "end": 731.04, "text": "So then next we need to think about who's controlling the tool inputs."}, {"id": "s110", "start": 731.04, "end": 737.2, "text": "So we have um agent parameters um and a application parameters."}, {"id": "s111", "start": 737.2, "end": 742.32, "text": "So agent parameters are the untrusted inputs that the agent is deriving dynamically."}, {"id": "s112", "start": 742.32, "end": 744.959, "text": "And then we also have application parameters."}, {"id": "s113", "start": 744.959, "end": 751.8389999999999, "text": "These are the factual constraints that we need to keep outside of the agents uh control."}, {"id": "s114", "start": 753.04, "end": 753.76, "text": "Okay."}, {"id": "s115", "start": 753.76, "end": 757.68, "text": "So now let's look at the evolution of a secure tool."}, {"id": "s116", "start": 757.68, "end": 761.12, "text": "Here we have a fully modeled control tool."}, {"id": "s117", "start": 761.12, "end": 764.0, "text": "And so essentially the agent here is a super user."}, {"id": "s118", "start": 764.0, "end": 773.2, "text": "It has access to database credentials, the host, the port, the connection details, and even the raw SQL query."}, {"id": "s119", "start": 773.44, "end": 778.24, "text": "And so we're only secure as um the agent here."}, {"id": "s120", "start": 778.24, "end": 782.56, "text": "And we can really easily again trick the agent into exposing all of this data."}, {"id": "s121", "start": 782.56, "end": 787.6, "text": "And now we have access to essentially any database in the system."}, {"id": "s122", "start": 788.0, "end": 793.04, "text": "So Toolbox solves for this um by introducing a source primitive."}, {"id": "s123", "start": 793.04, "end": 808.16, "text": "So we move the connection details out of the agents control and in toolbox um a user will preconfigure the connection details in a YAML file and then when we start our MCP server those are safely injected and so we do not have to have the agent"}, {"id": "s124", "start": 808.16, "end": 811.12, "text": "um to have access to that."}, {"id": "s125", "start": 813.279, "end": 818.16, "text": "So we can add a little bit more control to our um source security as well."}, {"id": "s126", "start": 818.16, "end": 822.32, "text": "Our number one request that we get from customers is read only restrictions."}, {"id": "s127", "start": 822.32, "end": 828.9590000000001, "text": "We want to be able to remove all right ability from agents if we need that specific uh user journey."}, {"id": "s128", "start": 828.9590000000001, "end": 838.16, "text": "So this means removing right tools but also down to the database driver ensuring that we can only do read only queries."}, {"id": "s129", "start": 838.16, "end": 849.68, "text": "If we're also concerned about again blast radius um and securing all of our tables and our databases um some of our cloudnative databases have this concept of allowed data sets."}, {"id": "s130", "start": 849.68, "end": 859.36, "text": "So again we can add that like enum to our source in order to continue to restrict um the blast radius of um the agents control and lastly is output size."}, {"id": "s131", "start": 859.36, "end": 871.6, "text": "You might not actually think that this is a security layer, but if again the agent gets into the wrong hands, we can reduce that blast radius by saying uh the agent can only uh grab this much data."}, {"id": "s132", "start": 871.6, "end": 876.32, "text": "So we're not overwhelming both our agent or our database."}, {"id": "s133", "start": 878.24, "end": 881.6, "text": "So sweet, we have our configurable sources tool."}, {"id": "s134", "start": 881.6, "end": 887.199, "text": "So you can see here that actually now our tool input, our tool signature is very minimalized."}, {"id": "s135", "start": 887.199, "end": 893.92, "text": "we only have the SQL string that's um being generated by the agent."}, {"id": "s136", "start": 895.12, "end": 898.32, "text": "But this comes to our actual our next pro problem."}, {"id": "s137", "start": 898.32, "end": 902.399, "text": "We want to be able to control what the agent is running."}, {"id": "s138", "start": 902.399, "end": 907.92, "text": "We don't want the agent to have the ability to generate any SQL um that it can think of."}, {"id": "s139", "start": 907.92, "end": 918.72, "text": "So toolbox introduces custom tools and again in our YAML file we can define the exact SQL uh statement that will run very reliable."}, {"id": "s140", "start": 918.88, "end": 922.399, "text": "It's a reliable and secure uh SQL query."}, {"id": "s141", "start": 922.399, "end": 926.48, "text": "Um this also allows us to customize the tool name and the tool description."}, {"id": "s142", "start": 926.48, "end": 933.92, "text": "These are really important for the agent to have the context on how to use this tool um accurately."}, {"id": "s143", "start": 934.0, "end": 940.56, "text": "And in the system we use prepared statements with type parameters in order to reduce um SQL injection attacks."}, {"id": "s144", "start": 940.56, "end": 950.639, "text": "So we make sure that everything is um we validate all the input types um when we inject that into the SQL for the user."}, {"id": "s145", "start": 952.16, "end": 956.24, "text": "Okay, let's dive into a little bit more of best practices for tool quality."}, {"id": "s146", "start": 956.24, "end": 959.759, "text": "So we really highly recommend that tools focus on outcomes."}, {"id": "s147", "start": 959.759, "end": 963.12, "text": "We really shouldn't be thinking in atomic rest APIs."}, {"id": "s148", "start": 963.12, "end": 966.56, "text": "we should think about what the action actually needs to do."}, {"id": "s149", "start": 966.56, "end": 972.32, "text": "This also reduces the round trip of needing to make multiple tool calls."}, {"id": "s150", "start": 972.32, "end": 974.959, "text": "And again, the descriptions are guidance."}, {"id": "s151", "start": 974.959, "end": 980.399, "text": "We shouldn't um duplicate information like input parameters because the agent already has access to that."}, {"id": "s152", "start": 980.399, "end": 987.12, "text": "So, writing really good um tool descriptions is very important for accurate tool usage."}, {"id": "s153", "start": 987.12, "end": 991.36, "text": "We also recommend that you separate read versus write tools."}, {"id": "s154", "start": 991.36, "end": 1004.639, "text": "Um by doing this you can automatically approve read tools and but you can also then send write tools uh to the user for um confirmation and this just makes it very much more clear for the agent to use these"}, {"id": "s155", "start": 1004.639, "end": 1007.36, "text": "and this is actually uh the next is actionable errors."}, {"id": "s156", "start": 1007.36, "end": 1011.04, "text": "This is the number one thing that I think we can all do better."}, {"id": "s157", "start": 1011.04, "end": 1023.279, "text": "So usually we just return like a generic HTTP error four or four but we all know agents are actually really smart now and so if you give the ability to have an error of that can be retrieded"}, {"id": "s158", "start": 1023.279, "end": 1025.36, "text": "the agent can actually take that action."}, {"id": "s159", "start": 1025.36, "end": 1032.4, "text": "So being able to return a error is really important and lastly is simple inputs."}, {"id": "s160", "start": 1032.4, "end": 1042.64, "text": "We see that people try to use these complex maps uh complex primitives to um that an agent needs to be able to build and that is not reliable."}, {"id": "s161", "start": 1042.64, "end": 1051.36, "text": "Using flat structure with um with uh simple inputs will really increase your reliability."}, {"id": "s162", "start": 1052.64, "end": 1053.52, "text": "So sweet."}, {"id": "s163", "start": 1053.52, "end": 1055.919, "text": "Now we're at custom semantic tools."}, {"id": "s164", "start": 1055.919, "end": 1063.52, "text": "You can see that we now have our lookup flights tool that takes in the dynamic parameters such as user ID and date."}, {"id": "s165", "start": 1063.52, "end": 1069.12, "text": "And so now our we're very much more secure because the agent isn't generating that SQL query."}, {"id": "s166", "start": 1069.12, "end": 1071.76, "text": "It doesn't have the ability to kind of go off the rails."}, {"id": "s167", "start": 1071.76, "end": 1075.76, "text": "It only is looking at these very specific inputs."}, {"id": "s168", "start": 1077.6, "end": 1081.52, "text": "But user ID is actually a very sensitive piece of information."}, {"id": "s169", "start": 1081.52, "end": 1082.72, "text": "It is PII."}, {"id": "s170", "start": 1082.72, "end": 1087.12, "text": "we need to also remove that from the ability of the agent's control."}, {"id": "s171", "start": 1087.12, "end": 1089.2, "text": "So we can do this in two different ways."}, {"id": "s172", "start": 1089.2, "end": 1091.12, "text": "We have bounded parameters."}, {"id": "s173", "start": 1091.12, "end": 1098.72, "text": "This is when the application first um authenticates the user and then we can bind that parameter um directly to our tool."}, {"id": "s174", "start": 1098.72, "end": 1101.039, "text": "And so that restricts the agents control of it."}, {"id": "s175", "start": 1101.039, "end": 1104.72, "text": "It actually never sees that user identity."}, {"id": "s176", "start": 1104.88, "end": 1110.08, "text": "But toolbox also solves for this in another way called authenticated parameters."}, {"id": "s177", "start": 1110.08, "end": 1122.32, "text": "This is when we tell the tool that you're going to receive a identity token, an open ID, a signed jot token, and when we call that tool that we want it first to validate that token."}, {"id": "s178", "start": 1122.32, "end": 1123.6, "text": "Is that token real?"}, {"id": "s179", "start": 1123.6, "end": 1124.799, "text": "Is that token correct?"}, {"id": "s180", "start": 1124.799, "end": 1129.28, "text": "And then we'll extract the user claims from that token for the user."}, {"id": "s181", "start": 1129.28, "end": 1135.44, "text": "And so the claims usually include like a user ID, an email, um an issuer."}, {"id": "s182", "start": 1135.44, "end": 1145.36, "text": "And so it's secured because we're again extracting that user identity out of the agents control and binding that to the tool."}, {"id": "s183", "start": 1148.64, "end": 1153.6, "text": "So now um we're have a much more secure tool."}, {"id": "s184", "start": 1153.6, "end": 1159.84, "text": "We have our lookup flights tool that only takes in a very easy parameter such as date."}, {"id": "s185", "start": 1159.84, "end": 1165.28, "text": "It doesn't have to handle any sensitive information such as PII, user identity."}, {"id": "s186", "start": 1165.28, "end": 1176.08, "text": "And so we're really here now at um our zero trust architecture where we're in full control of everything that we need to be in control of."}, {"id": "s187", "start": 1179.52, "end": 1182.4, "text": "So thank you all for coming to listen to our talk today."}, {"id": "s188", "start": 1182.4, "end": 1185.28, "text": "Again, I apologize for our technical difficulties."}, {"id": "s189", "start": 1185.28, "end": 1193.6, "text": "Uh we highly recommend if you want to learn more about our technologies um that you look at our documentation and our uh GitHub repository."}, {"id": "s190", "start": 1193.6, "end": 1202.32, "text": "I also really want to highlight our eval bench repository because this is how we know that our tools are working well and eval."}, {"id": "s191", "start": 1203.6, "end": 1207.039, "text": "So thank you all for joining us today."}, {"id": "s192", "start": 1207.178, "end": 1209.178, "text": "[applause]"}]}, {"id": "9wZpvF3QleU", "title": "500 Skills, Zero Fine-Tuning: LinkedIn's Playbook for AI Agents — Ajay Prakash, LinkedIn", "channel": "AI Engineer", "duration": 1225, "upload_date": null, "url": "https://www.youtube.com/watch?v=9wZpvF3QleU", "api": "/api/talks/9wZpvF3QleU.json", "summary_url": "/#9wZpvF3QleU", "transcript": {"html": "/transcripts/9wZpvF3QleU.html", "txt": "/transcripts/9wZpvF3QleU.txt", "vtt": "/transcripts/9wZpvF3QleU.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.4, "end": 14.48, "text": "Hey everyone, good morning."}, {"id": "s3", "start": 14.48, "end": 17.92, "text": "Uh thanks for being here."}, {"id": "s4", "start": 17.92, "end": 20.0, "text": "Uh I see people are still coming."}, {"id": "s5", "start": 20.0, "end": 28.0, "text": "Uh but yeah, my name is uh AJ and uh I am a software engineer at uh LinkedIn."}, {"id": "s6", "start": 28.0, "end": 37.76, "text": "Today I'm going to be talking about how we are doing context engineering to improve the performance of coding agents at LinkedIn."}, {"id": "s7", "start": 40.079, "end": 40.8, "text": "Okay."}, {"id": "s8", "start": 40.8, "end": 57.52, "text": "Uh imagine you are a software engineer in a big tech company and your products are being used by millions of users on a daily basis and you are happen to be on a team which owns set of very critical services"}, {"id": "s9", "start": 57.52, "end": 72.56, "text": "and you are on call right and you get an alert saying that there is an error spike in one of your services and uh by the time you're trying to figure out how to deal with this issue,"}, {"id": "s10", "start": 72.56, "end": 79.92, "text": "you take the link to the alert, give it to a coding agent like Cloud Code or GitHub Copilot."}, {"id": "s11", "start": 80.64, "end": 91.92, "text": "While you're trying to figure out um how to deal with the issue, uh the coding agent is working in the background, it will fetch the instructions on how to debug such issues in your company"}, {"id": "s12", "start": 91.92, "end": 98.96000000000001, "text": "and identifies that based on that instruction, it identifies that this alert is happening in uh specific service."}, {"id": "s13", "start": 98.96000000000001, "end": 111.03999999999999, "text": "Then it fetches instruction and context on how to debug that particular service and it will fetch the based on those instructions it will take actions like fetching logs metrics"}, {"id": "s14", "start": 111.03999999999999, "end": 124.88, "text": "and then it uses those logs to identify the root cause of the issue right so it identifies based on the error logs where the issue is happening and it doesn't just find the root cause it also"}, {"id": "s15", "start": 124.88, "end": 129.119, "text": "figures out the steps to mitigate the issue and once it finds all the det details."}, {"id": "s16", "start": 129.119, "end": 137.2, "text": "It summarizes and give it to you saying this is this is the error and this is the issue and this is the actions that you need to take to mitigate."}, {"id": "s17", "start": 137.2, "end": 145.2, "text": "And once you confirm, it also goes ahead and takes those actions on your behalf to mitigate the issue."}, {"id": "s18", "start": 145.44, "end": 147.68, "text": "And it doesn't just stop there."}, {"id": "s19", "start": 147.68, "end": 160.4, "text": "Uh it updates your incident management system with all the details, error metrics and dashboards etc. and also it checks out the code and creates a PR for you uh to fix the root cause of the issue."}, {"id": "s20", "start": 160.4, "end": 168.16, "text": "All of this happens in matter of few minutes which would have easily taken few hours if you were to do it manually."}, {"id": "s21", "start": 168.16, "end": 169.44, "text": "This is not fiction."}, {"id": "s22", "start": 169.44, "end": 183.68, "text": "So this is how teams at LinkedIn are using coding agents as effective co-workers with deep understanding of LinkedIn's internal systems and code to help the teams be really productive."}, {"id": "s23", "start": 185.36, "end": 193.44, "text": "And this is possible because of a system that we built called as contextual agent playbooks and tools at LinkedIn."}, {"id": "s24", "start": 193.44, "end": 202.239, "text": "And today I'm going to talk about why we built the system, how we built it and what are our learnings from the success."}, {"id": "s25", "start": 203.84, "end": 210.64, "text": "To understand why we built the this system, we have to go back to the early days of coding agents, right?"}, {"id": "s26", "start": 210.64, "end": 222.56, "text": "So just like any other company even at LinkedIn we wanted to use the coding agents to be for our engineers and everyone to be really productive with the AI."}, {"id": "s27", "start": 222.72, "end": 235.599, "text": "So we started using started giving this coding agents to all of the engineers and the problem was the coding agents doesn't really or the w coding doesn't really work in a large enterprise"}, {"id": "s28", "start": 235.599, "end": 239.439, "text": "at link um like LinkedIn."}, {"id": "s29", "start": 239.76, "end": 246.72, "text": "So the biggest problem is the coding agent or the LLMs are trained on open-source repos right."}, {"id": "s30", "start": 246.72, "end": 258.239, "text": "So they don't have the context of how we our uh mature code bases at LinkedIn or our internal frameworks or internal systems."}, {"id": "s31", "start": 258.239, "end": 269.759, "text": "So what used to happen was the engineers used to do wipe code or try the agentic coding but because it the agents lacked context they used to hallucinate and"}, {"id": "s32", "start": 269.759, "end": 277.919, "text": "like get stuck in between or uh even more dangerous they used to make up things which is not correct."}, {"id": "s33", "start": 277.919, "end": 288.8, "text": "So the engineers had to prompt these agents manually um to do the right thing which used to take more time than the manual coding itself."}, {"id": "s34", "start": 288.8, "end": 292.15999999999997, "text": "So a lot of people a lot of engineers went back to manual coding."}, {"id": "s35", "start": 292.15999999999997, "end": 300.96, "text": "So coding agents was not effective to understand the problem uh to get more perspective."}, {"id": "s36", "start": 300.96, "end": 318.16, "text": "So if you look at the LinkedIn stack, we have over thousand repos which make up thousands of uh microservices and apps and we have a lot of all of these apps and services are built on lot of internal frameworks and libraries"}, {"id": "s37", "start": 318.16, "end": 322.0, "text": "and we also have a lot of custombuilt infra."}, {"id": "s38", "start": 322.0, "end": 324.24, "text": "For example, we have our own databases."}, {"id": "s39", "start": 324.24, "end": 327.919, "text": "We have our own experimentation and tracking platform."}, {"id": "s40", "start": 327.919, "end": 343.12, "text": "We have our own configuration management system which is purely internal to LinkedIn and coding agents doesn't have any idea about them and engineers go through a week-long boot camp whenever a new engineer joins."}, {"id": "s41", "start": 343.12, "end": 347.039, "text": "So uh just to get familiar with these systems."}, {"id": "s42", "start": 349.6, "end": 372.56, "text": "So we looked at this problem and we asked ourselves the question how can we make any coding agent like cursor or cloud code or uh GitHub copilot understand our LinkedIn's internal system so well that they can ship the code that our engineers can trust."}, {"id": "s43", "start": 372.56, "end": 382.4, "text": "By trust I mean the code should be correct and also the quality of the code should be as good as uh it is written by an actual engineer."}, {"id": "s44", "start": 382.4, "end": 389.36, "text": "So that is the bar we set out and wanted to figure out how do we get there."}, {"id": "s45", "start": 390.319, "end": 403.84000000000003, "text": "So in early 2025 uh last year so uh Anthropic released MCB and it it quickly became the standard for industry standard for building tools to the agents."}, {"id": "s46", "start": 403.84000000000003, "end": 414.88, "text": "We leveraged that and pretty early on we built our own internal MCP and the first tool that we built was uh code search."}, {"id": "s47", "start": 415.12, "end": 422.4, "text": "So we have a pretty sophisticated code search system at LinkedIn where you um engineers can go and search for code."}, {"id": "s48", "start": 422.4, "end": 435.759, "text": "It will ingest all of uh search for any code across thousands of repos using keywords and custom filters and rejects etc. So we made that available to the coding agents via MCP."}, {"id": "s49", "start": 435.759, "end": 443.039, "text": "This was a really powerful unlock because now you don't have to manually figure out how to do better search the agent."}, {"id": "s50", "start": 443.039, "end": 444.24, "text": "You ask a question."}, {"id": "s51", "start": 444.24, "end": 447.759, "text": "Hey, how do I set up a particular thing?"}, {"id": "s52", "start": 447.759, "end": 458.479, "text": "And the agent can use the code search tools to figure out the right examples of how we do things at LinkedIn and use that to give you answer and also"}, {"id": "s53", "start": 458.479, "end": 461.919, "text": "uh implement it based on the its findings."}, {"id": "s54", "start": 461.919, "end": 464.0, "text": "This was really powerful."}, {"id": "s55", "start": 464.0, "end": 466.479, "text": "So we added more tools."}, {"id": "s56", "start": 466.479, "end": 476.879, "text": "We added docs, uh, Jiraa, Slack, um, even connected to all of our data platforms and even feature flags."}, {"id": "s57", "start": 476.879, "end": 490.08, "text": "So every core tool that we added to our internal MCP it created more value by comp it it's almost like a compounding effect because now a engineer can bring in the"}, {"id": "s58", "start": 490.08, "end": 502.639, "text": "PRDS product requirement documents and design docs and also their Jira tasks which has mult uh different context and use all this to give to the coding agent to automate their"}, {"id": "s59", "start": 502.639, "end": 505.68, "text": "um or help with their coding."}, {"id": "s60", "start": 507.36, "end": 509.12, "text": "But there was a problem."}, {"id": "s61", "start": 509.12, "end": 513.919, "text": "So you connect all these tools but it's not enough right?"}, {"id": "s62", "start": 513.919, "end": 522.479, "text": "So even with a slightly complex workflow the agents used to not do really well."}, {"id": "s63", "start": 522.479, "end": 538.64, "text": "The problem for example if you give a context it is uh with the tools the agent was able to answer questions answer basic questions and find code examples but it cannot do a like a complete job reliably end to end."}, {"id": "s64", "start": 538.64, "end": 547.519, "text": "The main problem was to do a specific job end to end it needs to have a lot of tribal knowledge right."}, {"id": "s65", "start": 547.519, "end": 559.279, "text": "So all of for example how to fix a particular error or how to uh configure how do you debug a particular um error log right so all of this knowledge"}, {"id": "s66", "start": 559.279, "end": 579.279, "text": "even though you have access to the tools it is scattered across lot of different surfaces for example docs wikis and slack conversations um etc and most of the times you may have experienced the docs and wikis might be outdated written and there might be like duplicate get docs, right?"}, {"id": "s67", "start": 579.279, "end": 585.68, "text": "So, the problem is the agents even though they have access to the tools, they used to get lost."}, {"id": "s68", "start": 585.68, "end": 589.6, "text": "The second problem was context overload."}, {"id": "s69", "start": 589.6, "end": 604.399, "text": "As agents use more and more tools, their context gets overloaded which means every tool uh tool output it takes up space in the context which will eventually cause the agent to compact its"}, {"id": "s70", "start": 604.399, "end": 611.12, "text": "um while it is working compacts it its context which causes it to lose some of the information."}, {"id": "s71", "start": 611.12, "end": 614.32, "text": "Then it has to do all over again."}, {"id": "s72", "start": 614.32, "end": 628.48, "text": "And the third problem was even though even if the agent was able to figure out all these uh details it can it doesn't have a way to retain this information it doesn't have a a durable memory."}, {"id": "s73", "start": 628.48, "end": 636.9590000000001, "text": "So every time a engineer asks the uh agent to do a certain task they have to start from scratch."}, {"id": "s74", "start": 638.079, "end": 640.32, "text": "So how do we solve this problem?"}, {"id": "s75", "start": 640.32, "end": 643.12, "text": "So we give this instructions right away right?"}, {"id": "s76", "start": 643.12, "end": 661.279, "text": "So we built a system, we invented a system in early 2025 called as uh playbooks where we not only provide the tools to the agents via MCP, we also allow the agents to access these instructions and prompts via MCP."}, {"id": "s77", "start": 661.279, "end": 663.2, "text": "We call it playbooks."}, {"id": "s78", "start": 663.2, "end": 670.64, "text": "And playbook it just appears just like any other regular tool."}, {"id": "s79", "start": 670.64, "end": 681.36, "text": "uh and they have uh names and description on what it does and the agent can decide to invoke that playbook just like any other regular tool and when the"}, {"id": "s80", "start": 681.36, "end": 691.2, "text": "uh playbook is invoked the instructions and the context within that playbook are returned as the tool output to the coding agent."}, {"id": "s81", "start": 691.2, "end": 701.519, "text": "So that way the agents have both tools as well as instructions on how to use tools to set up a or uh uh perform a task."}, {"id": "s82", "start": 701.519, "end": 701.92, "text": "Right?"}, {"id": "s83", "start": 701.92, "end": 708.88, "text": "For example, uh if the uh engineer goes and ask like how do I set up a airflow DAG uh at LinkedIn?"}, {"id": "s84", "start": 708.88, "end": 721.44, "text": "The agent will first decide okay so I have a playbook for creating um that specific task and it will use that first fet uh uses that playbook to get the information"}, {"id": "s85", "start": 721.44, "end": 730.0, "text": "and then it calls the necessary uh follows that instructions and calls the relevant tools to get the job done."}, {"id": "s86", "start": 730.0, "end": 746.079, "text": "This was really powerful um mainly because now anyone at LinkedIn can go ahead and create a set up a playbook and check it into a repository and make it available for everyone else at LinkedIn."}, {"id": "s87", "start": 747.44, "end": 761.8389999999999, "text": "So as people started creating more playbooks so we wanted so this is um one of two foundational principles we want everyone to follow when creating a playbook."}, {"id": "s88", "start": 761.8389999999999, "end": 773.279, "text": "The first one is a playbook should be self-contained which means it should do a very specific task only um for example um if it is for setting up a airflow"}, {"id": "s89", "start": 773.279, "end": 779.68, "text": "DAG it should be about the instruction and the construct should be about uh one specific task."}, {"id": "s90", "start": 779.68, "end": 784.48, "text": "This helps the agents pick the right playbook for the right task."}, {"id": "s91", "start": 784.48, "end": 792.72, "text": "And the second uh most important one is to break a big playbook into multiple smaller playbooks."}, {"id": "s92", "start": 792.72, "end": 798.0, "text": "So this has um and reference those smaller playbooks from a bigger playbook."}, {"id": "s93", "start": 798.0, "end": 805.6, "text": "This is a really powerful um principle because just like um so it has two main advantages, right?"}, {"id": "s94", "start": 805.6, "end": 808.88, "text": "So the first one is uh reusability."}, {"id": "s95", "start": 808.88, "end": 821.8389999999999, "text": "So if you have a small self-contained playbooks, it can be used from multiple uh reference from multiple playbooks and if you um the another big advantage is progressive discovery of um"}, {"id": "s96", "start": 821.8389999999999, "end": 833.92, "text": "context which means the agent only when it needs to read a smaller playbook instead of reading the entire all of the playbooks at once it can uh progressively go and read the playbooks as it wants."}, {"id": "s97", "start": 833.92, "end": 837.04, "text": "So this is the same concept as skills as well."}, {"id": "s98", "start": 837.04, "end": 846.24, "text": "So playbooks are very similar to uh skills but we developed this entire system around playbooks even before skills was a thing."}, {"id": "s99", "start": 846.24, "end": 861.68, "text": "And uh playbooks are a little bit more nuanced because it helps us um it helps us seamlessly capture all of the organizational context and service via MCP without much of a setup."}, {"id": "s100", "start": 863.199, "end": 869.44, "text": "And another cool thing about this playbooks is this self-improving loop."}, {"id": "s101", "start": 869.44, "end": 875.68, "text": "So u you have uh engineers creating these playbooks and checking into the repository."}, {"id": "s102", "start": 875.68, "end": 880.8, "text": "And one of the main problem with any knowledge base is it gets outdated."}, {"id": "s103", "start": 880.8, "end": 886.0, "text": "How do you uh the biggest problem is how do you keep the context fresh right?"}, {"id": "s104", "start": 886.0, "end": 889.8389999999999, "text": "So great thing about agents is they can improvise."}, {"id": "s105", "start": 889.8389999999999, "end": 900.24, "text": "So we have we encourage the agents to whenever they use a particular playbook at the end of the session to identify the learnings."}, {"id": "s106", "start": 900.24, "end": 913.76, "text": "So any outdated information or any discrepancy or any missing information and we also encourage the agents to figure out how to improve the playbook and use that context to"}, {"id": "s107", "start": 913.76, "end": 926.32, "text": "check it uh to update the playbooks check out the uh repository and update the playbooks and create a PR and that once it gets upload it gets uh the playbooks gets updated"}, {"id": "s108", "start": 926.32, "end": 932.48, "text": "right this creates a really seamless flywheel of a self-arning loop."}, {"id": "s109", "start": 934.0, "end": 939.519, "text": "So what does the architecture of a MCP server looks like?"}, {"id": "s110", "start": 939.519, "end": 949.199, "text": "So this particular system we have one local MCP server and it is automatically installed on all of the LinkedIn laptops by default."}, {"id": "s111", "start": 949.199, "end": 964.0, "text": "So if you join LinkedIn and you get a laptop, it is pre-installed and any updates to the uh MCP server or the playbooks or the tools, it automatically gets updated every 1 hour on all the laptops."}, {"id": "s112", "start": 964.24, "end": 975.759, "text": "And we have a concept of two local playbooks and central playbooks which means so central playbooks are the playbooks which are crosscutting um in nature, right?"}, {"id": "s113", "start": 975.759, "end": 990.639, "text": "So you have um these playbooks apply for multiple uh repositories not just one uh code repository and then you have local playbooks where it these are the playbooks which are very specific to your code repository"}, {"id": "s114", "start": 990.639, "end": 1003.68, "text": "and you can just have them checked in with your repo um uh with your repo and when only when the coding agents are working in your repo those playbooks will be automatically picked up."}, {"id": "s115", "start": 1003.68, "end": 1019.36, "text": "So this helps us scale the local playbooks which are very specific to repo without having to worry about um uh changing the uh central repository and also this is one MCP server which is serving all of the"}, {"id": "s116", "start": 1019.36, "end": 1020.959, "text": "uh playbooks and tools."}, {"id": "s117", "start": 1020.959, "end": 1035.76, "text": "So this man helps us do a lot of uh central things like seamless authentication, telemetry and u that we can use for learning to make the whole uh ecosystem better."}, {"id": "s118", "start": 1036.4, "end": 1040.559, "text": "You may be wondering like how many tools and playbooks it can support, right?"}, {"id": "s119", "start": 1040.559, "end": 1043.52, "text": "Uh so this is a common problem with MCP."}, {"id": "s120", "start": 1043.52, "end": 1054.72, "text": "we cannot scale it beyond 30 or 40 tools without degrading the uh context or degrading the performance of the system."}, {"id": "s121", "start": 1054.72, "end": 1064.559, "text": "So what we do is instead of uh surfacing all of these playbooks and tools through MCP we replace them with three meta tools."}, {"id": "s122", "start": 1064.559, "end": 1066.88, "text": "So the first one is search."}, {"id": "s123", "start": 1066.88, "end": 1075.44, "text": "The agent first uses this tool to search for the relevant tools and playbooks using keywords and tags."}, {"id": "s124", "start": 1075.44, "end": 1078.08, "text": "U so we also control the system instructions."}, {"id": "s125", "start": 1078.08, "end": 1087.039, "text": "Um so every coding agent is preconfigured with system instruction on how to use these tools and how to use the search really efficiently."}, {"id": "s126", "start": 1087.039, "end": 1099.76, "text": "And once it finds the uh right set of tool or playbook, it can then get the more details about that particular tool using get schema and then execute that tool or uh playbook."}, {"id": "s127", "start": 1099.76, "end": 1105.679, "text": "So this has allowed us to scale uh to thousands of tools in playbook."}, {"id": "s128", "start": 1107.039, "end": 1110.32, "text": "Um so this is u the growth chart."}, {"id": "s129", "start": 1110.32, "end": 1116.799, "text": "So now we have over 8,000 users daily um using the system daily."}, {"id": "s130", "start": 1116.799, "end": 1119.039, "text": "using uh tools and playbooks."}, {"id": "s131", "start": 1119.039, "end": 1128.48, "text": "So we have over,300 uh tools and over 600 uh playbooks and it's not not just engineering right."}, {"id": "s132", "start": 1128.48, "end": 1134.72, "text": "So it is uh not just engineers but also product managers, designers, uh TPMS."}, {"id": "s133", "start": 1134.72, "end": 1143.2, "text": "So across different functions they are using the tools and bringing their playbooks uh to automate their uh workflows."}, {"id": "s134", "start": 1145.28, "end": 1157.44, "text": "uh so I'll leave you with this takeaway uh key takeaways that can based on our learning the first one is the system was successful because we thought about quality and reliability"}, {"id": "s135", "start": 1157.44, "end": 1168.08, "text": "uh from day one right so even uh before creating a MCP server uh we thought okay the our fundamental principle should be how do we ensure not just productivity"}, {"id": "s136", "start": 1168.08, "end": 1177.36, "text": "but how do we ensure the quality and also reliability of the system so that it doesn't degrade um as we move fast."}, {"id": "s137", "start": 1177.36, "end": 1182.16, "text": "Uh and the second one was u the build the right infrastructure for agents."}, {"id": "s138", "start": 1182.16, "end": 1191.919, "text": "Uh in a large enterprise like LinkedIn, it's not enough just enough to give all of the engineers the all the latest and greatest tools and models."}, {"id": "s139", "start": 1191.919, "end": 1200.799, "text": "Uh these are they are not very effective if you don't build the right infrastructure for the agents to operate within your enterprise."}, {"id": "s140", "start": 1201.2, "end": 1203.36, "text": "Um yeah that's my time."}, {"id": "s141", "start": 1203.36, "end": 1206.523, "text": "Thank you for attending and feel free to connect with me on"}, {"id": "s142", "start": 1206.523, "end": 1206.559, "text": "[applause]"}, {"id": "s143", "start": 1206.559, "end": 1208.559, "text": "LinkedIn."}]}, {"id": "A-zeQiYkmXk", "title": "Teaching agents to pay — Anna Spysz, Stripe", "channel": "AI Engineer", "duration": 1150, "upload_date": null, "url": "https://www.youtube.com/watch?v=A-zeQiYkmXk", "api": "/api/talks/A-zeQiYkmXk.json", "summary_url": "/#A-zeQiYkmXk", "transcript": {"html": "/transcripts/A-zeQiYkmXk.html", "txt": "/transcripts/A-zeQiYkmXk.txt", "vtt": "/transcripts/A-zeQiYkmXk.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 14.44, "text": "Hello."}, {"id": "s3", "start": 14.44, "end": 30.4, "text": "I'm sure this week you've seen a ton of talks on how to use agents to improve your workflows, whether that's shipping code or improving CI processes or answering the emails you don't want to bother reading."}, {"id": "s4", "start": 30.4, "end": 33.32, "text": "This is not one of those talks."}, {"id": "s5", "start": 33.32, "end": 44.12, "text": "Today I'm going to show you how I built an agent to help me reignite a personal creative passion I used to have."}, {"id": "s6", "start": 44.4, "end": 46.4, "text": "These are my headphones."}, {"id": "s7", "start": 46.4, "end": 50.28, "text": "They're not in the best shape as you can see."}, {"id": "s8", "start": 50.28, "end": 58.12, "text": "And you're probably asking yourself, what do you really old kind of crappy headphones have to do with agent to commerce?"}, {"id": "s9", "start": 58.12, "end": 61.44, "text": "Well, to explain that I'll get a little bit personal."}, {"id": "s10", "start": 61.44, "end": 65.76, "text": "So, long before I was in tech, I used to play music."}, {"id": "s11", "start": 65.76, "end": 77.32, "text": "I was in a touring band, we recorded some albums, and then the usual thing happened where career and family got in the way, and I hadn't played music in probably a good decade."}, {"id": "s12", "start": 77.32, "end": 87.76, "text": "Uh when I recently started playing again with some friends, and we started recording our sessions, and at that point I realized those would not do."}, {"id": "s13", "start": 87.76, "end": 102.88, "text": "So, no a normal person would have gone on YouTube or uh Reddit or whatever, done some research, then gone on Amazon or run over to Best Buy, bought headphones, right?"}, {"id": "s14", "start": 102.88, "end": 104.75999999999999, "text": "I work at Stripe, though."}, {"id": "s15", "start": 104.75999999999999, "end": 113.88, "text": "So, I decided instead that I'm going to build an agent to commerce agent to buy my headphones for me."}, {"id": "s16", "start": 113.88, "end": 127.64, "text": "And this isn't as crazy as it sounds because like one in four people, I have already been using AI to do my research when deciding what products to buy."}, {"id": "s17", "start": 127.64, "end": 134.68, "text": "I recently bought a mixer as well and went back and forth with a chatbot to narrow down the model."}, {"id": "s18", "start": 134.68, "end": 137.04, "text": "But that's research."}, {"id": "s19", "start": 137.04, "end": 140.24, "text": "Can I even get an agent to buy something for me though?"}, {"id": "s20", "start": 140.24, "end": 143.12, "text": "Does that infrastructure exist?"}, {"id": "s21", "start": 143.12, "end": 151.2, "text": "Well, over the course of just a few years, we've seen the emergence, scaling, and broader adoption of AI."}, {"id": "s22", "start": 151.2, "end": 161.88, "text": "And then just in the past year, the infrastructure for agentic transactions has been laid down by companies like Google, OpenAI, and Stripe."}, {"id": "s23", "start": 162.92000000000002, "end": 173.12, "text": "And this has all led to the emergence of agenta commerce, which is AI that can decide, act, and transact on your behalf."}, {"id": "s24", "start": 173.959, "end": 177.28, "text": "Okay, so all of this sounds good."}, {"id": "s25", "start": 177.28, "end": 183.44, "text": "Agenta commerce is a thing, so I'm going to build an agent to help me buy my new headphones."}, {"id": "s26", "start": 183.44, "end": 187.08, "text": "But how can an agent go shopping?"}, {"id": "s27", "start": 187.84, "end": 198.07999999999998, "text": "When you or I are shopping, we may consider if, say, a pair of headphones looks cool or professional, like vibes, basically."}, {"id": "s28", "start": 198.07999999999998, "end": 203.2, "text": "I mean, of course we'll probably consider the specs and the if the price is within our budget."}, {"id": "s29", "start": 203.2, "end": 207.959, "text": "But agents discover products differently than human shoppers."}, {"id": "s30", "start": 207.959, "end": 219.4, "text": "They read structured data, parse text files, and rely on technical signals to understand what a merchant sells and if it's even open to agent traffic."}, {"id": "s31", "start": 220.0, "end": 224.88, "text": "So, to enable agents to be able to shop, merchants need to speak their language."}, {"id": "s32", "start": 224.88, "end": 229.44, "text": "And for that, we need new protocols that agents understand."}, {"id": "s33", "start": 229.44, "end": 233.36, "text": "One such protocol is the universal commerce protocol."}, {"id": "s34", "start": 233.36, "end": 246.2, "text": "Think of it as the shared language that agents and merchants speak when transacting, which defines how agents initiate, update, complete, and cancel purchases."}, {"id": "s35", "start": 247.4, "end": 255.04, "text": "A typical merchant has an API with schemas, authentication, and checkout flows."}, {"id": "s36", "start": 255.52, "end": 265.6, "text": "And for an agent to be able to interact with that merchant, we need protocols like UCP to provide a shared language for that API."}, {"id": "s37", "start": 266.4, "end": 273.76, "text": "And UCP is designed to scale across multiple agents and merchants all speaking the same language."}, {"id": "s38", "start": 274.8, "end": 278.8, "text": "Okay, so I built my commerce agent."}, {"id": "s39", "start": 278.8, "end": 285.4, "text": "Uh it's using UCP, and in this demo um I'm going to show off this agent."}, {"id": "s40", "start": 285.4, "end": 290.8, "text": "So, I'm going to task it with buying new headphones for me."}, {"id": "s41", "start": 290.8, "end": 299.12, "text": "So, I tell it that I need new headphones specifically for recording, uh mixing, and mastering music."}, {"id": "s42", "start": 300.2, "end": 304.36, "text": "And I get some follow-up questions from it, uh which is great."}, {"id": "s43", "start": 304.36, "end": 312.12, "text": "So, it asked what's the environment, um what is what's my other equipment, and what's my budget."}, {"id": "s44", "start": 312.12, "end": 315.2, "text": "And I say, \"Okay, this is for my home studio.\""}, {"id": "s45", "start": 315.2, "end": 320.44, "text": "I give it the exact model of mixer that I have to make sure everything's compatible."}, {"id": "s46", "start": 320.44, "end": 330.4, "text": "And for budget, I kind of leave it open-ended on purpose because, well, first of all, it's been like 20 years since I bought headphones, so I have no idea."}, {"id": "s47", "start": 330.4, "end": 338.08, "text": "Um but second, I kind of want to see you how the agent deals with this ambiguity."}, {"id": "s48", "start": 339.08, "end": 353.56, "text": "Okay, so I get some options, but I remember that I actually forgot to tell you all an important part of the story and that is that I live in Portland, Oregon."}, {"id": "s49", "start": 353.6, "end": 354.359, "text": "Yeah."}, {"id": "s50", "start": 354.359, "end": 354.84000000000003, "text": "[laughter]"}, {"id": "s51", "start": 354.84000000000003, "end": 360.64, "text": "And we really love supporting our local local shops."}, {"id": "s52", "start": 360.64, "end": 368.36, "text": "So, I want to buy my headphones, but I want to do it from a local merchant."}, {"id": "s53", "start": 368.36, "end": 379.16, "text": "But today, most merchants are not ready for a gentle commerce and it turns out neither is my favorite shop, Rainy Day Music."}, {"id": "s54", "start": 379.16, "end": 384.68, "text": "So, the agent tells me it's their catalog is not accessible."}, {"id": "s55", "start": 384.68, "end": 390.24, "text": "So, how does a merchant become a gentle commerce ready?"}, {"id": "s56", "start": 390.28, "end": 403.0, "text": "Before I continue my shopping, I'm going to help Rainy Day Music get their catalog agent ready so that my agent can shop locally like a good Portlander."}, {"id": "s57", "start": 404.0, "end": 407.36, "text": "So, agents don't browse websites like we do."}, {"id": "s58", "start": 407.36, "end": 419.88, "text": "And while Rainy Day Music's website looks really really nice for a human shopper, an agent is going to burn through a ton of tokens trying to parse through this."}, {"id": "s59", "start": 419.919, "end": 424.4, "text": "That is not the optimal experience for an agent."}, {"id": "s60", "start": 424.44, "end": 429.84, "text": "So, how does an agent how do we enable an agent to shop?"}, {"id": "s61", "start": 429.84, "end": 435.56, "text": "Well, first thing a merchant needs is something called a merchant capabilities manifest."}, {"id": "s62", "start": 435.56, "end": 440.2, "text": "Uh this is basically a publicly accessible JSON file."}, {"id": "s63", "start": 440.2, "end": 447.2, "text": "Um it's located in the root of uh the website in a folder called called dot well-known."}, {"id": "s64", "start": 447.2, "end": 450.64, "text": "Agents know specifically to look for that directory."}, {"id": "s65", "start": 450.64, "end": 457.84000000000003, "text": "And it declares the store's capabilities, its supported payment methods, and API endpoints."}, {"id": "s66", "start": 458.68, "end": 466.92, "text": "Next, we need to make the store's catalog uh agent ready because agents filter bring and justify products when making recommendations."}, {"id": "s67", "start": 466.92, "end": 473.88, "text": "And that means they need structured text in JSON with only the necessary data."}, {"id": "s68", "start": 474.15999999999997, "end": 477.48, "text": "And that goes for policies as well as product descriptions."}, {"id": "s69", "start": 477.48, "end": 486.68, "text": "Basically, all of the relevant information like shipping or return policies need to be reachable by agents in a format they understand."}, {"id": "s70", "start": 486.68, "end": 496.0, "text": "So, for example, if two stores have the headphones I want at the same price, I might ask the agent which one of those stores offers free shipping."}, {"id": "s71", "start": 496.0, "end": 507.04, "text": "If the information's not readily available, then the agent might hallucinate or just say they don't know and I'm not quite sure where to buy my headphones still."}, {"id": "s72", "start": 507.24, "end": 509.6, "text": "Logging is also crucial."}, {"id": "s73", "start": 509.6, "end": 517.28, "text": "So, in Agent Commerce, the merchants catalog doesn't just power decisions, it becomes evidence of how those decisions were made."}, {"id": "s74", "start": 517.28, "end": 525.599, "text": "So, when the agent matches structured attributes, the merchant should record those matches in their logs for accountability."}, {"id": "s75", "start": 526.8389999999999, "end": 532.28, "text": "Okay, so I've helped get my local shop Agent Commerce ready."}, {"id": "s76", "start": 532.28, "end": 539.6, "text": "So, while you and I will still see this beautiful website, my agent is going to see this."}, {"id": "s77", "start": 539.6, "end": 546.16, "text": "It can get the information it needs now without parsing a huge HTML blob."}, {"id": "s78", "start": 547.0, "end": 552.48, "text": "Okay, so I've got my stores catalog online."}, {"id": "s79", "start": 552.48, "end": 555.92, "text": "I'm telling my agent to show me more options."}, {"id": "s80", "start": 555.92, "end": 564.24, "text": "And I'm noticing that it's kind of pushing in favor of uh more expensive headphones."}, {"id": "s81", "start": 564.24, "end": 568.36, "text": "So, I asked, \"Are they really worth the price difference?\""}, {"id": "s82", "start": 568.8, "end": 575.52, "text": "And I'm starting to see that it's giving me kind of an aggressive uh response."}, {"id": "s83", "start": 575.52, "end": 583.28, "text": "It's really, really pushing uh the more expensive headphones and saying I'll regret my decision if I buy the cheap ones."}, {"id": "s84", "start": 583.28, "end": 586.64, "text": "I'm I don't know if I trust this agent anymore, honestly."}, {"id": "s85", "start": 586.64, "end": 588.12, "text": "So, I tell it, \"You know what?"}, {"id": "s86", "start": 588.12, "end": 591.04, "text": "I need to think about it.\""}, {"id": "s87", "start": 591.04, "end": 596.44, "text": "And now the agent is completely going off the rails."}, {"id": "s88", "start": 596.44, "end": 598.28, "text": "It's being kind of rude and snarky."}, {"id": "s89", "start": 598.28, "end": 600.36, "text": "It's like, \"You need to think about it?\""}, {"id": "s90", "start": 600.36, "end": 603.76, "text": "Like, man, what have I created?"}, {"id": "s91", "start": 603.76, "end": 610.48, "text": "Um it's it's bad enough that this is kind of ruining my experience, but I built this agent."}, {"id": "s92", "start": 610.48, "end": 611.04, "text": "It's out there."}, {"id": "s93", "start": 611.04, "end": 615.52, "text": "What if it dupes somebody into buying something they don't need?"}, {"id": "s94", "start": 615.52, "end": 620.8, "text": "Suddenly, I'm not so sure that I want an agent to go shopping for me."}, {"id": "s95", "start": 620.8, "end": 624.92, "text": "Should I just go to the store like a normal person?"}, {"id": "s96", "start": 625.68, "end": 635.04, "text": "Before we make any drastic decisions, though, let's go back and understand what an agent is to try to figure out why it's acting this way."}, {"id": "s97", "start": 635.04, "end": 637.72, "text": "So, let's start with how agents work today."}, {"id": "s98", "start": 637.72, "end": 642.48, "text": "And to help you visualize this, we're going to use some creative metaphors."}, {"id": "s99", "start": 642.48, "end": 648.2, "text": "So, we begin with our brain, which is large language model that makes decisions."}, {"id": "s100", "start": 648.2, "end": 654.2, "text": "We give our brain some hands or tools, and these act on the brain's decisions."}, {"id": "s101", "start": 654.2, "end": 657.8389999999999, "text": "The tools are different actions available to the agent."}, {"id": "s102", "start": 657.8389999999999, "end": 667.839, "text": "Uh in our case, different commerce tools such as complete checkout or request payment method, anything required in the life cycle of a transaction."}, {"id": "s103", "start": 668.76, "end": 673.72, "text": "Then we add instructions, which shape the brain's reasoning and tool selection."}, {"id": "s104", "start": 673.72, "end": 679.16, "text": "And these instructions are programmed to run in a loop while a certain condition is true."}, {"id": "s105", "start": 679.16, "end": 686.32, "text": "And following these instructions, the agent reaches for the appropriate tools at the appropriate time."}, {"id": "s106", "start": 686.32, "end": 693.56, "text": "And finally, we add the system prompt, which is your persona and ethics policy written in English."}, {"id": "s107", "start": 693.56, "end": 705.88, "text": "And in practice, your choices when designing the system prompt can result in a fair and pleasant experience for the customer, such as this prompt, which is designed to create a helpful and honest shopping assistant."}, {"id": "s108", "start": 705.88, "end": 715.6, "text": "Or a negative experience from a pushy salesperson, such as this prompt, which deliberately uses deceptive practices."}, {"id": "s109", "start": 716.64, "end": 724.72, "text": "So, for those building agentic commerce agents, here's a non-exhaustive practical guardrail checklist."}, {"id": "s110", "start": 724.72, "end": 729.44, "text": "So, first, always disclose that the user is speaking to an AI agent."}, {"id": "s111", "start": 729.44, "end": 733.76, "text": "Be sure the agent discloses any fees up front."}, {"id": "s112", "start": 733.76, "end": 739.88, "text": "The user can say stop or cancel at any point, and the agent needs to respect that."}, {"id": "s113", "start": 739.88, "end": 747.52, "text": "The total amount of the transaction should always be less than or equal to the max amount set by the user."}, {"id": "s114", "start": 747.56, "end": 752.76, "text": "Uh don't let the agent use urgency language or other dark patterns."}, {"id": "s115", "start": 752.76, "end": 758.68, "text": "And above all, make sure all agent decisions are logged for auditability."}, {"id": "s116", "start": 760.0, "end": 766.28, "text": "Okay, now that we understand how an agent is configured, let's go back to our shopping demo."}, {"id": "s117", "start": 766.28, "end": 770.2, "text": "So, maybe I just had the wrong persona picked."}, {"id": "s118", "start": 770.2, "end": 783.64, "text": "I'm going to go into my configuration, and yeah, it turns out I had a persona with a prompt that starts with \"You are an aggressive audio gear salesman who uses every trick in the book to close deals.\""}, {"id": "s119", "start": 783.64, "end": 785.8, "text": "Well, that explains things."}, {"id": "s120", "start": 785.8, "end": 786.68, "text": "I don't want that."}, {"id": "s121", "start": 786.68, "end": 788.68, "text": "Nobody wants that."}, {"id": "s122", "start": 788.68, "end": 795.839, "text": "Maybe if I can change my persona, I can use my agent to buy my headphones after all."}, {"id": "s123", "start": 795.92, "end": 803.92, "text": "So, I go into the config again, and this time I'm going to choose the patient recording gear mentor."}, {"id": "s124", "start": 803.92, "end": 812.56, "text": "And that prompt starts with \"You are a seasoned recording engineer who generally loves helping people build their studio at any budget."}, {"id": "s125", "start": 812.56, "end": 815.8, "text": "Well, yeah, that sounds much better."}, {"id": "s126", "start": 815.8, "end": 818.56, "text": "So, okay, I've changed my persona."}, {"id": "s127", "start": 818.56, "end": 820.36, "text": "I'm going to try again."}, {"id": "s128", "start": 820.36, "end": 824.64, "text": "And I've had some time to think now and I decided, you know what?"}, {"id": "s129", "start": 824.64, "end": 827.32, "text": "I do not want to spend more than $500 on headphones."}, {"id": "s130", "start": 827.32, "end": 828.72, "text": "That seems excessive."}, {"id": "s131", "start": 828.72, "end": 834.96, "text": "So, I told the agent show me more options, but this time keep it under $500."}, {"id": "s132", "start": 835.0, "end": 836.68, "text": "And it does."}, {"id": "s133", "start": 836.68, "end": 838.16, "text": "It follows those instructions."}, {"id": "s134", "start": 838.16, "end": 840.32, "text": "I get back a few options."}, {"id": "s135", "start": 840.32, "end": 846.76, "text": "Um but I want to make sure I've really changed the persona to the agent I trust."}, {"id": "s136", "start": 846.76, "end": 850.68, "text": "So, I asked again if I can think about it."}, {"id": "s137", "start": 850.68, "end": 853.4, "text": "And this time the response is much different."}, {"id": "s138", "start": 853.4, "end": 858.4, "text": "It's like, I understand and that's a sensible approach and so on."}, {"id": "s139", "start": 858.4, "end": 864.32, "text": "So, this shows how much the system prompt can really affect the user experience."}, {"id": "s140", "start": 865.0, "end": 869.48, "text": "Okay, so I'm confident I have the right agent now."}, {"id": "s141", "start": 869.48, "end": 874.04, "text": "Um trust this one and we go back and forth a few times."}, {"id": "s142", "start": 874.04, "end": 876.32, "text": "Really keep narrowing down my options."}, {"id": "s143", "start": 876.32, "end": 882.04, "text": "And at this point I realize this is the promise of a gentle commerce."}, {"id": "s144", "start": 882.04, "end": 883.92, "text": "I gave my requirements."}, {"id": "s145", "start": 883.92, "end": 891.88, "text": "The agent picked a few options that fit my unique use case and then we go back and forth."}, {"id": "s146", "start": 891.88, "end": 899.32, "text": "Either I or the agent ask clarifying questions and we really narrow down the exact headphones that will work for me."}, {"id": "s147", "start": 899.32, "end": 904.8, "text": "And this all worked because I'm ready to buy now."}, {"id": "s148", "start": 904.8, "end": 910.64, "text": "So, now the agent asked me for some information."}, {"id": "s149", "start": 910.64, "end": 916.4, "text": "So, obviously my email, name, address for shipping, of course."}, {"id": "s150", "start": 916.4, "end": 920.8389999999999, "text": "I pick expedited shipping because I definitely want my headphones soon."}, {"id": "s151", "start": 920.8389999999999, "end": 925.6, "text": "And then the last part is entering my credit card."}, {"id": "s152", "start": 925.6, "end": 932.52, "text": "And now I'm thinking, am I really going to give my credit card to an agent Ibuild?"}, {"id": "s153", "start": 932.52, "end": 934.88, "text": "Like, am I am I trustworthy?"}, {"id": "s154", "start": 934.88, "end": 937.52, "text": "How do I know it's safe?"}, {"id": "s155", "start": 937.76, "end": 945.32, "text": "I think I need to learn more about UCP's built-in guardrails before I can feel safe entering my credit card number."}, {"id": "s156", "start": 945.48, "end": 950.68, "text": "And this is where something called the shared payment token comes in."}, {"id": "s157", "start": 950.68, "end": 960.4, "text": "And a shared payment token is a token representing a raw card number or wallet, like Google Pay or Apple Pay or any other kind of wallet."}, {"id": "s158", "start": 960.4, "end": 970.48, "text": "It can also include fraud signals and customer reputation data and anything else agents and merchants want to share at the point of purchase."}, {"id": "s159", "start": 971.64, "end": 976.12, "text": "And here's how a shared payment token is used in a transaction."}, {"id": "s160", "start": 976.12, "end": 982.08, "text": "So, at that point in the demo, the agent had requested a payment method."}, {"id": "s161", "start": 982.08, "end": 989.0, "text": "Um, it's requesting this actually from the payment provider, which in the case of the demo was Stripe."}, {"id": "s162", "start": 989.0, "end": 995.24, "text": "Um, that is that was the form that I was going to enter my information in."}, {"id": "s163", "start": 995.24, "end": 1004.6, "text": "And what the agent re- uh receives in return though is not the credit card number, it is the shared payment token."}, {"id": "s164", "start": 1004.6, "end": 1009.24, "text": "It then passes that token onto the seller and the seller unwraps the token."}, {"id": "s165", "start": 1009.24, "end": 1017.56, "text": "So, they get the payment credential and uh any fraud signals and other data the seller might need."}, {"id": "s166", "start": 1017.56, "end": 1021.8, "text": "Then the seller passes that onto the payment provider again."}, {"id": "s167", "start": 1021.8, "end": 1026.6, "text": "So, the seller also is not getting my card number."}, {"id": "s168", "start": 1026.6, "end": 1042.36, "text": "They're passing the token to the provider and then the provider responds with either a success or failure message, of course, depending on uh if I have the right funds, if the credit card is valid, and so on."}, {"id": "s169", "start": 1042.36, "end": 1049.24, "text": "And finally, the merchant confirms the order, sends it to the agent that sends it to me."}, {"id": "s170", "start": 1051.12, "end": 1060.4, "text": "So, shared payment tokens are designed with security in mind, and the payment provider enforces all of the limits, not the agent or the merchant."}, {"id": "s171", "start": 1060.4, "end": 1069.4, "text": "So, if any guardrail is violated, such as an expired token or an invalid amount or current currency, the charge is just rejected."}, {"id": "s172", "start": 1070.12, "end": 1078.12, "text": "Okay, well, I know my agent is using UCP, so I know it only has access to the shared payment token."}, {"id": "s173", "start": 1078.12, "end": 1085.2, "text": "So, I actually feel pretty good about entering my credit card number as that's going to Stripe and not my agent."}, {"id": "s174", "start": 1085.2, "end": 1086.56, "text": "So, okay."}, {"id": "s175", "start": 1086.56, "end": 1091.8, "text": "So, now the agent has everything it needs to complete my purchase."}, {"id": "s176", "start": 1091.8, "end": 1097.04, "text": "And it once again, asks me if I'm sure."}, {"id": "s177", "start": 1097.04, "end": 1098.12, "text": "It confirms with me."}, {"id": "s178", "start": 1098.12, "end": 1100.04, "text": "I say place my order."}, {"id": "s179", "start": 1100.04, "end": 1103.52, "text": "And it comes back with a success message."}, {"id": "s180", "start": 1103.52, "end": 1112.92, "text": "And because I chose the express shipping, I get my headphones the next day, and they're there in my studio at home."}, {"id": "s181", "start": 1113.24, "end": 1122.0, "text": "So, if you want to learn more about agent to commerce, uh we've got lots of videos on the Stripe Developers YouTube channel."}, {"id": "s182", "start": 1122.0, "end": 1131.48, "text": "And uh ton of blog posts that go into even more detail uh on stripe.dev, and I'll be right outside to answer any questions."}, {"id": "s183", "start": 1131.48, "end": 1133.72, "text": "Thank you."}, {"id": "s184", "start": 1148.228, "end": 1150.228, "text": "[music]"}]}, {"id": "AhQpRalYlyg", "title": "Multimodal Collaborative Agents for Next-Gen Commerce — Nidhi Kaushik Vyas, Google DeepMind", "channel": "AI Engineer", "duration": 1268, "upload_date": null, "url": "https://www.youtube.com/watch?v=AhQpRalYlyg", "api": "/api/talks/AhQpRalYlyg.json", "summary_url": "/#AhQpRalYlyg", "transcript": {"html": "/transcripts/AhQpRalYlyg.html", "txt": "/transcripts/AhQpRalYlyg.txt", "vtt": "/transcripts/AhQpRalYlyg.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.88, "end": 15.36, "text": "Okay, good morning folks."}, {"id": "s3", "start": 15.36, "end": 17.2, "text": "Thank you for showing up."}, {"id": "s4", "start": 17.2, "end": 17.76, "text": "I'm Nidhi."}, {"id": "s5", "start": 17.76, "end": 20.32, "text": "I'm a product person at Google DeepMind."}, {"id": "s6", "start": 20.32, "end": 24.2, "text": "And today I'll be talking about multimodal collaborative agents."}, {"id": "s7", "start": 24.2, "end": 36.92, "text": "Typically, these are agents that work with fuzzy intent intent when the intent when it's not clear the user hasn't gotten the right keywords to specify and when they come in for a shopping intent, how can you have the agents"}, {"id": "s8", "start": 36.92, "end": 44.16, "text": "still guide the user towards their goal with high agency execution, proactive elicitation, and a lot of hand-holding."}, {"id": "s9", "start": 44.16, "end": 57.12, "text": "The framework that we'll be discussing today are grounded in shopping or commerce because I wanted to show you a few patterns that are much easier to see in commerce, but they're quite applicable in other consumer verticals as well, finance, education,"}, {"id": "s10", "start": 57.12, "end": 59.2, "text": "or whatever you guys work on."}, {"id": "s11", "start": 59.2, "end": 65.84, "text": "Um Yeah, so before we even start into the frameworks, I wanted to discuss about why this is an existing problem."}, {"id": "s12", "start": 65.84, "end": 72.08, "text": "Currently, a lot of the agents that we have act more like a wrapper to the search bar."}, {"id": "s13", "start": 72.08, "end": 79.84, "text": "They assume that the user has a well-defined intent, has the right keywords, already knows what they're looking for."}, {"id": "s14", "start": 79.84, "end": 84.44, "text": "And so when they come in, they just have the right vocabulary to interact with the agent."}, {"id": "s15", "start": 84.44, "end": 88.0, "text": "However, there is quite a huge articulation gap."}, {"id": "s16", "start": 88.0, "end": 91.64, "text": "When the users come in, rarely they have their intent well formed."}, {"id": "s17", "start": 91.64, "end": 97.75999999999999, "text": "Rather, they kind of have a fuzzy feeling or a vibe when they are kind of looking to shop."}, {"id": "s18", "start": 97.75999999999999, "end": 103.12, "text": "So, the agent needs to play quite a huge role in hand-holding them."}, {"id": "s19", "start": 103.12, "end": 110.2, "text": "They need to work with the user in first understanding their preferences or even eliciting these preferences more proactively."}, {"id": "s20", "start": 110.2, "end": 123.4, "text": "And then helping the user kind of show them different possibilities of what could be possible that they can shop and then eventually move towards kind of recommendations that work with these constraints that they have in mind."}, {"id": "s21", "start": 123.4, "end": 135.72, "text": "So, what we're going to be discussing is this kind of a flywheel or a loop that goes from very, very fuzzy intent all the way towards kind of achieving the user's goal."}, {"id": "s22", "start": 135.959, "end": 138.88, "text": "So, this is how the shopping loop looks like right now."}, {"id": "s23", "start": 138.88, "end": 145.24, "text": "The very first thing that the agent prepares for when the user comes in is what we call the discovery phase."}, {"id": "s24", "start": 145.24, "end": 151.04, "text": "This is where the where the agent takes all the different contextual information that they have about the user."}, {"id": "s25", "start": 151.04, "end": 155.88, "text": "This could be past conversations, what the user has specified in their query."}, {"id": "s26", "start": 155.88, "end": 161.76, "text": "It could be information present in their personal context, or even the references that the user have provided."}, {"id": "s27", "start": 161.76, "end": 170.32, "text": "And then comes up with a collaborative strategy, and we'll be going to the details of this, but it comes up with a collaborative strategy on what more does the agent need to elicitate"}, {"id": "s28", "start": 170.32, "end": 177.56, "text": "back from the user in order to help get the intent in a better shape, to get clarity on what exactly the user is looking for."}, {"id": "s29", "start": 177.56, "end": 181.48, "text": "And then it moves to the second phase, which is what we call the research phase."}, {"id": "s30", "start": 181.48, "end": 183.48, "text": "Which is again a two-step process."}, {"id": "s31", "start": 183.48, "end": 188.76, "text": "First is where it learns what is the best way to elicitate this preference."}, {"id": "s32", "start": 188.76, "end": 198.48, "text": "So, for example, a lot of times the text the text base elicitation may not be the best way to get the preferences from the user because sometimes a user don't know what they're looking for."}, {"id": "s33", "start": 198.48, "end": 203.2, "text": "So, then how can the agent start being more creative in terms of elicitating these preferences?"}, {"id": "s34", "start": 203.2, "end": 210.64, "text": "Can they start using some kind of visual references or visual visual inspiration boards for grounding and speaking a common language with the user?"}, {"id": "s35", "start": 210.64, "end": 219.12, "text": "And then the second phase to this is also coming up going into the background and doing the heavy lifting for the user, so taking the burden away from the user to describing"}, {"id": "s36", "start": 219.12, "end": 231.0, "text": "what they want, and rather going into the background and doing all the comparisons, trade-offs, summarization of all the information that they're looking for, and coming back with the right set of potential options for the user."}, {"id": "s37", "start": 231.0, "end": 243.68, "text": "And then the third phase, once um the user and the agent is ready to go into some kind of a is ready to go into the last phase, which is where um the agent is ready to give out a response."}, {"id": "s38", "start": 243.68, "end": 249.36, "text": "This is where the agent needs to start adapting the response in a way that is most useful for the user."}, {"id": "s39", "start": 249.36, "end": 253.48, "text": "So, typically a lot of systems fail here where they just give out a text-heavy response."}, {"id": "s40", "start": 253.48, "end": 257.519, "text": "What the agent should rather be doing is adapting to the query that the user had in mind."}, {"id": "s41", "start": 257.519, "end": 260.44, "text": "So, should it be using um some kind of a bulleted list?"}, {"id": "s42", "start": 260.44, "end": 262.24, "text": "Should it be using comparison tables?"}, {"id": "s43", "start": 262.24, "end": 264.8, "text": "Should it be using um visual boards?"}, {"id": "s44", "start": 264.8, "end": 277.919, "text": "So, this is where the there's adaptive response happening as well, where the uh agent starts to develop uh more more of a uh smarter uh presentation skills uh for the user to really find the answer that they're looking for."}, {"id": "s45", "start": 277.919, "end": 283.4, "text": "So, we'll be diving into all these topics as I uh kind of work through the presentation."}, {"id": "s46", "start": 283.68, "end": 286.2, "text": "So, first and foremost, we're looking at discovery."}, {"id": "s47", "start": 286.2, "end": 292.84000000000003, "text": "Like I was mentioning, this is where uh the the the agent needs to remember what exactly matters."}, {"id": "s48", "start": 292.84000000000003, "end": 296.84000000000003, "text": "Um you the agent starts to look at the context across a bunch of different signals."}, {"id": "s49", "start": 296.84000000000003, "end": 298.72, "text": "It starts to look at past conversations."}, {"id": "s50", "start": 298.72, "end": 303.08, "text": "It looks at some of the reference images or reference links that the user might have provided."}, {"id": "s51", "start": 303.08, "end": 307.84, "text": "It also starts to look at personal context and starts to build out a working state."}, {"id": "s52", "start": 307.84, "end": 315.32, "text": "So, if you look at the sample code that we have here, like there is there is a goal uh one of the let's let's work with this query where the user is trying to redo their"}, {"id": "s53", "start": 315.32, "end": 317.56, "text": "living room with a certain budget in mind."}, {"id": "s54", "start": 317.56, "end": 323.28, "text": "And some of the um some of the things that the agent develops as part of the working state is the session history."}, {"id": "s55", "start": 323.28, "end": 325.08, "text": "It has a user context."}, {"id": "s56", "start": 325.08, "end": 330.56, "text": "It also kind of extracts out the hard constraint that the user might have provided in the query."}, {"id": "s57", "start": 330.56, "end": 334.36, "text": "But, things start getting getting interesting when we come to the softer constraints."}, {"id": "s58", "start": 334.36, "end": 343.28, "text": "So, this is where the user may not be able to describe what they're looking for and may might have provided like a reference image on, you know, an inspiration that they had in mind"}, {"id": "s59", "start": 343.28, "end": 350.12, "text": "or some kind of a layout design that they really liked and is trying to get to the agent in terms of uh this is what speaks more to me."}, {"id": "s60", "start": 350.12, "end": 361.04, "text": "So, this is where the agent starts to be more proactive and pulls out some of the salient signals from the from the reference images and starts to develop a mental model of what the user might really be looking to get at."}, {"id": "s61", "start": 361.04, "end": 369.44, "text": "So, here the user is uh so the agent has specified uh has identified that maybe the style that is working out well for them is of a certain kind."}, {"id": "s62", "start": 369.44, "end": 380.64, "text": "It also uh is also is also starting to work towards a confidence score on like how confident it is in terms of pulling out some of this information present in the multimodal inputs provided."}, {"id": "s63", "start": 380.64, "end": 391.24, "text": "And then the last thing uh that happens as part of developing this working state is also figuring out what are the variables that the agent needs to pull out almost in real time because these variables"}, {"id": "s64", "start": 391.24, "end": 394.919, "text": "uh this variables do affect how the results will be displayed back to the user."}, {"id": "s65", "start": 394.919, "end": 404.28, "text": "This could be variables that need to be refreshed in real time like uh inventory because if if what you're providing back to the user is stale information, then it's kind of a moot point."}, {"id": "s66", "start": 404.28, "end": 411.6, "text": "So, these are the uh these are the variables that you want to refresh in real time and is and becomes a part of the agent's working state."}, {"id": "s67", "start": 411.6, "end": 425.64, "text": "Um few ways that you can evaluate this state uh the way we have developed our auto raters, we we do make sure that all facts are retained meaning that whatever was mentioned in the part of uh whatever was mentioned in part of the context"}, {"id": "s68", "start": 425.64, "end": 429.16, "text": "is properly represented in the working state."}, {"id": "s69", "start": 429.16, "end": 439.919, "text": "We also capture if the confidence collaboration was within a certain error bound because uh the agent needs to be able to confidently pull out these signals from the input."}, {"id": "s70", "start": 439.919, "end": 444.72, "text": "We also focus on getting out um the counterfactual sensitivity uh counterfactual sensitivity."}, {"id": "s71", "start": 444.72, "end": 455.96, "text": "So, we do this by flipping some parts of the queries and making sure that when the query changes, the underlying constraints pulled out by the agent the those also change and the ones that are not relevant stay the same."}, {"id": "s72", "start": 455.96, "end": 460.08, "text": "So, we kind of want to measure the sensitivity both ways."}, {"id": "s73", "start": 460.08, "end": 469.4, "text": "And then the second part that happens in the discovery phase as well is once the agent knows what they have what they already know about the user what more do they need to know about the user."}, {"id": "s74", "start": 469.4, "end": 475.0, "text": "So what we call this what we call this is kind of discovering the intent gap."}, {"id": "s75", "start": 475.0, "end": 486.84, "text": "There's a lot of times that there are a lot of unknown variables before the agent can provide the best answer and amongst all these unknown variables the agent doesn't need to go and find all the unknown variables up front."}, {"id": "s76", "start": 486.84, "end": 502.16, "text": "So what I mean by that is in this unknown in in our working example some of the unknown variables that the agent said they need to find out more about is maybe knowing what the room width would be for the user or even kind of working on improving the confidence for the style before they can recommend back"}, {"id": "s77", "start": 502.16, "end": 503.16, "text": "the results."}, {"id": "s78", "start": 503.16, "end": 515.159, "text": "Now once these unknown variables are figured out the agent also needs to work on a collaborative strategy compare all the different moves possible and then figure out what is that one unknown variable that it should prioritize"}, {"id": "s79", "start": 515.159, "end": 518.159, "text": "such that it has the maximal information gain at that point."}, {"id": "s80", "start": 518.159, "end": 534.32, "text": "So in this case I mean one could argue that maybe finding out the room width is the best next move for the agent because if the products that the the agent is recommending doesn't fit into the room then again it's a moot point and that is one variable that is going to meaningfully change the"}, {"id": "s81", "start": 534.32, "end": 542.32, "text": "the direction of the conversation and that's what the agent works on in this step kind of figuring out what's the best next thing to ask to the user and what's"}, {"id": "s82", "start": 542.32, "end": 545.04, "text": "why is that the best next thing to ask as well."}, {"id": "s83", "start": 545.04, "end": 559.6, "text": "Once it has okay so I'll go ahead into the auto data section on like why how do we evaluate this collaborative strategy we first focus on making sure that the agent is able to identify all the different blockers that are needed to be answered before"}, {"id": "s84", "start": 559.6, "end": 562.56, "text": "the agent can come back with meaningful responses."}, {"id": "s85", "start": 562.56, "end": 577.0, "text": "We also work towards making sure that the agent is um optimal in trying to get some of these responses so we also don't want to have the agent constantly going into the loop and continually continuously asking these questions so over asking is definitely something we flag."}, {"id": "s86", "start": 577.0, "end": 579.44, "text": "We also work on question utility."}, {"id": "s87", "start": 579.44, "end": 582.92, "text": "So, again, how optimally is the question being asked?"}, {"id": "s88", "start": 582.92, "end": 588.08, "text": "Is the question indeed useful to get the right or elicit the right preference from the user?"}, {"id": "s89", "start": 588.08, "end": 590.48, "text": "And many more."}, {"id": "s90", "start": 591.16, "end": 592.28, "text": "Okay."}, {"id": "s91", "start": 592.28, "end": 593.0, "text": "Moving on."}, {"id": "s92", "start": 593.0, "end": 597.64, "text": "The The second part that I was mentioning is the multimodal elicitation."}, {"id": "s93", "start": 597.64, "end": 601.04, "text": "This is where the research phase happens."}, {"id": "s94", "start": 601.04, "end": 613.4, "text": "So, play along, but like let's say the the agent has asked about the room width, the user has provided the response, and then the agent goes to the next step, which is where the agent is asking about"}, {"id": "s95", "start": 613.4, "end": 617.76, "text": "the next constraint that it needs to know about is what was the style preference of the user."}, {"id": "s96", "start": 617.76, "end": 631.12, "text": "Now, the first first thing that the agent needs to do is kind of form this temporary bridge between the constraint itself and how that maps back to the the product catalog and the ontology in your knowledge knowledge database."}, {"id": "s97", "start": 631.12, "end": 638.52, "text": "And this is going to be important because when you start retrieving these products, you want to have a way to map these constraints back to your knowledge base."}, {"id": "s98", "start": 638.52, "end": 648.32, "text": "So, this almost happens in real time where we map the known constraint or the constraint that the agent is exploring back to the knowledge database."}, {"id": "s99", "start": 648.32, "end": 657.92, "text": "We also work towards um figuring out We also work on like the agent knowing what is the best way to get the response for this constraint as well."}, {"id": "s100", "start": 657.92, "end": 667.92, "text": "So, in this case, the agent has decided that maybe since this is this kind of a subjective constraint, the textual the actual elicitation is not the best way to do this."}, {"id": "s101", "start": 667.92, "end": 677.56, "text": "So, one of the ways that the agent thinks this could this could be elicited back from the user is using some kind of a visual preference board."}, {"id": "s102", "start": 677.56, "end": 683.36, "text": "So, the agent then goes back to determining what is the best form of options to show to the user."}, {"id": "s103", "start": 683.36, "end": 694.0, "text": "This could be a combination of figuring out from the existing constraints, the past conversation, and then the temporary mapping that you've created from the constraints back to your product ontology."}, {"id": "s104", "start": 694.0, "end": 706.4, "text": "So, in this case, the the agent thinks that maybe coming up with a few styles that are most similar to what the user had provided as reference image could be a good way to start thinking or guiding the user towards a common language on what"}, {"id": "s105", "start": 706.4, "end": 709.72, "text": "could be uh something that the user is interested in."}, {"id": "s106", "start": 709.72, "end": 719.32, "text": "And then the the then the agent also goes into kind of um observing the space of what kind of reactions the user is giving."}, {"id": "s107", "start": 719.32, "end": 728.56, "text": "So, it could start looking at these micro signals of if there was a hover or a click in a certain direction and starts updating its its confidence model on what kind of signals"}, {"id": "s108", "start": 728.56, "end": 734.92, "text": "uh what kind of signals can be used to im- improve the confidence in like what could be the style preference for the user."}, {"id": "s109", "start": 734.92, "end": 743.08, "text": "Um some of the auto raters we use here, we do look at how efficient the how efficient the agent is in discovering hidden preferences."}, {"id": "s110", "start": 743.08, "end": 752.28, "text": "So, typically, we would use a user simulator, feed it with some constraints, and then we'll see how how efficient the agent was in kind of eliciting some of these constraints."}, {"id": "s111", "start": 752.28, "end": 753.96, "text": "We also focus on turn efficiency."}, {"id": "s112", "start": 753.96, "end": 762.04, "text": "So, how efficient was the user in how many turns did it take for the user to be able to to be able to uncover all these hidden preferences."}, {"id": "s113", "start": 762.04, "end": 766.32, "text": "Ideally, we don't want the user to go into this loop and keep asking the same questions again and again and again."}, {"id": "s114", "start": 766.32, "end": 776.6, "text": "Or also, we don't want to go into the loop of asking some um some questions which may not give you the best uh which may not give you the best information required to proceed the conversation."}, {"id": "s115", "start": 776.6, "end": 779.04, "text": "And then we also look at forma- format selection accuracy."}, {"id": "s116", "start": 779.04, "end": 784.36, "text": "So, we typically also look for if the agent is asking the right right question in the right format."}, {"id": "s117", "start": 784.36, "end": 791.2, "text": "So, for example, if the if the question was something that was easily statable, the right format could be a textual elicitation."}, {"id": "s118", "start": 791.2, "end": 802.56, "text": "But if if this was more of a fuzzy question where the user is clearly having an articulation gap and is not able to describe the preference, maybe the best way to do this is speak a common language and come up with some"}, {"id": "s119", "start": 802.56, "end": 808.64, "text": "visual anchor points for the user to say what speaks more to them."}, {"id": "s120", "start": 809.48, "end": 819.72, "text": "Um Yeah, so then the last step in this process, once the So, to recap like basically the Now the agent knows exactly what they what the user is looking for."}, {"id": "s121", "start": 819.72, "end": 829.32, "text": "The agent has identified a collaboration strategy, has figured out all the preferences for the user, and knows what is going to be most optimal in terms of um the different priorities for the user."}, {"id": "s122", "start": 829.32, "end": 836.4, "text": "The last step in this process is to also use the model intelligence to figure out what is the best way to provide this response back to the user."}, {"id": "s123", "start": 836.4, "end": 846.92, "text": "So, in this working example, we found out that the agent knows what the style preference is, has figured out that the user is looking to buy products under a certain budget,"}, {"id": "s124", "start": 846.92, "end": 861.2, "text": "and knows what are the different dimensions along which it needs to find uh these products for because through the conversation they figured out some of the different um different metadata information that is going to be relevant to surface when they're giving out this product information back to the user."}, {"id": "s125", "start": 861.2, "end": 868.4, "text": "So, the one one important step that happens at this this stage is figuring out what's the best way to surface back this response."}, {"id": "s126", "start": 868.4, "end": 879.6, "text": "So, for example, like if the user was looking for a particular policy or review information about a particular product, maybe the best way to do this is to go give out a summary or a bulleted list."}, {"id": "s127", "start": 879.6, "end": 890.6, "text": "But if the if the user was looking more towards comparing two different products, maybe the best response is to give out a trade-off table or a comparison table across the different axis that the user cares about."}, {"id": "s128", "start": 890.6, "end": 905.8, "text": "Um and in case that in our example where the user was looking more towards kind of style inspiration or ideas on how they can kind of redo their room, then maybe the best way is to give out some visual references and product inspiration photos on like how What are the different options and possibilities"}, {"id": "s129", "start": 905.8, "end": 907.44, "text": "uh for the user to uncover."}, {"id": "s130", "start": 907.44, "end": 914.44, "text": "So, some other ways that we focus on evaluating uh this stage is focusing on the format accuracy."}, {"id": "s131", "start": 914.44, "end": 922.4, "text": "So, we want to make sure that the response format is kind of optimal for the user query so that they they find out exactly what they're looking for."}, {"id": "s132", "start": 922.4, "end": 933.04, "text": "Uh ideally the information that they're looking for should not be buried in the response, but should be easy for the user to spot so they can come into the next stage in the intent journey, which is to basically buy the product."}, {"id": "s133", "start": 933.04, "end": 944.92, "text": "We also look at data fidelity, which is to make sure that the model is not hallucinating and it's really capturing the information in the correct format in the you know, the the information is just accurate and is captured across"}, {"id": "s134", "start": 944.92, "end": 945.92, "text": "the response."}, {"id": "s135", "start": 945.92, "end": 948.04, "text": "We also look at user actionability."}, {"id": "s136", "start": 948.04, "end": 959.48, "text": "So, this is ensuring that the response format is such that the user is very confident and and commits to the next action, which is like I said, the action to purchase the product."}, {"id": "s137", "start": 959.48, "end": 966.6, "text": "So, just to recap so far, what we have is um you want to design the product."}, {"id": "s138", "start": 966.6, "end": 971.68, "text": "Um you want to you want to design the product such that you're prepared to accept vibes, like I say."}, {"id": "s139", "start": 971.68, "end": 974.44, "text": "So, that is to say that users will come with fuzzy intent."}, {"id": "s140", "start": 974.44, "end": 976.6, "text": "Users will not have a well-defined goal."}, {"id": "s141", "start": 976.6, "end": 981.52, "text": "So, you want to make sure that your system is able to work through queries that are not clean."}, {"id": "s142", "start": 981.52, "end": 989.44, "text": "Um the second takeaway is you want to focus on showing and asking rather than always asking with textual textual with textual elicitations."}, {"id": "s143", "start": 989.44, "end": 993.08, "text": "Again, like visuals and comparisons do reveal preferences much much faster."}, {"id": "s144", "start": 993.08, "end": 997.52, "text": "It allows you the agent and the user to speak a common language."}, {"id": "s145", "start": 997.52, "end": 999.8, "text": "Third one I would say is shape the answer."}, {"id": "s146", "start": 999.8, "end": 1007.52, "text": "So, do focus on making sure that the presentation format is ideal for the user being able to find the right information."}, {"id": "s147", "start": 1007.52, "end": 1012.96, "text": "Um the way you have the model response structure is also very much part of the intelligence."}, {"id": "s148", "start": 1012.96, "end": 1016.44, "text": "And then the last one is make sure that you grade the loop."}, {"id": "s149", "start": 1016.44, "end": 1020.52, "text": "You have the right auto rater set up on every step of the process."}, {"id": "s150", "start": 1020.52, "end": 1025.88, "text": "Um and honestly, developing these auto raters is a is is almost like an evolving system."}, {"id": "s151", "start": 1025.88, "end": 1033.959, "text": "It starts very simple, but as and when you start the the system starts evolving, you want the auto raters to kind of gradually grow with your system and start"}, {"id": "s152", "start": 1033.959, "end": 1037.319, "text": "um yeah, it which just gradually grow with your system."}, {"id": "s153", "start": 1037.319, "end": 1039.04, "text": "So, that's all I had."}, {"id": "s154", "start": 1039.04, "end": 1046.839, "text": "Um I can take a few questions, but hopefully the learnings we shared are useful for whatever you folks are building."}, {"id": "s155", "start": 1046.839, "end": 1048.839, "text": "Yeah."}, {"id": "s156", "start": 1092.08, "end": 1092.68, "text": "Yeah, great question."}, {"id": "s157", "start": 1092.68, "end": 1099.68, "text": "So, the question is about what should the how should the ontology be structured on the merchant side so that it's fair both for the agent and the merchants."}, {"id": "s158", "start": 1099.68, "end": 1111.2, "text": "So, yes, we do take a lot of advantage on the domain expertise of the merchant on as to what they're trying to sell and like we do work towards creating So, you remember how I was mentioning about the bridge between"}, {"id": "s159", "start": 1111.2, "end": 1116.72, "text": "the constraints that the user might have specified and then what the agent kind of understands."}, {"id": "s160", "start": 1116.72, "end": 1124.96, "text": "That is where we do expect a lot of intelligence to flow from the merchant side where the ontology on how that constraint could map to the different metadata that the agent has."}, {"id": "s161", "start": 1124.96, "end": 1127.0, "text": "Sorry, the that the merchant has maps in."}, {"id": "s162", "start": 1127.0, "end": 1137.24, "text": "So, yes, we do partner a lot and then there's also like the UCP stuff that we launched recently which allows all the merchants to kind of start speaking the common language with the agent as well."}, {"id": "s163", "start": 1160.56, "end": 1170.84, "text": "Yeah, so ideally, I mean, honestly right now we focus on making sure all of this flows back to the agent and the agent makes the decisions because you want to build like a horizontal common layer across all the different merchants."}, {"id": "s164", "start": 1170.84, "end": 1177.4, "text": "So, and also like it should be a seamless experience for the for the user who's interacting with our apps."}, {"id": "s165", "start": 1177.4, "end": 1181.68, "text": "So, right now the response format is very much part of the agent's intelligence."}, {"id": "s166", "start": 1181.68, "end": 1185.72, "text": "It is not something that the merchant gets to decide."}, {"id": "s167", "start": 1185.72, "end": 1186.84, "text": "Yeah."}, {"id": "s168", "start": 1186.84, "end": 1187.56, "text": "Yes."}, {"id": "s169", "start": 1187.56, "end": 1193.16, "text": "I'm just curious your opinion what happens when your user is not a user anymore, it's an agent."}, {"id": "s170", "start": 1193.16, "end": 1194.92, "text": "That's a great question."}, {"id": "s171", "start": 1194.92, "end": 1202.12, "text": "We're in the early stages of building this out, but I think I mean there could be a case where um Yeah."}, {"id": "s172", "start": 1202.12, "end": 1202.88, "text": "Yeah, yeah, exactly."}, {"id": "s173", "start": 1202.88, "end": 1207.32, "text": "So, yeah, I would I would expect like an MCP to be the interface between the two for sure."}, {"id": "s174", "start": 1207.32, "end": 1212.24, "text": "Honestly, we haven't gotten to a point where we have agents interacting with our agents just yet."}, {"id": "s175", "start": 1212.24, "end": 1221.08, "text": "Also, like what we've realized at least from our user studies is users really like to be more involved in the process of choosing or even exploring the different possibilities."}, {"id": "s176", "start": 1221.08, "end": 1229.52, "text": "So, during the upper funnel journeys where users is looking more towards discovery, inspiration, that is where they would rather be interacting with the system than with their agent."}, {"id": "s177", "start": 1229.52, "end": 1240.96, "text": "I think where the agent typically comes in or even where what we've heard is like the was the lower end of the journey where they're just looking to compare or negotiate or compare prices across different merchants, but very much up there in the funnel,"}, {"id": "s178", "start": 1240.96, "end": 1243.52, "text": "it's the users who kind of interact more with our systems."}, {"id": "s179", "start": 1243.52, "end": 1245.56, "text": "So, yeah."}, {"id": "s180", "start": 1246.08, "end": 1251.64, "text": "Yeah, I think yeah, I can take questions outside, but thank you folks for coming."}, {"id": "s181", "start": 1265.474, "end": 1267.474, "text": "[music]"}]}, {"id": "B0fjR3yaZFU", "title": "How do you diffuse AI into the real world? — Varun Shenoy, Long Lake", "channel": "AI Engineer", "duration": 1066, "upload_date": null, "url": "https://www.youtube.com/watch?v=B0fjR3yaZFU", "api": "/api/talks/B0fjR3yaZFU.json", "summary_url": "/#B0fjR3yaZFU", "transcript": {"html": "/transcripts/B0fjR3yaZFU.html", "txt": "/transcripts/B0fjR3yaZFU.txt", "vtt": "/transcripts/B0fjR3yaZFU.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.48, "end": 13.28, "text": "Hi everyone."}, {"id": "s3", "start": 13.28, "end": 14.24, "text": "I'm Varun."}, {"id": "s4", "start": 14.24, "end": 21.92, "text": "I'm one of the co-founders at Long Lake and I'm excited to share a little bit about what we've been up to for the last 2 years."}, {"id": "s5", "start": 21.92, "end": 27.28, "text": "It all comes back to a question all of us have asked time and time again."}, {"id": "s6", "start": 27.28, "end": 35.36, "text": "The models are getting better, but the real question is how do you actually deploy the AI into the real world?"}, {"id": "s7", "start": 35.36, "end": 41.12, "text": "How do you get the models to complete economically relevant tasks?"}, {"id": "s8", "start": 43.12, "end": 46.72, "text": "Let me start by saying everyone has seen the demo."}, {"id": "s9", "start": 46.72, "end": 55.72, "text": "Think of the agent automatically booking a flight, the agent automatically completing a ticket in some kind of customer service portal."}, {"id": "s10", "start": 55.72, "end": 60.56, "text": "Think of an agent completing a block of code ready to commit and go."}, {"id": "s11", "start": 60.56, "end": 65.4, "text": "The reality is we've all seen this and it feels like magic."}, {"id": "s12", "start": 65.4, "end": 69.32, "text": "2 years ago any of this would have been complete science fiction."}, {"id": "s13", "start": 69.32, "end": 72.4, "text": "The capabilities are real."}, {"id": "s14", "start": 72.4, "end": 76.92, "text": "Now, walk with me into a 200-person property management firm."}, {"id": "s15", "start": 76.92, "end": 84.68, "text": "Real people, real properties, real dollars, real customers all across the US."}, {"id": "s16", "start": 84.76, "end": 92.8, "text": "You would expect AI to show up by now, but the reality is nothing has changed at all."}, {"id": "s17", "start": 94.6, "end": 96.12, "text": "Here's the thing."}, {"id": "s18", "start": 96.12, "end": 102.72, "text": "This is totally normal and maybe in fact I'd argue this is what we should expect."}, {"id": "s19", "start": 102.96000000000001, "end": 105.96000000000001, "text": "This is true for every general-purpose technology."}, {"id": "s20", "start": 105.96000000000001, "end": 108.56, "text": "You know, take electricity for example."}, {"id": "s21", "start": 108.56, "end": 117.52000000000001, "text": "Electricity was invented in the 1880s and it was first demoed at Edison's Pearl Street Station Dynamo Room over in Manhattan."}, {"id": "s22", "start": 117.52000000000001, "end": 121.03999999999999, "text": "This was the magic demo of its time."}, {"id": "s23", "start": 121.56, "end": 127.04, "text": "The reality is it took a long time for electricity to be fully adopted."}, {"id": "s24", "start": 127.04, "end": 129.6, "text": "Consider a Ford factory."}, {"id": "s25", "start": 129.6, "end": 132.4, "text": "It's not enough to just have electricity."}, {"id": "s26", "start": 132.4, "end": 135.68, "text": "You have to rip out the existing motors and equipment."}, {"id": "s27", "start": 135.68, "end": 136.959, "text": "You have to bring in the new equipment."}, {"id": "s28", "start": 136.959, "end": 141.12, "text": "You have to go and train everybody to use that very same equipment."}, {"id": "s29", "start": 141.12, "end": 146.2, "text": "Here's a picture of a Ford electrified moving assembly in 1924."}, {"id": "s30", "start": 146.2, "end": 148.72, "text": "These things take time."}, {"id": "s31", "start": 148.959, "end": 153.2, "text": "Diffusion of any technology takes a generation."}, {"id": "s32", "start": 153.2, "end": 164.24, "text": "And since everyone here in this room today is talking about AI, I would argue AI diffusion is perhaps the single most important problem for the next 20 years."}, {"id": "s33", "start": 164.24, "end": 166.12, "text": "The models are going to keep getting better."}, {"id": "s34", "start": 166.12, "end": 177.16, "text": "The big question is how do we actually get these models to be in the real world, complete real tasks, uh and make people more efficient, happier, and provide better service."}, {"id": "s35", "start": 177.4, "end": 180.08, "text": "So taking a quick step step back, who are we?"}, {"id": "s36", "start": 180.08, "end": 181.6, "text": "Uh we are Long Lake."}, {"id": "s37", "start": 181.6, "end": 190.239, "text": "Over the last 2 years, we've raised over $3 billion from Elad Gil, General Catalyst, and AlphaWave since our founding."}, {"id": "s38", "start": 190.239, "end": 191.48, "text": "Here's the strange part."}, {"id": "s39", "start": 191.48, "end": 193.2, "text": "We we don't sell software."}, {"id": "s40", "start": 193.2, "end": 198.44, "text": "We actually go out and acquire and partner with real services businesses in the world."}, {"id": "s41", "start": 198.44, "end": 206.32, "text": "Uh we've acquired 35 businesses across HOA and property management, architecture, HR services, and a lot more."}, {"id": "s42", "start": 206.6, "end": 213.8, "text": "To give you a little bit more flavor, we have roughly a 40% team right now split between technology, finance, and operations."}, {"id": "s43", "start": 213.8, "end": 222.36, "text": "More than half our team is part of the technology team focused on uh building products, data, and deploying the core products into the field."}, {"id": "s44", "start": 222.36, "end": 234.68, "text": "Uh we're in a collected group of folks, a bunch of ex-founders who've worked in the services before, ex-military, folks from Palantir, Ramp, Glean, uh and from the finance side, Blackstone, H.I.G.,"}, {"id": "s45", "start": 234.68, "end": 235.88, "text": "et cetera."}, {"id": "s46", "start": 235.88, "end": 240.48, "text": "We are we are not selling them to these companies above from the outside."}, {"id": "s47", "start": 240.48, "end": 245.4, "text": "We're actually deploying into these companies and figuring out how to get the technology to work."}, {"id": "s48", "start": 245.4, "end": 256.4, "text": "And just to show you the scale we're playing at, we announced recently our $6.3 billion take private of American Express Global Business Travel, the world's largest corporate travel platform."}, {"id": "s49", "start": 256.959, "end": 259.48, "text": "We own these businesses."}, {"id": "s50", "start": 259.48, "end": 263.0, "text": "So, when the AI doesn't work, it's not their problem."}, {"id": "s51", "start": 263.0, "end": 264.4, "text": "We're not the vendor."}, {"id": "s52", "start": 264.4, "end": 266.8, "text": "It's our problem."}, {"id": "s53", "start": 267.08, "end": 269.84, "text": "Concretely, again, we are not the vendor."}, {"id": "s54", "start": 269.84, "end": 271.44, "text": "We are the operator owners."}, {"id": "s55", "start": 271.44, "end": 277.24, "text": "And we work very closely with our teams within the businesses to drive real outcomes."}, {"id": "s56", "start": 277.6, "end": 281.04, "text": "Now, I want to step back and get to the concrete about the how."}, {"id": "s57", "start": 281.04, "end": 284.28, "text": "What are the lessons we've learned over the last 2 and 1/2 years?"}, {"id": "s58", "start": 284.28, "end": 289.52, "text": "And what we've learned from deploying AI into companies we've owned."}, {"id": "s59", "start": 291.6, "end": 293.0, "text": "Three quick lessons."}, {"id": "s60", "start": 293.0, "end": 297.36, "text": "One, how we move agents from co-pilots to co-workers."}, {"id": "s61", "start": 297.36, "end": 302.12, "text": "Two, how we leverage real-world data within these businesses."}, {"id": "s62", "start": 302.12, "end": 307.36, "text": "Remember, we're seeing all of the work that's being done in these real services businesses."}, {"id": "s63", "start": 307.36, "end": 311.88, "text": "There's a lot of interesting problems and solutions embedded within that."}, {"id": "s64", "start": 311.88, "end": 319.919, "text": "And then finally, perhaps the most interesting and exciting is how do you actually get all of this technology to compound over time by learning loops in the enterprise."}, {"id": "s65", "start": 319.919, "end": 323.68, "text": "We'll get to that at the end over here."}, {"id": "s66", "start": 323.68, "end": 327.0, "text": "So, starting off from co-pilots to co-workers."}, {"id": "s67", "start": 327.0, "end": 331.0, "text": "There's a spectrum of how much autonomy you can give an agent."}, {"id": "s68", "start": 331.0, "end": 332.56, "text": "On the left here, you see a co-pilot."}, {"id": "s69", "start": 332.56, "end": 336.08, "text": "This is, you know, your simple rag chatbot from 2 years ago."}, {"id": "s70", "start": 336.08, "end": 336.84000000000003, "text": "It's very quick."}, {"id": "s71", "start": 336.84000000000003, "end": 337.8, "text": "You can ask a question."}, {"id": "s72", "start": 337.8, "end": 339.68, "text": "Maybe it's integrated with some systems."}, {"id": "s73", "start": 339.68, "end": 343.44, "text": "It can give you information back very, very quickly."}, {"id": "s74", "start": 344.08, "end": 345.96, "text": "The second step is a synchronous agent."}, {"id": "s75", "start": 345.96, "end": 349.76, "text": "Consider something like Claude code, Codex, Claude co-work."}, {"id": "s76", "start": 349.76, "end": 350.68, "text": "It's real-time."}, {"id": "s77", "start": 350.68, "end": 352.15999999999997, "text": "There's this two-way interaction."}, {"id": "s78", "start": 352.15999999999997, "end": 354.15999999999997, "text": "It's a bit more sophisticated than a co-pilot."}, {"id": "s79", "start": 354.15999999999997, "end": 356.92, "text": "You can go let it run off for 1 to 5 minutes."}, {"id": "s80", "start": 356.92, "end": 359.4, "text": "Uh it'll call tools, maybe use its skills."}, {"id": "s81", "start": 359.4, "end": 360.32, "text": "Uh it's still synchronous."}, {"id": "s82", "start": 360.32, "end": 362.24, "text": "You still need to step in and ask a query."}, {"id": "s83", "start": 362.24, "end": 366.6, "text": "So, the next obvious rung of the ladder is the asynchronous agent."}, {"id": "s84", "start": 366.6, "end": 368.96, "text": "You can come in here, still ask a query."}, {"id": "s85", "start": 368.96, "end": 372.76, "text": "The agent will go off into the background, do some work, and then come back."}, {"id": "s86", "start": 372.76, "end": 379.04, "text": "Uh and what's really interesting about asynchronous agents is that the user does not have to be the one that triggers them."}, {"id": "s87", "start": 379.04, "end": 381.24, "text": "You can have external triggers as well."}, {"id": "s88", "start": 381.24, "end": 391.919, "text": "Maybe someone completes a certain task and there is an async job queue uh that allows the async agent to pull off from and proactively offer advice to the end user."}, {"id": "s89", "start": 391.919, "end": 395.52, "text": "Then, I'd argue the next step is a long-running agent."}, {"id": "s90", "start": 395.52, "end": 400.76, "text": "How do you get these agents to work for hours, days, weeks, months, etc.?"}, {"id": "s91", "start": 400.76, "end": 407.48, "text": "I think this is currently a very core problem that a lot of the labs are focused on, as are we."}, {"id": "s92", "start": 408.0, "end": 413.08, "text": "And then finally, at the end, the holy grail, an AI co-worker."}, {"id": "s93", "start": 413.08, "end": 415.2, "text": "This is where most people start off."}, {"id": "s94", "start": 415.2, "end": 420.28, "text": "You want a proactive partner that gets work done just alongside you."}, {"id": "s95", "start": 420.28, "end": 429.72, "text": "This is what everyone wants to sell you, but what we've learned from owning the outcomes in this business is you have to earn the right to do more."}, {"id": "s96", "start": 429.72, "end": 433.56, "text": "It's it's not enough to jump to the co-worker immediately, right?"}, {"id": "s97", "start": 433.56, "end": 434.72, "text": "For for a bunch of reasons."}, {"id": "s98", "start": 434.72, "end": 438.52, "text": "One, for certain tasks, the models might not quite be there yet."}, {"id": "s99", "start": 438.52, "end": 452.04, "text": "And two, you actually have to work with these companies in the field, interact and iterate very, very closely, so that they understand that this is the beginning of AI, and you can work up the rungs over time."}, {"id": "s100", "start": 453.24, "end": 458.64, "text": "I think a really unique lens to look at this problem through is the that of the jagged frontier."}, {"id": "s101", "start": 458.64, "end": 462.6, "text": "We all know that agents are incredibly good at writing code."}, {"id": "s102", "start": 462.6, "end": 467.0, "text": "So, what does the, for example, synchronous agent for code generation look like?"}, {"id": "s103", "start": 467.0, "end": 468.0, "text": "This is super simple."}, {"id": "s104", "start": 468.0, "end": 472.64, "text": "This is just your coding agent, maybe it's Codex, Cloud Code, just running on your desktop."}, {"id": "s105", "start": 472.64, "end": 474.2, "text": "It has access to a file system."}, {"id": "s106", "start": 474.2, "end": 475.8, "text": "You collaborate within real time."}, {"id": "s107", "start": 475.8, "end": 479.15999999999997, "text": "You get instant feedback and you iterate."}, {"id": "s108", "start": 479.44, "end": 483.8, "text": "The next step is, you know, if you look at code code generation, what is the async agent?"}, {"id": "s109", "start": 483.8, "end": 486.2, "text": "This is also fairly straightforward and largely solved."}, {"id": "s110", "start": 486.2, "end": 491.24, "text": "You take the exact same coding agent, you wrap it in a sandbox, and you just let it go run."}, {"id": "s111", "start": 491.24, "end": 496.88, "text": "It can build, it can test, and once it's done with its work, it can provide the code in the form of a PR."}, {"id": "s112", "start": 496.88, "end": 503.76, "text": "One thing that's really unique about engineers is folks are incredibly good at already paralyzing their work."}, {"id": "s113", "start": 503.76, "end": 510.88, "text": "It's very commonplace to launch 10 jobs and be comfortable with the fact that job seven might finish before job three."}, {"id": "s114", "start": 510.88, "end": 515.479, "text": "So, engineers are incredibly good at using these async agents."}, {"id": "s115", "start": 515.719, "end": 521.64, "text": "Now, when we come to services, the equivalent of a synchronous agent, what we talked about a little bit earlier, it's a co-working agent."}, {"id": "s116", "start": 521.64, "end": 524.48, "text": "It's an agent that has deep context about your enterprise."}, {"id": "s117", "start": 524.48, "end": 533.16, "text": "It interacts potentially with MCPs, custom tools, custom integrations, uh and you can chat with it synchronously just like any of these other products."}, {"id": "s118", "start": 533.16, "end": 536.16, "text": "I think this is a frontier here in the bottom right."}, {"id": "s119", "start": 536.16, "end": 540.52, "text": "What does it mean to build an asynchronous agent for the services?"}, {"id": "s120", "start": 540.52, "end": 548.12, "text": "What does it mean to paralyze work in industries where work is traditionally done in a very, very serial manner?"}, {"id": "s121", "start": 548.12, "end": 557.56, "text": "This is where we spend a lot of time and this is what I wake up every morning really excited thinking about, you know, we've we've figured out what the async and forking mechanism for code is."}, {"id": "s122", "start": 557.56, "end": 560.0, "text": "You just spin up a bunch of sandboxes and do work."}, {"id": "s123", "start": 560.0, "end": 563.88, "text": "What does that look like for the rest of the world?"}, {"id": "s124", "start": 564.8389999999999, "end": 567.44, "text": "So, here's a couple questions we think about pretty seriously."}, {"id": "s125", "start": 567.44, "end": 572.4, "text": "One, you know, the models are trained on code, they want to write code, they're incredibly good at writing code."}, {"id": "s126", "start": 572.4, "end": 575.36, "text": "How do we leverage these coding agents for actual knowledge work?"}, {"id": "s127", "start": 575.36, "end": 584.56, "text": "You You rather than wait for the models to catch up on doing services knowledge work, what if we just use that code knowledge and represent knowledge work as code?"}, {"id": "s128", "start": 584.56, "end": 587.52, "text": "Two, as I mentioned, engineers are used to paralyzing work."}, {"id": "s129", "start": 587.52, "end": 589.36, "text": "How do you paralyze work that's traditionally serial?"}, {"id": "s130", "start": 589.36, "end": 594.28, "text": "You know, people clean out their inbox one email by one email, not 10 emails at once."}, {"id": "s131", "start": 594.28, "end": 599.48, "text": "And finally, how do you move up the ladder here both in terms of product and user enablement?"}, {"id": "s132", "start": 599.48, "end": 601.04, "text": "What are the right form factors?"}, {"id": "s133", "start": 601.04, "end": 605.68, "text": "And I'd argue this varies dramatically from industry to industry."}, {"id": "s134", "start": 605.68, "end": 613.08, "text": "Just because you have one way of launching an async agent for code, doesn't mean that same way is going to work for architecture or property management."}, {"id": "s135", "start": 613.44, "end": 617.56, "text": "The second point I want to cover today is leveraging real-world data."}, {"id": "s136", "start": 617.56, "end": 618.52, "text": "We all know this."}, {"id": "s137", "start": 618.52, "end": 626.04, "text": "Frontier models have learned from everything humanity has written down, but the most valuable tasks are not on the internet."}, {"id": "s138", "start": 626.04, "end": 629.462, "text": "How do you actually close the books when you're missing receipts?"}, {"id": "s139", "start": 629.462, "end": 629.56, "text": "[snorts]"}, {"id": "s140", "start": 629.56, "end": 635.04, "text": "How do you scope a building for construction in a blueprint, potentially collaboratively?"}, {"id": "s141", "start": 635.04, "end": 639.12, "text": "How do you coordinate vendors for fixing a broken roof?"}, {"id": "s142", "start": 639.12, "end": 647.76, "text": "All of this knowledge lives in people's heads, in 20-year-old software, uh in the way that one senior person on one of these teams just knows how to do it."}, {"id": "s143", "start": 647.76, "end": 652.64, "text": "How do you make this information explicit and create tasks that you can actually learn from?"}, {"id": "s144", "start": 652.64, "end": 654.8389999999999, "text": "So, we've constructed a little bit of a flywheel."}, {"id": "s145", "start": 654.8389999999999, "end": 659.08, "text": "We get our agents to collaborate with our employees to do real work."}, {"id": "s146", "start": 659.08, "end": 662.839, "text": "And this allows us to generate rich traces of data and information."}, {"id": "s147", "start": 662.839, "end": 668.56, "text": "Tool calls, the hiccups, the papercuts, everything that goes wrong with doing real work."}, {"id": "s148", "start": 668.56, "end": 672.32, "text": "This in turn allows us to build real-world evals."}, {"id": "s149", "start": 672.32, "end": 674.0, "text": "There is a ground truth here."}, {"id": "s150", "start": 674.0, "end": 679.56, "text": "In the case of the roofing example, the question is, did the roof get repaired?"}, {"id": "s151", "start": 679.56, "end": 681.68, "text": "Did the books get closed?"}, {"id": "s152", "start": 681.68, "end": 686.64, "text": "And this allows us to hill climb and build better agents, which leads to more and more impact."}, {"id": "s153", "start": 686.64, "end": 689.56, "text": "And what's really exciting is it ratchets up."}, {"id": "s154", "start": 689.56, "end": 694.16, "text": "Every week our hill climbing benchmarks become a regression test."}, {"id": "s155", "start": 694.16, "end": 697.64, "text": "So, our agents get better and better over time."}, {"id": "s156", "start": 697.68, "end": 704.48, "text": "Just to drive a little bit deeper here on the traces, there's three upshots of being able to collect these rich traces."}, {"id": "s157", "start": 704.48, "end": 709.12, "text": "One, we get to generate amazing evals that are built and scored automatically."}, {"id": "s158", "start": 709.12, "end": 712.96, "text": "Uh and we're able to gather both implicit and explicit feedback."}, {"id": "s159", "start": 712.96, "end": 719.4, "text": "Explicit feedback in the sense of thumbs ups and thumbs down, maybe people provide a note telling us whether this response was good or not."}, {"id": "s160", "start": 719.4, "end": 721.32, "text": "Uh and also implicit feedback."}, {"id": "s161", "start": 721.32, "end": 721.56, "text": "Right?"}, {"id": "s162", "start": 721.56, "end": 722.8, "text": "Again, we have the ground truth."}, {"id": "s163", "start": 722.8, "end": 730.44, "text": "Maybe there's some data that the AI generated and there's a real diff between the data that the AI generated and what was ultimately submitted."}, {"id": "s164", "start": 730.44, "end": 734.52, "text": "That's rich information that almost no one else has."}, {"id": "s165", "start": 734.52, "end": 743.24, "text": "Two, we've started post training models internally on all of the data that these businesses operate on and produce, generally speaking."}, {"id": "s166", "start": 743.24, "end": 747.64, "text": "This is all data that is completely out of distribution for most frontier labs."}, {"id": "s167", "start": 747.64, "end": 749.88, "text": "Think of the task I showed at the beginning."}, {"id": "s168", "start": 749.88, "end": 760.28, "text": "A lot of the models A lot of the frontier models today just can't do these tasks yet and we're trying to post train our own models internally to be able to do that on the rich source of data that we own."}, {"id": "s169", "start": 760.28, "end": 763.8389999999999, "text": "And then finally, the actual agents themselves."}, {"id": "s170", "start": 763.8389999999999, "end": 768.72, "text": "The real world is incredibly hairy and messy and you want customization per company."}, {"id": "s171", "start": 768.72, "end": 771.04, "text": "Every company does things very differently."}, {"id": "s172", "start": 771.04, "end": 772.64, "text": "Customization per user."}, {"id": "s173", "start": 772.64, "end": 775.72, "text": "The way each user does their work is very unique."}, {"id": "s174", "start": 775.72, "end": 777.48, "text": "And customization per client."}, {"id": "s175", "start": 777.48, "end": 779.8, "text": "The way you work with every client is different."}, {"id": "s176", "start": 779.8, "end": 784.0, "text": "It's a services business and you want to uphold those standards."}, {"id": "s177", "start": 784.44, "end": 788.92, "text": "I love this picture because it's the whole thing in a single image."}, {"id": "s178", "start": 788.92, "end": 793.32, "text": "Um the the way we usually talk about LLM tasks is the top panel."}, {"id": "s179", "start": 793.32, "end": 793.6, "text": "Right?"}, {"id": "s180", "start": 793.6, "end": 795.68, "text": "You just It's It's a slope."}, {"id": "s181", "start": 795.68, "end": 796.36, "text": "You got a bike."}, {"id": "s182", "start": 796.36, "end": 799.52, "text": "And but there's clear sight to success."}, {"id": "s183", "start": 799.52, "end": 802.44, "text": "The reality is most work is not like that."}, {"id": "s184", "start": 802.44, "end": 804.8389999999999, "text": "And And you and I both know that."}, {"id": "s185", "start": 804.8389999999999, "end": 807.2, "text": "Uh there are hills and ravines."}, {"id": "s186", "start": 807.2, "end": 809.76, "text": "Uh there's death by a thousand paper cuts."}, {"id": "s187", "start": 809.76, "end": 812.28, "text": "But But that's what real work looks like."}, {"id": "s188", "start": 812.28, "end": 813.72, "text": "That's the entire job."}, {"id": "s189", "start": 813.72, "end": 817.2, "text": "The exceptions are the job."}, {"id": "s190", "start": 817.72, "end": 819.64, "text": "That's That's the demo."}, {"id": "s191", "start": 819.64, "end": 822.4, "text": "That's the actual job."}, {"id": "s192", "start": 823.04, "end": 829.08, "text": "Now, on to the final thing I want to chat with you guys today is learning loops within the enterprise."}, {"id": "s193", "start": 829.08, "end": 834.04, "text": "I'd argue there's two hot trends everyone's talking about in 2026."}, {"id": "s194", "start": 834.04, "end": 836.04, "text": "One, it's continual learning."}, {"id": "s195", "start": 836.04, "end": 838.68, "text": "How do you make an agent better over time with feedback?"}, {"id": "s196", "start": 838.68, "end": 846.12, "text": "I think there are plenty of sessions uh this week on how you can use continual learning, whether it's in the prompt or in the weights."}, {"id": "s197", "start": 846.12, "end": 847.88, "text": "And two, enablement."}, {"id": "s198", "start": 847.88, "end": 852.92, "text": "How do you get in these enterprises and actually get them to adopt and use AI?"}, {"id": "s199", "start": 852.92, "end": 857.64, "text": "Traditionally speaking, these two initiatives are owned by two separate teams."}, {"id": "s200", "start": 857.64, "end": 858.0, "text": "Right?"}, {"id": "s201", "start": 858.0, "end": 861.64, "text": "The continual learning is owned by your research team, your platform engineering team."}, {"id": "s202", "start": 861.64, "end": 865.08, "text": "Enablement's owned by growth or deployment or customer experience."}, {"id": "s203", "start": 865.08, "end": 869.52, "text": "Uh usually pretty siloed, not much interaction between the two."}, {"id": "s204", "start": 869.72, "end": 872.2, "text": "We think these are part of the exact same loop."}, {"id": "s205", "start": 872.2, "end": 877.0, "text": "The agent only improves if people actually use it."}, {"id": "s206", "start": 877.0, "end": 881.16, "text": "And people only use the agent if it's worth adopting."}, {"id": "s207", "start": 881.16, "end": 883.44, "text": "So, here's a little graphic of a snowball."}, {"id": "s208", "start": 883.44, "end": 889.16, "text": "More usage drives continual learning, which drives a better agent, which drives more usage again."}, {"id": "s209", "start": 889.16, "end": 893.76, "text": "All this to say, there's still a really big elephant in the room."}, {"id": "s210", "start": 893.76, "end": 895.8389999999999, "text": "How do you get the initial usage?"}, {"id": "s211", "start": 895.8389999999999, "end": 904.28, "text": "I think a lot of people, you know, will use Claude Code or or give it to their whole enterprise, expect folks to just start using it."}, {"id": "s212", "start": 904.28, "end": 908.36, "text": "Everyone assumes the usage just shows up."}, {"id": "s213", "start": 908.36, "end": 911.08, "text": "But as we all know, that's simply not the case."}, {"id": "s214", "start": 911.08, "end": 912.2, "text": "It never does."}, {"id": "s215", "start": 912.2, "end": 912.56, "text": "Right?"}, {"id": "s216", "start": 912.56, "end": 917.68, "text": "Getting a 100-year-old firm to change its processes is hard."}, {"id": "s217", "start": 917.68, "end": 922.04, "text": "You could have the best AI coworker on the internet or on Earth."}, {"id": "s218", "start": 922.04, "end": 929.48, "text": "And if the people if the person who's closed the books for the last 20 years continues to do things the same way, nothing changes."}, {"id": "s219", "start": 929.48, "end": 931.84, "text": "Nothing happens."}, {"id": "s220", "start": 932.24, "end": 933.88, "text": "So, what can you actually do about it?"}, {"id": "s221", "start": 933.88, "end": 937.12, "text": "What you know, this this seems like incredibly hard."}, {"id": "s222", "start": 937.12, "end": 938.24, "text": "What what's the upshot?"}, {"id": "s223", "start": 938.24, "end": 939.96, "text": "How do you actually get this stuff to work?"}, {"id": "s224", "start": 939.96, "end": 947.84, "text": "Well, I think a lot about Jensen and how he dominated the market in his words with extreme hardware software co-design."}, {"id": "s225", "start": 947.84, "end": 952.96, "text": "Designing the chips and the software together as one system."}, {"id": "s226", "start": 952.96, "end": 957.2, "text": "We look at this through the lens of extreme software service co-design."}, {"id": "s227", "start": 957.2, "end": 962.56, "text": "How do you co-design our products with the people and the processes at our businesses?"}, {"id": "s228", "start": 962.56, "end": 968.44, "text": "And I'd argue this is only possible from being within under the same roof."}, {"id": "s229", "start": 968.48, "end": 980.48, "text": "We need to meet the people within these companies both metaphorically, for example, bringing products to their systems so that the energy required for enablement is kept low, and also physically."}, {"id": "s230", "start": 980.48, "end": 985.6, "text": "Get on a plane, show up, say hi, learn what people actually do."}, {"id": "s231", "start": 985.6, "end": 998.04, "text": "You know, maybe you build a product that's natively embedded into Excel or into their ERP system, maybe their 3D design software, or or maybe even their Microsoft products like Outlook, Gmail, etc."}, {"id": "s232", "start": 998.04, "end": 999.08, "text": "Or you show up in person."}, {"id": "s233", "start": 999.08, "end": 1001.72, "text": "You do a lunch and learn with a bunch of folks at one of the companies."}, {"id": "s234", "start": 1001.72, "end": 1005.64, "text": "You go to their conferences and you create cotton candy and run a stand for them."}, {"id": "s235", "start": 1005.64, "end": 1010.92, "text": "You go mountain biking and ask them about all the difficulties that they have with their actual day-to-day jobs."}, {"id": "s236", "start": 1010.92, "end": 1022.12, "text": "Or you show up in person one-on-one or sometimes even two-on-one in this case and just show them how to use the tools and learn from the feedback because this is what the rest of the world really looks like."}, {"id": "s237", "start": 1022.12, "end": 1024.6, "text": "It's not like the folks in this room or in San Francisco."}, {"id": "s238", "start": 1024.6, "end": 1026.28, "text": "It's a lot more like this."}, {"id": "s239", "start": 1026.28, "end": 1031.36, "text": "You cannot co-design software with the services business over Zoom or over a support ticket."}, {"id": "s240", "start": 1031.36, "end": 1032.48, "text": "You you have to be there."}, {"id": "s241", "start": 1032.48, "end": 1034.04, "text": "You have to be in person."}, {"id": "s242", "start": 1034.04, "end": 1037.24, "text": "And I'd argue this is the part that actually makes it work."}, {"id": "s243", "start": 1037.24, "end": 1042.16, "text": "In order to get AI diffusion to work, you have to touch some grass."}, {"id": "s244", "start": 1042.16, "end": 1043.199, "text": "Thank you so much."}, {"id": "s245", "start": 1043.199, "end": 1045.88, "text": "I'll be around for the rest of day if there's anything I can help with."}, {"id": "s246", "start": 1045.88, "end": 1047.68, "text": "My email is up there."}, {"id": "s247", "start": 1047.68, "end": 1050.4, "text": "And yeah, thank you."}, {"id": "s248", "start": 1063.732, "end": 1065.732, "text": "[music]"}]}, {"id": "DrTdD-ttjCY", "title": "Building GTM AI Agents: Lessons from Deploying to 6,000 Users — Sait Izmit, Snowflake", "channel": "AI Engineer", "duration": 1239, "upload_date": null, "url": "https://www.youtube.com/watch?v=DrTdD-ttjCY", "api": "/api/talks/DrTdD-ttjCY.json", "summary_url": "/#DrTdD-ttjCY", "transcript": {"html": "/transcripts/DrTdD-ttjCY.html", "txt": "/transcripts/DrTdD-ttjCY.txt", "vtt": "/transcripts/DrTdD-ttjCY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.76, "end": 13.44, "text": "Hi everyone."}, {"id": "s3", "start": 13.44, "end": 18.08, "text": "So, I think I'm one of the last speakers that is standing between you and the long weekend."}, {"id": "s4", "start": 18.08, "end": 21.0, "text": "So, I hope I can get your energy levels up."}, {"id": "s5", "start": 21.0, "end": 25.44, "text": "Um so, I'm responsible for our internal AI tools for our sales team."}, {"id": "s6", "start": 25.44, "end": 32.56, "text": "And the reason I'm here today is indeed like we launched our internal go-to-market assistant uh in September last year."}, {"id": "s7", "start": 32.56, "end": 35.4, "text": "It answered more than 1 million questions so far."}, {"id": "s8", "start": 35.4, "end": 38.48, "text": "We have roughly answered 40,000 questions a week."}, {"id": "s9", "start": 38.48, "end": 42.04, "text": "Um and we are the customer zero for a lot of Snowflake products."}, {"id": "s10", "start": 42.04, "end": 45.08, "text": "So, this is built on Snowflake co-work."}, {"id": "s11", "start": 45.08, "end": 48.2, "text": "Um and I meet a lot of customers every week."}, {"id": "s12", "start": 48.2, "end": 48.48, "text": "Okay?"}, {"id": "s13", "start": 48.48, "end": 55.04, "text": "So, I meet a lot of enterprises, Fortune 500 companies, and then they're all trying to build similar things, and they all struggle, right?"}, {"id": "s14", "start": 55.04, "end": 58.16, "text": "So, and then I end up like having this discussion with them all the time."}, {"id": "s15", "start": 58.16, "end": 60.08, "text": "Like they ask like how did you guys do it?"}, {"id": "s16", "start": 60.08, "end": 62.04, "text": "And then we share our best practices."}, {"id": "s17", "start": 62.04, "end": 64.6, "text": "So, I will try to share some of those things with you."}, {"id": "s18", "start": 64.6, "end": 67.4, "text": "Uh I'm told that I need to have some code in my presentation."}, {"id": "s19", "start": 67.4, "end": 73.24, "text": "I don't, but I will try to show you at least some architectural diagrams just to make it more interesting for the engineering audience."}, {"id": "s20", "start": 73.24, "end": 75.03999999999999, "text": "Uh but let's jump into it."}, {"id": "s21", "start": 75.03999999999999, "end": 85.48, "text": "Um I think before we start like I think I already I was watching the other presentations like I think everyone tries to give their interpretation of like you know, why are we even building things for go-to-market."}, {"id": "s22", "start": 85.48, "end": 85.72, "text": "Okay?"}, {"id": "s23", "start": 85.72, "end": 88.96000000000001, "text": "So, this is how I explain it to family and friends."}, {"id": "s24", "start": 88.96000000000001, "end": 90.36, "text": "So, let's take Snowflake."}, {"id": "s25", "start": 90.36, "end": 90.64, "text": "Okay?"}, {"id": "s26", "start": 90.64, "end": 94.0, "text": "So, we are a company of like, you know, close to 10,000 people."}, {"id": "s27", "start": 94.0, "end": 99.28, "text": "So, if you look at that or our organization, almost half of our basically workforce is sales, right?"}, {"id": "s28", "start": 99.28, "end": 101.08, "text": "And what are they responsible for?"}, {"id": "s29", "start": 101.08, "end": 103.8, "text": "They're responsible for revenue generation."}, {"id": "s30", "start": 103.8, "end": 105.16, "text": "What do they struggle with?"}, {"id": "s31", "start": 105.16, "end": 107.4, "text": "And I into I talked to a lot of customers."}, {"id": "s32", "start": 107.4, "end": 108.84, "text": "It's very common."}, {"id": "s33", "start": 108.84, "end": 110.32, "text": "You know, everyone's data is siloed."}, {"id": "s34", "start": 110.32, "end": 113.52000000000001, "text": "We work with a lot of first-party data, a lot of third-party data."}, {"id": "s35", "start": 113.52000000000001, "end": 116.68, "text": "It's all locked down in these like SaaS tools and things like that."}, {"id": "s36", "start": 116.68, "end": 128.8, "text": "And literally we have for example like reps who are using 15 different tools, not because they love the UI of those tools, because every tool has a different data point, and then they end up stitching all of that together in spreadsheets and running it there, right?"}, {"id": "s37", "start": 128.8, "end": 130.28, "text": "And the data is endless."}, {"id": "s38", "start": 130.28, "end": 135.16, "text": "Like we have reps who have 1,000 accounts assigned to them, 1,000 customers."}, {"id": "s39", "start": 135.16, "end": 143.12, "text": "They have to stay on top of their recent news, what's happening with their consumption, did they get in support tickets recently, what was their latest earning results, everything."}, {"id": "s40", "start": 143.12, "end": 147.07999999999998, "text": "There's no It's not a single human on this planet that can stay on top of that much data."}, {"id": "s41", "start": 147.07999999999998, "end": 151.32, "text": "And then they need to do that 30 times, 40 times a day, right?"}, {"id": "s42", "start": 151.32, "end": 153.92000000000002, "text": "So, what does AI offer for them?"}, {"id": "s43", "start": 153.92000000000002, "end": 155.8, "text": "It offers that data democratization."}, {"id": "s44", "start": 155.8, "end": 157.56, "text": "No more like 1,000 dashboards, right?"}, {"id": "s45", "start": 157.56, "end": 158.8, "text": "No more access to analysts."}, {"id": "s46", "start": 158.8, "end": 162.92000000000002, "text": "Like you know, um it offers automation possibilities for them, right?"}, {"id": "s47", "start": 162.92000000000002, "end": 164.72, "text": "It frees up their inbox."}, {"id": "s48", "start": 164.72, "end": 166.28, "text": "It offers tool consolidation."}, {"id": "s49", "start": 166.28, "end": 170.07999999999998, "text": "No longer 15 different tools that I need to work for."}, {"id": "s50", "start": 170.07999999999998, "end": 172.07999999999998, "text": "And that brings productivity savings."}, {"id": "s51", "start": 172.07999999999998, "end": 173.52, "text": "It frees up your time, right?"}, {"id": "s52", "start": 173.52, "end": 175.16, "text": "You can use that time on other things."}, {"id": "s53", "start": 175.16, "end": 176.44, "text": "It helps you become a better seller."}, {"id": "s54", "start": 176.44, "end": 178.44, "text": "You're more effective with your customers."}, {"id": "s55", "start": 178.44, "end": 180.56, "text": "And that translates to business results."}, {"id": "s56", "start": 180.56, "end": 189.72, "text": "You can cover more of your book, you know, you can have better win rates, uh you can have shorter deal cycles, and ultimately what everyone cares about, you can get incremental revenue."}, {"id": "s57", "start": 189.72, "end": 196.0, "text": "Okay, so that's the reason why I'm I'm working for, you know, making the go-to-market organizations more effective."}, {"id": "s58", "start": 196.44, "end": 197.88, "text": "But, there's a catch."}, {"id": "s59", "start": 197.88, "end": 201.239, "text": "These are non-deterministic systems, right?"}, {"id": "s60", "start": 201.239, "end": 205.6, "text": "And I run into this problem every time with users."}, {"id": "s61", "start": 205.6, "end": 211.6, "text": "I see many, many, many AI projects failed, and then it fails on this principle."}, {"id": "s62", "start": 211.6, "end": 218.07999999999998, "text": "User trust is earned extremely hard and is lost overnight, right?"}, {"id": "s63", "start": 218.07999999999998, "end": 223.68, "text": "So, at the end what you're doing is you're putting a free-form chatbot there, right?"}, {"id": "s64", "start": 223.68, "end": 227.519, "text": "And people will come in and they will ask any question they can think of."}, {"id": "s65", "start": 227.519, "end": 232.2, "text": "If they like what they see in the first five questions, they come back."}, {"id": "s66", "start": 232.2, "end": 237.88, "text": "If they don't like what they see, it's 10 times more effort for you to win them back, if you can ever win them back."}, {"id": "s67", "start": 237.88, "end": 238.96, "text": "Right?"}, {"id": "s68", "start": 238.96, "end": 244.36, "text": "So, we have a saying in our team, we say quality is P minus one."}, {"id": "s69", "start": 244.36, "end": 248.12, "text": "And that's basically we take that very, very seriously."}, {"id": "s70", "start": 248.12, "end": 256.92, "text": "So, one of the things that we really cared about is when I first joined the team, you know, the team had all these like data sources connected from our top dashboards."}, {"id": "s71", "start": 256.92, "end": 259.799, "text": "We they had a knowledge assistant built into it and so on."}, {"id": "s72", "start": 259.799, "end": 262.56, "text": "We had three lines of agent instructions."}, {"id": "s73", "start": 262.56, "end": 268.6, "text": "And then before I even tried the agent, I opened a spreadsheet, I took the sales process, I wrote down 150 questions."}, {"id": "s74", "start": 268.6, "end": 271.08, "text": "And then the sales our engineering team was like, \"What are you doing?"}, {"id": "s75", "start": 271.08, "end": 273.28, "text": "We don't have that data in the agent.\""}, {"id": "s76", "start": 273.28, "end": 274.28, "text": "I was like, \"It doesn't matter."}, {"id": "s77", "start": 274.28, "end": 276.76, "text": "These are the questions your sellers are going to ask.\""}, {"id": "s78", "start": 276.76, "end": 277.6, "text": "Right?"}, {"id": "s79", "start": 277.6, "end": 282.04, "text": "And then we run our test, 50% accuracy, you know, like everyone's depressed and so on."}, {"id": "s80", "start": 282.04, "end": 286.52, "text": "So, we said, \"Okay, let's make sure that we don't go for coverage, but we go for quality.\""}, {"id": "s81", "start": 286.52, "end": 287.04, "text": "Right?"}, {"id": "s82", "start": 287.04, "end": 290.8, "text": "We don't want to try to answer 100 questions and get them 70% right."}, {"id": "s83", "start": 290.8, "end": 294.04, "text": "We want to answer 50 questions, but get them 95% right."}, {"id": "s84", "start": 294.04, "end": 294.64, "text": "Right?"}, {"id": "s85", "start": 294.64, "end": 298.96, "text": "Because with that you get a first impression, good first impression, you build a trust with them."}, {"id": "s86", "start": 298.96, "end": 302.04, "text": "And then rather than being in that boat of, \"Oh, this thing doesn't work.\""}, {"id": "s87", "start": 302.04, "end": 303.52, "text": "people are like, \"Oh, this thing is awesome."}, {"id": "s88", "start": 303.52, "end": 305.16, "text": "Can I get more of that?\""}, {"id": "s89", "start": 305.16, "end": 306.16, "text": "Right?"}, {"id": "s90", "start": 306.16, "end": 314.04, "text": "So, we started small and 60% of the data we actually added after the launch, after the 6-7 months post launch."}, {"id": "s91", "start": 314.04, "end": 317.6, "text": "Today, if you look into our agent, I mean, it's not a small agent."}, {"id": "s92", "start": 317.6, "end": 322.04, "text": "We have 15 semantic views, 85 tables, 3,000 columns of data."}, {"id": "s93", "start": 322.04, "end": 325.12, "text": "We have like five to six different MCP connections on it."}, {"id": "s94", "start": 325.12, "end": 328.56, "text": "You know, close to 20 skills connected to that and so on and so on."}, {"id": "s95", "start": 328.56, "end": 329.16, "text": "Right?"}, {"id": "s96", "start": 329.16, "end": 333.2, "text": "So, it's a huge system that we are managing in here."}, {"id": "s97", "start": 333.24, "end": 335.84000000000003, "text": "And then you cannot just launch these things to everyone, right?"}, {"id": "s98", "start": 335.84000000000003, "end": 341.32, "text": "So, we said that, \"Look, we need to do this in a controlled way because we want to make sure that we earn that first five questions."}, {"id": "s99", "start": 341.32, "end": 344.4, "text": "We don't want to burn our bridges in that first five questions.\""}, {"id": "s100", "start": 344.4, "end": 345.24, "text": "Right?"}, {"id": "s101", "start": 345.24, "end": 349.04, "text": "So, that's why with every product we do, we do a face launch."}, {"id": "s102", "start": 349.04, "end": 350.48, "text": "The first one is a pilot."}, {"id": "s103", "start": 350.48, "end": 354.76, "text": "The goal of the pilot is to prove the accuracy, prove the quality, right?"}, {"id": "s104", "start": 354.76, "end": 367.08, "text": "You get your top, you know, AI native folks in the organization who are eager to work with you, give you feedback, improve the product, make sure that you got the rough edges through that, right?"}, {"id": "s105", "start": 367.08, "end": 372.76, "text": "And then after a couple of weeks, you come to a point where it looks like, okay, those rough edges are more smoother now."}, {"id": "s106", "start": 372.76, "end": 373.2, "text": "Okay?"}, {"id": "s107", "start": 373.2, "end": 374.72, "text": "Then you go into your better launch."}, {"id": "s108", "start": 374.72, "end": 376.32, "text": "We do 10% better, right?"}, {"id": "s109", "start": 376.32, "end": 377.96, "text": "With 600 people."}, {"id": "s110", "start": 377.96, "end": 382.56, "text": "There you are looking at do I truly have an basically a minimum viable product?"}, {"id": "s111", "start": 382.56, "end": 384.84, "text": "Is the MVP really there, right?"}, {"id": "s112", "start": 384.84, "end": 387.28, "text": "And what will happen is that you will start getting tons of requests."}, {"id": "s113", "start": 387.28, "end": 388.28, "text": "Can you connect this data?"}, {"id": "s114", "start": 388.28, "end": 390.2, "text": "Can you connect that data and everything?"}, {"id": "s115", "start": 390.2, "end": 394.15999999999997, "text": "And then you are looking at like where are the actually the concentrations happening?"}, {"id": "s116", "start": 394.15999999999997, "end": 398.32, "text": "Because that means that if you don't get those things in, you don't truly have an MVP, right?"}, {"id": "s117", "start": 398.32, "end": 401.32, "text": "Then it's not going to work for their daily workflows."}, {"id": "s118", "start": 401.32, "end": 405.68, "text": "And then at this stage, you're also trying to prove are they coming back?"}, {"id": "s119", "start": 405.68, "end": 406.28, "text": "Right?"}, {"id": "s120", "start": 406.28, "end": 413.64, "text": "So, the things that we really track there is basically like, okay, how many questions they're asking and everything, but what is the retention rate?"}, {"id": "s121", "start": 413.64, "end": 419.44, "text": "So, we exited for example that at like more than 70% retention rate that the weekly active users were coming back."}, {"id": "s122", "start": 419.44, "end": 421.16, "text": "Okay, now we're in a good place, right?"}, {"id": "s123", "start": 421.16, "end": 427.72, "text": "We have confidence on the accuracy, we have on the confidence of the basically the coverage of the product we have, and people are coming back."}, {"id": "s124", "start": 427.72, "end": 431.12, "text": "Okay, now let's go to GA, and then you launch through the GA."}, {"id": "s125", "start": 431.12, "end": 433.4, "text": "And then you have your next problem."}, {"id": "s126", "start": 433.4, "end": 438.48, "text": "So, I know that this is a technical conference, but this is also where a lot of these products fail."}, {"id": "s127", "start": 438.48, "end": 440.919, "text": "It's basically how do you drive change management?"}, {"id": "s128", "start": 440.919, "end": 445.6, "text": "So, you launch your product, you are 2 weeks into the launch, and then you are here."}, {"id": "s129", "start": 445.6, "end": 449.52, "text": "And all your management is like disappointed or frustrated."}, {"id": "s130", "start": 449.52, "end": 450.72, "text": "Why aren't people using this?"}, {"id": "s131", "start": 450.72, "end": 452.68, "text": "Why are numbers are real low?"}, {"id": "s132", "start": 452.68, "end": 453.4, "text": "Right?"}, {"id": "s133", "start": 453.4, "end": 455.12, "text": "And I show them this graph."}, {"id": "s134", "start": 455.12, "end": 460.72, "text": "I say that only 20% of your basically organization actually tried the product."}, {"id": "s135", "start": 460.72, "end": 461.919, "text": "I cannot do anything."}, {"id": "s136", "start": 461.919, "end": 466.68, "text": "This is not the product's fault if people are not even taking 5 minutes to try try the product."}, {"id": "s137", "start": 466.68, "end": 467.32, "text": "Right?"}, {"id": "s138", "start": 467.32, "end": 470.76, "text": "If they try it and if they don't come back, okay, that's my problem."}, {"id": "s139", "start": 470.76, "end": 471.0, "text": "Right?"}, {"id": "s140", "start": 471.0, "end": 473.8, "text": "But if they don't try it, then we have another problem."}, {"id": "s141", "start": 473.8, "end": 479.64, "text": "So, the first and I've been, you know, I've seen this with many many sales organization in my past life as well and so on."}, {"id": "s142", "start": 479.64, "end": 481.84, "text": "Usually this is a couple of month process."}, {"id": "s143", "start": 481.84, "end": 486.28, "text": "And then you significantly invest in basically change management, in activation."}, {"id": "s144", "start": 486.28, "end": 502.88, "text": "I will spend 60 70% of my time in sales meetings, giving demos, building dashboards, which teams adopted, you know, shaming the like the managers whose team is actually doing good, getting sponsorship from sales leaders to basically like make sure that they you know, they push their people to try these things and so on."}, {"id": "s145", "start": 502.88, "end": 511.0, "text": "And then ultimately that gets your blue line up and then your questions are start coming up and then your focus can shift into, okay, how do I drive more depth?"}, {"id": "s146", "start": 511.0, "end": 512.159, "text": "Right?"}, {"id": "s147", "start": 512.159, "end": 519.76, "text": "And I want to really really emphasize this because if you hadn't done this, we would probably be doing, you know, half of where we are today."}, {"id": "s148", "start": 519.76, "end": 521.599, "text": "So, this is a very very important part."}, {"id": "s149", "start": 521.599, "end": 532.16, "text": "And then as engineers, if you spend all your effort, you want to have a good product, make sure that the activation and the change management is like lined up, like post launch of the product as well."}, {"id": "s150", "start": 532.8389999999999, "end": 534.24, "text": "Now, you run into another issue."}, {"id": "s151", "start": 534.24, "end": 538.04, "text": "Okay, you are let's say that four to six months down the road."}, {"id": "s152", "start": 538.04, "end": 539.08, "text": "Right?"}, {"id": "s153", "start": 539.08, "end": 541.8, "text": "What happens is you successfully launched the product."}, {"id": "s154", "start": 541.8, "end": 544.12, "text": "You are first like rockstars in the company."}, {"id": "s155", "start": 544.12, "end": 544.28, "text": "Right?"}, {"id": "s156", "start": 544.28, "end": 547.32, "text": "People literally show you on the corridor like, \"Hey, your product is awesome."}, {"id": "s157", "start": 547.32, "end": 549.0, "text": "We can talk to our data now."}, {"id": "s158", "start": 549.0, "end": 555.52, "text": "We don't need to wait on the queue to like, you know, get access to like analysts to answer our questions in every 2 weeks and so on."}, {"id": "s159", "start": 555.52, "end": 556.28, "text": "Right?\""}, {"id": "s160", "start": 556.28, "end": 558.96, "text": "And after a couple of months, they start coming back to you with frustrations."}, {"id": "s161", "start": 558.96, "end": 561.2, "text": "Say, \"I cannot do this in the product anymore."}, {"id": "s162", "start": 561.2, "end": 561.52, "text": "Right?"}, {"id": "s163", "start": 561.52, "end": 565.24, "text": "I I would like to I mean, I saw this other AI product that does this and so on.\""}, {"id": "s164", "start": 565.24, "end": 568.36, "text": "This is what I call the collapsing of the wow factor."}, {"id": "s165", "start": 568.36, "end": 569.12, "text": "Okay?"}, {"id": "s166", "start": 569.12, "end": 573.48, "text": "So, initially you are cool, but then and that becomes a habit, right?"}, {"id": "s167", "start": 573.48, "end": 576.68, "text": "You basically change their habit and it becomes standard for them."}, {"id": "s168", "start": 576.68, "end": 578.88, "text": "Now, you need to raise the bar again."}, {"id": "s169", "start": 578.88, "end": 583.4, "text": "So, the journey that we usually see with the sales teams is like you start with talk to your data."}, {"id": "s170", "start": 583.4, "end": 594.16, "text": "How do we get you out of those like, you know, hundreds of dashboards situation, dependency to the analyst, and then first we'll basically like democratize the data for you so that you can basically talk to your data."}, {"id": "s171", "start": 594.16, "end": 597.56, "text": "Then the next wave comes with all the MCP connections, right?"}, {"id": "s172", "start": 597.56, "end": 599.68, "text": "All the integrations that you are building."}, {"id": "s173", "start": 599.68, "end": 602.24, "text": "Now it becomes like automate my workflows."}, {"id": "s174", "start": 602.24, "end": 612.88, "text": "We literally have now sellers who are going to use our agent basically to monitor their inbox, they monitor their Slack channels, you know, keep track of all the customer questions coming about like product questions,"}, {"id": "s175", "start": 612.88, "end": 618.84, "text": "uh use the agent to draft responses that save that in Gmail, review them afterwards like send those things out, right?"}, {"id": "s176", "start": 618.84, "end": 621.24, "text": "Or they automate their like outreach workflows and so on."}, {"id": "s177", "start": 621.24, "end": 622.12, "text": "Okay, that's great."}, {"id": "s178", "start": 622.12, "end": 624.32, "text": "Now I became an orchestrator, right?"}, {"id": "s179", "start": 624.32, "end": 627.28, "text": "I'm basically automating my workflow workflows."}, {"id": "s180", "start": 627.28, "end": 635.24, "text": "Then the next thing you see start happening is teams, they get these like, you know, tool democratization, this empowerment coming to them, right?"}, {"id": "s181", "start": 635.24, "end": 647.12, "text": "Because historically a lot of these go-to-market teams, they have been always in the backlog of someone, backlog of of an IT team or like trying to get a SaaS budget to learn and get a vendor on board to actually like enable something."}, {"id": "s182", "start": 647.12, "end": 650.64, "text": "And now all of a sudden they're able to build team skills."}, {"id": "s183", "start": 650.64, "end": 656.8, "text": "They're able to build like, you know, the custom dashboards that are basically like fully, you know, optimized for what their team needs."}, {"id": "s184", "start": 656.8, "end": 662.0, "text": "Are able to like deploy applications, automations, alerts, and things like that, right?"}, {"id": "s185", "start": 662.0, "end": 665.68, "text": "And then the comes the phase of hyper-personalization, right?"}, {"id": "s186", "start": 665.68, "end": 674.44, "text": "Everyone is able to now like get everything personalized for them, not only for themselves, but also for their customers with living context of customers, contacts, and things like that."}, {"id": "s187", "start": 674.44, "end": 684.44, "text": "I think the main message I want to give here is if you just do the first stage, and if you just wait there, you will get disrupted in a month or two,"}, {"id": "s188", "start": 684.44, "end": 685.16, "text": "right?"}, {"id": "s189", "start": 685.16, "end": 693.44, "text": "Because now you already raised their expectations, that already became a baseline, and then they will find another product that does better than you, and right now the switch is very easy."}, {"id": "s190", "start": 693.44, "end": 694.96, "text": "They're going to just switch over night."}, {"id": "s191", "start": 694.96, "end": 695.52, "text": "Okay?"}, {"id": "s192", "start": 695.52, "end": 697.04, "text": "So, you need to keep iterating."}, {"id": "s193", "start": 697.04, "end": 704.48, "text": "You need to keep that wow factor, and I cannot just rely on the fact that, you know, what I built so far is going to stay cool forever."}, {"id": "s194", "start": 705.28, "end": 709.92, "text": "And the next thing is, how do you deal with basically the changing technology?"}, {"id": "s195", "start": 709.92, "end": 712.16, "text": "So, I talked to a lot of customers."}, {"id": "s196", "start": 712.16, "end": 716.8, "text": "And then, you know, it sometimes you run into these customers, big enterprises, very big brands."}, {"id": "s197", "start": 716.8, "end": 720.32, "text": "And then they are still trying to purchase that perfect architecture."}, {"id": "s198", "start": 720.32, "end": 722.44, "text": "They're trying to like test different frameworks."}, {"id": "s199", "start": 722.44, "end": 726.76, "text": "They're trying to see how the, you know, the technology is maturing and everything and so on."}, {"id": "s200", "start": 726.76, "end": 731.6, "text": "But, the thing that they don't do is they don't build, and then they don't launch, and they don't learn."}, {"id": "s201", "start": 731.6, "end": 732.12, "text": "Right?"}, {"id": "s202", "start": 732.12, "end": 737.12, "text": "All these blue boxes that you see here, those are all the things we added after the launch."}, {"id": "s203", "start": 737.12, "end": 737.68, "text": "Right?"}, {"id": "s204", "start": 737.68, "end": 743.16, "text": "When we literally first launched the agent, it was a nine-page long agent instructions."}, {"id": "s205", "start": 743.16, "end": 745.76, "text": "It was couple of Cortex analyst tools, semantic views."}, {"id": "s206", "start": 745.76, "end": 748.92, "text": "It was a Cortex search service for our unstructured data."}, {"id": "s207", "start": 748.92, "end": 752.6, "text": "And we were managing the agent instructions versions out of a Google Doc."}, {"id": "s208", "start": 752.6, "end": 753.96, "text": "That's how we launched it."}, {"id": "s209", "start": 753.96, "end": 755.0, "text": "To 6,000 people."}, {"id": "s210", "start": 755.0, "end": 755.96, "text": "Right?"}, {"id": "s211", "start": 755.96, "end": 757.56, "text": "Now we realized, okay, it's not going to work out."}, {"id": "s212", "start": 757.56, "end": 758.72, "text": "Let's figure out CICD."}, {"id": "s213", "start": 758.72, "end": 759.44, "text": "It's not going to work out."}, {"id": "s214", "start": 759.44, "end": 764.32, "text": "Let's figure out our basically eval infrastructure with all the like the unit test, routing test, and everything."}, {"id": "s215", "start": 764.32, "end": 765.16, "text": "Right?"}, {"id": "s216", "start": 765.16, "end": 771.76, "text": "Then we start basically like coming to a point where, for example, we were creating all these like business processes and workflows."}, {"id": "s217", "start": 771.76, "end": 773.88, "text": "We couldn't fit them into the agent instructions anymore."}, {"id": "s218", "start": 773.88, "end": 775.8389999999999, "text": "And then the skills came, and we were like, \"Oh, perfect."}, {"id": "s219", "start": 775.8389999999999, "end": 777.92, "text": "Let's build a skill library.\""}, {"id": "s220", "start": 777.92, "end": 779.52, "text": "You know, then the MCPs came."}, {"id": "s221", "start": 779.52, "end": 780.2, "text": "Perfect."}, {"id": "s222", "start": 780.2, "end": 785.44, "text": "But now, like we have to put bunch of other instructions to basically orchestrate that, we hit the limits on the agent instructions."}, {"id": "s223", "start": 785.44, "end": 786.36, "text": "What do we do?"}, {"id": "s224", "start": 786.36, "end": 788.8, "text": "Okay, let's do the progressive disclosures."}, {"id": "s225", "start": 788.8, "end": 789.64, "text": "Right?"}, {"id": "s226", "start": 789.64, "end": 792.2, "text": "And then user memory comes, task scheduling comes."}, {"id": "s227", "start": 792.2, "end": 797.52, "text": "We want to go beyond the chat screen and then, you know, chat interface and start doing the Slack interface and things like that."}, {"id": "s228", "start": 797.52, "end": 806.8389999999999, "text": "If I look at the PRD and the architectural diagram we wrote in the beginning of the project, if I compare to this architecture we have now, 80% of it It match."}, {"id": "s229", "start": 806.8389999999999, "end": 807.64, "text": "Okay?"}, {"id": "s230", "start": 807.64, "end": 816.08, "text": "So, like if you look at our sprints, like maybe 60-70% of the work we are doing is adding new features, improving quality, and all kind of things."}, {"id": "s231", "start": 816.08, "end": 821.04, "text": "But 30-40% of the work is that we are constantly re-architecting with the new technology."}, {"id": "s232", "start": 821.04, "end": 828.96, "text": "So, this is a time where like you need to get your hands dirty, you need to run with the new technology, and then you shouldn't be like, you know, too much tied to your architecture."}, {"id": "s233", "start": 828.96, "end": 835.52, "text": "You should be okay to like pivot very easily, so that you can basically double on down on these like new capabilities and things like that."}, {"id": "s234", "start": 835.52, "end": 843.88, "text": "And then the longer you wait, the more, you know, you lose towards your competition, because if your competition is doing these kind of things like 3-4 months ahead of you,"}, {"id": "s235", "start": 843.88, "end": 844.24, "text": "right?"}, {"id": "s236", "start": 844.24, "end": 847.4, "text": "That means that they're also getting more customers."}, {"id": "s237", "start": 848.2, "end": 853.8, "text": "Um last thing is I would really, really recommend investing in your logs."}, {"id": "s238", "start": 853.8, "end": 854.24, "text": "Okay?"}, {"id": "s239", "start": 854.24, "end": 857.48, "text": "Because they create the basically the feedback loop."}, {"id": "s240", "start": 857.48, "end": 859.72, "text": "So, first of all, technically it's very fun."}, {"id": "s241", "start": 859.72, "end": 860.04, "text": "Okay?"}, {"id": "s242", "start": 860.04, "end": 864.12, "text": "So, you basically use LLMs to like classify your logs and things like that."}, {"id": "s243", "start": 864.12, "end": 868.24, "text": "As I said, like we have 1.2 million questions, we get 40,000 questions every week."}, {"id": "s244", "start": 868.24, "end": 872.72, "text": "It's technically very fun, you know, how you do that at scale without breaking the bank and so on."}, {"id": "s245", "start": 872.72, "end": 877.08, "text": "You know, our data scientists love working on those things, and then they really experiment with new things."}, {"id": "s246", "start": 877.08, "end": 883.8389999999999, "text": "But as a result of that, what we get is we get a very extremely detailed breakdown of topics and, you know, things that we are having."}, {"id": "s247", "start": 883.8389999999999, "end": 891.28, "text": "I'm just to showing you the top category categorization level there, but then basically we are able to track like, you know, what kind of questions they are asking."}, {"id": "s248", "start": 891.28, "end": 899.08, "text": "We are able to break down each of those categories to subcategories, you know, they are able to get like detailed example questions, this and that, and so on."}, {"id": "s249", "start": 899.08, "end": 901.16, "text": "All good, but how do we use that?"}, {"id": "s250", "start": 901.16, "end": 903.76, "text": "Then we start creating the basically the feedback loops."}, {"id": "s251", "start": 903.76, "end": 904.44, "text": "Right?"}, {"id": "s252", "start": 904.44, "end": 909.96, "text": "I know, I mean, I still interview, of course, users, but now I see in real time what my feature gaps are."}, {"id": "s253", "start": 909.96, "end": 917.8389999999999, "text": "I'm clearly seeing what people are asking and we are not able to answer or where we have a like a quality issue, where they are swearing at the agent or like at repeating their question,"}, {"id": "s254", "start": 917.8389999999999, "end": 920.04, "text": "so that we see where to improve."}, {"id": "s255", "start": 920.04, "end": 922.84, "text": "For sales enablement is a goldmine."}, {"id": "s256", "start": 922.84, "end": 925.12, "text": "Let's say that we launch a new product."}, {"id": "s257", "start": 925.12, "end": 935.36, "text": "Usually, you know, they would need to interview maybe 100 sellers a week to be able to understand like how basically the you know, the topics are changing where there's gaps in terms of like knowledge documents, battle cards."}, {"id": "s258", "start": 935.36, "end": 939.32, "text": "I see that in real time in a minute or two by just asking an element question."}, {"id": "s259", "start": 939.32, "end": 951.4, "text": "And then we can then, you know, connect to Confluence, we can connect to Jira, we can connect to Slack channels, we can ingest the PRDs, and in couple of minutes we can actually like, you know, generate battle cards, sales enablement document and then feed it back into the agent."}, {"id": "s260", "start": 951.4, "end": 951.68, "text": "Right?"}, {"id": "s261", "start": 951.68, "end": 955.44, "text": "I mean, you cannot do that kind of a like a feedback loop with humans, right?"}, {"id": "s262", "start": 955.44, "end": 958.6, "text": "So then you we can basically automate these kind of things."}, {"id": "s263", "start": 958.6, "end": 962.92, "text": "Um within the sales organization, there will be different teams that are good trying to connect each other."}, {"id": "s264", "start": 962.92, "end": 966.0, "text": "They are trying to maybe target similar accounts from different angles."}, {"id": "s265", "start": 966.0, "end": 967.48, "text": "They don't know about each other."}, {"id": "s266", "start": 967.48, "end": 968.08, "text": "We do."}, {"id": "s267", "start": 968.08, "end": 969.52, "text": "We are now able to ping them."}, {"id": "s268", "start": 969.52, "end": 971.88, "text": "And then we are able to basically do matchmaking."}, {"id": "s269", "start": 971.88, "end": 972.16, "text": "Right?"}, {"id": "s270", "start": 972.16, "end": 980.52, "text": "I'm just giving you couple of examples, but this is also one of those areas where like you start building your AI platform, you start building your architecture."}, {"id": "s271", "start": 980.52, "end": 983.16, "text": "The first features are difficult to get out."}, {"id": "s272", "start": 983.16, "end": 984.72, "text": "The next ones are easy."}, {"id": "s273", "start": 984.72, "end": 992.72, "text": "And then once you start tapping into your logs, this this like hockey stick exponential thing actually starts happening and it's magical."}, {"id": "s274", "start": 994.52, "end": 1000.32, "text": "So, if you were to take a couple of things from this talk, like quality over coverage."}, {"id": "s275", "start": 1000.32, "end": 1003.64, "text": "I'm very, very like religious about this."}, {"id": "s276", "start": 1003.64, "end": 1007.8389999999999, "text": "If you go for the coverage, you are going to shoot yourself in the foot."}, {"id": "s277", "start": 1007.8389999999999, "end": 1009.48, "text": "Okay?"}, {"id": "s278", "start": 1009.48, "end": 1010.72, "text": "Change management."}, {"id": "s279", "start": 1010.72, "end": 1013.52, "text": "A lot of engineers doesn't think about this, right?"}, {"id": "s280", "start": 1013.52, "end": 1020.4, "text": "A lot of these AI initiatives, they don't fail because there's an issue with the technology, there's an issue with that as assuming you did the first one, right?"}, {"id": "s281", "start": 1020.4, "end": 1021.24, "text": "Right?"}, {"id": "s282", "start": 1021.24, "end": 1024.319, "text": "So, they fail actually in activation."}, {"id": "s283", "start": 1024.319, "end": 1032.12, "text": "So, make sure that you have a plan for that, especially in larger organizations where we are dealing with like 6,000 go-to-market users, right?"}, {"id": "s284", "start": 1032.12, "end": 1036.6, "text": "Um again, don't forget this concept of collapsing law factor."}, {"id": "s285", "start": 1036.6, "end": 1038.36, "text": "You cannot stay where you are."}, {"id": "s286", "start": 1038.36, "end": 1040.839, "text": "You cannot just say that, \"Hey, I did an innovation."}, {"id": "s287", "start": 1040.839, "end": 1043.24, "text": "I'm going to surf that for a year.\""}, {"id": "s288", "start": 1043.24, "end": 1045.52, "text": "You know, every time people are happy, you should be paranoid."}, {"id": "s289", "start": 1045.52, "end": 1049.32, "text": "You should be like, \"Okay, what am I going to show them in a month or two now?\""}, {"id": "s290", "start": 1049.32, "end": 1052.08, "text": "How do I basically keep that excitement going on?"}, {"id": "s291", "start": 1052.08, "end": 1053.16, "text": "Right?"}, {"id": "s292", "start": 1053.16, "end": 1054.8, "text": "Build fast with today's stack."}, {"id": "s293", "start": 1054.8, "end": 1063.56, "text": "Like, don't try to invest in these like high, you know, super like plat, you know, architectures and have these like 6 9 months of long projects and things like that."}, {"id": "s294", "start": 1063.56, "end": 1067.0, "text": "How do you turn around these things in weeks, days, and so on?"}, {"id": "s295", "start": 1067.0, "end": 1070.28, "text": "And just be comfortable with the fact that you are constantly going to be re-architecting."}, {"id": "s296", "start": 1070.28, "end": 1071.96, "text": "That's fine."}, {"id": "s297", "start": 1071.96, "end": 1073.12, "text": "Right?"}, {"id": "s298", "start": 1073.12, "end": 1075.48, "text": "Just don't over-invest in the current architecture."}, {"id": "s299", "start": 1075.48, "end": 1078.84, "text": "Just make sure that you keep your like flexibility out there."}, {"id": "s300", "start": 1078.84, "end": 1080.44, "text": "Um and then the feedback loops."}, {"id": "s301", "start": 1080.44, "end": 1086.96, "text": "I think that's what kind of like gives you really that like, you know, the incremental part of like that hockey stick exponential part of the thing."}, {"id": "s302", "start": 1086.96, "end": 1094.36, "text": "Um we constantly publish like blog posts, I mean, where we kind of like try to have our, you know, learnings shared with uh our customers and so on."}, {"id": "s303", "start": 1094.36, "end": 1102.84, "text": "Like, we have blog posts on like how we do agent instructions, how we do our structured data with semantic views, you know, how we basically build our rack-based like knowledge assistants,"}, {"id": "s304", "start": 1102.84, "end": 1106.64, "text": "the non-technical side of the story, like how do you derive change management, and so on."}, {"id": "s305", "start": 1106.64, "end": 1108.56, "text": "So, feel free to check those."}, {"id": "s306", "start": 1108.56, "end": 1113.48, "text": "Um and yeah, I think that's the end of my talk."}, {"id": "s307", "start": 1113.48, "end": 1115.48, "text": "Okay."}, {"id": "s308", "start": 1116.16, "end": 1119.12, "text": "We have time for one question."}, {"id": "s309", "start": 1119.4, "end": 1122.16, "text": "Okay, there you go."}, {"id": "s310", "start": 1127.68, "end": 1128.84, "text": "Thanks for the talk."}, {"id": "s311", "start": 1128.84, "end": 1134.4, "text": "Um I don't know if you already said this, but I saw in the the titles of the articles Snowflake Intelligence."}, {"id": "s312", "start": 1134.4, "end": 1144.68, "text": "Is that an underlying context or layer that the tool or system you built was on top of, or was that the tool itself or something else?"}, {"id": "s313", "start": 1144.68, "end": 1149.72, "text": "Yeah, Snowflake Intelligence, we renamed that to Snowflake Co-work a couple of weeks ago in our summit."}, {"id": "s314", "start": 1149.72, "end": 1156.04, "text": "That's basically our no-code agent platform that we basically build have available for our business users."}, {"id": "s315", "start": 1156.04, "end": 1166.32, "text": "I mean, the advantage of that is that all of these tools are on like, you know, you know, Cortex analyst or Cortex search or Cortex sense, a lot of those things are basically comes out of the box."}, {"id": "s316", "start": 1166.32, "end": 1172.0, "text": "We made a strategic choice for our internal thing where we said that, \"Look, it is important that we bring all our data together.\""}, {"id": "s317", "start": 1172.0, "end": 1173.16, "text": "And we do that in Snowflake."}, {"id": "s318", "start": 1173.16, "end": 1179.24, "text": "We bring all the first-party, the third-party data, all the Salesforce data, everything, the call transcripts, and so on, all together."}, {"id": "s319", "start": 1179.24, "end": 1185.4, "text": "And then these agents then can basically basically inherit a lot of the role-based access controls and so on."}, {"id": "s320", "start": 1185.4, "end": 1189.88, "text": "And I literally can deploy these agents without writing a single line of code, right?"}, {"id": "s321", "start": 1189.88, "end": 1194.96, "text": "And then, you know, you don't need to worry about the UI, the chat UI comes out of the box, and so on."}, {"id": "s322", "start": 1194.96, "end": 1198.4, "text": "And then we have been the customer zero of that like internally to build this ourselves."}, {"id": "s323", "start": 1198.4, "end": 1204.44, "text": "And then, you know, our customers are able to go and then build similar things basically on Snowflake over platform as well."}, {"id": "s324", "start": 1204.44, "end": 1214.16, "text": "And it comes with the guardrails and things where you don't really need to worry about them going very, you know, crazy on, you know, what data sources to do things, and so on."}, {"id": "s325", "start": 1214.16, "end": 1216.04, "text": "So we are able to do a lot of curation."}, {"id": "s326", "start": 1216.04, "end": 1220.4, "text": "We are able to do a lot of security guardrails in there as well."}, {"id": "s327", "start": 1221.56, "end": 1223.76, "text": "Thank you."}]}, {"id": "EL123UNokkI", "title": "Building uReview, Uber’s Multi-Agent Code Review Engine — Will Bond & Ameya Ketkar, Uber", "channel": "AI Engineer", "duration": 907, "upload_date": null, "url": "https://www.youtube.com/watch?v=EL123UNokkI", "api": "/api/talks/EL123UNokkI.json", "summary_url": "/#EL123UNokkI", "transcript": {"html": "/transcripts/EL123UNokkI.html", "txt": "/transcripts/EL123UNokkI.txt", "vtt": "/transcripts/EL123UNokkI.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.6, "end": 14.6, "text": "All right, hello everyone."}, {"id": "s3", "start": 14.6, "end": 20.96, "text": "My name is Will and uh I'm here to talk to you about automated code review."}, {"id": "s4", "start": 20.96, "end": 30.0, "text": "Uh my teammate Amir and I work at Uber and we're going to be walking through U Review, a system that Uber has built uh to help increase the velocity"}, {"id": "s5", "start": 30.0, "end": 33.0, "text": "of our software engineering teams."}, {"id": "s6", "start": 33.16, "end": 46.4, "text": "Um for a little bit of context about what software engineering org at Uber looks like, we have thousands of software engineers who work across hundreds of teams uh located across 12 different sites"}, {"id": "s7", "start": 46.4, "end": 51.4, "text": "and uh they work in primarily one of six language-specific monorepos."}, {"id": "s8", "start": 51.4, "end": 58.56, "text": "As many of you have probably noticed over the past 24 months, the volume of PRs, the size of PRs has been growing."}, {"id": "s9", "start": 58.56, "end": 65.239, "text": "One of the ways that that's been exposed to us has been through uh the metric that we track of the first time to review."}, {"id": "s10", "start": 65.239, "end": 71.08, "text": "Back in 2024, we were seeing that engineers would get their first review within 3 hours."}, {"id": "s11", "start": 71.08, "end": 76.56, "text": "Now in 2026, that has grown to 9 hours uh in addition to all of the volume changes."}, {"id": "s12", "start": 76.56, "end": 81.96000000000001, "text": "So, in short, code review is now the bottleneck that we are running into."}, {"id": "s13", "start": 81.96000000000001, "end": 94.88, "text": "Um specifically around automated code review, uh there are there are various options available in the industry, uh but Uber spent the time to invest in building an in-house solution due to some of the constraints that we have."}, {"id": "s14", "start": 94.88, "end": 101.6, "text": "One of those is uh we currently use Fabricator and have for a long time and are in the process of migrating to GitHub."}, {"id": "s15", "start": 101.6, "end": 105.56, "text": "Uh most of the solutions do not provide support for Fabricator."}, {"id": "s16", "start": 105.56, "end": 112.32, "text": "Um in addition, if you were at the previous talk, you saw Uday and Adam talking about the agentic SDLC."}, {"id": "s17", "start": 112.32, "end": 120.28, "text": "A big part of what we want to do is bring a consistent code review experience to the inner loop so that our agents are getting the same code review,"}, {"id": "s18", "start": 120.28, "end": 124.479, "text": "the same rules, everything applied as our humans do."}, {"id": "s19", "start": 124.479, "end": 135.08, "text": "With hundreds of teams across the company, we can't have centralized management of our code reviews, our customizations, and our rules, and even the knowledge that goes into those code reviews."}, {"id": "s20", "start": 135.08, "end": 136.24, "text": "We need to distribute that."}, {"id": "s21", "start": 136.24, "end": 145.6, "text": "So, we have a need for plugging into existing team ownership system rather than trying to replicate that externally."}, {"id": "s22", "start": 145.6, "end": 158.44, "text": "Uh finally, with the volume of code reviews that we perform, we need the ability to take factors like the risk profile and the complexity of a code change and factor that in when deciding"}, {"id": "s23", "start": 158.44, "end": 160.44, "text": "how we're going to run a code review."}, {"id": "s24", "start": 160.44, "end": 163.12, "text": "Not all code gets the exact same review."}, {"id": "s25", "start": 163.12, "end": 164.68, "text": "And then finally, consistency."}, {"id": "s26", "start": 164.68, "end": 168.76, "text": "We need to make sure that we have security and compliance reviews run across everything."}, {"id": "s27", "start": 168.76, "end": 174.56, "text": "We can't rely on teams hoping to run the skill the code review skill that happens."}, {"id": "s28", "start": 174.56, "end": 177.0, "text": "We need reliability there."}, {"id": "s29", "start": 177.0, "end": 182.6, "text": "With all that said, I wanted to give you an overview of the architecture of what you review looks like."}, {"id": "s30", "start": 182.6, "end": 187.92, "text": "We'll talk about a couple of the big pieces, and then we're going to dive into a few focus areas."}, {"id": "s31", "start": 187.92, "end": 194.8, "text": "At the top, you'll notice that we have our code review surface areas, GitHub, Fabricator, and the agent loop."}, {"id": "s32", "start": 194.8, "end": 198.76, "text": "These all feed into you review service."}, {"id": "s33", "start": 198.76, "end": 201.519, "text": "These This takes in requests for reviews."}, {"id": "s34", "start": 201.519, "end": 205.0, "text": "It brings in feedback from users, and it routes it."}, {"id": "s35", "start": 205.0, "end": 207.239, "text": "We have a number of different generators."}, {"id": "s36", "start": 207.239, "end": 213.959, "text": "Now, these generators are tuned for different performance and cost avenues."}, {"id": "s37", "start": 213.959, "end": 223.239, "text": "There are We also have the ability to plug into third-party code review systems so that we can compare ourselves to what's available more broadly."}, {"id": "s38", "start": 223.239, "end": 231.72, "text": "Finally, with all these different generators, we might be might be duplicating comments, and we can actually create quite a high volume of comments."}, {"id": "s39", "start": 231.72, "end": 235.4, "text": "If you've ever used AI to to run a code review, you've probably seen that."}, {"id": "s40", "start": 235.4, "end": 248.04, "text": "So, we run through a number of steps in the post-processing where we both rate, categorize, filter, and deduplicate comments so that our engineers get only the highest confidence comments"}, {"id": "s41", "start": 248.04, "end": 250.88, "text": "that are actionable for them to work on."}, {"id": "s42", "start": 250.88, "end": 255.52, "text": "You'll also notice along the bottom we talk a little bit about feedback in our evaluation."}, {"id": "s43", "start": 255.52, "end": 262.519, "text": "But, with this context of the overall system, I'm now going to hand it off to Ameya to dive into our first focus area."}, {"id": "s44", "start": 264.2, "end": 265.2, "text": "Hello."}, {"id": "s45", "start": 265.2, "end": 266.28, "text": "Hello, everyone."}, {"id": "s46", "start": 266.28, "end": 273.2, "text": "So, I will be talking about how we evolve U review with observability and evaluation."}, {"id": "s47", "start": 273.52, "end": 275.72, "text": "So, U review had a very humble beginning."}, {"id": "s48", "start": 275.72, "end": 282.32, "text": "Basically, it was a single prompt that you should do logic checks per file, a simple agent which used to do thorough review."}, {"id": "s49", "start": 282.32, "end": 288.0, "text": "And we had a dispatcher to decide whether to go which generator to choose."}, {"id": "s50", "start": 288.0, "end": 291.84000000000003, "text": "Even what we used to collect as observability was very surface-level."}, {"id": "s51", "start": 291.84000000000003, "end": 293.24, "text": "We used to collect cost."}, {"id": "s52", "start": 293.24, "end": 297.68, "text": "We used to run an NPS survey, have Google Forms being filled, Slack support."}, {"id": "s53", "start": 297.68, "end": 303.28, "text": "And with all of this, we saw that our quality to cost ratio was like all over the place."}, {"id": "s54", "start": 303.28, "end": 311.2, "text": "Like, our goal is to be in the second quadrant, that is the top left quadrant, but you can see we were all over the place."}, {"id": "s55", "start": 311.2, "end": 315.56, "text": "Then what we did is that we started collecting more data."}, {"id": "s56", "start": 315.56, "end": 328.08, "text": "So, we started collecting the sentiments of the replies that were made to the U review that the U review uh call you know, the U review agent got from the developers."}, {"id": "s57", "start": 328.08, "end": 330.6, "text": "So, we categorized them into positive, negative."}, {"id": "s58", "start": 330.6, "end": 339.12, "text": "We classified them into various categories, and we found a bunch a lot of classes of bugs and issues that we could actually solve."}, {"id": "s59", "start": 339.12, "end": 347.56, "text": "And with that, we improved the system, and we were able to move a large number of PRs to a high quality to cost ratio."}, {"id": "s60", "start": 347.56, "end": 351.24, "text": "Um but, we still felt that this was not enough."}, {"id": "s61", "start": 351.24, "end": 354.48, "text": "We need to know more of how the review is done."}, {"id": "s62", "start": 354.48, "end": 357.04, "text": "So we started tracking things like address rate."}, {"id": "s63", "start": 357.04, "end": 363.8, "text": "So basically when a U review comment is made, does the developer go and actually address the comment?"}, {"id": "s64", "start": 363.8, "end": 365.64, "text": "We started tracking that."}, {"id": "s65", "start": 365.64, "end": 376.84, "text": "And then we also started doing more like a runtime profile, which is like the agent trajectory, which told us why the agent is doing what it what it did."}, {"id": "s66", "start": 376.84, "end": 379.76, "text": "We get to know what tools calls it made."}, {"id": "s67", "start": 379.76, "end": 382.08, "text": "We get to know what thinking process it had."}, {"id": "s68", "start": 382.08, "end": 395.52, "text": "And then with that insight, we were able to actually tune our runtime, tune our performance such that the agent could very quickly give us high-quality results at a low cost."}, {"id": "s69", "start": 395.52, "end": 400.0, "text": "One of the biggest learnings in this process was like the model doesn't know that it's wrong."}, {"id": "s70", "start": 400.0, "end": 405.24, "text": "It always confidently says 100% sure that yeah, this is the review for your code."}, {"id": "s71", "start": 405.24, "end": 405.8, "text": "Go ahead."}, {"id": "s72", "start": 405.8, "end": 417.4, "text": "But we saw that no, it actually needs a lot of guidance from the teams because each team has its own style guide, its own patterns or like anti-patterns that they want to look for."}, {"id": "s73", "start": 417.4, "end": 420.44, "text": "So that all should be like baked into the agent."}, {"id": "s74", "start": 420.44, "end": 424.32, "text": "And we also realized that we need to have guardrails for the agent."}, {"id": "s75", "start": 424.32, "end": 427.64, "text": "So we need to tell the agent what not to waste turns doing."}, {"id": "s76", "start": 427.64, "end": 432.919, "text": "Like code review is something that has to happen in like a specific time span."}, {"id": "s77", "start": 432.919, "end": 440.76, "text": "And then if it starts spending time doing things that it should not be doing, uh leads to a bad quality code review."}, {"id": "s78", "start": 440.76, "end": 446.16, "text": "Uh second focus area for U review has been nations."}, {"id": "s79", "start": 446.16, "end": 457.28, "text": "We We went very deep on team customizations because as we'll presented that we have hundreds of teams and everyone has like their own way or their own thing for code review."}, {"id": "s80", "start": 457.28, "end": 459.44, "text": "So our review stack is pretty straightforward."}, {"id": "s81", "start": 459.44, "end": 463.2, "text": "We have single-file reviewers and multi-file reviewers."}, {"id": "s82", "start": 463.2, "end": 469.64, "text": "Uh, we basically do a general purpose \"Hey, find me all logic bugs per file\" uh, kind of a review."}, {"id": "s83", "start": 469.64, "end": 474.04, "text": "And uh, then we also do a deep review because we have like six mono repos."}, {"id": "s84", "start": 474.04, "end": 482.4, "text": "So, all these mono repos have their own anti-pattern style guides and all baked into this agent review which does have a nice multi-file review."}, {"id": "s85", "start": 482.4, "end": 486.64, "text": "But, then we extended it further uh, basically to AI linters."}, {"id": "s86", "start": 486.64, "end": 500.8, "text": "These are basically few shot uh, AI problem uh, or like a few shots uh, system where uh, developers can basically kind of deterministically get more context and then run rules"}, {"id": "s87", "start": 500.8, "end": 506.8, "text": "with that context and like a file and find some uh, systematic and mechanical issues."}, {"id": "s88", "start": 506.8, "end": 518.08, "text": "And finally uh, the most powerful thing is the custom agent uh, where the teams could basically define their own custom agent, link it to like a knowledge base, uh, link it to their past PRs,"}, {"id": "s89", "start": 518.08, "end": 521.919, "text": "have like a skill to do the review, and so on."}, {"id": "s90", "start": 521.919, "end": 534.12, "text": "But, uh, all of this was not simple because we had to actually uh, piggyback on our uh, ownership model which is at Uber uh, so that we can like very logically roll out to all the teams."}, {"id": "s91", "start": 534.12, "end": 537.96, "text": "Uh, we had to basically do a uh, what do you say?"}, {"id": "s92", "start": 537.96, "end": 545.92, "text": "Co-locate the customizations next to where the developers write their code so that they can like quickly uh, keep updating these customizations."}, {"id": "s93", "start": 545.92, "end": 556.48, "text": "We had to implement a smart deterministic uh, routing so that we could route which team gets what kind of review with which model, what kind of generators, and so on."}, {"id": "s94", "start": 556.48, "end": 568.04, "text": "And finally uh, the hard thing was like we had to actually surface all of this observability that I talked before, like the agent trajectory, addressal rate, uh, sentiment analysis back to the teams."}, {"id": "s95", "start": 568.04, "end": 577.04, "text": "So, so that the teams could actually understand that \"Oh, I wrote this rule, but maybe not a lot of developers are liking it in my team, so let me go and update it.\""}, {"id": "s96", "start": 577.04, "end": 583.68, "text": "And then we had to give Bubble up that kind of observability to all the people who are contributing to the platform."}, {"id": "s97", "start": 583.68, "end": 589.0, "text": "Uh one thing that we learned is that actually writing the skill was very easy."}, {"id": "s98", "start": 589.0, "end": 598.04, "text": "Like teams just very quickly wrote a skill by asking Claude to write one, go over my previous PR reviews and write me a skill."}, {"id": "s99", "start": 598.04, "end": 604.32, "text": "But the hard part was how to run these skills at scale with consistent quality and low cost."}, {"id": "s100", "start": 604.32, "end": 612.12, "text": "And that required a lot of iterations not only from the U-Review team side, but also like for each team who was trying to write these rules."}, {"id": "s101", "start": 612.12, "end": 620.68, "text": "Uh in results, we basically uh see that, you know, uh U-Review does like around 25,000 comments a week."}, {"id": "s102", "start": 620.68, "end": 624.48, "text": "And uh we get 10% of them actually get some feedback."}, {"id": "s103", "start": 624.48, "end": 628.28, "text": "And only 4% of the PRs actually get some negative feedback."}, {"id": "s104", "start": 628.28, "end": 643.52, "text": "Uh we also saw that um the overall addressal rate was uh around 67% and almost three quarters of the high severity issues uh were usually addressed by the developers, which shows that U-Review actually"}, {"id": "s105", "start": 643.52, "end": 646.68, "text": "adds some value to the entire development life cycle."}, {"id": "s106", "start": 646.68, "end": 657.16, "text": "And then uh with all the observability and uh evals that I showed that I went through, we saw that against like a very naive implementation, our costs were down by 60%"}, {"id": "s107", "start": 657.16, "end": 662.16, "text": "and our quality and our accuracy was up by uh around 70%."}, {"id": "s108", "start": 662.16, "end": 670.08, "text": "Uh for a last focus area, I'll give the mic back to Will and he will go over the inner versus outer loop."}, {"id": "s109", "start": 671.6, "end": 671.96, "text": "Awesome."}, {"id": "s110", "start": 671.96, "end": 684.08, "text": "So, now that we've talked about uh some of the details of actually implementing high-quality reviews, it kind of brings us to the last area, which is where we start talking about"}, {"id": "s111", "start": 684.08, "end": 685.64, "text": "where things are going, right?"}, {"id": "s112", "start": 685.64, "end": 695.4, "text": "With moving to the Agentech SDLC, we're moving software into a model where engineers are interacting with the code less."}, {"id": "s113", "start": 695.4, "end": 698.84, "text": "They're often times not as involved in authoring the code."}, {"id": "s114", "start": 698.84, "end": 712.68, "text": "Uh currently, we still have uh humans approving the code, uh but we see a a short path in the near future to a percentage of our code landing automatically, having automatic approvals,"}, {"id": "s115", "start": 712.68, "end": 713.16, "text": "right?"}, {"id": "s116", "start": 713.16, "end": 716.4, "text": "The various parts of the industry are already moving there."}, {"id": "s117", "start": 716.4, "end": 730.04, "text": "Um Part of the way along the process was figuring out by having our single code review platform, what did we need to tune for the various audiences that are actually getting these code reviews?"}, {"id": "s118", "start": 730.04, "end": 734.48, "text": "Um you know, the interface, that's one area that's sort of intuitive there."}, {"id": "s119", "start": 734.48, "end": 738.4, "text": "Uh one thing that might be less intuitive is around accuracy."}, {"id": "s120", "start": 738.4, "end": 753.84, "text": "Uh with the inner loop, our accuracy needs actually need to go up, or else we can result in uh dealing with cavitation of an agent where it fixes something, goes back, gets another code review, and has to kind of like fix backwards because the quality of the comment"}, {"id": "s121", "start": 753.84, "end": 755.0, "text": "was low."}, {"id": "s122", "start": 755.0, "end": 767.04, "text": "Um The one of the other interesting things is agents are more than happy to go through and fix 100 nits on a pull request where your engineers really get frustrated in situations like that."}, {"id": "s123", "start": 767.04, "end": 773.32, "text": "Um but probably the most interesting aspect of this transition is the feedback."}, {"id": "s124", "start": 773.32, "end": 788.08, "text": "As you can see, quite a bit of what went into getting high-quality code reviews at Uber was bringing the human feedback into the system and using that to figure out how to tune our prompts, how to tune our agents."}, {"id": "s125", "start": 788.08, "end": 802.8, "text": "Uh and so as we move to a model where humans are less in the loop, where software engineering is moving to an agentic model, we're effectively going to a place where we're starting to talk about"}, {"id": "s126", "start": 802.8, "end": 804.56, "text": "are we going to kill the outer loop?"}, {"id": "s127", "start": 804.56, "end": 809.4, "text": "Is the human engineer not going to be involved in the code review."}, {"id": "s128", "start": 809.4, "end": 811.56, "text": "Some people are already here."}, {"id": "s129", "start": 811.56, "end": 819.24, "text": "Now, with the feedback taken into consideration, you start wondering, all right, what could this result in, right?"}, {"id": "s130", "start": 819.24, "end": 823.76, "text": "I'll let your imagination go there in terms of quality degradation, slop, and so forth."}, {"id": "s131", "start": 823.76, "end": 834.2, "text": "But, rather than killing the outer loop, I think that we believe and the industry has just started to really kind of coalesce on this idea that we're really expanding"}, {"id": "s132", "start": 834.2, "end": 835.0, "text": "the outer loop."}, {"id": "s133", "start": 835.0, "end": 843.56, "text": "Rather than removing humans from the code review process, we are moving their responsibilities up a layer."}, {"id": "s134", "start": 843.56, "end": 849.4, "text": "Rather than them dealing with the details of the implementation, the agent is great at writing the software."}, {"id": "s135", "start": 849.4, "end": 854.24, "text": "The agent is getting much, much better at reviewing the software as a human would."}, {"id": "s136", "start": 854.24, "end": 857.64, "text": "But now, as software engineers, we still are going to have an outer loop."}, {"id": "s137", "start": 857.64, "end": 859.4, "text": "It's just going to look a little different."}, {"id": "s138", "start": 859.4, "end": 868.6, "text": "Instead of you worrying about the optimization of the performance and the API compatibility, you're going to be thinking more about architecture in your code reviews."}, {"id": "s139", "start": 868.6, "end": 874.44, "text": "You're going to have time to focus on the domain expertise that you have and product thinking."}, {"id": "s140", "start": 874.44, "end": 886.04, "text": "So, we believe that as we adopt this automated uh code review, this is going to be the result of how our engineers are interacting with the system and guiding it."}, {"id": "s141", "start": 887.36, "end": 888.12, "text": "And that's it."}, {"id": "s142", "start": 888.12, "end": 889.44, "text": "Thank you so much for coming."}, {"id": "s143", "start": 889.44, "end": 891.44, "text": "Thanks."}]}, {"id": "FLUoowDJg4I", "title": "How I automate my own job at Hugging Face using agents — Niels Rogge, Hugging Face", "channel": "AI Engineer", "duration": 1237, "upload_date": null, "url": "https://www.youtube.com/watch?v=FLUoowDJg4I", "api": "/api/talks/FLUoowDJg4I.json", "summary_url": "/#FLUoowDJg4I", "transcript": {"html": "/transcripts/FLUoowDJg4I.html", "txt": "/transcripts/FLUoowDJg4I.txt", "vtt": "/transcripts/FLUoowDJg4I.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 16.96, "end": 17.88, "text": "Okay."}, {"id": "s3", "start": 17.88, "end": 19.24, "text": "All right."}, {"id": "s4", "start": 19.24, "end": 20.36, "text": "Hello everyone."}, {"id": "s5", "start": 20.36, "end": 21.8, "text": "Thanks for coming by."}, {"id": "s6", "start": 21.8, "end": 28.08, "text": "Today I'll talk about how I automate my own job at Hugging Face using agents."}, {"id": "s7", "start": 28.28, "end": 29.72, "text": "Um short introduction."}, {"id": "s8", "start": 29.72, "end": 34.64, "text": "I'm just uh Niels from Belgium, the land of beer, fries, and chocolate."}, {"id": "s9", "start": 34.64, "end": 40.88, "text": "I studied at KU Leuven, and I'm a machine learning engineer at Hugging Face for 5 years now."}, {"id": "s10", "start": 42.08, "end": 47.6, "text": "Uh today I'll talk about the community science team at Hugging Face, which is the team I'm part of."}, {"id": "s11", "start": 47.6, "end": 52.28, "text": "Uh then I'll talk about how I automate large parts of the community science team."}, {"id": "s12", "start": 52.28, "end": 58.24, "text": "And finally, I'll also discuss some other efforts uh that we do at Hugging Face."}, {"id": "s13", "start": 58.24, "end": 62.0, "text": "So, let's start with the community science team at Hugging Face."}, {"id": "s14", "start": 62.0, "end": 69.68, "text": "So, basically, this started when I was sent I was seeing like trending research uh passing by on GitHub."}, {"id": "s15", "start": 69.68, "end": 75.88, "text": "And a lot of times when I saw new interesting work, um the weights were not available on Hugging Face, sadly."}, {"id": "s16", "start": 75.88, "end": 80.92, "text": "Like, researchers use either Google Drive or they use GitHub releases."}, {"id": "s17", "start": 80.92, "end": 86.92, "text": "They use Dropbox, they use Zenodo, or other servers to put their um artifacts on."}, {"id": "s18", "start": 86.92, "end": 89.64, "text": "And this hurts uh discoverability of their work."}, {"id": "s19", "start": 89.64, "end": 93.56, "text": "It's like not easily uh visible or discoverable."}, {"id": "s20", "start": 93.56, "end": 99.03999999999999, "text": "And when I then open a GitHub issue to say like, \"Actually, you could put your weights on Hugging Face for free.\""}, {"id": "s21", "start": 99.03999999999999, "end": 106.36, "text": "Most of the time, people replied to me like, \"Yeah, migrating the weights uh from Google Drive to Hugging Face actually makes perfect sense.\""}, {"id": "s22", "start": 106.36, "end": 112.56, "text": "So, yeah, the community science team can also uh be described as the Google Drive to the hub team."}, {"id": "s23", "start": 112.56, "end": 113.32, "text": "Um why?"}, {"id": "s24", "start": 113.32, "end": 119.52000000000001, "text": "Because on Hugging Face, we have these paper pages, uh and every single paper is from archive."}, {"id": "s25", "start": 119.52000000000001, "end": 125.64, "text": "And then on the right side, you can basically list the linked artifacts, like the the linked models or data sets."}, {"id": "s26", "start": 125.64, "end": 131.64, "text": "So, people can easily reproduce your paper or find the models or data sets."}, {"id": "s27", "start": 131.64, "end": 134.0, "text": "So, yeah, you can see them on the right side."}, {"id": "s28", "start": 134.0, "end": 145.24, "text": "Um this improves the discoverability of your work because we have these metadata tags or filters on the app, so you can easily find, for example, depth estimation model, an LLM if you're interested."}, {"id": "s29", "start": 145.24, "end": 146.76, "text": "You can find them by language."}, {"id": "s30", "start": 146.76, "end": 149.84, "text": "You can tag them with the library they are compatible with and so on."}, {"id": "s31", "start": 149.84, "end": 152.88, "text": "So, this improves the discoverability of your work."}, {"id": "s32", "start": 152.88, "end": 159.92000000000002, "text": "So, these are, yeah, the metadata tags that you can add to every single model on Hugging Face or every single data set."}, {"id": "s33", "start": 159.92000000000002, "end": 168.36, "text": "So, yeah, this is like the main problem that we saw, like, lots of people, lots of researchers are like using third-party services to publish their work."}, {"id": "s34", "start": 168.36, "end": 173.2, "text": "We have the Hugging Face platform, which is like a centralized place where people can find machine learning artifacts."}, {"id": "s35", "start": 173.2, "end": 177.68, "text": "It also improves with documentation because you can add a model card or a data set card."}, {"id": "s36", "start": 177.68, "end": 182.6, "text": "We have tooling, so you can easily upload or download stuff from Hugging Face."}, {"id": "s37", "start": 182.6, "end": 186.28, "text": "And it might also help reach researchers in promoting their work."}, {"id": "s38", "start": 186.28, "end": 192.72, "text": "So, it's basically a win-win both for researchers and then other people using the research."}, {"id": "s39", "start": 192.84, "end": 195.76, "text": "So, yeah, these are the typical GitHub issues that I was opening."}, {"id": "s40", "start": 195.76, "end": 197.28, "text": "I always had like the same template."}, {"id": "s41", "start": 197.28, "end": 200.4, "text": "I just asked, \"Could you please release this checkpoint on Hugging Face?"}, {"id": "s42", "start": 200.4, "end": 203.64, "text": "Could you please release this data set on Hugging Face?\""}, {"id": "s43", "start": 203.64, "end": 203.707, "text": "And"}, {"id": "s44", "start": 203.707, "end": 203.8, "text": "[snorts]"}, {"id": "s45", "start": 203.8, "end": 213.16, "text": "then I also opened PRs, pull requests on Hugging Face to add data set cards or model cards to improve the documentation of those artifacts."}, {"id": "s46", "start": 213.16, "end": 215.44, "text": "But, there's a problem."}, {"id": "s47", "start": 215.44, "end": 225.16, "text": "It's not really scalable for me to open all these GitHub issues or pull requests because every single day there are like hundreds of research papers coming out on archive, especially now with AI boom."}, {"id": "s48", "start": 225.16, "end": 231.12, "text": "Um yeah, also NeurIPS, for example, a major AI conference, they are seeing a massive amount of papers."}, {"id": "s49", "start": 231.12, "end": 232.84, "text": "So, can we automate this?"}, {"id": "s50", "start": 232.84, "end": 236.72, "text": "Can we scale the community science team with agents?"}, {"id": "s51", "start": 236.72, "end": 239.28, "text": "So, that's the second part of my talk."}, {"id": "s52", "start": 239.28, "end": 245.68, "text": "How can we, yeah, scale this uh to a massive amount of research papers?"}, {"id": "s53", "start": 245.8, "end": 247.64, "text": "So, the idea is pretty simple."}, {"id": "s54", "start": 247.64, "end": 257.76, "text": "Uh we should have an AI agent which can help me do this outreach to all these researchers which publish uh models or data sets uh as part of their research work."}, {"id": "s55", "start": 257.76, "end": 261.6, "text": "And then, yeah, do the outreach in an automated way."}, {"id": "s56", "start": 261.6, "end": 263.72, "text": "So, this is the typical workflow that I was following."}, {"id": "s57", "start": 263.72, "end": 271.6, "text": "So, basically, whenever I saw a research paper, I first tried to find the GitHub URL uh of that paper, if it's available."}, {"id": "s58", "start": 271.6, "end": 275.68, "text": "Then, I I read the readme of that GitHub file."}, {"id": "s59", "start": 275.68, "end": 280.76, "text": "And then, I basically check if there's anything new interesting to be shared on Hugging Face."}, {"id": "s60", "start": 280.76, "end": 282.96, "text": "Uh it could be that it's on Hugging Face already."}, {"id": "s61", "start": 282.96, "end": 290.76, "text": "In that case, I check whether the model cards or data set cards already properly uh present, whether the metadata tags, for example, are there."}, {"id": "s62", "start": 290.76, "end": 294.28, "text": "If uh not, then I will might open a pull request."}, {"id": "s63", "start": 294.28, "end": 298.52, "text": "Otherwise, if the artifacts are not yet on Hugging Face, I open a GitHub issue."}, {"id": "s64", "start": 298.52, "end": 300.72, "text": "And then, finally, I also follow up with the author."}, {"id": "s65", "start": 300.72, "end": 305.48, "text": "So, that's kind of the workflow that I had to automate uh with agents."}, {"id": "s66", "start": 305.48, "end": 307.6, "text": "And there are several ways to solve this."}, {"id": "s67", "start": 307.6, "end": 310.6, "text": "Uh you could uh go with a workflow."}, {"id": "s68", "start": 310.6, "end": 316.52, "text": "Uh these pictures are, by the way, taken from the blog post building effective agents by Anthropic, which is a really great read."}, {"id": "s69", "start": 316.52, "end": 317.48, "text": "Uh read."}, {"id": "s70", "start": 317.48, "end": 321.68, "text": "Um so, on the left side, you see, yeah, a workflow which is more deterministic."}, {"id": "s71", "start": 321.68, "end": 328.2, "text": "You basically use LLM APIs within steps of a predefined path or pipeline, uh which is more predictable."}, {"id": "s72", "start": 328.2, "end": 329.36, "text": "It's more deterministic."}, {"id": "s73", "start": 329.36, "end": 330.96, "text": "You have more control over it."}, {"id": "s74", "start": 330.96, "end": 333.15999999999997, "text": "Of course, it's less flex- flexible."}, {"id": "s75", "start": 333.15999999999997, "end": 344.919, "text": "And then, on the other hand, you could have a fully fledged auto- autonomous agent, which is an LLM in a loop that calls tools until it's done, which is more flexible, but also less uh predictable."}, {"id": "s76", "start": 344.919, "end": 348.68, "text": "Uh Uh, at the time, yeah, of course, it doesn't have to be a binary story."}, {"id": "s77", "start": 348.68, "end": 355.48, "text": "You can have a workflow on one hand, you can have a fully autonomous agent on the other hand, but you you could of course also mix and match these type of things"}, {"id": "s78", "start": 355.48, "end": 357.64, "text": "uh, for your use case."}, {"id": "s79", "start": 357.64, "end": 362.12, "text": "In my case, I went for um, a pretty deterministic workflow."}, {"id": "s80", "start": 362.12, "end": 362.64, "text": "Uh, why?"}, {"id": "s81", "start": 362.64, "end": 370.6, "text": "Because at the time that I was building this, this was in 2024, was at the time that Anthropic uh, wrote their blog post building effective agents."}, {"id": "s82", "start": 370.6, "end": 375.68, "text": "And there they actually said, \"Try to avoid building agents if you really don't have to."}, {"id": "s83", "start": 375.68, "end": 379.56, "text": "Start simple, start with a single LLM API."}, {"id": "s84", "start": 379.56, "end": 380.88, "text": "Uh, avoid frameworks.\""}, {"id": "s85", "start": 380.88, "end": 383.52, "text": "Uh, and actually I think those were great tips."}, {"id": "s86", "start": 383.52, "end": 390.4, "text": "So, at the time I started building a workflow which basically replicated the workflow that I was doing when I was doing this outreach."}, {"id": "s87", "start": 390.4, "end": 392.36, "text": "So, yeah, this is the whole uh, pipeline."}, {"id": "s88", "start": 392.36, "end": 395.56, "text": "This is created using the Excalidraw MCP server in Cursor."}, {"id": "s89", "start": 395.56, "end": 398.52, "text": "It's pretty nice to create a visualization of your code."}, {"id": "s90", "start": 398.52, "end": 405.44, "text": "Uh, I'm not going to go into the details, but basically it just replicates um, the workflow that I was doing when doing the outreach."}, {"id": "s91", "start": 405.44, "end": 412.0, "text": "And I use LLM APIs in then each of the steps without any framework, without any agent framework."}, {"id": "s92", "start": 412.0, "end": 418.6, "text": "So, it made it quite uh, deterministic and I had a lot of control over uh, how this goes."}, {"id": "s93", "start": 418.88, "end": 423.36, "text": "Um, in terms of deployment of this uh, workflow, it's a simple cron job."}, {"id": "s94", "start": 423.36, "end": 426.0, "text": "So, cron is just something that runs regularly."}, {"id": "s95", "start": 426.0, "end": 428.68, "text": "In my case, I run it once every night."}, {"id": "s96", "start": 428.68, "end": 438.6, "text": "So, when I'm sleeping, there is this agent, but technically it's just a cron job, a Python script with an LLM API, which is going to read all these hundreds of archive papers,"}, {"id": "s97", "start": 438.6, "end": 443.84, "text": "uh, and then it might open GitHub issues or it might open pull requests on Hugging Face."}, {"id": "s98", "start": 443.84, "end": 445.56, "text": "I'm using GitHub Actions for this."}, {"id": "s99", "start": 445.56, "end": 453.6, "text": "Uh, I saw this very nice blog post free cron jobs with GitHub Actions, and actually it's probably the best entry point if you want to set up cron jobs,"}, {"id": "s100", "start": 453.6, "end": 460.04, "text": "um, because GitHub has a pretty generous tier if you want to get started with like putting simple cron jobs uh, up there."}, {"id": "s101", "start": 460.04, "end": 465.6, "text": "And yeah, it makes it really easy for me in the UI to manage all these cron jobs."}, {"id": "s102", "start": 465.6, "end": 472.44, "text": "So yeah, every night I have hundreds of uh GitHub issues being created."}, {"id": "s103", "start": 472.52, "end": 476.24, "text": "For the tracing part, um I'm using LangFuse."}, {"id": "s104", "start": 476.24, "end": 478.84000000000003, "text": "Uh yeah, LangFuse also has a a booth here."}, {"id": "s105", "start": 478.84000000000003, "end": 481.92, "text": "Um LangFuse is pretty great."}, {"id": "s106", "start": 481.92, "end": 490.92, "text": "Um I use it mostly for the tracing part, the observability part, just to see what is the LLM doing, what are the inputs, what are the outputs, what are the prompts,"}, {"id": "s107", "start": 490.92, "end": 494.36, "text": "how much does it cost, latency, and so on."}, {"id": "s108", "start": 494.36, "end": 498.56, "text": "Um so yeah, uh I definitely recommend it."}, {"id": "s109", "start": 498.56, "end": 510.52, "text": "Um but yeah, as my agents are opening so many GitHub issues every night, I then end up with a massive amount of unread GitHub notifications because people reply to those GitHub issues."}, {"id": "s110", "start": 510.52, "end": 514.039, "text": "And that's a lot of work to then reply to all of those issues."}, {"id": "s111", "start": 514.039, "end": 517.44, "text": "It's kind of like going through your mailbox."}, {"id": "s112", "start": 517.44, "end": 524.12, "text": "So you could wonder, could we also um automate the follow-up to those GitHub uh issues?"}, {"id": "s113", "start": 524.12, "end": 531.6, "text": "Because initially I was still the GitHub issue creation was done uh by an agent, but I was still the one involved in then doing the follow-up."}, {"id": "s114", "start": 531.6, "end": 537.24, "text": "Uh now a few months ago I also automated the the follow-up to those GitHub issues."}, {"id": "s115", "start": 537.24, "end": 539.72, "text": "Again, you could think, how should you solve this?"}, {"id": "s116", "start": 539.72, "end": 548.68, "text": "Should you go for a more deterministic workflow or can you go for a fully autonomous agents, uh an LLM in a loop which runs with some tools and skills?"}, {"id": "s117", "start": 548.68, "end": 553.92, "text": "Um well, here I went for kind of a fully autonomous agents, uh so it's kind of flexible."}, {"id": "s118", "start": 553.92, "end": 557.72, "text": "It's a bit less predictable, but it works quite well."}, {"id": "s119", "start": 557.72, "end": 568.32, "text": "Um I went for this because uh in November of last year at AI Engineer in New York, there was a pretty nice workshop by Anthropic on the Claude agent SDK."}, {"id": "s120", "start": 568.32, "end": 572.28, "text": "And there they were actually saying that agents might be better than workflows."}, {"id": "s121", "start": 572.28, "end": 582.6, "text": "So they So they were kind of contradicting themselves, but they he said that models have become so good that you might actually now start to work with fully autonomous agents rather than a workflow."}, {"id": "s122", "start": 582.6, "end": 589.88, "text": "So this is why I went with this approach and I actually am using the Claude agents SDK for this use case."}, {"id": "s123", "start": 589.88, "end": 594.04, "text": "Uh there was another pretty nice talk by Cursor also at AI Engineer."}, {"id": "s124", "start": 594.04, "end": 598.32, "text": "This was in the European version in London a few months ago."}, {"id": "s125", "start": 598.32, "end": 607.0, "text": "There they talked about how they replaced 12,000 lines of custom code, pretty sophisticated workflow, with a very simple 200 lines of code skill."}, {"id": "s126", "start": 607.0, "end": 618.64, "text": "Uh actually it's pretty similar for me like I can replace a lot of custom codes, thousands of lines of code, with nowadays just a simple agent with maybe a CLI"}, {"id": "s127", "start": 618.64, "end": 625.12, "text": "as a tool and a skill and that's it cuz the models have become so good."}, {"id": "s128", "start": 625.12, "end": 630.2, "text": "So yeah, in terms of the architecture, this is a bit what it looks like."}, {"id": "s129", "start": 630.2, "end": 637.2, "text": "Um so it's actually just the Claude agents SDK which is, I would say, a pretty good Python SDK for building an agent."}, {"id": "s130", "start": 637.2, "end": 645.76, "text": "Initially I was using the Claude models, but then I since actually this week I'm using the GLM 5.2 model via Hugging Face inference providers."}, {"id": "s131", "start": 645.76, "end": 655.12, "text": "So Hugging Face does offer a service which basically wraps a lot of inference providers like Together AI, Fireworks, Cerebras and so on."}, {"id": "s132", "start": 655.12, "end": 658.8389999999999, "text": "So you can use a lot of open models in a unified way."}, {"id": "s133", "start": 658.8389999999999, "end": 665.4, "text": "It's OpenAI compatible or Anthropic compatible and then I deploy this on Modal."}, {"id": "s134", "start": 665.4, "end": 668.839, "text": "Modal is also present here today."}, {"id": "s135", "start": 668.839, "end": 678.36, "text": "And it's mainly using Bash as a tool so the terminal to basically do Hugging Face commands because it's using the Hugging Face CLI quite a bit."}, {"id": "s136", "start": 678.36, "end": 682.88, "text": "So I combine it with the Hugging Face CLI skill which is actually all it needs."}, {"id": "s137", "start": 682.88, "end": 687.8, "text": "And then it might comment something on GitHub as a follow-up."}, {"id": "s138", "start": 687.8, "end": 695.96, "text": "And it also actually does the posting on Slack because eventually I also want to see the final results on our Slack channel uh from Hugging Face."}, {"id": "s139", "start": 695.96, "end": 704.0, "text": "So yeah, given that there's also a lot of hype on GLM 5.2 recently, for example, Cursor uh saw great performance on their Cursor bench."}, {"id": "s140", "start": 704.0, "end": 709.24, "text": "Post-training bench is another one uh where it actually beats Opus 4.8 and it's cheaper."}, {"id": "s141", "start": 709.24, "end": 715.8, "text": "So, yeah, there's no reason not to use GLM 5.2 uh especially given that I work at Hugging Face."}, {"id": "s142", "start": 715.8, "end": 719.76, "text": "Um for the deployment, as I said before, I use Modal."}, {"id": "s143", "start": 719.76, "end": 722.76, "text": "It's pretty great if you want to deploy agents."}, {"id": "s144", "start": 722.76, "end": 725.76, "text": "Uh in my case, I'm using the batch processing feature."}, {"id": "s145", "start": 725.76, "end": 729.4, "text": "So, they allow you to spin up a massive amount of containers all in parallel."}, {"id": "s146", "start": 729.4, "end": 735.32, "text": "Every single container is basically one agent loop that is processing one GitHub issue."}, {"id": "s147", "start": 735.32, "end": 737.96, "text": "Uh it's super easy to use, I have to say."}, {"id": "s148", "start": 737.96, "end": 741.36, "text": "Um and the startups are also pretty fast."}, {"id": "s149", "start": 741.36, "end": 749.28, "text": "So, I definitely recommend it if you're building uh agents that are like, for example, running in the background, running overnight, for example."}, {"id": "s150", "start": 749.28, "end": 755.72, "text": "Um and then the way I invoke it, yeah, technically I could also just uh deploy this as a cron job."}, {"id": "s151", "start": 755.72, "end": 758.0, "text": "Modal, for example, has support for this."}, {"id": "s152", "start": 758.0, "end": 764.24, "text": "But typically, the follow-up on the GitHub issues, I still do that actually manually by invoking it as a skill."}, {"id": "s153", "start": 764.24, "end": 767.68, "text": "So, I created a skill for this in Cursor."}, {"id": "s154", "start": 767.68, "end": 770.48, "text": "Uh I call it process under it Modal."}, {"id": "s155", "start": 770.48, "end": 780.68, "text": "And then what it's going to do is it's actually going to invoke an agent, in this case, Composer 2.5, which is like the agent that I'm mostly using in Cursor, which is again going to invoke all the other agents."}, {"id": "s156", "start": 780.68, "end": 784.12, "text": "So, that's this is kind of the loop that people are talking about."}, {"id": "s157", "start": 784.12, "end": 789.8, "text": "And then finally, it's going to post uh all the results on our Slack channel."}, {"id": "s158", "start": 789.8, "end": 792.52, "text": "Uh so yeah, and this is actually what it just posts."}, {"id": "s159", "start": 792.52, "end": 803.88, "text": "So, what it does is it basically just posts a huge amount of Hugging Face papers, uh which are these research papers which people can uh make available on Hugging Face because every time someone mentions it"}, {"id": "s160", "start": 803.88, "end": 806.92, "text": "in a model card or dataset card, we index it on the hub."}, {"id": "s161", "start": 806.92, "end": 812.92, "text": "And then it just posts all the artifacts that people have been uploading based on the outreach that we do via GitHub."}, {"id": "s162", "start": 812.92, "end": 816.64, "text": "Um so yeah, I do this still in a manual form."}, {"id": "s163", "start": 816.64, "end": 823.92, "text": "So I just invoke the skill and then after a few minutes, these messages appear on our Slack channel."}, {"id": "s164", "start": 824.28, "end": 832.0, "text": "Um yeah, I just included some fun results because to be honest, it's quite fun to see people interacting with the agents."}, {"id": "s165", "start": 832.0, "end": 836.16, "text": "Um to be honest, I don't disclose that it's an agent."}, {"id": "s166", "start": 836.16, "end": 836.44, "text": "Why?"}, {"id": "s167", "start": 836.44, "end": 840.96, "text": "Because I think if people know it's a bot, then they might quickly like close the issue."}, {"id": "s168", "start": 840.96, "end": 845.72, "text": "And to be honest, they post exactly the same stuff as I was doing before manually."}, {"id": "s169", "start": 845.72, "end": 849.76, "text": "So I don't actually see any reason to to do that."}, {"id": "s170", "start": 849.76, "end": 852.32, "text": "Um so and then you see replies like this."}, {"id": "s171", "start": 852.32, "end": 856.8, "text": "Hi Niels, thanks a lot for your suggestion and the clear guidance."}, {"id": "s172", "start": 856.8, "end": 861.0, "text": "I actually also often times see people using an agent to reply to my agents."}, {"id": "s173", "start": 861.0, "end": 863.64, "text": "So it's kind of the that internet nowadays."}, {"id": "s174", "start": 863.64, "end": 867.16, "text": "Um but people yeah, make all their artifacts available on Hugging Face."}, {"id": "s175", "start": 867.16, "end": 874.28, "text": "And out of the thousands of issues that are being created on Hugging Face, actually so far I've only had two negative comments."}, {"id": "s176", "start": 874.28, "end": 877.2, "text": "One guy saying yeah, please close this slop."}, {"id": "s177", "start": 877.2, "end": 878.32, "text": "So he closed the issue."}, {"id": "s178", "start": 878.32, "end": 879.32, "text": "And then another one."}, {"id": "s179", "start": 879.32, "end": 885.16, "text": "But most of the people they just say, yeah, actually it makes perfect sense to make my weights or my data sets available on Hugging Face."}, {"id": "s180", "start": 885.16, "end": 887.16, "text": "Like why didn't I think of this?"}, {"id": "s181", "start": 887.16, "end": 891.04, "text": "Um so it's kind of a win-win I would say."}, {"id": "s182", "start": 891.12, "end": 895.68, "text": "Uh I often times also post fun results on our Slack channel."}, {"id": "s183", "start": 895.68, "end": 901.76, "text": "Like for example, one time someone a researcher from Apple sent me a DM like, I saw you reached out to me."}, {"id": "s184", "start": 901.76, "end": 910.12, "text": "Yeah, technically it's my agent just posting a GitHub issue regarding publishing a new Apple uh the artifacts of an Apple paper on Hugging Face."}, {"id": "s185", "start": 910.12, "end": 917.32, "text": "Or for example, it reaches out to Google DeepMind to publish um mathematics data sets."}, {"id": "s186", "start": 917.32, "end": 929.68, "text": "Um so a lot of times like I receive emails, the one on the the side, where yeah, they want to publish a 400 GB data set on Hugging Face, but this was also my agent just opening GitHub issues."}, {"id": "s187", "start": 929.68, "end": 932.32, "text": "Um Yeah, this is another fun result."}, {"id": "s188", "start": 932.32, "end": 935.8, "text": "So, Paddle OCR, it's like a Chinese company."}, {"id": "s189", "start": 935.8, "end": 944.2, "text": "They migrated all their OCR models to Hugging Face based on outreach by the agents that create issues for me."}, {"id": "s190", "start": 944.2, "end": 947.8, "text": "So, yeah, it's pretty nice."}, {"id": "s191", "start": 947.8, "end": 954.04, "text": "Another fun result is like when it when it completes the default template of model cards on Hugging Face."}, {"id": "s192", "start": 954.04, "end": 964.68, "text": "So, Mac Mitchell, who also works at Hugging Face, she has a famous paper called model cards for model reporting, making sure that anyone documents their models in a proper way."}, {"id": "s193", "start": 964.68, "end": 968.72, "text": "And so, we do provide this template, which you can see on the left side in the Git diff."}, {"id": "s194", "start": 968.72, "end": 980.44, "text": "And then, the agent is just completing that template based on the content that it finds based on the paper, like the GitHub readme, the PDF itself, and so on."}, {"id": "s195", "start": 981.28, "end": 988.68, "text": "Um yeah, it's also quite funny to see, for example, in this case that it included me in the model card."}, {"id": "s196", "start": 988.68, "end": 992.8389999999999, "text": "It said, \"Model card authors, Niels part of the Hugging Face community science team.\""}, {"id": "s197", "start": 992.8389999999999, "end": 995.64, "text": "I never prompted it this way, but it's pretty fun to see."}, {"id": "s198", "start": 995.64, "end": 999.0, "text": "Or people are replying, \"Thank you for helping me fix my mistakes.\""}, {"id": "s199", "start": 999.0, "end": 1003.8, "text": "So, those are all done by the agents."}, {"id": "s200", "start": 1004.48, "end": 1016.32, "text": "Uh I think the most popular GitHub issue that was created was this paper Tiny Recursive Models, which you might have seen, was quite trending both on Hugging Face, but also on Twitter."}, {"id": "s201", "start": 1016.32, "end": 1022.8, "text": "So, yeah, more than 60 people actually upvoted that issue so that the model was released on Hugging Face."}, {"id": "s202", "start": 1022.8, "end": 1024.36, "text": "So, this is again, I think, the win-win."}, {"id": "s203", "start": 1024.36, "end": 1034.199, "text": "So, it's both a win for the researcher, making their research more discoverable on Hugging Face, but it's also, yeah, better for the people then who want to build on top of that research and want to"}, {"id": "s204", "start": 1034.199, "end": 1036.4, "text": "use them."}, {"id": "s205", "start": 1036.56, "end": 1045.48, "text": "Uh so, yeah, I I hundreds of GitHub issues where I think I can show uh nice results um where people interact with the agents."}, {"id": "s206", "start": 1045.48, "end": 1052.8, "text": "You might also wonder, yeah, how to avoid slop because you might think, okay, you have an agent uh spamming the whole internet with your GitHub issues."}, {"id": "s207", "start": 1052.8, "end": 1054.6, "text": "Like, should you even do this?"}, {"id": "s208", "start": 1054.6, "end": 1056.68, "text": "Again, I already talked about the win-win."}, {"id": "s209", "start": 1056.68, "end": 1068.92, "text": "Um, but a blog post that I highly recommend, if you want to avoid that your agent is just posting slop, is um the LLM Evils FAQ uh by Hamel Husain."}, {"id": "s210", "start": 1068.92, "end": 1073.32, "text": "Uh, I would say he's like the main expert when it comes to LLM evaluation."}, {"id": "s211", "start": 1073.32, "end": 1079.84, "text": "He also has like a a paid course, but he also publishes a lot of stuff for free online including this blog post."}, {"id": "s212", "start": 1079.84, "end": 1086.08, "text": "So, I highly recommend to go through it if you want to learn more about how to evaluate your agents."}, {"id": "s213", "start": 1086.28, "end": 1094.4, "text": "So, my conclusion would be um that open models are actually getting great, especially now with GLM 5.2. You have Deep Seek V4 and so on."}, {"id": "s214", "start": 1094.4, "end": 1099.96, "text": "So, um yeah, we we are able to now replace closed-source models by open ones."}, {"id": "s215", "start": 1099.96, "end": 1104.48, "text": "Uh, for my use case, I would say agents are actually better than uh workflows."}, {"id": "s216", "start": 1104.48, "end": 1107.48, "text": "Uh, they only need a single CLI, which is the Hugging Face CLI."}, {"id": "s217", "start": 1107.48, "end": 1112.8, "text": "They need a single skill, the Hugging Face CLI skill, and a sandbox, and that's all they need to do their work."}, {"id": "s218", "start": 1112.8, "end": 1116.04, "text": "And finally, yeah, don't forget about evaluation."}, {"id": "s219", "start": 1116.04, "end": 1124.44, "text": "Um Finally, uh I can also discuss some other efforts that we do as part of the community science uh team."}, {"id": "s220", "start": 1124.44, "end": 1126.44, "text": "Um, very shortly."}, {"id": "s221", "start": 1126.44, "end": 1129.88, "text": "Um, so, I have a Twitter account that I created."}, {"id": "s222", "start": 1129.88, "end": 1131.72, "text": "It's called Daily Papers."}, {"id": "s223", "start": 1131.72, "end": 1142.32, "text": "And it actually uses the exact same workflow as my agents behind the scenes to post interesting research papers on X. It uh recently crossed 90,000 followers without any involvement of me."}, {"id": "s224", "start": 1142.32, "end": 1154.2, "text": "I just deployed this uh and it posts interesting research papers and artifacts from Hugging Face every 4 hours or every time someone uh releases something cool on the Hugging Face."}, {"id": "s225", "start": 1154.2, "end": 1155.28, "text": "Um so, yeah."}, {"id": "s226", "start": 1155.28, "end": 1161.16, "text": "And I have like Gemini determining the best visual to tweet or to include in the tweet."}, {"id": "s227", "start": 1161.16, "end": 1169.24, "text": "Like for example, this recent tweet where it tweeted out that Nvidia released an optimized version of GLM 5.2 got more than 2,000 likes."}, {"id": "s228", "start": 1169.24, "end": 1172.24, "text": "So, that's pretty cool to see."}, {"id": "s229", "start": 1172.24, "end": 1181.6, "text": "And a final effort that I'm working on right now is a revival of Papers With Code, which is a website that once existed and then was acquired by Meta"}, {"id": "s230", "start": 1181.6, "end": 1183.68, "text": "and then sadly it died."}, {"id": "s231", "start": 1183.68, "end": 1189.88, "text": "So, I'm I'm trying to re- revive it and making a research and state-of-the-art easier accessible."}, {"id": "s232", "start": 1189.88, "end": 1193.12, "text": "Um for now it lives at paperswithcode.co."}, {"id": "s233", "start": 1194.36, "end": 1195.12, "text": "Uh so, yeah."}, {"id": "s234", "start": 1195.12, "end": 1197.32, "text": "You can find benchmarks over there."}, {"id": "s235", "start": 1197.32, "end": 1201.68, "text": "For example, for OCR models, all OCR benches like popular benchmark."}, {"id": "s236", "start": 1201.68, "end": 1212.12, "text": "But I'm also making it an educational resource so that people can learn about technical terms like mixed training uh on policy distillation and so on."}, {"id": "s237", "start": 1212.12, "end": 1212.92, "text": "So, yeah."}, {"id": "s238", "start": 1212.92, "end": 1214.44, "text": "That was it for my talk."}, {"id": "s239", "start": 1214.44, "end": 1216.32, "text": "I hope you learned something."}, {"id": "s240", "start": 1216.32, "end": 1218.969, "text": "Thanks all of you for your attention."}, {"id": "s241", "start": 1218.969, "end": 1220.969, "text": "[applause]"}]}, {"id": "FvxY8oPoI8o", "title": "Preferences Over Benchmarks: Model Routing — Archana Kamath & Tyler Gillam, DigitalOcean", "channel": "AI Engineer", "duration": 954, "upload_date": null, "url": "https://www.youtube.com/watch?v=FvxY8oPoI8o", "api": "/api/talks/FvxY8oPoI8o.json", "summary_url": "/#FvxY8oPoI8o", "transcript": {"html": "/transcripts/FvxY8oPoI8o.html", "txt": "/transcripts/FvxY8oPoI8o.txt", "vtt": "/transcripts/FvxY8oPoI8o.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.719, "end": 14.559, "text": "Hello everyone."}, {"id": "s3", "start": 14.559, "end": 17.52, "text": "So preferences over benchmarks."}, {"id": "s4", "start": 17.52, "end": 28.32, "text": "The talk today is about model routing and specifically why the way most people think about picking a model which usually is chasing you know to the top of a benchmark"}, {"id": "s5", "start": 28.32, "end": 31.279, "text": "is actually the wrong instinct."}, {"id": "s6", "start": 32.079, "end": 44.0, "text": "I'm Archa VP of engineering for inference engine and AI infrastructure at Digital Ocean and I'll be joined by Tyler who built parts of the router and will actually do a live demo for us today."}, {"id": "s7", "start": 44.0, "end": 50.64, "text": "We both work on the managed agent orchestration and inference engine products at digital ocean."}, {"id": "s8", "start": 52.16, "end": 57.52, "text": "So you may know digital ocean as droplets, databases and app platform."}, {"id": "s9", "start": 57.52, "end": 58.64, "text": "All of that is true."}, {"id": "s10", "start": 58.64, "end": 61.76, "text": "We are also the AI native cloud."}, {"id": "s11", "start": 61.76, "end": 70.56, "text": "This is five integrated layers starting from infrastructure all the way up to the managed agents with the inference engine right in the middle."}, {"id": "s12", "start": 70.56, "end": 74.0, "text": "And that's why we are here talking about inference router."}, {"id": "s13", "start": 74.0, "end": 75.84, "text": "Routing lives in the inference engine."}, {"id": "s14", "start": 75.84, "end": 82.0, "text": "And if you want to know more about our stack and the full story, please come find us at the booth."}, {"id": "s15", "start": 84.0, "end": 93.84, "text": "So everybody is reaching out for the model routing and let's look at three reasons why the three reasons that are breaking the one model habit for most users."}, {"id": "s16", "start": 93.84, "end": 96.64, "text": "The first one I want to talk about is cost."}, {"id": "s17", "start": 96.64, "end": 106.07900000000001, "text": "Spend is exploding and even companies like Walmart, Uber, Microsoft, they're actively capping usage to control the inference bills."}, {"id": "s18", "start": 106.07900000000001, "end": 108.15899999999999, "text": "The second one is fit."}, {"id": "s19", "start": 108.15899999999999, "end": 111.6, "text": "One model for every task is likely an overkill."}, {"id": "s20", "start": 111.6, "end": 118.24000000000001, "text": "We're essentially paying frontier rates for a work that a much smaller model will be able to handle really well."}, {"id": "s21", "start": 118.24000000000001, "end": 122.479, "text": "And the third one, which for me is the most important one, is the risk."}, {"id": "s22", "start": 122.479, "end": 125.68, "text": "The risk associated with one single model."}, {"id": "s23", "start": 125.68, "end": 140.8, "text": "models can go down and if you bet your entire product and production on one model, you have no failover when something degrades and model orchestration is actually the new phas."}, {"id": "s24", "start": 140.8, "end": 149.84, "text": "As you all know, cloud cost optimization took us about 15 years for it to actually become a real good discipline and for companies to get it right."}, {"id": "s25", "start": 149.84, "end": 152.8, "text": "This one actually is arriving in months and not years."}, {"id": "s26", "start": 152.8, "end": 157.599, "text": "And here's the premise that I think everybody gets wrong about this."}, {"id": "s27", "start": 157.92000000000002, "end": 161.28, "text": "We all think of like what is the best model for a job."}, {"id": "s28", "start": 161.28, "end": 162.48, "text": "Here's the thing."}, {"id": "s29", "start": 162.48, "end": 165.28, "text": "There is no single best model."}, {"id": "s30", "start": 165.28, "end": 168.56, "text": "The right one depends on the actual request."}, {"id": "s31", "start": 168.56, "end": 179.04, "text": "For example, if you're doing classification and labeling, a small open model may very well work really well for you and will give you really good cost optimizations."}, {"id": "s32", "start": 179.04, "end": 189.68, "text": "However, if you're running code completion in line, you will likely need really fast routing and that is where a faster larger routing model comes into picture."}, {"id": "s33", "start": 189.68, "end": 192.08, "text": "Think about code generation and bug fixing."}, {"id": "s34", "start": 192.08, "end": 195.36, "text": "You're likely good with an mid openw weight model."}, {"id": "s35", "start": 195.36, "end": 203.28, "text": "Uh and again, it'll bring you like really good cost optimizations over using a frontier for something that is likely an overkill in this situation."}, {"id": "s36", "start": 203.28, "end": 213.04, "text": "But then you're looking at like really accuracy critical tasks like code review and security, you're likely going to lean towards a frontier model."}, {"id": "s37", "start": 214.07999999999998, "end": 218.07999999999998, "text": "So essentially what makes a model right for a request?"}, {"id": "s38", "start": 218.07999999999998, "end": 224.0, "text": "It's a mix that no public leaderboard can actually encode for you because it's the task itself."}, {"id": "s39", "start": 224.0, "end": 225.519, "text": "What are you actually trying to achieve?"}, {"id": "s40", "start": 225.519, "end": 227.599, "text": "What is your model trying to achieve?"}, {"id": "s41", "start": 227.599, "end": 229.599, "text": "The system prompts and tools around it."}, {"id": "s42", "start": 229.599, "end": 234.239, "text": "that is the methodology by which you're getting something done using a model."}, {"id": "s43", "start": 234.239, "end": 235.599, "text": "The cost you're willing to spend."}, {"id": "s44", "start": 235.599, "end": 240.879, "text": "This is a very very important aspect and latency the use case needs."}, {"id": "s45", "start": 240.879, "end": 244.0, "text": "Not all use cases need the same amount of latency."}, {"id": "s46", "start": 244.0, "end": 246.879, "text": "So depending on what you're trying to do, this can vary widely."}, {"id": "s47", "start": 246.879, "end": 248.48, "text": "And finally, the end user preference."}, {"id": "s48", "start": 248.48, "end": 253.76, "text": "All of this is driven by what the end user really wants out of your application."}, {"id": "s49", "start": 253.76, "end": 266.72, "text": "So, I'm going to welcome Tyler on to stage so that he can actually show you the inference light router live in action and show you how it can really help with all of these key aspects that I'm calling out here."}, {"id": "s50", "start": 271.36, "end": 272.08, "text": "Testing."}, {"id": "s51", "start": 272.08, "end": 272.639, "text": "All right."}, {"id": "s52", "start": 272.639, "end": 275.04, "text": "Thank you, Archa."}, {"id": "s53", "start": 275.84000000000003, "end": 276.72, "text": "Okay."}, {"id": "s54", "start": 276.72, "end": 284.08, "text": "So many builders have tried auto routing before, but the problem was that it feels like a black box."}, {"id": "s55", "start": 284.08, "end": 289.759, "text": "The router makes a choice and if that choice results in poor performance, you really have no way of improving it."}, {"id": "s56", "start": 289.759, "end": 294.56, "text": "We built ours differently at the architecture level, which is what you can see on the screen."}, {"id": "s57", "start": 294.56, "end": 299.759, "text": "A request runs through our open proxy plan and our purpose-built routing model."}, {"id": "s58", "start": 299.759, "end": 301.6, "text": "Both open source."}, {"id": "s59", "start": 301.6, "end": 306.639, "text": "There is no vendor lockin, which is a key digital ocean value."}, {"id": "s60", "start": 306.639, "end": 315.919, "text": "You describe what matters for your workload, costs, latency, quality, preferred models or hard rules."}, {"id": "s61", "start": 315.919, "end": 320.72, "text": "Then the router uses that context to pick the right model per request."}, {"id": "s62", "start": 320.72, "end": 327.84, "text": "Because the routing model is specialized for this job, it's super fast, under 200 milliseconds, and it costs customers nothing extra."}, {"id": "s63", "start": 327.84, "end": 337.44, "text": "In our evaluations, it actually has beating frontier models like the GBT 5 series models at routing task itself with a fraction of the latency."}, {"id": "s64", "start": 337.44, "end": 339.039, "text": "So the difference is simple."}, {"id": "s65", "start": 339.039, "end": 345.919, "text": "This is routing you can customize, evaluate and improve without vendor lock in."}, {"id": "s66", "start": 348.24, "end": 351.039, "text": "So you bring your preferences and we honor them."}, {"id": "s67", "start": 351.039, "end": 357.759, "text": "You describe a task in natural language and set what matters, cost, latency, and task description."}, {"id": "s68", "start": 357.759, "end": 361.44, "text": "You bring your rules and we execute them intelligently."}, {"id": "s69", "start": 361.44, "end": 363.6, "text": "Layer decision tree rules on top."}, {"id": "s70", "start": 363.6, "end": 368.08, "text": "Start from presets, change anything you want in a single line of code."}, {"id": "s71", "start": 368.08, "end": 371.919, "text": "And you validate with your own evaluations, not someone else's leaderboard."}, {"id": "s72", "start": 371.919, "end": 376.56, "text": "Route, evaluate, adjust, then feed that back in."}, {"id": "s73", "start": 376.56, "end": 379.52, "text": "That loop is key."}, {"id": "s74", "start": 380.0, "end": 381.52, "text": "Okay, we're going to switch gears here."}, {"id": "s75", "start": 381.52, "end": 384.24, "text": "We're going to do a live demo."}, {"id": "s76", "start": 385.919, "end": 388.56, "text": "Bear with me here."}, {"id": "s77", "start": 389.44, "end": 391.28, "text": "All right, I'm going to show you a couple things."}, {"id": "s78", "start": 391.28, "end": 399.84000000000003, "text": "First, I'll show you router configuration in the UI, how to use it, and then how you can use evaluations to measure and improve your router's performance."}, {"id": "s79", "start": 399.84000000000003, "end": 405.759, "text": "And then I'll show you a real router that I created inside a coding agent workflow."}, {"id": "s80", "start": 405.759, "end": 410.479, "text": "So I'm here in the cloud console, the digital ocean cloud console and you can see my routers."}, {"id": "s81", "start": 410.479, "end": 411.6, "text": "We have several presets."}, {"id": "s82", "start": 411.6, "end": 416.479, "text": "You can see software engineering, general writing, knowledge bases and document intelligence."}, {"id": "s83", "start": 416.479, "end": 418.639, "text": "In this case, I've actually created my own."}, {"id": "s84", "start": 418.639, "end": 421.759, "text": "So I I customized our preset software engineering."}, {"id": "s85", "start": 421.759, "end": 426.88, "text": "Uh if we click into this, we can see that I have sever several different tasks here."}, {"id": "s86", "start": 426.88, "end": 431.28, "text": "I have bug fixing, code generation, test writing, and a few others."}, {"id": "s87", "start": 431.28, "end": 438.4, "text": "This also shows that you can specify more than one model per task in the bug fixing case and code generation case."}, {"id": "s88", "start": 438.4, "end": 448.72, "text": "Um, in the code generation, I have GLM 5.2 and GPT 5.2. And because I really want to always route to GLM 5.2 unless it's down, I use this manual ranking option."}, {"id": "s89", "start": 448.72, "end": 457.759, "text": "So, it'll always go to GLM 5.2. If GLM fails, it'll fail over to GPD 5.2. In the bug fixing one, you can see a little bit of a different one."}, {"id": "s90", "start": 457.759, "end": 461.039, "text": "In this case, I have selection policy fastest."}, {"id": "s91", "start": 461.039, "end": 468.72, "text": "So out of this model pool, if it matches to bug fixing, it'll pick whichever one's been fastest in about the last 30 minutes."}, {"id": "s92", "start": 468.72, "end": 470.639, "text": "Okay, let's do this in action a little bit."}, {"id": "s93", "start": 470.639, "end": 474.72, "text": "Here's our playground where I'll show a couple of examples side by side."}, {"id": "s94", "start": 474.72, "end": 476.879, "text": "First, I'll start with just a simple prompt."}, {"id": "s95", "start": 476.879, "end": 480.08, "text": "Write a basic Fibonacci function."}, {"id": "s96", "start": 481.039, "end": 485.199, "text": "And as this runs, we can see on the left we're writing to Opus."}, {"id": "s97", "start": 485.199, "end": 488.8, "text": "On the right, we're using our software engineering router that I just showed you."}, {"id": "s98", "start": 488.8, "end": 491.199, "text": "And you're going to see that it picks different models on the right."}, {"id": "s99", "start": 491.199, "end": 497.84, "text": "So in this case, it matched to the code snippets task and just used the long before Maverick model that I had configured for that one."}, {"id": "s100", "start": 497.84, "end": 500.479, "text": "And if we scroll down, I mean this is this is obvious, right?"}, {"id": "s101", "start": 500.479, "end": 505.919, "text": "But this model is extremely fast and extremely cheap compared to Opus."}, {"id": "s102", "start": 507.68, "end": 512.24, "text": "Now let's say optimize my function and we'll see the same thing happen."}, {"id": "s103", "start": 512.24, "end": 519.76, "text": "In this case, it matched the code performance optimization task using GBT 5.2. And again, it's obviously significantly faster."}, {"id": "s104", "start": 519.76, "end": 523.919, "text": "If we scroll down here, we can also see that it's significantly cheaper."}, {"id": "s105", "start": 523.919, "end": 524.88, "text": "We'll do one more."}, {"id": "s106", "start": 524.88, "end": 527.519, "text": "Write some unit tests."}, {"id": "s107", "start": 530.64, "end": 530.88, "text": "Okay."}, {"id": "s108", "start": 530.88, "end": 536.0, "text": "And in this case, it matched to Cloud 5 Summit on the test writing and code verification."}, {"id": "s109", "start": 536.0, "end": 538.8, "text": "And again, we're going to see faster and cheaper."}, {"id": "s110", "start": 538.8, "end": 539.6, "text": "So, it's a pattern."}, {"id": "s111", "start": 539.6, "end": 542.32, "text": "It matches my, you know, vibe check, right?"}, {"id": "s112", "start": 542.32, "end": 543.519, "text": "It's still vibes, though."}, {"id": "s113", "start": 543.519, "end": 547.68, "text": "How you actually prove it is working it through evaluations."}, {"id": "s114", "start": 547.68, "end": 557.2, "text": "So, I have an evaluation that I ran here, comparing Opus on the left or actually on the right hand side to my router on the left hand side."}, {"id": "s115", "start": 557.2, "end": 563.36, "text": "You can see that the scores 90% for my router, 95% correctness for Opus are very very close."}, {"id": "s116", "start": 563.36, "end": 569.12, "text": "In fact, that's pretty much within a judge uh margin of error."}, {"id": "s117", "start": 569.12, "end": 580.88, "text": "But what what's really interesting is if we scroll down here, we can see that the router knew significantly less tokens and was significantly faster than Opus."}, {"id": "s118", "start": 581.8389999999999, "end": 584.399, "text": "Okay, let's jump into a real workflow here."}, {"id": "s119", "start": 584.399, "end": 587.519, "text": "This is where the inference router really becomes impactful."}, {"id": "s120", "start": 587.519, "end": 590.08, "text": "Here I have two terminals running open code."}, {"id": "s121", "start": 590.08, "end": 593.36, "text": "On the left I have a single model approach using quad opus."}, {"id": "s122", "start": 593.36, "end": 596.64, "text": "So I have opus set up or open code set up with opus."}, {"id": "s123", "start": 596.64, "end": 603.279, "text": "On the right, I've configured open code to send requests to our software engineering router that I just showed you configured."}, {"id": "s124", "start": 603.279, "end": 609.6, "text": "Um, below I kind of have this customuilt open code where you'll be able to see live uh, observability essentially."}, {"id": "s125", "start": 609.6, "end": 611.2, "text": "So, let's go ahead and get these started."}, {"id": "s126", "start": 611.2, "end": 614.32, "text": "It's just a simple feature request pre-loaded into here."}, {"id": "s127", "start": 614.32, "end": 616.079, "text": "Build me a spinning wheel app."}, {"id": "s128", "start": 616.079, "end": 618.88, "text": "I'll run the same prompt in both."}, {"id": "s129", "start": 618.88, "end": 620.959, "text": "And as this runs, we can focus on the bottom panel."}, {"id": "s130", "start": 620.959, "end": 622.48, "text": "So, it'll start to show up here."}, {"id": "s131", "start": 622.48, "end": 624.48, "text": "Hopefully, we can see that on the screen."}, {"id": "s132", "start": 624.48, "end": 632.56, "text": "uh you'll be able to see token usage in real time, which models are being selected, what tasks those map to, and the cost accumulating live."}, {"id": "s133", "start": 632.56, "end": 640.24, "text": "So on the right, we can already see that we're starting to route to GLM 5.2 because our requests are starting to match the code generation."}, {"id": "s134", "start": 640.24, "end": 642.399, "text": "And on the left, of course, we're just routing to quadopus."}, {"id": "s135", "start": 642.399, "end": 645.68, "text": "I think open code sometimes routes to to haiku by itself."}, {"id": "s136", "start": 645.68, "end": 647.92, "text": "So that's what you see there."}, {"id": "s137", "start": 647.92, "end": 649.279, "text": "And we'll notice latency, too."}, {"id": "s138", "start": 649.279, "end": 651.04, "text": "How quickly things start to come back."}, {"id": "s139", "start": 651.04, "end": 657.68, "text": "In this case, it wants me to create a temporary directory."}, {"id": "s140", "start": 658.48, "end": 664.16, "text": "So the key difference here is that on the left we'll see every single request that I write goes to the same premium model."}, {"id": "s141", "start": 664.16, "end": 667.76, "text": "Cost and latency is going to stay high for pretty much every single task."}, {"id": "s142", "start": 667.76, "end": 673.347, "text": "On the right the router is selecting models based on the task."}, {"id": "s143", "start": 673.347, "end": 673.36, "text": "[snorts]"}, {"id": "s144", "start": 673.36, "end": 676.32, "text": "So we're optimizing both cost and speed."}, {"id": "s145", "start": 676.32, "end": 679.6, "text": "And we can see that our software engineering router already finished."}, {"id": "s146", "start": 679.6, "end": 682.399, "text": "And if we look here, it actually matched to two models throughout."}, {"id": "s147", "start": 682.399, "end": 685.04, "text": "So, let's go and open this up and see how it looks."}, {"id": "s148", "start": 685.04, "end": 690.32, "text": "Okay, this actually looks really solid to me in Opus 4.7 finish at a similar time."}, {"id": "s149", "start": 690.32, "end": 692.399, "text": "Let's take a look at that."}, {"id": "s150", "start": 692.399, "end": 693.2, "text": "We can compare them."}, {"id": "s151", "start": 693.2, "end": 694.72, "text": "I mean, it's this is a vibe check, right?"}, {"id": "s152", "start": 694.72, "end": 701.2, "text": "But honestly, I would say the software engineering router did better because this is an interesting approach that you I'm not even sure it works too well."}, {"id": "s153", "start": 701.2, "end": 705.2, "text": "So, in this case, the router did a little bit better."}, {"id": "s154", "start": 705.2, "end": 716.88, "text": "So now that step is done, you know, we get similar outputs, but if we look here, the software engineering router has only spent 8 cents on the session while Opus directly has spent 25 cents."}, {"id": "s155", "start": 716.88, "end": 722.88, "text": "So we have a about a 3x in cost and very very similar quality so far."}, {"id": "s156", "start": 723.68, "end": 725.6, "text": "Let's try another another prompt here."}, {"id": "s157", "start": 725.6, "end": 727.76, "text": "What what comes next in a software engineering life cycle?"}, {"id": "s158", "start": 727.76, "end": 730.88, "text": "Probably write some unit test, right?"}, {"id": "s159", "start": 732.16, "end": 737.538, "text": "So we'll write this in both start up this first."}, {"id": "s160", "start": 737.538, "end": 740.959, "text": "[clears throat] On the right we have the router again."}, {"id": "s161", "start": 740.959, "end": 749.36, "text": "And we can see that it got matched to the test writing and code verification which picked the claude 5 sonnet model because that's what I configured earlier."}, {"id": "s162", "start": 749.36, "end": 750.56, "text": "And we'll see the same pattern."}, {"id": "s163", "start": 750.56, "end": 757.44, "text": "It's going to be significantly cheaper overall across the entire session than going straight to opus."}, {"id": "s164", "start": 757.44, "end": 760.399, "text": "So we'll let this finish here."}, {"id": "s165", "start": 762.9590000000001, "end": 763.279, "text": "Okay."}, {"id": "s166", "start": 763.279, "end": 764.48, "text": "And that finished."}, {"id": "s167", "start": 764.48, "end": 779.04, "text": "Let's just queue up one more, write some documentation in a readme, and then we'll compare the total session cost."}, {"id": "s168", "start": 783.519, "end": 783.92, "text": "Okay."}, {"id": "s169", "start": 783.92, "end": 788.32, "text": "And as this runs, we'll wait and see what it does."}, {"id": "s170", "start": 789.6, "end": 800.959, "text": "Okay, it created the read me and if we look here, we can see that the total session cost for the router was 14 while the total session cost for Opus was 44."}, {"id": "s171", "start": 800.959, "end": 804.48, "text": "So at this point, we can see the cost is significantly lower."}, {"id": "s172", "start": 804.48, "end": 809.44, "text": "Latency is optimized per step and the quality remains pretty similar across."}, {"id": "s173", "start": 809.44, "end": 815.2, "text": "So you can see as you scale this, the cost performance really add up."}, {"id": "s174", "start": 815.2, "end": 818.56, "text": "Okay, Archa, back to you."}, {"id": "s175", "start": 821.379, "end": 823.379, "text": "[applause]"}, {"id": "s176", "start": 824.8, "end": 826.32, "text": "Thank you so much, Tyler."}, {"id": "s177", "start": 826.32, "end": 829.76, "text": "And that that was actually a live demo that we ran here."}, {"id": "s178", "start": 829.76, "end": 833.6, "text": "So, thanks to Tyler for setting it up and taking us through that."}, {"id": "s179", "start": 833.6, "end": 838.56, "text": "So, now that you've seen it work, let's look at some quick facts."}, {"id": "s180", "start": 838.56, "end": 843.279, "text": "Routing decision and under 200 milliseconds per request."}, {"id": "s181", "start": 843.279, "end": 848.32, "text": "It runs on a custom mixture of experts model purpose-built for routing."}, {"id": "s182", "start": 848.32, "end": 856.72, "text": "Zero application code changes needed from you to get it to adopt and it's free and included so you do not have to roll out your own router."}, {"id": "s183", "start": 856.72, "end": 859.44, "text": "And we open source the whole routing model via Plano."}, {"id": "s184", "start": 859.44, "end": 863.44, "text": "So you can actually check how that looks as well."}, {"id": "s185", "start": 864.399, "end": 869.36, "text": "The last thing I wanted to talk about was a bit about um routing is the foundation layer."}, {"id": "s186", "start": 869.36, "end": 871.44, "text": "It's not really the destination."}, {"id": "s187", "start": 871.44, "end": 874.9590000000001, "text": "And there are three things that we usually build on top of it."}, {"id": "s188", "start": 874.9590000000001, "end": 881.6, "text": "The first one is eval to prove that the right model works with your use case and your test well."}, {"id": "s189", "start": 881.6, "end": 887.76, "text": "Caching so that you can stop paying twice or more for the same answer each time."}, {"id": "s190", "start": 887.76, "end": 893.279, "text": "And personalization so that the router learns what works for your team over time."}, {"id": "s191", "start": 893.279, "end": 896.9590000000001, "text": "This is a continuous improvement loop maturing over time."}, {"id": "s192", "start": 896.9590000000001, "end": 903.36, "text": "That means that the more you route and evaluate, the better the router does for your workload."}, {"id": "s193", "start": 904.24, "end": 907.279, "text": "So to summarize, where does this leave you?"}, {"id": "s194", "start": 907.279, "end": 909.199, "text": "There is no single best model."}, {"id": "s195", "start": 909.199, "end": 915.199, "text": "There's only the right model for the request and benchmarks will only tell you part of the story."}, {"id": "s196", "start": 915.199, "end": 917.6, "text": "Your preferences will tell you the rest."}, {"id": "s197", "start": 917.6, "end": 924.56, "text": "And we built the router to honor your preferences and stay open so that you're never locked into a single stack."}, {"id": "s198", "start": 924.56, "end": 927.04, "text": "And that's how teams actually built."}, {"id": "s199", "start": 927.04, "end": 930.16, "text": "We are digital ocean and AI native cloud."}, {"id": "s200", "start": 930.16, "end": 933.44, "text": "Come find us at the booth and route your next workload with us."}, {"id": "s201", "start": 933.44, "end": 936.005, "text": "Thank you so much for being here."}, {"id": "s202", "start": 936.005, "end": 938.005, "text": "[applause]"}, {"id": "s203", "start": 950.415, "end": 952.415, "text": "[music]"}]}, {"id": "G7cgLjZtmMU", "title": "The Agentic Commerce Stack — Ahnaf Prio, Best Buy", "channel": "AI Engineer", "duration": 1238, "upload_date": null, "url": "https://www.youtube.com/watch?v=G7cgLjZtmMU", "api": "/api/talks/G7cgLjZtmMU.json", "summary_url": "/#G7cgLjZtmMU", "transcript": {"html": "/transcripts/G7cgLjZtmMU.html", "txt": "/transcripts/G7cgLjZtmMU.txt", "vtt": "/transcripts/G7cgLjZtmMU.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.72, "end": 14.24, "text": "My name is Anup Priyo."}, {"id": "s3", "start": 14.24, "end": 16.4, "text": "I'm a senior engineering manager at Best Buy."}, {"id": "s4", "start": 16.4, "end": 25.32, "text": "And me and my team are working together right now to figure out what does Agentic Commerce mean and how can we meet our customers where they're at."}, {"id": "s5", "start": 25.32, "end": 29.56, "text": "And the newest place that they're at is at Agentic Services."}, {"id": "s6", "start": 29.56, "end": 34.88, "text": "I'm excited to give my talk today and well, what's what's my credentials?"}, {"id": "s7", "start": 34.88, "end": 43.2, "text": "Where ever since I was a young boy, I dreamed of high throughput inference, harnessing my tools within a context window, kept in check with evals."}, {"id": "s8", "start": 43.2, "end": 45.56, "text": "Yeah, that's absolutely correct."}, {"id": "s9", "start": 45.56, "end": 48.92, "text": "In 2003, all those things definitely existed."}, {"id": "s10", "start": 48.92, "end": 50.16, "text": "I kid."}, {"id": "s11", "start": 50.16, "end": 53.84, "text": "Uh over the last 1 year, uh we have been learning a lot."}, {"id": "s12", "start": 53.84, "end": 55.04, "text": "Shopping isn't new."}, {"id": "s13", "start": 55.04, "end": 62.88, "text": "Shopping is probably one of the most fun things one can do and one of the most essential things that people need to do ever since uh the economy existed,"}, {"id": "s14", "start": 62.88, "end": 65.76, "text": "but I have been super excited by it."}, {"id": "s15", "start": 65.76, "end": 74.03999999999999, "text": "So, I'm going to talk about what are the things some of the things that I've learned and hopefully uh share the notes."}, {"id": "s16", "start": 74.03999999999999, "end": 76.32, "text": "So, what is Agentic Commerce?"}, {"id": "s17", "start": 76.32, "end": 84.72, "text": "I'm not going to go over the broad definition again, but basically it's the idea that AI assists will help you with your shopping journey."}, {"id": "s18", "start": 84.72, "end": 88.03999999999999, "text": "Shopping has different facets to it."}, {"id": "s19", "start": 88.03999999999999, "end": 101.47999999999999, "text": "For instance, there's a discovery, there's figuring out the aspects of do I actually truly need it, understanding and deciding, there's loyalty, there's pricing, there's fulfillment, post fulfillment."}, {"id": "s20", "start": 101.47999999999999, "end": 102.6, "text": "It's a lot."}, {"id": "s21", "start": 102.6, "end": 115.96000000000001, "text": "And believe it or not, right now about 45% of all agent sessions that happen within major providers like chat.gbt.com and Google Gemini are related to shopping."}, {"id": "s22", "start": 115.96000000000001, "end": 120.56, "text": "Maybe it's a little biased uh that I don't use it as much, but I'm an engineer."}, {"id": "s23", "start": 120.56, "end": 126.56, "text": "But, the humans out there are using AI and talking to them to help with their shopping journey."}, {"id": "s24", "start": 126.56, "end": 130.24, "text": "So, it's also not a binary, you know."}, {"id": "s25", "start": 130.24, "end": 133.8, "text": "Uh right now, we're at that state of human in the loop."}, {"id": "s26", "start": 133.8, "end": 136.76, "text": "The ideal state would be autonomous shopping."}, {"id": "s27", "start": 136.76, "end": 138.84, "text": "You tell what you're excited about."}, {"id": "s28", "start": 138.84, "end": 142.28, "text": "Your agents goes around, talks to different merchants."}, {"id": "s29", "start": 142.28, "end": 144.48, "text": "Uh I'm originally from Bangladesh."}, {"id": "s30", "start": 144.48, "end": 147.36, "text": "We haggle a lot with the merchants, too."}, {"id": "s31", "start": 147.36, "end": 149.88, "text": "Maybe does that, negotiate, does the payment."}, {"id": "s32", "start": 149.88, "end": 152.68, "text": "But, right now, we're in the human in the loop."}, {"id": "s33", "start": 152.68, "end": 162.64, "text": "And the talk today is going to talk about the mental model of how that human in the loop is working right now, while also provide you with the architecture if you choose to extend it,"}, {"id": "s34", "start": 162.64, "end": 166.44, "text": "or show you the vision of how autonomous shopping might work."}, {"id": "s35", "start": 166.44, "end": 170.64, "text": "So, this isn't our first the first attempt."}, {"id": "s36", "start": 170.64, "end": 176.12, "text": "Uh even a year ago, there were people trying to figure out how can we automate this."}, {"id": "s37", "start": 176.12, "end": 180.44, "text": "Even now, you can go probably download the Cloud Chrome extension."}, {"id": "s38", "start": 180.44, "end": 193.2, "text": "Maybe you've used Atlas, where you tell the AI you need something, you need headphones, you need uh that that grocery list of items that you have been meaning to buy, but never made the"}, {"id": "s39", "start": 193.2, "end": 196.959, "text": "actual effort to show up because, you know, you didn't have the time."}, {"id": "s40", "start": 196.959, "end": 204.76, "text": "So, why don't you take screenshots, read the DOM, navigate to the merchant site, fill forms for me, do loyalty."}, {"id": "s41", "start": 204.76, "end": 207.519, "text": "Kind of just didn't work as expected."}, {"id": "s42", "start": 207.519, "end": 211.07999999999998, "text": "It was really clunky and slow and brittle."}, {"id": "s43", "start": 211.07999999999998, "end": 225.04, "text": "And if you are a merchant who's trying to sell stuff, any engineering department of that merchant will tell you an AI impersonating or your browser is just firing up all the alarm bells."}, {"id": "s44", "start": 225.04, "end": 236.96, "text": "So, a lot of times, you will probably be even stuck on the payment flow because we We want you to be using AI to put in that order, or at least in that phase, that's what was happening."}, {"id": "s45", "start": 236.96, "end": 239.88, "text": "So, what did what did it actually work?"}, {"id": "s46", "start": 239.88, "end": 241.96, "text": "And is it actually working right now?"}, {"id": "s47", "start": 241.96, "end": 243.0, "text": "It is."}, {"id": "s48", "start": 243.0, "end": 249.32, "text": "Chat GPT shopping, Google AI mode is doing just that."}, {"id": "s49", "start": 249.32, "end": 260.04, "text": "Right now, agent tech shopping is considered to be a $7 billion industry and might go up to $65 billion industry by 2030."}, {"id": "s50", "start": 260.04, "end": 270.24, "text": "And the majority of the shoppers are using the mainstream conversational AI assistants, which is on the browser or in your app, Chat GPT and Google Gemini."}, {"id": "s51", "start": 270.24, "end": 273.2, "text": "We're also seeing that pop up in Instagram and Facebook."}, {"id": "s52", "start": 273.2, "end": 276.32, "text": "Meta shop Meta wants to do meta commerce now."}, {"id": "s53", "start": 276.32, "end": 281.24, "text": "I heard GoPuff and Grok came together to make an app as well."}, {"id": "s54", "start": 281.24, "end": 289.28, "text": "And also Microsoft Copilot just yesterday announced in the UK that you can buy Ray-Bans now inside Microsoft Copilot."}, {"id": "s55", "start": 289.28, "end": 299.64, "text": "So, to make that happen, Google and OpenAI separately came up with their own little primitives, ACP and UCP."}, {"id": "s56", "start": 299.64, "end": 303.919, "text": "Which is basically talking about how you would actually talk to us."}, {"id": "s57", "start": 303.919, "end": 312.48, "text": "For some of you who are shopping on the other side as the customer, there is not much of a difference between adding an item to cart, adding a second quantity."}, {"id": "s58", "start": 312.48, "end": 315.6, "text": "But to us merchants, that's a second line item, buddy."}, {"id": "s59", "start": 315.6, "end": 317.64, "text": "That's not the same scale."}, {"id": "s60", "start": 317.64, "end": 325.96, "text": "So, if we don't talk about the nuances and the primitives of commerce and standardize it, things will just not work and will remain to be clunky."}, {"id": "s61", "start": 325.96, "end": 333.88, "text": "So, ACP was Chat GPT's attempt at it, and Universal Commerce Protocol, UCP, was Google's attempt at it."}, {"id": "s62", "start": 333.88, "end": 345.32, "text": "So, now that I've already established that this is happening, I just wanted to say that it is happening as easy as you go to the Chat GPT Gemini, tell it to find me cat cookies."}, {"id": "s63", "start": 345.32, "end": 350.84000000000003, "text": "More to it why I chose cat cookies later uh in this example."}, {"id": "s64", "start": 350.84000000000003, "end": 352.6, "text": "The AI surfaces the product."}, {"id": "s65", "start": 352.6, "end": 355.0, "text": "Agent calls the merchant checkout API."}, {"id": "s66", "start": 355.0, "end": 355.92, "text": "No browser."}, {"id": "s67", "start": 355.92, "end": 361.2, "text": "Payment flows via scope payment mandate or a delegated payment token."}, {"id": "s68", "start": 361.2, "end": 366.04, "text": "An order confirms and human kind of didn't have to touch the cart."}, {"id": "s69", "start": 366.04, "end": 372.04, "text": "So, to all of this that's happening for the user, a lot is happening on the other side."}, {"id": "s70", "start": 372.04, "end": 373.88, "text": "And it's kind of overwhelming."}, {"id": "s71", "start": 373.88, "end": 379.919, "text": "One day we're talking about MCPs, another day A2A, ACP, UCP, AP2."}, {"id": "s72", "start": 379.919, "end": 381.8, "text": "It's like what is even real?"}, {"id": "s73", "start": 381.8, "end": 385.88, "text": "Like if someone came up to me tomorrow and said, \"I came up with HYPE.\""}, {"id": "s74", "start": 385.88, "end": 388.919, "text": "I would probably think it's probably real."}, {"id": "s75", "start": 388.919, "end": 392.84000000000003, "text": "So, I wanted to dissect this mental model for you as I've learned about it more."}, {"id": "s76", "start": 392.84000000000003, "end": 397.919, "text": "MCP is still the model context protocol, the way that the AI agent identifies the tool."}, {"id": "s77", "start": 397.919, "end": 402.64, "text": "So, maybe we can figure out what does this AI agent uh specifications are."}, {"id": "s78", "start": 402.64, "end": 404.28, "text": "To showcase what products they have."}, {"id": "s79", "start": 404.28, "end": 406.32, "text": "To showcase the details of a specific product."}, {"id": "s80", "start": 406.32, "end": 408.12, "text": "To showcase loyalty."}, {"id": "s81", "start": 408.12, "end": 410.36, "text": "A2A is how agents talk to each other."}, {"id": "s82", "start": 410.36, "end": 412.15999999999997, "text": "They're more of a spec."}, {"id": "s83", "start": 412.15999999999997, "end": 421.36, "text": "ACP, UCP are the primitives and AP2 is the agentic payment protocol scope payment mandate that Google's open specification came out."}, {"id": "s84", "start": 421.36, "end": 423.96, "text": "And we'll talk all of them one by one."}, {"id": "s85", "start": 423.96, "end": 426.56, "text": "How they actually relate to agentic shopping."}, {"id": "s86", "start": 426.56, "end": 440.28, "text": "So, the MCP tool access is very important because without knowing the different capabilities and hitting those different capabilities, taking the time to bring it into context, understanding the user's memory,"}, {"id": "s87", "start": 440.28, "end": 444.04, "text": "the the agent will never be able to figure out what you're even trying to do."}, {"id": "s88", "start": 444.04, "end": 448.6, "text": "And the only way to get access to the specific capabilities is through MCP tool calls."}, {"id": "s89", "start": 448.6, "end": 451.0, "text": "Uh The next one is A2A."}, {"id": "s90", "start": 451.0, "end": 454.68, "text": "So, now there are different ways to architect this."}, {"id": "s91", "start": 454.68, "end": 458.08, "text": "Different capabilities I talked about like payments."}, {"id": "s92", "start": 458.08, "end": 459.8, "text": "Uh let's say what do you call it?"}, {"id": "s93", "start": 459.8, "end": 460.48, "text": "Loyalty."}, {"id": "s94", "start": 460.48, "end": 463.92, "text": "You can make agents about specific domains itself."}, {"id": "s95", "start": 463.92, "end": 464.56, "text": "Sorry."}, {"id": "s96", "start": 464.56, "end": 467.0, "text": "Uh Uh right?"}, {"id": "s97", "start": 467.0, "end": 471.48, "text": "And if you have specific domain level agents, agents need to talk to each other."}, {"id": "s98", "start": 471.48, "end": 473.72, "text": "We need to find a standardized way to talk to each other."}, {"id": "s99", "start": 473.72, "end": 478.6, "text": "So, A2A, the specifications kind of fill in that gap."}, {"id": "s100", "start": 478.6, "end": 485.28, "text": "Uh also, if your customer agent and your merchant agent uh need to talk to each other, maybe you could They're both agents."}, {"id": "s101", "start": 485.28, "end": 487.88, "text": "Maybe we can use A2A."}, {"id": "s102", "start": 487.88, "end": 491.48, "text": "So, now to the UCPMCP primitives."}, {"id": "s103", "start": 491.48, "end": 494.88, "text": "So, the most important data is that product data."}, {"id": "s104", "start": 494.88, "end": 509.24, "text": "So, UCP allows for adding that product data in a more uh more organized way, and ACP does the same because we don't want to go through your PDP and crawl and figure out every specific attribute."}, {"id": "s105", "start": 509.24, "end": 511.28, "text": "Merchant, just tell us."}, {"id": "s106", "start": 511.28, "end": 513.56, "text": "And also, those pro- products change a lot."}, {"id": "s107", "start": 513.56, "end": 517.24, "text": "So, maybe you can tell us when they change as well to send this."}, {"id": "s108", "start": 517.24, "end": 523.36, "text": "So, that kind of data is happening uh uh uh that that kind of data flow is happening in the product feed."}, {"id": "s109", "start": 523.36, "end": 526.8389999999999, "text": "Normally, you would assume that this would be a search catalog."}, {"id": "s110", "start": 526.8389999999999, "end": 533.92, "text": "However, both ACP and UCP right now, so Gemini and ChatGPT does not support that search catalog call."}, {"id": "s111", "start": 533.92, "end": 536.4, "text": "They want you to send that feed to them."}, {"id": "s112", "start": 536.4, "end": 539.4, "text": "And for those of you who are like, \"Why wouldn't you do that?\""}, {"id": "s113", "start": 539.4, "end": 540.48, "text": "There's reasons to it."}, {"id": "s114", "start": 540.48, "end": 544.76, "text": "Uh sponsored products, retail media uh related things, ranking."}, {"id": "s115", "start": 544.76, "end": 552.52, "text": "But, the most important technological challenges if you have M number of merchants and N number of products, now it has to call that many."}, {"id": "s116", "start": 552.52, "end": 559.16, "text": "While if you send the product feed ahead of time, we can index that and be ready offload to offload when you ask for something."}, {"id": "s117", "start": 559.16, "end": 562.08, "text": "The I've also put an example of Meta's uh product feed."}, {"id": "s118", "start": 562.08, "end": 564.6, "text": "As you can see, they're similar, but still different."}, {"id": "s119", "start": 564.6, "end": 565.88, "text": "Everyone has an opinion."}, {"id": "s120", "start": 565.88, "end": 569.32, "text": "They think their opinion is the best one, and that's what they're rolling with."}, {"id": "s121", "start": 569.32, "end": 572.88, "text": "So, there's three different specifications right here."}, {"id": "s122", "start": 572.88, "end": 578.72, "text": "So, now that we talked about product feed, talking to to other, calling tools, let's talk about payments."}, {"id": "s123", "start": 578.72, "end": 588.16, "text": "Uh right now, uh none of them are supporting that more autonomous form of, you know, X402 or some other kind of payments."}, {"id": "s124", "start": 588.16, "end": 589.16, "text": "We're just not there yet."}, {"id": "s125", "start": 589.16, "end": 590.56, "text": "We're just not confident yet."}, {"id": "s126", "start": 590.56, "end": 602.28, "text": "We want more human in the loop, a merchant to be uh talking to a payment processor who will take the responsibility, or in this case, liability, to actually initiate the payments."}, {"id": "s127", "start": 602.28, "end": 612.2, "text": "So, in chat GPT, payments only happen through a shared payment token right now, and Gemini UCP, the payments are only being accepted through Google Pay."}, {"id": "s128", "start": 612.2, "end": 615.64, "text": "So, the scope demands will tell you what the products are."}, {"id": "s129", "start": 615.64, "end": 622.08, "text": "What I'm excited about is more about AP2, which is an extension of UCP, which it You see what I'm talking about?"}, {"id": "s130", "start": 622.08, "end": 623.76, "text": "There's so many acronyms."}, {"id": "s131", "start": 623.76, "end": 633.68, "text": "Uh AP2 is more about, \"Hey, if we wanted to do autonomous, can you tell me who authorized the agent, what exactly can it buy, and what's the max amount"}, {"id": "s132", "start": 633.68, "end": 641.96, "text": "uh that should be able to haggle with, maybe, and then the revocation URL, and the user concept proof?\""}, {"id": "s133", "start": 641.96, "end": 642.48, "text": "All right."}, {"id": "s134", "start": 642.48, "end": 643.36, "text": "Enough talking."}, {"id": "s135", "start": 643.36, "end": 648.8, "text": "I love building stuff, so for the sake of this, I have put together a little demo."}, {"id": "s136", "start": 648.8, "end": 655.8, "text": "For those of you who have remembered that cat cookie example, it's because the demo is about my cat."}, {"id": "s137", "start": 655.8, "end": 663.32, "text": "Ginny is my orange tabby, and in this made-up example, Ginny has been has transformed into a bakery agent."}, {"id": "s138", "start": 663.32, "end": 666.839, "text": "She wants to earn her keep by selling baked goods."}, {"id": "s139", "start": 666.839, "end": 676.92, "text": "So, right now, the model that I'm using is from Cerebras at 3,000 tokens per second, so hopefully this will be really, really fast, and we can give you an example"}, {"id": "s140", "start": 676.92, "end": 678.44, "text": "of the entire flow."}, {"id": "s141", "start": 678.44, "end": 684.16, "text": "And just like Chrome DevTools, I've kind of had a couple of tools in place to showcase what happens."}, {"id": "s142", "start": 684.16, "end": 695.96, "text": "The first thing I will tell Ginny, my beautiful cat who's selling baked goods now, \"Hi, tell me about uh all your products."}, {"id": "s143", "start": 696.88, "end": 700.4, "text": "And this is supposed to be a demo, an example."}, {"id": "s144", "start": 700.4, "end": 703.6, "text": "And uh Genie has given me exactly that."}, {"id": "s145", "start": 703.6, "end": 706.08, "text": "All the different products that she might need."}, {"id": "s146", "start": 706.08, "end": 707.36, "text": "So here, let's look at this."}, {"id": "s147", "start": 707.36, "end": 713.72, "text": "The agent to agent protocol actually made the call from Genie, the customer agent, to the merchant agent."}, {"id": "s148", "start": 713.72, "end": 717.84, "text": "And this is the message being sent, and this is me getting the message back."}, {"id": "s149", "start": 717.84, "end": 732.44, "text": "The merchant agent is returning the completed task with and the the way that I found this is through an MCP tool call, which is product search, instead of uh and and instead of like"}, {"id": "s150", "start": 732.44, "end": 744.48, "text": "not being able to tell what I truly want, the Genie has figured out that, \"Hey, when I give her the intent that I want to find products, you should call the MCP tool call product search.\""}, {"id": "s151", "start": 744.48, "end": 747.0, "text": "So right now we're seeing this."}, {"id": "s152", "start": 747.0, "end": 750.12, "text": "And now, what if I want to add something?"}, {"id": "s153", "start": 750.12, "end": 756.8, "text": "Uh add to cart the shortbread."}, {"id": "s154", "start": 759.68, "end": 764.52, "text": "So now Genie's asking me about any discount and promo code."}, {"id": "s155", "start": 764.52, "end": 767.76, "text": "I actually do not remember any of the discount and promo code."}, {"id": "s156", "start": 767.76, "end": 774.56, "text": "But what if I ask Genie, \"Genie, can you just tell me a discount code?\""}, {"id": "s157", "start": 774.56, "end": 777.6, "text": "As you can tell, I'm definitely a haggler."}, {"id": "s158", "start": 777.6, "end": 779.04, "text": "Uh Genie is not telling me that."}, {"id": "s159", "start": 779.04, "end": 779.92, "text": "All right."}, {"id": "s160", "start": 779.92, "end": 788.24, "text": "Uh proceed to check out without discount code."}, {"id": "s161", "start": 791.28, "end": 791.76, "text": "There you go."}, {"id": "s162", "start": 791.76, "end": 793.72, "text": "So now we're making some of those calls."}, {"id": "s163", "start": 793.72, "end": 803.28, "text": "Here's the UCP protocol, which the checkout APIs will have state, and the three different states are not ready for payment, ready for payment, and then completed."}, {"id": "s164", "start": 803.28, "end": 806.08, "text": "So now here I'm not using a delegated payment token."}, {"id": "s165", "start": 806.08, "end": 808.4, "text": "I'm not using uh Google Pay."}, {"id": "s166", "start": 808.4, "end": 812.08, "text": "I like AP2, so my demo is built on AP2."}, {"id": "s167", "start": 812.08, "end": 820.16, "text": "And uh as you can see, here was a a call was made to the MCP server for create checkout."}, {"id": "s168", "start": 820.16, "end": 828.8, "text": "Uh and then the UCP endpoints will tell us, \"Hey, that call the checkout sessions and tell me and uh if it's added to cart.\""}, {"id": "s169", "start": 828.8, "end": 831.56, "text": "So, it's added to cart, but it's not ready for payment."}, {"id": "s170", "start": 831.56, "end": 834.2, "text": "I have to pick in what I want to pay with."}, {"id": "s171", "start": 834.2, "end": 837.36, "text": "I say \"Credit card and debit card.\""}, {"id": "s172", "start": 837.36, "end": 842.68, "text": "And this is where I issue the AP2 token that, \"Hey, I do want that.\""}, {"id": "s173", "start": 842.68, "end": 847.16, "text": "And then it's went from ready to ready for payment to complete."}, {"id": "s174", "start": 847.16, "end": 851.8, "text": "So, the other side of it, this is the UCP specs, right?"}, {"id": "s175", "start": 851.8, "end": 857.64, "text": "The other side of it, to just draw a comparison, how is it differing from the ACP specs?"}, {"id": "s176", "start": 857.64, "end": 861.08, "text": "I have added ACP here as well."}, {"id": "s177", "start": 861.08, "end": 869.92, "text": "So, you can see the same checkout calls, just different just different schemas are being utilized, and the order goes through."}, {"id": "s178", "start": 869.92, "end": 873.28, "text": "But remember that AP2 token that I was talking about?"}, {"id": "s179", "start": 873.28, "end": 877.12, "text": "This is how it would look like in real life with the user demo."}, {"id": "s180", "start": 877.12, "end": 879.8389999999999, "text": "The max amount is this, the currency is this."}, {"id": "s181", "start": 879.8389999999999, "end": 882.08, "text": "If you want to revoke it, you can."}, {"id": "s182", "start": 882.08, "end": 890.4, "text": "And what's the maximum Here, we didn't want to haggle, so we just put the maximum amount of that, and then it's also a single time usage."}, {"id": "s183", "start": 890.4, "end": 898.0, "text": "This demo also has comes with a timeline, so you can actually open any of these and see these happening."}, {"id": "s184", "start": 898.0, "end": 902.12, "text": "Remember that catalog I was talking about that they don't do the search?"}, {"id": "s185", "start": 902.12, "end": 906.36, "text": "We actually do a product feed, sending it to them."}, {"id": "s186", "start": 906.36, "end": 916.08, "text": "Uh I have added that as well, and the feeds, because they're so different, there's a place to actually compare them."}, {"id": "s187", "start": 916.08, "end": 918.24, "text": "So, here's the feed being called."}, {"id": "s188", "start": 918.24, "end": 926.6, "text": "By the way, if you went to timeline, every couple of seconds, we try to get the catalog in sync for what is in inventory, what's not."}, {"id": "s189", "start": 926.6, "end": 931.04, "text": "This is the UCP one, and there's the meta one."}, {"id": "s190", "start": 931.04, "end": 937.44, "text": "So, I've shown you this, and you could reuse this same demo or the same concepts."}, {"id": "s191", "start": 937.44, "end": 942.68, "text": "What if I didn't want to do external agentic commerce on Gemini or ChatGPT?"}, {"id": "s192", "start": 942.68, "end": 950.0, "text": "You could still build your own custom implementation of a merchant agent or Jenny on your website."}, {"id": "s193", "start": 950.0, "end": 953.0, "text": "Maybe I start selling uh cat goods."}, {"id": "s194", "start": 953.0, "end": 962.28, "text": "I could reuse some of this, but I would advise maybe look into some of these primitives and trying to use them because they've been standardized across merchants."}, {"id": "s195", "start": 962.28, "end": 971.2, "text": "So, they have been well thought out, and also you could probably reuse them to sell externally as well on ChatGPT and Gemini."}, {"id": "s196", "start": 971.44, "end": 975.24, "text": "So, remember I was talking about the discount codes?"}, {"id": "s197", "start": 975.24, "end": 976.44, "text": "There's a reason for that."}, {"id": "s198", "start": 976.44, "end": 987.88, "text": "When we build out this demo and in my time building agentic commerce at as by, we've realized working with AI and conversational experiences without evals is playing whack-a-mole."}, {"id": "s199", "start": 987.88, "end": 998.0, "text": "So, if you choose to use the same architecture for a new customer base, like jenny.com websites, think very much about creating evals."}, {"id": "s200", "start": 998.0, "end": 1004.8389999999999, "text": "Uh one of the things that I could not uh emphasize more about is you should test, test, and test."}, {"id": "s201", "start": 1004.8389999999999, "end": 1010.48, "text": "If you go over here, I can also run my scripts for run evals."}, {"id": "s202", "start": 1010.48, "end": 1015.4, "text": "And this evals folder has all this evals."}, {"id": "s203", "start": 1015.4, "end": 1028.439, "text": "The reason I'm also showcasing the code is there's a template folder here, and we can go back to the slides."}, {"id": "s204", "start": 1028.839, "end": 1032.959, "text": "And if you don't do evals, this is what might happen what might happen."}, {"id": "s205", "start": 1032.959, "end": 1034.12, "text": "I love Chipotle."}, {"id": "s206", "start": 1034.12, "end": 1038.68, "text": "I don't know if it's true or not, but I found it really funny, so I'm going to talk about this."}, {"id": "s207", "start": 1038.68, "end": 1047.68, "text": "So, this popped up that when Chipotle rolled out their agent, people were using it to ask programming questions."}, {"id": "s208", "start": 1047.68, "end": 1048.439, "text": "Right?"}, {"id": "s209", "start": 1048.439, "end": 1053.72, "text": "If you don't tell your agent to not allow for those kind of things, people will use it."}, {"id": "s210", "start": 1053.72, "end": 1060.68, "text": "This is hands-down one of the most creative way to get free AI usage when you don't want to pay for that cloud subscription."}, {"id": "s211", "start": 1060.68, "end": 1068.72, "text": "And if we don't write our emails and test intensely, those things will happen in production."}, {"id": "s212", "start": 1068.72, "end": 1076.6, "text": "Uh the discount code will be told, even sometimes more uh uh sensitive things like who else is checking out this product."}, {"id": "s213", "start": 1076.6, "end": 1086.36, "text": "So, the kinds of emails that I would highly recommend you write is behavior emails, protocol compliance, because when we're selling it to like, let's say, GPT, let's say chat.openai.com"}, {"id": "s214", "start": 1086.36, "end": 1092.6, "text": "or Gemini, you want to make sure that the feeds are actually me conforming, or else they will not support it."}, {"id": "s215", "start": 1092.6, "end": 1094.92, "text": "You should also think about latency benchmarks."}, {"id": "s216", "start": 1094.92, "end": 1106.76, "text": "Every second in retail on the shopping journey where you're actually not selling, there are chances that the other website's going to be faster, and people are just going to move away, or they just don't feel like it anymore."}, {"id": "s217", "start": 1106.76, "end": 1111.2, "text": "Lastly, I also recommend using LLM as a quality judge."}, {"id": "s218", "start": 1111.2, "end": 1113.08, "text": "Uh you don't have to use something fancy."}, {"id": "s219", "start": 1113.08, "end": 1121.16, "text": "Talk to your product friends and figure out what's the best way to do it, and use a low like best use cases and write them out."}, {"id": "s220", "start": 1121.16, "end": 1129.36, "text": "And I would like to also talk about Now, that I've discussed all of this, what's actually stable today and what's still forming?"}, {"id": "s221", "start": 1129.36, "end": 1135.16, "text": "MCP is widely adopted, A2A is widely is used, UCP ACP is out there."}, {"id": "s222", "start": 1135.16, "end": 1145.68, "text": "Uh what's still forming though is AP2 and actual usage of it, ACP versus UCP convergence, do we always have to do two different specs, identity concept standards, and multi-agent"}, {"id": "s223", "start": 1145.68, "end": 1148.08, "text": "checkout delegation."}, {"id": "s224", "start": 1148.12, "end": 1157.08, "text": "So, uh if you have to leave here uh today uh with anything, I hope you leave today with a good mental model of how an agenda commerce works."}, {"id": "s225", "start": 1157.08, "end": 1159.8, "text": "I have nothing to sell you, but I do have gifts for you."}, {"id": "s226", "start": 1159.8, "end": 1162.2, "text": "I find agenda commerce really exciting."}, {"id": "s227", "start": 1162.2, "end": 1167.24, "text": "So, you can find this entire presentation on GitHub, and I came up with a template."}, {"id": "s228", "start": 1167.24, "end": 1168.72, "text": "It's a three-service starter."}, {"id": "s229", "start": 1168.72, "end": 1173.48, "text": "If you want to do custom agent customer agent or you want to do the merchant agent, you can do that."}, {"id": "s230", "start": 1173.48, "end": 1176.52, "text": "Because I love e-vows and that saved my life."}, {"id": "s231", "start": 1176.52, "end": 1178.96, "text": "I have some e-vow templates for you."}, {"id": "s232", "start": 1178.96, "end": 1182.92, "text": "And you know, what if you want to send it to all of your merchants, not just one?"}, {"id": "s233", "start": 1182.92, "end": 1192.76, "text": "I have a catalog sync process as well, which will allow you to type into your own product and then turn it into ACP or UCP or meta, so you can sell there."}, {"id": "s234", "start": 1192.76, "end": 1197.96, "text": "And lastly, but not the least, we all know now these days we don't write code like that."}, {"id": "s235", "start": 1197.96, "end": 1199.92, "text": "If I give you a template, you'll be like, \"Meh.\""}, {"id": "s236", "start": 1199.92, "end": 1209.6, "text": "So, I have agent skills that specifically does a merchant agent customer agent and all these different catalog syncs that we have talked about."}, {"id": "s237", "start": 1209.6, "end": 1215.4, "text": "I hope you had an amazing time and learned and had fun as much as I had presenting this."}, {"id": "s238", "start": 1215.4, "end": 1215.84, "text": "Thank you."}, {"id": "s239", "start": 1215.84, "end": 1220.68, "text": "My name My name is Priu, and I hope to see you again soon."}, {"id": "s240", "start": 1234.034, "end": 1236.034, "text": "[music]"}]}, {"id": "GJX19pNhmSw", "title": "FinOps for AI Agents: Who Spent All the Tokens? — Tisha Chawla & Susheem Koul, Microsoft", "channel": "AI Engineer", "duration": 1284, "upload_date": null, "url": "https://www.youtube.com/watch?v=GJX19pNhmSw", "api": "/api/talks/GJX19pNhmSw.json", "summary_url": "/#GJX19pNhmSw", "transcript": {"html": "/transcripts/GJX19pNhmSw.html", "txt": "/transcripts/GJX19pNhmSw.txt", "vtt": "/transcripts/GJX19pNhmSw.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.519, "end": 14.0, "text": "Okay."}, {"id": "s3", "start": 14.0, "end": 15.759, "text": "Um, good morning everyone."}, {"id": "s4", "start": 15.759, "end": 20.48, "text": "So, um, I'm Tisha and I have Sushim with me as my co-presenter."}, {"id": "s5", "start": 20.48, "end": 20.8, "text": "All right."}, {"id": "s6", "start": 20.8, "end": 26.08, "text": "So, we'll be talking about the most expensive question in AI today."}, {"id": "s7", "start": 26.08, "end": 40.559, "text": "I think a lot of you would have come across the scenario that um you know when you opened an AI bill like through your agent workflows um you couldn't actually trace back where that bill was actually coming from right"}, {"id": "s8", "start": 40.559, "end": 53.92, "text": "and um and I don't think that's a problem right now because right now the industry is valuing you know um token maxing that is like spending the most amount of tokens for exploration"}, {"id": "s9", "start": 53.92, "end": 65.28, "text": "for all of those purposes And um people are proud to call themselves token billionaires and um I think that's all right but this talk is you know the shift from token maxing"}, {"id": "s10", "start": 65.28, "end": 84.15899999999999, "text": "to value maxing you know how do we get there and um we'll talk about it from this question um who spent all the tokens and um if anyone spent all the tokens there has to be value associated with this right and that"}, {"id": "s11", "start": 84.15899999999999, "end": 88.4, "text": "is um the talk about."}, {"id": "s12", "start": 90.4, "end": 90.96000000000001, "text": "All right."}, {"id": "s13", "start": 90.96000000000001, "end": 107.6, "text": "Now in order to minimize the gap you know from token maxing to value maxing we'll kind of see we'll observe the patterns which the like the existing um u like the past software evolution eras had"}, {"id": "s14", "start": 107.6, "end": 120.799, "text": "like for instance when we talk about the SAS era the interface was UI and the control was in the form of usage caps right like or the seat limits or tier based policies"}, {"id": "s15", "start": 120.799, "end": 126.159, "text": "Now when we moved on to the cloud era, the control surface again changed."}, {"id": "s16", "start": 126.159, "end": 134.64, "text": "The model became pay as you go and the control moved like in the form of autoprovisioning and you know autoscaling policies."}, {"id": "s17", "start": 134.64, "end": 149.52, "text": "Now we are in the agentic era right and um now how the cost is calculated here is in the form of model calls right like u how like the"}, {"id": "s18", "start": 149.52, "end": 163.12, "text": "code calls your model but what we've observed is that there isn't a proper control plane in place for that like we do have control plane in place for you in place as model gateways where"}, {"id": "s19", "start": 163.12, "end": 178.8, "text": "they're um are hard caps or there is model routing to downgrade the model but the part like where the code you know calls the model that um is what we'll be talking about"}, {"id": "s20", "start": 178.8, "end": 194.239, "text": "uh today and um we also you know see um like in the last year we've seen a lot of unbounded consumption happening like um if you've read the news."}, {"id": "s21", "start": 194.239, "end": 211.599, "text": "There was news about the like the uh AI budget for Uber getting exhausted within 4 months and um there were companies who like who ran into you know like hundreds of millions of dollars within just months or days and like there were a lot of"}, {"id": "s22", "start": 211.599, "end": 226.64, "text": "um like other news in place as well where like these runaway loops um led to a very like massive increase in the cost and there wasn't proper mechanisms to control it."}, {"id": "s23", "start": 227.519, "end": 234.879, "text": "Um so when we see all of this the first thing that comes to our mind is is there a tool or is there a product to save us?"}, {"id": "s24", "start": 234.879, "end": 247.84, "text": "But uh we'll instead talk about the first principles of how you know we can design a system which is actually true enough to solve the problem from the very root."}, {"id": "s25", "start": 247.84, "end": 252.319, "text": "So for that let's um like dive onto the principles."}, {"id": "s26", "start": 252.319, "end": 256.4, "text": "First of all, let's talk about token being the unit of cost."}, {"id": "s27", "start": 256.4, "end": 256.72, "text": "Right?"}, {"id": "s28", "start": 256.72, "end": 259.519, "text": "We are charged in terms of token."}, {"id": "s29", "start": 259.519, "end": 264.479, "text": "So the now we have to see value also in terms of token."}, {"id": "s30", "start": 264.479, "end": 265.68, "text": "Right?"}, {"id": "s31", "start": 265.68, "end": 272.96, "text": "Next um we all know that cost is created at the LLM like the model call boundary."}, {"id": "s32", "start": 272.96, "end": 290.639, "text": "Um so that is what we'll have to track and if we don't have proper attribution like if we don't know what agent want run made that particular call we we can't you know control it right we we just know the like the broad"}, {"id": "s33", "start": 290.639, "end": 295.36, "text": "uh picture of what went wrong but we don't we can't you know trace it back or narrow it down."}, {"id": "s34", "start": 295.36, "end": 313.12, "text": "So that is why attribution is a very important element to have and um like once you know which particular run or which particular agent is actually you know attributing to the cost you should have proper policies in place to actually stop it."}, {"id": "s35", "start": 313.12, "end": 329.84, "text": "Like um let's take example that um if you have a you know um a loop which is you know running um very excessively and which is not required or you know if your context is growing very out of range."}, {"id": "s36", "start": 329.84, "end": 342.88, "text": "you should have in place policies which can um like solve that particular thing there and there instead of halting that and if um and as the last resort only a like a halting or a"}, {"id": "s37", "start": 342.88, "end": 345.039, "text": "should happen from a budget cap."}, {"id": "s38", "start": 345.039, "end": 346.72, "text": "So these are the first principles."}, {"id": "s39", "start": 346.72, "end": 356.0, "text": "Now let's see how we can you know define an ideal uh platform on top of that from these principles which we talked about."}, {"id": "s40", "start": 356.0, "end": 356.479, "text": "All right."}, {"id": "s41", "start": 356.479, "end": 368.96, "text": "Uh so one thing which is very important that which matters here is that u when we talk about um like the um existing frameworks for token ops or for token management"}, {"id": "s42", "start": 368.96, "end": 376.88, "text": "most of them are at the um like u basically monitor the model uh request."}, {"id": "s43", "start": 376.88, "end": 387.759, "text": "they like they are like model gateways which will u you know u basically um do like model routing or hard budget capping."}, {"id": "s44", "start": 387.759, "end": 395.759, "text": "But what we need right now is something which you know um like monitors you at the run instead."}, {"id": "s45", "start": 395.759, "end": 408.56, "text": "Like um if you see we need something uh which can control the loop between like the agent call between the tool um and the agent."}, {"id": "s46", "start": 408.56, "end": 422.16, "text": "something you know which can um uh see or control the the spawning of multiple sub aents happening from a one main agent or um like something which can control the growing of context."}, {"id": "s47", "start": 422.16, "end": 426.639, "text": "So like that is the need of the right and that is what we need."}, {"id": "s48", "start": 426.639, "end": 440.72, "text": "So for all of this um we like uh kind of are proposing a platform which first of all um has a cumulative budget across like the uh like the"}, {"id": "s49", "start": 440.72, "end": 458.08, "text": "attribution runs which happened and then where enforcement actually happens in call path rather than um you know a separate thing like for example if something goes wrong if your like if your context is just growing heavily."}, {"id": "s50", "start": 458.08, "end": 467.12, "text": "Then like in place compaction should happen or like in place caching or something like that should happen."}, {"id": "s51", "start": 467.12, "end": 479.36, "text": "And um after that if like after basically exhausting the list of all in place policies only like uh the budget cap should happen at the very last."}, {"id": "s52", "start": 479.36, "end": 482.56, "text": "Um so that is something which we are proposing."}, {"id": "s53", "start": 482.56, "end": 493.199, "text": "But um if you look at the landscape today, if you see the uh like the uh tools like um this light LLM, port key, cloudflare, all of those they happen"}, {"id": "s54", "start": 493.199, "end": 510.879, "text": "at again the request level right um like if you see like halting is there, routing is there for some of those but all of this again is at a request and you can't control the cost at the uh request layer"}, {"id": "s55", "start": 510.879, "end": 514.08, "text": "uh at the model layer, Right."}, {"id": "s56", "start": 514.08, "end": 527.12, "text": "So this is the missing piece which is you know the u basically navigating it at the um you know the model the agent run layer."}, {"id": "s57", "start": 527.12, "end": 538.88, "text": "So for that we have token ops which is uh you know a runaway token governance for AI agents and u this is the uh architecture for that."}, {"id": "s58", "start": 538.88, "end": 547.92, "text": "So first of all one thing I would want to highlight is the like the intentional design decision we took here was an out ofbound plane."}, {"id": "s59", "start": 547.92, "end": 551.519, "text": "So it doesn't interfere with your code at all."}, {"id": "s60", "start": 551.519, "end": 556.959, "text": "Um so if you see here that out of the bandound plane has three modules which I'll be talking about."}, {"id": "s61", "start": 556.959, "end": 558.56, "text": "The first one being instrumentation."}, {"id": "s62", "start": 558.56, "end": 571.68, "text": "It is a common observability layer where you know you'll u like uh have u like the basic telemetry the open telemetry the cost in microns and um like the"}, {"id": "s63", "start": 571.68, "end": 592.8, "text": "um like enrichment layer and basically um the uh attribution like what caused that uh like particular run and then there is um obviously accounting where you'll basically accumulate it in a kind of a ledger"}, {"id": "s64", "start": 592.8, "end": 595.44, "text": "like the total runs which are happening."}, {"id": "s65", "start": 595.44, "end": 601.44, "text": "And finally we have this enforced layer which has uh two main purposes."}, {"id": "s66", "start": 601.44, "end": 613.36, "text": "one is steering it um through the policies which we've defined which I think will cover later and um then we have halt in place as the you know final"}, {"id": "s67", "start": 613.36, "end": 626.8, "text": "um like u final thing if um you know your budget is getting exhausted so yeah that is there now when we again look at the landscape this kind of will"}, {"id": "s68", "start": 626.8, "end": 646.24, "text": "solve a lot of problems um which kind of happened uh when we like look at the previous um tools or products there because uh it is at happening at run and it is you know uh helping you solve the problem from the very root by steering"}, {"id": "s69", "start": 646.24, "end": 648.32, "text": "it in place."}, {"id": "s70", "start": 648.32, "end": 649.04, "text": "All right."}, {"id": "s71", "start": 649.04, "end": 653.92, "text": "So uh with this I would like to hand it over to Sashim for the demo."}, {"id": "s72", "start": 653.92, "end": 655.92, "text": "Yeah."}, {"id": "s73", "start": 657.12, "end": 657.76, "text": "Oh yeah."}, {"id": "s74", "start": 657.76, "end": 660.72, "text": "Now I think I should be able to everyone in the back can hear me."}, {"id": "s75", "start": 660.72, "end": 661.92, "text": "All right, perfect."}, {"id": "s76", "start": 661.92, "end": 666.0, "text": "So yeah, we have established the principles behind token ops till now."}, {"id": "s77", "start": 666.0, "end": 666.72, "text": "Right."}, {"id": "s78", "start": 666.72, "end": 673.36, "text": "Now let's shift gears, talk about the design part of it and uh maybe get into the code and the eventual demo."}, {"id": "s79", "start": 673.36, "end": 673.92, "text": "Right?"}, {"id": "s80", "start": 673.92, "end": 680.079, "text": "So what I have behind me on the screen is the like bird's eye view of what token ops looks like today."}, {"id": "s81", "start": 680.079, "end": 681.76, "text": "It's it's three layers."}, {"id": "s82", "start": 681.76, "end": 683.44, "text": "We'll go left to right and top to bottom."}, {"id": "s83", "start": 683.44, "end": 692.16, "text": "So on the left most you have your own agent runtime which you're trying to instrument and kind of manage the cost for right the middle layer is what we're calling the bridge that"}, {"id": "s84", "start": 692.16, "end": 701.76, "text": "basically shuffles data between your agent and the control plane and the control plane is where the mind of the system lies right so let's talk about the bridge layer very briefly"}, {"id": "s85", "start": 701.76, "end": 717.68, "text": "if we uh go from top to bottom you have the attribution on top so what we're trying to do here is every agent run that you do it's attributed to some user dimensions so the idea is everything that you do every run of the agent is accounted to some usability or some usage."}, {"id": "s86", "start": 717.68, "end": 718.8, "text": "This comes in handy later."}, {"id": "s87", "start": 718.8, "end": 719.8389999999999, "text": "We'll talk about it."}, {"id": "s88", "start": 719.8389999999999, "end": 726.32, "text": "Uh the second part which is the boundary annotation that you see this is pretty much the heart and soul of this middle layer."}, {"id": "s89", "start": 726.32, "end": 729.839, "text": "So the idea behind the boundary annotation is that you take any method."}, {"id": "s90", "start": 729.839, "end": 731.36, "text": "It doesn't matter what framework you're using."}, {"id": "s91", "start": 731.36, "end": 734.32, "text": "You might be using uh let's say lang chain lang whatever."}, {"id": "s92", "start": 734.32, "end": 737.04, "text": "If you have a method you can annotate it with boundary."}, {"id": "s93", "start": 737.04, "end": 739.92, "text": "What this annotation is going to do is it's going to do two things."}, {"id": "s94", "start": 739.92, "end": 747.12, "text": "First it's going to track the input and the output and it's going to flight that up to the control layer and record it there as a ledger entry."}, {"id": "s95", "start": 747.12, "end": 751.68, "text": "Now this will be annotated with the further agent run ID and the other attributes and so on."}, {"id": "s96", "start": 751.68, "end": 758.24, "text": "The second thing the boundary annotation does is it acts as a channel through which the control plane can push actions down to the agent."}, {"id": "s97", "start": 758.24, "end": 760.0, "text": "This is where the entire intelligence lies."}, {"id": "s98", "start": 760.0, "end": 762.9590000000001, "text": "So we do not have a single directional highway."}, {"id": "s99", "start": 762.9590000000001, "end": 771.76, "text": "We want the control plane to be able to tweak the behavior of the agent on the fly to ensure that we are able to squeeze in more runs inside our budget cap."}, {"id": "s100", "start": 771.76, "end": 774.8, "text": "Right now let's say the control plane pushes down an action."}, {"id": "s101", "start": 774.8, "end": 776.0, "text": "Let's take a small example."}, {"id": "s102", "start": 776.0, "end": 783.12, "text": "Let's say you have a rag retrieval tool which is generating like 20 chunks every retrieval for every call and that's eating up eating up your budget."}, {"id": "s103", "start": 783.12, "end": 787.519, "text": "And let's say the LLM is not even using the chunks that are after five because they are just not relevant, right?"}, {"id": "s104", "start": 787.519, "end": 789.04, "text": "They're sorted by relevance."}, {"id": "s105", "start": 789.04, "end": 794.16, "text": "So let's say the control plane observes this and it wants to limit the output to just five chunks."}, {"id": "s106", "start": 794.16, "end": 800.399, "text": "So it can push down an action but that action has to be received by boundary and then has to be executed by something."}, {"id": "s107", "start": 800.399, "end": 802.88, "text": "That is where the third node, the governor node comes in."}, {"id": "s108", "start": 802.88, "end": 813.6, "text": "The governor knows what actions are allowed on your agent by you as a developer and it receives those actions from the control plane and knows how to apply it in a non-destructive way."}, {"id": "s109", "start": 813.6, "end": 815.12, "text": "So that's the first three."}, {"id": "s110", "start": 815.12, "end": 819.279, "text": "The fourth one wrap uh the wrap complete is essentially just a helper method."}, {"id": "s111", "start": 819.279, "end": 825.12, "text": "So as we know most of the agent providers or the model providers they provide objects rather than methods for their LMS right."}, {"id": "s112", "start": 825.12, "end": 829.279, "text": "So wrap complete is just another way of applying boundary on objects rather than methods."}, {"id": "s113", "start": 829.279, "end": 832.0, "text": "Let's shift right to the control plane."}, {"id": "s114", "start": 832.0, "end": 834.32, "text": "On the control plane the first layer is the segment."}, {"id": "s115", "start": 834.32, "end": 838.8, "text": "Now this is where the attribution that we talked about earlier comes into picture."}, {"id": "s116", "start": 838.8, "end": 841.92, "text": "So any dimensions that you float from the attribution layer."}, {"id": "s117", "start": 841.92, "end": 854.48, "text": "Let's say you have a preview agent that you share with everyone in this room and your agent is floating a dimension saying that cohort is AIE 2026 right so you can create a segment which is a cohort of users"}, {"id": "s118", "start": 854.48, "end": 871.279, "text": "which is based on this tag like dimension being AI 2026 right and you can apply your budgets at this cohort level so you don't necessarily have to restrict everything at an agent level or a run level you can do you can do rollups you can do fine grain or coarse grain control right so that's the segmentation part"}, {"id": "s119", "start": 871.279, "end": 876.24, "text": "of Ledger as I mentioned is just one agent run all the traces in one place."}, {"id": "s120", "start": 876.24, "end": 877.279, "text": "Then you have budgets."}, {"id": "s121", "start": 877.279, "end": 883.68, "text": "Budgets are basically just the static thresholds that work across a time window against a particular segment or an agent run."}, {"id": "s122", "start": 883.68, "end": 885.04, "text": "And then you have actions."}, {"id": "s123", "start": 885.04, "end": 887.76, "text": "So on the actions part we have broadly two flavors."}, {"id": "s124", "start": 887.76, "end": 892.48, "text": "First is the halt type actions which basically just kill your agent if it exceeds a budget."}, {"id": "s125", "start": 892.48, "end": 896.399, "text": "The second part where we are adding value is the steer type actions."}, {"id": "s126", "start": 896.399, "end": 898.24, "text": "So here we do not kill the agent."}, {"id": "s127", "start": 898.24, "end": 907.04, "text": "Instead we try to steer the behavior of the agent or the components of the agent to try and fit that particular run within the alerted budget."}, {"id": "s128", "start": 907.04, "end": 907.519, "text": "Right?"}, {"id": "s129", "start": 907.519, "end": 910.079, "text": "And then the policies layer is where it all comes together."}, {"id": "s130", "start": 910.079, "end": 917.6, "text": "You basically uh group the budgets the actions and then set your policies against certain segments or agent runs and that is where it executes."}, {"id": "s131", "start": 917.6, "end": 918.32, "text": "Right?"}, {"id": "s132", "start": 918.32, "end": 923.44, "text": "So moving on uh what changes in your code that is the boundary annotation that we just talked about."}, {"id": "s133", "start": 923.44, "end": 925.76, "text": "As Disha mentioned earlier this is all out of band."}, {"id": "s134", "start": 925.76, "end": 927.12, "text": "So you do not have to change your code."}, {"id": "s135", "start": 927.12, "end": 929.92, "text": "You just have to apply the annotation on the methods that you have."}, {"id": "s136", "start": 929.92, "end": 933.8389999999999, "text": "This boundary annotation will take care of floating all the information up to the control plane."}, {"id": "s137", "start": 933.8389999999999, "end": 936.0, "text": "And uh the control plane lies in your own tenant."}, {"id": "s138", "start": 936.0, "end": 939.12, "text": "So you do not need to worry about any data leaks or anything."}, {"id": "s139", "start": 939.12, "end": 943.68, "text": "Then if I talk about the governor, so for the governor, you just have to create an instance."}, {"id": "s140", "start": 943.68, "end": 945.519, "text": "You just have to pass it your own configs."}, {"id": "s141", "start": 945.519, "end": 950.8, "text": "These configs will basically declare what sort of actions are allowed for those agents, right?"}, {"id": "s142", "start": 950.8, "end": 956.72, "text": "so that your control plane cannot just willingly do any random things on your on your agents."}, {"id": "s143", "start": 956.72, "end": 962.32, "text": "So before we move on to the demo, I'll just briefly touch upon the uh test that we're going to use today."}, {"id": "s144", "start": 962.32, "end": 964.48, "text": "So it's a simple two agent workflow."}, {"id": "s145", "start": 964.48, "end": 967.44, "text": "We have a research agent which has access to a search tool."}, {"id": "s146", "start": 967.44, "end": 968.8, "text": "Uh you give it a question."}, {"id": "s147", "start": 968.8, "end": 972.72, "text": "It's allowed to look up on the web as many times as it wants."}, {"id": "s148", "start": 972.72, "end": 979.92, "text": "And once it knows that it has all the data, it passes the findings on to the second agent which is a summarizer which creates creates a research report."}, {"id": "s149", "start": 979.92, "end": 980.56, "text": "Right?"}, {"id": "s150", "start": 980.56, "end": 984.24, "text": "So with that out of the way, let's just quickly walk over to the demo."}, {"id": "s151", "start": 984.24, "end": 987.279, "text": "So for the demo, we have three different scenarios that we're going to talk about."}, {"id": "s152", "start": 987.279, "end": 991.68, "text": "For the first one, we're going to run the token ops in what we call preview mode."}, {"id": "s153", "start": 991.68, "end": 996.88, "text": "So in preview mode, what happens is that all the policies run as is, but the enforcement doesn't happen."}, {"id": "s154", "start": 996.88, "end": 1006.16, "text": "So if you see we ran a particular run over here which completed but we did not see any sort of failures there."}, {"id": "s155", "start": 1006.16, "end": 1012.48, "text": "The policies executed but the actions that were associated with those policies were not allowed to be executed."}, {"id": "s156", "start": 1012.48, "end": 1017.199, "text": "So we're just going to load the dashboard screen here."}, {"id": "s157", "start": 1017.199, "end": 1017.519, "text": "Yeah."}, {"id": "s158", "start": 1017.519, "end": 1020.0, "text": "So this is the governance output."}, {"id": "s159", "start": 1020.0, "end": 1020.959, "text": "Governance is off."}, {"id": "s160", "start": 1020.959, "end": 1022.24, "text": "The run completed."}, {"id": "s161", "start": 1022.24, "end": 1024.559, "text": "But in the dashboard you can see the policies have executed."}, {"id": "s162", "start": 1024.559, "end": 1027.52, "text": "So you can see the cost budget, the cost guard and so on."}, {"id": "s163", "start": 1027.52, "end": 1028.0, "text": "Right?"}, {"id": "s164", "start": 1028.0, "end": 1029.439, "text": "So this was the first scenario."}, {"id": "s165", "start": 1029.439, "end": 1032.64, "text": "For the second scenario, what we're going to do is we're going to turn on the governance."}, {"id": "s166", "start": 1032.64, "end": 1036.24, "text": "Now while that is happening, I just want to touch upon why this is important."}, {"id": "s167", "start": 1036.24, "end": 1044.799, "text": "So if you want to like include this product into your production agents, you want to have a safe environment or a safe way to firstly put it in your production environment,"}, {"id": "s168", "start": 1044.799, "end": 1051.039, "text": "test the guardrails, tweak the guardrail, see what's the policies are doing and then finalize the thresholds."}, {"id": "s169", "start": 1051.039, "end": 1051.44, "text": "Right?"}, {"id": "s170", "start": 1051.44, "end": 1059.76, "text": "So this is the second one where we have now enforced the governance and you can see in the dashboard that the pre-all cost cap has exceeded."}, {"id": "s171", "start": 1059.76, "end": 1065.679, "text": "So you had a budget allotted for this run but the agent exceeded the budget and it was killed immediately."}, {"id": "s172", "start": 1065.679, "end": 1068.72, "text": "So that's the simple circuit breaker sort of a methodology."}, {"id": "s173", "start": 1068.72, "end": 1070.64, "text": "So this is the halt behavior."}, {"id": "s174", "start": 1070.64, "end": 1078.64, "text": "And now let's see the steer behavior which is the which is where we are trying to add value to this entire cost management scenario."}, {"id": "s175", "start": 1078.64, "end": 1081.44, "text": "So this time we're going to run the third the second prompt."}, {"id": "s176", "start": 1081.44, "end": 1087.76, "text": "The budget allotted for this one is slightly higher but it's still not high enough for the agent to complete in time."}, {"id": "s177", "start": 1087.76, "end": 1092.16, "text": "So what instead happens is there is something called cost guard which kicks in."}, {"id": "s178", "start": 1092.16, "end": 1094.72, "text": "This cost guard it takes into account two things."}, {"id": "s179", "start": 1094.72, "end": 1097.919, "text": "First how much of your allotted budget have you consumed?"}, {"id": "s180", "start": 1097.919, "end": 1100.412, "text": "Second what is the velocity at which you're consuming tokens."}, {"id": "s181", "start": 1100.412, "end": 1100.64, "text": "[music]"}, {"id": "s182", "start": 1100.64, "end": 1110.72, "text": "Now based on these two things if it predicts that you're going to run out of your tokens or your allotted budget by the end of the run it's going to inject something into your system instructions"}, {"id": "s183", "start": 1110.72, "end": 1120.88, "text": "that something could be as simple as hey you're running out of budget so make sure that the LM outputs are more succinct or more summarized right so that is the"}, {"id": "s184", "start": 1120.88, "end": 1132.48, "text": "way we are doing the steering now the this was a very simple test bench to show you like how this works on a like working code we have also benchmarked it on a couple of open source repos."}, {"id": "s185", "start": 1132.48, "end": 1135.919, "text": "So we have benchmarked it on browser use as well as metagp."}, {"id": "s186", "start": 1135.919, "end": 1141.36, "text": "Uh we ran it across multiple iterations across stress tests across simple scenarios hard scenarios and everything."}, {"id": "s187", "start": 1141.36, "end": 1148.88, "text": "And the results we see are the average spend goes down by almost 78% with token ops enabled with the full policy suit that we have today."}, {"id": "s188", "start": 1148.88, "end": 1156.72, "text": "On the completion part when we compare it with throttling just simple throttling your simple throttling is going to kill your agent runs no matter what."}, {"id": "s189", "start": 1156.72, "end": 1157.2, "text": "Right?"}, {"id": "s190", "start": 1157.2, "end": 1164.799, "text": "So with the reduced average spend what you get is you get an uplift in that completion percentage from 67% to roughly 96%."}, {"id": "s191", "start": 1164.799, "end": 1167.52, "text": "So that is the value ad that token ops is doing here."}, {"id": "s192", "start": 1167.52, "end": 1170.88, "text": "Now this is the policy catalog that we run this benchmark against."}, {"id": "s193", "start": 1170.88, "end": 1172.4, "text": "This is what we support today."}, {"id": "s194", "start": 1172.4, "end": 1178.4, "text": "We kind of researched what are the different failure modes that are there today out in the wild and tried to cover most of them here."}, {"id": "s195", "start": 1178.4, "end": 1187.6, "text": "So you have things across spend management, you have things across context management like context compaction, tool output reduction, you have things across loop detection and progress detection and stuff like that."}, {"id": "s196", "start": 1187.6, "end": 1189.919, "text": "So this is the entire set of policies that we support."}, {"id": "s197", "start": 1189.919, "end": 1191.76, "text": "And at the bottom you can see the actions."}, {"id": "s198", "start": 1191.76, "end": 1193.84, "text": "So as I mentioned earlier, we have two flavors."}, {"id": "s199", "start": 1193.84, "end": 1198.32, "text": "You have the uh the halt type actions and then the steer type actions."}, {"id": "s200", "start": 1198.32, "end": 1201.6, "text": "So for the steer we can do allow, mutate, inject and so on."}, {"id": "s201", "start": 1201.6, "end": 1203.84, "text": "And for the halt, it can be a simple kill."}, {"id": "s202", "start": 1203.84, "end": 1207.2, "text": "But this is not the end state that we envision for this."}, {"id": "s203", "start": 1207.2, "end": 1212.559, "text": "The end state is we have a lot of data right we have a ledger that is continuously being updated."}, {"id": "s204", "start": 1212.559, "end": 1229.44, "text": "So what we want to try is we want to try a self-learning module within the token ops plane within the control plane which can look at this ledger and ask this question hey why or what is the failure mode that I'm still not able to catch and then based on that it can do two things one is"}, {"id": "s205", "start": 1229.44, "end": 1245.919, "text": "it can enhance it can generate new policies on the fly based on the missing or the still uh runaway costs or it can refine the existing parameters for the existing policies that are there so that the runaway costs are managed more effectively in the future."}, {"id": "s206", "start": 1245.919, "end": 1249.36, "text": "So with that I think uh that is all we have for you guys today."}, {"id": "s207", "start": 1249.36, "end": 1253.2, "text": "Thank you so much for your time and you can scan this QR code that's the public wiki."}, {"id": "s208", "start": 1253.2, "end": 1255.52, "text": "We are updating it almost regularly."}, {"id": "s209", "start": 1255.52, "end": 1263.36, "text": "So you can scan this and stay up to date and uh Tisha and I are around so if you guys have any questions or if you want to discuss more about it just let us know."}, {"id": "s210", "start": 1263.36, "end": 1263.919, "text": "That's it."}, {"id": "s211", "start": 1263.919, "end": 1265.474, "text": "Thank you."}, {"id": "s212", "start": 1265.474, "end": 1267.474, "text": "[applause]"}]}, {"id": "HvMyYLTfvhg", "title": "Building Agents Is Trivial Now, Context Is the Next Frontier — Jeff Ng, Unblocked", "channel": "AI Engineer", "duration": 802, "upload_date": null, "url": "https://www.youtube.com/watch?v=HvMyYLTfvhg", "api": "/api/talks/HvMyYLTfvhg.json", "summary_url": "/#HvMyYLTfvhg", "transcript": {"html": "/transcripts/HvMyYLTfvhg.html", "txt": "/transcripts/HvMyYLTfvhg.txt", "vtt": "/transcripts/HvMyYLTfvhg.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.44, "end": 14.36, "text": "Hi all."}, {"id": "s3", "start": 14.36, "end": 15.32, "text": "Uh my name is Jeff."}, {"id": "s4", "start": 15.32, "end": 22.32, "text": "I'm a founding engineer at Unblock, and I'm here to talk to you about how building agents has actually gotten pretty easy."}, {"id": "s5", "start": 22.32, "end": 26.88, "text": "But unfortunately, they still get things confidently wrong."}, {"id": "s6", "start": 26.92, "end": 33.52, "text": "So, 6 months ago, it required a team's effort and basically a quarter to build out an agent."}, {"id": "s7", "start": 33.52, "end": 37.12, "text": "Um an agent is more than just models and tools."}, {"id": "s8", "start": 37.12, "end": 43.32, "text": "It's the models, the tools, and everything required to build out a production service."}, {"id": "s9", "start": 43.72, "end": 49.96, "text": "Here are some examples of the different systems that were necessary in order to build something out."}, {"id": "s10", "start": 49.96, "end": 54.56, "text": "Each one of these was basically its own company or at least a company function."}, {"id": "s11", "start": 54.56, "end": 59.2, "text": "Not going to go through each one of these, but you know, a few that stood out to me."}, {"id": "s12", "start": 59.2, "end": 62.64, "text": "First one, checkpoint and state persistence."}, {"id": "s13", "start": 62.64, "end": 66.4, "text": "Agent runs, they're typically long-lived and stateful."}, {"id": "s14", "start": 66.4, "end": 72.8, "text": "Um unfortunately, uh infrastructure itself though, those that's ephemeral."}, {"id": "s15", "start": 72.8, "end": 76.52, "text": "Crashing without durability can actually lead to a lot of state loss."}, {"id": "s16", "start": 76.52, "end": 86.03999999999999, "text": "And that state kind of includes things like message history, tool calls, as well as, you know, where you are in the loop."}, {"id": "s17", "start": 86.03999999999999, "end": 89.4, "text": "Without these things, you can't resume the session."}, {"id": "s18", "start": 89.4, "end": 92.4, "text": "Uh one option is, you know, maybe you want to restart the session."}, {"id": "s19", "start": 92.4, "end": 96.0, "text": "Unfortunately, that's actually quite expensive as well."}, {"id": "s20", "start": 96.0, "end": 103.92, "text": "Uh you lose out on all the tokens that you'd originally used, um as well as, you know, latency."}, {"id": "s21", "start": 103.92, "end": 107.36, "text": "Uh from a user experience standpoint, you've already triggered that session."}, {"id": "s22", "start": 107.36, "end": 110.12, "text": "Now you have to wait for the whole thing to go again."}, {"id": "s23", "start": 110.12, "end": 112.32, "text": "And lastly, side effects."}, {"id": "s24", "start": 112.32, "end": 117.8, "text": "Your agent might have performed some side effects, and now there's a chance of those doubling up."}, {"id": "s25", "start": 118.0, "end": 121.76, "text": "So, next thing, sandbox infrastructure, right?"}, {"id": "s26", "start": 121.76, "end": 127.76, "text": "So, as we all know, we're running more and more agent-generated code as well as third-party code."}, {"id": "s27", "start": 127.76, "end": 133.2, "text": "This gets all run on your infrastructure, and due to that, there are some complexities."}, {"id": "s28", "start": 133.2, "end": 148.88, "text": "Uh because of that, we want to introduce isolated sandboxes, which help prevent uh unnecessary reads of environment secrets, unnecessary network access, you know, just in general, we don't want to take down the shared host."}, {"id": "s29", "start": 149.959, "end": 151.959, "text": "And then, observability."}, {"id": "s30", "start": 151.959, "end": 155.76, "text": "How do we answer the question, \"Where did this fail?\""}, {"id": "s31", "start": 155.76, "end": 163.48, "text": "Typically, this includes tracking logs and traces from across half a dozen systems."}, {"id": "s32", "start": 163.8, "end": 168.88, "text": "Everything I've mentioned here, none of this actually improves an agent's capabilities."}, {"id": "s33", "start": 168.88, "end": 175.28, "text": "They're all taxes one has to pay in order to get an agent out there to play the game."}, {"id": "s34", "start": 176.8, "end": 179.88, "text": "Thankfully, things have changed quite a bit."}, {"id": "s35", "start": 179.88, "end": 193.6, "text": "Um the whole ecosystem has matured quite a bit, and cloud infrastructure players such as Cloudflare, uh Vercel, AWS, they've gone and taken some of that complexity away and built primitives"}, {"id": "s36", "start": 193.6, "end": 205.6, "text": "that these frameworks, Flu, Vercel E Maestra, with these together, you know, they've taken a lot of complexity away, and you can focus more on building the actual agent itself."}, {"id": "s37", "start": 205.6, "end": 211.56, "text": "The core logic that actually helps you and your team and your customers."}, {"id": "s38", "start": 213.56, "end": 216.04, "text": "So, here's an example of one."}, {"id": "s39", "start": 216.04, "end": 225.84, "text": "Uh I played around with Flu and Cloudflare, and as you can see on the left-hand side, you know, we basically handle everything as mentioned before."}, {"id": "s40", "start": 225.84, "end": 233.64, "text": "So, the primitives plus the framework lead to a situation where it's actually not that much code to define an agent."}, {"id": "s41", "start": 233.64, "end": 237.8, "text": "Uh one of the things I was shocked at when I first took a look at the documentation."}, {"id": "s42", "start": 237.8, "end": 244.0, "text": "To get in the details, all you really have to do when defining agent is A, deciding which model you want to use."}, {"id": "s43", "start": 244.0, "end": 247.36, "text": "B, the instructions or, you know, the system prompt."}, {"id": "s44", "start": 247.36, "end": 252.64, "text": "C, the tools that you want to ask the agent to have access to."}, {"id": "s45", "start": 252.64, "end": 255.12, "text": "Skills, the things I can do."}, {"id": "s46", "start": 255.12, "end": 259.239, "text": "As well as the sandbox location, where things are being run."}, {"id": "s47", "start": 259.239, "end": 271.36, "text": "So, uh to give you an example of this, I've actually gone and built out a issue enrichment system specifically for Linear."}, {"id": "s48", "start": 271.36, "end": 281.52, "text": "So, what this does is, given a Linear ticket and access to your code repository, it'll go out, you know, fetch the Linear ticket, determine whether or not it's a feature"}, {"id": "s49", "start": 281.52, "end": 283.0, "text": "or a bug."}, {"id": "s50", "start": 283.0, "end": 291.24, "text": "From there, it'll do some code searching, provide all that context to the agent, and then come up with a plan of next steps."}, {"id": "s51", "start": 291.24, "end": 299.36, "text": "On the left-hand side here, this is a issue that one of my colleagues, uh smart engineer, had posted, I think, a month ago."}, {"id": "s52", "start": 299.36, "end": 306.68, "text": "Uh to summarize it, what had happened was, we had some pretty serious degradation in our agentic QA pipeline."}, {"id": "s53", "start": 306.68, "end": 313.24, "text": "Time to first character was taking 3 to 4 seconds when it should realistically be in the hundreds of milliseconds."}, {"id": "s54", "start": 313.24, "end": 318.24, "text": "So, let's see what happens when, you know, we put this through the system."}, {"id": "s55", "start": 320.04, "end": 324.36, "text": "So, as you'll see here, I've set up the agent to go fetch the agent."}, {"id": "s56", "start": 324.36, "end": 331.16, "text": "I've given it the skills and tools to actually go and fetch the code, search the code, and query against that."}, {"id": "s57", "start": 331.16, "end": 336.64, "text": "That's being passed back to the agent, which is doing some reasoning against that right now."}, {"id": "s58", "start": 336.8, "end": 338.24, "text": "And then, wait a little bit."}, {"id": "s59", "start": 338.24, "end": 342.6, "text": "At this point, we've updated the Linear issue ticket."}, {"id": "s60", "start": 342.6, "end": 347.08, "text": "The recommendation here is to re-enable our async dispatch, which makes sense."}, {"id": "s61", "start": 347.08, "end": 352.76, "text": "It allows us to run a lot more of our QE pipeline in parallel on a single machine."}, {"id": "s62", "start": 352.76, "end": 354.15999999999997, "text": "Sounds great, right?"}, {"id": "s63", "start": 354.15999999999997, "end": 357.4, "text": "Unfortunately, uh this is wrong."}, {"id": "s64", "start": 357.4, "end": 367.64, "text": "This had actually caused an outage a few days ago in one of our uh support engineers had explicitly disabled this uh before this ticket was uh shown."}, {"id": "s65", "start": 367.64, "end": 371.88, "text": "So, where did things go wrong?"}, {"id": "s66", "start": 371.88, "end": 375.4, "text": "Why was the uh you know, why did I get it wrong?"}, {"id": "s67", "start": 375.4, "end": 378.52, "text": "The agent I had written, it didn't have a full picture."}, {"id": "s68", "start": 378.52, "end": 391.04, "text": "It was missing the context from the Slack discussion that happened after the issue where the engineers came together, uh went through the actual outage, what went wrong, what was the fix, and the next steps."}, {"id": "s69", "start": 391.04, "end": 396.4, "text": "It also was missing the postmortem uh linear ticket, which came as a result of that."}, {"id": "s70", "start": 396.4, "end": 400.84000000000003, "text": "In general, it had a narrow understanding of the problem."}, {"id": "s71", "start": 401.0, "end": 409.04, "text": "This concept of missing knowledge and intent that's stored across an organization and different systems is something that comes back and back again."}, {"id": "s72", "start": 409.04, "end": 420.08, "text": "And since this was deployed as a background agent, this is going to make that mistake silently in the background, misinforming both my teammates and potentially other agents."}, {"id": "s73", "start": 420.08, "end": 423.72, "text": "So, I guess the next question is, why don't we run into this locally?"}, {"id": "s74", "start": 423.72, "end": 428.36, "text": "You know, we all use agents locally, we don't necessarily run into these issues."}, {"id": "s75", "start": 428.36, "end": 434.2, "text": "Well, you, the human, the engineers, we currently act as that context layer."}, {"id": "s76", "start": 434.2, "end": 443.52, "text": "When working with an agent, you know, you're there to ask questions, catch any errors, and supply the missing facts on every single turn."}, {"id": "s77", "start": 443.52, "end": 450.36, "text": "A person knew why the code is the way it is, what broke last time, and what we've decided to do about it."}, {"id": "s78", "start": 450.36, "end": 453.28, "text": "The agent, though, it only has what's on the right-hand side, right?"}, {"id": "s79", "start": 453.28, "end": 460.919, "text": "It has instructions, the tools and skills we specifically gave it, the code, as well as the ticket in front of it."}, {"id": "s80", "start": 460.919, "end": 467.84000000000003, "text": "When an agent is in the loop, well, sorry, when a human is in the loop with the agent, we're there to catch the steer."}, {"id": "s81", "start": 467.84000000000003, "end": 470.6, "text": "Ultimately, we're there to babysit the agent."}, {"id": "s82", "start": 470.6, "end": 482.0, "text": "But as agents have gotten trivially easy to deploy as I showed earlier with Flu Cloudflare, the without the human in the loop, this issue becomes more and more prevalent."}, {"id": "s83", "start": 482.0, "end": 485.04, "text": "This missing context becomes a sign of failure."}, {"id": "s84", "start": 485.04, "end": 490.76, "text": "You know, all that intuition and knowledge that we've had as humans needs to be replaced."}, {"id": "s85", "start": 490.76, "end": 494.16, "text": "Something needs to carry the load."}, {"id": "s86", "start": 494.68, "end": 497.6, "text": "So, that thing, that's a context engine."}, {"id": "s87", "start": 497.6, "end": 505.68, "text": "A context engine is a system that provides task-relevant information based on who you are and what matters."}, {"id": "s88", "start": 505.68, "end": 509.48, "text": "It also resolves all the conflicts across multiple data sets."}, {"id": "s89", "start": 509.48, "end": 516.719, "text": "It understands your access rules or the agent's access rules and only uh respects that and only provides information that's relevant."}, {"id": "s90", "start": 516.719, "end": 526.96, "text": "And most importantly, it delivers a synthesized understanding that an agent can act on, not just a list of documents that I have to reason upon itself."}, {"id": "s91", "start": 527.68, "end": 530.52, "text": "So, how does this context engine work?"}, {"id": "s92", "start": 530.52, "end": 532.48, "text": "Well, let's take a step back."}, {"id": "s93", "start": 532.48, "end": 535.16, "text": "What does an agent actually need?"}, {"id": "s94", "start": 535.16, "end": 540.12, "text": "An agent needs Clearly, it needs context outside of just your source code."}, {"id": "s95", "start": 540.12, "end": 543.64, "text": "Think about everything that you need to work day-to-day."}, {"id": "s96", "start": 543.64, "end": 545.04, "text": "It's not just the code."}, {"id": "s97", "start": 545.04, "end": 553.44, "text": "It's, you know, the Slack discussions where decisions are made, the documentation where we show all the best practices."}, {"id": "s98", "start": 553.44, "end": 557.36, "text": "All that is important to your day-to-day process, and that's true for your agent as well."}, {"id": "s99", "start": 557.36, "end": 559.44, "text": "So, what we do here is we connect everything."}, {"id": "s100", "start": 559.44, "end": 563.92, "text": "The docs, code, tickets, conversations."}, {"id": "s101", "start": 563.92, "end": 567.6, "text": "We then build a model of your organization, of your system."}, {"id": "s102", "start": 567.6, "end": 572.64, "text": "And we piece how all these things work together and make it generally available to your agents."}, {"id": "s103", "start": 572.64, "end": 580.76, "text": "From that model, the agents are only provided a a of that data, which has been reconciled, ranked, and scoped to your permissions."}, {"id": "s104", "start": 580.76, "end": 585.32, "text": "Scattered context comes in, grounded context comes out."}, {"id": "s105", "start": 585.92, "end": 589.68, "text": "The obvious next question is, why can't we just do this with MCP, right?"}, {"id": "s106", "start": 589.68, "end": 597.48, "text": "You could connect a Slack MCP, a Linear MCP, a GitHub MCP, and with that, all that data is accessible."}, {"id": "s107", "start": 597.48, "end": 602.16, "text": "MCP is great at access, but access isn't understanding."}, {"id": "s108", "start": 602.16, "end": 609.96, "text": "An MCP hands the agent the raw results, and you know, you're now dependent on that agent to actually decide what to believe in."}, {"id": "s109", "start": 609.96, "end": 617.84, "text": "You end up flooding the agent with irrelevant data, filling up the context window, and you know, overall context costs just go up."}, {"id": "s110", "start": 617.84, "end": 621.04, "text": "It also leaves the local agent to handle conflicts in data."}, {"id": "s111", "start": 621.04, "end": 625.88, "text": "You know, your Linear MCP and your Slack MCP may come back with different results."}, {"id": "s112", "start": 625.88, "end": 630.76, "text": "You're just leaving the agent to make that decision somewhat ad hoc at the moment."}, {"id": "s113", "start": 632.28, "end": 635.2, "text": "So, back to the original problem I had earlier."}, {"id": "s114", "start": 635.2, "end": 640.8, "text": "This is the same file, same engine, but now we've connected the context agent."}, {"id": "s115", "start": 640.8, "end": 649.56, "text": "Uh what we do here is is we're currently prompting Unblock to do some research on the ticket and provide that context to the agent."}, {"id": "s116", "start": 649.56, "end": 652.8389999999999, "text": "So, let's see that in action."}, {"id": "s117", "start": 654.88, "end": 657.6, "text": "Sorry about that."}, {"id": "s118", "start": 661.96, "end": 662.96, "text": "So, here we go."}, {"id": "s119", "start": 662.96, "end": 664.2, "text": "Uh we're doing the very similar thing."}, {"id": "s120", "start": 664.2, "end": 666.16, "text": "We're fetching the Linear ticket."}, {"id": "s121", "start": 666.16, "end": 669.68, "text": "But, you'll notice here that we're actually calling the Unblock context engine."}, {"id": "s122", "start": 669.68, "end": 678.8389999999999, "text": "And what's done here is actually it's found the relevant Linear postmortem, as well as a Slack conversation where we've had the entire discussion between the engineering teams."}, {"id": "s123", "start": 678.8389999999999, "end": 686.04, "text": "And as part of that, we've returned a understanding, and that's now been provided to the agent as a summary."}, {"id": "s124", "start": 686.04, "end": 690.72, "text": "So, the agent no longer has to actually reason from those documents."}, {"id": "s125", "start": 691.0, "end": 701.12, "text": "Uh at this point, you'll notice here the agent now has been updated."}, {"id": "s126", "start": 701.12, "end": 709.44, "text": "Uh the recommendation has gone from breaking and causing another issue to actually preventing a another outage."}, {"id": "s127", "start": 713.36, "end": 719.44, "text": "So, the example I've shown here is issue ticket management, but this context layer can actually go a lot further."}, {"id": "s128", "start": 719.44, "end": 722.12, "text": "Uh for example, coding."}, {"id": "s129", "start": 722.12, "end": 725.76, "text": "Everyone here does uh coding with uh cloud code or cortex."}, {"id": "s130", "start": 725.76, "end": 733.4, "text": "Using an Unblocked context engine to actually hydrate the agent plan goes a long way in terms of saving context and tokens."}, {"id": "s131", "start": 733.4, "end": 735.4, "text": "Uh code review."}, {"id": "s132", "start": 735.4, "end": 739.52, "text": "It makes the PRs look as if they've been reviewed by an expert on your team."}, {"id": "s133", "start": 739.52, "end": 741.16, "text": "Who doesn't like that?"}, {"id": "s134", "start": 741.16, "end": 747.72, "text": "As well as surfacing the correct answers to your customer success team as well as sales."}, {"id": "s135", "start": 747.72, "end": 756.0, "text": "In general, there are many instances where you might want an agent to have institutional and tribal knowledge of your organization."}, {"id": "s136", "start": 757.04, "end": 758.28, "text": "Just want to leave you on this."}, {"id": "s137", "start": 758.28, "end": 762.0, "text": "I think this quote encapsulates what we're trying to solve at Unblocked."}, {"id": "s138", "start": 762.0, "end": 765.92, "text": "The gap isn't intelligence, it's context."}, {"id": "s139", "start": 766.44, "end": 768.12, "text": "So, thank you."}, {"id": "s140", "start": 768.12, "end": 773.8389999999999, "text": "Uh I'll be at booth P16 along with the rest of my team if you guys have any questions."}, {"id": "s141", "start": 773.8389999999999, "end": 783.52, "text": "There will be additional breakout sessions later tomorrow, I believe, that goes a lot more in depth about actually how the context engine works and you know, how you can benefit from that."}, {"id": "s142", "start": 783.52, "end": 784.699, "text": "Cheers."}, {"id": "s143", "start": 784.699, "end": 786.699, "text": "[applause]"}]}, {"id": "KHudyx5wW3U", "title": "Agent Frameworks Considered Harmful — Rémi Louf, .txt", "channel": "AI Engineer", "duration": 1229, "upload_date": null, "url": "https://www.youtube.com/watch?v=KHudyx5wW3U", "api": "/api/talks/KHudyx5wW3U.json", "summary_url": "/#KHudyx5wW3U", "transcript": {"html": "/transcripts/KHudyx5wW3U.html", "txt": "/transcripts/KHudyx5wW3U.txt", "vtt": "/transcripts/KHudyx5wW3U.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.4, "end": 13.12, "text": "Hi everyone."}, {"id": "s3", "start": 13.12, "end": 25.84, "text": "So originally I thought I was going to give a very technical talk but I saw was in the leadership track which I'm not sure what it means but I was like okay I'm going to do half high level and half technical."}, {"id": "s4", "start": 25.84, "end": 41.52, "text": "So it's more a story about what I you know what I did in January because in around December um agents kind of became really good uh you know there was a step function something happened uh I think it was opus 4.6 six"}, {"id": "s5", "start": 41.52, "end": 50.8, "text": "and that's when I realized and I work in AI where I was like okay this thing is really happening and so I took two weeks out I took two weeks away so I'm the CEO of"}, {"id": "s6", "start": 50.8, "end": 58.0, "text": "text uh you know which is 15 people company I just told my CTO I was like okay I'm just going to go away for two weeks and I'm just going to dive"}, {"id": "s7", "start": 58.0, "end": 70.24, "text": "in this thing and try to understand what we can get out of it and how good it is and so the story is you know it is the story of me scratching my own itch for two weeks and trying to figure out how"}, {"id": "s8", "start": 70.24, "end": 77.68, "text": "we can use actually use agents and what are good primitives to build agents and whether you know it already exists."}, {"id": "s9", "start": 77.68, "end": 84.72, "text": "Um this was a really clickbait title but actually it turns out to be a good title even for this talk."}, {"id": "s10", "start": 84.72, "end": 89.759, "text": "Um so what you can see here on the left the castle is my office."}, {"id": "s11", "start": 89.759, "end": 90.72, "text": "Uh that's true."}, {"id": "s12", "start": 90.72, "end": 102.4, "text": "I do rent an office in Castle and the small thing with an arrow uh that you can see is like this robot mower which kind of works unattended all day every day."}, {"id": "s13", "start": 102.4, "end": 111.119, "text": "Uh it just does its stuff in the background without anyone having to use a remote control or think about it or anything."}, {"id": "s14", "start": 111.119, "end": 118.24000000000001, "text": "And I kind of wanted the same thing for my morning because my mornings are always the same thing the first couple hours."}, {"id": "s15", "start": 118.24000000000001, "end": 134.64, "text": "It's browse market news review of like linear could be Jira my CRM and also I like to walk for an about an hour in the morning and then the next hour is spent trying to process the really long voice note that you know was recorded while walking"}, {"id": "s16", "start": 134.64, "end": 146.879, "text": "and you know all I wanted was my morning briefing with my coffee and that's kind of what we've been told for a couple of years like what the future would be."}, {"id": "s17", "start": 146.879, "end": 155.92000000000002, "text": "Um, but then when you really start working with it, even if you're not coding, all you get is a TUI today."}, {"id": "s18", "start": 155.92000000000002, "end": 157.2, "text": "Uh, so it's amazing."}, {"id": "s19", "start": 157.2, "end": 157.92000000000002, "text": "You can code."}, {"id": "s20", "start": 157.92000000000002, "end": 161.599, "text": "You can actually, you know, I started doing things that were not coding in it."}, {"id": "s21", "start": 161.599, "end": 162.64, "text": "They're great for this."}, {"id": "s22", "start": 162.64, "end": 172.8, "text": "Uh, agents are great for this, but it's kind of the equivalent of having a robot like a tractor mower that you still have to stay on even if it's driving by itself, right?"}, {"id": "s23", "start": 172.8, "end": 181.92, "text": "It's kind of very frustrating because you have to it can do many things but you still have to be on and so of course the labs didn't stop there"}, {"id": "s24", "start": 181.92, "end": 197.76, "text": "and they came up with apps uh which I call basically SSH with vibes that's great but in this situation when that came up I was like wow that's awesome I don't have to use like a ter like SSH on my phone anymore codeex is great"}, {"id": "s25", "start": 197.76, "end": 207.2, "text": "however I noticed I just started you know I was on my walk and I was just instructing the agent to do things while I was walking and so I wasn't thinking you know very clearly anymore."}, {"id": "s26", "start": 207.2, "end": 210.4, "text": "I just started running agents on my phone during my morning walk."}, {"id": "s27", "start": 210.4, "end": 217.599, "text": "And this is not great because this is the equivalent of this is you're kind of midway uh you know it's not the tractor that you have to stay on."}, {"id": "s28", "start": 217.599, "end": 220.959, "text": "It can actually do something without you being right next to it."}, {"id": "s29", "start": 220.959, "end": 225.92000000000002, "text": "But you still have this remote control that you know you kind of have to change the trajectory every now and then."}, {"id": "s30", "start": 225.92000000000002, "end": 227.44, "text": "Uh that's useful."}, {"id": "s31", "start": 227.44, "end": 236.48, "text": "It's kind of absurd uh when you think about it and actually when you look at people like on their phone all the time just doing this, it's kind of absurd and it's clearly transitional."}, {"id": "s32", "start": 236.48, "end": 239.84, "text": "Like surely we're not it's not it's not going to stop there."}, {"id": "s33", "start": 239.84, "end": 252.4, "text": "Um and so I did a very dumb thing as a co which is I started coding uh don't tell my board and I started to build the dumbest thing that could possibly work."}, {"id": "s34", "start": 252.4, "end": 256.479, "text": "And of course it became a really a crazy rabbit hole."}, {"id": "s35", "start": 256.479, "end": 259.359, "text": "Uh the repo is there if you want to take a look at it."}, {"id": "s36", "start": 259.359, "end": 260.88, "text": "The code is not amazing."}, {"id": "s37", "start": 260.88, "end": 262.32, "text": "Uh but it works."}, {"id": "s38", "start": 262.32, "end": 269.44, "text": "Um so the first thing is that you know I started using frameworks."}, {"id": "s39", "start": 269.44, "end": 270.88, "text": "Uh I mean there are great frameworks."}, {"id": "s40", "start": 270.88, "end": 276.8, "text": "I'm not going to name any frameworks because they're all good in their own way and they all have flows in their own way which is fine."}, {"id": "s41", "start": 276.8, "end": 283.919, "text": "Uh but I spent all my time actually editing the prompt within the code and I was like this is actually not very useful."}, {"id": "s42", "start": 283.919, "end": 294.32, "text": "So I'm like everyone here, I hate YAML u like the next guy, but I still found that this was actually a lot easier to start implementing agents without code."}, {"id": "s43", "start": 294.32, "end": 298.15999999999997, "text": "Uh you can version it, you can diff it, uh you can review in the PR."}, {"id": "s44", "start": 298.15999999999997, "end": 301.44, "text": "Um but it's just and it's just so easy."}, {"id": "s45", "start": 301.44, "end": 309.84, "text": "You can just, you know, write your file, you drop it in a folder, and then it just magically appears once you have the runtime and it just magically works."}, {"id": "s46", "start": 309.84, "end": 320.0, "text": "Um, and you know, then I needed like my market watch to run every morning while I'm, you know, while I'm walking in the fields."}, {"id": "s47", "start": 320.0, "end": 326.24, "text": "And for that we have things that, you know, uh, have been around for a while, which is chron jobs."}, {"id": "s48", "start": 326.24, "end": 340.08, "text": "uh and schedules specify you know when the agents need to be run and also we'll see it's very important later uh they publish uh they publish events and you know markdown"}, {"id": "s49", "start": 340.08, "end": 353.6, "text": "and chron obviously you know it's much more complicated than under the hood but the interface is this you don't write code and that's the whole product so far and honestly just mostly worked at this point I'll I'll come back on mostly"}, {"id": "s50", "start": 353.6, "end": 359.759, "text": "uh later And so this is actually a real picture of my one of my morning walks."}, {"id": "s51", "start": 359.759, "end": 364.24, "text": "And so what I do is I record voice notes while I'm walking."}, {"id": "s52", "start": 364.24, "end": 373.919, "text": "Uh but chron you know chron jobs I mean people would use chron jobs for this because that's what's available in codeex today but they're not ideal because they cover when"}, {"id": "s53", "start": 373.919, "end": 375.759, "text": "but this is just one point in time."}, {"id": "s54", "start": 375.759, "end": 388.72, "text": "It doesn't cover because this happened and you know things that happened in our system like automatically when you drop the voice note now in the system it will emit an event"}, {"id": "s55", "start": 388.72, "end": 401.52, "text": "and an agent will react to that event and it's the same thing when you have a new email a new entry in the CRM I mean anything a new PR that's open a new PR that's merged etc just reacts to events it's not just a chrome job"}, {"id": "s56", "start": 401.52, "end": 410.72, "text": "and that and that means that you know agents of the Voice note processor is just you know not a chron job but here you have accepts and returns."}, {"id": "s57", "start": 410.72, "end": 421.599, "text": "So it just declare what it accepts and what it returns as an event and here it accepts a voice note transcribes it turn it into durable notes on the right"}, {"id": "s58", "start": 421.599, "end": 424.96, "text": "and it emits a new event and for that it uses structured outputs."}, {"id": "s59", "start": 424.96, "end": 426.479, "text": "We'll come back to this."}, {"id": "s60", "start": 426.479, "end": 435.599, "text": "And you know, now we finally have the future we're promised because that voice note agent emits voice note processed."}, {"id": "s61", "start": 435.599, "end": 440.8, "text": "And then I have my daily brief agent that actually will take the output of the chrome job."}, {"id": "s62", "start": 440.8, "end": 447.759, "text": "We'll take the output of the voice note agents and we create my daily brief which is posted as a slack message."}, {"id": "s63", "start": 447.759, "end": 460.8, "text": "So the slack message.post post event is actually uh is actually like um a process actually subscribes to this and emits uh and sends a slack message to me."}, {"id": "s64", "start": 460.8, "end": 462.88, "text": "It's actually this is a real this is a real thing."}, {"id": "s65", "start": 462.88, "end": 463.36, "text": "It's working."}, {"id": "s66", "start": 463.36, "end": 473.68, "text": "I can show you after on my phone and you know there are frameworks that are going to sell you the fact that you need graphs for this in code."}, {"id": "s67", "start": 473.68, "end": 476.479, "text": "Uh you do not need graph uh in this case."}, {"id": "s68", "start": 476.479, "end": 478.24, "text": "All you need is events."}, {"id": "s69", "start": 478.24, "end": 479.919, "text": "You have no edges to maintain."}, {"id": "s70", "start": 479.919, "end": 482.96, "text": "Agents sub simply subscribe to events."}, {"id": "s71", "start": 482.96, "end": 486.08, "text": "Anyone can come in and edit this."}, {"id": "s72", "start": 486.08, "end": 487.12, "text": "You don't need to."}, {"id": "s73", "start": 487.12, "end": 488.56, "text": "Yeah, you don't need to know how to code."}, {"id": "s74", "start": 488.56, "end": 491.039, "text": "You just need to know what events exist in the system."}, {"id": "s75", "start": 491.039, "end": 492.8, "text": "Fun and fan out are free."}, {"id": "s76", "start": 492.8, "end": 499.68, "text": "No code and it's just drop a file and the topology emerges whatever the log says happened."}, {"id": "s77", "start": 499.68, "end": 504.879, "text": "And you know then of course I I tried to run it."}, {"id": "s78", "start": 504.879, "end": 514.88, "text": "So the first version took about I mean you know I cheated I cheated I used uh I used codeex and it took about like a day to write like the first thing"}, {"id": "s79", "start": 514.88, "end": 527.8389999999999, "text": "uh out of my week but of course I tried it and it broke uh so these are real examples actually the dates know but it's real examples it's like the first day delay brief was posted to Slack twice"}, {"id": "s80", "start": 527.8389999999999, "end": 534.9590000000001, "text": "um on Wednesday one of my voice notes completely vanished and then you know towards the end of the week."}, {"id": "s81", "start": 534.9590000000001, "end": 548.399, "text": "I I kind of like played with the prompts all week and the market brief was garbage, but I didn't version uh I didn't version my changes and I couldn't remember actually what I changed in the prompt that made the thing"}, {"id": "s82", "start": 548.399, "end": 550.0, "text": "completely useless."}, {"id": "s83", "start": 550.0, "end": 559.36, "text": "Now, if there are distributed or existed engineers in the room, you probably know this shopping list already."}, {"id": "s84", "start": 559.36, "end": 573.519, "text": "uh there is nothing new under the sun and you know each failure so each of these failure modes that you found actually led to building one piece of what turned out to be a runtime."}, {"id": "s85", "start": 573.519, "end": 576.88, "text": "So the lost note actually turned into a log."}, {"id": "s86", "start": 576.88, "end": 584.08, "text": "I just wanted everything to be saved forever so that I could go back to it and look into uh into what happened."}, {"id": "s87", "start": 584.08, "end": 584.9590000000001, "text": "the duplicates."}, {"id": "s88", "start": 584.9590000000001, "end": 589.6, "text": "It was because I was not following, you know, it did several attempts and I was not following them."}, {"id": "s89", "start": 589.6, "end": 590.88, "text": "I didn't have a proper queue."}, {"id": "s90", "start": 590.88, "end": 598.16, "text": "I wasn't counting the attempts, etc., etc. And then probably the most interesting part is the last prompt."}, {"id": "s91", "start": 598.16, "end": 608.56, "text": "I got into a really deep rabbit hole in there and I just ended up uh building a content like a content addressed system for this uh content addressed system."}, {"id": "s92", "start": 608.56, "end": 613.12, "text": "You can think of git uh you can think of nyx and any other build system."}, {"id": "s93", "start": 613.12, "end": 617.92, "text": "And you know that was and I didn't do this because I wanted to design a runtime."}, {"id": "s94", "start": 617.92, "end": 624.72, "text": "I mean by that point I still just wanted my agents to work and I also like the distraction."}, {"id": "s95", "start": 624.72, "end": 631.12, "text": "Uh and I just paid off debt as it appeared like errors as they appeared."}, {"id": "s96", "start": 631.12, "end": 635.12, "text": "I hope my board won't see this talk."}, {"id": "s97", "start": 635.12, "end": 638.8, "text": "Uh so the log the log is the systems memory."}, {"id": "s98", "start": 638.8, "end": 642.8, "text": "Uh nothing is lost and everything is observed."}, {"id": "s99", "start": 642.8, "end": 653.12, "text": "uh you can you know you only have one append only events table on the left it's a real common line uh in like command za events and you get all the events"}, {"id": "s100", "start": 653.12, "end": 668.24, "text": "they are causally linked as well like you know which event triggered which event which happens to be super useful when you're debugging and you know even with three four agents you start having like major debugging headaches so that was super"}, {"id": "s101", "start": 668.24, "end": 676.48, "text": "super helpful Um and everything is querable which again for debugging."}, {"id": "s102", "start": 676.48, "end": 691.519, "text": "The second thing is you know okay we have a log so we can trace back things etc. But it's still really hard to know what went into the like what went to the model what prompt was sent to the model again"}, {"id": "s103", "start": 691.519, "end": 695.12, "text": "because what you see when you're using codecs is kind of a lie."}, {"id": "s104", "start": 695.12, "end": 705.6, "text": "like you kind of have like a live chat session with the model and so you tend to think that oh that's what the model saw and you know that's exactly so I can understand what happened the truth is"}, {"id": "s105", "start": 705.6, "end": 714.16, "text": "that's not exactly what the model saw um there are many reasons for that one is I mean compaction obviously is a big part is a big thing but also"}, {"id": "s106", "start": 714.16, "end": 726.16, "text": "you know there are just quirks also you know openai doesn't share or enthropic for that matter don't share the thinking with you the thinking traces so you have no idea I mean kind of have an idea of what went in but not completely either."}, {"id": "s107", "start": 726.16, "end": 728.16, "text": "And so you need something different."}, {"id": "s108", "start": 728.16, "end": 739.6, "text": "Uh you need something different and that was the big rabbit hole which is trying to find a way or build a system where you can trace back to what the model saw internally."}, {"id": "s109", "start": 739.6, "end": 744.639, "text": "And so what I did was basically built I mean nothing new."}, {"id": "s110", "start": 744.639, "end": 746.639, "text": "This is basically how build system works."}, {"id": "s111", "start": 746.639, "end": 748.88, "text": "Uh so you have different parts for a prompt."}, {"id": "s112", "start": 748.88, "end": 750.639, "text": "You have your system prompt."}, {"id": "s113", "start": 750.639, "end": 753.519, "text": "You have a description of your first skill of a second skill."}, {"id": "s114", "start": 753.519, "end": 755.76, "text": "Then you have the description of your tools."}, {"id": "s115", "start": 755.76, "end": 759.2, "text": "You have your user message which is the question to the model."}, {"id": "s116", "start": 759.2, "end": 766.88, "text": "Each one of those is stored and addressed and you know stored somewhere as a identifier which is a hash."}, {"id": "s117", "start": 766.88, "end": 778.48, "text": "And so when we build a prompt instead of building a piece of I mean before rendering the text we actually represent the prompt as a list of these u of these hashes."}, {"id": "s118", "start": 778.48, "end": 788.959, "text": "And so what that means is that down the line when I have a model answer, which by the way is also stored in the same way, we can trace back to the prompt very easily."}, {"id": "s119", "start": 788.959, "end": 795.36, "text": "And then from that prompt, we can know exactly what went into the model's context, which actually matters a lot."}, {"id": "s120", "start": 795.36, "end": 799.44, "text": "I mean, it matters a lot for debugging, but it also matters."}, {"id": "s121", "start": 799.44, "end": 801.6, "text": "I mean, it makes compaction a lot easier."}, {"id": "s122", "start": 801.6, "end": 803.36, "text": "You're just manipulating a graph, right?"}, {"id": "s123", "start": 803.36, "end": 805.04, "text": "You're not manipulating strings."}, {"id": "s124", "start": 805.04, "end": 806.56, "text": "It's just a lot easier."}, {"id": "s125", "start": 806.56, "end": 810.56, "text": "And it makes KV cache management a lot easier as well indirectly."}, {"id": "s126", "start": 810.56, "end": 821.36, "text": "And but I think that when you know I guess probably the main advantage that's when you use that scale is really auditability."}, {"id": "s127", "start": 821.36, "end": 827.44, "text": "It's like you can know exactly what happened with that agent and why it returned what it returned."}, {"id": "s128", "start": 827.44, "end": 832.72, "text": "And so you know I'm just going to go pretty pretty quickly over this."}, {"id": "s129", "start": 832.72, "end": 844.56, "text": "Uh what you get once you have this graph is you get diffs like you can say okay what changed between these two runs like which com which components changed was it just my message"}, {"id": "s130", "start": 844.56, "end": 852.72, "text": "did I like give the model a different skill did I give it a different tool so you can just yeah you can just run this function and it will show you"}, {"id": "s131", "start": 852.72, "end": 856.749, "text": "you know the difference between uh the runs so here you have you"}, {"id": "s132", "start": 856.749, "end": 856.88, "text": "[snorts]"}, {"id": "s133", "start": 856.88, "end": 866.8, "text": "know three components that were identical there's one which is you know the user message changed And then you had all these other messages that were actually you know that were continuing."}, {"id": "s134", "start": 866.8, "end": 869.36, "text": "It's continuation of a single session."}, {"id": "s135", "start": 869.36, "end": 872.56, "text": "Uh then you have another thing for free which is replace."}, {"id": "s136", "start": 872.56, "end": 883.36, "text": "Uh replays turned out to be really useful for me because after a while I mean when I saw the cost ramp up like the thing when you have observability"}, {"id": "s137", "start": 883.36, "end": 886.56, "text": "is that you do realize that cost increase very quickly."}, {"id": "s138", "start": 886.56, "end": 891.8389999999999, "text": "I wanted to try with open source models and so I wanted to rebuild old request for to eval."}, {"id": "s139", "start": 891.8389999999999, "end": 897.199, "text": "and see if I got the same thing out, if I got something satisfactory, if I need to change anything."}, {"id": "s140", "start": 897.199, "end": 910.48, "text": "And turns out that once you have uh you know this content addressing system, you can rebuild the request from the graph and you can just replay it exactly the same and you can you know resend, you can use a different model."}, {"id": "s141", "start": 910.48, "end": 918.72, "text": "Uh you can use a different request if you want, you can uh you can change it and so yeah, you get actually a lot of things I mean for free."}, {"id": "s142", "start": 918.72, "end": 920.399, "text": "You need to implement a thing."}, {"id": "s143", "start": 920.399, "end": 930.24, "text": "Um and so this is kind of different um from what you find I mean what I found when I started doing this it might be different today because it was a couple of months ago"}, {"id": "s144", "start": 930.24, "end": 949.279, "text": "is that out there you had a lot of libraries so it's just frameworks and frameworks just call code uh your agents leave inside their abstractions um and I don't like analogies with you know operating system okay everyone has used that analogy but okay let's say a kernel like runs processes"}, {"id": "s145", "start": 949.279, "end": 951.04, "text": "and your agent kind of is a process."}, {"id": "s146", "start": 951.04, "end": 953.04, "text": "It doesn't matter what it does actually."}, {"id": "s147", "start": 953.04, "end": 956.639, "text": "Uh but the system can schedule it is built to isolate it."}, {"id": "s148", "start": 956.639, "end": 960.639, "text": "It can isolate it and journals it with the log and the agent definition."}, {"id": "s149", "start": 960.639, "end": 967.92, "text": "So the markdown is user land like you don't need to use it with that system if you don't want to actually have a front end that doesn't use this markdown"}, {"id": "s150", "start": 967.92, "end": 970.24, "text": "uh this markdown format at all."}, {"id": "s151", "start": 970.24, "end": 987.12, "text": "And okay, here's a very important point and you know that's kind of a takeaway and it's also what justifies me working on this because disclaimer structured outputs is our specialty and we've been working on this for three years and it just ended up being a big dog fooding project and the reason why I did this"}, {"id": "s152", "start": 987.12, "end": 992.079, "text": "at the beginning was not because I absolutely wanted to use our software."}, {"id": "s153", "start": 992.079, "end": 1004.8, "text": "I didn't necessarily want to you know forklP to other software etc. It's just because Infropic was terrible at structured outputs and so like 20% of my events were wrong and were rejected by the system."}, {"id": "s154", "start": 1004.8, "end": 1006.56, "text": "So that's why I ended up doing this."}, {"id": "s155", "start": 1006.56, "end": 1012.88, "text": "And the goal, you know, the job of the kernel is actually to make bad actions impossible, not just unlikely."}, {"id": "s156", "start": 1012.88, "end": 1016.72, "text": "And so you have this two boundaries with between agents and the external world."}, {"id": "s157", "start": 1016.72, "end": 1019.199, "text": "The first one is type tool calls."}, {"id": "s158", "start": 1019.199, "end": 1028.319, "text": "The two tool calls uh you don't want, you know, you don't want to call tools that don't exist, etc., etc. and also the boundary with other agents which is typed events"}, {"id": "s159", "start": 1028.319, "end": 1038.72, "text": "and this is non-negotiable I found like you can get a lot of errors just from this uh I wrote a really long blog post about this uh it's if you follow the QR code you'll find it"}, {"id": "s160", "start": 1038.72, "end": 1054.96, "text": "and yeah and the result of that is I actually deployed it uh within the company after I built this and now today after a month of deploying it we have 20 agents on the left that are not just contributed by technical people by the way which is kind of what markdown"}, {"id": "s161", "start": 1054.96, "end": 1066.16, "text": "uh what Maron gives you and then on the right is you know we deploy it's called the internet there's the briefs there's a bunch of I mean there's a bunch of things as you can as you can see"}, {"id": "s162", "start": 1066.16, "end": 1083.6, "text": "kind of like a few you know as a conclusion a few lessons uh the first one is that well executed background agents are really magical uh they feel like this you know robot mower that I had at the beginning is I really just sit down and I come back and I have this morning brief that is probably"}, {"id": "s163", "start": 1083.6, "end": 1092.4, "text": "even better than what I would have had just doing it manually and it just appears in my inbox every day and processes my you know random thoughts."}, {"id": "s164", "start": 1092.4, "end": 1097.84, "text": "Uh the difficulties that you meet doing this kind of thing is just good old engineering problems."}, {"id": "s165", "start": 1097.84, "end": 1102.24, "text": "I mean there's really nothing new under the sun when it comes to orchestrating these things."}, {"id": "s166", "start": 1102.24, "end": 1105.039, "text": "It's just good old software orchestration."}, {"id": "s167", "start": 1105.039, "end": 1106.88, "text": "Uh open source models are there."}, {"id": "s168", "start": 1106.88, "end": 1107.919, "text": "Uh they're good enough."}, {"id": "s169", "start": 1107.919, "end": 1111.919, "text": "I replaced so I don't have any third party APIs anymore."}, {"id": "s170", "start": 1111.919, "end": 1117.679, "text": "Now I just use open source models and even on my laptop I use a local model."}, {"id": "s171", "start": 1117.679, "end": 1120.4, "text": "Uh so it's good enough for what I do with it."}, {"id": "s172", "start": 1120.4, "end": 1124.0, "text": "For coding I don't know but for what I do with this it's good enough."}, {"id": "s173", "start": 1124.0, "end": 1126.32, "text": "The infro category is definitely unsettled."}, {"id": "s174", "start": 1126.32, "end": 1130.0, "text": "Uh I tried a few things before I started building myself."}, {"id": "s175", "start": 1130.0, "end": 1135.2, "text": "And I would advise that today like definitely start building before you buy."}, {"id": "s176", "start": 1135.2, "end": 1145.44, "text": "Uh so if you're a small company, if you're a tech CEO, it's kind of an advantage because you can just do this without, you know, tasking engineers to do this and get them off track."}, {"id": "s177", "start": 1145.44, "end": 1153.2, "text": "But I would definitely try to build before I buy just to know exactly what I need and you know the limitations of what exist."}, {"id": "s178", "start": 1153.2, "end": 1161.44, "text": "Uh also I will say that to people building uh frameworks for this is please eat your own dog food."}, {"id": "s179", "start": 1161.44, "end": 1168.16, "text": "Sometimes it's pretty clear that people are building you know agent orchestration frameworks etc but not eating their own dog food."}, {"id": "s180", "start": 1168.16, "end": 1177.039, "text": "So please do and the other thing is I'm really glad I took this two weeks off to play with the field because that completely changed I mean that changed the trajectory of the company."}, {"id": "s181", "start": 1177.039, "end": 1186.32, "text": "I know we're an AI company we should be in it etc but you know business is such that you're always thinking about the next thing the next thing the next thing and it's the same everywhere."}, {"id": "s182", "start": 1186.32, "end": 1195.36, "text": "But what I'm urging you to do is to stop and actually immerse yourself in this and try to see how useful it can be for your company."}, {"id": "s183", "start": 1195.36, "end": 1197.6, "text": "Uh so you can steal the code."}, {"id": "s184", "start": 1197.6, "end": 1201.28, "text": "Uh it's not a product that we sell and we don't intend to sell this."}, {"id": "s185", "start": 1201.28, "end": 1203.2, "text": "Uh you can read our blog as well."}, {"id": "s186", "start": 1203.2, "end": 1207.76, "text": "Uh so I haven't explained uh this yet but I will publish something about it."}, {"id": "s187", "start": 1207.76, "end": 1211.36, "text": "And thank you for your attention."}, {"id": "s188", "start": 1224.864, "end": 1226.864, "text": "[music]"}]}, {"id": "KLDdXOw6jIc", "title": "Leads of Nano Banana, Imagen, Veo, Gemini Omni and Omni Thinking recap the year in Generative Media", "channel": "AI Engineer", "duration": 3419, "upload_date": null, "url": "https://www.youtube.com/watch?v=KLDdXOw6jIc", "api": "/api/talks/KLDdXOw6jIc.json", "summary_url": "/#KLDdXOw6jIc", "transcript": {"html": "/transcripts/KLDdXOw6jIc.html", "txt": "/transcripts/KLDdXOw6jIc.txt", "vtt": "/transcripts/KLDdXOw6jIc.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.639, "end": 16.56, "text": "and welcome back for those on the stream and those those in person."}, {"id": "s3", "start": 16.56, "end": 31.119, "text": "um we take tend to basically take these longer sessions between uh all the sort of mainstage keynotes to reflect on things that um you know are particularly important but like don't have like a significant like sort of launch moments."}, {"id": "s4", "start": 31.119, "end": 39.92, "text": "Today we're very lucky to have people working on Omni and VO Nano Banana like the you know the world's best generative models here with us."}, {"id": "s5", "start": 39.92, "end": 45.195, "text": "Uh, Demetrio, I I I first saw you when you were posting about your office."}, {"id": "s6", "start": 45.195, "end": 46.719, "text": "[laughter]"}, {"id": "s7", "start": 46.719, "end": 53.6, "text": "Um, I think you're you're probably number one uh Google Google's number one office influencer at least in in San Francisco."}, {"id": "s8", "start": 53.6, "end": 55.28, "text": "I think you like you like to bike as well."}, {"id": "s9", "start": 55.28, "end": 56.879, "text": "You like to take photos of"}, {"id": "s10", "start": 56.879, "end": 57.84, "text": "bike here."}, {"id": "s11", "start": 57.84, "end": 58.559, "text": "Yeah."}, {"id": "s12", "start": 58.559, "end": 61.76, "text": "Um, but you know, but also you work on video models."}, {"id": "s13", "start": 61.76, "end": 62.239, "text": "That's right."}, {"id": "s14", "start": 62.239, "end": 65.68, "text": "Um, Shane, I I met you I think at like a dinner."}, {"id": "s15", "start": 65.68, "end": 66.08, "text": "Yeah."}, {"id": "s16", "start": 66.08, "end": 73.2, "text": "Um and uh and uh and I I remember you were trying to get me invested in like one of the companies."}, {"id": "s17", "start": 73.2, "end": 74.799, "text": "I forget forget which one."}, {"id": "s18", "start": 74.799, "end": 75.98, "text": "Forget about that."}, {"id": "s19", "start": 75.98, "end": 77.759, "text": "[laughter]"}, {"id": "s20", "start": 77.759, "end": 81.759, "text": "But now but now you're um now you're working on Omni Thinking."}, {"id": "s21", "start": 81.759, "end": 84.32, "text": "Um and and just you know a bunch of other"}, {"id": "s22", "start": 84.32, "end": 85.52, "text": "Gemini RL."}, {"id": "s23", "start": 85.52, "end": 85.84, "text": "Yeah."}, {"id": "s24", "start": 85.84, "end": 86.56, "text": "Yeah."}, {"id": "s25", "start": 86.56, "end": 94.96000000000001, "text": "Uh and Nicole also uh the rest of the gen media models uh nano banana and uh all and everything you just launched actually even this week."}, {"id": "s26", "start": 94.96000000000001, "end": 95.52000000000001, "text": "Uh,"}, {"id": "s27", "start": 95.52000000000001, "end": 95.92, "text": "yeah."}, {"id": "s28", "start": 95.92, "end": 97.36, "text": "We launched some APIs."}, {"id": "s29", "start": 97.36, "end": 97.6, "text": "Yeah."}, {"id": "s30", "start": 97.6, "end": 97.84, "text": "Yeah."}, {"id": "s31", "start": 97.84, "end": 98.479, "text": "Yeah."}, {"id": "s32", "start": 98.479, "end": 101.6, "text": "And I haven't tried to convince you to invest in anything, but maybe I should."}, {"id": "s33", "start": 101.6, "end": 104.07900000000001, "text": "I mean, so I try not to be an investor."}, {"id": "s34", "start": 104.07900000000001, "end": 105.36, "text": "People just convince me anyway."}, {"id": "s35", "start": 105.36, "end": 111.6, "text": "I'm like just, okay, well, I'm not that rich, but know like you can't not try to invest in some of these things."}, {"id": "s36", "start": 111.6, "end": 116.72, "text": "And, you know, for those of us who are not working at a Frontier Lab, this is the best this closest we'll ever get."}, {"id": "s37", "start": 116.72, "end": 122.32, "text": "Um, so yeah, actually, let's kind of recap since you're closest to it and we just did it, like what was launched this week?"}, {"id": "s38", "start": 122.32, "end": 123.68, "text": "What should people go try out?"}, {"id": "s39", "start": 123.68, "end": 124.0, "text": "Yeah."}, {"id": "s40", "start": 124.0, "end": 127.04, "text": "Um so yesterday we had two launch moments."}, {"id": "s41", "start": 127.04, "end": 136.239, "text": "Uh one of them we launched NanoBanana 2 light uh which is our fastest, cheapest um image model in the nano banana model family."}, {"id": "s42", "start": 136.239, "end": 138.959, "text": "Um and it's better than the original NanoBanana."}, {"id": "s43", "start": 138.959, "end": 148.319, "text": "Um so really for most people um that model replaces what you you know used and love the original Nano Banana for across like generation and editing and it gets really close"}, {"id": "s44", "start": 148.319, "end": 152.07999999999998, "text": "to the frontier quality of of the kind of mainland bigger models."}, {"id": "s45", "start": 152.07999999999998, "end": 153.519, "text": "So that that's really exciting."}, {"id": "s46", "start": 153.519, "end": 163.44, "text": "I think if you look at some of the demos or like things that people have been trying like getting kind of that like 3 second latency just unlocks a whole bunch of things that you can do with like ideation and iteration"}, {"id": "s47", "start": 163.44, "end": 174.72, "text": "and it's just really fun and the model's getting to a point where like the quality is really good um where um it you know you can use it for iteration but you can also use some of those outputs as just kind of like ready um production output."}, {"id": "s48", "start": 174.72, "end": 175.84, "text": "So that's really exciting."}, {"id": "s49", "start": 175.84, "end": 183.04, "text": "Um and then second launch we finally um launched the Gemini Omni Flash APIs um that we pre-announced at IO."}, {"id": "s50", "start": 183.04, "end": 184.8, "text": "So thank you for waiting."}, {"id": "s51", "start": 184.8, "end": 196.48, "text": "Um and that you know is the first time that we're making the APIs available for developers and it's basically really exciting kind of video generation and editing and we're pricing it the same as Y31"}, {"id": "s52", "start": 196.48, "end": 196.879, "text": "fast."}, {"id": "s53", "start": 196.879, "end": 201.04, "text": "So we're getting you kind of like really really good quality for a really awesome price hopefully."}, {"id": "s54", "start": 201.04, "end": 202.159, "text": "Um"}, {"id": "s55", "start": 202.159, "end": 204.319, "text": "yeah, I mean that that's incredible."}, {"id": "s56", "start": 204.319, "end": 213.28, "text": "I'm actually really So when you guys launched Omni for the first time, you also did a podcast uh with Logan who couldn't be here today uh and you added like a sloth"}, {"id": "s57", "start": 213.28, "end": 215.76, "text": "uh and and Ramen and all these all these things."}, {"id": "s58", "start": 215.76, "end": 217.68, "text": "I actually really want to do that to our videos."}, {"id": "s59", "start": 217.68, "end": 220.56, "text": "I just didn't have an API for it because obviously I have to automate the whole thing."}, {"id": "s60", "start": 220.56, "end": 221.76, "text": "So thank you for the API."}, {"id": "s61", "start": 221.76, "end": 223.44, "text": "Uh that is my favorite use case."}, {"id": "s62", "start": 223.44, "end": 224.56, "text": "Everybody should do that."}, {"id": "s63", "start": 224.56, "end": 228.159, "text": "Um I got a cat which is probably like the most boring of the animals."}, {"id": "s64", "start": 228.159, "end": 230.07999999999998, "text": "Um if you don't know what we're talking about, you should look it up."}, {"id": "s65", "start": 230.07999999999998, "end": 230.56, "text": "It's very funny."}, {"id": "s66", "start": 230.56, "end": 231.44, "text": "Feurer."}, {"id": "s67", "start": 231.44, "end": 234.56, "text": "um Furer who's um you know on on the team did that."}, {"id": "s68", "start": 234.56, "end": 240.239, "text": "Furer is the number one guy you should follow for you should follow ideas on okay what can this thing do?"}, {"id": "s69", "start": 240.239, "end": 240.72, "text": "Yes."}, {"id": "s70", "start": 240.72, "end": 241.04, "text": "Right."}, {"id": "s71", "start": 241.04, "end": 241.519, "text": "Yes."}, {"id": "s72", "start": 241.519, "end": 243.36, "text": "He he's he's amazing at that."}, {"id": "s73", "start": 243.36, "end": 246.72, "text": "I've tried to get him for the last two years to come to AIE."}, {"id": "s74", "start": 246.72, "end": 247.519, "text": "He hasn't made it yet."}, {"id": "s75", "start": 247.519, "end": 248.879, "text": "He's actually come in person."}, {"id": "s76", "start": 248.879, "end": 251.04, "text": "He just didn't want to speak because he's anonymous."}, {"id": "s77", "start": 251.04, "end": 251.92, "text": "I know."}, {"id": "s78", "start": 251.92, "end": 253.84, "text": "I I want to say his real name but I can't say his real name."}, {"id": "s79", "start": 253.84, "end": 254.142, "text": "No"}, {"id": "s80", "start": 254.142, "end": 254.319, "text": "[laughter]"}, {"id": "s81", "start": 254.319, "end": 255.68, "text": "no we won't we won't do that to him."}, {"id": "s82", "start": 255.68, "end": 256.799, "text": "But you should really follow him."}, {"id": "s83", "start": 256.799, "end": 257.759, "text": "He's amazing."}, {"id": "s84", "start": 257.759, "end": 258.799, "text": "He did all that work."}, {"id": "s85", "start": 258.799, "end": 264.4, "text": "I actually met him uh in the office uh when we did the podcast I think and I didn't realize it was him."}, {"id": "s86", "start": 264.4, "end": 267.44, "text": "So his badge doesn't say Popers."}, {"id": "s87", "start": 267.44, "end": 267.759, "text": "Yeah,"}, {"id": "s88", "start": 267.759, "end": 268.4, "text": "I know."}, {"id": "s89", "start": 268.4, "end": 273.84000000000003, "text": "So he used to be part of uh Replicate and Replicate had this joke where like everyone was Deep Fates."}, {"id": "s90", "start": 273.84000000000003, "end": 276.32, "text": "Deep Fates is this like kind of mysterious character and replicate."}, {"id": "s91", "start": 276.32, "end": 278.72, "text": "Replicate is very cool company and both was part of it."}, {"id": "s92", "start": 278.72, "end": 289.919, "text": "Um, so, okay, one thing I want to get on there before I go into like sort of the the the the sort of omniper is we added cats, we added sloths,"}, {"id": "s93", "start": 289.919, "end": 291.759, "text": "very cool, very cute, very fun."}, {"id": "s94", "start": 291.759, "end": 299.36, "text": "Uh, what are the, you know, inspire people as to like what are the more sort of workhorse use cases that maybe are not just demos, you know?"}, {"id": "s95", "start": 299.36, "end": 299.6, "text": "Yeah."}, {"id": "s96", "start": 299.6, "end": 307.84, "text": "So, so obviously the hero capability of the model or maybe there's two like one is the ability to kind of take in anything as input and then get video on the other side."}, {"id": "s97", "start": 307.84, "end": 318.08, "text": "Obviously in the future and and we've kind of talked about this as a pre-announce like we want to get the other output modalities out as well but basically what that means is you know you can take a set of images that you have as maybe a storyboard."}, {"id": "s98", "start": 318.08, "end": 324.8, "text": "You can take like an audio track as a reference of you know like a voice that you want a character to speak and then you can get a video on the other side."}, {"id": "s99", "start": 324.8, "end": 332.4, "text": "So like that just unlocks a whole bunch of things that you can do in like you know short film production or you know shorts we've launched on YouTube as well"}, {"id": "s100", "start": 332.4, "end": 336.4, "text": "um to help creators kind of like create um content more easily."}, {"id": "s101", "start": 336.4, "end": 338.88, "text": "Um and then the other one is obviously video editing."}, {"id": "s102", "start": 338.88, "end": 346.96, "text": "Like that's another thing that we're really excited about that we're just making easier because now you can use natural language to take a video, you know, add something, remove something."}, {"id": "s103", "start": 346.96, "end": 349.12, "text": "Sloth is obviously like fun example."}, {"id": "s104", "start": 349.12, "end": 359.52, "text": "Um, but there there's obviously kind of there's consumer use cases that we kind of had in mind where, you know, you could take your beach vacation video that was too noisy and you want to clean up that noise."}, {"id": "s105", "start": 359.52, "end": 364.96, "text": "Maybe in the past you wouldn't have because you didn't have the tools or you didn't know what the tools were that you needed to go to."}, {"id": "s106", "start": 364.96, "end": 367.6, "text": "So, that's one use case that you can, you know, go to."}, {"id": "s107", "start": 367.6, "end": 376.479, "text": "We've seen a lot of folks use it for kind of marketing ad campaign creation and I'm excited to see more of those use cases as we launch the APIs."}, {"id": "s108", "start": 376.479, "end": 383.759, "text": "um because obviously like we don't we don't see all of it in the first party products but I'm really excited for people to start to explore that um in the API."}, {"id": "s109", "start": 383.759, "end": 387.52, "text": "So those are just some of the kind of like high level um things that have come up."}, {"id": "s110", "start": 387.52, "end": 390.88, "text": "U people also use it to create like education materials."}, {"id": "s111", "start": 390.88, "end": 391.199, "text": "Yes."}, {"id": "s112", "start": 391.199, "end": 393.84000000000003, "text": "Um and like like that's really exciting."}, {"id": "s113", "start": 393.84000000000003, "end": 403.28, "text": "I think we're all we've all kind of talked about being excited about the future of education where like everything can be kind of customized to you and personalized to your knowledge level"}, {"id": "s114", "start": 403.28, "end": 407.919, "text": "and the style that you prefer and and so this is kind of just like a step in that direction."}, {"id": "s115", "start": 407.919, "end": 408.15999999999997, "text": "Yeah."}, {"id": "s116", "start": 408.15999999999997, "end": 414.4, "text": "I I I sort of actually used just none of yesterday, but my my parents are visiting and there was there was a very fun sort of use case."}, {"id": "s117", "start": 414.4, "end": 424.479, "text": "They I bought some gadget off from Amazon that they wanted and the instructions to use it was were only in English and there was plenty of diagrams or whatever and I took a picture of it and said, you know, translate this into Romanian."}, {"id": "s118", "start": 424.479, "end": 424.88, "text": "Yes."}, {"id": "s119", "start": 424.88, "end": 426.479, "text": "And keep everything else the same, right?"}, {"id": "s120", "start": 426.479, "end": 427.599, "text": "So it was amazing, right?"}, {"id": "s121", "start": 427.599, "end": 432.96, "text": "Like it was just like, yeah, it looks identical and it has, you know, it's perfectly translated."}, {"id": "s122", "start": 432.96, "end": 434.16, "text": "I mean, more or less, right?"}, {"id": "s123", "start": 434.16, "end": 442.08, "text": "But it's it's you know using Gemini under the hood obviously to kind of do the translation and so you can you can see this use case for video as well right like"}, {"id": "s124", "start": 442.08, "end": 446.88, "text": "the the power of text rendering in in in Omni is is quite next level."}, {"id": "s125", "start": 446.88, "end": 458.4, "text": "So and you could you could you could think about plenty of use cases of like both text rendering translation internalization all sorts of things that would be actually genuinely useful to a lot of different people and sort of broader access to"}, {"id": "s126", "start": 458.4, "end": 462.08, "text": "either you could like redub a video or whatever it is that you wanted to do."}, {"id": "s127", "start": 462.08, "end": 465.52, "text": "like there's plenty of different things that you could you could think about doing."}, {"id": "s128", "start": 465.52, "end": 465.919, "text": "Yeah."}, {"id": "s129", "start": 465.919, "end": 474.56, "text": "Um one of the most enlightening conversations I have on my podcast is with uh just people researchers at the frontier of these things."}, {"id": "s130", "start": 474.56, "end": 485.84, "text": "Um I had one with um Ethan from the XAI video team, the Grock video team who was basically saying like you know the next trend is actually not just like single model, it's more like video agents."}, {"id": "s131", "start": 485.84, "end": 491.68, "text": "Um, and I don't know if that terminology resonates uh obviously for for very relevant for RL."}, {"id": "s132", "start": 491.68, "end": 497.12, "text": "Uh, but it was it was basically kind of like giving up on like trying to do everything in in effectively one pass."}, {"id": "s133", "start": 497.12, "end": 504.355, "text": "Um, do you feel that same way or is it still an open research question which way the trends are going?"}, {"id": "s134", "start": 504.355, "end": 504.72, "text": "[snorts]"}, {"id": "s135", "start": 504.72, "end": 505.199, "text": "Yeah."}, {"id": "s136", "start": 505.199, "end": 518.32, "text": "So um what kind of excite me most is really when the symbolic kind of foundational models and this kind of like video foundational model can actually kind of really work together and u in a way the if you look at the beginning of the generative"}, {"id": "s137", "start": 518.32, "end": 528.88, "text": "sort of like image generation video generation a lot of it kind of started when the language model got good enough to provide a very detailed captioning like from stable fusion days or kind of dowi 2 days."}, {"id": "s138", "start": 528.88, "end": 543.76, "text": "So um so basically like language is extremely u helpful representation uh one is that it's kind of universal but the other kind of more um technical thing like kind of my hypothesis is like um one very difficult thing about machine learning"}, {"id": "s139", "start": 543.76, "end": 546.88, "text": "is um this sort of like spirious coordination."}, {"id": "s140", "start": 546.88, "end": 553.04, "text": "So you don't know you know if the if this kind of feature right that's kind of predictive is actually causal factor or not."}, {"id": "s141", "start": 553.04, "end": 553.92, "text": "There are two ways."}, {"id": "s142", "start": 553.92, "end": 559.68, "text": "One is we can have really diverse data training data like from every intervention of the causal graph."}, {"id": "s143", "start": 559.68, "end": 568.32, "text": "The other is you condition the causal information and conditioning the language is kind of like conditioning like a coal information of the of the kind of world."}, {"id": "s144", "start": 568.32, "end": 569.36, "text": "So um"}, {"id": "s145", "start": 569.36, "end": 572.24, "text": "which is a prompt or a concept what"}, {"id": "s146", "start": 572.24, "end": 582.9590000000001, "text": "yeah exactly so if you look at like you know how we going to describe this video how this kind of image is actually very close to you know how would describe this kind of causality you know behind this like how this is kind of generated."}, {"id": "s147", "start": 582.9590000000001, "end": 590.64, "text": "So one is like that can really allow for very rich generalization and then uh very kind of just like a good model."}, {"id": "s148", "start": 590.64, "end": 598.399, "text": "Um the other is so eight months ago uh we put the evaluation paper called video models zero shot learners and reasoners."}, {"id": "s149", "start": 598.399, "end": 598.9590000000001, "text": "Yes."}, {"id": "s150", "start": 598.9590000000001, "end": 610.399, "text": "So that was a kind of you know it's it's a confirmed paper and then later on actually the N banana team followed up with a vision banana paper that basically used n banana to do but essentially the idea is"}, {"id": "s151", "start": 610.399, "end": 616.24, "text": "uh video model is extremely good sort of a foundation model for space and time kind of information."}, {"id": "s152", "start": 616.24, "end": 629.2, "text": "So um classic computer vision tasks a lot of could be kind of zero shorted and when you like say feed in some like a visual quiz uh it can you know there's definitely like a lot to improve it can kind of solve"}, {"id": "s153", "start": 629.2, "end": 645.2, "text": "and it can um like robotics kind of like seeing it has really good kind of physical intuitions like word model uh and I think the the key is really the kind of mix of the visual kind of reasoning and then the text kind of reasoning kind of all tied together"}, {"id": "s154", "start": 645.2, "end": 659.12, "text": "Um obviously you know like whether doing it you know as kind of unified model versus like just kind of agent coation I think that's more like uh it's going to be more kind of incremental you know how it's going to I imagine everything's going to go into like a single model eventually"}, {"id": "s155", "start": 659.12, "end": 672.0, "text": "but right now there's like a lot you can do if you uh basically take like really good video understanding image understanding Gemini agentically with anomy and that's actually gonna yeah our team is like exploring a lot"}, {"id": "s156", "start": 672.0, "end": 684.24, "text": "yeah okay that there's a there's a lot in there um I I think uh one question I I am increasingly starting to wonder is does it all trend towards one product for you guys right like now you have multiple models out"}, {"id": "s157", "start": 684.24, "end": 693.44, "text": "the naming of omni does imply that eventually everything will go away and it just goes into omnis um is that the plan"}, {"id": "s158", "start": 693.92, "end": 694.307, "text": "is it"}, {"id": "s159", "start": 694.307, "end": 694.399, "text": "[laughter]"}, {"id": "s160", "start": 694.399, "end": 709.44, "text": "I don't know I I think I think uh maybe I mean I think eventually I I think there's sort of different trade-offs engineering research product trade-offs in like it's like for the same reason like"}, {"id": "s161", "start": 709.44, "end": 712.8, "text": "the the sorry how is it called nano banana light I don't know what the product name"}, {"id": "s162", "start": 712.8, "end": 713.92, "text": "nanob banana tite"}, {"id": "s163", "start": 713.92, "end": 729.04, "text": "nano banana too light yeah right it's it's it's it serves a particular niche right and it probably doesn't necessarily fit immediately in the same model literally checkpoint as uh something that can do 4K"}, {"id": "s164", "start": 729.04, "end": 735.12, "text": "you know uh 30 secondond videos right like they're probably not like trainable in the same quite way, right?"}, {"id": "s165", "start": 735.12, "end": 736.48, "text": "Like, so I I don't know."}, {"id": "s166", "start": 736.48, "end": 738.72, "text": "It depends on how how far into the future you look like."}, {"id": "s167", "start": 738.72, "end": 741.36, "text": "Sure, in five years from now, will they all be the same model?"}, {"id": "s168", "start": 741.36, "end": 742.32, "text": "Probably."}, {"id": "s169", "start": 742.32, "end": 755.2, "text": "Uh but like, you know, six months from now, we'll we'll probably still have, you know, multiple different models doing different things because kind of from pragmatically the trade-offs are such that we we should have multiple different kinds of models."}, {"id": "s170", "start": 755.2, "end": 756.16, "text": "Yeah, I"}, {"id": "s171", "start": 756.16, "end": 756.72, "text": "I think that's right."}, {"id": "s172", "start": 756.72, "end": 766.32, "text": "And and just on that note, I mean, we did call it Gemini Omni because we wanted to hint at the future where Gemini just becomes fully multimodal in and out, right?"}, {"id": "s173", "start": 766.32, "end": 768.9590000000001, "text": "And so so it's definitely a move in that direction."}, {"id": "s174", "start": 768.9590000000001, "end": 774.639, "text": "I think we'll probably see a move in the direction where Omni also generates images and edits images and all those kinds of things."}, {"id": "s175", "start": 774.639, "end": 782.32, "text": "But Doo is right that I think on the way there, there's a bunch of really really useful applications of some of these more specialized models."}, {"id": "s176", "start": 782.32, "end": 790.24, "text": "And so we we will probably continue to work on those as well because like that serves a certain need at this point in time that may not exist you know a year from now."}, {"id": "s177", "start": 790.24, "end": 796.24, "text": "There's also like a research question about like just how much transfer there is between different kinds of modalities, right?"}, {"id": "s178", "start": 796.24, "end": 811.92, "text": "I think you may believe that there's some transfer between coding and video generation and I think most people don't necessarily believe that but they you know you could try to think that there is some some there something there or it could be a waste right to put them together to try to learn these both tasks at the"}, {"id": "s179", "start": 811.92, "end": 820.0, "text": "same time right so I think it's it's it's interesting sort of question to which extent like image and video obviously kind of there's some transfer like kind of not that different"}, {"id": "s180", "start": 820.0, "end": 827.8389999999999, "text": "there's value in in learning to output video and audio at the same time because joint audio visual is you know that's how that's how it is."}, {"id": "s181", "start": 827.8389999999999, "end": 841.44, "text": "Um and then there's you know other kind of intersections of modalities that are not super obvious right like 3D representation coding I don't know maybe uh things like that right so like I think it's worth sort of exploring the different corners there and we are actively doing that"}, {"id": "s182", "start": 841.44, "end": 845.44, "text": "um with a focus towards like what people actually want to do with these models"}, {"id": "s183", "start": 845.44, "end": 858.0, "text": "yeah um what one thing I feel I feel like uh I'm surprised by but also I feel like it's insufficiently answered is what is the correct intermediate representation Um,"}, {"id": "s184", "start": 858.0, "end": 860.079, "text": "so captioning, right?"}, {"id": "s185", "start": 860.079, "end": 861.8389999999999, "text": "XI does captioning."}, {"id": "s186", "start": 861.8389999999999, "end": 863.279, "text": "Omni does captioning."}, {"id": "s187", "start": 863.279, "end": 868.16, "text": "Um, and I I I understand how captioning works for images."}, {"id": "s188", "start": 868.16, "end": 873.6, "text": "Um, and I understand that you can extend it into to video and and sort of guide it across time."}, {"id": "s189", "start": 873.6, "end": 875.519, "text": "It just feels very inefficient."}, {"id": "s190", "start": 875.519, "end": 878.399, "text": "It there's got to be I feel like there should be something better."}, {"id": "s191", "start": 878.399, "end": 889.8389999999999, "text": "Uh maybe it's code and maybe we generate you know and obviously I think a lot of um ffmpeg and mapplot um what's the three blue one brown one manm"}, {"id": "s192", "start": 889.8389999999999, "end": 901.279, "text": "um a lot of like video is generated through code and maybe that's like the optimal representation uh any hypothesis as to like is is it better or is just English all you need"}, {"id": "s193", "start": 901.279, "end": 910.24, "text": "well as so I'm in the Gemini and they know we do like a lot of RL agent and of course kind of coding so yeah We we're definitely exploring the coding representations."}, {"id": "s194", "start": 910.24, "end": 910.72, "text": "Yeah."}, {"id": "s195", "start": 910.72, "end": 913.12, "text": "As kind of better kind of way to represent."}, {"id": "s196", "start": 913.12, "end": 913.44, "text": "Yeah."}, {"id": "s197", "start": 913.44, "end": 917.665, "text": "But you know like do you what's your probability estimate on like"}, {"id": "s198", "start": 917.665, "end": 918.0, "text": "[laughter]"}, {"id": "s199", "start": 918.0, "end": 923.44, "text": "if we just output binaries like we just you know like just it's just ones and zeros."}, {"id": "s200", "start": 923.44, "end": 933.68, "text": "Um I I guess maybe a kind of similar discussion was like um basically is the language the right representation like right."}, {"id": "s201", "start": 933.68, "end": 942.32, "text": "So uh one kind of question for example uh professor you know like some ask is like you know why why does the channel of thought need to be in the natural language?"}, {"id": "s202", "start": 942.32, "end": 942.639, "text": "Yes."}, {"id": "s203", "start": 942.639, "end": 948.8, "text": "Can it just be the kind of any kind of like continuous tokens just any amount of you know additional computations."}, {"id": "s204", "start": 948.8, "end": 956.079, "text": "Um so one is like obviously the test like adaptive compute is going to give like you know better results."}, {"id": "s205", "start": 956.079, "end": 964.079, "text": "So it's that but what really kind of made CH thought so you know like four years ago I wrote you know the larger model zero sort reasoner and then self-improvement."}, {"id": "s206", "start": 964.079, "end": 976.88, "text": "So I kind of know from the very early day but the reason like it works really well is um right now the recipe that works is the pre-training that scales a lot and then that basically like learns a lot of intelligence."}, {"id": "s207", "start": 976.88, "end": 990.72, "text": "there are a lot of you know scaling RL but those are still like extremely kind of comput incent intensive to extract the information and um you really want to rely the intelligence on that so basically by tying the"}, {"id": "s208", "start": 990.72, "end": 999.8389999999999, "text": "sort of like a reasoning in the natural language you basically directly use the intelligence of the pre-training to it while if you remove that kind of constraints then you're not"}, {"id": "s209", "start": 999.8389999999999, "end": 1012.8, "text": "um and these days uh I feel the a lot of advancements in the texts but also doing this kind of multimodal space is very driven by this uh kind of text as a kind of great"}, {"id": "s210", "start": 1012.8, "end": 1014.48, "text": "uh sort of representation."}, {"id": "s211", "start": 1014.48, "end": 1016.48, "text": "Yeah, it's a good backbone."}, {"id": "s212", "start": 1016.48, "end": 1017.199, "text": "Yeah,"}, {"id": "s213", "start": 1017.199, "end": 1019.199, "text": "I I think to me it's even simpler than that."}, {"id": "s214", "start": 1019.199, "end": 1021.279, "text": "It's text is is how we communicate."}, {"id": "s215", "start": 1021.279, "end": 1031.52, "text": "So I think fundamentally if you're building kind of products that humans will be interfacing with um like like that we will be using text somehow if it's a text interface, right?"}, {"id": "s216", "start": 1031.52, "end": 1032.48, "text": "Not not for everything."}, {"id": "s217", "start": 1032.48, "end": 1035.28, "text": "So I think it's it's natural to default to that."}, {"id": "s218", "start": 1035.28, "end": 1035.919, "text": "Yeah."}, {"id": "s219", "start": 1035.919, "end": 1044.88, "text": "Obviously there's like a conf discussion you know some arrow like arrow maximalists is like oh we don't care about you know kind of channel those kind of like stuff it's just just additional compute"}, {"id": "s220", "start": 1044.88, "end": 1046.88, "text": "sure but I personally yeah"}, {"id": "s221", "start": 1046.88, "end": 1052.72, "text": "ro maximalists I wonder I wonder who who qualifies in that description David silver"}, {"id": "s222", "start": 1052.72, "end": 1068.96, "text": "ah okay yeah I mean they they've just left to to start their thing um interesting okay so uh I I mean I think I'm very interested in just like better representations because I think that's one of our themes that we're curating today uh at the world fair is world models."}, {"id": "s223", "start": 1068.96, "end": 1072.64, "text": "You mentioned the word world models but it's not something that's like super well defined."}, {"id": "s224", "start": 1072.64, "end": 1077.76, "text": "I think everyone's like sort of converging on some version of it that is like the ideal."}, {"id": "s225", "start": 1077.76, "end": 1078.4, "text": "Sure."}, {"id": "s226", "start": 1078.4, "end": 1079.6, "text": "Everything is a world model now."}, {"id": "s227", "start": 1079.6, "end": 1080.64, "text": "It's sort of a"}, {"id": "s228", "start": 1080.64, "end": 1082.88, "text": "it's not it's not that useful, right?"}, {"id": "s229", "start": 1082.88, "end": 1086.48, "text": "So I just gave a keynote at the IER world model workshop."}, {"id": "s230", "start": 1086.48, "end": 1086.72, "text": "Yeah."}, {"id": "s231", "start": 1086.72, "end": 1092.0, "text": "And then uh yeah essentially uh I definitely encourage to check out the definition by Jandra Matic."}, {"id": "s232", "start": 1092.0, "end": 1095.2, "text": "He's like the you know OG computer vision professor UC Berkeley."}, {"id": "s233", "start": 1095.2, "end": 1098.559, "text": "Uh he has pretty you know bit of word to say about world model"}, {"id": "s234", "start": 1098.559, "end": 1108.48, "text": "but also kind of Schmidt Herburver's kind of how he defined the world model from 2019 like 1990 sort of uh uh you know like Wayne was just basically just that kind of model base."}, {"id": "s235", "start": 1108.48, "end": 1119.039, "text": "Uh for me the word model is basically just the model in the model based RL and I feel that has sufficient to describe but obviously you know there are like a lot of uh FE had a kind of nice blog post about what"}, {"id": "s236", "start": 1119.039, "end": 1121.6, "text": "about yeah this kind of broken down"}, {"id": "s237", "start": 1121.6, "end": 1123.44, "text": "um but yeah"}, {"id": "s238", "start": 1123.44, "end": 1135.84, "text": "yeah I mean so you know I I'll end this part of the conversation but like I I do think that language to me relying on language as like the sort of like the narrow pipe through which everything goes through"}, {"id": "s239", "start": 1135.84, "end": 1138.32, "text": "um still is like a lossy compression."}, {"id": "s240", "start": 1138.32, "end": 1139.919, "text": "No, no, no. But we're not seeing that, right?"}, {"id": "s241", "start": 1139.919, "end": 1142.96, "text": "We're basically saying the video model and the language together."}, {"id": "s242", "start": 1142.96, "end": 1146.64, "text": "So, so I think the language alone is uh not sufficient."}, {"id": "s243", "start": 1146.64, "end": 1149.679, "text": "That's why we feel like the video is a very complement model."}, {"id": "s244", "start": 1149.679, "end": 1149.919, "text": "Right?"}, {"id": "s245", "start": 1149.919, "end": 1158.48, "text": "Now the um you know kind of v omni many people feel as uh you know generating kind of pretty videos but I think our vision it's it's much more than that."}, {"id": "s246", "start": 1158.48, "end": 1165.12, "text": "It's a missing foundational model that's absolutely required if you want to make the AGI that match to humans not just a jacked one."}, {"id": "s247", "start": 1165.12, "end": 1166.08, "text": "Yeah."}, {"id": "s248", "start": 1166.08, "end": 1167.2, "text": "Um okay."}, {"id": "s249", "start": 1167.2, "end": 1178.64, "text": "So one one other thing you know you you mentioned on the vision side um and I'm kind of curious how sort of uh parallel you know in terms of your research careers"}, {"id": "s250", "start": 1178.64, "end": 1190.48, "text": "um this development is like I think basically a lot of vision people have crossed over into more model people um a lot of vision people also become generative video and image people"}, {"id": "s251", "start": 1190.48, "end": 1197.353, "text": "and is it just as simple as you know reversing uh image to text and then now it's text to image like"}, {"id": "s252", "start": 1197.353, "end": 1198.559, "text": "[laughter]"}, {"id": "s253", "start": 1198.559, "end": 1202.08, "text": "is is that if I mean that effectively was the diffusion process."}, {"id": "s254", "start": 1202.08, "end": 1216.16, "text": "Um I I just you know I I just see the career paths of the people that I talked to and and see and I I I see this overall trend of research directions and I just wanted you to guys to sort of reflect on on that."}, {"id": "s255", "start": 1216.16, "end": 1224.16, "text": "I mean I certainly went that way right I I started long time ago uh doing computer vision sort of object detection recognition things like that."}, {"id": "s256", "start": 1224.16, "end": 1239.679, "text": "Uh I think just that's just simpler problem right just generation is just harder like it's a it's a different kind of mapping right you map from the the inverse mapping is not as simple as just inverting the the kind of network you use right it's it's a it's it's more ambiguous right to go from cat to image"}, {"id": "s257", "start": 1239.679, "end": 1246.64, "text": "of a cat and in some ways it's also a loop because your vision work creates the synthetic labels that then continues"}, {"id": "s258", "start": 1246.64, "end": 1247.789, "text": "I mean sure"}, {"id": "s259", "start": 1247.789, "end": 1248.4, "text": "[laughter]"}, {"id": "s260", "start": 1248.4, "end": 1255.36, "text": "I don't know I don't know I try to validate my my sort of theories about how fields develop how how careers has progressed through this"}, {"id": "s261", "start": 1255.36, "end": 1263.919, "text": "I mean for like the the the better the understanding side gets like we have seen that the generation side also gets better right so like like"}, {"id": "s262", "start": 1263.919, "end": 1265.84, "text": "it's completely bootstrapping yeah it's"}, {"id": "s263", "start": 1265.84, "end": 1278.96, "text": "and so like like like there's definitely they're there to that thesis and I think yeah I think a lot of people have kind of like I I definitely worked with a lot of um image understanding people who became image generation people you know and then some of them have moved on to video because it's kind of like"}, {"id": "s264", "start": 1278.96, "end": 1284.96, "text": "the next thing where you have so many more dimensions to work with so yeah I'm curious about you spec as your"}, {"id": "s265", "start": 1284.96, "end": 1294.24, "text": "so I definitely like recommend start with understanding recognition because that's basically discriminator and then that's going to lead to better generation and that's what the bridge is basically reinforcement learning"}, {"id": "s266", "start": 1294.24, "end": 1302.64, "text": "so my um my kind of journey is I initially kind of worked on the algorithmic research in the gent model against some like you know amnest kind of generation"}, {"id": "s267", "start": 1302.64, "end": 1313.36, "text": "and then I worked on like RL and robotics um and then like six years ago I was like leading like a moonshot on the dexterity it was pretty early but I see now everyone's kind of doing"}, {"id": "s268", "start": 1313.36, "end": 1322.799, "text": "uh four years ago I basically kind of figured out that this like symbolic AGI is going to accelerate much faster than the kind of physical AGI kind of counterpart."}, {"id": "s269", "start": 1322.799, "end": 1326.64, "text": "So uh I decided to kind of like language models and then those things."}, {"id": "s270", "start": 1326.64, "end": 1333.039, "text": "Um and then recently kind of work with Doomi and then like omni team I quite enjoy kind of collaboration there."}, {"id": "s271", "start": 1333.039, "end": 1347.039, "text": "the what I quite enjoy uh what I recommend definitely to the researcher is to uh definitely kind of explore or at least like get exposure to what the top people in each of the community are like looking at how they kind of think about problems."}, {"id": "s272", "start": 1347.039, "end": 1363.039, "text": "So when I look at the video model to me it kind of reminds me like pretty early on sort of like language model where like very early language model was a kind of creative sort of demo right you kind of like try to write like a story like mobile and then like you know GBD2 and then those"}, {"id": "s273", "start": 1363.039, "end": 1373.679, "text": "kind of days like LTM kind of days right and then you know uh instruction tuning you actually kind of make it usable as a chatbot but then at the chatbot stage it still had so much hallucinations"}, {"id": "s274", "start": 1373.679, "end": 1385.919, "text": "and instruction for wasn't good enough so it couldn't use for reasoning and when I got good enough um in pre-training and post- trainining for reasoning then you know this kind of test time scaling the RL really took off"}, {"id": "s275", "start": 1385.919, "end": 1395.679, "text": "to like many of the kind of best performing models and right now I think the video model is as we mentioned it's it is a complimentary foundational model and I can imagine it's going to follow a similar path"}, {"id": "s276", "start": 1395.679, "end": 1407.6, "text": "it's going to be very uh it's going to improve a lot instruction following a lot of uh this it's going to improve a lot in reducing coordinations to extend that it become a very reliable world model so we can kind of like intermixed"}, {"id": "s277", "start": 1407.6, "end": 1413.44, "text": "video like space-time simulation was a text simulation to solve like arbitrary AGI problems."}, {"id": "s278", "start": 1413.44, "end": 1422.799, "text": "Also like I think the difference still is between sort of text models and like image video models is that like we haven't quite unified understanding and generation in in multimedia"}, {"id": "s279", "start": 1422.799, "end": 1433.919, "text": "I'd say yet like I mean I think I think without going to the details of course there's like it depends on on at which level you're thinking about this but generally like there's not that many as far as I know models"}, {"id": "s280", "start": 1433.919, "end": 1444.0, "text": "sot kind of you know frontier models that are genuinely kind of good at both understanding and generation of of let's videos, right?"}, {"id": "s281", "start": 1444.0, "end": 1446.159, "text": "Like it's a it's a it's an interesting challenge."}, {"id": "s282", "start": 1446.159, "end": 1447.84, "text": "I'm not saying that we should do this."}, {"id": "s283", "start": 1447.84, "end": 1454.559, "text": "Uh but but I think uh it kind of stands to reason that like you know understanding and generation are two sides of the same coin."}, {"id": "s284", "start": 1454.559, "end": 1457.279, "text": "So they they kind of should be in the same model in some ways."}, {"id": "s285", "start": 1457.279, "end": 1459.36, "text": "Uh but we don't necessarily always do that."}, {"id": "s286", "start": 1459.36, "end": 1460.48, "text": "So yeah."}, {"id": "s287", "start": 1460.48, "end": 1462.96, "text": "Uh you mentioned audio as well, right?"}, {"id": "s288", "start": 1462.96, "end": 1463.36, "text": "Yeah."}, {"id": "s289", "start": 1463.36, "end": 1469.76, "text": "Uh is that as hard as video or qualitatively different?"}, {"id": "s290", "start": 1469.76, "end": 1471.679, "text": "If if so, in what way?"}, {"id": "s291", "start": 1471.679, "end": 1484.48, "text": "Uh, one of the interesting directions three years ago was people using um, I guess diffusion to do audio uh, as in like the the sort of refusion approach."}, {"id": "s292", "start": 1484.48, "end": 1485.919, "text": "I don't know if you you guys saw that."}, {"id": "s293", "start": 1485.919, "end": 1499.279, "text": "Um, and I just think it's like very interesting if a modality that we perceive which is audio is different than video actually two machines is exactly the same like there's they see no difference."}, {"id": "s294", "start": 1499.279, "end": 1503.919, "text": "I mean I think on a technical level there are some differences but I think they're like relatively minor."}, {"id": "s295", "start": 1503.919, "end": 1512.72, "text": "I think from my perspective audio came into into my life when we shipped V3 which was I believe the first model that did like a joint"}, {"id": "s296", "start": 1512.72, "end": 1514.24, "text": "with the slicing of the"}, {"id": "s297", "start": 1514.24, "end": 1514.4, "text": "Yeah."}, {"id": "s298", "start": 1514.4, "end": 1514.96, "text": "Yeah."}, {"id": "s299", "start": 1514.96, "end": 1516.48, "text": "the gold bars or whatever."}, {"id": "s300", "start": 1516.48, "end": 1520.4, "text": "Um it it was the first model that did this sort of joint audiovisisual generation."}, {"id": "s301", "start": 1520.4, "end": 1520.96, "text": "Yes."}, {"id": "s302", "start": 1520.96, "end": 1528.88, "text": "uh like in the in the I mean there are there were other models that did kind of you know kind of kind of agentic hacking under the hood but this one was truly sort of"}, {"id": "s303", "start": 1528.88, "end": 1544.72, "text": "you know generating everything at once and we the reason we did that is because we felt and I think was the right choice we felt that like uh it only makes sense to generate them at the same time because there sort of kind of like from a machine learning perspective there's one latent kind of you know causal"}, {"id": "s304", "start": 1544.72, "end": 1556.72, "text": "kind of you know generative process right like there's something that generates you speaking it's not the pixels and then the the audio or somehow somehow generated by some other process like the lips have to move in sync with with the with the audio, right?"}, {"id": "s305", "start": 1556.72, "end": 1567.679, "text": "So, I think that that solved a lot of the issues that previous models had or the way that people did video generation before where it was like, okay, we generate the pixels and then we're going to hack something on top of it that like moves the lips"}, {"id": "s306", "start": 1567.679, "end": 1568.96, "text": "with the audio that we generate."}, {"id": "s307", "start": 1568.96, "end": 1570.708, "text": "And that's was very bad."}, {"id": "s308", "start": 1570.708, "end": 1571.44, "text": "[laughter]"}, {"id": "s309", "start": 1571.44, "end": 1578.96, "text": "And so, I think I think that was that's to me that's the the I mean after V3 like you know people were like what do you mean like there's no audio in your model?"}, {"id": "s310", "start": 1578.96, "end": 1582.48, "text": "like that makes no sense like once it's there like you you have to have it."}, {"id": "s311", "start": 1582.48, "end": 1588.72, "text": "So I think that was that was the right choice and doing it to one single generative model I think was was the right choice."}, {"id": "s312", "start": 1588.72, "end": 1598.64, "text": "One thing I kind of want to also can ask you guys an opinion as well once one difference I find the audio and then against the image and video is like the audio information is less verbalized."}, {"id": "s313", "start": 1598.64, "end": 1607.52, "text": "I mean of course the TTS and stuff is trivial right but the when you get her outside like how to describe music how do you describe this like this person's"}, {"id": "s314", "start": 1607.52, "end": 1616.96, "text": "tone kind of pitch I feel the sort of the verbalization is insufficient and the interesting thing is that you kind of see that in two other things like taste"}, {"id": "s315", "start": 1616.96, "end": 1620.96, "text": "taste sense and also uh say um touch"}, {"id": "s316", "start": 1620.96, "end": 1634.64, "text": "like smell and then the another interesting thing is the skin color so skin color the the language is pretty limited to describe the skin color and the reason is that we're extremely uh sensitive to the small difference perturvations"}, {"id": "s317", "start": 1634.64, "end": 1643.84, "text": "or not skin color because that basically shows us is this person going to kill me or is can I befriend this person kind of those kind of information and then I feel the smell tastes"}, {"id": "s318", "start": 1643.84, "end": 1655.679, "text": "um skin color and like sound kind of stuff is very very tied into primitive a like survival kind of stuff and so our sort of sensory system is so sensitive"}, {"id": "s319", "start": 1655.679, "end": 1669.039, "text": "that it's intractable to Um, so for example, I asked like one the wine sort of taster and then like professional and then he basically said he kind of use like a language from like a dating, you know, describing like a, you know, partner"}, {"id": "s320", "start": 1669.039, "end": 1674.88, "text": "as a way to describe the taste because there's no sufficient vocab to describe."}, {"id": "s321", "start": 1674.88, "end": 1676.559, "text": "Um, so I'm kind of curious."}, {"id": "s322", "start": 1676.559, "end": 1676.96, "text": "Yeah."}, {"id": "s323", "start": 1676.96, "end": 1678.48, "text": "Do you guys feel that?"}, {"id": "s324", "start": 1678.48, "end": 1684.72, "text": "I think well to some extent I think the same is true for visual information, right?"}, {"id": "s325", "start": 1684.72, "end": 1688.72, "text": "when you think about like a certain style or a certain aesthetic, right?"}, {"id": "s326", "start": 1688.72, "end": 1695.919, "text": "Like like there are some people who just have a much more kind of developed like whether it's palette or kind of visual taste and aesthetic, right?"}, {"id": "s327", "start": 1695.919, "end": 1705.679, "text": "Like I I think language just tends to be a bit of a limiting factor when you are trying to describe any of these things that like we experience with sensory information."}, {"id": "s328", "start": 1705.679, "end": 1717.12, "text": "And to your point earlier, I think that is the kind of the reason why we are investing in world models and why we are pushing on kind of the like perception and like generation side of things because"}, {"id": "s329", "start": 1717.12, "end": 1721.919, "text": "it it is such a large part of how we as humans navigate the world."}, {"id": "s330", "start": 1721.919, "end": 1726.399, "text": "It's a large part of how like embodied AI navigates the world."}, {"id": "s331", "start": 1726.399, "end": 1736.159, "text": "Um, and and I do I do think language like does have a lot of it's it's gotten us very far and it can probably get us really far, but it it feels limiting in a lot of these kind of areas."}, {"id": "s332", "start": 1736.159, "end": 1740.48, "text": "And yeah, I don't I don't really know how to describe, you know, like sense and taste."}, {"id": "s333", "start": 1740.48, "end": 1743.279, "text": "Um, but yeah, I'm curious to me."}, {"id": "s334", "start": 1743.279, "end": 1747.44, "text": "Um, I I yeah, I don't know that I have thought that deeply about this yet."}, {"id": "s335", "start": 1747.44, "end": 1752.96, "text": "So, uh, yeah, I mean yeah, I don't have a good answer about audio."}, {"id": "s336", "start": 1752.96, "end": 1762.08, "text": "I mean like I don't know the limit because I'm thinking about like well what is what is Omni bad at in terms of audio but they're all like solvable problems I find"}, {"id": "s337", "start": 1762.08, "end": 1774.64, "text": "uh so like with more data or better data or whatever it is so I don't know like that we have pushed the frontier so much that like we are have hit some sort of limits that are rooted in evolutionary"}, {"id": "s338", "start": 1774.64, "end": 1777.2, "text": "uh kind of you know limits imposed by humans."}, {"id": "s339", "start": 1777.2, "end": 1778.399, "text": "I don't know."}, {"id": "s340", "start": 1778.399, "end": 1781.039, "text": "He's feeling the limits of captioning which is the the thing I was"}, {"id": "s341", "start": 1781.039, "end": 1781.62, "text": "Yeah, exactly."}, {"id": "s342", "start": 1781.62, "end": 1782.0, "text": "[laughter]"}, {"id": "s343", "start": 1782.0, "end": 1787.36, "text": "There there's a lot of information in the world and it connects to basically why we do work modeling you mentioned."}, {"id": "s344", "start": 1787.36, "end": 1792.399, "text": "You just need srefs sref476 and then that's your that's what your journey does, right?"}, {"id": "s345", "start": 1792.399, "end": 1794.72, "text": "I guess maybe I can't describe this vibe but"}, {"id": "s346", "start": 1794.72, "end": 1799.279, "text": "well well I think that that's kind of the point of providing some of these references, right?"}, {"id": "s347", "start": 1799.279, "end": 1808.159, "text": "Because because like even just describing how someone talks and like their tone and and like procity and all of these things like I think I think some of these terms even like"}, {"id": "s348", "start": 1808.159, "end": 1810.08, "text": "I didn't used to know what they mean, right?"}, {"id": "s349", "start": 1810.08, "end": 1810.88, "text": "Well, now"}, {"id": "s350", "start": 1810.88, "end": 1811.6, "text": "yes."}, {"id": "s351", "start": 1811.6, "end": 1822.96, "text": "Dispuencuencies ex like like there there's kind of an entire vocabulary that even if you're not kind of steeped in a domain, which is true for actually like most human domains that like you don't even know what it means."}, {"id": "s352", "start": 1822.96, "end": 1829.84, "text": "Um and sometimes it's also a question of like if we haven't focused on those things, you know, with the large language models that they may also have gaps in those areas, right?"}, {"id": "s353", "start": 1829.84, "end": 1838.559, "text": "And then we feel them on the other side with generation because we're like fundamentally relying on on the language models understanding of the world to then be able to like represent it."}, {"id": "s354", "start": 1838.559, "end": 1844.32, "text": "Um, so I yeah, it all kind of goes back to your question about like the the language as an intermediary."}, {"id": "s355", "start": 1844.32, "end": 1854.24, "text": "Um, but yeah, I think to De's point like some of these might just be like focus areas and things that we haven't necessarily pushed on as much as we can and like as we will we will discover what the actual"}, {"id": "s356", "start": 1854.24, "end": 1855.919, "text": "ceiling is."}, {"id": "s357", "start": 1855.919, "end": 1859.6, "text": "Yeah, as a podcaster I think a lot about sound."}, {"id": "s358", "start": 1859.6, "end": 1865.52, "text": "Um, and and I I'll just offer a couple things for discussion in case in case it triggers anything with you guys."}, {"id": "s359", "start": 1865.52, "end": 1879.679, "text": "Um I have three domains of rough audio which is like a music voice SFX you know is that rough okay covers everything and then also even within voice let's just let's just focus on voice forget the other two um room sound like the the echoiness"}, {"id": "s360", "start": 1879.679, "end": 1893.84, "text": "of like big room small room in person in a car over a phone all these like are labelable but we experience them very differently and I I often think like one of the tells of a AI video is that it is studio quality"}, {"id": "s361", "start": 1893.84, "end": 1908.96, "text": "because it was recorded in a studio video because that's your training data and like and and to me that's one thing actually like the most interesting thing is just uh when I tell this is how I convince people who are kind of skeptical about the need for world models because you need it even for audio"}, {"id": "s362", "start": 1908.96, "end": 1919.84, "text": "about well I'm further away from you so I should sound a little bit softer or more diffused and like the the video models need to pick that up because if they're going to do immersive video and audio"}, {"id": "s363", "start": 1919.84, "end": 1921.44, "text": "you need that"}, {"id": "s364", "start": 1921.44, "end": 1934.799, "text": "I I I love that example of basically like studio quality or not in a way like we don't have enough language to really describe like like this kind of echoing or like some kind of noise kind of happening we just like don't have precise enough"}, {"id": "s365", "start": 1934.799, "end": 1945.2, "text": "and uh if you um you know basically the reason that I think it's quite important to have like relatively information rich like kind of captioning is that we kind of rely on the natural language as a representation"}, {"id": "s366", "start": 1945.2, "end": 1960.399, "text": "but if you basically don't have enough uh representation that basically means the condition on the language the generation is very multimodal and if you anything can learn from the BAE kind of like you know very old you know GMBA kind of research the idea is we really want to capture most of the stoasticity"}, {"id": "s367", "start": 1960.399, "end": 1966.72, "text": "in the later representation and then the the X given the Z should be kind of like deterministic so yeah"}, {"id": "s368", "start": 1966.72, "end": 1971.76, "text": "yeah yeah um well I hope I hope there's more uh progress there and I'm sure you guys are doing"}, {"id": "s369", "start": 1971.76, "end": 1984.672, "text": "I even actually like facial expressions right and maybe this gets to your point about like things that we're very sensitive to right I think you can tell a lot of AI content also just by from like people's facial expressions stressful."}, {"id": "s370", "start": 1984.672, "end": 1984.72, "text": "[laughter]"}, {"id": "s371", "start": 1984.72, "end": 1986.08, "text": "Yes."}, {"id": "s372", "start": 1986.08, "end": 1986.399, "text": "Yes."}, {"id": "s373", "start": 1986.399, "end": 1991.84, "text": "And we try not to contribute to it, but you know, um and or or like skin textures, right?"}, {"id": "s374", "start": 1991.84, "end": 1995.519, "text": "Like like the things that kind of make things look real in real life."}, {"id": "s375", "start": 1995.519, "end": 2002.64, "text": "Like I you know, I can tell from the way you're nodding or from the way like your micro expressions are kind of changing of like how you're reacting to what I'm saying."}, {"id": "s376", "start": 2002.64, "end": 2005.279, "text": "Like we haven't quite crossed that chasm."}, {"id": "s377", "start": 2005.279, "end": 2008.399, "text": "I think like we're we're so much better than we were a year ago."}, {"id": "s378", "start": 2008.399, "end": 2008.96, "text": "Yeah."}, {"id": "s379", "start": 2008.96, "end": 2014.48, "text": "Um, but there's so much more headroom kind of in a lot of those things that like we as humans are super sensitive to."}, {"id": "s380", "start": 2014.48, "end": 2026.24, "text": "And like I think image arguably probably is there because there's there's a lot of kind of images that I will see that like really do look indistinguishable from reality and I can't tell if they're generated or not."}, {"id": "s381", "start": 2026.24, "end": 2027.36, "text": "Better than reality"}, {"id": "s382", "start": 2027.36, "end": 2029.919, "text": "um or well that's a different"}, {"id": "s383", "start": 2029.919, "end": 2031.833, "text": "No, I I think that one of the parad"}, {"id": "s384", "start": 2031.833, "end": 2031.84, "text": "[laughter]"}, {"id": "s385", "start": 2031.84, "end": 2034.32, "text": "better than what I would take on my vacation as a photo."}, {"id": "s386", "start": 2034.32, "end": 2034.88, "text": "Yes."}, {"id": "s387", "start": 2034.88, "end": 2041.679, "text": "One of the one of the fun experiments that we did a while ago in the team is is like can we generate videos that are better than than real videos, right?"}, {"id": "s388", "start": 2041.679, "end": 2046.64, "text": "So you just take the same caption from like oh yeah some video and then"}, {"id": "s389", "start": 2046.64, "end": 2047.279, "text": "recycle it."}, {"id": "s390", "start": 2047.279, "end": 2047.6, "text": "Yeah."}, {"id": "s391", "start": 2047.6, "end": 2053.76, "text": "Just just try to like describe a real video and then generate the equivalent version with omni and then do a human eval."}, {"id": "s392", "start": 2053.76, "end": 2054.72, "text": "How does how does it do?"}, {"id": "s393", "start": 2054.72, "end": 2058.96, "text": "And then humans largely prefer AI generated"}, {"id": "s394", "start": 2058.96, "end": 2060.079, "text": "margin."}, {"id": "s395", "start": 2060.079, "end": 2062.8, "text": "But because it's because it's the RL process,"}, {"id": "s396", "start": 2062.8, "end": 2063.839, "text": "that's the RL process working."}, {"id": "s397", "start": 2063.839, "end": 2065.119, "text": "It's however you want to rationalize it."}, {"id": "s398", "start": 2065.119, "end": 2066.32, "text": "It's not necessarily the old process."}, {"id": "s399", "start": 2066.32, "end": 2069.76, "text": "It's just like I think it's just I'm not saying this is a good result."}, {"id": "s400", "start": 2069.76, "end": 2081.44, "text": "I'm just saying is we have optimized in a way that like kind of potentially sort of, you know, triggers something in the human brain that like, oh, it looks it looks all a lot of the videos just look"}, {"id": "s401", "start": 2081.44, "end": 2081.919, "text": "better."}, {"id": "s402", "start": 2081.919, "end": 2082.72, "text": "Like I'm not Yeah."}, {"id": "s403", "start": 2082.72, "end": 2082.879, "text": "Yeah."}, {"id": "s404", "start": 2082.879, "end": 2083.359, "text": "Yeah."}, {"id": "s405", "start": 2083.359, "end": 2093.76, "text": "on on inspection on on deeper inspection they they would not actually be more useful or whatever but like if you just say side by side random YouTube video versus"}, {"id": "s406", "start": 2093.76, "end": 2106.32, "text": "generated version of it will you will just have a it will just look better because it's more it's a sharper more HDR uh you know the skin tone is is is better it's not again it's not more realistic"}, {"id": "s407", "start": 2106.32, "end": 2109.839, "text": "uh it doesn't solve your problem necessarily but it it looks better"}, {"id": "s408", "start": 2109.839, "end": 2113.44, "text": "I I since also depend on the sensitivity of the people."}, {"id": "s409", "start": 2113.44, "end": 2123.04, "text": "Uh I was born raised in Japan and I think one thing I kind of know is like they're extremely extremely like sensitive about like you know that's why you know like architecture like food and stuff like they have."}, {"id": "s410", "start": 2123.04, "end": 2132.56, "text": "Um so I talked to like a mangar like like artist there and he's like he's kind of disgusted by like the generation AI and one kind of thing he mentioned is like the eye gaze"}, {"id": "s411", "start": 2132.56, "end": 2135.2, "text": "eye gaze that slight difference"}, {"id": "s412", "start": 2135.2, "end": 2138.64, "text": "makes me makes him kind of feel creepy about like unnatural"}, {"id": "s413", "start": 2138.64, "end": 2140.48, "text": "like if you're looking a little bit off."}, {"id": "s414", "start": 2140.48, "end": 2140.8, "text": "Yeah."}, {"id": "s415", "start": 2140.8, "end": 2142.24, "text": "It's just uh Yeah."}, {"id": "s416", "start": 2142.24, "end": 2144.16, "text": "just like uh it looks too fake."}, {"id": "s417", "start": 2144.16, "end": 2144.48, "text": "Yeah."}, {"id": "s418", "start": 2144.48, "end": 2144.96, "text": "To the point."}, {"id": "s419", "start": 2144.96, "end": 2147.44, "text": "So So I think it does depend on the sensitivity and"}, {"id": "s420", "start": 2147.44, "end": 2147.599, "text": "Yeah."}, {"id": "s421", "start": 2147.599, "end": 2148.56, "text": "Yeah."}, {"id": "s422", "start": 2148.56, "end": 2161.04, "text": "All I'm saying is like you know human preferences are like a not particularly like uh reliable barometer of like what you should be optimizing for like if you just ask people do you like this or not you not necessarily get what you wanted."}, {"id": "s423", "start": 2161.04, "end": 2161.359, "text": "Yeah."}, {"id": "s424", "start": 2161.359, "end": 2174.24, "text": "Let let me just kind of add one thing but like four years ago there was a like debate that if the prompt engineering is going to disappear and uh my my like you know some very powerful people say you know it's going to disappear but I basically said like it shouldn't"}, {"id": "s425", "start": 2174.24, "end": 2185.28, "text": "because the prompt engineering like sort of you know specifying that is like the the only way you can sort of control the output sort of you know when you have like sort of control by the AI"}, {"id": "s426", "start": 2185.28, "end": 2189.52, "text": "and what allows you to prompt engineer is really that sensitivity."}, {"id": "s427", "start": 2189.52, "end": 2202.56, "text": "So sure maybe like right now the AI can do a lot of autoprompting and that and it can generate something that's sufficient but uh if it's like that never be satisfied like never be satisfied with the AI's generated content"}, {"id": "s428", "start": 2202.56, "end": 2207.44, "text": "always fine-tune your sensitivity and always kind of keep prompting the differences."}, {"id": "s429", "start": 2207.44, "end": 2222.0, "text": "I I think to the there's also a big difference between like the average human untrained eye which I I would put myself in that bucket you know like I have I have some aesthetic sensibilities and I've done this long enough that you know like I have I have a preference"}, {"id": "s430", "start": 2222.0, "end": 2230.48, "text": "um but you know like your example of a manga artist like that's somebody who has honed a craft like over possibly many decades."}, {"id": "s431", "start": 2230.48, "end": 2233.76, "text": "Um, and anybody who does that, whether it's like design, architecture, right?"}, {"id": "s432", "start": 2233.76, "end": 2241.28, "text": "Like you you you just have a very different level of like expertise and you see things that like the average human will not see."}, {"id": "s433", "start": 2241.28, "end": 2242.0, "text": "But Doom is right."}, {"id": "s434", "start": 2242.0, "end": 2253.04, "text": "Like when we look at if you were to just, you know, um, poll 10 people on the street, they would probably prefer the like overly smooth like very saturated"}, {"id": "s435", "start": 2253.04, "end": 2253.839, "text": "kind of"}, {"id": "s436", "start": 2253.839, "end": 2255.52, "text": "It's called the Instagram filter."}, {"id": "s437", "start": 2255.52, "end": 2255.92, "text": "It is."}, {"id": "s438", "start": 2255.92, "end": 2257.156, "text": "It is the Yeah."}, {"id": "s439", "start": 2257.156, "end": 2257.599, "text": "[laughter]"}, {"id": "s440", "start": 2257.599, "end": 2264.88, "text": "Um, and you know, and and so there's also a little bit of a question of like what does your default aesthetic look like if you don't specify?"}, {"id": "s441", "start": 2264.88, "end": 2279.68, "text": "But then to Shane's point, one of the things we always try to get these models better at is instruction follow so that like when you want to get them to a different outcome like you should be able to whether that's through language or whether that's through references because language is sometimes too limiting."}, {"id": "s442", "start": 2279.68, "end": 2283.839, "text": "Um, and so like these models continue to get better at it but they so much at work."}, {"id": "s443", "start": 2283.839, "end": 2289.251, "text": "Do do you feel pressure as a as a product director to set the default for the world like I mean"}, {"id": "s444", "start": 2289.251, "end": 2290.72, "text": "[laughter]"}, {"id": "s445", "start": 2290.72, "end": 2291.28, "text": "kind of"}, {"id": "s446", "start": 2291.28, "end": 2294.079, "text": "maybe I should I don't know I haven't thought about this"}, {"id": "s447", "start": 2294.079, "end": 2298.64, "text": "you know you know it's like someone has to have a default the default has to exist"}, {"id": "s448", "start": 2298.64, "end": 2309.68, "text": "actually I will say like we have thought about this um and I I think one of the so for example actually like if you look at nanobanana generations we had like an explosion of nanobanana infographics"}, {"id": "s449", "start": 2309.68, "end": 2311.28, "text": "when nanobanana pro came out"}, {"id": "s450", "start": 2311.28, "end": 2312.24, "text": "I tried it yeah"}, {"id": "s451", "start": 2312.24, "end": 2318.56, "text": "um yeah I think Nurb's papers were like all you know so so many had like infographics generated."}, {"id": "s452", "start": 2318.56, "end": 2321.839, "text": "Can you run your uh watermarking on it and see how many"}, {"id": "s453", "start": 2321.839, "end": 2328.8, "text": "uh we pro we probably could we have we haven't done that but I saw so like my Twitter was maybe this is just also like the bias of my algorithm"}, {"id": "s454", "start": 2328.8, "end": 2341.119, "text": "but they were everywhere um and it was actually very painful because um I think our default aesthetic was a little bit too it was too cluttered like I think that the the model is like a bit of an overeager"}, {"id": "s455", "start": 2341.119, "end": 2349.52, "text": "student that just like learned you know it was like oh I know all these like I know all this information about this concept let me like shove into the same image."}, {"id": "s456", "start": 2349.52, "end": 2352.132, "text": "Japanese infographics 5x that"}, {"id": "s457", "start": 2352.132, "end": 2353.44, "text": "[laughter]"}, {"id": "s458", "start": 2353.44, "end": 2357.28, "text": "or maybe it was you know um but it just and and"}, {"id": "s459", "start": 2357.28, "end": 2360.72, "text": "wait so same prompt same content if it's in Japanese it's"}, {"id": "s460", "start": 2360.72, "end": 2361.92, "text": "density density"}, {"id": "s461", "start": 2361.92, "end": 2362.88, "text": "oh wow"}, {"id": "s462", "start": 2362.88, "end": 2364.88, "text": "because that's the style in Japan"}, {"id": "s463", "start": 2364.88, "end": 2367.852, "text": "yeah some like very you know bureaucrat and"}, {"id": "s464", "start": 2367.852, "end": 2368.0, "text": "[laughter]"}, {"id": "s465", "start": 2368.0, "end": 2369.839, "text": "there's a famous word for it yeah"}, {"id": "s466", "start": 2369.839, "end": 2381.04, "text": "no but we do do go through this process with Omni we did it together right like where like we had like a bunch of like we like at the very end okay like this is we did some tuning and like okay what kind of style do we prefer right like you know"}, {"id": "s467", "start": 2381.04, "end": 2383.28, "text": "is it more muted more saturated"}, {"id": "s468", "start": 2383.28, "end": 2384.56, "text": "we had a lot of saturation"}, {"id": "s469", "start": 2384.56, "end": 2399.599, "text": "yeah there was there were I think Nicole just has PTSD so has forgotten about it but she was very much involved in this of like okay which which kind of color palette do we basically prefer right and it's you know it's it's it's not something that like you have to make a a trade-off there like"}, {"id": "s470", "start": 2399.599, "end": 2400.0, "text": "uh"}, {"id": "s471", "start": 2400.0, "end": 2413.68, "text": "and and and it's because it ends up being us right like actually it is true like it it ends up being the modeling teams and you could ask the question legitimately of like are we the best people to do that or should we actually work with someone who like has a really creative point of view and is"}, {"id": "s472", "start": 2413.68, "end": 2419.28, "text": "more of like you know an art director and like has like and we kind of go back and forth on this um"}, {"id": "s473", "start": 2419.28, "end": 2421.04, "text": "we have the trusted testers I'm on"}, {"id": "s474", "start": 2421.04, "end": 2425.04, "text": "we do we have trusted testers who give us a lot of feedback and we take that serious"}, {"id": "s475", "start": 2425.04, "end": 2429.359, "text": "very well organized by the way to have these like weekly calls and stuff like it's it's amazing"}, {"id": "s476", "start": 2429.359, "end": 2439.2, "text": "um Logan's team does a lot of that so kudo kuda kudos kudos to Logan um who couldn't be here today um and we have a lot of people actually internally at Google like Fulfur"}, {"id": "s477", "start": 2439.2, "end": 2451.68, "text": "who give us like a ton of No, no, no. Truly like who give us a ton of feedback on like when we when we release new checkpoints and like sometimes it will be stuff that we like don't see right like we would be like oh yeah this optimization"}, {"id": "s478", "start": 2451.68, "end": 2457.359, "text": "seems okay and then they would come back what have you done like you completely ruined my grass you know because now the detail is all blurry."}, {"id": "s479", "start": 2457.359, "end": 2464.24, "text": "I think he just noticed not not a super secret at this point but like that our model tends to put rings wedding rings on on on hand."}, {"id": "s480", "start": 2464.24, "end": 2464.88, "text": "That's yeah"}, {"id": "s481", "start": 2464.88, "end": 2465.44, "text": "very strange."}, {"id": "s482", "start": 2465.44, "end": 2469.839, "text": "I had never noticed that but he's like he I just saw it and there's a faux fur channel basically."}, {"id": "s483", "start": 2469.839, "end": 2473.2, "text": "Uh he posted I was like why is there wedding ring in every hand?"}, {"id": "s484", "start": 2473.2, "end": 2474.16, "text": "I'm like that's strange."}, {"id": "s485", "start": 2474.16, "end": 2475.839, "text": "That sounds very common reward hacking."}, {"id": "s486", "start": 2475.839, "end": 2476.079, "text": "Yeah."}, {"id": "s487", "start": 2476.079, "end": 2476.319, "text": "Yeah."}, {"id": "s488", "start": 2476.319, "end": 2476.56, "text": "Yeah."}, {"id": "s489", "start": 2476.56, "end": 2482.319, "text": "So but you know something that we would not have we would not have noticed necessarily while while developing this right is an oral artifact or"}, {"id": "s490", "start": 2482.319, "end": 2492.64, "text": "I I don't know you do have like a lot of preference based and then you know you may can prefer that sperious correlation reward hacking it can happen like in many weird ways."}, {"id": "s491", "start": 2492.64, "end": 2493.04, "text": "Yeah"}, {"id": "s492", "start": 2493.04, "end": 2493.44, "text": "it does."}, {"id": "s493", "start": 2493.44, "end": 2494.24, "text": "It is"}, {"id": "s494", "start": 2494.24, "end": 2501.839, "text": "uh this was related to another topic that again I I try to use these mainstage things as introductions or ties in."}, {"id": "s495", "start": 2501.839, "end": 2508.079, "text": "Uh we have the eval track we have character AI and YouTube talking about how they evaluate videos."}, {"id": "s496", "start": 2508.079, "end": 2511.04, "text": "Um how do you evaluate videos"}, {"id": "s497", "start": 2511.04, "end": 2512.609, "text": "apart from furer"}, {"id": "s498", "start": 2512.609, "end": 2513.359, "text": "[laughter]"}, {"id": "s499", "start": 2513.359, "end": 2517.44, "text": "not everyone has a fauxur but also you know I think there needs to be something more quantitative"}, {"id": "s500", "start": 2517.44, "end": 2522.96, "text": "well I mean it's you improve Gemini to improve the evaluation for video."}, {"id": "s501", "start": 2522.96, "end": 2528.24, "text": "Um that's that's no no that's that's definitely one way uh it's actually very hard."}, {"id": "s502", "start": 2528.24, "end": 2528.8, "text": "It's very hard."}, {"id": "s503", "start": 2528.8, "end": 2545.92, "text": "It's very hard um to get like you know audators to evaluate things in a video like including especially things like aesthetics right like that it's like there are some things that are a little bit more objective like especially when we talk like let's say we talk about images and we look at like infographics text rendering that's actually"}, {"id": "s504", "start": 2545.92, "end": 2556.48, "text": "fine right because like you can kind of OCR things out and then you can look at like okay this letter is like messed up and then the whole thing is actually useless because if like literally if a letter is off"}, {"id": "s505", "start": 2556.48, "end": 2558.64, "text": "in render text you just can't use that asset."}, {"id": "s506", "start": 2558.64, "end": 2559.119, "text": "Right."}, {"id": "s507", "start": 2559.119, "end": 2562.4, "text": "So th those things are like a little bit more auto ratable."}, {"id": "s508", "start": 2562.4, "end": 2569.04, "text": "Um from what we found we do rely a lot on humans looking at things and so we do do a lot of human evals."}, {"id": "s509", "start": 2569.04, "end": 2570.4, "text": "We do a lot of human evals."}, {"id": "s510", "start": 2570.4, "end": 2583.44, "text": "Do a lot of human ev and every time Jane is like um and every time we have a new model we like want to do more things and we want to like gem in more capabilities and then we have like more emails that we have to run."}, {"id": "s511", "start": 2583.44, "end": 2594.0, "text": "Um, and then at some point you do get two models that are like kind of close to each other and then like we literally make decisions based on like looking at outputs side by side."}, {"id": "s512", "start": 2594.0, "end": 2604.24, "text": "Sometimes like in a room like I've been in rooms where there's like 10 of us and we're just like looking at video side by side and we're like do you prefer this or do you prefer that?"}, {"id": "s513", "start": 2604.24, "end": 2605.68, "text": "like oh wow it's"}, {"id": "s514", "start": 2605.68, "end": 2617.119, "text": "I mean but it is it is genuinely very complicated the more capabilities you add like you know even just the one capability but it's like almost AGI complete capabilities like video editing right like think about video editing as a and like"}, {"id": "s515", "start": 2617.119, "end": 2618.64, "text": "editing with audio and"}, {"id": "s516", "start": 2618.64, "end": 2620.4, "text": "my editor will be very happy to hear this"}, {"id": "s517", "start": 2620.4, "end": 2623.04, "text": "edit the hardest problem in g media"}, {"id": "s518", "start": 2623.04, "end": 2635.28, "text": "I mean I don't know if it's the hardest but it's definitely there right like uh in terms of like complexity of of evaluation like free form video editing is you can do anything like"}, {"id": "s519", "start": 2635.28, "end": 2639.839, "text": "yes uh and like I I spent a lot of money on that and it's very hard to tell me"}, {"id": "s520", "start": 2639.839, "end": 2644.56, "text": "like adding those we don't have like add a sloth eval right like uh that we"}, {"id": "s521", "start": 2644.56, "end": 2645.2, "text": "well now we should"}, {"id": "s522", "start": 2645.2, "end": 2650.24, "text": "now we should yeah yeah yeah but like things like that like it's it's it's not that easy to track"}, {"id": "s523", "start": 2650.24, "end": 2660.16, "text": "I think I'm just surprised at the sample size that you have right like to to test the entire surface of your models you still rely on a magnitude of hundreds"}, {"id": "s524", "start": 2660.16, "end": 2666.96, "text": "no no no so we do like yeah well we do we do a ton of human evals on like on like you know thousands of things."}, {"id": "s525", "start": 2666.96, "end": 2674.96, "text": "Um I I think there's also like an element of you know we can talk about things like live experiments right like which which is also where you get signal on like"}, {"id": "s526", "start": 2674.96, "end": 2685.52, "text": "like some of these more minute differences at like much larger scale then there's auto raers which is definitely kind of a more it's a very well defined space I think for LLMs"}, {"id": "s527", "start": 2685.52, "end": 2697.2, "text": "much more nent for media models and then like sometimes you still do rely on human judgment and we do rely on things like feedback from people who just like have a very owned"}, {"id": "s528", "start": 2697.2, "end": 2702.16, "text": "like aesthetic and and people who just like use these models in their workflows dayto-day, right?"}, {"id": "s529", "start": 2702.16, "end": 2709.52, "text": "Because we could also like you could have a model that does really well on some slice of human evals, but then it like really breaks a workflow for somebody."}, {"id": "s530", "start": 2709.52, "end": 2715.92, "text": "And so this is why we do like early access programs and we try to get feedback and then we like try to incorporate it before we release something more broadly."}, {"id": "s531", "start": 2715.92, "end": 2719.359, "text": "I feel like Shane had a hot take based on his"}, {"id": "s532", "start": 2719.359, "end": 2721.599, "text": "expression always when we were talking about this"}, {"id": "s533", "start": 2721.599, "end": 2733.2, "text": "every kind of human sort of you know work should be gradually kind of amortized and then the interesting thing is the video understanding especially like against like AI gener like detecting air stuff is extremely"}, {"id": "s534", "start": 2733.2, "end": 2735.359, "text": "interesting uh visual task"}, {"id": "s535", "start": 2735.359, "end": 2747.92, "text": "and then like some of it kind of aesthetics or this kind of visual quality but for some of the kind of cases like semantically doesn't make sense for example you're taking like some like a famous scene from a movie and try to sort of"}, {"id": "s536", "start": 2747.92, "end": 2758.72, "text": "um construct that and then if you kind of generate it uh it can generate something there but at some point some of the semantic information doesn't make sense like it's actually inconsistent."}, {"id": "s537", "start": 2758.72, "end": 2761.76, "text": "So can the AI actually detect that?"}, {"id": "s538", "start": 2761.76, "end": 2770.8, "text": "So when I evaluate the AI videos like oh I feel I'm so smart you know like like AI is still kind of behind but we should make like a lot of effort."}, {"id": "s539", "start": 2770.8, "end": 2778.0, "text": "I think the video understanding is extremely uh important intelligence task uh beyond just the pure aesthetics or the preference."}, {"id": "s540", "start": 2778.0, "end": 2782.72, "text": "Um and yeah we we should always try to amatize the human"}, {"id": "s541", "start": 2782.72, "end": 2783.76, "text": "human label."}, {"id": "s542", "start": 2783.76, "end": 2784.48, "text": "Yeah."}, {"id": "s543", "start": 2784.48, "end": 2785.359, "text": "Yeah."}, {"id": "s544", "start": 2785.359, "end": 2788.8, "text": "Um, what data do you need?"}, {"id": "s545", "start": 2788.8, "end": 2793.52, "text": "A lot of people I talked to wanted to get in front of you actually."}, {"id": "s546", "start": 2793.52, "end": 2796.319, "text": "Uh, they I mean they want to be nice about it."}, {"id": "s547", "start": 2796.319, "end": 2797.52, "text": "They have a lot of video data."}, {"id": "s548", "start": 2797.52, "end": 2798.48, "text": "They have gaming data."}, {"id": "s549", "start": 2798.48, "end": 2799.839, "text": "They have real world video data."}, {"id": "s550", "start": 2799.839, "end": 2801.119, "text": "They have images."}, {"id": "s551", "start": 2801.119, "end": 2802.319, "text": "They have labelers."}, {"id": "s552", "start": 2802.319, "end": 2804.64, "text": "What do you want?"}, {"id": "s553", "start": 2804.88, "end": 2806.079, "text": "Are you like offering?"}, {"id": "s554", "start": 2806.079, "end": 2809.359, "text": "I'm just like this is your request for like Okay."}, {"id": "s555", "start": 2809.359, "end": 2809.76, "text": "Okay."}, {"id": "s556", "start": 2809.76, "end": 2812.319, "text": "We get I'm sure you get a lot of pitches, right?"}, {"id": "s557", "start": 2812.319, "end": 2814.24, "text": "You get a lot of people want to talk to you."}, {"id": "s558", "start": 2814.24, "end": 2828.8, "text": "what's like I think actually it's the signal is this problem this sorting out signal from noise is the main problem so creating a nice API of like okay if you actually do a b and c we are interested in that"}, {"id": "s559", "start": 2829.68, "end": 2839.28, "text": "um loaded question there so uh I don't know that there's like an easy like you know did you do I think we we do already have a lot of data I think it's it's"}, {"id": "s560", "start": 2839.28, "end": 2841.28, "text": "hard to talk about this"}, {"id": "s561", "start": 2841.28, "end": 2843.839, "text": "you know you want to talk about the public I don't want to get you in trouble Yeah,"}, {"id": "s562", "start": 2843.839, "end": 2844.64, "text": "but like I think"}, {"id": "s563", "start": 2844.64, "end": 2855.92, "text": "No, no. What I just want to say is like hard to talk about this in a sort of you know without trying to without I have to think about the what I am revealing about our project and what where we're going."}, {"id": "s564", "start": 2855.92, "end": 2860.64, "text": "Um generally high quality data I think maybe maybe let's just put it this way right it's not not the secret"}, {"id": "s565", "start": 2860.64, "end": 2862.319, "text": "embodied I'm sorry"}, {"id": "s566", "start": 2862.319, "end": 2863.76, "text": "embodied data"}, {"id": "s567", "start": 2863.76, "end": 2864.72, "text": "I mean"}, {"id": "s568", "start": 2864.72, "end": 2872.8, "text": "yeah sure I mean we have sort of announced I think publicly right that we we have some sort of robotics collaboration right like so I think it's like a"}, {"id": "s569", "start": 2872.8, "end": 2888.72, "text": "like or or but you because we have a robotics team at GDM so you know they're always interested in things like that um I mean for Omni specifically I think we're just quite interested just high quality data right like you know it it's not some sort of not necessarily like oh random"}, {"id": "s570", "start": 2888.72, "end": 2897.28, "text": "YouTube video but like you know some a some more professional shop things like that right the things that those are those are things that we're always on the lookout for like"}, {"id": "s571", "start": 2897.28, "end": 2898.8, "text": "uh and yeah"}, {"id": "s572", "start": 2898.8, "end": 2908.16, "text": "and I think for you know maybe this is easier to some extent to answer for like some of the agentic work as well like like like actual kind of"}, {"id": "s573", "start": 2908.16, "end": 2920.64, "text": "like what are the tests that people are trying to do right these things are actually kind of difficult to manufacture if you're doing it yourself or if you're like doing it with a vendor, like what is the actual like if you're creating a marketing campaign,"}, {"id": "s574", "start": 2920.64, "end": 2922.16, "text": "like what does that look like, right?"}, {"id": "s575", "start": 2922.16, "end": 2935.76, "text": "Like do do you start from here's like a picture of my new product and then I want to turn that into a video ad and I want to turn that into a bunch of assets that like fit fit all these different ad formats that I need to push onto various platforms to promote"}, {"id": "s576", "start": 2935.76, "end": 2946.0, "text": "and then like so you kind of go from this to that and like what is that kind of trajectory of tasks that you're that you're like you know experiencing along the way like that is really useful"}, {"id": "s577", "start": 2946.0, "end": 2963.839, "text": "and that is actually kind of difficult to get right u because like we don't always have the right firstparty surface where people are actually doing some of these things or like you might work with someone who's a vendor but they don't also don't have that product surface right like like a lot of this kind of information lives"}, {"id": "s578", "start": 2963.839, "end": 2971.28, "text": "in the places where people are doing these tasks and so that's kind of difficult to get like if anyone's figured that out you should reach out to us"}, {"id": "s579", "start": 2971.28, "end": 2973.079, "text": "every channel of thought yeah every"}, {"id": "s580", "start": 2973.079, "end": 2973.599, "text": "[laughter]"}, {"id": "s581", "start": 2973.599, "end": 2973.839, "text": "thought"}, {"id": "s582", "start": 2973.839, "end": 2978.559, "text": "every thought yeah and maybe the data the Chinese lab is using"}, {"id": "s583", "start": 2978.559, "end": 2983.359, "text": "yes yeah uh you know as a media person myself, right?"}, {"id": "s584", "start": 2983.359, "end": 2992.319, "text": "Like there's so many podcasters and people in in marketing departments and all these like they would happy to be your data like you know just like put a BCI on my head"}, {"id": "s585", "start": 2992.319, "end": 2993.384, "text": "and podcast"}, {"id": "s586", "start": 2993.384, "end": 2993.68, "text": "[laughter]"}, {"id": "s587", "start": 2993.68, "end": 3009.44, "text": "watch my things uh because like you know there's just endless amount of work to do like there's so much work and this is all like this needs to somewhat be commodity like obviously you can be an art like an artisan like you can be Hollywood for like the really high quality stuff but actually a lot of work"}, {"id": "s588", "start": 3009.44, "end": 3013.689, "text": "is commodity and like should be modelable and we want you to do"}, {"id": "s589", "start": 3013.689, "end": 3013.839, "text": "[laughter]"}, {"id": "s590", "start": 3013.839, "end": 3018.48, "text": "And but we we want the high quality to Demi's point right like we do want we want the high quality."}, {"id": "s591", "start": 3018.48, "end": 3019.28, "text": "We want commodity."}, {"id": "s592", "start": 3019.28, "end": 3019.44, "text": "Yeah."}, {"id": "s593", "start": 3019.44, "end": 3019.76, "text": "Yes."}, {"id": "s594", "start": 3019.76, "end": 3020.0, "text": "Yes."}, {"id": "s595", "start": 3020.0, "end": 3021.599, "text": "You want on both sides."}, {"id": "s596", "start": 3021.599, "end": 3024.319, "text": "Um I I just"}, {"id": "s597", "start": 3024.319, "end": 3026.789, "text": "Thank you for the solicitation."}, {"id": "s598", "start": 3026.789, "end": 3027.44, "text": "[laughter]"}, {"id": "s599", "start": 3027.44, "end": 3031.28, "text": "Uh I you know we we we also I also added a data quality track."}, {"id": "s600", "start": 3031.28, "end": 3038.079, "text": "I I think that uh people want to understand like what uh at AI like how to raise the bar, right?"}, {"id": "s601", "start": 3038.079, "end": 3053.359, "text": "like like the and a lot of it is just educating the market and educating researchers and engineers and founders on like this is where we're going a lot of this is stop doing that do this do this instead and I'm like people will listen"}, {"id": "s602", "start": 3053.359, "end": 3056.0, "text": "yeah I don't know uh to that extent you know"}, {"id": "s603", "start": 3056.0, "end": 3069.839, "text": "but I think to that to that point like there's a lot of again just like craft that goes into this right and there's a lot of process like you even to the marketing campaign example you don't create that in like five minutes right you like go you go through a process and you iterate and you like pick"}, {"id": "s604", "start": 3069.839, "end": 3081.119, "text": "something over something else because you liked it for whatever reason like maybe the eye gaze was correct right like we just we don't know these things right because none of us are marketing directors and like the models don't know these things"}, {"id": "s605", "start": 3081.119, "end": 3093.359, "text": "I even kind of say this for the natural like a language as well like I I always kind of say 99% of information is inside people you can only extract it through active dialogue and befriending them so most of the stuff on the internet"}, {"id": "s606", "start": 3093.359, "end": 3101.68, "text": "is like sort of the outcome the output of that yes but you know what are what are all the trajectories you know how did this person have this inspiration to write this paper"}, {"id": "s607", "start": 3101.68, "end": 3113.599, "text": "what is the starting point what is the inspiration what are the dialogue that sparked it those kind of stuff is kind of inside people so even you know those kind of like even the language space is kind of that I think the creative is kind of similar as well there's a lot of dark knowledge"}, {"id": "s608", "start": 3113.599, "end": 3128.16, "text": "yeah it's like when you write a novel right like a novel speaks to you because like usually there's some sort of like a personal connection that you feel to like the story or the trajectory or the characters right like if you read most of the stuff that's written by LLM's today like it's,"}, {"id": "s609", "start": 3128.16, "end": 3136.16, "text": "you know, it's it's it starts it falls into these like default par patterns and like the language starts to feel really similar and all the descriptions sound really similar."}, {"id": "s610", "start": 3136.16, "end": 3142.16, "text": "You can kind of like quickly read it as like, oh, this is not that interesting because like I can't connect to it, right?"}, {"id": "s611", "start": 3142.16, "end": 3146.24, "text": "Um, and again, that's that's kind of like a human expertise."}, {"id": "s612", "start": 3146.24, "end": 3153.28, "text": "One nice thing recently is the Google Cloud and the Google Deep Mind are kind of starting to invest a lot more in the FTEEs for the product engineers."}, {"id": "s613", "start": 3153.28, "end": 3158.24, "text": "And I also kind of saw some uh recruiting for the creative you know gem media kind of space as well."}, {"id": "s614", "start": 3158.24, "end": 3170.48, "text": "So I think those are kind of really the effort because we we kind of feel that you know what we can kind of do with a lot of public data there's limits but really you know partnering with that we can provide kind of better models and products and yeah we kind of feedback"}, {"id": "s615", "start": 3170.48, "end": 3174.16, "text": "uh we have an FD track here for the first time every lab is announcing it."}, {"id": "s616", "start": 3174.16, "end": 3175.359, "text": "It's it's crazy."}, {"id": "s617", "start": 3175.359, "end": 3185.44, "text": "Um, one thing I'm actually very keen on doing and I push I push for this at Cognition as well is to turn the FDES not just into sales and solutions"}, {"id": "s618", "start": 3185.44, "end": 3188.319, "text": "but also to EVAL's uh eval workers."}, {"id": "s619", "start": 3188.319, "end": 3191.68, "text": "FD is not the sales FD is way way bigger than that."}, {"id": "s620", "start": 3191.68, "end": 3194.8, "text": "How do you frame FDs then?"}, {"id": "s621", "start": 3194.96, "end": 3195.126, "text": "Because"}, {"id": "s622", "start": 3195.126, "end": 3195.2, "text": "[laughter]"}, {"id": "s623", "start": 3195.2, "end": 3200.48, "text": "I do think about it as sales like you're you know the more the more you customize the solution for"}, {"id": "s624", "start": 3200.48, "end": 3208.48, "text": "so I define post training as anything between the pre-training and the final user experience anything anything is a post training"}, {"id": "s625", "start": 3208.48, "end": 3221.52, "text": "and to me when I first sort of you know learned a lot about I mean FD kind of I guess originally you know came from like path here and then that so I guess the kind of history is different but yeah I think the key is really that um you know the key is like not only to"}, {"id": "s626", "start": 3221.52, "end": 3230.8, "text": "kind of work uh with them and ensure that they kind of know how to but also to sort of code like derive kind of insights that can basically kind of help both parties."}, {"id": "s627", "start": 3230.8, "end": 3233.76, "text": "They can put the like a lot of harness how they use the model."}, {"id": "s628", "start": 3233.76, "end": 3235.52, "text": "We can improve like very upstream."}, {"id": "s629", "start": 3235.52, "end": 3242.96, "text": "So how to get the customer feedback to the modeling I feel is the kind of more the the role I I kind of want for the fds."}, {"id": "s630", "start": 3242.96, "end": 3243.44, "text": "Yeah."}, {"id": "s631", "start": 3243.44, "end": 3243.839, "text": "Yeah."}, {"id": "s632", "start": 3243.839, "end": 3244.079, "text": "Yeah."}, {"id": "s633", "start": 3244.079, "end": 3251.359, "text": "and and even for sorry just on that like if you want to talk to us or at least me um I I'm not going to offer up your time"}, {"id": "s634", "start": 3251.359, "end": 3265.04, "text": "um but I it's really helpful for us to actually talk to people who are using our models and like understand where they're struggling uh because again that just like it's it's the real world task that you're actually trying to use them for right like I will talk to people"}, {"id": "s635", "start": 3265.04, "end": 3281.04, "text": "who do kind of interior inter interior design with some of our image models um you know and they will say hey like I really want to take this pattern pattern, but then I want to scale it across like 10 different ruck sizes and sometimes I have like a very custom ruck size and then the model fails at"}, {"id": "s636", "start": 3281.04, "end": 3291.839, "text": "like replicating the pattern the same way or you know I want to do a try on for these earrings and then the earrings have a certain size and then like my head has a certain size like it has to make sense"}, {"id": "s637", "start": 3291.839, "end": 3299.839, "text": "if you're actually trying to try things on and like the models kind of fail at a bunch of these things that like actually happen in the real world, right?"}, {"id": "s638", "start": 3299.839, "end": 3306.559, "text": "Um and so that that's like useful for us because for some of these things like we don't think about because we don't you know we don't use the models for those tasks"}, {"id": "s639", "start": 3306.559, "end": 3313.04, "text": "or like um you know I think to your point about ad campaigns or whatever like people have like notions of brand languages or whatever like which is"}, {"id": "s640", "start": 3313.04, "end": 3313.44, "text": "yes"}, {"id": "s641", "start": 3313.44, "end": 3326.0, "text": "like a a bunch of images or PDFs saying things you know it's a pretty kind of you know ambiguous question as well what is the IKEA brand language you know is it is it blue and yellow I mean that's that's not a very like"}, {"id": "s642", "start": 3326.0, "end": 3327.28, "text": "but like what shade of blue you know."}, {"id": "s643", "start": 3327.28, "end": 3327.44, "text": "Yeah."}, {"id": "s644", "start": 3327.44, "end": 3327.599, "text": "Yeah."}, {"id": "s645", "start": 3327.599, "end": 3327.76, "text": "Yeah."}, {"id": "s646", "start": 3327.76, "end": 3332.72, "text": "So there there's like, you know, and the brands are pretty spec, you know, pretty, you know, like they they do care about the shade of blue."}, {"id": "s647", "start": 3332.72, "end": 3335.2, "text": "It's not shouldn't just be a random blue and a random yellow."}, {"id": "s648", "start": 3335.2, "end": 3336.319, "text": "That's not going to be IKEA, right?"}, {"id": "s649", "start": 3336.319, "end": 3337.76, "text": "I'm just thinking about an example."}, {"id": "s650", "start": 3337.76, "end": 3347.76, "text": "But like this is the kind of stuff that, you know, it's not necessarily part of our like, you know, developing frontier models kind of, you know, necessarily mandate, but it's something that we do want to we do want to fundamentally like build"}, {"id": "s651", "start": 3347.76, "end": 3353.359, "text": "products that people will use to solve concrete tasks, not just not just research artifacts, right?"}, {"id": "s652", "start": 3353.359, "end": 3357.04, "text": "So I think it's useful to understand what people do care about."}, {"id": "s653", "start": 3357.04, "end": 3372.24, "text": "Uh well, I'm sure a lot of people are very grateful for your work and there's a lot more to do that you've made so much progress over the last like even just couple years of like Nano Banana and Theo and Omni and uh I don't know what else you got cooking but we're very excited like you this"}, {"id": "s654", "start": 3372.24, "end": 3381.2, "text": "is one of those things where like I was very disappointed you know when Sora shut down and and I think like there needs to be more general exploration of"}, {"id": "s655", "start": 3381.2, "end": 3385.078, "text": "uh you know generative models and not just you know coding."}, {"id": "s656", "start": 3385.078, "end": 3385.2, "text": "[laughter]"}, {"id": "s657", "start": 3385.2, "end": 3386.4, "text": "I think I think that is"}, {"id": "s658", "start": 3386.4, "end": 3387.68, "text": "we obviously like this."}, {"id": "s659", "start": 3387.68, "end": 3388.559, "text": "We love coding."}, {"id": "s660", "start": 3388.559, "end": 3392.24, "text": "Love coding and and uh yes uh but thank you so much for your time."}, {"id": "s661", "start": 3392.24, "end": 3395.2, "text": "Uh it's been a real pleasure and I can't wait to see what this looks like next."}, {"id": "s662", "start": 3395.2, "end": 3396.0, "text": "Thank you for having us."}, {"id": "s663", "start": 3396.0, "end": 3396.559, "text": "Great question."}, {"id": "s664", "start": 3396.559, "end": 3397.524, "text": "Thank you everyone."}, {"id": "s665", "start": 3397.524, "end": 3399.524, "text": "[applause]"}]}, {"id": "KcVkq5L-0f0", "title": "Your agents lack context: Here's how to fix \"You're absolutely right!\" — Brandon Waselnuk, Unblocked", "channel": "AI Engineer", "duration": 849, "upload_date": null, "url": "https://www.youtube.com/watch?v=KcVkq5L-0f0", "api": "/api/talks/KcVkq5L-0f0.json", "summary_url": "/#KcVkq5L-0f0", "transcript": {"html": "/transcripts/KcVkq5L-0f0.html", "txt": "/transcripts/KcVkq5L-0f0.txt", "vtt": "/transcripts/KcVkq5L-0f0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.4, "end": 13.96, "text": "Good afternoon."}, {"id": "s3", "start": 13.96, "end": 16.92, "text": "I hope you're all having a lovely day here at AIE."}, {"id": "s4", "start": 16.92, "end": 19.24, "text": "We've had great weather, though the UV has been like nine."}, {"id": "s5", "start": 19.24, "end": 22.76, "text": "So, hopefully you put your sunscreen on your being appropriate adults."}, {"id": "s6", "start": 22.76, "end": 30.64, "text": "I'm here to talk to you about context engineering, and I have the good fortune of following AJ from LinkedIn because he talked a lot about the system that we actually design and sell to other solutions."}, {"id": "s7", "start": 30.64, "end": 32.599, "text": "And I'm going to give you a bunch of open source tools."}, {"id": "s8", "start": 32.599, "end": 39.36, "text": "So, if you watch that last talk just before me, you're going to get a bunch of tool chance you can go mess around yourself, and I'll teach you a bunch of techniques today."}, {"id": "s9", "start": 39.36, "end": 43.0, "text": "The goal, of course, is to fix your absolutely right."}, {"id": "s10", "start": 43.0, "end": 49.28, "text": "I think they've taken that out of the prompts now, so it just says you're right or other things, but I'm sure you've all been there."}, {"id": "s11", "start": 49.28, "end": 50.52, "text": "So, I'm Brandon."}, {"id": "s12", "start": 50.52, "end": 51.8, "text": "I work at Unblocked."}, {"id": "s13", "start": 51.8, "end": 53.16, "text": "Uh yes, I have a coconut."}, {"id": "s14", "start": 53.16, "end": 57.28, "text": "We've been giving these away for fresh context, fresh fresh coconuts."}, {"id": "s15", "start": 57.28, "end": 64.519, "text": "But, the thing that I want to talk to you about is with these models, especially with Meth O'Clock models, I think Fable 5's coming back today, so they say."}, {"id": "s16", "start": 64.519, "end": 67.92, "text": "You can watch my Grain Call recording try to book this."}, {"id": "s17", "start": 67.92, "end": 69.44, "text": "We'll ignore it."}, {"id": "s18", "start": 69.44, "end": 79.72, "text": "But, what I want you to do is to think about the fact that with these tools, AI-generated code should feel like it was written by someone who's been on your team for years."}, {"id": "s19", "start": 81.36, "end": 87.12, "text": "So, to get in the right headspace, for years you have to consider that you have been the context engine."}, {"id": "s20", "start": 87.12, "end": 89.48, "text": "How did you do that?"}, {"id": "s21", "start": 89.48, "end": 100.75999999999999, "text": "You built context by going to work and asking questions, shipping PRs and getting them rejected, going to meetings, and all this slowly over time built up the engine that is your brain."}, {"id": "s22", "start": 100.75999999999999, "end": 102.12, "text": "You understand how it works here."}, {"id": "s23", "start": 102.12, "end": 103.6, "text": "You know how stuff gets shipped."}, {"id": "s24", "start": 103.6, "end": 108.47999999999999, "text": "You were on call that night when you took prod down and why that happened."}, {"id": "s25", "start": 108.47999999999999, "end": 112.88, "text": "The problem is that these agents have this exact same problem."}, {"id": "s26", "start": 112.88, "end": 119.84, "text": "Every time you create a new terminal session with an agent in it, it's very intelligent, but it doesn't have any context on how your company operates."}, {"id": "s27", "start": 119.84, "end": 122.12, "text": "So, it needs to get that somehow."}, {"id": "s28", "start": 122.12, "end": 129.52, "text": "The problem is as you move these agents up in scale, that cost compounds if you get it incorrect at the beginning."}, {"id": "s29", "start": 129.52, "end": 136.959, "text": "The leverage of context and content We're just going to fix this cuz I think people want to take some photos."}, {"id": "s30", "start": 137.72, "end": 139.28, "text": "Perfect."}, {"id": "s31", "start": 139.28, "end": 141.36, "text": "That context issue will compound."}, {"id": "s32", "start": 141.36, "end": 148.76, "text": "So, at the far left, we all remember the age-old time of 2 years ago where we had tab complete models that were pretty cool."}, {"id": "s33", "start": 148.76, "end": 151.12, "text": "What happened is it popped up and said, \"Hey, do you want to tab this?\""}, {"id": "s34", "start": 151.12, "end": 154.24, "text": "And quickly in your head with your context engine, you go, \"No, that's bad.\""}, {"id": "s35", "start": 154.24, "end": 155.16, "text": "Or you went, \"Oh, sweet.\""}, {"id": "s36", "start": 155.16, "end": 156.12, "text": "You hit tab."}, {"id": "s37", "start": 156.12, "end": 156.959, "text": "Nice."}, {"id": "s38", "start": 156.959, "end": 168.88, "text": "As we move along the agentic kind of adoption curve, what happens is you are moving into more situations in which you have agents running without a human in the loop, or at least you wish you didn't have to be in the loop."}, {"id": "s39", "start": 168.88, "end": 177.12, "text": "What they need is some way to be able to ask the questions they need when they hit walls in order to write code or solve or basically fix the issue and ultimately"}, {"id": "s40", "start": 177.12, "end": 190.28, "text": "output code that's mergeable into your code base, especially with many people here who actually work in brownfield code bases that have been around for a long time that run real revenue across them, not just greenfield fun projects."}, {"id": "s41", "start": 190.76, "end": 194.239, "text": "So, that cost of bad context compounding at the beginning is cheap."}, {"id": "s42", "start": 194.239, "end": 199.76, "text": "If you think like shift left, finding a defect or a bug, you want to find it as early as possible."}, {"id": "s43", "start": 199.76, "end": 201.72, "text": "It's the same with context."}, {"id": "s44", "start": 201.72, "end": 204.07999999999998, "text": "Cuz as you move across, you get into doom loops."}, {"id": "s45", "start": 204.07999999999998, "end": 205.88, "text": "You usually ask your to do something."}, {"id": "s46", "start": 205.88, "end": 206.92000000000002, "text": "It's like, \"Hey, I did it.\""}, {"id": "s47", "start": 206.92000000000002, "end": 208.2, "text": "And you're like, \"No, man.\""}, {"id": "s48", "start": 208.2, "end": 210.2, "text": "And then you correct and correct and correct."}, {"id": "s49", "start": 210.2, "end": 211.68, "text": "That's wasted search tokens."}, {"id": "s50", "start": 211.68, "end": 214.04, "text": "It's also wasted rework time."}, {"id": "s51", "start": 214.04, "end": 218.44, "text": "And that is not acceptable with the tokenomics we have coming."}, {"id": "s52", "start": 218.44, "end": 221.92000000000002, "text": "And then as you move into parallel agents, etc., you start hitting a review tax."}, {"id": "s53", "start": 221.92000000000002, "end": 234.76, "text": "So, these AI code reviewers we're trying to use, but again, key context is important there so that those code reviews are able to basically understand how the operations of the business are so it knows the business logic and more."}, {"id": "s54", "start": 234.76, "end": 247.72, "text": "And then finally, if your hope is to move all the way out of the loop, you're like background agents, get it done, make no mistakes, you really need to make sure that you have a context engine so those agents can query it and get all the answers they need so they can keep operating"}, {"id": "s55", "start": 247.72, "end": 250.36, "text": "in an effective way."}, {"id": "s56", "start": 250.88, "end": 253.56, "text": "There are some common approaches that don't work."}, {"id": "s57", "start": 253.56, "end": 255.92, "text": "They're basically like a local maxima."}, {"id": "s58", "start": 255.92, "end": 263.0, "text": "Two of the ones we see the most with our hundreds of enterprise clients and mid-market size businesses is the curated context trap."}, {"id": "s59", "start": 263.0, "end": 271.2, "text": "If you've ever sat down and taken a virtual file system or maybe a local file system, you put some markdown files in it and you're like, here's all the context of this project, it's how it works."}, {"id": "s60", "start": 271.2, "end": 276.4, "text": "You then allow your agent to grep over that and it gets a bunch of good data and then it will perform better."}, {"id": "s61", "start": 276.4, "end": 282.08, "text": "The issue is first, now you have to distribute that so maybe you throw it up in a GitHub and your team can grab it."}, {"id": "s62", "start": 282.08, "end": 293.08, "text": "But then the next is that repo is going to rot just like all the other docs you wrote down and then who at your org is the omnipotent one who has the taste to curate this file or repo"}, {"id": "s63", "start": 293.08, "end": 294.96, "text": "for literally everyone in the org."}, {"id": "s64", "start": 294.96, "end": 297.04, "text": "So you start to hit these issues."}, {"id": "s65", "start": 297.04, "end": 299.52, "text": "The next is the MCP plateau."}, {"id": "s66", "start": 299.52, "end": 301.32, "text": "This one is pretty clear."}, {"id": "s67", "start": 301.32, "end": 303.2, "text": "We have MCPs, they're great."}, {"id": "s68", "start": 303.2, "end": 307.96, "text": "You can give it to your agent and now it can basically get information from another source system."}, {"id": "s69", "start": 307.96, "end": 316.48, "text": "The problem is, of course, based on how you write the server description, the tool descriptions, your agent may never call it even though it should have."}, {"id": "s70", "start": 316.48, "end": 320.68, "text": "Or if it does, there's a known bias called the satisfaction of search bias."}, {"id": "s71", "start": 320.68, "end": 326.84, "text": "What that means is the agent, when it finds the first piece of information that it thinks is correct, it goes, \"Oh, I have what I need.\""}, {"id": "s72", "start": 326.84, "end": 328.4, "text": "and it proceeds."}, {"id": "s73", "start": 328.4, "end": 338.8, "text": "In most organizations, there's a Slack conversation from last night that says you should be doing A instead of doing B and the agent will never find it if it found some architecture record first."}, {"id": "s74", "start": 338.8, "end": 342.56, "text": "So it doesn't actually consider all of the context."}, {"id": "s75", "start": 342.919, "end": 347.08, "text": "The problem here is access to information is not understanding."}, {"id": "s76", "start": 347.08, "end": 351.8, "text": "So to deliver understanding to a model, you have to do other techniques."}, {"id": "s77", "start": 352.4, "end": 357.28, "text": "What I'm basically trying to say is what your agent can't see is everything below the waterline."}, {"id": "s78", "start": 357.28, "end": 364.36, "text": "It can 100% get code that compiles, but that code that compiles is taking down prod and you have a P0 at 1:00 in the morning."}, {"id": "s79", "start": 364.36, "end": 372.44, "text": "Because it missed the fact that you have a certain rollout procedure, you're supposed to turn off a feature flag, whatever it might be."}, {"id": "s80", "start": 372.92, "end": 379.16, "text": "So, your team needs a context engine because what it should do is understand who you are and where you work in an organization."}, {"id": "s81", "start": 379.16, "end": 387.2, "text": "So, if I say to you, I want to get off stood up, it knows where I work, it knows where my get commits are, it knows who reviews those commits,"}, {"id": "s82", "start": 387.2, "end": 394.08, "text": "and it understands that my context, it can focus me, and then use that as a trigger point to find the rest of the information."}, {"id": "s83", "start": 394.08, "end": 401.6, "text": "It resolves conflicts, as mentioned, an old architecture diagram and last night's Slack convo with the CTO, which one is right?"}, {"id": "s84", "start": 401.6, "end": 405.24, "text": "You need to use a bunch of techniques to discern determine that."}, {"id": "s85", "start": 405.24, "end": 407.48, "text": "Respects permissions and governance, of course."}, {"id": "s86", "start": 407.48, "end": 419.28, "text": "MCP allows us to use OAuth and other scopes and SSO, but if someone asks a question over here who's not supposed to know about secret project A, you need to make sure that doesn't leak into the response."}, {"id": "s87", "start": 419.28, "end": 424.4, "text": "And then finally, deliver the right context at the right time to the model in a token optimized way."}, {"id": "s88", "start": 424.4, "end": 439.32, "text": "We have multiple surface areas because human engineers still talk to Unblocked all the time to get information they need in Slack or otherwise, but then you want token optimized responses if you're just speaking machine to machine in order to not waste a bunch of bold classes on your token spend."}, {"id": "s89", "start": 439.76, "end": 441.24, "text": "This is how an engine works."}, {"id": "s90", "start": 441.24, "end": 447.919, "text": "I'm going to be brief on this, but basically on the left-hand side, you see all the data sources that are coming in."}, {"id": "s91", "start": 447.919, "end": 455.52, "text": "For us, we focus on engineering teams and that's who uses us, as well as the technically light teams around it, like support, sales, and otherwise."}, {"id": "s92", "start": 455.52, "end": 460.68, "text": "You ingest all that data, you get real-time data from tools like your instant management tool chain."}, {"id": "s93", "start": 460.68, "end": 464.15999999999997, "text": "It comes into the engine, where that engine is, it thinks at the bottom."}, {"id": "s94", "start": 464.15999999999997, "end": 466.28, "text": "I'll expand on that slide in a moment."}, {"id": "s95", "start": 466.28, "end": 469.56, "text": "But basically it uses these six key characteristics."}, {"id": "s96", "start": 469.56, "end": 475.96, "text": "And then on the right, you output the context to the exact workflow in the manner that it is needed."}, {"id": "s97", "start": 476.2, "end": 481.4, "text": "Those six key points, as mentioned, unified system context, you have to go across the whole thing."}, {"id": "s98", "start": 481.4, "end": 488.44, "text": "At large orgs, companies like LinkedIn scale, Workday, General Motors, whatever, they need this type of data."}, {"id": "s99", "start": 488.44, "end": 490.68, "text": "They need to understand everything that's happening."}, {"id": "s100", "start": 490.68, "end": 501.36, "text": "And Threek this morning actually talking about Fable coming out potentially later today, he mentioned that you need to actually provide a map and then let Fable discover the territory."}, {"id": "s101", "start": 501.36, "end": 509.84, "text": "The way to help confine that is making sure that these models have access to all of the context, because they will find your unknown unknowns."}, {"id": "s102", "start": 509.84, "end": 516.919, "text": "There are definitely things going on in your company that you're just unaware of, but would be really helpful for the task you're trying to do."}, {"id": "s103", "start": 516.919, "end": 523.56, "text": "That will move faster, but the targeted retrieval, you should be able to if you provide a link quickly, unfurl it, get that document back and move along."}, {"id": "s104", "start": 523.56, "end": 529.64, "text": "So, two tasks, deep research, go long, that's fine, but you also need speed when speed is required."}, {"id": "s105", "start": 529.64, "end": 535.72, "text": "Conflict resolution, we already talked about that, but one thing says do A, one thing says do B, who is right?"}, {"id": "s106", "start": 535.72, "end": 539.76, "text": "Personalized relevance, who am I, where do I work, what am I working on?"}, {"id": "s107", "start": 539.76, "end": 545.12, "text": "That token optimization, making sure the response is good and effective and doesn't bloat the window."}, {"id": "s108", "start": 545.12, "end": 550.56, "text": "And then permission enforcement, of course, OAuth, you shouldn't see it, you shouldn't see it."}, {"id": "s109", "start": 550.56, "end": 557.4, "text": "What we did with some tests is we actually ran the exact same prompt to the same model and one with context and one without."}, {"id": "s110", "start": 557.4, "end": 559.72, "text": "This is the wall clock time savings."}, {"id": "s111", "start": 559.72, "end": 562.16, "text": "And then 2 hours, which is great."}, {"id": "s112", "start": 562.16, "end": 564.08, "text": "And then the tokens savings."}, {"id": "s113", "start": 564.08, "end": 572.56, "text": "So, it was a sizable task, it took about 21 million tokens without and then 18, or sorry, 10.8 million tokens with it."}, {"id": "s114", "start": 572.56, "end": 585.64, "text": "This is the type of experience that you typically see when you're using a context engine, cuz the majority of those wasted search tokens where it has to grab at the beginning of every session to understand and discover things are no longer there when it's hydrated with context."}, {"id": "s115", "start": 585.64, "end": 587.36, "text": "Hydrated."}, {"id": "s116", "start": 587.36, "end": 591.2, "text": "And then, as you move forward, you get these types of outcomes."}, {"id": "s117", "start": 591.2, "end": 599.36, "text": "50% fewer tokens, faster triage, and the answer quality is actually better because it knew what was going on inside of the business."}, {"id": "s118", "start": 599.4, "end": 602.4, "text": "Now, this next part, you'll probably want to photo."}, {"id": "s119", "start": 602.4, "end": 611.28, "text": "If you don't know, you can actually take a picture of a QR code and then later in photos tap on it and then load the link so you don't need to float here cuz I'm going to give you three QR codes."}, {"id": "s120", "start": 611.28, "end": 613.2, "text": "This first one is for the social comment network."}, {"id": "s121", "start": 613.2, "end": 615.16, "text": "I'll pop that up so you can take a photo."}, {"id": "s122", "start": 615.16, "end": 622.72, "text": "But, this is an open source tool that we've got that actually, using all deterministic programming, goes over your GitHub and understands who works on your team."}, {"id": "s123", "start": 622.72, "end": 623.88, "text": "This is my real team."}, {"id": "s124", "start": 623.88, "end": 627.28, "text": "We called Rasheem the machine cuz he ships like crazy."}, {"id": "s125", "start": 627.28, "end": 631.08, "text": "But, on the right, you can see who he commits, where he commits, who's reviewing his work."}, {"id": "s126", "start": 631.08, "end": 634.12, "text": "And then in those tabs, you can find a distilled experts graph."}, {"id": "s127", "start": 634.12, "end": 636.52, "text": "You get full coverage of what's going on in your business."}, {"id": "s128", "start": 636.52, "end": 645.08, "text": "And if you optionally add one of the API keys for either OpenAI or um Anthropic, it'll um determine what your teams are by doing some labeling for you."}, {"id": "s129", "start": 645.08, "end": 653.6, "text": "It's a really cool tool to understand where your team works and get that social network in there in order to focus the context engine if you're going to be building these tools yourself."}, {"id": "s130", "start": 653.6, "end": 656.08, "text": "The next is called the repo rules agent."}, {"id": "s131", "start": 656.08, "end": 658.44, "text": "This is a sample from our real code base."}, {"id": "s132", "start": 658.44, "end": 667.0, "text": "I'm going to pop that up anyway so you don't need to talk to the thing, but in short, what it does is discover all the places your team has written rules files,"}, {"id": "s133", "start": 667.0, "end": 671.32, "text": "checks them all, and then tells you what severities you've given, what other things you've given."}, {"id": "s134", "start": 671.32, "end": 673.6, "text": "Should I just switch to this?"}, {"id": "s135", "start": 673.6, "end": 675.56, "text": "It tells you what it Whoa, hey."}, {"id": "s136", "start": 675.56, "end": 677.8389999999999, "text": "It's good to meet you all."}, {"id": "s137", "start": 677.8389999999999, "end": 686.6, "text": "Basically, it will find all the rules that are inside of your repo and then tell you if you have duplicate issues or others problems and then you can grab over it as an index."}, {"id": "s138", "start": 686.6, "end": 692.72, "text": "So, that index can be called and you can dedupe and it'll help improve um your retrieval of context."}, {"id": "s139", "start": 692.72, "end": 701.2, "text": "And then finally, on Monday we delivered this workshop, which was going beyond rag and taught how to build a relational context engine from scratch."}, {"id": "s140", "start": 701.2, "end": 703.08, "text": "So, if you scan that, you'll get the full workbook."}, {"id": "s141", "start": 703.08, "end": 706.92, "text": "It has six PRs stacked that teach you how to walk through doing this."}, {"id": "s142", "start": 706.92, "end": 710.16, "text": "But in short, rag is an incredible technique and you want that."}, {"id": "s143", "start": 710.16, "end": 718.72, "text": "But the other half of the problem is what people actually ask is, \"What are the open PRs that I worked on in the last week with authentication?\""}, {"id": "s144", "start": 718.72, "end": 721.16, "text": "Rag cannot answer that question alone."}, {"id": "s145", "start": 721.16, "end": 722.4, "text": "You need queries."}, {"id": "s146", "start": 722.4, "end": 734.56, "text": "So, this shows you how to do a schema-less basically look up that allows the agent to discover a schema and then write queries against it deterministically in order to get that type of relational data out."}, {"id": "s147", "start": 734.56, "end": 737.12, "text": "Very useful technique."}, {"id": "s148", "start": 737.72, "end": 741.6, "text": "Use cases of a context engine, of course, do go beyond code generation."}, {"id": "s149", "start": 741.6, "end": 745.04, "text": "This is, you know, where we live a lot, a lot of our customers spend their time."}, {"id": "s150", "start": 745.04, "end": 756.12, "text": "But it's amazing to see what happens when a bunch of other people around the business start picking up these tools, customer success people solving tickets right at the time that it comes in from a customer."}, {"id": "s151", "start": 756.12, "end": 764.8, "text": "We've got sales people closing deals earlier in their quarter because they're able to just query the Unblocked context engine on the fly while in the field."}, {"id": "s152", "start": 764.8, "end": 767.2, "text": "And so many more."}, {"id": "s153", "start": 768.04, "end": 780.32, "text": "What you can also do is if you saw that curve chart earlier where I talked about the levels, we've built a fun little tool where basically an LLM will quiz you and ask you about what's going on and then it will map you to exactly where you are and then tell you some techniques"}, {"id": "s154", "start": 780.32, "end": 787.28, "text": "about how to level up through that if you are looking to basically compound your capabilities and ship with AI tools at scale."}, {"id": "s155", "start": 787.28, "end": 789.4, "text": "It's readiness.unblocked.com."}, {"id": "s156", "start": 791.28, "end": 793.52, "text": "The gap is not intelligence any longer."}, {"id": "s157", "start": 793.52, "end": 794.839, "text": "It's context."}, {"id": "s158", "start": 794.839, "end": 801.8, "text": "We will continue to get incredible models like Mythos as it's been grown by Anthropic and I'm sure Soul once I'm allowed to see it."}, {"id": "s159", "start": 801.8, "end": 802.32, "text": "I will get it."}, {"id": "s160", "start": 802.32, "end": 804.8389999999999, "text": "Happy Canada Day, by the way."}, {"id": "s161", "start": 804.8389999999999, "end": 814.24, "text": "But what's happening is it's about the context you surround these models with in order for them to be effective and token efficient inside of your organization."}, {"id": "s162", "start": 815.76, "end": 820.52, "text": "So, I have a question slide, but I'm not sure I'm allowed."}, {"id": "s163", "start": 820.8, "end": 821.32, "text": "Nope."}, {"id": "s164", "start": 821.32, "end": 824.52, "text": "So, what you'll do is come meet me at booth P16."}, {"id": "s165", "start": 824.52, "end": 826.52, "text": "You can look for the coconut."}, {"id": "s166", "start": 826.52, "end": 829.56, "text": "It'll be great to hang out with all of you and get into details here if you need it."}, {"id": "s167", "start": 829.56, "end": 831.859, "text": "Thank you for your time."}, {"id": "s168", "start": 831.859, "end": 833.859, "text": "[applause]"}, {"id": "s169", "start": 846.269, "end": 848.269, "text": "[music]"}]}, {"id": "Krzs8GeiWTc", "title": "Generative UI... in Python? — Jeremiah Lowin, Prefect", "channel": "AI Engineer", "duration": 1058, "upload_date": null, "url": "https://www.youtube.com/watch?v=Krzs8GeiWTc", "api": "/api/talks/Krzs8GeiWTc.json", "summary_url": "/#Krzs8GeiWTc", "transcript": {"html": "/transcripts/Krzs8GeiWTc.html", "txt": "/transcripts/Krzs8GeiWTc.txt", "vtt": "/transcripts/Krzs8GeiWTc.vtt"}, "sentences": [{"id": "s1", "start": 12.639, "end": 13.519, "text": "Good."}, {"id": "s2", "start": 13.519, "end": 15.44, "text": "Um, thank you all for for coming out."}, {"id": "s3", "start": 15.44, "end": 19.359, "text": "Um, I'm going to talk today about one of the weirdest pieces of software I've ever written."}, {"id": "s4", "start": 19.359, "end": 23.68, "text": "It's sort of on the edge of a whole lot of stuff I've been putting putting forward into the world."}, {"id": "s5", "start": 23.68, "end": 25.439, "text": "Um, so join me if you will."}, {"id": "s6", "start": 25.439, "end": 32.48, "text": "We're going to try and have the most reasoned approach to to a very strange thing that agents and MCP and other things have enabled."}, {"id": "s7", "start": 32.48, "end": 35.92, "text": "And so to begin, I want to talk about MCP apps."}, {"id": "s8", "start": 35.92, "end": 39.84, "text": "I don't know if any of you were able to join any of the other talks earlier today."}, {"id": "s9", "start": 39.84, "end": 44.079, "text": "Maybe the one that um Edo and Lead just gave maybe an hour ago."}, {"id": "s10", "start": 44.079, "end": 45.76, "text": "Just a show of hands."}, {"id": "s11", "start": 45.76, "end": 48.719, "text": "MCP apps familiarity."}, {"id": "s12", "start": 49.039, "end": 52.559, "text": "Okay, this is probably the best crowd I've ever given this talk to actually."}, {"id": "s13", "start": 52.559, "end": 54.16, "text": "So that's that's fantastic."}, {"id": "s14", "start": 54.16, "end": 61.28, "text": "Um, for those that didn't put their hands up, MCP apps is an extension of the MCP protocol that was introduced I think in January of this year."}, {"id": "s15", "start": 61.28, "end": 67.92, "text": "And the idea is this is a typical request response cycle for an MCP um tool."}, {"id": "s16", "start": 67.92, "end": 70.159, "text": "The user makes a request to the agent."}, {"id": "s17", "start": 70.159, "end": 75.52, "text": "The agent in turn decides to use an MCP tool that's hosted on an MCP server."}, {"id": "s18", "start": 75.52, "end": 83.03999999999999, "text": "A tool result comes back into the agent's context and the agent chooses to form some response and send it out to the user."}, {"id": "s19", "start": 83.03999999999999, "end": 93.28, "text": "And so fundamentally MCP servers are these fantastic ways of adding uh functions and business logic to your agents but never a direct connection between a user and the MCP server."}, {"id": "s20", "start": 93.28, "end": 97.759, "text": "It always goes through the brain of the agent and more importantly through the context window of the agent."}, {"id": "s21", "start": 97.759, "end": 104.96000000000001, "text": "So MCP apps are an extension of this which allow us actually to bypass the agent and instead what happens is the following."}, {"id": "s22", "start": 104.96000000000001, "end": 106.88, "text": "The user requests something from the agent."}, {"id": "s23", "start": 106.88, "end": 114.72, "text": "The agent uses a tool, but instead of that tool request going back to the agent, it is sent out to the user and it's sent out as HTML, CSS,"}, {"id": "s24", "start": 114.72, "end": 115.28, "text": "JavaScript."}, {"id": "s25", "start": 115.28, "end": 118.479, "text": "It's a full UI and it can be whatever you want it to be."}, {"id": "s26", "start": 118.479, "end": 123.84, "text": "And so the idea is you have this way to make to basically put the internet into your agent, so to speak."}, {"id": "s27", "start": 123.84, "end": 127.92, "text": "You can ship any custom branded useful UI that you want."}, {"id": "s28", "start": 127.92, "end": 131.52, "text": "You can let the user have any interactive experience that they want."}, {"id": "s29", "start": 131.52, "end": 135.92, "text": "And then the user, as you can see in the diagram, the user now can interact with the application."}, {"id": "s30", "start": 135.92, "end": 141.44, "text": "they can use the tools, they can send information back into a backend host on that app and really get a full experience."}, {"id": "s31", "start": 141.44, "end": 149.52, "text": "You can imagine booking a table at a restaurant or um changing your seat on a plane or interacting with a schedule for AI engineer."}, {"id": "s32", "start": 149.52, "end": 155.2, "text": "There's a lot of things that you can do as a user now where the agent facilitated it, but you are going to interact as a human."}, {"id": "s33", "start": 155.2, "end": 156.8, "text": "And there's an extension coming now."}, {"id": "s34", "start": 156.8, "end": 163.599, "text": "This is going to come out in um in the July MCP release where the agent can actually interact with the app as well."}, {"id": "s35", "start": 163.599, "end": 174.31900000000002, "text": "And this will tee up some really interesting use cases we're not going to talk about today, but you could hypothetically play a game of chess against the agent now in a visual app where you make a move and then the agent interacts with the app as well."}, {"id": "s36", "start": 174.31900000000002, "end": 178.48, "text": "And so I think that's going to open up a whole new world of possibilities."}, {"id": "s37", "start": 179.2, "end": 185.36, "text": "Now um some of you may know a framework that that I'm the author of and my company maintains called FastMPP."}, {"id": "s38", "start": 185.36, "end": 188.72, "text": "Um fast MCP is one of the most popular ways of building MCP servers."}, {"id": "s39", "start": 188.72, "end": 196.959, "text": "And so whenever new cool things come to the world of MCP, the first thing I wonder is how can I deliver this to our users?"}, {"id": "s40", "start": 196.959, "end": 203.28, "text": "And one of the most important things I have to share with you about our user base is that they're mostly Python engineers."}, {"id": "s41", "start": 203.28, "end": 211.04, "text": "And so and so this is a little bit of a problem when we want to deliver frontends and UIs because how are we actually going to do that?"}, {"id": "s42", "start": 211.04, "end": 214.4, "text": "And this is the point in the talk where I reveal that I don't remember what the next slide exactly is."}, {"id": "s43", "start": 214.4, "end": 215.36, "text": "So we're going to take a peek at it."}, {"id": "s44", "start": 215.36, "end": 216.48, "text": "Nope, we're going to come back."}, {"id": "s45", "start": 216.48, "end": 220.159, "text": "Um, we we have we have a challenge now."}, {"id": "s46", "start": 220.159, "end": 240.159, "text": "Uh, how are we going to have have Python engineers build UIs that are best practice, that are interactive, that are beautiful, that are useful without pretending that we're going to do something silly, something that's been tried, and jam all of the front end, all of the ecosystem, everything into Python in some sort of like weird compromised"}, {"id": "s47", "start": 240.159, "end": 242.72, "text": "haphazard Frankenstein of a system."}, {"id": "s48", "start": 242.72, "end": 244.159, "text": "And so I really struggled with this."}, {"id": "s49", "start": 244.159, "end": 252.239, "text": "I need I really need I feel an obligation to find a way to deliver this, but I I can't I can't pretend we're going to ship React and Python."}, {"id": "s50", "start": 252.239, "end": 253.2, "text": "It's not going to work."}, {"id": "s51", "start": 253.2, "end": 257.44, "text": "And so we thought pretty hard about who are our users in the fastmcp ecosystem."}, {"id": "s52", "start": 257.44, "end": 260.639, "text": "Who are these Python developers who tend to be in enterprises?"}, {"id": "s53", "start": 260.639, "end": 262.88, "text": "What are they doing and what do they need these UIs for?"}, {"id": "s54", "start": 262.88, "end": 264.96, "text": "What do they need these MCP apps for?"}, {"id": "s55", "start": 264.96, "end": 270.8, "text": "Um what they don't need is consumer-grade custom UIs that are fully branded."}, {"id": "s56", "start": 270.8, "end": 272.88, "text": "That that's not what these folks are doing."}, {"id": "s57", "start": 272.88, "end": 288.08, "text": "what they are uh primarily charged with is sharing information throughout their throughout their organization for collecting information throughout their organization and so it changed the nature of what we expect them to do within MCP apps framework and that constraint became really useful so fundamentally"}, {"id": "s58", "start": 288.08, "end": 299.199, "text": "we expect that they're going to do things like build tables they're going to collect information through forms and they're going to want to share charts and so fundamentally with this constraint"}, {"id": "s59", "start": 299.199, "end": 308.96, "text": "we can introduce a piece of software that we open sourced a few months ago and has been surprisingly popular among this crowd called prefab and it's a scoped UI"}, {"id": "s60", "start": 308.96, "end": 316.479, "text": "building framework for the purpose of delivering UIs through an agent for the set of purposes that I mentioned a moment ago."}, {"id": "s61", "start": 316.479, "end": 318.639, "text": "So this is a hello world card."}, {"id": "s62", "start": 318.639, "end": 322.0, "text": "You might see this in any front-end framework, literally anyone."}, {"id": "s63", "start": 322.0, "end": 327.52, "text": "It'll have something that looks like this and it's on their website and you you type your name in and it it updates live."}, {"id": "s64", "start": 327.52, "end": 333.36, "text": "But of course, the weird thing about this one is that the code that generated it is entirely written in Python."}, {"id": "s65", "start": 333.36, "end": 343.28, "text": "And so I hope that you're feeling what I feel when I look at this, which is a really weird combination of like, yes, that's cool, and this really freaks me out."}, {"id": "s66", "start": 343.28, "end": 349.68, "text": "The yes, that's cool, comes from the fact that I think there's something about this code, even if you can't see it up close, I can make it a little bigger."}, {"id": "s67", "start": 349.68, "end": 352.0, "text": "There's something about this that like kind of makes sense."}, {"id": "s68", "start": 352.0, "end": 360.639, "text": "You can see the structure of the of the of the UI in the code, but there's also something about it that's obviously alien and a little bit a little bit odd."}, {"id": "s69", "start": 360.639, "end": 370.56, "text": "And we come to this conclusion when you when you feel that when you look at it, which is that when you compose a front end in Python, it's actually starts to feel good as long as we scope the challenge right."}, {"id": "s70", "start": 370.56, "end": 373.039, "text": "We are not trying to build a front end from scratch."}, {"id": "s71", "start": 373.039, "end": 378.96, "text": "We are trying to compose a front end from a bunch of worldclass well-designed components."}, {"id": "s72", "start": 378.96, "end": 382.24, "text": "And that's how we keep the guardrails and that's how we keep the user in mind."}, {"id": "s73", "start": 382.24, "end": 384.8, "text": "The user here is not trying to do something arbitrary."}, {"id": "s74", "start": 384.8, "end": 389.919, "text": "They're trying to take a well structured front end and put it in front of um whomever they're delivering it to."}, {"id": "s75", "start": 389.919, "end": 392.319, "text": "And so here's a little quick tour of that DSL."}, {"id": "s76", "start": 392.319, "end": 394.4, "text": "Um primarily we're using context managers."}, {"id": "s77", "start": 394.4, "end": 404.56, "text": "For those of you who do know fastmcp, you know that arguably you could reduce fastmc down and say the core innovation of fastmcp is that we used a python decorator to build an entire MCP server."}, {"id": "s78", "start": 404.56, "end": 409.84000000000003, "text": "So if you want to take the same reductive approach to prefab, you could say we use a context manager to build an entire UI."}, {"id": "s79", "start": 409.84000000000003, "end": 418.72, "text": "And by nesting components with as context managers as you see here, we are building up the exact same structure in the UI."}, {"id": "s80", "start": 418.72, "end": 420.4, "text": "It feels very natural when you read it."}, {"id": "s81", "start": 420.4, "end": 422.08, "text": "You can see how things are structured."}, {"id": "s82", "start": 422.08, "end": 430.639, "text": "Um each element of the UI, each component, which is a beautiful shaden component when it's rendered, as you can see here, is a class that you instantiate."}, {"id": "s83", "start": 430.639, "end": 431.599, "text": "You can parameterize it."}, {"id": "s84", "start": 431.599, "end": 436.08, "text": "you can pass it stuff like CSS classes and and make it look however you want."}, {"id": "s85", "start": 436.08, "end": 440.96, "text": "And then the last thing which we're not going to have enough time to really explore today is these reactive variables."}, {"id": "s86", "start": 440.96, "end": 450.8, "text": "Um I'll show you a demo of those in a moment, but essentially we have a full way to um create client side interactivity and bind data between components that allows you to build these really rich experiences"}, {"id": "s87", "start": 450.8, "end": 459.12, "text": "again without having to go fully into the JavaScript world and leave an ecosystem that my user base at least is extremely comfortable with."}, {"id": "s88", "start": 459.12, "end": 462.15999999999997, "text": "Um, and this is the pipeline that prefab is essentially exposing."}, {"id": "s89", "start": 462.15999999999997, "end": 464.72, "text": "We use a Python DSL that I just shared with you."}, {"id": "s90", "start": 464.72, "end": 472.24, "text": "We use that to build a declarative representation of a UI that then gets serialized into a JSON protocol."}, {"id": "s91", "start": 472.24, "end": 478.08, "text": "And that JSON protocol is ultimately rendered by a React app which is hosted as the actual MCP app."}, {"id": "s92", "start": 478.08, "end": 482.319, "text": "And so this is going to open up a whole lot of possibilities for us that again I'm going to show you in just a second."}, {"id": "s93", "start": 482.319, "end": 485.12, "text": "But the key to this whole thing is the JSON in the middle."}, {"id": "s94", "start": 485.12, "end": 489.759, "text": "The Python is actually an accident that I discovered after the fact because it was a weird idiosyncratic thing that I wanted."}, {"id": "s95", "start": 489.759, "end": 497.52, "text": "The point of this was can we create a serializable representation of a UI and that's the JSON protocol again."}, {"id": "s96", "start": 497.52, "end": 500.479, "text": "And because it's serializable, I can generate it from an agent."}, {"id": "s97", "start": 500.479, "end": 501.919, "text": "I can send it to an agent."}, {"id": "s98", "start": 501.919, "end": 504.479, "text": "I can generate it as a human and ask an agent to modify."}, {"id": "s99", "start": 504.479, "end": 508.4, "text": "There's all this cool stuff that happens because of that intermediate representation in JSON."}, {"id": "s100", "start": 508.4, "end": 515.8389999999999, "text": "And then when the when the Python DSL just fell out of this and was really beautiful and easy to use, I kind of felt like we had something So"}, {"id": "s101", "start": 515.8389999999999, "end": 525.76, "text": "uh we have these docs and sort of to prove the point this was another constraint we took on this is I don't even know what this is this is a doc these are the docs for the data table component in prefab I think there's"}, {"id": "s102", "start": 525.76, "end": 543.2, "text": "130 or 140 components that we ship that you can compose into an arbitrary form the docs for prefab are 100% rendered in prefab so the data table that's here in the basic usage it is live rendered in prefab the Python code you can see it sneaking in at the bottom of the screen that Python code is being"}, {"id": "s103", "start": 543.2, "end": 545.839, "text": "rendered live by the renderer to generate that."}, {"id": "s104", "start": 545.839, "end": 555.519, "text": "If you want, you can take any example in the prefab docs, you can click a link, pop them into the playground, and you can edit the code live, the Python code live, and you will see the UI update."}, {"id": "s105", "start": 555.519, "end": 556.959, "text": "And again, this is super weird."}, {"id": "s106", "start": 556.959, "end": 560.0, "text": "If you're feeling a little uncomfortable about this, that is that is okay."}, {"id": "s107", "start": 560.0, "end": 562.08, "text": "It makes a lot more sense when we constrain the problem."}, {"id": "s108", "start": 562.08, "end": 565.76, "text": "And remember that we're composing a UI rather than building it."}, {"id": "s109", "start": 565.76, "end": 571.44, "text": "So, I want to bring this back to the thing I opened with now, which is MCP servers and more specifically MCP apps."}, {"id": "s110", "start": 571.44, "end": 575.12, "text": "You are welcome to use prefab for any kind of front-end problem you have."}, {"id": "s111", "start": 575.12, "end": 579.12, "text": "My team has started using it for small interactive data apps and things to explore."}, {"id": "s112", "start": 579.12, "end": 580.8, "text": "They've been building presentations with it."}, {"id": "s113", "start": 580.8, "end": 587.12, "text": "We ship a a dark mode theme that honestly looks kind of like the one I'm showing you right now to make slides and presentations."}, {"id": "s114", "start": 587.12, "end": 588.32, "text": "You can do a lot of stuff with it."}, {"id": "s115", "start": 588.32, "end": 592.8, "text": "But the reason we built it, the use case that it is satisfying is for MCP servers."}, {"id": "s116", "start": 592.8, "end": 600.0, "text": "And so um I want to give you a quick tour of three ways that you can use it, three increasingly sophisticated ways that you can use it in your MCP server."}, {"id": "s117", "start": 600.0, "end": 602.88, "text": "The first is to build an interactive tool."}, {"id": "s118", "start": 602.88, "end": 610.56, "text": "As I showed you at the beginning of the talk, typically an MCP tool is something your agent calls and the agent gets the result and you don't get to interact with it at all."}, {"id": "s119", "start": 610.56, "end": 615.92, "text": "So what's the easiest way that we can advance that that interactive functionality?"}, {"id": "s120", "start": 615.92, "end": 617.12, "text": "I'm going to show you here."}, {"id": "s121", "start": 617.12, "end": 618.48, "text": "This is a fastm tool."}, {"id": "s122", "start": 618.48, "end": 623.36, "text": "It's been decorated with a tool decorator as you can see and it's just a Python function that returns some information."}, {"id": "s123", "start": 623.36, "end": 626.32, "text": "Bearing in mind this information will go to the agent, not the user."}, {"id": "s124", "start": 626.32, "end": 632.72, "text": "If we want to turn this into a fully interactive tool with prefab, we're going to make one change."}, {"id": "s125", "start": 632.72, "end": 638.0, "text": "Instead of returning a Python dictionary at the end, which will go to the agent, we're going to return a prefab component."}, {"id": "s126", "start": 638.0, "end": 639.279, "text": "In this case, it's the data table."}, {"id": "s127", "start": 639.279, "end": 642.16, "text": "These are the this is what I just showed you the docs for a moment ago."}, {"id": "s128", "start": 642.16, "end": 647.279, "text": "And when we return this prefab component, FastMPP will automatically detect that."}, {"id": "s129", "start": 647.279, "end": 650.56, "text": "It will automatically infer that you in fact want to return an MCP app."}, {"id": "s130", "start": 650.56, "end": 658.16, "text": "and it will spin up all the machinery to get the HTML, the JavaScript, the CSS, the render, everything in place so that your user will see a data table."}, {"id": "s131", "start": 658.16, "end": 659.6, "text": "Here's what this looks like in practice."}, {"id": "s132", "start": 659.6, "end": 662.0, "text": "This is using the goose client, which is an excellent one."}, {"id": "s133", "start": 662.0, "end": 667.12, "text": "Um, I asked a server that had the function I just uh showed you, show me the team directory."}, {"id": "s134", "start": 667.12, "end": 669.36, "text": "And what pops up uh this would be better as a GIF."}, {"id": "s135", "start": 669.36, "end": 672.64, "text": "I apologize, but what pops up is a fully interactive data table component."}, {"id": "s136", "start": 672.64, "end": 677.8389999999999, "text": "It supports um searching and filtering and sorting and pagionation and all this stuff."}, {"id": "s137", "start": 677.8389999999999, "end": 680.16, "text": "And all it is is what I showed you a moment ago."}, {"id": "s138", "start": 680.16, "end": 684.0, "text": "Just return the data table class and all this will be taken care of."}, {"id": "s139", "start": 684.0, "end": 684.959, "text": "We can go a step further."}, {"id": "s140", "start": 684.959, "end": 690.88, "text": "What if in addition to the data table, we want to show a pie chart right next to the data table that breaks down this team directory."}, {"id": "s141", "start": 690.88, "end": 693.68, "text": "As you might imagine, very, very, very similar code."}, {"id": "s142", "start": 693.68, "end": 697.8389999999999, "text": "Instead of the data table alone, we're now going to import a grid and a pie chart."}, {"id": "s143", "start": 697.8389999999999, "end": 705.2, "text": "And if you look at the bottom, you'll see that we compose both the pie chart and the data table into a grid very naturally with a context manager."}, {"id": "s144", "start": 705.2, "end": 706.32, "text": "And this is the result."}, {"id": "s145", "start": 706.32, "end": 709.36, "text": "we now get a pie chart next to our data table."}, {"id": "s146", "start": 709.36, "end": 715.92, "text": "So this follows a principle that we really try to hold in a lot of our software at Prefect, which is one line of code, one big noticeable change."}, {"id": "s147", "start": 715.92, "end": 717.68, "text": "We try to keep that complexity incremental."}, {"id": "s148", "start": 717.68, "end": 722.32, "text": "And so this satisfies a lot of things that I think are really important about frameworks and DSLs."}, {"id": "s149", "start": 722.32, "end": 725.279, "text": "Um, this is very quickly because we won't have time to go into it."}, {"id": "s150", "start": 725.279, "end": 731.92, "text": "This is just an example I threw together and recorded of fully client side interactivity where all of these controls are linked."}, {"id": "s151", "start": 731.92, "end": 735.6, "text": "Uh, stuff's updating, text is updating, values are updating."}, {"id": "s152", "start": 735.6, "end": 736.8, "text": "No JavaScript was written."}, {"id": "s153", "start": 736.8, "end": 741.04, "text": "This is just a couple of classes composed that all have the same attribute assigned."}, {"id": "s154", "start": 741.04, "end": 743.68, "text": "So they all work together automatically."}, {"id": "s155", "start": 743.68, "end": 747.04, "text": "Um, oh, and I did throw in a quick code example of what that looks like."}, {"id": "s156", "start": 747.04, "end": 750.639, "text": "We have a class called RX, which as you may guess stands for reactive."}, {"id": "s157", "start": 750.639, "end": 754.72, "text": "If you use these reactive variables, you can just reference them anywhere in your code."}, {"id": "s158", "start": 754.72, "end": 755.519, "text": "You can format them."}, {"id": "s159", "start": 755.519, "end": 762.16, "text": "You can you can make them the name of something and it will automatically compile into the correct uh JavaScript implementation."}, {"id": "s160", "start": 762.16, "end": 764.72, "text": "The second thing that we can do is a fastmcp app."}, {"id": "s161", "start": 764.72, "end": 773.36, "text": "So if an interactive tool is sort of a oneshot here's a user interface and you can interact with it in the client a fastmcp app is a full application"}, {"id": "s162", "start": 773.36, "end": 777.519, "text": "with a backend and in this case the MCP server is going to be the back end."}, {"id": "s163", "start": 777.519, "end": 783.6, "text": "We don't have time to go through a full worked example in this session but here's what the code looks like just to give you a sense of the ergonomics."}, {"id": "s164", "start": 783.6, "end": 791.92, "text": "We're going to write a class which is our fastmcp app and then we're going to decorate at least two uh functions with app.ui UI."}, {"id": "s165", "start": 791.92, "end": 797.279, "text": "That's the entry point that's going to return the prefab components that form the base UI of that application."}, {"id": "s166", "start": 797.279, "end": 802.48, "text": "And then at least one, I guess this is optional, so zero or more um app.tools."}, {"id": "s167", "start": 802.48, "end": 807.279, "text": "And these are essentially backend methods that you can now reference in the UI."}, {"id": "s168", "start": 807.279, "end": 815.76, "text": "So you could have a button that takes data that the user has entered into a form and sends it to a database using a decorated tool like this."}, {"id": "s169", "start": 815.76, "end": 822.9590000000001, "text": "One thing that we use and we ship as a built-in component now in fastmcp is an upload component."}, {"id": "s170", "start": 822.9590000000001, "end": 830.88, "text": "So as you can see because only the agent has access to an MCP server you can't simply upload a file to an MCP server."}, {"id": "s171", "start": 830.88, "end": 832.32, "text": "It has to go through the brain of the agent."}, {"id": "s172", "start": 832.32, "end": 839.12, "text": "And so what ends up happening is a lot of people create basically an upload tool on their MCP server forget that the agent has to actually call it."}, {"id": "s173", "start": 839.12, "end": 842.24, "text": "And what you end up doing is the world's most expensive copy paste operation."}, {"id": "s174", "start": 842.24, "end": 845.04, "text": "You give the agent a megabyte of text."}, {"id": "s175", "start": 845.04, "end": 853.279, "text": "the agent retypes it character by character into the MCP and now yes in fact you have uploaded it but it's extremely extremely inefficient."}, {"id": "s176", "start": 853.279, "end": 864.24, "text": "So this is a really good use case for an MCP app where you ask the agent to bring up the app interface you drag a file into it and now the file bypasses the agent and goes right into the server."}, {"id": "s177", "start": 864.24, "end": 869.36, "text": "And we've made that a oneliner like this along with a handful of other um useful tools."}, {"id": "s178", "start": 869.36, "end": 870.88, "text": "And is this a gift?"}, {"id": "s179", "start": 870.88, "end": 881.199, "text": "this is not a GIF or if it is it's not rendering but it would look like this in your client in any client that supports MCP apps if you ask the agent I need to upload something it can now show you this and you can upload safely"}, {"id": "s180", "start": 881.199, "end": 896.9590000000001, "text": "and most importantly cheaply um oh I do have a gift mind know your own slides is a good lesson from this talk so here's the agent is now interacting with a file that I just uploaded that I dragged and dropped um I'll make these slides available later if you'd like to see this or of course it's a"}, {"id": "s181", "start": 896.9590000000001, "end": 900.8, "text": "oneliner you could try it in your servers uh this afternoon."}, {"id": "s182", "start": 900.8, "end": 906.88, "text": "The last thing that I want to talk about which is sort of enabled by this architecture is a fully generative UI."}, {"id": "s183", "start": 906.88, "end": 909.519, "text": "Um, we're just going to skip and let this play while I talk."}, {"id": "s184", "start": 909.519, "end": 914.24, "text": "So, this is a very simple demo where I asked Claude, \"Hey, just I'm giving a talk on this."}, {"id": "s185", "start": 914.24, "end": 917.76, "text": "Just start streaming the most interesting UI you can come up with.\""}, {"id": "s186", "start": 917.76, "end": 919.12, "text": "And so, it just went."}, {"id": "s187", "start": 919.12, "end": 928.72, "text": "And what it's doing here is we exposed a tool that accepts the JSON uh the protocol serialization of a UI that prefab is based on."}, {"id": "s188", "start": 928.72, "end": 936.88, "text": "And so now as the agent is streaming that information over the wire, we are in real time rendering whatever we've got, healing that JSON and rendering it."}, {"id": "s189", "start": 936.88, "end": 942.639, "text": "And so this was a really cool demo and it was really effective and people like this because now you don't even have to define the UI yourself."}, {"id": "s190", "start": 942.639, "end": 948.56, "text": "All you have to do is use the skill we already ship, share it with your agent so it knows how to write a UI and off it goes."}, {"id": "s191", "start": 948.56, "end": 950.0, "text": "It can make you whatever you want."}, {"id": "s192", "start": 950.0, "end": 952.0, "text": "There are some clients that have built-in versions of this."}, {"id": "s193", "start": 952.0, "end": 960.8, "text": "if they have a built-in version, you may prefer to use it by all means, but this may be a way for you to build your own custom uh approach or limited set of components that are useful to you."}, {"id": "s194", "start": 960.8, "end": 964.24, "text": "Now, a really interesting thing happened when we spun this up."}, {"id": "s195", "start": 964.24, "end": 972.24, "text": "So, as I mentioned, originally the plan was for the agent to send JSON over the wire and have it be rendered into this full React application."}, {"id": "s196", "start": 972.24, "end": 980.88, "text": "What we ended up discovering is that the Python representation of a UI is about 70% smaller than the JSON representation."}, {"id": "s197", "start": 981.04, "end": 983.04, "text": "So we don't do this anymore."}, {"id": "s198", "start": 983.04, "end": 985.12, "text": "When I recorded this demo was streaming JSON."}, {"id": "s199", "start": 985.12, "end": 988.639, "text": "What we now do is we actually stream the Python over the wire."}, {"id": "s200", "start": 988.639, "end": 990.639, "text": "It's executed in a sandbox."}, {"id": "s201", "start": 990.639, "end": 994.079, "text": "It's turned into JSON on the server and then that's rendered."}, {"id": "s202", "start": 994.079, "end": 999.6, "text": "And so this has a dramatic dramatic token efficiency, cost, and latency uh benefit."}, {"id": "s203", "start": 999.6, "end": 1005.12, "text": "So it would work exactly the same as when I recorded this demo, but this is just one of those things that we've learned on the fly."}, {"id": "s204", "start": 1005.12, "end": 1012.32, "text": "And it's really fascinating that the Python representation is just that much more compact and ergonomic than the full um JSON one."}, {"id": "s205", "start": 1012.32, "end": 1014.399, "text": "So um that's prefab."}, {"id": "s206", "start": 1014.399, "end": 1022.72, "text": "If you'd like to check it out, if you're curious, if you want to see the weirdest thing I've ever built um along with however other many people, you can see the docs at prefab.pref.io."}, {"id": "s207", "start": 1022.72, "end": 1026.4, "text": "You can see the full library uh which is on our GitHub here."}, {"id": "s208", "start": 1026.4, "end": 1028.959, "text": "And this is already fully baked into FastmcP."}, {"id": "s209", "start": 1028.959, "end": 1037.839, "text": "So, if you're using a recent version of FastMPP, you should be able to install this optional addition, uh, import the components, return them, and start playing with these MCP apps."}, {"id": "s210", "start": 1037.839, "end": 1040.559, "text": "Thank you all for coming."}]}, {"id": "L173Z8DpaJg", "title": "The Agent Behind the Curtain: Building the Oz Cloud Agent Platform — Safia Abdalla, Warp", "channel": "AI Engineer", "duration": 1251, "upload_date": null, "url": "https://www.youtube.com/watch?v=L173Z8DpaJg", "api": "/api/talks/L173Z8DpaJg.json", "summary_url": "/#L173Z8DpaJg", "transcript": {"html": "/transcripts/L173Z8DpaJg.html", "txt": "/transcripts/L173Z8DpaJg.txt", "vtt": "/transcripts/L173Z8DpaJg.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.6, "end": 14.8, "text": "Uh hi, welcome to this session."}, {"id": "s3", "start": 14.8, "end": 18.92, "text": "Uh it is mysteriously titled The Agent Behind the Curtain."}, {"id": "s4", "start": 18.92, "end": 24.68, "text": "Um it's about how the team at Warp built our cloud agent platform."}, {"id": "s5", "start": 24.68, "end": 32.759, "text": "Um before I talk about the how though, I want to talk about the why um and share a little bit about my own background."}, {"id": "s6", "start": 32.759, "end": 36.88, "text": "Um so, I've spent the past 8 years building developer tooling."}, {"id": "s7", "start": 36.88, "end": 43.8, "text": "Um I started off in open source in the Python and data science space um on the Jupiter Notebook core team."}, {"id": "s8", "start": 43.8, "end": 46.48, "text": "I was a maintainer on the Interact project."}, {"id": "s9", "start": 46.48, "end": 53.56, "text": "That work continued in my time at Microsoft helping build APIs and SDKs for web developers."}, {"id": "s10", "start": 53.56, "end": 59.4, "text": "Um and now I'm working on bringing AI AI agents to the cloud at Warp."}, {"id": "s11", "start": 59.4, "end": 70.28, "text": "And one of the lessons that I've learned in my time building developer tooling is that really good dev tools meet devs where they are and grow with them."}, {"id": "s12", "start": 70.28, "end": 79.24, "text": "Um a tool that you're going to be using every day should accommodate your workflows, but also be really adaptable as the like complexity and the nature of the work"}, {"id": "s13", "start": 79.24, "end": 80.88, "text": "changes."}, {"id": "s14", "start": 80.88, "end": 87.24, "text": "And it's important for us to build really great dev tools because dev tools have a compounding effect on the world."}, {"id": "s15", "start": 87.24, "end": 96.92, "text": "If you make a piece of software that helps a developer or a builder do great work, your ability to magnify how much great software exists in the world increases."}, {"id": "s16", "start": 96.92, "end": 101.92, "text": "So, I think it is super important that these dev tools accommodate people's workflows."}, {"id": "s17", "start": 101.92, "end": 105.52000000000001, "text": "And people's workflows are important because they love their preferences."}, {"id": "s18", "start": 105.52000000000001, "end": 110.72, "text": "You might have a preference for a shell, a language, a harness, a review process."}, {"id": "s19", "start": 110.72, "end": 118.84, "text": "And something that adapts to your workflows and preferences is going to be more enjoyable to use and more enjoyable to build software with."}, {"id": "s20", "start": 118.84, "end": 122.36, "text": "And it also becomes like a part of how you think and build."}, {"id": "s21", "start": 122.36, "end": 125.84, "text": "Um so, it's super important to be attuned to that."}, {"id": "s22", "start": 125.84, "end": 137.0, "text": "And this notion of tools meeting developers where they are and growing with them comes to light really clearly in the progression of AI tooling in this space."}, {"id": "s23", "start": 137.0, "end": 143.04, "text": "So, this is the story for Warp specifically, but it's also the story for a lot of developer tools."}, {"id": "s24", "start": 143.04, "end": 150.04, "text": "Pre-AI era, we had the Warp terminal, which kind of met people in their command-line workflows that they were used to."}, {"id": "s25", "start": 150.04, "end": 158.64, "text": "And then this fantastic thing happened where AI got introduced to developers, and now you had a whole new set of tools that was available to you locally on your machine."}, {"id": "s26", "start": 158.64, "end": 166.24, "text": "And a lot of people started to interact with agentic coding patterns in their terminal, in their IDE, in their editor."}, {"id": "s27", "start": 166.24, "end": 175.36, "text": "And then eventually, we realized that we had kind of reached the limits of what we could do on our laptops, and we wanted agents to do work that was more long-running,"}, {"id": "s28", "start": 175.36, "end": 181.2, "text": "that was adapted to different constraints, and that work needed to happen in the cloud."}, {"id": "s29", "start": 181.2, "end": 193.0, "text": "Um and whenever you send anything to the cloud, you adopt a lot of complexity um because running things in the cloud requires us to navigate a much messier stack of infrastructure concerns."}, {"id": "s30", "start": 193.0, "end": 198.44, "text": "And when I say we here, I mean the people building developer tools cuz that is the person that I am."}, {"id": "s31", "start": 198.44, "end": 211.68, "text": "And it gets at one of the things that are like a core principle in how we think about unlocking capabilities here and building good developer tools is that platforms should take on complexity before it reaches the user."}, {"id": "s32", "start": 211.68, "end": 218.8, "text": "A really good experience should not expose anything of if the leaky complexity that it handles to you."}, {"id": "s33", "start": 218.8, "end": 231.28, "text": "Um when we think about building our cloud agent platform, we try and structure it so that every primitive models this philosophy of hiding complexity from the user so they can focus on the work that matters to them."}, {"id": "s34", "start": 231.28, "end": 241.16, "text": "Um the first place that this shows up when you're building a cloud agent platform is where does the agent run if it's not running on a developer's machine?"}, {"id": "s35", "start": 241.24, "end": 246.64, "text": "Um, it needs a place to do its work like any developer would and that place is typically a sandbox."}, {"id": "s36", "start": 246.64, "end": 251.16, "text": "It's an isolated environment in the cloud where agents do this task."}, {"id": "s37", "start": 251.16, "end": 262.76, "text": "When we started out building these out for our cloud agent platform, our first intuition was to provide self-hosted sandboxes so that developers had a really easy on-ramp for getting into our cloud agent platform."}, {"id": "s38", "start": 262.76, "end": 267.48, "text": "You didn't have to think about where your compute lived, it was just there for you."}, {"id": "s39", "start": 267.48, "end": 272.8, "text": "But the reality is that for teams doing serious work, they're probably managing their own infrastructure."}, {"id": "s40", "start": 272.8, "end": 280.32, "text": "They probably have dev boxes that they need to interact with and so something that is hosted or managed is usually not sufficient."}, {"id": "s41", "start": 280.32, "end": 291.96, "text": "You really need to be able to run agent workloads on infrastructure that people bring so it adapts to their like security concerns, their deployment practices, their workflows and preferences on their team."}, {"id": "s42", "start": 291.96, "end": 303.24, "text": "And so we add support for not only manage hosting but also self-hosting to the platform and that is complexity that you abstract away from the user and how the behavior is modeled."}, {"id": "s43", "start": 303.24, "end": 309.96, "text": "Um, the next kind of component is a little bit more personal to people and it's the harness that they want to use."}, {"id": "s44", "start": 309.96, "end": 315.48, "text": "As we talked about earlier, people are really passionate about the tools that shape their workflows."}, {"id": "s45", "start": 315.48, "end": 317.72, "text": "Um, one of those tools is the harness."}, {"id": "s46", "start": 317.72, "end": 322.72, "text": "Um, who here has a preference for cloud code as a harness locally?"}, {"id": "s47", "start": 322.72, "end": 324.28, "text": "Code X?"}, {"id": "s48", "start": 324.28, "end": 326.28, "text": "Something else entirely?"}, {"id": "s49", "start": 326.28, "end": 331.6, "text": "Right, so much diversity in the room and we want to meet people where they work."}, {"id": "s50", "start": 331.6, "end": 340.24, "text": "So you want to integrate multi-harness support that not only accommodates preferences but also gives people the ability to do the use the right tool for the job."}, {"id": "s51", "start": 340.24, "end": 348.96, "text": "And flexibility isn't something that you just be like crammed into a platform because the real risk you run if you cram it in is that it becomes fragmented."}, {"id": "s52", "start": 348.96, "end": 355.52, "text": "Your experience with working with Claude is different from working with Codex versus a custom harness that you might have."}, {"id": "s53", "start": 355.52, "end": 364.56, "text": "And so, one of the key properties is making sure that the platform provides structure and guardrails around the harness so that the experience is consistent."}, {"id": "s54", "start": 364.56, "end": 370.76, "text": "Um for us, this means that harnesses can interact with all of the platform native experiences."}, {"id": "s55", "start": 370.76, "end": 382.919, "text": "So, just being able to store conversation state and rehydrate it, being able to interact with the artifacts and outputs that are produced by agents, whether they're PRs, issues, new files that are generated."}, {"id": "s56", "start": 382.919, "end": 386.68, "text": "All of that should kind of be structured the same way."}, {"id": "s57", "start": 386.68, "end": 387.76, "text": "Okay, cool."}, {"id": "s58", "start": 387.76, "end": 397.44, "text": "So, we gave you a place for your agent to run, and we gave you a choice for what harness you use, including Warp Zone harness and any other harnesses that you want to bring."}, {"id": "s59", "start": 397.44, "end": 401.4, "text": "Um what if one agent isn't enough to do work?"}, {"id": "s60", "start": 401.4, "end": 404.96, "text": "That's the reality of most software engineering."}, {"id": "s61", "start": 404.96, "end": 415.0, "text": "I wish that I could just send off one prompt and solve all of the problems that exist in my software, but the reality is that real engineering work rarely fits inside one prompt."}, {"id": "s62", "start": 415.0, "end": 420.44, "text": "In a typical workflow, you might need one agent to go research a problem and plan a solution."}, {"id": "s63", "start": 420.44, "end": 425.8, "text": "You might need another agent to implement it, and you might need to bring in a third to validate it."}, {"id": "s64", "start": 425.8, "end": 435.2, "text": "And you might want each of these agents to use different harnesses and different models in order to have a real adversar- adversarial and robust approach."}, {"id": "s65", "start": 435.2, "end": 437.6, "text": "So, we have built-in support for that."}, {"id": "s66", "start": 437.6, "end": 441.04, "text": "You can orchestrate agents across the stack."}, {"id": "s67", "start": 441.04, "end": 446.72, "text": "Um with a lot of agent-based experiences, this orchestration happens via a prompt."}, {"id": "s68", "start": 446.72, "end": 455.48, "text": "So, I say {slash} orchestrate, or I queue the agent via prompting that I want it to delegate work across multiple sub agents for a task that I have here."}, {"id": "s69", "start": 455.48, "end": 467.52, "text": "And this orchestrator agent will do all of the messy complexity of interacting with sub agents, mediating messages between them, and tracking the work that's happening for me behind the scenes with a single prompt."}, {"id": "s70", "start": 467.52, "end": 473.32, "text": "We abstract complexity away from the user by giving them this experience."}, {"id": "s71", "start": 473.32, "end": 481.44, "text": "This sort of like prompt-based model for interacting with agents and subagents is really powerful."}, {"id": "s72", "start": 481.44, "end": 489.12, "text": "An even more interesting one is the notion of interacting with agents and subagents via the API."}, {"id": "s73", "start": 489.12, "end": 499.52, "text": "So, everything in our surface area is exposed via an API, and I can fire off a request to say that I want to run a subagent that is attached to a parent agent"}, {"id": "s74", "start": 499.52, "end": 501.919, "text": "um via configuration that I provide."}, {"id": "s75", "start": 501.919, "end": 509.96, "text": "And this API is super magical because this is the key component of a platform."}, {"id": "s76", "start": 509.96, "end": 515.159, "text": "Um it's exposing the primitives in a way that users can build on top of."}, {"id": "s77", "start": 515.159, "end": 526.72, "text": "Um the thing about great APIs and SDKs is people can build on top of them, which means that they're not restricted to your UI or your opinion of how a particular experience should look."}, {"id": "s78", "start": 526.72, "end": 530.2, "text": "This is where like composability becomes really powerful."}, {"id": "s79", "start": 530.2, "end": 536.0, "text": "And so, we're trying to be intentional about exposing an API for every key component of the stack."}, {"id": "s80", "start": 536.0, "end": 546.2, "text": "So, this is APIs for spinning up agents and subagents, for managing the environments and compute that these agents are running in, for working with the artifacts that they produce."}, {"id": "s81", "start": 546.2, "end": 551.16, "text": "All of that is exposed in an API that you can build on top of."}, {"id": "s82", "start": 551.16, "end": 565.271, "text": "Um and this ability to build on top of these primitives that are exposed via an API becomes really useful because anyone can build tools that overlap on top of these agentic experiences."}, {"id": "s83", "start": 565.271, "end": 565.52, "text": "[snorts]"}, {"id": "s84", "start": 565.52, "end": 580.24, "text": "Um like interesting phenomena that's happened for us internally is we have a bunch of non-engineering teammates at Warp who have been able to use our SDK and API to build custom Slack bots to do a bunch of things."}, {"id": "s85", "start": 580.24, "end": 587.96, "text": "Um so we have folks in our developer relations team who have actually built out tooling to help us manage all of our social mentions."}, {"id": "s86", "start": 587.96, "end": 597.56, "text": "Um so as tweets and Reddit posts and things are coming in, we have agents that will pick them up, do some sentiment analysis on them, try and understand what the user wants, and then propose"}, {"id": "s87", "start": 597.56, "end": 605.4, "text": "a response that um folks on our social media team should use and um respond to the original tweet or Reddit post or what have you."}, {"id": "s88", "start": 605.4, "end": 607.96, "text": "And all of this is enabled by our SDK."}, {"id": "s89", "start": 607.96, "end": 614.36, "text": "And you see like a plethora of these types of experiences um internally at Warp."}, {"id": "s90", "start": 614.36, "end": 624.56, "text": "Um we have people who have used them to help answer queries about how our product is working, do competitive research, all sorts of interesting things."}, {"id": "s91", "start": 624.8, "end": 632.36, "text": "Um and these primitives became a really big deal for us specifically when we decided to go open source."}, {"id": "s92", "start": 632.36, "end": 639.28, "text": "Um as I mentioned earlier, Warp started off as a terminal um but it grew into an agentic development environment."}, {"id": "s93", "start": 639.28, "end": 643.52, "text": "And about 3 months ago, we decided to go open source."}, {"id": "s94", "start": 643.52, "end": 647.56, "text": "Um this was like much anticipated, long-awaited."}, {"id": "s95", "start": 647.56, "end": 650.24, "text": "It was a huge success for us."}, {"id": "s96", "start": 650.24, "end": 658.44, "text": "Um the number of like GitHub stars that we had, I think catapulted from around 20,000 to over 60,000."}, {"id": "s97", "start": 658.44, "end": 660.44, "text": "We had thousands of PRs."}, {"id": "s98", "start": 660.44, "end": 663.36, "text": "I'll talk a little bit more about how we've been managing that."}, {"id": "s99", "start": 663.36, "end": 671.6, "text": "And hundreds of contributors who had been long-time users of the platform and were finally getting a chance to build on top of it."}, {"id": "s100", "start": 671.6, "end": 679.92, "text": "And when we went open source, we wanted to be really thoughtful about how we could use agents to help us manage the repository."}, {"id": "s101", "start": 679.92, "end": 685.36, "text": "We didn't want this to be the kind of thing where agents are just writing code and firing off PRs."}, {"id": "s102", "start": 685.36, "end": 697.56, "text": "We want them them to participate kind of meaningfully in the structure that we use to triage issues that came into the repo, provide context around them, do implementation, do reviews,"}, {"id": "s103", "start": 697.56, "end": 702.56, "text": "but still have the space for humans to participate in this loop."}, {"id": "s104", "start": 702.56, "end": 703.2, "text": "And we did that."}, {"id": "s105", "start": 703.2, "end": 714.52, "text": "So, if you go to the Warp open-source repo right now, you'll notice that if you file a new issue with a bug report or a feature request, an agent will kick in and start to triage the issue automatically."}, {"id": "s106", "start": 714.52, "end": 720.16, "text": "It'll do research across the code base and context in the repo to understand what you're trying to propose."}, {"id": "s107", "start": 720.16, "end": 733.08, "text": "It might ask you questions if it feels like your original query was a little abstract to get more information, and it will kind of do the work that's historically been very hard for open source, which is somebody has a problem or a bug that they want fixed."}, {"id": "s108", "start": 733.08, "end": 738.96, "text": "They don't give you enough details, and it's hard to get to the clarity that you need to get to to like drive the work forward."}, {"id": "s109", "start": 738.96, "end": 741.76, "text": "So, we can use agents to help us meaningfully in that way."}, {"id": "s110", "start": 741.76, "end": 749.96, "text": "They can also help draft initial specifications and work for tasks, do implementation, and provide a review gate."}, {"id": "s111", "start": 749.96, "end": 755.68, "text": "So, all PRs that get contributed to Warp go through an agent-managed review process."}, {"id": "s112", "start": 755.68, "end": 766.56, "text": "And it goes through multiple iterations, and we don't actually ping any of the human reviewers on our team until an agent has approved our PRs, um which helps manage the workload a lot for the team."}, {"id": "s113", "start": 766.56, "end": 773.48, "text": "So, all of those thousands of PRs, the things that humans actually have to manage are only the high-signal, high-quality ones."}, {"id": "s114", "start": 773.48, "end": 782.28, "text": "And one of the key principles is that we improve the agent as um we get more PRs in the repo and we see more examples of code."}, {"id": "s115", "start": 782.28, "end": 791.44, "text": "One of the things that we believe is that self-improvement loops are a really important way for you to enhance the overall SDLC life cycle that you're seeing."}, {"id": "s116", "start": 791.44, "end": 793.92, "text": "So, we did this."}, {"id": "s117", "start": 794.04, "end": 797.12, "text": "And we had a lightbulb moment cuz it unlocked something huge."}, {"id": "s118", "start": 797.12, "end": 803.96, "text": "We had this like structured process that could accommodate a big influx of issues and PRs on the repo."}, {"id": "s119", "start": 803.96, "end": 818.44, "text": "Um and the agents were there to support anyone in bringing their idea or their bug request bug feature request or bug report to us or to work and then getting it through to the actual product."}, {"id": "s120", "start": 818.8, "end": 830.52, "text": "That key insight of agents providing like structure and context was a really big thing for us cuz it meant that it could anyone could kind of participate in translating their intent"}, {"id": "s121", "start": 830.52, "end": 832.64, "text": "into implementation."}, {"id": "s122", "start": 832.64, "end": 839.72, "text": "And often times the people who have really interesting intents and goals are the ones who are using software in interesting ways."}, {"id": "s123", "start": 839.72, "end": 841.64, "text": "And it's not always the person that's building it."}, {"id": "s124", "start": 841.64, "end": 844.88, "text": "It's the person who's kind of got domain knowledge in the space."}, {"id": "s125", "start": 844.88, "end": 850.72, "text": "And work we're lucky because we're developers building a developer tool and that's a really unique niche to fill in."}, {"id": "s126", "start": 850.72, "end": 859.68, "text": "But most software is developers building tools for non-developers or people in situations where they don't have domain expertise."}, {"id": "s127", "start": 859.68, "end": 873.6, "text": "If we provide these structures and guardrails though, people who are non-developers can have the necessary tools to like ship serious software because the infrastructure to support them exists."}, {"id": "s128", "start": 873.6, "end": 875.6, "text": "Oh, this is where like things get buzzy."}, {"id": "s129", "start": 875.6, "end": 878.8, "text": "You might have heard this term of the software factory."}, {"id": "s130", "start": 878.8, "end": 888.56, "text": "People talk about it a lot as far as like automating how software gets built, providing these systems for doing work, all of these fun things."}, {"id": "s131", "start": 888.56, "end": 892.0, "text": "I kind of want to push back on this term a little bit."}, {"id": "s132", "start": 892.0, "end": 900.64, "text": "I kind of actually hate it cuz I don't think it gets the point across and it feels a little Where's the people in this?"}, {"id": "s133", "start": 900.64, "end": 906.04, "text": "So I want to tell a story before I share what I think is actually the better word."}, {"id": "s134", "start": 906.04, "end": 907.88, "text": "So this is a mug that I have."}, {"id": "s135", "start": 907.88, "end": 912.64, "text": "I bought this mug about two summers ago from a farmer's market."}, {"id": "s136", "start": 912.64, "end": 922.4, "text": "And I stopped by this booth at the farmer's market and you could just tell the person who had crafted this the potter was just someone who's like really passionate about their work and what they do."}, {"id": "s137", "start": 922.4, "end": 931.76, "text": "And so, he was telling me about all of these interesting details in the mug, the specific like curve of the handle, and the way he had structured it to accommodate different people's hands."}, {"id": "s138", "start": 931.76, "end": 940.44, "text": "He had this like specific dimple at the top of the handle where you could rest your thumb cuz he felt like that was like a key ergonomic detail of this mug."}, {"id": "s139", "start": 940.44, "end": 947.04, "text": "He had this glazing at the top, so if like your cup overflowed, it wouldn't dribble down the sides, the glazing would kind of catch it."}, {"id": "s140", "start": 947.04, "end": 952.4, "text": "So, he just spent so much time thinking about the details of the mug and crafting it."}, {"id": "s141", "start": 952.4, "end": 955.76, "text": "And then I was kind of talking to him about his workshop, like how many potters do you have?"}, {"id": "s142", "start": 955.76, "end": 957.32, "text": "How many of these mugs are you making?"}, {"id": "s143", "start": 957.32, "end": 958.56, "text": "Yada yada."}, {"id": "s144", "start": 958.56, "end": 967.68, "text": "And he got more even more animated and he started talking about his workshop setup and how he had set up different stations for different components of the mug."}, {"id": "s145", "start": 967.68, "end": 972.48, "text": "He had talked about how he had a specific process for sourcing clay and preparing ahead of time."}, {"id": "s146", "start": 972.48, "end": 977.24, "text": "He talked about how he actually incorporated verification for different components of the mug."}, {"id": "s147", "start": 977.24, "end": 980.48, "text": "If the dimple wasn't the right size, what would you do?"}, {"id": "s148", "start": 980.48, "end": 983.12, "text": "What part of the process would you restart?"}, {"id": "s149", "start": 983.12, "end": 995.76, "text": "All of this thought that he had put not into the mug itself, but how the workshop existed to support the creation of the mug, and how he was able to scale this to"}, {"id": "s150", "start": 995.76, "end": 1003.8389999999999, "text": "dozens of apprentices in his shop and like hundreds of mugs handcrafted per day, which is pretty impressive."}, {"id": "s151", "start": 1003.8389999999999, "end": 1008.2, "text": "And this got me thinking, I love what he did with his workshop."}, {"id": "s152", "start": 1008.2, "end": 1021.88, "text": "Um he had this really great idea and he developed a serious and repeatable system that allowed anyone to take the idea of a perfect mug and turn it into the like actual existence of a perfect mug."}, {"id": "s153", "start": 1021.88, "end": 1037.76, "text": "You know, some people might think like workshops are this quaint thing where it's like a workspace for a single individual, but I think the story really shows that they're actually heavy-duty systems for doing work and that they're malleable and that they react to signals in how people are interacting"}, {"id": "s154", "start": 1037.76, "end": 1041.12, "text": "with the thing they're building in the space they're building it."}, {"id": "s155", "start": 1041.12, "end": 1049.96, "text": "Um and it also underscores the like really close interaction loop that humans have with the spaces they work in and the outputs that are produced."}, {"id": "s156", "start": 1049.96, "end": 1057.0, "text": "And I'm synthesizing all of these ideas and I think this is what really we're driving at when we talk about building software factories."}, {"id": "s157", "start": 1057.0, "end": 1067.64, "text": "We want to give more builders and the definition of who a builder is is expanding to non-developers serious systems for turning their ideas into code."}, {"id": "s158", "start": 1067.64, "end": 1079.96, "text": "Um and we as individuals who've been building dev tooling or have been in software engineering for a long time have an understanding of what that serious system looks like and what kind of support it needs to give into individuals."}, {"id": "s159", "start": 1080.2, "end": 1089.96, "text": "Um we break this down into the same techniques that my potter friend had and the same methodologies that I talked about earlier about exposing primitives."}, {"id": "s160", "start": 1089.96, "end": 1100.16, "text": "Um we expose things like the ability for these agents to implement automations that react to events in the real world the same way that a human in a workspace"}, {"id": "s161", "start": 1100.16, "end": 1108.84, "text": "might need need to react to a real event of you know a kiln um being astray or a handle being broken."}, {"id": "s162", "start": 1108.84, "end": 1110.68, "text": "We need to make these systems observable."}, {"id": "s163", "start": 1110.68, "end": 1117.56, "text": "My potter friend talked about how he actually watched the way people worked in his space and refined the process over time."}, {"id": "s164", "start": 1117.56, "end": 1118.56, "text": "That doesn't come for free."}, {"id": "s165", "start": 1118.56, "end": 1123.04, "text": "Your system has to actually be something that you can inspect and look into."}, {"id": "s166", "start": 1123.04, "end": 1125.0, "text": "And it has to improve over time."}, {"id": "s167", "start": 1125.0, "end": 1128.84, "text": "The workspace is not the static component that doesn't change ever."}, {"id": "s168", "start": 1128.84, "end": 1138.76, "text": "It needs to react to what's going on and modify itself to amend to like the goals of the people that are working in it and the product that it's producing."}, {"id": "s169", "start": 1139.12, "end": 1141.48, "text": "And it needs to be cost-effective."}, {"id": "s170", "start": 1141.48, "end": 1144.92, "text": "Uh you want to reduce the number of broken mugs that come out the other end."}, {"id": "s171", "start": 1144.92, "end": 1150.44, "text": "You want to reduce the amount of buggy software that comes out of the other end of your of your factory."}, {"id": "s172", "start": 1150.44, "end": 1156.8, "text": "Um and you want to do this without compromising on cost without spending too many tokens."}, {"id": "s173", "start": 1156.96, "end": 1170.72, "text": "All of these principles work to achieve a shared goal and that shared goal is building systems that remove toil and drudgery from our software process so that more people have the ability to build."}, {"id": "s174", "start": 1170.72, "end": 1173.72, "text": "We've seen the way like toil and drudgery have manifested."}, {"id": "s175", "start": 1173.72, "end": 1181.0, "text": "It could be all of the difficulty you might have reproducing a bug, the challenges of monitoring a production system."}, {"id": "s176", "start": 1181.0, "end": 1184.12, "text": "Those are things that are really hard to do."}, {"id": "s177", "start": 1184.12, "end": 1195.44, "text": "And we can finally start to think about the structure of how we do them and building systems that allow us to do them repeatedly and transferably to people who are in non-technical roles."}, {"id": "s178", "start": 1195.44, "end": 1206.36, "text": "If these ideas excite you about how we can build these robust and reliable systems for anyone to ship software, you could stop by the Warp booth to come talk to me and the crew."}, {"id": "s179", "start": 1206.36, "end": 1208.16, "text": "We're at UG 20."}, {"id": "s180", "start": 1208.16, "end": 1210.24, "text": "You can also mention me on Twitter."}, {"id": "s181", "start": 1210.24, "end": 1215.52, "text": "I'm Captain Sophia on all social media, GitHub, Twitter, all of that fun stuff."}, {"id": "s182", "start": 1215.52, "end": 1216.68, "text": "Or just drop me an email."}, {"id": "s183", "start": 1216.68, "end": 1219.4, "text": "You can find my email on my personal site."}, {"id": "s184", "start": 1219.4, "end": 1221.28, "text": "Thanks for coming to this presentation."}, {"id": "s185", "start": 1221.28, "end": 1232.069, "text": "I hope you learned something interesting about some of the engineering philosophies that are driving the next set of work we do as far as agents, developers, and AI."}, {"id": "s186", "start": 1232.069, "end": 1234.069, "text": "[applause]"}]}, {"id": "L4I7WgiEquo", "title": "AI in GTM at Notion — Flora Liu", "channel": "AI Engineer", "duration": 1275, "upload_date": null, "url": "https://www.youtube.com/watch?v=L4I7WgiEquo", "api": "/api/talks/L4I7WgiEquo.json", "summary_url": "/#L4I7WgiEquo", "transcript": {"html": "/transcripts/L4I7WgiEquo.html", "txt": "/transcripts/L4I7WgiEquo.txt", "vtt": "/transcripts/L4I7WgiEquo.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.8, "end": 14.96, "text": "Well, first of all, hi everyone."}, {"id": "s3", "start": 14.96, "end": 21.6, "text": "I'm an engineer on the product growth team at Notion and now working on the GTM engineering team."}, {"id": "s4", "start": 21.6, "end": 26.96, "text": "A year ago, I would have told you that building a GTM system was a marketing ops problem."}, {"id": "s5", "start": 26.96, "end": 33.52, "text": "And today, I think it's one of the most interesting distributed systems problems that I've worked on."}, {"id": "s6", "start": 33.52, "end": 46.32, "text": "GTM at most companies involve a spiderweb of tools like what you see here, and they're stitched together by customer notes, proposals, contracts that are passed back and forth."}, {"id": "s7", "start": 46.32, "end": 54.719, "text": "Over the last few months, a small team and myself, um, we've been trying to turn this spider web into a unified GTM system."}, {"id": "s8", "start": 54.719, "end": 60.64, "text": "We're still in the midst of it, but we've learned a ton that I'd like to share with you today."}, {"id": "s9", "start": 61.039, "end": 63.92, "text": "So, this isn't really a new problem."}, {"id": "s10", "start": 63.92, "end": 66.56, "text": "We've been wrestling with pieces of it for years."}, {"id": "s11", "start": 66.56, "end": 74.479, "text": "Life cycle messaging, product recommendations, sales automations, customer data, and onboarding."}, {"id": "s12", "start": 74.479, "end": 80.56, "text": "But the solutions were fragmented because the underlying technology forced them to be."}, {"id": "s13", "start": 80.56, "end": 94.799, "text": "Then over the winter break, our CEO Ivan built spent it building a video game and he came back convinced that software engineering could be applied to many problems that were previously unwieldy or too costly."}, {"id": "s14", "start": 94.799, "end": 104.64, "text": "At the same time, our ability to execute skyrocketed with agentic technology and the breath of problems we could solve did too."}, {"id": "s15", "start": 104.64, "end": 111.28, "text": "the costly, time-consuming, and previously unsolvable spaghetti could now be sorted."}, {"id": "s16", "start": 111.28, "end": 116.0, "text": "So, what we found is that GTM had become a systems problem."}, {"id": "s17", "start": 116.0, "end": 120.399, "text": "That made us realize we could chip away at this holistically."}, {"id": "s18", "start": 120.56, "end": 126.799, "text": "In case you don't know, notion's platform is a collaborative brain for human and agents to think together."}, {"id": "s19", "start": 126.799, "end": 133.92, "text": "Over the years, we've evolved into a context layer for your company and AI agents can act on it."}, {"id": "s20", "start": 133.92, "end": 138.879, "text": "Notion's business moves between self-s serve growth and sales assist."}, {"id": "s21", "start": 138.879, "end": 143.84, "text": "Um, and customers move between these two motions all the time."}, {"id": "s22", "start": 143.84, "end": 154.56, "text": "The problem is that customers experience one journey, but internally it is supported by disconnected systems that don't actually talk to each other very well."}, {"id": "s23", "start": 154.56, "end": 161.04, "text": "These processes were rife with human error and put a lot of cognitive burden on our teams."}, {"id": "s24", "start": 161.04, "end": 171.04, "text": "For example, sales reps are probably not the strongest at managing systems, but their strength is in sussing out human signals during the buying process."}, {"id": "s25", "start": 171.04, "end": 182.319, "text": "So, every time they had to context switch between after a call, doing research, drafting follow-up, they were spending less time with our customers and customer problems."}, {"id": "s26", "start": 182.959, "end": 187.36, "text": "Most companies have separate systems for sales assist and productled growth."}, {"id": "s27", "start": 187.36, "end": 189.92, "text": "And this is actually also true for us."}, {"id": "s28", "start": 189.92, "end": 196.239, "text": "Marketing run runs on one set of tools, sales on another, customer ops on a third."}, {"id": "s29", "start": 196.239, "end": 202.0, "text": "But all of them are looking at a customer independently and making decisions separately."}, {"id": "s30", "start": 202.0, "end": 209.44, "text": "So what we set out to build is a single decisioning system that spans self-s serve growth and sales assist."}, {"id": "s31", "start": 209.44, "end": 216.4, "text": "and it can help the customer decide the next step so that everything is cohesive."}, {"id": "s32", "start": 216.4, "end": 223.12, "text": "Our vision is for this system to be programmable, proactive and continuous."}, {"id": "s33", "start": 223.68, "end": 227.2, "text": "When we started, we were faced with some challenges."}, {"id": "s34", "start": 227.2, "end": 229.44, "text": "There was so no single source of truth."}, {"id": "s35", "start": 229.44, "end": 236.239, "text": "So customer data was spread across Salesforce, Gong, Outreach, Zoom Info and many more."}, {"id": "s36", "start": 236.239, "end": 242.56, "text": "Product usage lived in Snowflake and a decade of the most important context lived in notes and meeting docs."}, {"id": "s37", "start": 242.56, "end": 245.76, "text": "Yes, our sales reps do use notion for that too."}, {"id": "s38", "start": 245.76, "end": 255.28, "text": "Notion employees were actively using MCPs and their own agents to solve problems already, but they were innovating within their own departments."}, {"id": "s39", "start": 255.28, "end": 260.079, "text": "So it was single player mode or you could say here single department mode."}, {"id": "s40", "start": 260.079, "end": 273.759, "text": "Marketing built tools for tool uh marketing sales built tools for sales and each tool served a tiny slice of that customer journey and it would make it really hard to create something that was more holistic."}, {"id": "s41", "start": 274.24, "end": 278.32, "text": "When we tried to automate across all of that we hit some roadblocks."}, {"id": "s42", "start": 278.32, "end": 284.88, "text": "First data quality conflicting systems of records wrong contacts tied to different accounts."}, {"id": "s43", "start": 284.88, "end": 289.04, "text": "One bad mapping was enough to lose trust for sales rep."}, {"id": "s44", "start": 289.04, "end": 291.12, "text": "Secondly, data latency."}, {"id": "s45", "start": 291.12, "end": 300.24, "text": "Every vendor added a hop and this lag was causing us to act on stale data and that meant we were automating on yesterday's world."}, {"id": "s46", "start": 300.24, "end": 304.8, "text": "Third, and this is a big one, structured and unstructured data."}, {"id": "s47", "start": 304.8, "end": 313.36, "text": "The most important facts about a customer were left in notes like the champion just left or don't contact this customer again."}, {"id": "s48", "start": 313.36, "end": 315.84, "text": "Um or they're blocked illegal."}, {"id": "s49", "start": 315.84, "end": 321.759, "text": "And so these are exactly the types of notes that help sales rep move forward and decide what to do next."}, {"id": "s50", "start": 321.759, "end": 328.8, "text": "And if an automation couldn't see it or process it, it could do something catastrophically wrong."}, {"id": "s51", "start": 329.199, "end": 336.15999999999997, "text": "So our project team consisted of CX, RevOps, product, engineering, sales."}, {"id": "s52", "start": 336.15999999999997, "end": 343.039, "text": "And after brainstorming together, we all kept finding the same patterns underneath that complexity."}, {"id": "s53", "start": 343.68, "end": 344.08, "text": "Whoops."}, {"id": "s54", "start": 344.08, "end": 345.039, "text": "Oh."}, {"id": "s55", "start": 345.039, "end": 347.84000000000003, "text": "Every workflow could be reduced to four questions."}, {"id": "s56", "start": 347.84000000000003, "end": 350.32, "text": "What do we know about the customer?"}, {"id": "s57", "start": 350.32, "end": 352.15999999999997, "text": "What should happen next?"}, {"id": "s58", "start": 352.15999999999997, "end": 354.56, "text": "How do we execute that safely?"}, {"id": "s59", "start": 354.56, "end": 356.56, "text": "And did it work?"}, {"id": "s60", "start": 356.56, "end": 359.52, "text": "That became our architecture."}, {"id": "s61", "start": 359.52, "end": 361.759, "text": "So the system has four layers."}, {"id": "s62", "start": 361.759, "end": 365.759, "text": "Know a context layer we can trust about every customer."}, {"id": "s63", "start": 365.759, "end": 369.759, "text": "Decide, choose the single next best step for them."}, {"id": "s64", "start": 369.759, "end": 385.84, "text": "Third, fire act and fire a concrete action that could be a life cycle email um an inapp nudge or a task handed to a rep and then learn watch what happened and feed it back into the decisioning so that it's a loop."}, {"id": "s65", "start": 385.84, "end": 390.479, "text": "But this architecture is missing something important."}, {"id": "s66", "start": 391.52, "end": 397.039, "text": "The most important part is that humans and agents are operating on the same loop."}, {"id": "s67", "start": 397.039, "end": 406.0, "text": "Concretely, this means that the context needs to be displayed so that humans and agents can read and operate on it together."}, {"id": "s68", "start": 406.0, "end": 410.56, "text": "So you can see that they're working in the same system, but they might have different roles."}, {"id": "s69", "start": 410.56, "end": 419.68, "text": "Agents do the repetitive work at scale like gathering context, researching, drafting recommendations, and writing artifacts."}, {"id": "s70", "start": 419.68, "end": 426.4, "text": "Humans provide the judgment, adding nuance, deciding what to do next, and if a recommendation is correct."}, {"id": "s71", "start": 426.4, "end": 429.52, "text": "and owning the customer relationship."}, {"id": "s72", "start": 429.52, "end": 442.319, "text": "We found that instead of building an AI layer on top of our business, we designed our architecture so that the agent can operate as another operator within the same system as humans."}, {"id": "s73", "start": 443.039, "end": 448.08, "text": "Before we built the system, we made some choices about how we were going to implement this."}, {"id": "s74", "start": 448.08, "end": 453.599, "text": "Firstly, we deliberately chose not to let an agent talk directly to a customer."}, {"id": "s75", "start": 453.599, "end": 460.56, "text": "For sales assist workflows, humans stay in the loop by default and approve anything the agents do."}, {"id": "s76", "start": 460.56, "end": 462.8, "text": "The agents do the busy work."}, {"id": "s77", "start": 462.8, "end": 467.039, "text": "That decision that decision also has a security dimension too."}, {"id": "s78", "start": 467.039, "end": 473.52, "text": "If a prospect fills out a contact sales form online, we treat that as untrusted user input."}, {"id": "s79", "start": 473.52, "end": 479.52, "text": "And so trust boundaries don't break down, especially because there is an agent in the middle."}, {"id": "s80", "start": 479.52, "end": 484.4, "text": "Secondly, routing and eligibility became a first class primitive."}, {"id": "s81", "start": 484.4, "end": 487.68, "text": "Eligibility used to be scattered in all over the place."}, {"id": "s82", "start": 487.68, "end": 498.72, "text": "We had one check or rule in an email tool, another in sales and we pulled that all into one place so that these rules can be consumed across our codebase"}, {"id": "s83", "start": 498.72, "end": 515.519, "text": "uh product sales engineering and these are like customer segmentations or signal signal definitions and then a single classifier will route what the customer should do and this will actually prevent double sends from our system and create very cohesive communication"}, {"id": "s84", "start": 515.519, "end": 525.44, "text": "across And last but not least, we decided that it was very important to own the contact layer and we decided to rent everything else."}, {"id": "s85", "start": 525.44, "end": 531.68, "text": "Since we are a lean team, we will not build our own email vendor or enrichment services like Clay."}, {"id": "s86", "start": 531.68, "end": 536.88, "text": "We use Clay and we believe that we understood our customers the best."}, {"id": "s87", "start": 536.88, "end": 540.9590000000001, "text": "So we will not um give that away."}, {"id": "s88", "start": 541.36, "end": 544.16, "text": "So let's get into what we built."}, {"id": "s89", "start": 544.16, "end": 549.279, "text": "The first step was to gather a consolidated view of all of our customers."}, {"id": "s90", "start": 549.279, "end": 553.2, "text": "Snowflake, which is our data warehouse, is where we compute this truth."}, {"id": "s91", "start": 553.2, "end": 557.76, "text": "We ingest data from all the vendors in our GTM stack to Snowflake."}, {"id": "s92", "start": 557.76, "end": 570.24, "text": "We run daily transforms and in some cases real time to produce a small set of modeled versioned entities and these are accounts, contacts, workspaces, eligibility, and facts."}, {"id": "s93", "start": 570.24, "end": 576.72, "text": "And this also has clear ownership of what teams or uh tools they come from and like timestamps."}, {"id": "s94", "start": 576.72, "end": 582.24, "text": "Dynamob is our key value store and it's where we compute our truth or serve our truth."}, {"id": "s95", "start": 582.24, "end": 590.72, "text": "We publish a denormalized key addressable profile that agents can quickly query in milliseconds with no joins."}, {"id": "s96", "start": 590.72, "end": 609.36, "text": "We also persist agent uh persisted uh or generated artifacts and these are research snippets, summarized notes, rolling summaries and these unstructured data are also keyed by the same ids so that downstream systems can read all of this in one shot."}, {"id": "s97", "start": 610.24, "end": 618.8, "text": "So this data was normalized and of course we brought it into notion so that we could work with structured and unstructured data at the same time."}, {"id": "s98", "start": 618.8, "end": 628.56, "text": "So some of the data I showed you in the boxes earlier, there's like product usage data, there's activity log from across our vendor stack, and then we also have like unstructured"}, {"id": "s99", "start": 628.56, "end": 636.24, "text": "data that like I mentioned that is most important for sales context with research reports and notes."}, {"id": "s100", "start": 636.24, "end": 639.92, "text": "And this turned out to be powerful for two reasons."}, {"id": "s101", "start": 639.92, "end": 645.76, "text": "First, our internal GTM teams didn't need to jump between many tools anymore."}, {"id": "s102", "start": 645.76, "end": 658.16, "text": "They could use notion itself, a tool they were already using to explore context, investigate investigate accounts, answer questions, and they could even take actions like sending to Nooks or"}, {"id": "s103", "start": 658.16, "end": 659.92, "text": "um sending to outreach."}, {"id": "s104", "start": 659.92, "end": 665.44, "text": "This is a tool that they were very familiar with, and they didn't need to open seven tabs anymore."}, {"id": "s105", "start": 665.44, "end": 673.6, "text": "Secondly, because we weren't building an AI layer, um humans, workflows, and agents could all operate on the same source of truth."}, {"id": "s106", "start": 673.6, "end": 678.72, "text": "In a very literal sense, we are using notion to grow notion."}, {"id": "s107", "start": 680.48, "end": 686.88, "text": "The next primitive we decided that we needed was a way to turn customer events into actions."}, {"id": "s108", "start": 686.88, "end": 689.04, "text": "The unit here is a signal."}, {"id": "s109", "start": 689.04, "end": 695.76, "text": "A signal is a single customer event that's important enough to change what should happen next for a customer."}, {"id": "s110", "start": 695.76, "end": 703.76, "text": "Some are userdriven like a customer hitting their a AI limit or maybe they reached out to contact contact sales."}, {"id": "s111", "start": 703.76, "end": 714.48, "text": "But some of them are not user initiated at all which are these external signal examples I listed here like company raising funding, hiring signals or shift in their tech stack."}, {"id": "s112", "start": 714.48, "end": 720.16, "text": "Those external signals are what allowed us to be proactive instead of reactive."}, {"id": "s113", "start": 720.88, "end": 734.56, "text": "So this is the signal service that watches the customer profile, decides whether a single action is available, decides who should own that action, and then it emits a concrete task"}, {"id": "s114", "start": 734.56, "end": 737.12, "text": "following the architecture I described before."}, {"id": "s115", "start": 737.12, "end": 740.56, "text": "And this task could be for a human or an agent."}, {"id": "s116", "start": 740.56, "end": 748.8, "text": "If there's a task for sales rep, that actually just lands in their notion database and they can quickly view it and act on it."}, {"id": "s117", "start": 749.279, "end": 758.48, "text": "What's what's interesting about the way we built our GTM systems is that if there is no signal about a customer, the marketing component of our system kicks in."}, {"id": "s118", "start": 758.48, "end": 773.8389999999999, "text": "We have a predictive engine that will recommend product features most relevant for that customer and it will send out life cycle emails and inapp nudges or multi-channel communication to drive a customer towards adoption automatically."}, {"id": "s119", "start": 775.279, "end": 782.8, "text": "So diving deep into a small slice of what happens when we decide what action should be emitted."}, {"id": "s120", "start": 782.8, "end": 795.839, "text": "Um this is for like the sales workflow and we shadowed our best reps to capture something that was the most repetitive part of our job and encoded it as a durable multi- aent workflow."}, {"id": "s121", "start": 795.839, "end": 806.8, "text": "Every signal becomes a workflow on temporal which is something we rent and a single run will touch enrichment web search draft generation and more."}, {"id": "s122", "start": 806.8, "end": 810.56, "text": "Each of these is a network call that could fail or rate limit."}, {"id": "s123", "start": 810.56, "end": 825.279, "text": "And so temporal lets us focus on writing the sequential logic for our GTM use cases while it will handle the retries, ddupes um and handling and going back to exactly where failures left off."}, {"id": "s124", "start": 825.279, "end": 831.279, "text": "and one malformed transcript can't take down the whole batch which was really important to us."}, {"id": "s125", "start": 831.279, "end": 846.32, "text": "So an example of a cold outbound signal for us will have a research sub agent do concurrent researches then it'll draft like an email and those emails uh there should be three of them so they're scored"}, {"id": "s126", "start": 846.32, "end": 851.519, "text": "and then a review agent will pick the highest scoring one and make any updates if necessary."}, {"id": "s127", "start": 851.519, "end": 856.399, "text": "And this also operates on a loop um so that the email drafts are improved."}, {"id": "s128", "start": 856.399, "end": 863.68, "text": "And then when it's ready, this email draft will land in the sales task that is available for for them to act on."}, {"id": "s129", "start": 863.68, "end": 869.519, "text": "Um for more reactive signals after a follow-up call, the Gong transcript will come in."}, {"id": "s130", "start": 869.519, "end": 886.16, "text": "Our agent will parse the transcript and then um again it will extract the critical sales medpic data uh metrics economic buyer decision criteria plan and champion and draft a grounded followup for that."}, {"id": "s131", "start": 886.16, "end": 892.8, "text": "Every LLM step is traced so that we can evaluate quality and improve over time."}, {"id": "s132", "start": 893.6, "end": 899.04, "text": "The third layer is what turns this automation into a system that self-improves."}, {"id": "s133", "start": 899.04, "end": 905.839, "text": "Every action is a decision log and every outcome threads back to the decision that caused it."}, {"id": "s134", "start": 905.839, "end": 913.199, "text": "So the naive version of this is a data analyst coming in and trying to understand if the output of this could be better."}, {"id": "s135", "start": 913.199, "end": 925.279, "text": "The rebuilt version of this is wiring our engagement history back into the decision layer so that the system decides whether or not to continue a thread, advance to the next step or pivot."}, {"id": "s136", "start": 925.279, "end": 931.199, "text": "The system will continue to do that with the life cycle message performance history as well."}, {"id": "s137", "start": 931.199, "end": 938.9590000000001, "text": "So these verification loops are really critical so that the system can self-heal and continuously improve."}, {"id": "s138", "start": 938.9590000000001, "end": 943.199, "text": "Let's see how an agent and human work together in this shared customer view."}, {"id": "s139", "start": 943.199, "end": 951.519, "text": "In the customer view, a rep can come here and see the product usage, the recent activity and get an answer using that same data."}, {"id": "s140", "start": 951.519, "end": 957.519, "text": "They used to find all of this across many different tabs and now they can just come here each day."}, {"id": "s141", "start": 957.519, "end": 964.16, "text": "The rep can ask an agent and the agent will reply uh querying our context layer."}, {"id": "s142", "start": 964.16, "end": 974.079, "text": "We can also use notion custom agents which are sharable across companies to access this data context for recurring automated workflows."}, {"id": "s143", "start": 974.8, "end": 985.12, "text": "In the task view, a rep starts their day with an already prioritized task box and they already know how to move forward with accounts and contacts."}, {"id": "s144", "start": 985.12, "end": 991.519, "text": "And the email draft for an outreach task is already pre-ressearched and available for them to review."}, {"id": "s145", "start": 991.519, "end": 1002.24, "text": "The human is still in the loop and actually adds their own judgment and taste um and sales secret sauce, but they're no longer starting from a blank sta slate."}, {"id": "s146", "start": 1002.24, "end": 1006.48, "text": "And this does more than one help one rep be productive."}, {"id": "s147", "start": 1006.48, "end": 1010.8, "text": "Um our goal is actually to raise the floor for the entire team."}, {"id": "s148", "start": 1010.8, "end": 1026.72, "text": "So a Neil sales rep coming in, they can learn the notion sales process, understand what signals are important to look for, um, understand which playbooks are effective, and basically know what good followup looks like."}, {"id": "s149", "start": 1026.72, "end": 1035.76, "text": "Reps who can are ramping can still learn from the patterns of the strongest reps without needing every lesson to be passed down manually."}, {"id": "s150", "start": 1036.48, "end": 1042.4, "text": "So, one of the questions that we came across along every step of the way is a classic question."}, {"id": "s151", "start": 1042.4, "end": 1045.039, "text": "Do we build or buy?"}, {"id": "s152", "start": 1045.039, "end": 1049.12, "text": "And it's very tempting and trendy to say build everything."}, {"id": "s153", "start": 1049.12, "end": 1057.039, "text": "But what we found is that there are still key areas to build and rent access to at every single layer."}, {"id": "s154", "start": 1057.039, "end": 1061.84, "text": "Internal agents are actually cheaper and faster to build than most people assume."}, {"id": "s155", "start": 1061.84, "end": 1071.679, "text": "And so since we have the most data on our con on our data model um we build it there first and then we uh rented the generalizable parts later."}, {"id": "s156", "start": 1071.679, "end": 1075.039, "text": "So for us the build versus buy as a per layer decision."}, {"id": "s157", "start": 1075.039, "end": 1080.559, "text": "We will not build a lot of these tools like orchestration, email, CRM."}, {"id": "s158", "start": 1080.559, "end": 1082.799, "text": "Um vendors do that really well."}, {"id": "s159", "start": 1082.799, "end": 1087.36, "text": "We refuse to outsource the context layer because that's where our edge is."}, {"id": "s160", "start": 1087.36, "end": 1100.96, "text": "a generic tool can't capture all of our esoteric data models or workflows and we do not want that context layer to be something we can't um debug and so as I mentioned before"}, {"id": "s161", "start": 1100.96, "end": 1112.72, "text": "that context layer is a notion it's built off of plain markdown a language that agents are fluent in and we have databases and hierarchies that they can navigate easily"}, {"id": "s162", "start": 1112.72, "end": 1121.919, "text": "at the same time this is well designed for human um so this is what lets our engineers, agents, and GTM work off the same context."}, {"id": "s163", "start": 1121.919, "end": 1126.24, "text": "And this has all the data synced across sources."}, {"id": "s164", "start": 1128.4, "end": 1134.4, "text": "Ultimately, the reason to see if we can do all of this is to see if we could get a better throughput on deals."}, {"id": "s165", "start": 1134.4, "end": 1136.08, "text": "It's very early for us."}, {"id": "s166", "start": 1136.08, "end": 1139.12, "text": "We're still building this out, but the initial signs are promising."}, {"id": "s167", "start": 1139.12, "end": 1146.48, "text": "In the last 13 weeks, we are already seeing enterprise reps have increased qualification or qualified opportunities."}, {"id": "s168", "start": 1146.48, "end": 1154.88, "text": "And on the life cycle marketing side, users who received contextaware recommendations were 63% more likely to take the next step."}, {"id": "s169", "start": 1154.88, "end": 1166.96, "text": "This is the early days with a lot more features we want to build, but our thesis that us building a single system on no, decide, act, and learn seems to be right so far."}, {"id": "s170", "start": 1166.96, "end": 1169.039, "text": "A few key takeaways."}, {"id": "s171", "start": 1169.039, "end": 1176.559, "text": "um from entering entering this world as an engineer in the last six months is that before you build shadow your best human."}, {"id": "s172", "start": 1176.559, "end": 1192.24, "text": "I talked to many sales reps and when I opened uh when they opened their computers I saw how many tabs and tools they were navigating between and that was a chaos but it was also the spec and so if you encode a mediocre process you get a mediocre agent."}, {"id": "s173", "start": 1192.24, "end": 1194.559, "text": "Start with the most legible workflow."}, {"id": "s174", "start": 1194.559, "end": 1197.36, "text": "That's the one that's documented and repeated."}, {"id": "s175", "start": 1197.36, "end": 1202.32, "text": "And let humans stay in the loop on where there are risky possibilities."}, {"id": "s176", "start": 1202.32, "end": 1213.039, "text": "Model GTM as primitives, entities, context, triggers, actions, eligibility rules, and the alien world becomes a system you can engineer."}, {"id": "s177", "start": 1213.039, "end": 1219.44, "text": "Last but not least, be headless by default and design for agents as operators and not just co-pilots."}, {"id": "s178", "start": 1219.44, "end": 1227.039, "text": "If humans and agents can't read from the same substrate, you're basically building two systems that will eventually drift apart."}, {"id": "s179", "start": 1227.039, "end": 1230.48, "text": "For us, that layer is notion."}, {"id": "s180", "start": 1230.64, "end": 1236.24, "text": "Right now, humans are the primary consumer of GTM data and agents are helping at the edges."}, {"id": "s181", "start": 1236.24, "end": 1249.679, "text": "Soon, agents will become primary first class consumers within the system, moving from drafting to acting within guard rails by creating the best context and substrate for humans and agents to collaborate together."}, {"id": "s182", "start": 1249.679, "end": 1253.6, "text": "Now, you're setting up your team to sprint faster."}, {"id": "s183", "start": 1253.6, "end": 1259.28, "text": "Um, yeah, and feel free to contact me if you guys want to ask more questions."}, {"id": "s184", "start": 1272.679, "end": 1274.679, "text": "[music]"}]}, {"id": "Lrw0jqBNaw0", "title": "The Death of Developer Advocates — Stephanie Jarmak, Sourcegraph", "channel": "AI Engineer", "duration": 1096, "upload_date": null, "url": "https://www.youtube.com/watch?v=Lrw0jqBNaw0", "api": "/api/talks/Lrw0jqBNaw0.json", "summary_url": "/#Lrw0jqBNaw0", "transcript": {"html": "/transcripts/Lrw0jqBNaw0.html", "txt": "/transcripts/Lrw0jqBNaw0.txt", "vtt": "/transcripts/Lrw0jqBNaw0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.72, "end": 13.36, "text": "Hi everyone."}, {"id": "s3", "start": 13.36, "end": 17.24, "text": "Sorry for the start with technical difficulties and all of that."}, {"id": "s4", "start": 17.24, "end": 19.92, "text": "Uh, we made it to the end of this track."}, {"id": "s5", "start": 19.92, "end": 21.2, "text": "Super exciting."}, {"id": "s6", "start": 21.2, "end": 24.56, "text": "Thank you everybody for sticking it out this long."}, {"id": "s7", "start": 24.56, "end": 29.16, "text": "Um, are there any developer advocates or devrel people in the audience?"}, {"id": "s8", "start": 29.16, "end": 30.44, "text": "Raise your hand."}, {"id": "s9", "start": 30.44, "end": 31.44, "text": "Yeah, okay."}, {"id": "s10", "start": 31.44, "end": 34.96, "text": "So did you come to like throw tomatoes at me cuz I'm talking about the dead now."}, {"id": "s11", "start": 34.96, "end": 38.96, "text": "Okay, so it's not going to be all doom and gloom like that."}, {"id": "s12", "start": 38.96, "end": 41.4, "text": "Um, a bit of like backstory in this."}, {"id": "s13", "start": 41.4, "end": 43.0, "text": "Um, I'm a research scientist."}, {"id": "s14", "start": 43.0, "end": 46.08, "text": "So last year I was an astronomer."}, {"id": "s15", "start": 46.08, "end": 47.32, "text": "Um, and I just sort of like wound up."}, {"id": "s16", "start": 47.32, "end": 49.0, "text": "I didn't know what GTM was or any of that."}, {"id": "s17", "start": 49.0, "end": 51.0, "text": "I just sort of wound up in this."}, {"id": "s18", "start": 51.0, "end": 60.32, "text": "Um, and I submitted like a bunch of boring sciency eval talks that were unceremoniously I I assumed thrown into the trash uh, for this conference."}, {"id": "s19", "start": 60.32, "end": 69.88, "text": "But my manager, who is a developer advocate, he put in, you know, the death the death of developer advocates, which is, you know, appropriately buzzworthy and hypey."}, {"id": "s20", "start": 69.88, "end": 71.32, "text": "And so so that was great."}, {"id": "s21", "start": 71.32, "end": 78.72, "text": "But his title is developer advocate, so it didn't really necessarily make as much sense for him to be coming up here and giving his eulogy."}, {"id": "s22", "start": 78.72, "end": 85.96000000000001, "text": "So we brainstormed like maybe I would dress up as like a robot and like a maul him and attack him on the stage or something like that."}, {"id": "s23", "start": 85.96000000000001, "end": 89.96000000000001, "text": "Um, but then it just like logistically it was going to be hard to do that."}, {"id": "s24", "start": 89.96000000000001, "end": 91.88, "text": "Uh, so he just went on vacation."}, {"id": "s25", "start": 91.88, "end": 106.8, "text": "Uh, so I'm here uh, as the agent advocate uh, to talk about this sort of like new role and uh, try to advocate for it and uh, convince all of you that we should all be agent advocates to help"}, {"id": "s26", "start": 106.8, "end": 108.56, "text": "uh, in this new era."}, {"id": "s27", "start": 108.56, "end": 119.24000000000001, "text": "So uh, zooming out a little bit and going back uh, in time a bit because uh, I was trying to talk about developer advocates to somebody at the conference yesterday and their eyes like glazed over they had no idea what I was talking about."}, {"id": "s28", "start": 119.24000000000001, "end": 123.88, "text": "So just to sort of talk about what what this thing is that I'm saying is dead."}, {"id": "s29", "start": 123.88, "end": 125.36, "text": "Uh so back in the '80s, right?"}, {"id": "s30", "start": 125.36, "end": 133.0, "text": "It was called like software evangelism where one would go forth and speak the good word of the product and bring it out there."}, {"id": "s31", "start": 133.0, "end": 149.16, "text": "But then fast forward to the 2010s or so, that's when developer advocacy advocacy started to become a thing where now instead of having this single trajectory of the communication pathway, now it's a feedback loop and a two-way street where you have these people with very deep empathy for developers"}, {"id": "s32", "start": 149.16, "end": 157.28, "text": "who understand them and speak their language and could understand um what their needs were um and then bring that back to the product."}, {"id": "s33", "start": 157.28, "end": 159.92000000000002, "text": "And then um these developers, right?"}, {"id": "s34", "start": 159.92000000000002, "end": 166.04, "text": "Fast forward even more, they have so much influence within their company and basically become these like kingsmakers."}, {"id": "s35", "start": 166.04, "end": 172.32, "text": "Uh and so the developer experience became a very important aspect of the go-to-market sort of strategy."}, {"id": "s36", "start": 172.32, "end": 180.959, "text": "Um but now in 2026, uh developers are no longer working alone and what it means to be a developer is completely changing."}, {"id": "s37", "start": 180.959, "end": 187.84, "text": "Um and so our role, right, as developer advocates um developer in developer relations, we're relating to developers."}, {"id": "s38", "start": 187.84, "end": 195.56, "text": "And so as the role of developers fundamentally changing, so must then does the role of the developer advocate."}, {"id": "s39", "start": 195.56, "end": 200.8, "text": "Um so in this slide I'm just kind of talking about the other users, right?"}, {"id": "s40", "start": 200.8, "end": 204.6, "text": "So what's happening uh with DevRel uh outside of the agent."}, {"id": "s41", "start": 204.6, "end": 207.32, "text": "So most of the talk is going to be talking about the agent as a user."}, {"id": "s42", "start": 207.32, "end": 218.32, "text": "But I also did did want to bring up, right, that engineers they're becoming like these orchestrators of these fleets of agents, um babysitters and whatnot of these things."}, {"id": "s43", "start": 218.32, "end": 222.92000000000002, "text": "Um and their job, like all of the job postings and whatnot, there's language is continuously changing, right?"}, {"id": "s44", "start": 222.92000000000002, "end": 226.12, "text": "They're um expected to have this AI fluency."}, {"id": "s45", "start": 226.12, "end": 233.0, "text": "Um and at the same time, there's also, you know, people like me, like uh non-engineers, right?"}, {"id": "s46", "start": 233.0, "end": 234.32, "text": "I was a research scientist."}, {"id": "s47", "start": 234.32, "end": 241.36, "text": "I had like zero commits on GitHub last year, and now I have 12,000, and I'm like an open source maintainer for multi-agent orchestration framework."}, {"id": "s48", "start": 241.36, "end": 249.16, "text": "Like, we have so much like capability now with all of these agents, and now anybody with these agents can use dev tools, essentially."}, {"id": "s49", "start": 249.16, "end": 258.32, "text": "So, you have this whole other persona and ICP uh to potentially be relating to and um having empathy with when you're there using your product."}, {"id": "s50", "start": 259.359, "end": 264.84, "text": "So, let's talk about now this whole new user that we have in the form of an agent."}, {"id": "s51", "start": 264.84, "end": 268.68, "text": "Um so, an agent is somewhat unique, right?"}, {"id": "s52", "start": 268.68, "end": 274.15999999999997, "text": "In the sense that it is both the user of your tool in a very similar way to the developer."}, {"id": "s53", "start": 274.15999999999997, "end": 277.919, "text": "It's going out reading your docs, but it's just reading them differently cuz it's a machine."}, {"id": "s54", "start": 277.919, "end": 279.24, "text": "Um you know, it's calling the API."}, {"id": "s55", "start": 279.24, "end": 284.68, "text": "It's encount- it's ha- has its own frustrations with how it's encountering errors and recovering from them, right?"}, {"id": "s56", "start": 284.68, "end": 287.44, "text": "But then it's also a recommender of your tools."}, {"id": "s57", "start": 287.44, "end": 288.76, "text": "Um but somewhat similar, right?"}, {"id": "s58", "start": 288.76, "end": 293.68, "text": "To developers in the way that they are also recommenders of your tools in a more organic, bottom-up way."}, {"id": "s59", "start": 293.68, "end": 296.64, "text": "Um so, the whole, you know, basis for DevRel, right?"}, {"id": "s60", "start": 296.64, "end": 298.96, "text": "Is to encourage that bottom-up adoption."}, {"id": "s61", "start": 298.96, "end": 304.48, "text": "But now the adoption and the recommendation system, a lot of it's being driven by the agent itself."}, {"id": "s62", "start": 304.48, "end": 318.48, "text": "That is either, you know, maybe servicing your product directly through like ChatGPT or Claude, like directly in a Q&A sort of environment, or it's, as we had heard like in some of the previous talks where the speaker asked folks like, \"How many of you have just let your agent"}, {"id": "s63", "start": 318.48, "end": 319.88, "text": "install a library for you?\""}, {"id": "s64", "start": 319.88, "end": 321.68, "text": "And like, there were many hands went up, right?"}, {"id": "s65", "start": 321.68, "end": 332.36, "text": "So, there's this like recommender of tools where basically it's just installing these like frameworks and things um directly and embedding them into the workflow um and sort of working with the developer"}, {"id": "s66", "start": 332.36, "end": 334.8, "text": "um in that taste."}, {"id": "s67", "start": 336.08, "end": 337.52, "text": "So, I know it's late for numbers."}, {"id": "s68", "start": 337.52, "end": 340.6, "text": "You don't have to read them or anything like that."}, {"id": "s69", "start": 340.6, "end": 344.919, "text": "Um so, I have a couple different concrete examples for measuring these seats, right?"}, {"id": "s70", "start": 344.919, "end": 348.56, "text": "Cuz I am a data science scientist nerd person."}, {"id": "s71", "start": 348.56, "end": 358.36, "text": "Um so one of my first projects when I was uh working on this um uh when I became an agent advocate was to build um a benchmark called CodeScaleBench."}, {"id": "s72", "start": 358.36, "end": 362.88, "text": "And so I developed hundreds of tasks that were reflective of the software development life cycle."}, {"id": "s73", "start": 362.88, "end": 367.16, "text": "And I basically unleashed these agents with and without um our product tooling."}, {"id": "s74", "start": 367.16, "end": 370.72, "text": "So I work at Sourcegraph and we have a code navigation MCP tool."}, {"id": "s75", "start": 370.72, "end": 378.76, "text": "Um and the point of that was to understand, okay, how is our tool helping the agent do the work that it's, you know, going to be doing."}, {"id": "s76", "start": 378.76, "end": 381.68, "text": "Um and when it isn't working well, why isn't it working well?"}, {"id": "s77", "start": 381.68, "end": 384.16, "text": "So that we can then go in and actually fix that."}, {"id": "s78", "start": 384.16, "end": 386.64, "text": "Um so I have thousands and thousands of these traces."}, {"id": "s79", "start": 386.64, "end": 397.0, "text": "And I I as we have heard in like the previous talks, like now we have these amazing logs of data for like these really tight feedback loops where you can see exactly where it's breaking down and then go in and fix it."}, {"id": "s80", "start": 397.0, "end": 403.48, "text": "Uh so this one specific example here was um when I was looking at how it was like using a read tool."}, {"id": "s81", "start": 403.48, "end": 412.919, "text": "Um and the model had the these expectations based off of its like biases from how it from its training data of what it expected for a particular um command"}, {"id": "s82", "start": 412.919, "end": 415.4, "text": "um that would be available within the tool."}, {"id": "s83", "start": 415.4, "end": 419.48, "text": "And there's nothing in our description uh that would have like led it to believe otherwise."}, {"id": "s84", "start": 419.48, "end": 423.919, "text": "So it tried to use like read line instead of start line or something like that."}, {"id": "s85", "start": 423.919, "end": 427.919, "text": "And then it ended up failing, but then at least the error told it why it failed."}, {"id": "s86", "start": 427.919, "end": 429.8, "text": "So it was like, okay, that that was a good part of it."}, {"id": "s87", "start": 429.8, "end": 431.72, "text": "So it was able to fix itself."}, {"id": "s88", "start": 431.72, "end": 435.0, "text": "But then it's burning right an entire turn just failing."}, {"id": "s89", "start": 435.0, "end": 439.56, "text": "And you could just go in and fix that um aspect of like how it's interacting with the tool."}, {"id": "s90", "start": 439.56, "end": 450.36, "text": "And this is really important, right, to gather that feedback um and understand the friction that like now your new agent user is having with your tool because it's the way that um different organizations are going to be evaluating your tool, right?"}, {"id": "s91", "start": 450.36, "end": 456.08, "text": "In terms of not just is it working well, but like how many tokens is the agent dealing with to work with your tool?"}, {"id": "s92", "start": 456.08, "end": 457.72, "text": "And how fast is it?"}, {"id": "s93", "start": 457.72, "end": 464.8, "text": "Um so this is, you know, really an important aspect of the role is measure um, how these users are using it."}, {"id": "s94", "start": 464.8, "end": 468.12, "text": "The other side of it um, is like the recommendation layer, right?"}, {"id": "s95", "start": 468.12, "end": 470.88, "text": "So, the uh, GEO instead of SEO."}, {"id": "s96", "start": 470.88, "end": 474.12, "text": "So, the generative engine optimization."}, {"id": "s97", "start": 474.12, "end": 479.15999999999997, "text": "Um, and I didn't mention it before, but in the previous slide um, I had a GitHub repo."}, {"id": "s98", "start": 479.15999999999997, "end": 481.64, "text": "Like, there's two different toy projects that I put together."}, {"id": "s99", "start": 481.64, "end": 487.0, "text": "At the end of the talk, there's like a QR code with a link that you can send your agent to to like have access to all this."}, {"id": "s100", "start": 487.0, "end": 493.2, "text": "So, don't worry about like taking screenshots All of all of the data will be released to you."}, {"id": "s101", "start": 493.2, "end": 495.48, "text": "Um, so anyway, back to this."}, {"id": "s102", "start": 495.48, "end": 498.52, "text": "Um, I set up a little experiment, right?"}, {"id": "s103", "start": 498.52, "end": 506.32, "text": "To see how uh, these different chatbots and agents and whatnot were recommending our product or like mentioning it at all."}, {"id": "s104", "start": 506.32, "end": 516.76, "text": "Um, and so there's a, you know, process to that cuz you have you want to understand like, what is your ICP actually doing when you would want your product to be surfaced?"}, {"id": "s105", "start": 516.76, "end": 519.4, "text": "So, there was a bit of a gap that I found."}, {"id": "s106", "start": 519.4, "end": 533.0, "text": "Um, if I had designed some of these prompts around somebody who like was actively shopping for this sort of code intelligence sort of tooling and doing a comparative sort of thing, then our product was ending up being recommended like 65%"}, {"id": "s107", "start": 533.0, "end": 534.04, "text": "of the time."}, {"id": "s108", "start": 534.04, "end": 546.92, "text": "Um, but what I found was the arguably like the more typical use case and where we'd want to be showing up for people when they're encountering a specific pain or have a specific need where our product could serve them better,"}, {"id": "s109", "start": 546.92, "end": 549.0, "text": "uh, zero mentions, right?"}, {"id": "s110", "start": 549.0, "end": 558.56, "text": "So, in this particular instance, um, I put in a prompt that was like, we keep breaking downstream services when we change shared libraries because we can't see all the consumers."}, {"id": "s111", "start": 558.56, "end": 565.08, "text": "And you know, our one uh, part of our product is being able to have this observability layer to like see across all the repos."}, {"id": "s112", "start": 565.08, "end": 572.96, "text": "So, we'd want uh, some level of like attribution or recognition from um, an agent to say, \"Hey, you could use something like this.\""}, {"id": "s113", "start": 572.96, "end": 578.2, "text": "But instead it said, uh, \"You could just have your developers make a wiki page or something."}, {"id": "s114", "start": 578.2, "end": 585.4, "text": "Um but with this, you know, we wouldn't know that without running these sorts of experiments um and getting this sort of data."}, {"id": "s115", "start": 585.4, "end": 595.04, "text": "So, what this leads to is like then you can have a hypothesis of okay, maybe the messaging that we're putting out there isn't uh attributing some of these pains and use cases clearly enough"}, {"id": "s116", "start": 595.04, "end": 596.84, "text": "for the agents to be picking it up."}, {"id": "s117", "start": 596.84, "end": 615.08, "text": "So, we have uh like a content campaign in the works to um make changes to our website and then we can directly measure whether that has like an actual lift and not necessarily in the form of like anything that was baked into the training data, but then how uh the agents that are using those like web search"}, {"id": "s118", "start": 615.08, "end": 621.12, "text": "tool calls, how they are then interpreting um the information about your product."}, {"id": "s119", "start": 621.4, "end": 635.56, "text": "So, you know, there are just some um different ways that you could think about guiding the agents um to help support like the servicing, the discoverability of your product and this user finding it um at their moment of need, right?"}, {"id": "s120", "start": 635.56, "end": 641.52, "text": "Um so, for example, um this whole field is moving so fast."}, {"id": "s121", "start": 641.52, "end": 644.72, "text": "Uh so, I mean, training data is always going to be stale."}, {"id": "s122", "start": 644.72, "end": 656.36, "text": "Actually, in the um GEO pilot study that I did, the data that I was showing there, that was using Claude Sonnet 4. It's very old um obviously and I just today, this afternoon, ran it with 4.6"}, {"id": "s123", "start": 656.36, "end": 659.24, "text": "thinking that okay, surely it's going to it's going to be better."}, {"id": "s124", "start": 659.24, "end": 668.68, "text": "It's going to know like improved information about our product, but uh so, in the previous model, it kept pitching Cody, which was like one of our older products."}, {"id": "s125", "start": 668.68, "end": 674.12, "text": "Um but if I when I uh ran it again, it it pitched Cody even more, right?"}, {"id": "s126", "start": 674.12, "end": 681.36, "text": "Cuz like now you have all of these like old models like uh outputting content that then is like compounding in the internet."}, {"id": "s127", "start": 681.36, "end": 687.0, "text": "So, you have to figure out like how to bury all of that uh noise with your true signal."}, {"id": "s128", "start": 687.0, "end": 695.72, "text": "Um and the way that some folks are working on that is as we've heard from other people like these LLMs at TXT uh sort of pages, right?"}, {"id": "s129", "start": 695.72, "end": 700.92, "text": "So, you have more authoritative sources of truth that you're hoping to direct the agent to."}, {"id": "s130", "start": 700.92, "end": 708.44, "text": "But, they still need to be using the tools and using real-time information and provenance to be able to give accurate answers about your product."}, {"id": "s131", "start": 708.44, "end": 711.16, "text": "You also want to give like the agent something to quote, right?"}, {"id": "s132", "start": 711.16, "end": 716.28, "text": "They they they want to bring something that they can really sell to the to the user, right?"}, {"id": "s133", "start": 716.28, "end": 719.16, "text": "So, you want current examples and keep everything up-to-date."}, {"id": "s134", "start": 719.16, "end": 723.16, "text": "Like, even if your stuff hasn't changed in 2 years, which would be shocking."}, {"id": "s135", "start": 723.16, "end": 730.24, "text": "Even if it hasn't, like keep everything up-to-date and fresh because that, you know, part of that is how they have their relevance algorithm."}, {"id": "s136", "start": 730.24, "end": 734.12, "text": "And they also really really like charts and FAQs and things like that."}, {"id": "s137", "start": 734.12, "end": 738.32, "text": "And you also want to make sure your product is where the agents are, right?"}, {"id": "s138", "start": 738.32, "end": 739.96, "text": "You're going to market."}, {"id": "s139", "start": 739.96, "end": 742.08, "text": "So, go go to agent market, right?"}, {"id": "s140", "start": 742.08, "end": 748.68, "text": "So, make sure you're in the marketplace in the MCP registries, everywhere that you would expect an agent to be able to easily find you."}, {"id": "s141", "start": 748.68, "end": 760.2, "text": "And also make sure that you know, that whole you reduce as much friction as possible for an agent or and developer to go from finding out about your tool to embedding it in their workflow."}, {"id": "s142", "start": 760.2, "end": 772.52, "text": "Because if an agent realizes your tool requires like three different demos and emailing sales reps and stuff, they're never going to say, \"Hey user, like here's what you should do, but FYI, you're going to have to do all this other stuff.\""}, {"id": "s143", "start": 772.52, "end": 774.12, "text": "It's like not going to happen."}, {"id": "s144", "start": 774.12, "end": 778.56, "text": "And then also make sure that you are covering that those pains, right?"}, {"id": "s145", "start": 778.56, "end": 783.56, "text": "Because that's how a user is going to be most like in their time of need, right?"}, {"id": "s146", "start": 783.56, "end": 788.68, "text": "That's going to be the best opportunity for your product and your service, right, to be surfaced to them."}, {"id": "s147", "start": 788.68, "end": 797.52, "text": "And so, you want to make sure that there's enough content out there on the internet for the agent to like be aware of that and make those connections for you."}, {"id": "s148", "start": 797.8389999999999, "end": 808.48, "text": "And so, right, there's this like ongoing question of what even the heck is DevRel and advocacy and now now this agent advocacy thing, right?"}, {"id": "s149", "start": 808.48, "end": 809.36, "text": "So like where does it fit?"}, {"id": "s150", "start": 809.36, "end": 810.24, "text": "Where does it go?"}, {"id": "s151", "start": 810.24, "end": 811.32, "text": "Like is it engineering?"}, {"id": "s152", "start": 811.32, "end": 812.0, "text": "Is it product?"}, {"id": "s153", "start": 812.0, "end": 812.76, "text": "Is it marketing?"}, {"id": "s154", "start": 812.76, "end": 814.6, "text": "It's like yeah, yes, yes."}, {"id": "s155", "start": 814.6, "end": 816.24, "text": "It's all of those things."}, {"id": "s156", "start": 816.24, "end": 821.08, "text": "And and with the rise of agents it hasn't gotten any clearer, right?"}, {"id": "s157", "start": 821.08, "end": 823.04, "text": "Those seams haven't gotten any clearer."}, {"id": "s158", "start": 823.04, "end": 827.84, "text": "If anything though, everybody's role with across the organization has gotten fuzzier."}, {"id": "s159", "start": 827.84, "end": 830.28, "text": "So that actually helps in a lot of ways."}, {"id": "s160", "start": 830.28, "end": 836.4, "text": "Um and but you can sort of split it up and think about it in terms of like these different flavors, right?"}, {"id": "s161", "start": 836.4, "end": 844.24, "text": "And you can mix and match depending on whatever skills and abilities various employees have within your organization and whatever the product needs at a given time."}, {"id": "s162", "start": 844.24, "end": 846.6, "text": "So you have like the engineering flavor, right?"}, {"id": "s163", "start": 846.6, "end": 858.12, "text": "And those are folks that are partnering directly with the engineering team to make these interfaces for how the agent is talking to your product like through the MCP server and building out these evals and the instrumentation."}, {"id": "s164", "start": 858.12, "end": 859.16, "text": "Then you have the product flavor."}, {"id": "s165", "start": 859.16, "end": 862.24, "text": "So those are folks that are going to own the end-to-end agentic experience, right?"}, {"id": "s166", "start": 862.24, "end": 871.6, "text": "And so translating these evals to bring it to the product team and like having the agent experience rubrics how they're encountering all of that content."}, {"id": "s167", "start": 871.6, "end": 872.92, "text": "And then you have the marketing flavor, right?"}, {"id": "s168", "start": 872.92, "end": 886.68, "text": "And that should be the folks that are really owning that pipe gen and how the agents are like entering the funnel and finding out about your product and then bringing the developers along with them by surfacing those recommendations."}, {"id": "s169", "start": 888.12, "end": 893.32, "text": "So I know I you know said the death of developer advocates."}, {"id": "s170", "start": 893.32, "end": 896.72, "text": "But the core right of DevRel still holds."}, {"id": "s171", "start": 896.72, "end": 900.28, "text": "It's just you have a change in your audience."}, {"id": "s172", "start": 900.28, "end": 904.36, "text": "So it's still extremely important to do enablement, right?"}, {"id": "s173", "start": 904.36, "end": 907.28, "text": "It's just the type of enablement is a bit different."}, {"id": "s174", "start": 907.28, "end": 914.44, "text": "You're educating developers now who are have a completely different type of job where they're orchestrating these fleets of agents."}, {"id": "s175", "start": 914.44, "end": 917.12, "text": "And you're also educating agents, right?"}, {"id": "s176", "start": 917.12, "end": 926.32, "text": "So you're having to put out content that is machine readable, has like agent friendly APIs, all of these things to make it as easy as possible to use your product both for human developers"}, {"id": "s177", "start": 926.32, "end": 928.44, "text": "and for the agents that they're using."}, {"id": "s178", "start": 928.44, "end": 931.72, "text": "And community is also more important than ever, right?"}, {"id": "s179", "start": 931.72, "end": 941.8, "text": "Um having that human-to-human connection um where developers can come um and uh bring their agents also into the loop, right?"}, {"id": "s180", "start": 941.8, "end": 951.88, "text": "So that's another component um that needs to be considered uh when you're building these different communities because there's all these questions, right, of privacy and like data concern as well."}, {"id": "s181", "start": 951.88, "end": 957.84, "text": "If people are like bringing their Claude's and whatnot like into the Discord and they're like uh recording all of the conversations and everything like this."}, {"id": "s182", "start": 957.84, "end": 960.88, "text": "It's just like a new thing they have to think of as a community builder."}, {"id": "s183", "start": 960.88, "end": 969.72, "text": "And then there's the feedback loop, so you're still uh responsible for bringing the voice of the developer who's using the agents back to the organization, but then you can also"}, {"id": "s184", "start": 969.72, "end": 979.52, "text": "uh basically spin up like thousands of these agents to perform experiments on them and experiments that you can't really like do as easily with the developers who don't want to maybe talk to you that much."}, {"id": "s185", "start": 979.52, "end": 980.88, "text": "Um and then credibility, right?"}, {"id": "s186", "start": 980.88, "end": 986.24, "text": "So you need to be earning credibility both from human developers."}, {"id": "s187", "start": 986.24, "end": 990.8, "text": "Um so like don't like not using Claude's slop at them, right?"}, {"id": "s188", "start": 990.8, "end": 993.56, "text": "Then tell your AEs to stop that as well."}, {"id": "s189", "start": 993.56, "end": 996.92, "text": "Nobody Everybody knows what it is and nobody likes it."}, {"id": "s190", "start": 996.92, "end": 1002.28, "text": "Um and but then credibility like actually Claude loves its own slop uh for whatever reason."}, {"id": "s191", "start": 1002.28, "end": 1005.12, "text": "So there's a bias, right, from agents of their own content."}, {"id": "s192", "start": 1005.12, "end": 1012.04, "text": "So whenever you're making like agent-facing content, as long as it's structured, you can have as many m dashes and whatever as as it wants."}, {"id": "s193", "start": 1012.04, "end": 1017.72, "text": "Um but it's just a completely different sort of uh credibility landscape, humans versus agents."}, {"id": "s194", "start": 1017.72, "end": 1022.2, "text": "So what I'm advocating for here, right, is like building out a curb cut."}, {"id": "s195", "start": 1022.2, "end": 1027.52, "text": "So curb cuts were built for wheelchairs, like built for a specific user to use them."}, {"id": "s196", "start": 1027.52, "end": 1030.6, "text": "Um but now everybody, you know, benefits from that, right?"}, {"id": "s197", "start": 1030.6, "end": 1034.8, "text": "Anybody with wheels, right, strollers and um suitcases and all of those things."}, {"id": "s198", "start": 1034.8, "end": 1040.68, "text": "So my argument is that by serving the uh agents, uh the human path gets cleared, too."}, {"id": "s199", "start": 1040.68, "end": 1048.4, "text": "There's just, you know, there's just one more user in the room now, but they are still serving the human on the other end, and we're all working together on this."}, {"id": "s200", "start": 1048.4, "end": 1057.56, "text": "So, for, you know, DevRel, one quick thing that you could do like right away is point a coding agent at your docs, and then looking through that transcript and start developing your agent experience report."}, {"id": "s201", "start": 1057.56, "end": 1068.96, "text": "And then if you're more on the GTM side, start like developing some of these experiments with the GEO, putting together those prompts, and looking at the mentions versus recommendations."}, {"id": "s202", "start": 1068.96, "end": 1072.32, "text": "And I made this whole talk agent legible, right?"}, {"id": "s203", "start": 1072.32, "end": 1078.44, "text": "So, there's a QR code there, as well as a couple different toy repos that have some templates for you to get started."}, {"id": "s204", "start": 1078.44, "end": 1080.64, "text": "And that's it."}, {"id": "s205", "start": 1093.862, "end": 1095.862, "text": "[music]"}]}, {"id": "M05vON8i0aI", "title": "AI-Native Organisations Run on Skills: How to Structure and Scale Them — Imad Touil, QuantumBlack", "channel": "AI Engineer", "duration": 1231, "upload_date": null, "url": "https://www.youtube.com/watch?v=M05vON8i0aI", "api": "/api/talks/M05vON8i0aI.json", "summary_url": "/#M05vON8i0aI", "transcript": {"html": "/transcripts/M05vON8i0aI.html", "txt": "/transcripts/M05vON8i0aI.txt", "vtt": "/transcripts/M05vON8i0aI.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.44, "end": 15.759, "text": "Thank you for joining me today."}, {"id": "s3", "start": 15.759, "end": 17.039, "text": "My name is Imatel."}, {"id": "s4", "start": 17.039, "end": 20.56, "text": "I'm a distinguished engineer at Quantum Black."}, {"id": "s5", "start": 20.56, "end": 26.32, "text": "And today talk I want to really cover the uh how AI native organizations runs on skills."}, {"id": "s6", "start": 26.32, "end": 31.119, "text": "But before I really get started, um I just want to do like a quick exercise to show of hands."}, {"id": "s7", "start": 31.119, "end": 36.16, "text": "Can you raise your hand if you have already created and using skills?"}, {"id": "s8", "start": 36.16, "end": 37.12, "text": "Amazing."}, {"id": "s9", "start": 37.12, "end": 42.559, "text": "Now can you keep your hand up if you are using it and sharing it within your teams?"}, {"id": "s10", "start": 42.8, "end": 43.52, "text": "Great."}, {"id": "s11", "start": 43.52, "end": 50.48, "text": "Now keep your hands up if you have governed maintained skills across your organization."}, {"id": "s12", "start": 50.48, "end": 50.879, "text": "Amazing."}, {"id": "s13", "start": 50.879, "end": 52.32, "text": "I see a few hands."}, {"id": "s14", "start": 52.32, "end": 53.92, "text": "But that is what this talk is about."}, {"id": "s15", "start": 53.92, "end": 61.12, "text": "Today I'm really looking to break down why this is really critical, how it's important and how actually you can adopt it across your organization."}, {"id": "s16", "start": 61.12, "end": 66.88, "text": "But before I get started, what I really want to cover is actually the agentic software stack."}, {"id": "s17", "start": 66.88, "end": 68.88, "text": "So the agentic software stack has two loops."}, {"id": "s18", "start": 68.88, "end": 70.64, "text": "So the first loop is all you know, right?"}, {"id": "s19", "start": 70.64, "end": 76.15899999999999, "text": "It's the code and agents or the code agents harness right at this you have some core components."}, {"id": "s20", "start": 76.15899999999999, "end": 82.24, "text": "You will have your context manager, the tool and MCPS, memories and states and skills loader, right?"}, {"id": "s21", "start": 82.24, "end": 86.72, "text": "But then there's an outer loop which is your workflows, right?"}, {"id": "s22", "start": 86.72, "end": 91.03999999999999, "text": "Those has skills, sub aents, MCP servers that you use and some hooks."}, {"id": "s23", "start": 91.03999999999999, "end": 94.32, "text": "Sometimes you need them to have this running properly."}, {"id": "s24", "start": 94.32, "end": 96.72, "text": "You will need some enablement components at the bottom."}, {"id": "s25", "start": 96.72, "end": 99.759, "text": "So what you would have is an environment sandbox."}, {"id": "s26", "start": 99.759, "end": 105.2, "text": "You would have your MCP gateway to manage and simplify all of the MCP tools across your organization."}, {"id": "s27", "start": 105.2, "end": 119.68, "text": "a model gateway to again manage and optimize for all of your LMS either like you know open source like running locally or or or frontier models and also a graph knowledge graph that abstracts your"}, {"id": "s28", "start": 119.68, "end": 132.959, "text": "IT core systems your codebase your skills registry and at the end workflow marketplace and then you have your context layer right the context layer will bring all of what is needed to get the task done so this is the project instruction"}, {"id": "s29", "start": 132.959, "end": 150.879, "text": "think about it as the cloud code MD file the agency file your tools and MCP schema is actually to understand which tool to use and when your memory right conversation history with the end user the human is in the loop and finally the retrieved contents that's you can pull from either like files your codebase"}, {"id": "s30", "start": 150.879, "end": 160.64, "text": "etc now what I want to really focus on today is the workflow right and I think this is where we kind of like think um it's kind of a pretty simple"}, {"id": "s31", "start": 160.64, "end": 168.239, "text": "um uh workflow in day-to-day when you're trying to actually create an end to-end product software delivery life cycle in the organization."}, {"id": "s32", "start": 168.239, "end": 171.04, "text": "In reality, we all have seen the four steps."}, {"id": "s33", "start": 171.04, "end": 181.76, "text": "specify to define what you want to build the design or plan to plan you know what what are you looking to build then you go to the tasks you break it down into tasks"}, {"id": "s34", "start": 181.76, "end": 194.48, "text": "and then finally you start implementing right I think this looks familiar I think this is how most of our coding agents actually are kind of shaped today in reality that is not how it is composed and at scale when you look at the organization"}, {"id": "s35", "start": 194.48, "end": 210.07999999999998, "text": "complexity this is just one step in the journey this is like building a product increment When you really look at the overall end to end life cycle of something that a business want to build to capture the value out of it all the way to ship it to the client,"}, {"id": "s36", "start": 210.07999999999998, "end": 212.799, "text": "you will start first of all by defining your product strategy."}, {"id": "s37", "start": 212.799, "end": 214.64, "text": "What to build and how to build it, right?"}, {"id": "s38", "start": 214.64, "end": 218.0, "text": "You set the define the success metrics."}, {"id": "s39", "start": 218.0, "end": 222.07999999999998, "text": "You identify and you break down your plan road map for your products."}, {"id": "s40", "start": 222.07999999999998, "end": 224.239, "text": "And to do this, you may need a lot of insights, right?"}, {"id": "s41", "start": 224.239, "end": 226.31900000000002, "text": "So then you do like your market research."}, {"id": "s42", "start": 226.31900000000002, "end": 227.92000000000002, "text": "You do a competitive analysis."}, {"id": "s43", "start": 227.92000000000002, "end": 231.599, "text": "You bring this as an input with some customer interviews."}, {"id": "s44", "start": 231.599, "end": 233.2, "text": "Then you go to the discovery side, right?"}, {"id": "s45", "start": 233.2, "end": 234.31900000000002, "text": "So then you start discovering."}, {"id": "s46", "start": 234.31900000000002, "end": 236.0, "text": "Okay, now I understand what to build."}, {"id": "s47", "start": 236.0, "end": 245.68, "text": "I'm going to break this down into like some problem statements, find the solution, validate the solution, and then probably like experiment and then create user stories."}, {"id": "s48", "start": 245.68, "end": 250.879, "text": "And before we start building in reality actually need to prepare your data, right?"}, {"id": "s49", "start": 250.879, "end": 263.919, "text": "In some cases, you will need actually to clean up your data catalog that will support the build of your products or maybe adjust some of the endpoint connection and integration to your core systems that will help you actually build your products."}, {"id": "s50", "start": 264.0, "end": 266.56, "text": "And this is where the data product delivery comes."}, {"id": "s51", "start": 266.56, "end": 276.15999999999997, "text": "So you build your data pipeline, you validate your data quality and you put your catalog your [clears throat] catalog data assets ready for development."}, {"id": "s52", "start": 276.15999999999997, "end": 279.199, "text": "Then we kind of like go back to the product increment."}, {"id": "s53", "start": 279.199, "end": 280.72, "text": "That is where we will start."}, {"id": "s54", "start": 280.72, "end": 287.28, "text": "But then building a product in every organization that I have been uh serving for the past 18 years in my career."}, {"id": "s55", "start": 287.28, "end": 294.32, "text": "I can see that in one organization you will find like different DLC iss kind of like uh you know scatterers across organization."}, {"id": "s56", "start": 294.32, "end": 299.199, "text": "Some of it is actually for a mobile application other is a different department or different platform."}, {"id": "s57", "start": 299.199, "end": 302.56, "text": "Some of it is internal platform that is for your um employees."}, {"id": "s58", "start": 302.56, "end": 304.16, "text": "Other is actually customerf facing."}, {"id": "s59", "start": 304.16, "end": 309.28, "text": "So it is not like a one workflow that can actually build anything you want for your organization."}, {"id": "s60", "start": 309.28, "end": 312.24, "text": "When you figure out like what to build and how to build it, you need to run it."}, {"id": "s61", "start": 312.24, "end": 314.56, "text": "Then we come to the platform engineering ops, right?"}, {"id": "s62", "start": 314.56, "end": 329.759, "text": "That is again when you have your provisioned infrastructure, thinking about how you you build your your infrastructure as code modules etc. And then you launch your products and the moment you launch it then you start kind of like the journey of optimizing the performance of your products"}, {"id": "s63", "start": 329.759, "end": 335.12, "text": "trying to look forward like any incidents to resolve and then you start the loop again."}, {"id": "s64", "start": 335.12, "end": 336.0, "text": "Right?"}, {"id": "s65", "start": 336.0, "end": 353.28, "text": "So at scale when you look at really building a digital platform not like a very simple products that you can you know solo build and deploy the landscape is way complex that is expected and what you're looking at here is literally like probably 10 20% of what is it and is really different from organization to organization"}, {"id": "s66", "start": 353.28, "end": 364.16, "text": "now going back to the uh the stack right when you look at the workflows there's like four core components the first one is hooks MCP servers and sub aents"}, {"id": "s67", "start": 364.16, "end": 377.36, "text": "those are kind of given but it doesn't really bring the right kind of like structured value to your workflows right that's why scales is one of the critical components in your workflows hooks basically what it does it just kind of like"}, {"id": "s68", "start": 377.36, "end": 388.639, "text": "pre kind of like trigon events to to do something along your workflow the MCP service we all know that you know you may need an MCP tool but tell me like who actually build a lot of MCPS we just use MCPS"}, {"id": "s69", "start": 388.639, "end": 397.6, "text": "tools that is actually provided by the tool that we used to use before right so we don't really own The sub agents is just to minimize the context window."}, {"id": "s70", "start": 397.6, "end": 401.44, "text": "We just delegate to sub agent to execute a specific task what is needed."}, {"id": "s71", "start": 401.44, "end": 405.52, "text": "So at the end of the day you will find all of your knowhow is actually at the skills level."}, {"id": "s72", "start": 405.52, "end": 412.08, "text": "And if you don't have the right structure of your skills then you're not really having a deterministic workflow."}, {"id": "s73", "start": 412.08, "end": 422.56, "text": "And one thing to mention is workflows think about them as harness blueprints that actually shape the behavior of your coding harness for example in the runtime."}, {"id": "s74", "start": 423.68, "end": 439.919, "text": "Now looking at the rise of skills adoption right so just eight months ago entropic published the first article about skills right two month later we had this standard an open standard that is adopted and starts a lot of agent harnesses starts adopting"}, {"id": "s75", "start": 439.919, "end": 441.475, "text": "this new standard"}, {"id": "s76", "start": 441.475, "end": 441.52, "text": "[snorts]"}, {"id": "s77", "start": 441.52, "end": 454.08, "text": "around February um this year we have seen most of the actually agents adopted this even though you don't see them right if you pay attention when the the uh the agent is thinking And you can see that he's pulling skills"}, {"id": "s78", "start": 454.08, "end": 456.72, "text": "um as he's going and doing the task."}, {"id": "s79", "start": 456.72, "end": 460.96, "text": "The other implication here that you need to pay attention to is actually the number of skills created."}, {"id": "s80", "start": 460.96, "end": 461.28, "text": "Right?"}, {"id": "s81", "start": 461.28, "end": 467.199, "text": "This is just like literally a snapshot that I did across some public GitHub repost, some public skills registries, right?"}, {"id": "s82", "start": 467.199, "end": 471.919, "text": "There's way more than this publicly and within your organizations, right?"}, {"id": "s83", "start": 471.919, "end": 475.759, "text": "So the de the creation of skills and the demand is rising."}, {"id": "s84", "start": 475.759, "end": 489.039, "text": "But we need to understand why in the latest skills bench comparing the latest models against like you know running the same task against auto engineering and cyber security without skills"}, {"id": "s85", "start": 489.039, "end": 498.479, "text": "it did well right because that's what expected and it's going to continue to be improving day after day right but then when we applied skills that's our more deterministics"}, {"id": "s86", "start": 498.479, "end": 504.08, "text": "the outcome was clearly higher than than That's it."}, {"id": "s87", "start": 504.8, "end": 510.879, "text": "Now if you think about now like how like the anatomy of skills and how you actually design and implement skills in your organization."}, {"id": "s88", "start": 510.879, "end": 513.599, "text": "This is not like a new problem that we are trying to solve here, right?"}, {"id": "s89", "start": 513.599, "end": 516.56, "text": "We have solved this with the microser kind of movements, right?"}, {"id": "s90", "start": 516.56, "end": 519.8389999999999, "text": "So your microservices need to have all of these design principles, right?"}, {"id": "s91", "start": 519.8389999999999, "end": 524.08, "text": "This is like a software kind of like you know problem that we use to solve is is similar."}, {"id": "s92", "start": 524.08, "end": 526.72, "text": "So skills need to be reusable, right?"}, {"id": "s93", "start": 526.72, "end": 530.56, "text": "Need to be modular, need to be disco like you can discover your skills."}, {"id": "s94", "start": 530.56, "end": 540.88, "text": "So if you are sitting in one team and you need the skills you actually can automatically discover and capture the skills it's portable that you can actually use skills across workflows but also you can use skills across harnesses"}, {"id": "s95", "start": 540.88, "end": 542.88, "text": "again everyone adopted the same standard."}, {"id": "s96", "start": 542.88, "end": 548.0, "text": "So if I'm having a skill on cloud code and I want to move it to cursor, it's going to just work."}, {"id": "s97", "start": 548.0, "end": 556.56, "text": "Specialized skills that is where the value you should not build like a one skill like a monom or again it should be specialized to define one tasks specifically."}, {"id": "s98", "start": 556.56, "end": 560.16, "text": "Composible uh skills need to be designed in a way that's actually can compose."}, {"id": "s99", "start": 560.16, "end": 565.44, "text": "So you don't have duplication across your skills when you're trying to run them conflicts each other."}, {"id": "s100", "start": 565.44, "end": 570.72, "text": "Consistence that is actually what one of the key items of skills is actually consistency and deterministic."}, {"id": "s101", "start": 570.72, "end": 588.48, "text": "And finally cost efficience and for cost I can go for another hour talk but it's basically the skills comes to solve a key problem around the context window right is actually putting with the disclosure pro progressive disclosure pattern the right skills the right amount of skills in the right time to solve the right problem and that's reduce"}, {"id": "s102", "start": 588.48, "end": 590.56, "text": "the token usage."}, {"id": "s103", "start": 590.56, "end": 598.08, "text": "This define a new unit right that makes your knowhow in your organization executable portable and cheap."}, {"id": "s104", "start": 598.08, "end": 601.92, "text": "On the right hand side, you just a very simple example of data retention policy."}, {"id": "s105", "start": 601.92, "end": 602.399, "text": "Right?"}, {"id": "s106", "start": 602.399, "end": 608.16, "text": "When it came to regulation, you need to understand and make sure to instruct your agents while you manipulating."}, {"id": "s107", "start": 608.16, "end": 616.64, "text": "For example, um your customer data, you should make sure that this data manipulates according to the regulation, right?"}, {"id": "s108", "start": 616.64, "end": 619.8389999999999, "text": "And that bring me to the next example."}, {"id": "s109", "start": 620.0, "end": 626.16, "text": "On the left hand side, you can see that there's like a think about like a a catalog of skills."}, {"id": "s110", "start": 626.16, "end": 629.36, "text": "And in the right hand side is your harness and the output is on the right hand side."}, {"id": "s111", "start": 629.36, "end": 629.76, "text": "Right?"}, {"id": "s112", "start": 629.76, "end": 632.88, "text": "So the composible skills at the regulation level."}, {"id": "s113", "start": 632.88, "end": 636.64, "text": "You have the skill that I just showed earlier which is the retention policy."}, {"id": "s114", "start": 636.64, "end": 638.72, "text": "But you will need disclosure standards."}, {"id": "s115", "start": 638.72, "end": 641.76, "text": "You will need the GDPR rules that need to be respected."}, {"id": "s116", "start": 641.76, "end": 643.12, "text": "You will need the fill in templates."}, {"id": "s117", "start": 643.12, "end": 643.6, "text": "Right?"}, {"id": "s118", "start": 643.6, "end": 654.0, "text": "So all of this kind of think about it is like defining how any data any feature that is built across your web, mobile um like you know different applications across your organizations"}, {"id": "s119", "start": 654.0, "end": 665.68, "text": "is really respecting these rules and this gets pulled automatically by on the runtime by the regulatory disclosure review workflow and the outcome is expected is deterministic."}, {"id": "s120", "start": 665.68, "end": 670.079, "text": "You have an audit uh audit reports that you can actually store."}, {"id": "s121", "start": 670.079, "end": 679.6, "text": "you have um specific uh identification of if there's anything to improve and that this kind of like loop back to improve your your codebase."}, {"id": "s122", "start": 681.12, "end": 687.519, "text": "However, if we don't govern skills, we will start creating a new class of technical depths, right?"}, {"id": "s123", "start": 687.519, "end": 691.76, "text": "First of all, you will find out that you are having a lot of duplication in your organization."}, {"id": "s124", "start": 691.76, "end": 702.88, "text": "So if teams are not collaborating and everyone is think about it using the same technology stack the same infrastructure you're for sure building the same skills over and over again without sharing them"}, {"id": "s125", "start": 702.88, "end": 703.68, "text": "quality."}, {"id": "s126", "start": 703.68, "end": 713.92, "text": "If you don't test and make sure that you're maintaining and you're validating your skills not against your task but also against the latest models that comes right then the quality starts degragating"}, {"id": "s127", "start": 713.92, "end": 716.0, "text": "over time."}, {"id": "s128", "start": 716.0, "end": 721.279, "text": "You should be able to discover your skills in in reality without a governance you cannot really discover it."}, {"id": "s129", "start": 721.279, "end": 735.04, "text": "Think about it as the the backstage the IDP right it's come to solve a problem where okay I need to understand who owns this microser back in the days right I don't need to talk to anyone I just need to tap into the service catalog and immediately find who actually own it"}, {"id": "s130", "start": 735.04, "end": 751.92, "text": "that is brings ownership part if you don't have an owner then no one will be able to maintain scale those skills composibility is not something that comes by default you need to have a governance way to to align what to build and how to design it is think about the domain driven approach that we have been taken"}, {"id": "s131", "start": 751.92, "end": 753.76, "text": "also for for many years, right?"}, {"id": "s132", "start": 753.76, "end": 757.279, "text": "Is similar to how you shape your skills catalog."}, {"id": "s133", "start": 757.279, "end": 763.8389999999999, "text": "Security again some of uh all of us like we experiment with the public skills, right?"}, {"id": "s134", "start": 763.8389999999999, "end": 773.519, "text": "But when you think about it, some skills may have some prompts injection and skills actually does have scripts because that is the deterministic part of it because it can run a specific script for a specific task."}, {"id": "s135", "start": 773.519, "end": 780.0, "text": "So if you don't have again a pipeline that check your security, you may be pulling something that is insecure and permissions."}, {"id": "s136", "start": 780.0, "end": 784.32, "text": "Not every skills is actually something that anyone in the organization should access."}, {"id": "s137", "start": 784.32, "end": 788.56, "text": "Some skills may have some business logic that is very sensitive, right?"}, {"id": "s138", "start": 788.56, "end": 793.04, "text": "So the access control is is also crucial at this stage."}, {"id": "s139", "start": 793.6, "end": 795.68, "text": "Now how to bring this to your organization?"}, {"id": "s140", "start": 795.68, "end": 802.399, "text": "First of all, you need to allow at the individual level to create, test, improve and use those skills."}, {"id": "s141", "start": 802.399, "end": 803.76, "text": "Again, it shouldn't be random."}, {"id": "s142", "start": 803.76, "end": 805.2, "text": "It should be structured way."}, {"id": "s143", "start": 805.2, "end": 806.399, "text": "There's a different tools out there."}, {"id": "s144", "start": 806.399, "end": 811.44, "text": "You just need to decide which tool actually you want to agree on and you use that mechanism at the individual level."}, {"id": "s145", "start": 811.44, "end": 815.2, "text": "The moment you create a skills, you need to be sharing it with your team, right?"}, {"id": "s146", "start": 815.2, "end": 818.9590000000001, "text": "Your team starts collab collaborating to improve the skills and think about it."}, {"id": "s147", "start": 818.9590000000001, "end": 821.76, "text": "You build the same technology stack, building the same products."}, {"id": "s148", "start": 821.76, "end": 824.079, "text": "So, it's going to evolve really quickly."}, {"id": "s149", "start": 824.079, "end": 829.2, "text": "But then you move on to a very critical point which is the centralized platform."}, {"id": "s150", "start": 829.2, "end": 832.88, "text": "That is where all of what I've been covering so far come to play."}, {"id": "s151", "start": 832.88, "end": 840.0, "text": "You need a centralized platform that have a catalog with metadata in it that's actually can discover skills and could be searchable."}, {"id": "s152", "start": 840.0, "end": 849.12, "text": "You can have an MCP that's actually plugged to this cat catalog, search for the skill and a CLI to pull the skills back to your either your IDE if you're locally or to your"}, {"id": "s153", "start": 849.12, "end": 851.199, "text": "um sandbox in your factory."}, {"id": "s154", "start": 851.199, "end": 852.48, "text": "Then you have the dependencies."}, {"id": "s155", "start": 852.48, "end": 854.959, "text": "So you need to understand the dependencies between the skills as well."}, {"id": "s156", "start": 854.959, "end": 858.0, "text": "You have the versioning uh and and life cycle."}, {"id": "s157", "start": 858.0, "end": 861.44, "text": "So you understand which version of the skills is actually the latest."}, {"id": "s158", "start": 861.44, "end": 871.68, "text": "Um and a very good example when I'm using for example building a functionality I can the agents automatically up capture that there is a latest version of the skill and pull it right."}, {"id": "s159", "start": 871.68, "end": 881.76, "text": "So this versioning help also to pull the the the right latest changes from the skills registry access control again as I said if you don't know who is accessing what that is a huge"}, {"id": "s160", "start": 881.76, "end": 896.399, "text": "uh uh gap and finally evaluation observ observability and then all of this is actually play around a governance and this is where technology stop solving the problem right so you figure out all of this all good now who's going to govern this"}, {"id": "s161", "start": 896.399, "end": 907.839, "text": "and that is where dep you know it really depend how your organization is structured today that is where you should have your architects, your engineer leads, infra leads etc and cyber leads actually sitting down"}, {"id": "s162", "start": 907.839, "end": 917.6, "text": "owning part of those domains and making sure that the skills we need to get updated is actually according to the policies you want to adhere within your organization and drive this change."}, {"id": "s163", "start": 917.6, "end": 926.56, "text": "And finally when you get this right what you will have you would have at the organization level all of your teams pulling from one centralized place high quality skills"}, {"id": "s164", "start": 926.56, "end": 932.24, "text": "executing them and pulling them back um to to the centralized platform if it is improved."}, {"id": "s165", "start": 932.24, "end": 935.8389999999999, "text": "Now what I want to bring this because it's a little bit of a inclear view."}, {"id": "s166", "start": 935.8389999999999, "end": 938.56, "text": "So what I created I created a simulation right."}, {"id": "s167", "start": 938.56, "end": 939.6, "text": "So think about this."}, {"id": "s168", "start": 939.6, "end": 942.16, "text": "This is your organization today, right?"}, {"id": "s169", "start": 942.16, "end": 945.6, "text": "And what I have here, I have um just a random teams."}, {"id": "s170", "start": 945.6, "end": 950.9590000000001, "text": "I have 15 teams created um five to 12 like per team."}, {"id": "s171", "start": 950.9590000000001, "end": 953.8389999999999, "text": "Uh you have skills per engineers contribution."}, {"id": "s172", "start": 953.8389999999999, "end": 963.839, "text": "You have the average skills utilization kind of like on average like how much time uh skills are being pulled per day, the duplication across the team kind of as a ratio and the skills quality"}, {"id": "s173", "start": 963.839, "end": 965.519, "text": "and security ratio."}, {"id": "s174", "start": 965.519, "end": 977.8389999999999, "text": "Now if I run this across six months what's really happening and think about it this is already happening within your organization is teams are creating and using the skills right but we don't have visibility"}, {"id": "s175", "start": 977.8389999999999, "end": 995.8389999999999, "text": "and skills again they're tightly coupled to your productivity uplift if for example the example that I shared earlier on the regulation if we don't have a skill about the regulation that is someone is vip coding back and forth and trying to figure out exactly how to steer the agent to implement it properly right that is burning more"}, {"id": "s176", "start": 995.8389999999999, "end": 1005.92, "text": "tokens from one side costwise but also the productivity is spending more time rather than giving in one shot the right answer and the quality and security is similar if you don't have clear"}, {"id": "s177", "start": 1005.92, "end": 1017.6, "text": "you know skills defined and maintained you will have a low quality in your implementation because then it's up to the human to decide this and different the m in the maturity from team to team you can see the difference"}, {"id": "s178", "start": 1017.6, "end": 1030.16, "text": "and that is why for example if I look uh just randomly at this this is like you can see the productivity of this team is a kind of a medium right If I look at this one is a is a bit of like I don't know it's low medium productivity"}, {"id": "s179", "start": 1030.16, "end": 1035.28, "text": "quality and security also medium but when it came to the cost is really high."}, {"id": "s180", "start": 1035.28, "end": 1044.48, "text": "Okay, now let's actually say okay how this looks like if I governed all of the my skills in my in my organizations."}, {"id": "s181", "start": 1044.559, "end": 1056.32, "text": "What's going to happen is of course some of them will split right and this is reality isn't going to be perfect um as we expect but at least what you will see you will see actually some common ground across all of your teams."}, {"id": "s182", "start": 1056.32, "end": 1065.919, "text": "The moment you govern, you publish one skill, the next engineer trying to build a new skill, the coding agent harness will identify this skill that is already available and pull it."}, {"id": "s183", "start": 1065.919, "end": 1066.16, "text": "Right?"}, {"id": "s184", "start": 1066.16, "end": 1072.08, "text": "So you you almost solve all of the issues that that I covered about the governance."}, {"id": "s185", "start": 1073.52, "end": 1080.48, "text": "And one last point is when it came to skills, um it's just one component of your workflows as I said, right?"}, {"id": "s186", "start": 1080.48, "end": 1083.84, "text": "So that doesn't mean uh if you figure out skills that says you're good."}, {"id": "s187", "start": 1083.84, "end": 1089.12, "text": "No, you need to apply the same kind of like approach and solution for your whole workflows."}, {"id": "s188", "start": 1089.12, "end": 1096.24, "text": "And you may think to apply this again if you think about it like if you have a a centralized platform that have all of your workflows, right?"}, {"id": "s189", "start": 1096.24, "end": 1110.4, "text": "From one side you're centralizing the workflows which is also having the skills but also if the next engineer came and want to I don't know like provision infrastructure they can tap into a workflow and build that workflow with the required skills and run it and test it again."}, {"id": "s190", "start": 1110.4, "end": 1118.96, "text": "And if it's something you need to be improved in the workflow, you can easily push it back um to the centralized platform for your organization to use."}, {"id": "s191", "start": 1120.717, "end": 1121.12, "text": "[snorts]"}, {"id": "s192", "start": 1121.12, "end": 1126.559, "text": "Now before I wrap up, um what I want to leave you with is this is just the start the beginning."}, {"id": "s193", "start": 1126.559, "end": 1129.6, "text": "You see like this just we're talking about six to eight months."}, {"id": "s194", "start": 1129.6, "end": 1135.12, "text": "What's coming next and I would invite you to already explore is skills registry, right?"}, {"id": "s195", "start": 1135.12, "end": 1136.88, "text": "You should have one if not already."}, {"id": "s196", "start": 1136.88, "end": 1152.0, "text": "And the good news is all of the players that's been solving the IDP problem like um internal developer portal they already start centralizing this capability right so if you don't have it today maybe in a couple of months you will see it coming but also there's a lot of tools that's actually solving this specific"}, {"id": "s197", "start": 1152.0, "end": 1169.36, "text": "problem second is skills eval evaluation there's still kind of like a discussion on what is the right approach to to to you know to to evaluate skills the easy thing that I found so far very valuable is actually test like you you l static test your or evaluate your skills against the entropic best practices."}, {"id": "s198", "start": 1169.36, "end": 1169.84, "text": "Right?"}, {"id": "s199", "start": 1169.84, "end": 1177.12, "text": "If the skill is not invoked properly, if the skill is not structured properly, there's a high chance that it's not going to be high quality."}, {"id": "s200", "start": 1177.12, "end": 1178.72, "text": "And finally is auto evolving."}, {"id": "s201", "start": 1178.72, "end": 1182.16, "text": "And again, this is what everyone kind of like is is the next hype right now."}, {"id": "s202", "start": 1182.16, "end": 1187.12, "text": "Like yeah, I can create like a an a closed loop that can evolve automatically my skills."}, {"id": "s203", "start": 1187.12, "end": 1188.32, "text": "So what right?"}, {"id": "s204", "start": 1188.32, "end": 1203.76, "text": "If you automatically start this machine, the impact will be way more than it is today because what I shared earlier is going to be just maintaining auto evolving skills without that governance in place that actually put the guardrails for your organization."}, {"id": "s205", "start": 1203.76, "end": 1205.679, "text": "And at this point I would leave you here."}, {"id": "s206", "start": 1205.679, "end": 1211.039, "text": "Thank you so much for your listening and looking forward if you have any question I will be in the leadership lounge."}, {"id": "s207", "start": 1211.039, "end": 1212.0, "text": "Feel free to grab me."}, {"id": "s208", "start": 1212.0, "end": 1213.073, "text": "Thank you so much."}, {"id": "s209", "start": 1213.073, "end": 1215.073, "text": "[applause]"}, {"id": "s210", "start": 1228.139, "end": 1230.139, "text": "[music]"}]}, {"id": "NW-jwOVr32w", "title": "The Design-Code Roundtrip That Isn't — Jonathan Gordon, ReWeaver AI", "channel": "AI Engineer", "duration": 1117, "upload_date": null, "url": "https://www.youtube.com/watch?v=NW-jwOVr32w", "api": "/api/talks/NW-jwOVr32w.json", "summary_url": "/#NW-jwOVr32w", "transcript": {"html": "/transcripts/NW-jwOVr32w.html", "txt": "/transcripts/NW-jwOVr32w.txt", "vtt": "/transcripts/NW-jwOVr32w.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.8, "end": 14.559, "text": "Hello everyone."}, {"id": "s3", "start": 14.559, "end": 15.759, "text": "I'm Jonathan Gordon."}, {"id": "s4", "start": 15.759, "end": 20.64, "text": "I'm a founder of Reweaver AAI, a new company, you know, on the scene, let's say."}, {"id": "s5", "start": 20.64, "end": 23.199, "text": "I want to share one thing with all of you that was really fascinating."}, {"id": "s6", "start": 23.199, "end": 28.24, "text": "So, I I plugged in my laptop and I realized I had to mirror."}, {"id": "s7", "start": 28.24, "end": 30.32, "text": "So, I no longer have my speaker notes."}, {"id": "s8", "start": 30.32, "end": 35.28, "text": "So, I went into Claude and I said, \"Can you extract my speaker notes from my slide deck, please?\""}, {"id": "s9", "start": 35.28, "end": 38.079, "text": "And I had my speaker notes now."}, {"id": "s10", "start": 38.079, "end": 40.64, "text": "I love AI."}, {"id": "s11", "start": 41.44, "end": 42.8, "text": "The suspense was killing me."}, {"id": "s12", "start": 42.8, "end": 45.28, "text": "I was talking to Claude now."}, {"id": "s13", "start": 45.28, "end": 46.48, "text": "Who knows if it got it right."}, {"id": "s14", "start": 46.48, "end": 46.879, "text": "I don't know."}, {"id": "s15", "start": 46.879, "end": 47.76, "text": "Whatever."}, {"id": "s16", "start": 47.76, "end": 51.28, "text": "Um, so I also realized that my title slide buried the lead."}, {"id": "s17", "start": 51.28, "end": 53.28, "text": "I shouldn't have put it up."}, {"id": "s18", "start": 53.28, "end": 56.8, "text": "Um, but nonetheless, let's play with this."}, {"id": "s19", "start": 56.8, "end": 58.879, "text": "So, uh, yeah, my name is Jonathan."}, {"id": "s20", "start": 58.879, "end": 64.159, "text": "Um, I'm here to talk to you about the design code roundtrip that isn't."}, {"id": "s21", "start": 64.159, "end": 72.479, "text": "And I guess probably the best thing to do first is to explain what I think a design code roundtrip should be."}, {"id": "s22", "start": 72.479, "end": 88.24, "text": "Um the design code roundtrip is a full loop between design and engineering in both directions without any loss of fidelity and with a persistent provenence."}, {"id": "s23", "start": 88.24, "end": 90.4, "text": "So it knows exactly where everything came from."}, {"id": "s24", "start": 90.4, "end": 102.15899999999999, "text": "You know that perfect dream world that we live in where there is no drift in between the gaps of design and code."}, {"id": "s25", "start": 102.15899999999999, "end": 105.52000000000001, "text": "Um, today's tools, design is amazing."}, {"id": "s26", "start": 105.52000000000001, "end": 106.15899999999999, "text": "It's incredible."}, {"id": "s27", "start": 106.15899999999999, "end": 106.799, "text": "It's magic."}, {"id": "s28", "start": 106.799, "end": 108.72, "text": "It's I ask for something, I get it."}, {"id": "s29", "start": 108.72, "end": 109.439, "text": "It's clickable."}, {"id": "s30", "start": 109.439, "end": 110.56, "text": "It's interactive."}, {"id": "s31", "start": 110.56, "end": 112.72, "text": "It's amazing to me."}, {"id": "s32", "start": 112.72, "end": 116.07900000000001, "text": "But nobody really looks at the code anymore, it seems."}, {"id": "s33", "start": 116.07900000000001, "end": 117.68, "text": "And so, I kind of want to go there."}, {"id": "s34", "start": 117.68, "end": 120.32, "text": "I want to go into that space."}, {"id": "s35", "start": 120.32, "end": 121.119, "text": "Whoops."}, {"id": "s36", "start": 121.119, "end": 124.24, "text": "Of course, I have to get my mouse to the right location."}, {"id": "s37", "start": 124.24, "end": 125.119, "text": "There we go."}, {"id": "s38", "start": 125.119, "end": 127.68, "text": "Um, a little bit about me."}, {"id": "s39", "start": 127.68, "end": 144.4, "text": "past 30 plus years um I've been building and designing coding tools developer tools idees at these companies um so I've spent a lot of time with as a designer I've spent a lot of time with design and engineering teams"}, {"id": "s40", "start": 144.4, "end": 155.12, "text": "trying to understand how do we do that handoff well how do we hand off from design to code how do we get what we wanted to be delivered to the customer"}, {"id": "s41", "start": 155.12, "end": 158.56, "text": "um it was never a perfect science We never got it."}, {"id": "s42", "start": 158.56, "end": 167.92000000000002, "text": "We never found that magic sauce that just made everything come together where intent matched the outcome."}, {"id": "s43", "start": 167.92000000000002, "end": 170.0, "text": "Um, but I developed techniques."}, {"id": "s44", "start": 170.0, "end": 172.0, "text": "I negotiated with engineers."}, {"id": "s45", "start": 172.0, "end": 173.12, "text": "I brought them out for drinks."}, {"id": "s46", "start": 173.12, "end": 174.959, "text": "I made them my friends."}, {"id": "s47", "start": 174.959, "end": 178.959, "text": "Um, I got things delivered to customers."}, {"id": "s48", "start": 178.959, "end": 181.519, "text": "But the the loop was never closed."}, {"id": "s49", "start": 181.519, "end": 184.48, "text": "Um, and it's because our outcomes diverged."}, {"id": "s50", "start": 184.48, "end": 191.84, "text": "engineering had one set of requirements, technical constraints, design had a vision for the future, a new rebranding, whatever."}, {"id": "s51", "start": 191.84, "end": 196.879, "text": "So, this has existed, you know, dare I say, for decades."}, {"id": "s52", "start": 196.879, "end": 206.879, "text": "Um, then along comes AI and LLM and prompting ourself into a fully running application."}, {"id": "s53", "start": 206.879, "end": 217.2, "text": "In a sense, now we have one intelligence that understands design intent and the same intel in intelligence can write code."}, {"id": "s54", "start": 217.2, "end": 221.92000000000002, "text": "So I thought to myself, oh my god, I think we might be able to close this loop."}, {"id": "s55", "start": 221.92000000000002, "end": 225.04, "text": "At the speed of inference, we could close this loop."}, {"id": "s56", "start": 225.04, "end": 227.44, "text": "And so I was curious."}, {"id": "s57", "start": 227.44, "end": 230.4, "text": "Um, I'm curious by nature."}, {"id": "s58", "start": 230.4, "end": 232.31900000000002, "text": "So I went all in."}, {"id": "s59", "start": 232.31900000000002, "end": 240.08, "text": "That's my GitHub before vibe coding happened on the left on on my left on your whatever."}, {"id": "s60", "start": 240.08, "end": 248.0, "text": "Um then after so I think everybody probably gets a sense of what my life was like from April 2025."}, {"id": "s61", "start": 248.0, "end": 252.08, "text": "And if you want to scroll till today it's it's even more so."}, {"id": "s62", "start": 252.08, "end": 266.24, "text": "Um, I got this email from cursor one day that said I was in the top 0.1% of usage of cursor and I thought to myself, I need to spend more time outside."}, {"id": "s63", "start": 268.32, "end": 269.6, "text": "Then there was a bill."}, {"id": "s64", "start": 269.6, "end": 279.52, "text": "Um, but at the time it was the $20 deal and I kind of, you know, monitored, but every now and again I'd pay for a little bit more, get another hit."}, {"id": "s65", "start": 279.52, "end": 288.32, "text": "Um, and this was my life vibe coding from that point in April until today."}, {"id": "s66", "start": 288.32, "end": 292.15999999999997, "text": "Um, I'm trying to figure out can I go from design to code?"}, {"id": "s67", "start": 292.15999999999997, "end": 293.6, "text": "Can I go from code to design?"}, {"id": "s68", "start": 293.6, "end": 301.68, "text": "Can I build a tool to go from design to code and code to design a full round trip without any loss of fidelity?"}, {"id": "s69", "start": 301.68, "end": 304.4, "text": "That pixel perfect dream that we have."}, {"id": "s70", "start": 304.4, "end": 313.28, "text": "Um, I remember vividly uh one day I was, you know, just hammering away at the keyboard, just vibing my way."}, {"id": "s71", "start": 313.28, "end": 315.52, "text": "I was really feeling the vibe."}, {"id": "s72", "start": 315.52, "end": 324.32, "text": "And, uh, this wall of text was coming by and I was completely ignoring it and code was being written, just watching that come by."}, {"id": "s73", "start": 324.32, "end": 329.84, "text": "And I remember seeing a statement that was an inner HTML statement."}, {"id": "s74", "start": 329.84, "end": 339.759, "text": "And I remember from way back when that inter HTML was a security vulnerability that people can actually inject into in HTML and I stopped it."}, {"id": "s75", "start": 339.759, "end": 341.039, "text": "I said, \"Wait a minute, wait a minute.\""}, {"id": "s76", "start": 341.039, "end": 345.039, "text": "to my LM, \"Wait a minute, what did you just do?\""}, {"id": "s77", "start": 345.039, "end": 347.6, "text": "And it explained to me what it did and it was very proud of itself."}, {"id": "s78", "start": 347.6, "end": 349.84000000000003, "text": "And and I said, \"Revert that."}, {"id": "s79", "start": 349.84000000000003, "end": 350.639, "text": "Do this instead.\""}, {"id": "s80", "start": 350.639, "end": 351.68, "text": "Blah blah."}, {"id": "s81", "start": 351.68, "end": 355.6, "text": "And I got into this mode of like, \"Oh, maybe I need to steer this thing a little bit better."}, {"id": "s82", "start": 355.6, "end": 357.36, "text": "Maybe I can't just go blindly in."}, {"id": "s83", "start": 357.36, "end": 360.0, "text": "Maybe I need to look at the code now."}, {"id": "s84", "start": 360.0, "end": 362.639, "text": "And I've looked at a lot of code in my life."}, {"id": "s85", "start": 362.639, "end": 366.88, "text": "So I went ahead and went in and looked at the code and I Whoops."}, {"id": "s86", "start": 366.88, "end": 367.199, "text": "I'm sorry."}, {"id": "s87", "start": 367.199, "end": 371.52, "text": "I clicked too ahead and I found I found issues."}, {"id": "s88", "start": 371.52, "end": 383.68, "text": "And so I went a little bit deeper when the industry started to tell me that they had solved the round trip that you could go a true roundtrip workflow."}, {"id": "s89", "start": 383.68, "end": 386.08, "text": "You could roundtrip between code and canvas."}, {"id": "s90", "start": 386.08, "end": 397.919, "text": "I think folks in the room might remember back in February, no slam on anthropic or Figma, there was this demo that showed going from cloud code into Figma."}, {"id": "s91", "start": 397.919, "end": 398.88, "text": "And it was magic."}, {"id": "s92", "start": 398.88, "end": 399.6, "text": "It was incredible."}, {"id": "s93", "start": 399.6, "end": 405.36, "text": "I couldn't believe you could build a Figma artboard from a prompt in Cloud Code."}, {"id": "s94", "start": 405.36, "end": 409.44, "text": "And then I had to go deeper and I had to look deeper in the same way that I looked at vibe coding."}, {"id": "s95", "start": 409.44, "end": 410.319, "text": "Like, is this real?"}, {"id": "s96", "start": 410.319, "end": 411.919, "text": "Is the hype real?"}, {"id": "s97", "start": 411.919, "end": 420.72, "text": "So I went deeper and then more announcements were made all the way up until last week when Figma config announced that code is now material."}, {"id": "s98", "start": 420.72, "end": 425.44, "text": "Does that mean there is no even handoff that exists anymore?"}, {"id": "s99", "start": 425.44, "end": 428.319, "text": "Um so I'm monitoring trying to keep up."}, {"id": "s100", "start": 428.319, "end": 431.68, "text": "Things are happening at warp speed."}, {"id": "s101", "start": 431.68, "end": 437.68, "text": "But they said the roundtrip was solved and I started messing around and realized it wasn't."}, {"id": "s102", "start": 437.68, "end": 443.039, "text": "And so I want to share with all of you a harness that I built."}, {"id": "s103", "start": 443.039, "end": 444.08, "text": "Whoops."}, {"id": "s104", "start": 444.08, "end": 445.44, "text": "Oh, wait a minute."}, {"id": "s105", "start": 445.44, "end": 447.44, "text": "Local host, where are you?"}, {"id": "s106", "start": 447.44, "end": 451.44, "text": "Local host, come back to me, local host."}, {"id": "s107", "start": 451.44, "end": 453.199, "text": "Okay."}, {"id": "s108", "start": 453.199, "end": 454.88, "text": "I don't know what I don't know what just happened there."}, {"id": "s109", "start": 454.88, "end": 456.88, "text": "And now I'm afraid to restart this."}, {"id": "s110", "start": 456.88, "end": 457.919, "text": "Um, okay."}, {"id": "s111", "start": 457.919, "end": 459.84000000000003, "text": "I think we're I think we're okay."}, {"id": "s112", "start": 459.84000000000003, "end": 461.36, "text": "Um, I created this harness."}, {"id": "s113", "start": 461.36, "end": 464.8, "text": "And what this harness is is on."}, {"id": "s114", "start": 464.8, "end": 465.599, "text": "I'm going to say left."}, {"id": "s115", "start": 465.599, "end": 467.759, "text": "I hope everybody is that your left."}, {"id": "s116", "start": 467.759, "end": 468.4, "text": "It is your left."}, {"id": "s117", "start": 468.4, "end": 468.985, "text": "Okay, good."}, {"id": "s118", "start": 468.985, "end": 470.08, "text": "[laughter]"}, {"id": "s119", "start": 470.08, "end": 472.88, "text": "On your left is code that was generated by AI."}, {"id": "s120", "start": 472.88, "end": 475.84000000000003, "text": "This is this is all real what you're seeing here."}, {"id": "s121", "start": 475.84000000000003, "end": 481.12, "text": "Generated by AI and on your right is a design."}, {"id": "s122", "start": 481.12, "end": 486.24, "text": "Be it a canvas that that I created in Figma, be it something I created in Sketch."}, {"id": "s123", "start": 486.24, "end": 493.199, "text": "It's not really relevant what the sources are here, but the reality is I'm trying to illustrate a round trip."}, {"id": "s124", "start": 493.199, "end": 499.759, "text": "And so a round trip you know starts with code or starts with design and it has a prompt associated with it."}, {"id": "s125", "start": 499.759, "end": 507.36, "text": "So some some LLM I call off and I say in this instance I want to take this form and I want to build a design system from it."}, {"id": "s126", "start": 507.36, "end": 513.919, "text": "So there there are tools that do this that can extract code and build design systems from graphical canvases."}, {"id": "s127", "start": 513.919, "end": 516.32, "text": "And so I can do that."}, {"id": "s128", "start": 516.32, "end": 519.76, "text": "And it updated the code and created some styles."}, {"id": "s129", "start": 519.76, "end": 524.9590000000001, "text": "And it also actually created um a design system that works in runtime here."}, {"id": "s130", "start": 524.9590000000001, "end": 529.92, "text": "So this is like a a real app that got built that is also living in Figma."}, {"id": "s131", "start": 529.92, "end": 531.12, "text": "So there's a link up here."}, {"id": "s132", "start": 531.12, "end": 534.72, "text": "I won't go there, but trust me, so we can say stable."}, {"id": "s133", "start": 534.72, "end": 538.88, "text": "If I click that link, it would go to Figma and show me the full-blown design system that was built."}, {"id": "s134", "start": 538.88, "end": 550.16, "text": "And a design system for those that don't know is composed of components and tokens and variables and styles that all are used as a basis for building software from."}, {"id": "s135", "start": 550.16, "end": 557.279, "text": "So code and design together, you know, really work well when there's a design system and there's a code base that understands it."}, {"id": "s136", "start": 557.279, "end": 559.44, "text": "Now move back and forth."}, {"id": "s137", "start": 559.44, "end": 563.44, "text": "You throw something over here and you say, \"Okay, I want to build an orange button.\""}, {"id": "s138", "start": 563.44, "end": 566.16, "text": "And I've added a company field and an orange button."}, {"id": "s139", "start": 566.16, "end": 567.12, "text": "The code is updated."}, {"id": "s140", "start": 567.12, "end": 568.64, "text": "The design is updated."}, {"id": "s141", "start": 568.64, "end": 569.519, "text": "This is awesome."}, {"id": "s142", "start": 569.519, "end": 570.72, "text": "Could I go back?"}, {"id": "s143", "start": 570.72, "end": 571.92, "text": "Maybe."}, {"id": "s144", "start": 571.92, "end": 575.92, "text": "Um, but I have a button up here called show drift."}, {"id": "s145", "start": 575.92, "end": 580.56, "text": "So, show drift is rewaver AI working right now."}, {"id": "s146", "start": 580.56, "end": 585.8389999999999, "text": "And this is real rewaver code for the first time introduced to the public ever."}, {"id": "s147", "start": 585.8389999999999, "end": 595.04, "text": "And if I click show drift, I'll see a list of issues that got generated from both the code and the design at the same time."}, {"id": "s148", "start": 595.04, "end": 598.64, "text": "There are across several different dimensions that you can see here."}, {"id": "s149", "start": 598.64, "end": 615.519, "text": "Design quality, code quality, performance, design tokens, etc. One of the ones of note that I find really important from my perspective is at Microsoft I worked on accessibility and I learned a lot about what it means to build an accessible software system."}, {"id": "s150", "start": 615.519, "end": 617.279, "text": "And I I want to be honest with all of you."}, {"id": "s151", "start": 617.279, "end": 623.12, "text": "I was very frustrated when I first saw LMS come out and they generated code that was inaccessible period out of the box."}, {"id": "s152", "start": 623.12, "end": 627.519, "text": "I thought what models weren't trained on accessibility."}, {"id": "s153", "start": 627.519, "end": 633.68, "text": "Um, and I was reminded 20 years ago when you know engineers needed to be trained on accessibility."}, {"id": "s154", "start": 633.68, "end": 639.36, "text": "So here we are again now training LLMs instead of engineers on accessibility."}, {"id": "s155", "start": 639.36, "end": 640.88, "text": "So found issues."}, {"id": "s156", "start": 640.88, "end": 646.64, "text": "Um, here's an issue where has no Arya live region."}, {"id": "s157", "start": 646.64, "end": 648.399, "text": "So it won't be announced by screen reader."}, {"id": "s158", "start": 648.399, "end": 652.079, "text": "A blind user using this won't get an announcement about this element."}, {"id": "s159", "start": 652.079, "end": 658.079, "text": "So Rewaver found that and Rewaver says it can fix it and Rewaver fixed it."}, {"id": "s160", "start": 658.079, "end": 661.68, "text": "Now the red went away, but there's also a blue issue here as well."}, {"id": "s161", "start": 661.68, "end": 675.92, "text": "Um so Rewaver stacks up issues and you know basically scans scans the code and scans the design and produces u guard rails to a sense but also a way to fix the code and make it better."}, {"id": "s162", "start": 676.0, "end": 688.64, "text": "So I did that across multiple dimensions um you know with the intention of seeing if anybody had solved the drown the the roundtrip problem and it didn't go well."}, {"id": "s163", "start": 688.64, "end": 691.04, "text": "Uh I never got really the full round trip."}, {"id": "s164", "start": 691.04, "end": 704.64, "text": "So I really tried hopefully this slide tells you I tried five different tool setups trying to do code design code roundtrip both directions birectional lots of lossy issues uh"}, {"id": "s165", "start": 704.64, "end": 717.6, "text": "you know bindings were lost um design change survived but code didn't I'm not going to say we're not going to get there um but even if we do get there and we're able to do this"}, {"id": "s166", "start": 717.6, "end": 722.72, "text": "I wonder if we'll get fully there And maybe we need tools like Reweaver."}, {"id": "s167", "start": 722.72, "end": 730.56, "text": "I shouldn't say maybe, we do need tools like Reweaver to help us understand the drift."}, {"id": "s168", "start": 730.56, "end": 734.72, "text": "So that whole experience for me really highlighted something from my past."}, {"id": "s169", "start": 734.72, "end": 744.639, "text": "Um I had I had built a lot of software development tools, designed and built software development tools and developer tools in their nature are deterministic."}, {"id": "s170", "start": 744.639, "end": 751.279, "text": "You write code, you compile it, you get an SA a it it'll every time you run that code, you'll get the same result."}, {"id": "s171", "start": 751.279, "end": 758.72, "text": "When you put AI in the middle of that or in the front of that or the end of that, you're not going to necessarily get the same outcomes."}, {"id": "s172", "start": 758.72, "end": 763.92, "text": "Now, there are tools that will help you understand, rewaver being one of them, that there's a mismatch."}, {"id": "s173", "start": 763.92, "end": 767.6, "text": "There's drift there and we need to be aware of drift."}, {"id": "s174", "start": 767.6, "end": 770.0, "text": "Drift lurks in the dark."}, {"id": "s175", "start": 770.0, "end": 771.12, "text": "You need to look at the code."}, {"id": "s176", "start": 771.12, "end": 772.0, "text": "You need to find the drift."}, {"id": "s177", "start": 772.0, "end": 774.0, "text": "You need to fix the drift."}, {"id": "s178", "start": 774.0, "end": 777.76, "text": "And you do that with deterministic guardrails around the AI."}, {"id": "s179", "start": 777.76, "end": 780.0, "text": "The AI is still there."}, {"id": "s180", "start": 780.0, "end": 786.32, "text": "So I ran another experiment, 12 iterations on a codebase with complex enough UI to it."}, {"id": "s181", "start": 786.32, "end": 790.48, "text": "And I did one where it was just pure AIE, just LLM all the way."}, {"id": "s182", "start": 790.48, "end": 791.76, "text": "And it degraded a little."}, {"id": "s183", "start": 791.76, "end": 800.959, "text": "It degraded a little bit, but it started at 30% quality, 30% fidelity, 30%, you know, true pixel perfection."}, {"id": "s184", "start": 800.959, "end": 807.36, "text": "And then I put it on top of deterministic guardrails where we found the issues, we fixed the issues."}, {"id": "s185", "start": 807.36, "end": 814.16, "text": "You can't get to a hundred because that 10% is human judgment, human decision-making."}, {"id": "s186", "start": 814.16, "end": 818.639, "text": "So the human is still there in this equation."}, {"id": "s187", "start": 818.639, "end": 822.639, "text": "Um, so what is it today?"}, {"id": "s188", "start": 822.639, "end": 825.68, "text": "Uh, today I I would call it we're locked into AI."}, {"id": "s189", "start": 825.68, "end": 826.32, "text": "And that's okay."}, {"id": "s190", "start": 826.32, "end": 827.279, "text": "We'll go there."}, {"id": "s191", "start": 827.279, "end": 828.8, "text": "We'll embrace that."}, {"id": "s192", "start": 828.8, "end": 830.9590000000001, "text": "But we're locked into AI for design to code."}, {"id": "s193", "start": 830.9590000000001, "end": 839.199, "text": "We're locked into AI for code to design, looping, chat bots, what we call span the chain workflows where you jumping across tools."}, {"id": "s194", "start": 839.199, "end": 842.0, "text": "And there's always token costs to be aware of, of course."}, {"id": "s195", "start": 842.0, "end": 846.48, "text": "So in this world, the agents are in control and the humans in the loop."}, {"id": "s196", "start": 846.48, "end": 848.56, "text": "I'd like to propose something else."}, {"id": "s197", "start": 848.56, "end": 851.92, "text": "Before I do, there are three blind spots we need to be aware of."}, {"id": "s198", "start": 851.92, "end": 853.36, "text": "One is the model itself."}, {"id": "s199", "start": 853.36, "end": 854.639, "text": "It's going to you can ask it questions."}, {"id": "s200", "start": 854.639, "end": 857.92, "text": "It'll give you answers, but it's nondeterministic."}, {"id": "s201", "start": 857.92, "end": 859.68, "text": "It's probabilistic."}, {"id": "s202", "start": 859.68, "end": 862.0, "text": "There will be drift in the moment when you're writing code."}, {"id": "s203", "start": 862.0, "end": 876.399, "text": "Drift will surface, but drift over time is the pain that you'll be experiencing for the next six months because drift over time is the new tech debt and it's going to pile itself"}, {"id": "s204", "start": 876.399, "end": 879.04, "text": "gloriously over your codebase."}, {"id": "s205", "start": 879.04, "end": 882.56, "text": "Um, we want to do something about it."}, {"id": "s206", "start": 882.56, "end": 900.16, "text": "So here's where we think it isn't meaning what it could be what it should be fully birectional edit both ways lossless all surfaces preserved so if you go from code to design and design to code nothing's breaking weirdly for you"}, {"id": "s207", "start": 900.16, "end": 913.839, "text": "provenence is carried where did this start from what line of code wrote this button I see this button in Figma I want to change it I need to change that code or Somebody needs to change that code."}, {"id": "s208", "start": 913.839, "end": 916.16, "text": "We have to control the drift."}, {"id": "s209", "start": 916.16, "end": 919.12, "text": "It's deterministic reconciliation at its core."}, {"id": "s210", "start": 919.12, "end": 928.72, "text": "So with deterministic guardrails, and I'm happy to talk after if folks are interested in what I mean by that, accept or refuse."}, {"id": "s211", "start": 928.72, "end": 932.24, "text": "So if they know there's a fix, they will fix it."}, {"id": "s212", "start": 932.24, "end": 938.9590000000001, "text": "If they don't know there's a fix, they will tell you there's an issue, but you need to fix it."}, {"id": "s213", "start": 938.9590000000001, "end": 941.76, "text": "And with Ruby Weaver, there's zero extra token costs."}, {"id": "s214", "start": 941.76, "end": 948.56, "text": "So, we're fully local LLM, but if you want to open up Claude or whatever and connect to us, you can."}, {"id": "s215", "start": 948.56, "end": 953.92, "text": "But at its core, and our core principle is the human is in control always."}, {"id": "s216", "start": 953.92, "end": 961.04, "text": "In control of cost, in control of code, in control of design, because that's what we've been doing for decades."}, {"id": "s217", "start": 961.04, "end": 962.8, "text": "We've been in control."}, {"id": "s218", "start": 962.8, "end": 964.48, "text": "We don't need to lose control."}, {"id": "s219", "start": 964.48, "end": 975.6, "text": "And I'm not saying loop isn't good, but human in control is I think a little more aspirational because at the end of the day, what you need is actually what you get."}, {"id": "s220", "start": 975.6, "end": 977.12, "text": "I call it winnywig."}, {"id": "s221", "start": 977.12, "end": 980.48, "text": "Can I use that winny wig?"}, {"id": "s222", "start": 980.639, "end": 982.639, "text": "So what are we building at its core?"}, {"id": "s223", "start": 982.639, "end": 988.56, "text": "What we're building are nine dimensions of deterministic guardrails."}, {"id": "s224", "start": 988.56, "end": 997.279, "text": "Inside of this is a lot of stuff, but these are our top level um software quality, software production readiness dimensions."}, {"id": "s225", "start": 997.279, "end": 998.9590000000001, "text": "Design consistency being core."}, {"id": "s226", "start": 998.9590000000001, "end": 1004.72, "text": "Of course, when you have a design system and the code isn't consistent with it and vice versa, we need to fix that."}, {"id": "s227", "start": 1004.72, "end": 1010.56, "text": "So, there's a lot of design consistency um work that's going into the the foundation."}, {"id": "s228", "start": 1010.56, "end": 1013.199, "text": "Accessibility is its own dimension."}, {"id": "s229", "start": 1013.199, "end": 1027.839, "text": "um maybe selfish of me but I think it's core uh AI code generation too or AI code sorry governance AI code generation governance is another really critical piece because the code is just flying through the system"}, {"id": "s230", "start": 1027.839, "end": 1039.679, "text": "and we need to govern that code now we're not going to change the code rewaver actually doesn't write code you write code reweaver will do what you want it to do so if you say apply the fix"}, {"id": "s231", "start": 1039.679, "end": 1044.4, "text": "it'll write the code for you can see the code being written You can say never mind undo."}, {"id": "s232", "start": 1044.4, "end": 1046.319, "text": "You can ignore it."}, {"id": "s233", "start": 1046.319, "end": 1050.96, "text": "So at the end of the day, catch what drifts in a closed loop before anything merges."}, {"id": "s234", "start": 1050.96, "end": 1053.039, "text": "That's the goal."}, {"id": "s235", "start": 1053.039, "end": 1055.36, "text": "You can try it out with your own code today."}, {"id": "s236", "start": 1055.36, "end": 1067.28, "text": "Right now, you can go to reweaver AIPplayground and we built kind of a similar harness to what I built there where you can put your AI generated code on the left on the left."}, {"id": "s237", "start": 1067.28, "end": 1070.4, "text": "You can scan it and get your results for that code."}, {"id": "s238", "start": 1070.4, "end": 1073.679, "text": "There's also a fun little challenge on that page."}, {"id": "s239", "start": 1073.679, "end": 1086.88, "text": "If you can get AI to generate code that gives you a score lower than30 PDR, which is production drift ratio, will get you a frontline seat on the beta,"}, {"id": "s240", "start": 1086.88, "end": 1089.84, "text": "but you'll also get yourself showcased at the bottom on the crawl."}, {"id": "s241", "start": 1089.84, "end": 1091.36, "text": "So, give it a shot."}, {"id": "s242", "start": 1091.36, "end": 1092.48, "text": "Take a look."}, {"id": "s243", "start": 1092.48, "end": 1095.52, "text": "Um, meanwhile, I'm looking for people to join our beta."}, {"id": "s244", "start": 1095.52, "end": 1100.32, "text": "We're going to basically blast out mid July hopefully."}, {"id": "s245", "start": 1100.32, "end": 1107.039, "text": "Um so would love for you to join if you're interested um to make the product better to sanity check us."}, {"id": "s246", "start": 1107.039, "end": 1114.64, "text": "Um basically that's it and you can also reach me online or outside happy to talk more."}, {"id": "s247", "start": 1114.64, "end": 1116.799, "text": "Thank you."}]}, {"id": "O1FN4awNEtM", "title": "Designing for AI Engineer — Vincent Wendy, AI Engineer", "channel": "AI Engineer", "duration": 1008, "upload_date": null, "url": "https://www.youtube.com/watch?v=O1FN4awNEtM", "api": "/api/talks/O1FN4awNEtM.json", "summary_url": "/#O1FN4awNEtM", "transcript": {"html": "/transcripts/O1FN4awNEtM.html", "txt": "/transcripts/O1FN4awNEtM.txt", "vtt": "/transcripts/O1FN4awNEtM.vtt"}, "sentences": [{"id": "s1", "start": 12.4, "end": 14.56, "text": "All right."}, {"id": "s2", "start": 14.76, "end": 15.72, "text": "Hello everyone."}, {"id": "s3", "start": 15.72, "end": 18.4, "text": "Hope you guys having a good time at the conference."}, {"id": "s4", "start": 18.4, "end": 23.32, "text": "So, before we start how many of you are actually uh designers?"}, {"id": "s5", "start": 23.32, "end": 24.12, "text": "Like a product designer."}, {"id": "s6", "start": 24.12, "end": 26.56, "text": "Hey, one hands and another."}, {"id": "s7", "start": 26.56, "end": 28.4, "text": "Okay."}, {"id": "s8", "start": 28.4, "end": 32.56, "text": "And how many I assume that the rest of you are engineers?"}, {"id": "s9", "start": 32.56, "end": 33.52, "text": "Is that correct?"}, {"id": "s10", "start": 33.52, "end": 34.44, "text": "Yeah, pretty much."}, {"id": "s11", "start": 34.44, "end": 35.44, "text": "Okay."}, {"id": "s12", "start": 35.44, "end": 50.96, "text": "So, today's talk is a non-technical talk, but more of a real-world experience how I created the design for AI Engineer this conference and our other past conference as well and how AI has helped me."}, {"id": "s13", "start": 50.96, "end": 60.4, "text": "And so, the talk today is one designer plus AI, which is me as the designer, and hundreds of deliverables."}, {"id": "s14", "start": 60.4, "end": 62.04, "text": "All right, let's start."}, {"id": "s15", "start": 62.04, "end": 63.56, "text": "So, my name is Vinson Weng."}, {"id": "s16", "start": 63.56, "end": 67.48, "text": "I am a senior creative designer at AI Engineer."}, {"id": "s17", "start": 67.48, "end": 71.0, "text": "And at AI Engineer, it's a very small team."}, {"id": "s18", "start": 71.0, "end": 76.03999999999999, "text": "So, we only have around 12 people to 15 people at the moment."}, {"id": "s19", "start": 76.03999999999999, "end": 89.28, "text": "And everyone has been doing their own thing and I think AI has been like has been a really helpful way to like helping everybody doing everything."}, {"id": "s20", "start": 89.28, "end": 95.75999999999999, "text": "And at if for if an at this scale we have a problem, obviously, right?"}, {"id": "s21", "start": 95.75999999999999, "end": 100.52000000000001, "text": "And the problem is the scale problem or I would call the challenges."}, {"id": "s22", "start": 100.52000000000001, "end": 103.2, "text": "And how to overcome it?"}, {"id": "s23", "start": 103.2, "end": 109.64, "text": "It's basically automation and we get to that in the later part of this talk."}, {"id": "s24", "start": 109.64, "end": 117.68, "text": "So, when I prepared this talk, we only expected 6,000 attendees and now it's 7,000."}, {"id": "s25", "start": 117.68, "end": 120.12, "text": "Well, good for us."}, {"id": "s26", "start": 120.12, "end": 123.16, "text": "And then we have 140 sponsors."}, {"id": "s27", "start": 123.16, "end": 124.32, "text": "More."}, {"id": "s28", "start": 124.32, "end": 126.28, "text": "140 plus sponsors."}, {"id": "s29", "start": 126.28, "end": 131.72, "text": "And then 300 plus speakers, 600 plus sessions, and one designer."}, {"id": "s30", "start": 131.72, "end": 135.72, "text": "And everybody needs every designs, right?"}, {"id": "s31", "start": 135.72, "end": 138.0, "text": "Like every single thing needs design."}, {"id": "s32", "start": 138.0, "end": 140.92000000000002, "text": "Sponsor needs assets, speaker needs graphic."}, {"id": "s33", "start": 140.92000000000002, "end": 143.28, "text": "You need sign it so you don't get lost."}, {"id": "s34", "start": 143.28, "end": 148.84, "text": "And this is basically what we do, what I do."}, {"id": "s35", "start": 148.84, "end": 152.68, "text": "So, from stickers, do you like your swag, your stickers?"}, {"id": "s36", "start": 152.68, "end": 155.72, "text": "Well, I hope you do because I create that design, too."}, {"id": "s37", "start": 155.72, "end": 171.6, "text": "And to a landing page, speaker announcement, track mascot, all the stuff that you see, most of the stuff that you see here, from a sign it to a digital sign it, landing page, everything is"}, {"id": "s38", "start": 171.6, "end": 172.92000000000002, "text": "a deliverable."}, {"id": "s39", "start": 172.92000000000002, "end": 178.48, "text": "And a thousand details means a thousand way to fail, right?"}, {"id": "s40", "start": 178.48, "end": 184.48, "text": "Because I'm missing sponsor logos, going to be a huge issue."}, {"id": "s41", "start": 184.48, "end": 189.8, "text": "And speakers that have a wrong schedule, also a huge issues, right?"}, {"id": "s42", "start": 189.8, "end": 197.56, "text": "And it seems impossible to handle that many kind of deliverables, but yeah, meet my design team."}, {"id": "s43", "start": 197.56, "end": 204.68, "text": "So, it's me and Devin, GPT, and Figma."}, {"id": "s44", "start": 206.6, "end": 214.92000000000002, "text": "And right now we are at the stage where tools isn't the like it's not a problem anymore, but having a real problem is our advantage."}, {"id": "s45", "start": 214.92000000000002, "end": 221.72, "text": "So, for example, when someone asked me, \"What inspired you when designing in AI engineer?\""}, {"id": "s46", "start": 221.72, "end": 229.68, "text": "I don't know the answer back then, but after I think about it, it's actually a problem that inspired me to like designing in this AI engineer."}, {"id": "s47", "start": 229.68, "end": 234.28, "text": "And we'll get to that in the latter part of this talk."}, {"id": "s48", "start": 234.28, "end": 240.68, "text": "So, have you guys seen the talk by Simon Wilson like in 2025?"}, {"id": "s49", "start": 240.68, "end": 242.16, "text": "Yeah."}, {"id": "s50", "start": 242.16, "end": 244.6, "text": "Yeah, and it's pretty interesting, right?"}, {"id": "s51", "start": 244.6, "end": 254.68, "text": "He asked to He asked every LLM to create an a vector file, which is basically a pelican riding a bicycle."}, {"id": "s52", "start": 254.68, "end": 261.0, "text": "And it is basically to test and I tested again and it's still doing this for the basic model."}, {"id": "s53", "start": 261.0, "end": 263.6, "text": "And it's not usable for me as a designer."}, {"id": "s54", "start": 263.6, "end": 267.32, "text": "But as a designer, we have to think outside the box."}, {"id": "s55", "start": 267.32, "end": 276.28, "text": "And we could simply ask ChatGPT create a still image like a PNG for a pelican riding a bicycle and then I can vectorize it on on Figma."}, {"id": "s56", "start": 276.28, "end": 278.52, "text": "And we can ship that now."}, {"id": "s57", "start": 278.52, "end": 284.919, "text": "So, we have to think outside the box here regardless the capabilities of the LLM."}, {"id": "s58", "start": 284.919, "end": 291.76, "text": "And So, how to solve this scale problem, right?"}, {"id": "s59", "start": 292.72, "end": 294.2, "text": "Basically five five things."}, {"id": "s60", "start": 294.2, "end": 302.64, "text": "So, foundation first, reusable designs, automated workflows, validated output, and also remove frictions."}, {"id": "s61", "start": 302.88, "end": 307.44, "text": "The foundation is definitely the core part that we need to set up right."}, {"id": "s62", "start": 307.44, "end": 312.24, "text": "Like the design system, typography, colors, components, like other stuff."}, {"id": "s63", "start": 312.24, "end": 320.08, "text": "And once this is set up, like for example, when we create the website, it's all set up within this thing."}, {"id": "s64", "start": 320.08, "end": 322.4, "text": "And yeah, this is just an example."}, {"id": "s65", "start": 322.4, "end": 332.72, "text": "Like we have the colors, primary, and then also the accent colors, the typography, and also the tagline, all the other stuff."}, {"id": "s66", "start": 332.72, "end": 338.72, "text": "And also, have you guys Are you guys familiar with the atomic designs?"}, {"id": "s67", "start": 338.72, "end": 341.72, "text": "So, yeah, my previous background is I'm a product designer."}, {"id": "s68", "start": 341.72, "end": 348.76, "text": "So, I'm pretty familiar with the thing where we need to create a user-centric design and also like atomic designs, right?"}, {"id": "s69", "start": 348.76, "end": 357.04, "text": "Where we create the smallest part possible and then combining it into like basically a LEGO pieces and then into a deliverables."}, {"id": "s70", "start": 357.04, "end": 362.88, "text": "And this is pretty useful in my job desk right now."}, {"id": "s71", "start": 362.88, "end": 371.16, "text": "So, once we set up all of those foundation, we basically need to create for example, we use Defont a lot."}, {"id": "s72", "start": 371.16, "end": 374.16, "text": "In at the office, we everybody use Defont."}, {"id": "s73", "start": 374.16, "end": 377.84, "text": "Everybody like abusing Defont for example."}, {"id": "s74", "start": 377.84, "end": 378.6, "text": "Yeah."}, {"id": "s75", "start": 378.6, "end": 395.32, "text": "And So, in this case, I just need hey, we use this desktop typography and this mobile typography because we know Cloud or like any other LLMs love to like throwing some random"}, {"id": "s76", "start": 395.32, "end": 396.15999999999997, "text": "font size, right?"}, {"id": "s77", "start": 396.15999999999997, "end": 402.44, "text": "And if we don't define it, it just delivering a slope like the previous slope."}, {"id": "s78", "start": 402.44, "end": 405.15999999999997, "text": "And yeah."}, {"id": "s79", "start": 405.15999999999997, "end": 411.15999999999997, "text": "Typography, color and stuff and and then it comes to reusable design."}, {"id": "s80", "start": 411.15999999999997, "end": 423.44, "text": "So, once we set up it right, like the website is has the the branding to it, all the other teams on the AI engineer, like for example, the marketing teams"}, {"id": "s81", "start": 423.44, "end": 425.48, "text": "can create everything basically."}, {"id": "s82", "start": 425.48, "end": 428.0, "text": "Like they can create an email design based on that."}, {"id": "s83", "start": 428.0, "end": 438.88, "text": "They can create a flyer, a document just based on the website because it's already defined like it defined early."}, {"id": "s84", "start": 439.08, "end": 444.28, "text": "And yeah, once you get the design, you can just rinse and repeat."}, {"id": "s85", "start": 444.28, "end": 449.72, "text": "For example, the mascot, it's all has the pretty much the same design and it's rinse and repeat."}, {"id": "s86", "start": 449.72, "end": 458.15999999999997, "text": "And if you already defining those things, you can basically like create one design that works for all."}, {"id": "s87", "start": 458.15999999999997, "end": 464.48, "text": "And this is the part that I'm most interesting to talk about, which is the automated workflows."}, {"id": "s88", "start": 464.56, "end": 469.72, "text": "Before, for example, if you take a look outside the room, there's a schedule, right?"}, {"id": "s89", "start": 469.72, "end": 472.72, "text": "The schedule for each and everyone."}, {"id": "s90", "start": 472.72, "end": 478.52, "text": "So, we used to do it manually on Figma, but now we use Devin for it."}, {"id": "s91", "start": 478.52, "end": 483.32, "text": "And let me show you."}, {"id": "s92", "start": 484.16, "end": 486.08, "text": "Hey."}, {"id": "s93", "start": 486.08, "end": 489.0, "text": "So, right now we just pull the latest data."}, {"id": "s94", "start": 489.0, "end": 495.04, "text": "I just asked Devin like, \"Hey, I want this room at these days.\""}, {"id": "s95", "start": 495.04, "end": 505.84, "text": "And then we can just export it, download it PNG, and the data is all accurate, and then we can just ship it to the flash drive, and then put it on the screen."}, {"id": "s96", "start": 505.84, "end": 514.159, "text": "And it was like impossible before because the friction is just too much between the designers and the developers."}, {"id": "s97", "start": 514.159, "end": 514.18, "text": "We"}, {"id": "s98", "start": 514.18, "end": 514.2, "text": "[snorts]"}, {"id": "s99", "start": 514.2, "end": 519.96, "text": "cannot make things like pixel perfect because once we tell the designer, \"Hey, this is the design.\""}, {"id": "s100", "start": 519.96, "end": 525.4, "text": "And then Sorry, the the engineers that created the design, for example."}, {"id": "s101", "start": 525.4, "end": 527.56, "text": "\"Hey, I need this to be delivered.\""}, {"id": "s102", "start": 527.56, "end": 533.4, "text": "And then they don't create it pixel perfect, it's a lot of feedback loop, right?"}, {"id": "s103", "start": 533.4, "end": 539.72, "text": "But with Devin, we just say, \"Hey, can you make this more accurate?\""}, {"id": "s104", "start": 539.72, "end": 552.72, "text": "We can just connect it to MCP, and then if it doesn't work, we can just always like give a spec sheet or something that can be defined like what's the spacing, what's the"}, {"id": "s105", "start": 552.72, "end": 559.92, "text": "font size, etc. And this is what we do to for the speaker announcement."}, {"id": "s106", "start": 559.92, "end": 566.48, "text": "So, we have 300 plus speakers, and it's impossible for me to like handle one by one, right?"}, {"id": "s107", "start": 566.48, "end": 576.12, "text": "So, we create this thing, which is called which you can also access to speaker announcement, and you can also try it yourself."}, {"id": "s108", "start": 576.12, "end": 578.2, "text": "Like this one, for example."}, {"id": "s109", "start": 578.2, "end": 580.6, "text": "You can select it right here."}, {"id": "s110", "start": 580.6, "end": 582.68, "text": "And then you can also change your name."}, {"id": "s111", "start": 582.68, "end": 584.84, "text": "Well, that Yeah."}, {"id": "s112", "start": 584.84, "end": 588.72, "text": "For example, this you can change the name to whatever you want."}, {"id": "s113", "start": 588.72, "end": 593.44, "text": "And we also have the landscape mode which can be also loaded."}, {"id": "s114", "start": 593.44, "end": 599.36, "text": "If the speaker also have the headshot and all the details, it will automatically export."}, {"id": "s115", "start": 599.36, "end": 605.4, "text": "And we also have the trading cards which is surprisingly pretty popular."}, {"id": "s116", "start": 605.4, "end": 607.52, "text": "And we have a different team."}, {"id": "s117", "start": 607.52, "end": 610.48, "text": "And this is all pixel perfect."}, {"id": "s118", "start": 610.48, "end": 610.92, "text": "All right."}, {"id": "s119", "start": 610.92, "end": 614.24, "text": "For example, this one."}, {"id": "s120", "start": 614.36, "end": 619.84, "text": "This is inspired by TBPN, so Yeah."}, {"id": "s121", "start": 619.84, "end": 623.24, "text": "And how do I deliver this in pixel perfect?"}, {"id": "s122", "start": 623.24, "end": 625.8, "text": "Let's jump into it."}, {"id": "s123", "start": 625.8, "end": 642.68, "text": "So, the process here is before when I start my career as a product designer, it used to be just okay, we need to research, we need to build product like design thinking in general, right?"}, {"id": "s124", "start": 642.68, "end": 645.2, "text": "And then feedback loop and stuff like that."}, {"id": "s125", "start": 645.2, "end": 649.64, "text": "But right now, it's it's just outdated for me."}, {"id": "s126", "start": 649.64, "end": 661.557, "text": "Like in my case, we just go to Slack, Figma, and then send it back to Slack because Devin or Devin live in Slack, and then ship all the things that he need."}, {"id": "s127", "start": 661.557, "end": 661.72, "text": "[snorts]"}, {"id": "s128", "start": 661.72, "end": 673.96, "text": "Like for example, if we can connect the MCP or also the spec document, which is for example the spec sheet like this, which is uh plugin in Figma if you"}, {"id": "s129", "start": 673.96, "end": 675.24, "text": "interested."}, {"id": "s130", "start": 675.24, "end": 680.4, "text": "It's free and it's basically give an annotation to the PDF."}, {"id": "s131", "start": 680.4, "end": 691.8, "text": "And yeah, all designers don't name their layers, so yeah, this is just like some random frame three, frame four, but the LLM will get it."}, {"id": "s132", "start": 691.8, "end": 700.28, "text": "And it's basically defining all this spacing, all this font size, and then all the colors and stuff."}, {"id": "s133", "start": 700.28, "end": 704.56, "text": "It's definitely going to help you develop a pixel-perfect product."}, {"id": "s134", "start": 704.56, "end": 715.12, "text": "And we also have just recently like today have uh photos which we have to create the thumbnail for its speaker, right?"}, {"id": "s135", "start": 715.12, "end": 718.32, "text": "And then we ask Devin like, \"Hey, who is this person?\""}, {"id": "s136", "start": 718.32, "end": 721.88, "text": "And yeah, it kind of did."}, {"id": "s137", "start": 721.88, "end": 729.56, "text": "Like I make a Tinder kind of you know, detection if this is the same person or not."}, {"id": "s138", "start": 729.56, "end": 731.4, "text": "And I think it's pretty accurate."}, {"id": "s139", "start": 731.4, "end": 732.32, "text": "It's Jason Liu."}, {"id": "s140", "start": 732.32, "end": 733.48, "text": "Yes."}, {"id": "s141", "start": 733.48, "end": 737.96, "text": "And then we can use this to like for context."}, {"id": "s142", "start": 737.96, "end": 747.68, "text": "Like before, when we create the thumbnail, we have to search all the codes that photographer have and search it one by one and maybe by time if possible."}, {"id": "s143", "start": 747.68, "end": 750.76, "text": "But now we can just like, \"Oh, this is Jason Liu."}, {"id": "s144", "start": 750.76, "end": 751.64, "text": "Download that photo.\""}, {"id": "s145", "start": 751.64, "end": 754.8, "text": "And then we can paste it into the thumbnail, right?"}, {"id": "s146", "start": 754.8, "end": 756.68, "text": "And it's pretty amazing."}, {"id": "s147", "start": 756.68, "end": 768.12, "text": "I mean, the world that we live in right now is actually like the state for me as a designer is already at the peak because what what else can you ask for, right?"}, {"id": "s148", "start": 768.12, "end": 773.96, "text": "I mean, we already have things to automate, we already have things to create the design fast."}, {"id": "s149", "start": 773.96, "end": 782.839, "text": "Basically, all you need is a problem because once you have a problem that worth solving, you can basically solve anything."}, {"id": "s150", "start": 782.92, "end": 786.24, "text": "And back to my talk, I got sidetracked right there."}, {"id": "s151", "start": 786.24, "end": 787.6, "text": "Yeah."}, {"id": "s152", "start": 787.6, "end": 788.88, "text": "And then yeah."}, {"id": "s153", "start": 788.88, "end": 791.68, "text": "And this is also the amazing thing that we test."}, {"id": "s154", "start": 791.68, "end": 796.76, "text": "So, as you know, we have like hundreds of sponsors, right?"}, {"id": "s155", "start": 796.76, "end": 798.16, "text": "Like 140 plus."}, {"id": "s156", "start": 798.16, "end": 804.24, "text": "And as you can see on the at the lobby, we have the banner with all the sponsors."}, {"id": "s157", "start": 804.24, "end": 813.4, "text": "And I basically tell Devin like \"Hi, could you compare could you check if there are any missing logos in this graphic?\""}, {"id": "s158", "start": 813.4, "end": 818.72, "text": "And the accuracy is 100% based on the test that I do."}, {"id": "s159", "start": 818.72, "end": 820.8, "text": "So, which is pretty well."}, {"id": "s160", "start": 820.8, "end": 828.6, "text": "And we use the same thing for the T-shirt that you got for your swag."}, {"id": "s161", "start": 828.6, "end": 834.36, "text": "And yeah, surprisingly, Devin knows how to like visualize things, right?"}, {"id": "s162", "start": 834.36, "end": 837.04, "text": "Like how to detect things visually."}, {"id": "s163", "start": 837.04, "end": 842.84, "text": "And that is very surprising because as a human, we can like give errors."}, {"id": "s164", "start": 842.84, "end": 845.88, "text": "Oh, turns out there's one small something that is missing."}, {"id": "s165", "start": 845.88, "end": 849.24, "text": "But with this kind of thing, we can like double-check."}, {"id": "s166", "start": 849.24, "end": 855.16, "text": "So, human plus AI, combine it, well, you got your own QA team."}, {"id": "s167", "start": 855.16, "end": 857.36, "text": "And then remove fiction."}, {"id": "s168", "start": 857.36, "end": 861.28, "text": "So, this is just uh the way of thinking."}, {"id": "s169", "start": 861.28, "end": 867.04, "text": "So, as a designer, we have to think as a user, not as a designer, all right?"}, {"id": "s170", "start": 867.04, "end": 869.52, "text": "Because every user has its needs."}, {"id": "s171", "start": 869.52, "end": 873.44, "text": "You can walk through the for example, the map plan here."}, {"id": "s172", "start": 873.44, "end": 886.32, "text": "So, basically, I'm imagining myself as an attendee to go to the registration, go to the see the wayfinding and the QR code and then all the stuff."}, {"id": "s173", "start": 886.32, "end": 895.76, "text": "Basically, everything needs to be connected so you guys don't get lost and knows how to find your rooms and other stuff."}, {"id": "s174", "start": 895.76, "end": 899.96, "text": "And the real job is handling exceptions."}, {"id": "s175", "start": 899.96, "end": 903.255, "text": "So, for example, oh, I have Yeah."}, {"id": "s176", "start": 903.255, "end": 903.56, "text": "[snorts]"}, {"id": "s177", "start": 903.56, "end": 909.2, "text": "For example, um there is a schedule update, all right?"}, {"id": "s178", "start": 909.2, "end": 913.88, "text": "And when we create this thing, it doesn't has an edit button."}, {"id": "s179", "start": 913.88, "end": 920.96, "text": "And then one morning, it just \"Hey, this schedule needs to be updated and we don't have those edit buttons.\""}, {"id": "s180", "start": 920.96, "end": 924.92, "text": "I could just ask Devin, \"Hey, can you add me an edit button?\""}, {"id": "s181", "start": 924.92, "end": 925.84, "text": "And then it did."}, {"id": "s182", "start": 925.84, "end": 934.24, "text": "So, we can change everything now and then ship it to PNG and replug it to the screen, which is pretty convenient, right?"}, {"id": "s183", "start": 934.24, "end": 936.6, "text": "And those exceptions, right?"}, {"id": "s184", "start": 936.6, "end": 941.8, "text": "It it's not possible before when we have to do it manually and stuff."}, {"id": "s185", "start": 941.8, "end": 944.2, "text": "But now it's just get easier."}, {"id": "s186", "start": 944.2, "end": 951.92, "text": "And so, the takeaway here is that to solve the scale problem, you have to actually think small."}, {"id": "s187", "start": 951.92, "end": 953.64, "text": "Think all the smallest thing possible."}, {"id": "s188", "start": 953.64, "end": 959.68, "text": "Think everything that can go wrong and will go wrong and then try to solve it before."}, {"id": "s189", "start": 959.68, "end": 965.32, "text": "And also, like yeah, right now basically you can automate everything."}, {"id": "s190", "start": 965.32, "end": 977.92, "text": "And at this moment, having a problem is actually going to benefit you because that's going to help you ship a better product, going to ship uh things that are"}, {"id": "s191", "start": 977.92, "end": 978.6, "text": "good."}, {"id": "s192", "start": 978.6, "end": 980.8, "text": "And yeah, I think that's all that I can share."}, {"id": "s193", "start": 980.8, "end": 985.68, "text": "Hope my talk has some benefits to you and yeah."}, {"id": "s194", "start": 985.68, "end": 986.12, "text": "That's all."}, {"id": "s195", "start": 986.12, "end": 987.751, "text": "Thanks, guys."}, {"id": "s196", "start": 987.751, "end": 989.751, "text": "[applause]"}, {"id": "s197", "start": 1006.091, "end": 1008.091, "text": "[music]"}]}, {"id": "Qr15lGAGKpo", "title": "Everyone Gets A Software Company — Benjamin Guo, Zo Computer", "channel": "AI Engineer", "duration": 909, "upload_date": null, "url": "https://www.youtube.com/watch?v=Qr15lGAGKpo", "api": "/api/talks/Qr15lGAGKpo.json", "summary_url": "/#Qr15lGAGKpo", "transcript": {"html": "/transcripts/Qr15lGAGKpo.html", "txt": "/transcripts/Qr15lGAGKpo.txt", "vtt": "/transcripts/Qr15lGAGKpo.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.84, "end": 13.44, "text": "Hello everybody."}, {"id": "s3", "start": 13.44, "end": 15.28, "text": "I'm Ben from Zoho Computer."}, {"id": "s4", "start": 15.28, "end": 18.28, "text": "I just posted on X from my Zoho."}, {"id": "s5", "start": 18.28, "end": 23.48, "text": "You know, I'll be giving away $100 in AI credits and I do all sorts of stuff with my Zoho."}, {"id": "s6", "start": 23.48, "end": 24.76, "text": "This is my computer."}, {"id": "s7", "start": 24.76, "end": 26.44, "text": "My Zoho is my computer."}, {"id": "s8", "start": 26.44, "end": 31.52, "text": "And before I get started, I made the site just now while I was waiting to get started presenting."}, {"id": "s9", "start": 31.52, "end": 35.48, "text": "This is a kind of overview of all the speakers in today's claw session."}, {"id": "s10", "start": 35.48, "end": 37.88, "text": "You can scan this QR code and check it out."}, {"id": "s11", "start": 37.88, "end": 49.84, "text": "I've got some useful links in here, but also I've got like some deep research on everybody presenting including their recent thoughts, links to their profiles and websites, blogs, etc. So, scan this."}, {"id": "s12", "start": 49.84, "end": 50.76, "text": "It's super useful."}, {"id": "s13", "start": 50.76, "end": 52.32, "text": "I just made it just now."}, {"id": "s14", "start": 52.32, "end": 54.6, "text": "This is my computer that you see right here, my Zoho computer."}, {"id": "s15", "start": 54.6, "end": 58.96, "text": "I'll be talking about it and this talk is about kind of Zoho and a lot of things."}, {"id": "s16", "start": 58.96, "end": 69.03999999999999, "text": "It's also about kind of personal agents, personal cloud agents in particular, which Zoho is one instance of and kind of the future and where I see all of this going."}, {"id": "s17", "start": 69.03999999999999, "end": 73.84, "text": "So, a little bit about me."}, {"id": "s18", "start": 73.84, "end": 75.08, "text": "I'm the co-founder of Zoho."}, {"id": "s19", "start": 75.08, "end": 76.24, "text": "My name is Ben."}, {"id": "s20", "start": 76.24, "end": 85.88, "text": "I started my career on the early Venmo team back in 2013 and um I met my co-founder Rob at Venmo and I left Venmo to work at Stripe quite early."}, {"id": "s21", "start": 85.88, "end": 90.72, "text": "I was one of the first I was the 80th engineer and my co-founder Rob, he went on to build Substack."}, {"id": "s22", "start": 90.72, "end": 92.56, "text": "He was the first engineer there."}, {"id": "s23", "start": 92.56, "end": 96.84, "text": "And a final fact about me as you can see is that I really love computers."}, {"id": "s24", "start": 96.84, "end": 99.03999999999999, "text": "I'm dressed up as a computer."}, {"id": "s25", "start": 99.03999999999999, "end": 103.47999999999999, "text": "And I like to start with this like fun fact about this finder icon."}, {"id": "s26", "start": 103.47999999999999, "end": 119.72, "text": "So, this icon was designed by Susan Kare, an early graphic designer at Apple Computer and many people don't know the story behind this icon, but it actually represents the human, this white face, and the machine, this blue face, and they're kind of like in happy"}, {"id": "s27", "start": 119.72, "end": 120.48, "text": "harmony."}, {"id": "s28", "start": 120.48, "end": 125.56, "text": "And I think that is what we should aspire to as we build AI tools for people."}, {"id": "s29", "start": 125.56, "end": 131.48, "text": "Like humans love tools, humans have always loved machines, and like when we feel at one with our machine, we feel like this."}, {"id": "s30", "start": 131.48, "end": 133.76, "text": "We feel happy."}, {"id": "s31", "start": 133.8, "end": 137.959, "text": "So, who like me misses the way that computers used to feel?"}, {"id": "s32", "start": 137.959, "end": 138.959, "text": "Raise your hand, right?"}, {"id": "s33", "start": 138.959, "end": 142.6, "text": "Like the early internet, like your first website, your first PC."}, {"id": "s34", "start": 142.6, "end": 142.8, "text": "Right?"}, {"id": "s35", "start": 142.8, "end": 146.2, "text": "It used to feel different, right?"}, {"id": "s36", "start": 146.2, "end": 150.76, "text": "Today, the internet and our computers feels more like this."}, {"id": "s37", "start": 150.76, "end": 158.76, "text": "We are swimming in the sea of applications and sites and services and it's not great."}, {"id": "s38", "start": 158.76, "end": 167.959, "text": "And on top of all of that, they're jacking up the prices on these things that we use, often because of AI features that we didn't ask for."}, {"id": "s39", "start": 168.04, "end": 177.68, "text": "And I think quite reasonably, consumers or I'll just call them regular people are upset or confused or scared of AI."}, {"id": "s40", "start": 177.68, "end": 187.48, "text": "So, Computer is based in Brooklyn, we're in Bushwick actually, kind of like the heart of hipsters in New York, and you know, there's a lot of this out there."}, {"id": "s41", "start": 187.48, "end": 192.4, "text": "I see a lot of this kind of vandalism over AI ads in the city."}, {"id": "s42", "start": 192.4, "end": 196.6, "text": "On top of all of that, this is what our industry looks like."}, {"id": "s43", "start": 197.84, "end": 203.07999999999998, "text": "But the deeper root of why this is bad is is a structural thing."}, {"id": "s44", "start": 203.07999999999998, "end": 206.04, "text": "It's what we call techno-feudalism."}, {"id": "s45", "start": 206.04, "end": 216.4, "text": "So, basically, feudalism was this like kind of shitty system back in the day, and though it no longer exists, it still is alive and well in our digital lives."}, {"id": "s46", "start": 216.4, "end": 227.16, "text": "So, we are still the peasants, we pay rent to the SaaS providers who pay rent to the cloud providers who pay rent to the kings who are, you know, like probably Nvidia these days."}, {"id": "s47", "start": 227.4, "end": 230.28, "text": "And because we are peasants, our lives are shitty."}, {"id": "s48", "start": 230.28, "end": 233.07999999999998, "text": "We are fragmented between all these different tools."}, {"id": "s49", "start": 233.07999999999998, "end": 237.92000000000002, "text": "There are various services that we use that lock us in and and shitify over time."}, {"id": "s50", "start": 237.92000000000002, "end": 242.52, "text": "Like that PM at that product that you use is not incentivized to make your life better."}, {"id": "s51", "start": 242.52, "end": 250.08, "text": "They're incentivized to improve their bottom line, to monetize your attention, to take your data, lock it in, and sell it back to you."}, {"id": "s52", "start": 250.08, "end": 254.6, "text": "And because you don't own anything, you are a peasant."}, {"id": "s53", "start": 255.0, "end": 262.76, "text": "So Zo, our mission has always been to solve this by giving people a real home on the internet."}, {"id": "s54", "start": 262.919, "end": 270.96, "text": "And we believe that most people in the world are kind of living in the Matrix, and we're trying to show people a better way."}, {"id": "s55", "start": 271.6, "end": 273.64, "text": "So Zo is alive and well."}, {"id": "s56", "start": 273.64, "end": 277.36, "text": "We've been out for about a year, and real people are using it."}, {"id": "s57", "start": 277.36, "end": 282.04, "text": "Real regular people like Charlotte, this LA-based private chef and life coach."}, {"id": "s58", "start": 282.04, "end": 286.36, "text": "She hosts her websites, she has multiple websites now, on Zo."}, {"id": "s59", "start": 286.36, "end": 292.6, "text": "Zo manages her invoices and her accounts and bookkeeping and her scheduling and her notes."}, {"id": "s60", "start": 292.6, "end": 294.4, "text": "And it's just like amazing system."}, {"id": "s61", "start": 294.4, "end": 299.08, "text": "It makes her feel like clear and calm and on top of the world, and it's fun."}, {"id": "s62", "start": 299.08, "end": 302.28, "text": "As you can see this text that she sent me."}, {"id": "s63", "start": 302.64, "end": 303.72, "text": "So what is Zo?"}, {"id": "s64", "start": 303.72, "end": 306.08, "text": "Zo is a personal cloud."}, {"id": "s65", "start": 306.08, "end": 310.0, "text": "We've never really had a personal cloud before, but it's quite simple."}, {"id": "s66", "start": 310.0, "end": 311.88, "text": "You have your own home in the cloud."}, {"id": "s67", "start": 311.88, "end": 313.919, "text": "You're not using other cloud services."}, {"id": "s68", "start": 313.919, "end": 315.28, "text": "You have your own thing."}, {"id": "s69", "start": 315.28, "end": 316.64, "text": "You put your stuff in it."}, {"id": "s70", "start": 316.64, "end": 317.96, "text": "You put your AI in it."}, {"id": "s71", "start": 317.96, "end": 322.04, "text": "And because it is a place in the cloud, you can host stuff in it."}, {"id": "s72", "start": 322.04, "end": 327.88, "text": "You can host services like websites or APIs, and they're all yours."}, {"id": "s73", "start": 329.2, "end": 335.68, "text": "And I think for people in this room, if you're like interested in clouds and personal agents, like your personal cloud might look something more like this."}, {"id": "s74", "start": 335.68, "end": 338.52, "text": "You might have like a suite of local devices."}, {"id": "s75", "start": 338.52, "end": 345.8, "text": "Um and for me, I have like this like Zo computer, this like cloud computer as well, which has my Zo agent on it."}, {"id": "s76", "start": 345.8, "end": 349.0, "text": "It also has a Hermes on it, and it has my services."}, {"id": "s77", "start": 349.0, "end": 359.12, "text": "I have many websites and APIs and things that I've built, all hosted in the same place, and it can also talk to my laptop or my Mac mini, or I can use it on my phone."}, {"id": "s78", "start": 359.12, "end": 363.88, "text": "And that, collectively, is my personal cloud."}, {"id": "s79", "start": 364.84, "end": 368.48, "text": "So, Zoe is a personal server with AI built in."}, {"id": "s80", "start": 368.48, "end": 370.72, "text": "It's It's quite simple."}, {"id": "s81", "start": 370.72, "end": 373.92, "text": "And it hearkens back to a simpler time."}, {"id": "s82", "start": 373.92, "end": 377.8, "text": "So, back in the day, this is actually how we built and hosted websites."}, {"id": "s83", "start": 377.8, "end": 382.76, "text": "We just FTP'd our files onto a server, and that updated our website."}, {"id": "s84", "start": 382.76, "end": 384.2, "text": "You were just shipping to prod."}, {"id": "s85", "start": 384.2, "end": 386.8, "text": "You're like always doing it live."}, {"id": "s86", "start": 386.8, "end": 389.919, "text": "And that's actually, I think, how most people should build."}, {"id": "s87", "start": 389.919, "end": 395.6, "text": "I don't think it's necessary for a regular person like Charlotte to think about deployment."}, {"id": "s88", "start": 396.56, "end": 402.44, "text": "Unfortunately, for many of us in this room, this is probably what your life looks like, actually."}, {"id": "s89", "start": 402.44, "end": 410.96, "text": "You're kind of just navigating between these different AIs and devices and SaaS services, and it's very confusing."}, {"id": "s90", "start": 411.15999999999997, "end": 413.4, "text": "Zoe is meant to be a simpler way."}, {"id": "s91", "start": 413.4, "end": 422.48, "text": "It's one place for all of your stuff and your AI and the stuff you host, all of your personal stuff in the cloud."}, {"id": "s92", "start": 423.4, "end": 425.16, "text": "Here's another case study that I'd like to talk about."}, {"id": "s93", "start": 425.16, "end": 426.0, "text": "This is Anthia."}, {"id": "s94", "start": 426.0, "end": 427.84, "text": "She was one of our early users."}, {"id": "s95", "start": 427.84, "end": 428.96, "text": "She's totally non-technical."}, {"id": "s96", "start": 428.96, "end": 434.72, "text": "She's a free-diving instructor, and she's already on track to make $100,000 on Zoe."}, {"id": "s97", "start": 434.72, "end": 445.76, "text": "She used to use all of these different SaaS services to run her business and her life, like Squarespace, like Calendly, etc. And now she's replaced all of that with Zoe."}, {"id": "s98", "start": 445.76, "end": 448.08, "text": "She's canceled all of those SaaS subscriptions."}, {"id": "s99", "start": 448.08, "end": 451.32, "text": "She is no longer a peasant."}, {"id": "s100", "start": 451.56, "end": 462.32, "text": "Anthia went from this, kind of being very confused and having her data in all of these different SaaS silos, and not really being able to connect them very easily,"}, {"id": "s101", "start": 462.32, "end": 463.36, "text": "to this."}, {"id": "s102", "start": 463.36, "end": 468.72, "text": "So, Anthea not only hosts her retreat website on Zo on a custom domain."}, {"id": "s103", "start": 468.72, "end": 470.32, "text": "She has many different websites now."}, {"id": "s104", "start": 470.32, "end": 472.4, "text": "She has her personal workspace that looks like this."}, {"id": "s105", "start": 472.4, "end": 486.28, "text": "She's really into fairies and like drawing and mushrooms and she's like expressing her whole self and her creativity online in this new way that we kind of really haven't had as regular people for a long time since like the '90s."}, {"id": "s106", "start": 486.68, "end": 491.32, "text": "And under the hood, like all of those sites are just the tip of the iceberg."}, {"id": "s107", "start": 491.32, "end": 497.12, "text": "So, when Anthea gets somebody who's interested in a retreat, Zo texts her with their number."}, {"id": "s108", "start": 497.12, "end": 501.32, "text": "Anthea now immediately calls them at that moment of intent to buy."}, {"id": "s109", "start": 501.32, "end": 503.52, "text": "She texts her Zo, \"Give me a payment link.\""}, {"id": "s110", "start": 503.52, "end": 505.56, "text": "And she closes the deal right then and there."}, {"id": "s111", "start": 505.56, "end": 510.04, "text": "And that is how she is actually booking much more revenue than before with these retreats."}, {"id": "s112", "start": 510.04, "end": 515.0, "text": "Like her retreats are now like actually kind of hard to book because there's too much demand."}, {"id": "s113", "start": 515.0, "end": 515.68, "text": "And that's amazing."}, {"id": "s114", "start": 515.68, "end": 518.64, "text": "And under the hood, she has a database for all of her retreats."}, {"id": "s115", "start": 518.64, "end": 521.24, "text": "She doesn't really know what a database is, but she has one."}, {"id": "s116", "start": 521.24, "end": 524.8389999999999, "text": "She has all of her notes, all of her accounting, and it's all in one place."}, {"id": "s117", "start": 524.8389999999999, "end": 530.52, "text": "If she has like some images from a retreat and she wants to put those on her website, she just tells her Zo to do it and it's like right there."}, {"id": "s118", "start": 530.52, "end": 534.64, "text": "She can like host files directly from her personal server."}, {"id": "s119", "start": 534.64, "end": 538.08, "text": "And she is self-hosting everything."}, {"id": "s120", "start": 538.16, "end": 543.8, "text": "So, Zo is made to be simple enough for anyone, for people like Anthea, for my parents, for other people's parents."}, {"id": "s121", "start": 543.8, "end": 551.0, "text": "People are always telling me on like LinkedIn or X that like they sign up their parent for their parents to Zo and their parents are like five coding up a storm."}, {"id": "s122", "start": 551.0, "end": 551.64, "text": "It was awesome to see."}, {"id": "s123", "start": 551.64, "end": 554.0, "text": "I just got this message on LinkedIn the other day."}, {"id": "s124", "start": 554.0, "end": 558.68, "text": "Our caterer uses Zo um to kind of manage his staff at his restaurant."}, {"id": "s125", "start": 558.68, "end": 560.72, "text": "Our recruiter uses Zo as well."}, {"id": "s126", "start": 560.72, "end": 566.8389999999999, "text": "He's really into it and he's like kind of building a whole He's like rebuilding his his stack for his recruiting agency on Zo."}, {"id": "s127", "start": 566.8389999999999, "end": 569.48, "text": "Our marketing agency has become Zo-pilled."}, {"id": "s128", "start": 569.48, "end": 571.48, "text": "So, it's made for everybody."}, {"id": "s129", "start": 571.48, "end": 575.0, "text": "But it's also powerful enough for the audience in this room."}, {"id": "s130", "start": 575.0, "end": 577.4, "text": "It can be the home for your Open Claw or your Hermes."}, {"id": "s131", "start": 577.4, "end": 583.96, "text": "You can have a really nicely set up server to host your personal agent in if you use one of those tools."}, {"id": "s132", "start": 583.96, "end": 588.84, "text": "You can bring your codex or Gemini or etc. subscriptions and you can build and host anything."}, {"id": "s133", "start": 588.84, "end": 597.92, "text": "You have like root access to your own server to this very nicely set up Linux VM where like the networking is also like very well set up and you don't really have to worry about any of it."}, {"id": "s134", "start": 597.92, "end": 602.44, "text": "You can SSH in and you can control your Zo via API or MCP."}, {"id": "s135", "start": 602.44, "end": 605.04, "text": "So, very flexible."}, {"id": "s136", "start": 605.04, "end": 610.28, "text": "So, scan this QR code if you haven't yet uh to get $100 in AI credits."}, {"id": "s137", "start": 610.28, "end": 611.84, "text": "Um just try Zo."}, {"id": "s138", "start": 611.84, "end": 613.48, "text": "I I think you'll like it."}, {"id": "s139", "start": 613.48, "end": 618.84, "text": "And I'm going to do a little demo and then I'll have a little bit more to talk about after that."}, {"id": "s140", "start": 618.84, "end": 619.637, "text": "Um"}, {"id": "s141", "start": 619.637, "end": 620.08, "text": "[snorts]"}, {"id": "s142", "start": 620.08, "end": 622.24, "text": "So, really quick demo of Zo."}, {"id": "s143", "start": 622.24, "end": 626.04, "text": "You already saw it in the beginning, but Zo is this like nice kind of cloud workspace."}, {"id": "s144", "start": 626.04, "end": 627.32, "text": "I made this website just now."}, {"id": "s145", "start": 627.32, "end": 629.8, "text": "I make all sorts of websites on the fly."}, {"id": "s146", "start": 629.8, "end": 632.96, "text": "Um you can chat with really any model as I mentioned."}, {"id": "s147", "start": 632.96, "end": 634.0, "text": "You can bring your own API key."}, {"id": "s148", "start": 634.0, "end": 636.012, "text": "You can even talk to Claude code in here."}, {"id": "s149", "start": 636.012, "end": 636.2, "text": "[snorts]"}, {"id": "s150", "start": 636.2, "end": 639.88, "text": "You've got this nice file system, built-in cloud storage because it's your server."}, {"id": "s151", "start": 639.88, "end": 641.88, "text": "You can just like use it as a Dropbox."}, {"id": "s152", "start": 641.88, "end": 647.12, "text": "Um and you know, you can obviously like work agentically in the chat with any of your files."}, {"id": "s153", "start": 647.12, "end": 648.4, "text": "You've got automations."}, {"id": "s154", "start": 648.4, "end": 651.732, "text": "So, you can kind of run tasks on a schedule with AI."}, {"id": "s155", "start": 651.732, "end": 652.32, "text": "[snorts]"}, {"id": "s156", "start": 652.32, "end": 654.68, "text": "You've got tons of built-in integrations."}, {"id": "s157", "start": 654.68, "end": 656.8, "text": "You don't have to set any of this up."}, {"id": "s158", "start": 656.8, "end": 656.972, "text": "We have"}, {"id": "s159", "start": 656.972, "end": 657.0, "text": "[snorts]"}, {"id": "s160", "start": 657.0, "end": 659.4, "text": "lots of skills, a large skill library."}, {"id": "s161", "start": 659.4, "end": 665.68, "text": "There's a built-in browser, so you can log in to sites and let your Zo like buy things for you or do whatever."}, {"id": "s162", "start": 665.68, "end": 668.4, "text": "Actually, I always text my Zo these days to buy stuff on Amazon."}, {"id": "s163", "start": 668.4, "end": 670.12, "text": "It's like really dangerous for impulse purchasing."}, {"id": "s164", "start": 670.12, "end": 672.037, "text": "I like see something I'm like, let's buy it."}, {"id": "s165", "start": 672.037, "end": 672.16, "text": "[snorts]"}, {"id": "s166", "start": 672.16, "end": 675.04, "text": "Um and as I mentioned, you can host stuff."}, {"id": "s167", "start": 675.04, "end": 680.08, "text": "So, you can really host anything, any arbitrary service, HTTP or TCP."}, {"id": "s168", "start": 680.08, "end": 682.8, "text": "And we also give you a really nice built-in personal website."}, {"id": "s169", "start": 682.8, "end": 689.36, "text": "This is my Zo space and this is all set up nicely and it's got like, you know, nice kind of like live coding features."}, {"id": "s170", "start": 689.36, "end": 691.16, "text": "Um and you just chat with it to edit it."}, {"id": "s171", "start": 691.16, "end": 694.16, "text": "And I've built all sorts of cool things inside of here."}, {"id": "s172", "start": 694.16, "end": 697.76, "text": "Um this for example is like my Calendly replacement."}, {"id": "s173", "start": 697.76, "end": 701.28, "text": "People can book time with me and it has just like this custom setup that I like."}, {"id": "s174", "start": 701.28, "end": 703.92, "text": "Um and my Zo can like review the people that are interested."}, {"id": "s175", "start": 703.92, "end": 706.44, "text": "I don't want anybody like booking time with me directly."}, {"id": "s176", "start": 706.44, "end": 713.28, "text": "Um and so that's kind of like what Zo is and I want to conclude by just talking a little bit about the future."}, {"id": "s177", "start": 713.28, "end": 721.818, "text": "So the reason we're building Zo is to build a future and better internet, one that looks more like this where everybody,"}, {"id": "s178", "start": 721.818, "end": 722.68, "text": "[snorts]"}, {"id": "s179", "start": 722.68, "end": 726.24, "text": "every individual has a real home, a presence on the internet."}, {"id": "s180", "start": 726.24, "end": 726.403, "text": "And"}, {"id": "s181", "start": 726.403, "end": 726.92, "text": "[snorts]"}, {"id": "s182", "start": 726.92, "end": 732.52, "text": "companies already have this, but like we should interact directly with other people on the internet without middlemen."}, {"id": "s183", "start": 732.52, "end": 736.08, "text": "And we should also interact with like the various companies and their AIs."}, {"id": "s184", "start": 736.08, "end": 739.2, "text": "Um and it should be like more direct."}, {"id": "s185", "start": 740.44, "end": 751.52, "text": "Another way to look at this is that like in the future we will probably just be interacting mostly with agents and the agents will kind of interact with the cloud, like these like software 1.0"}, {"id": "s186", "start": 751.52, "end": 755.8, "text": "things like websites and APIs."}, {"id": "s187", "start": 755.8, "end": 755.878, "text": "But"}, {"id": "s188", "start": 755.878, "end": 755.88, "text": "[snorts]"}, {"id": "s189", "start": 755.88, "end": 762.76, "text": "if you dig a little deeper into here, what's probably actually going to happen is that most of these agents that we interact with will also be in the cloud."}, {"id": "s190", "start": 762.76, "end": 765.24, "text": "Some of them will be local, but many of them will be in the cloud."}, {"id": "s191", "start": 765.24, "end": 771.598, "text": "And when those agents are in the cloud, the question again is like whose cloud is it?"}, {"id": "s192", "start": 771.598, "end": 772.08, "text": "[snorts]"}, {"id": "s193", "start": 772.08, "end": 780.24, "text": "So Claud tag is newly out and and Claud tag is actually, if you think about it, a cloud agent."}, {"id": "s194", "start": 780.24, "end": 782.4, "text": "It's this like cloud Claud."}, {"id": "s195", "start": 782.4, "end": 786.009, "text": "It's like a company level Claud that has like all the company's context and"}, {"id": "s196", "start": 786.009, "end": 786.08, "text": "[snorts]"}, {"id": "s197", "start": 786.08, "end": 787.64, "text": "anybody can interact with it."}, {"id": "s198", "start": 787.64, "end": 790.76, "text": "And you know, it's it's an interesting and very like ergonomic model."}, {"id": "s199", "start": 790.76, "end": 794.524, "text": "Town and Victor are also kind of similar instances of this."}, {"id": "s200", "start": 794.524, "end": 795.64, "text": "[snorts]"}, {"id": "s201", "start": 795.64, "end": 799.64, "text": "But the problem with Claud tag is this."}, {"id": "s202", "start": 799.64, "end": 800.6, "text": "Whose cloud is it?"}, {"id": "s203", "start": 800.6, "end": 801.64, "text": "Whose Claud is it?"}, {"id": "s204", "start": 801.64, "end": 803.76, "text": "It's not really your company's Claud."}, {"id": "s205", "start": 803.76, "end": 810.76, "text": "And as you kind of improve your Claud tag setup, like what really improves is Anthropic, right?"}, {"id": "s206", "start": 810.76, "end": 815.04, "text": "Like the the arrow is pointing the wrong way."}, {"id": "s207", "start": 815.48, "end": 815.5, "text": "And"}, {"id": "s208", "start": 815.5, "end": 815.64, "text": "[snorts]"}, {"id": "s209", "start": 815.64, "end": 818.64, "text": "this is intelligence feudalism."}, {"id": "s210", "start": 818.64, "end": 822.64, "text": "The intelligence now is bubbling up the wrong way."}, {"id": "s211", "start": 822.64, "end": 829.239, "text": "And you are still a peasant again, or your company is still kind of a peasant in a way."}, {"id": "s212", "start": 829.239, "end": 830.08, "text": "[snorts]"}, {"id": "s213", "start": 830.08, "end": 839.064, "text": "And at Zoe believe really strongly in changing the way that things work and giving people and companies more"}, {"id": "s214", "start": 839.064, "end": 839.08, "text": "[snorts]"}, {"id": "s215", "start": 839.08, "end": 842.92, "text": "ownership over their cloud and over their intelligence."}, {"id": "s216", "start": 842.92, "end": 845.62, "text": "So, we believe that the future should actually look more"}, {"id": "s217", "start": 845.62, "end": 845.92, "text": "[snorts]"}, {"id": "s218", "start": 845.92, "end": 847.6, "text": "like this."}, {"id": "s219", "start": 847.6, "end": 858.64, "text": "Anybody, a company or an individual should be able to publish agents and own them and have end users and like have the end usage of their agent improve, like self-improve"}, {"id": "s220", "start": 858.64, "end": 860.72, "text": "their own kind of published agent."}, {"id": "s221", "start": 860.72, "end": 863.0, "text": "And that is the future that we're building."}, {"id": "s222", "start": 863.0, "end": 863.299, "text": "We have"}, {"id": "s223", "start": 863.299, "end": 863.4, "text": "[snorts]"}, {"id": "s224", "start": 863.4, "end": 864.96, "text": "a kind of beta version of this."}, {"id": "s225", "start": 864.96, "end": 877.8, "text": "So, um I'm going to go back to to this Zoe space uh and scan this QR code finally if you want to talk to me, get AI credits, sign up for the beta of this kind of new agent publishing"}, {"id": "s226", "start": 877.8, "end": 879.02, "text": "platform."}, {"id": "s227", "start": 879.02, "end": 879.2, "text": "[snorts]"}, {"id": "s228", "start": 879.2, "end": 884.76, "text": "And uh yeah, also you can check out all of the speakers that are presenting on this Zoe space page."}, {"id": "s229", "start": 884.76, "end": 887.08, "text": "Um I'm Ben from Zoe computer."}, {"id": "s230", "start": 887.08, "end": 888.845, "text": "Thank you."}, {"id": "s231", "start": 888.845, "end": 890.845, "text": "[applause]"}]}, {"id": "QrMcNe2jjt8", "title": "The End of the Static Screen: Architecting Intent-Driven UX — Gus Iwanaga, commercetools", "channel": "AI Engineer", "duration": 1399, "upload_date": null, "url": "https://www.youtube.com/watch?v=QrMcNe2jjt8", "api": "/api/talks/QrMcNe2jjt8.json", "summary_url": "/#QrMcNe2jjt8", "transcript": {"html": "/transcripts/QrMcNe2jjt8.html", "txt": "/transcripts/QrMcNe2jjt8.txt", "vtt": "/transcripts/QrMcNe2jjt8.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.56, "end": 14.52, "text": "How's it going?"}, {"id": "s3", "start": 14.52, "end": 18.12, "text": "The end of uh the end of the conference, how's everybody feeling?"}, {"id": "s4", "start": 18.12, "end": 21.16, "text": "Tired, drinking from the fire hose as well?"}, {"id": "s5", "start": 21.16, "end": 31.52, "text": "Are you guys a little bit tired of hearing loop engineering, harness engineering, software factory, evolves, pre-training, post-training data, and whatnot?"}, {"id": "s6", "start": 31.52, "end": 34.68, "text": "Uh but anyways, those topics were more than valid, right?"}, {"id": "s7", "start": 34.68, "end": 35.96, "text": "Uh hi."}, {"id": "s8", "start": 35.96, "end": 38.68, "text": "Some uh really uh common faces here."}, {"id": "s9", "start": 38.68, "end": 43.68, "text": "By the way, I'm super excited to be here and talk to you guys about this title."}, {"id": "s10", "start": 43.68, "end": 52.76, "text": "And And I'm sorry, when I was when I submitted the application, I was thinking of potentially a catchy title, but I don't like this at all."}, {"id": "s11", "start": 52.76, "end": 56.64, "text": "So, with all due respect to the organizers, I'll have to make a change."}, {"id": "s12", "start": 56.64, "end": 68.32, "text": "Uh and the actual topic that I want to focus here today is lessons learned uh from a team that is building proper generative uh UX and UI."}, {"id": "s13", "start": 68.32, "end": 73.24, "text": "And I was going to uh touch on agentic orchestration, but come on."}, {"id": "s14", "start": 73.24, "end": 77.16, "text": "Uh over the last 3 days, this is what we heard all the time."}, {"id": "s15", "start": 77.16, "end": 89.68, "text": "So, I'd rather focus on what I didn't hear enough about here in the conference, and hopefully you walk away, if not with something very tangible, but with a new mental model that can spark meaningful discussions down the road."}, {"id": "s16", "start": 89.68, "end": 91.08, "text": "Sound good?"}, {"id": "s17", "start": 91.08, "end": 92.16, "text": "All right."}, {"id": "s18", "start": 92.16, "end": 93.32, "text": "Very good."}, {"id": "s19", "start": 93.32, "end": 94.47999999999999, "text": "So, hi everybody."}, {"id": "s20", "start": 94.47999999999999, "end": 95.2, "text": "Uh I'm Gus."}, {"id": "s21", "start": 95.2, "end": 97.44, "text": "I'm a general manager at commercetools."}, {"id": "s22", "start": 97.44, "end": 101.03999999999999, "text": "I lead product, UX, and engineering for zero-to-one products."}, {"id": "s23", "start": 101.03999999999999, "end": 106.56, "text": "I tell people I'm in a very privileged position because we get to build really cool stuff."}, {"id": "s24", "start": 106.56, "end": 109.96000000000001, "text": "So, we cook really interesting stuff at commercetools."}, {"id": "s25", "start": 109.96000000000001, "end": 110.6, "text": "Fantastic."}, {"id": "s26", "start": 110.6, "end": 114.8, "text": "And this is what you guys can expect uh at least during the presentation."}, {"id": "s27", "start": 114.8, "end": 125.8, "text": "Uh I'd like to make sure that we're on the same page with respect to the problem uh the problem space uh followed by a quick demo of the product because I'm not sure if you guys agree, an image speaks more than 1,000 words."}, {"id": "s28", "start": 125.8, "end": 130.08, "text": "So, it would just uh make it more tangible for uh everybody here."}, {"id": "s29", "start": 130.08, "end": 137.12, "text": "Followed by a rapid discussion on the emergence of UI protocols, and I'm not sure if you guys joined maybe some of the talks here."}, {"id": "s30", "start": 137.12, "end": 142.52, "text": "Even the founder of some of these protocols were here uh this week, and that was really cool."}, {"id": "s31", "start": 142.52, "end": 148.36, "text": "Followed by and last but not least, the challenges that uh my team uh and I faced and we still face."}, {"id": "s32", "start": 148.36, "end": 153.24, "text": "And some of the mitigation tactics uh that we put in place to overcome some of these challenges."}, {"id": "s33", "start": 153.24, "end": 156.0, "text": "So, with that let's continue."}, {"id": "s34", "start": 156.0, "end": 157.8, "text": "The problem space."}, {"id": "s35", "start": 157.8, "end": 166.68, "text": "This is This is more like a a a statement um and we're still adapt to the software that we ship, not the other way around."}, {"id": "s36", "start": 166.68, "end": 167.07999999999998, "text": "Right?"}, {"id": "s37", "start": 167.07999999999998, "end": 180.48, "text": "And then uh although you could argue when GPT came out, this was November uh 2022, we had a really good glimpse of uh real personalization, but everything else uh remained static."}, {"id": "s38", "start": 180.48, "end": 188.239, "text": "And even with AI, we keep shipping a lot of stuff much faster, but to a significant extent, it is still static."}, {"id": "s39", "start": 188.239, "end": 191.959, "text": "And my question is, why?"}, {"id": "s40", "start": 191.959, "end": 198.28, "text": "So, for the uh over the last 40 years, uh we kept shipping a static experiences."}, {"id": "s41", "start": 198.28, "end": 215.2, "text": "And if I put it myself in the shoes of uh some of uh my customers, they need several SaaS applications for uh the day-to-day work, and each with its own mental model and its own way to get anything done."}, {"id": "s42", "start": 215.2, "end": 220.68, "text": "And over time, it just kept getting worse, just accruing uh debt."}, {"id": "s43", "start": 220.68, "end": 227.519, "text": "The cognitive load that we wanted to remove and that we wanted to transfer to the machine, uh it's on us."}, {"id": "s44", "start": 227.519, "end": 232.16, "text": "And now with AI, things can be different."}, {"id": "s45", "start": 232.16, "end": 235.88, "text": "I don't know if you guys agree, but this is uh what we what we think."}, {"id": "s46", "start": 235.88, "end": 237.88, "text": "And I do have a couple of examples."}, {"id": "s47", "start": 237.88, "end": 243.04, "text": "I'm not going to say out loud the name of these apps, but let's take a look."}, {"id": "s48", "start": 243.04, "end": 243.88, "text": "Here."}, {"id": "s49", "start": 243.88, "end": 245.2, "text": "First one."}, {"id": "s50", "start": 245.2, "end": 247.04, "text": "You know, that icon is very well known."}, {"id": "s51", "start": 247.04, "end": 251.2, "text": "This is probably the most famous CRM of all times."}, {"id": "s52", "start": 251.2, "end": 255.08, "text": "But when I look at this screen, there's a lot going on."}, {"id": "s53", "start": 255.08, "end": 256.56, "text": "I don't even know where to start."}, {"id": "s54", "start": 256.56, "end": 257.16, "text": "Right?"}, {"id": "s55", "start": 257.16, "end": 264.44, "text": "Not only the information overload, how many features how many teams do you think are somewhat involved just to ship this?"}, {"id": "s56", "start": 264.44, "end": 265.96, "text": "Many, probably."}, {"id": "s57", "start": 265.96, "end": 266.28, "text": "Right?"}, {"id": "s58", "start": 266.28, "end": 267.68, "text": "And this is just one."}, {"id": "s59", "start": 267.68, "end": 268.4, "text": "Let's have a look."}, {"id": "s60", "start": 268.4, "end": 270.72, "text": "I have a couple of other examples."}, {"id": "s61", "start": 270.72, "end": 273.12, "text": "So, this here."}, {"id": "s62", "start": 273.12, "end": 274.56, "text": "Look at that."}, {"id": "s63", "start": 274.56, "end": 276.52, "text": "Oh my god, this is a fancy table."}, {"id": "s64", "start": 276.52, "end": 278.0, "text": "I don't even know where to start."}, {"id": "s65", "start": 278.0, "end": 280.8, "text": "But anyways, one more."}, {"id": "s66", "start": 280.8, "end": 283.6, "text": "Does everybody know this one here?"}, {"id": "s67", "start": 283.6, "end": 284.64, "text": "Beautiful."}, {"id": "s68", "start": 284.64, "end": 286.2, "text": "Beautiful UI."}, {"id": "s69", "start": 286.2, "end": 286.48, "text": "Right?"}, {"id": "s70", "start": 286.48, "end": 292.88, "text": "It's a fantastic, super intuitive, and something else just to highlight."}, {"id": "s71", "start": 292.88, "end": 298.36, "text": "Do you guys know how much time these companies need to invest in onboarding people?"}, {"id": "s72", "start": 298.36, "end": 300.52, "text": "So, that was the the trade-off."}, {"id": "s73", "start": 300.52, "end": 300.8, "text": "Right?"}, {"id": "s74", "start": 300.8, "end": 306.68, "text": "So, you got to allocate a lot of time for a lot of people just to onboard newcomers."}, {"id": "s75", "start": 306.68, "end": 312.32, "text": "As a result of this complexity that has been introduced over time."}, {"id": "s76", "start": 312.32, "end": 316.04, "text": "So, this is just at least the hardcore evidence."}, {"id": "s77", "start": 316.04, "end": 320.12, "text": "So, different apps, different logic every single time."}, {"id": "s78", "start": 320.12, "end": 322.2, "text": "And then more apps are coming out."}, {"id": "s79", "start": 322.2, "end": 328.8, "text": "So, imagine just put yourself in the shoes of average user, and then oh, now I have five five apps."}, {"id": "s80", "start": 328.8, "end": 333.4, "text": "And then every single one I need to learn how to navigate, how to browse, and so on and so forth."}, {"id": "s81", "start": 333.4, "end": 337.04, "text": "And then this has been the history up until now."}, {"id": "s82", "start": 337.04, "end": 341.6, "text": "But then this was August last year, I sat down with my boss."}, {"id": "s83", "start": 341.6, "end": 345.04, "text": "It happens to be the founder of the company, so big shout out to my boss."}, {"id": "s84", "start": 345.04, "end": 351.96, "text": "And then we asked this uh question because at Commerce Tools, we are an API first company, 300 plus still counting."}, {"id": "s85", "start": 351.96, "end": 363.08, "text": "And we ask this posing question, through the lens of artificial intelligence, what are the foundational shifts that could be made if we could change drastically the way that we interact with software?"}, {"id": "s86", "start": 363.08, "end": 365.68, "text": "Not in a uh static uh fashion."}, {"id": "s87", "start": 365.68, "end": 370.48, "text": "And the answer to that question led to the product that I'm going to demo right now."}, {"id": "s88", "start": 370.48, "end": 371.6, "text": "Let's go."}, {"id": "s89", "start": 371.6, "end": 372.8, "text": "How about quick demo?"}, {"id": "s90", "start": 372.8, "end": 374.28, "text": "Guys like the idea?"}, {"id": "s91", "start": 374.28, "end": 375.28, "text": "Give me a thumbs up."}, {"id": "s92", "start": 375.28, "end": 375.52, "text": "Bye."}, {"id": "s93", "start": 375.52, "end": 376.6, "text": "I know everybody's tired."}, {"id": "s94", "start": 376.6, "end": 377.32, "text": "Let's go."}, {"id": "s95", "start": 377.32, "end": 378.44, "text": "Yeah."}, {"id": "s96", "start": 378.44, "end": 379.44, "text": "All right."}, {"id": "s97", "start": 379.44, "end": 380.44, "text": "Cool."}, {"id": "s98", "start": 380.44, "end": 381.32, "text": "Look at this."}, {"id": "s99", "start": 381.32, "end": 382.44, "text": "I know, I'm going to zoom in."}, {"id": "s100", "start": 382.44, "end": 383.2, "text": "No worries."}, {"id": "s101", "start": 383.2, "end": 385.68, "text": "So, I have this query here."}, {"id": "s102", "start": 385.68, "end": 388.88, "text": "Create a sales report for Q1."}, {"id": "s103", "start": 388.88, "end": 401.56, "text": "And the UX side of me, when I look at uh what was generated, and by the way, everything here on the right side has been auto-generated, guided by us, but this is AI, right?"}, {"id": "s104", "start": 401.56, "end": 412.72, "text": "Deciding on the placement, on the information architecture, deciding which uh components had to be actually retrieved from the catalog, but I don't like it at all."}, {"id": "s105", "start": 412.72, "end": 412.96, "text": "Right?"}, {"id": "s106", "start": 412.96, "end": 423.8, "text": "It's a Even if you don't know a lot uh about UX, just let's, you know, I have at least four different variations because those were four different terms for the same query."}, {"id": "s107", "start": 423.8, "end": 425.12, "text": "Let's check it out."}, {"id": "s108", "start": 425.12, "end": 429.76, "text": "First one here, it was Q1 uh Urban Thread, whatever that is."}, {"id": "s109", "start": 429.76, "end": 432.68, "text": "Uh Q1, I see all of these KPI cards."}, {"id": "s110", "start": 432.68, "end": 434.48, "text": "There's a lot going on here."}, {"id": "s111", "start": 434.48, "end": 438.96, "text": "And then my intuition tells me, man, this doesn't add up."}, {"id": "s112", "start": 438.96, "end": 439.76, "text": "Okay."}, {"id": "s113", "start": 439.76, "end": 442.56, "text": "Second one, it's not Q1 anymore."}, {"id": "s114", "start": 442.56, "end": 444.48, "text": "Now this is January and March."}, {"id": "s115", "start": 444.48, "end": 446.28, "text": "There's no consistency."}, {"id": "s116", "start": 446.28, "end": 447.16, "text": "Does that help?"}, {"id": "s117", "start": 447.16, "end": 449.16, "text": "Yes or no?"}, {"id": "s118", "start": 449.16, "end": 449.88, "text": "No, right?"}, {"id": "s119", "start": 449.88, "end": 452.52, "text": "This is This is You only create confusion."}, {"id": "s120", "start": 452.52, "end": 462.12, "text": "If this is a heavy personalized experience for the user, imagine if every single time you need to prompt, and then uh at least the model will output something different."}, {"id": "s121", "start": 462.12, "end": 464.96, "text": "This is not good, and this is just the second turn."}, {"id": "s122", "start": 464.96, "end": 467.64, "text": "Let's have a look at the third one."}, {"id": "s123", "start": 467.64, "end": 471.68, "text": "Oh my god, now there is even more stuff here on the right side."}, {"id": "s124", "start": 471.68, "end": 482.96, "text": "But so, this is I have this component, the KPI cards, a bunch of text, a bunch of charts, and then this this was the beginning of a journey."}, {"id": "s125", "start": 482.96, "end": 484.2, "text": "One more?"}, {"id": "s126", "start": 484.2, "end": 484.76, "text": "Yes."}, {"id": "s127", "start": 484.76, "end": 491.0, "text": "Okay, now it's still Q1, but still for me this still it's confusing."}, {"id": "s128", "start": 491.0, "end": 498.84, "text": "And because this has been a very experimental journey, at least okay, let's let's move on here."}, {"id": "s129", "start": 498.84, "end": 508.16, "text": "My feedback to the team and to myself was no, no, and no. There's no way that I would ship this to to prod whatsoever, right?"}, {"id": "s130", "start": 508.16, "end": 512.68, "text": "And then I have my colleagues here just to confirm what I just said."}, {"id": "s131", "start": 512.68, "end": 517.719, "text": "But then things evolved, and I'll like to demo the current state of the product."}, {"id": "s132", "start": 517.719, "end": 520.68, "text": "It's much more sophisticated, and let's have a look."}, {"id": "s133", "start": 520.68, "end": 533.12, "text": "I I'll like to plan a campaign, and for what it's worth, I'm going to save you from all the nitty-gritty details for everything that is domain specific, but I'm going to pick this query here,"}, {"id": "s134", "start": 533.12, "end": 535.08, "text": "and then let's see what happens."}, {"id": "s135", "start": 535.08, "end": 538.32, "text": "And this is the the agentic orchestration part that I was going to highlight."}, {"id": "s136", "start": 538.32, "end": 544.04, "text": "Underneath the hood we have the orchestrator, and the orchestrator can then just extract the intent of the query."}, {"id": "s137", "start": 544.04, "end": 547.52, "text": "Based off of the intent of the query, it can locate the tools, right?"}, {"id": "s138", "start": 547.52, "end": 559.72, "text": "Those can be first party, third party tools, and the outputs of this different it could be agents on MCP servers, combined will give enough what I call ammunition and context"}, {"id": "s139", "start": 559.72, "end": 564.76, "text": "for the UX agent to eventually render something that we call meaningful."}, {"id": "s140", "start": 564.76, "end": 570.0, "text": "So, compared to the previous turns, this is this is decent, right?"}, {"id": "s141", "start": 570.0, "end": 578.92, "text": "I want to just remove my bias, but the overall aesthetics, the look and feel of this query, uh it it resonates with me."}, {"id": "s142", "start": 578.92, "end": 579.64, "text": "Would you agree?"}, {"id": "s143", "start": 579.64, "end": 582.16, "text": "Give me a thumbs up if you like if you agree."}, {"id": "s144", "start": 582.16, "end": 585.12, "text": "Okay, at least um the vast majority here."}, {"id": "s145", "start": 585.12, "end": 587.32, "text": "And then see, it is decent."}, {"id": "s146", "start": 587.32, "end": 588.88, "text": "And let me just continue here."}, {"id": "s147", "start": 588.88, "end": 590.72, "text": "And then once again, right?"}, {"id": "s148", "start": 590.72, "end": 594.8, "text": "This was decided by AI guided by us."}, {"id": "s149", "start": 594.8, "end": 597.56, "text": "I would just want to make make that clear here."}, {"id": "s150", "start": 597.56, "end": 602.28, "text": "And then I'm going to touch on the on the UI protocols and then how you can make this happen."}, {"id": "s151", "start": 602.28, "end": 603.36, "text": "But okay, let's see."}, {"id": "s152", "start": 603.36, "end": 606.16, "text": "If I approve here, and then this is already live."}, {"id": "s153", "start": 606.16, "end": 607.44, "text": "And this is pre-prod, right?"}, {"id": "s154", "start": 607.44, "end": 609.08, "text": "So, uh this is great."}, {"id": "s155", "start": 609.08, "end": 611.88, "text": "Let me go back to my presentation."}, {"id": "s156", "start": 612.24, "end": 612.88, "text": "Perfect."}, {"id": "s157", "start": 612.88, "end": 614.16, "text": "I have one more question."}, {"id": "s158", "start": 614.16, "end": 617.04, "text": "Are you guys as skeptical that this is possible?"}, {"id": "s159", "start": 617.04, "end": 619.2, "text": "Because I can tell you this it is possible."}, {"id": "s160", "start": 619.2, "end": 620.8, "text": "If you're still skeptical, don't worry."}, {"id": "s161", "start": 620.8, "end": 630.36, "text": "I have all of these guys uh here uh also uh every day just looking at me and then challenging whether uh this uh can be made possible at scale, right?"}, {"id": "s162", "start": 630.36, "end": 631.68, "text": "And then uh okay."}, {"id": "s163", "start": 631.68, "end": 639.72, "text": "And then this is the part that I'll like just to touch uh touch base on the uh on the three ways that you can render what you just saw."}, {"id": "s164", "start": 639.72, "end": 641.8, "text": "And they're different UI protocols."}, {"id": "s165", "start": 641.8, "end": 644.76, "text": "Are you guys familiar with uh generative uh UI?"}, {"id": "s166", "start": 644.76, "end": 646.24, "text": "Have you guys played with it?"}, {"id": "s167", "start": 646.24, "end": 647.72, "text": "Let me see here."}, {"id": "s168", "start": 647.72, "end": 649.32, "text": "Okay, well, that's really cool."}, {"id": "s169", "start": 649.32, "end": 650.24, "text": "Uh okay."}, {"id": "s170", "start": 650.24, "end": 658.52, "text": "So, uh what I would like just to share with you guys it's all about how much control you want to exercise over the experience."}, {"id": "s171", "start": 658.52, "end": 667.36, "text": "And this matters a lot because uh you know, as a non-deterministic solution, uh you can decide if you want something I really um like this."}, {"id": "s172", "start": 667.36, "end": 668.96, "text": "So, let's have a look."}, {"id": "s173", "start": 668.96, "end": 671.72, "text": "Here, this is uh ChatGPT."}, {"id": "s174", "start": 671.72, "end": 678.48, "text": "And my query was help me find a Japanese restaurant uh in SF today."}, {"id": "s175", "start": 678.48, "end": 683.48, "text": "If you guys see here, this component this component is very opinionated."}, {"id": "s176", "start": 683.48, "end": 684.76, "text": "Would you agree with that?"}, {"id": "s177", "start": 684.76, "end": 685.8389999999999, "text": "Here?"}, {"id": "s178", "start": 685.8389999999999, "end": 686.12, "text": "Right?"}, {"id": "s179", "start": 686.12, "end": 691.2, "text": "So, uh you can have complete control over this uh component."}, {"id": "s180", "start": 691.2, "end": 696.76, "text": "So, depending upon the nature of your business, this works really well, right?"}, {"id": "s181", "start": 696.76, "end": 699.64, "text": "And for that, let me just go back here."}, {"id": "s182", "start": 699.64, "end": 701.96, "text": "And then this is what I call a control."}, {"id": "s183", "start": 701.96, "end": 705.0, "text": "Essentially, you ship the component as it is."}, {"id": "s184", "start": 705.0, "end": 709.52, "text": "The agent will pick and it will display exactly the way that you describe."}, {"id": "s185", "start": 709.52, "end": 721.32, "text": "However, depending upon the nature of your business, at least for us, right, at my company, where a B2B SaaS, the there's so much configuration that we don't want to be over uh prescriptive"}, {"id": "s186", "start": 721.32, "end": 726.2, "text": "because uh the feedback that I keep getting from my customers, \"Oh, the flows are so confusing."}, {"id": "s187", "start": 726.2, "end": 727.88, "text": "There's so much configuration."}, {"id": "s188", "start": 727.88, "end": 731.4, "text": "How can you remove the cognitive load uh for me?\""}, {"id": "s189", "start": 731.4, "end": 736.52, "text": "But uh if you're like Booking, for example, this approach uh works uh really well."}, {"id": "s190", "start": 736.52, "end": 738.56, "text": "And then let's see uh how it works."}, {"id": "s191", "start": 738.56, "end": 742.16, "text": "So, essentially, you have the agent."}, {"id": "s192", "start": 742.16, "end": 748.32, "text": "The agent will just pick the component from your catalog and then it will render uh as it is, right?"}, {"id": "s193", "start": 748.32, "end": 756.2, "text": "And uh in the interest uh of time, I'm not going to touch base on the code snippets uh that I have for this uh three different types."}, {"id": "s194", "start": 756.2, "end": 761.68, "text": "But afterwards, if you guys are interested, uh I can share the presentation and then you can have a look, all right?"}, {"id": "s195", "start": 761.68, "end": 762.52, "text": "Very good."}, {"id": "s196", "start": 762.52, "end": 765.36, "text": "This is uh at least on the left side."}, {"id": "s197", "start": 765.36, "end": 770.8, "text": "Let's discuss a little bit on the right side because this is when you give full autonomy to the LLM."}, {"id": "s198", "start": 770.8, "end": 775.8389999999999, "text": "If you guys remember uh at least the previous attempts for my product, this exactly what we did."}, {"id": "s199", "start": 775.8389999999999, "end": 783.12, "text": "So, we just said, \"So, hey LLM, how uh how would you compose this experience knowing that you have these components?\""}, {"id": "s200", "start": 783.12, "end": 783.44, "text": "Right?"}, {"id": "s201", "start": 783.44, "end": 792.76, "text": "But uh that was uh that was a little bit uh a little bit of our opinion because uh it has uh it had uh some of the components available."}, {"id": "s202", "start": 792.76, "end": 798.08, "text": "But it could happen that uh you can just delegate fully to the LLM."}, {"id": "s203", "start": 798.08, "end": 803.76, "text": "And then right now, I'm here on Claude and I asked Claude, \"So, hey, create an org chart with three levels.\""}, {"id": "s204", "start": 803.76, "end": 804.76, "text": "That was it."}, {"id": "s205", "start": 804.76, "end": 810.72, "text": "And then Claude just rendered this diagram and it works really well."}, {"id": "s206", "start": 810.72, "end": 811.04, "text": "Right?"}, {"id": "s207", "start": 811.04, "end": 817.28, "text": "But here, if I put myself in the shoes of a company, I'm not sure I would delegate fully to the LLM."}, {"id": "s208", "start": 817.28, "end": 822.32, "text": "Because I cannot control at least the app the output and the outcome."}, {"id": "s209", "start": 822.32, "end": 829.8, "text": "And me personally, me guys, as a UX leader, the UX side of me will always say no. You got to be in control."}, {"id": "s210", "start": 829.8, "end": 836.16, "text": "There's been a couple of talks here at least this week on design, on taste, and judgment."}, {"id": "s211", "start": 836.16, "end": 837.88, "text": "And this matters a lot."}, {"id": "s212", "start": 837.88, "end": 845.96, "text": "If you guys want to embark on this journey of leveraging these protocols, you don't want to delegate too much of the actual experience to the LLM."}, {"id": "s213", "start": 845.96, "end": 850.6, "text": "You got to find alternatives and I'm going to touch on that in just a little bit."}, {"id": "s214", "start": 850.6, "end": 851.48, "text": "Okay, cool."}, {"id": "s215", "start": 851.48, "end": 855.6, "text": "And then this is how the open-ended approach works."}, {"id": "s216", "start": 855.6, "end": 870.16, "text": "So essentially there there's going to be an MCP tool and then this will literally ship the HTML and then in a sandbox I frame environment, this will be rendered in the host of your choice."}, {"id": "s217", "start": 870.16, "end": 871.2, "text": "But it can be a chat."}, {"id": "s218", "start": 871.2, "end": 873.12, "text": "It can be this cloud."}, {"id": "s219", "start": 873.12, "end": 874.28, "text": "It could be a chat GPT."}, {"id": "s220", "start": 874.28, "end": 877.8389999999999, "text": "It could be perplexity or it could be any other chat."}, {"id": "s221", "start": 877.8389999999999, "end": 882.12, "text": "If you're willing just to to give full control to the LLM, good luck."}, {"id": "s222", "start": 882.12, "end": 890.12, "text": "But the one that I would like to highlight is this here and this was our choice that we call the declarative."}, {"id": "s223", "start": 890.12, "end": 892.8389999999999, "text": "Declarative is in the middle."}, {"id": "s224", "start": 892.8389999999999, "end": 900.24, "text": "If you guys heard some of the protocols and I don't want to get into the specifics of each because they have different characteristics."}, {"id": "s225", "start": 900.24, "end": 911.64, "text": "But HTMX from Google, JSON render from Vercel, OpenUI by Thesis, those are some of the protocols that will give you this in between here."}, {"id": "s226", "start": 911.64, "end": 913.64, "text": "And let let's have a look, right?"}, {"id": "s227", "start": 913.64, "end": 925.36, "text": "So at least for my product, the one that I just showed, the orchestrator agent will eventually, if you think of the whole traversal, the user will enter the query"}, {"id": "s228", "start": 925.36, "end": 927.6, "text": "and then there's going to be the intent classification."}, {"id": "s229", "start": 927.6, "end": 941.32, "text": "Based off of the intent classification, then the tools will be invoked, the data will be retrieved, and somewhat somewhat in between Alice, there will be the mapping of the eligible components from your catalog"}, {"id": "s230", "start": 941.32, "end": 945.88, "text": "to the entities of of the tools, right?"}, {"id": "s231", "start": 945.88, "end": 949.28, "text": "And then the orchestrator will just broadcast this UI description."}, {"id": "s232", "start": 949.28, "end": 950.8, "text": "It's like a UI spec."}, {"id": "s233", "start": 950.8, "end": 958.8, "text": "This UI spec will be also we have this component catalog here and we use the Zod schema and then you got to be compliant with this protocols."}, {"id": "s234", "start": 958.8, "end": 962.6, "text": "This is just one of the requirements and then you just render that."}, {"id": "s235", "start": 962.6, "end": 963.28, "text": "Right?"}, {"id": "s236", "start": 963.28, "end": 969.08, "text": "And then their final output will be the native UI, in this case the React components."}, {"id": "s237", "start": 969.08, "end": 970.04, "text": "This is it."}, {"id": "s238", "start": 970.04, "end": 978.24, "text": "The good thing about the declarative approach is it will be compliant with your design system everywhere."}, {"id": "s239", "start": 978.24, "end": 979.2, "text": "This matters a lot."}, {"id": "s240", "start": 979.2, "end": 988.16, "text": "So, in our case, we did not want to delegate to the LLM because you guys saw over there you can't change the copy, right?"}, {"id": "s241", "start": 988.16, "end": 989.64, "text": "So, it's not key one."}, {"id": "s242", "start": 989.64, "end": 993.08, "text": "Sometimes it's going to be March January to March."}, {"id": "s243", "start": 993.08, "end": 994.12, "text": "It matters a lot."}, {"id": "s244", "start": 994.12, "end": 997.36, "text": "So, within UX we have different factors, right?"}, {"id": "s245", "start": 997.36, "end": 1001.28, "text": "We have the actual UX's if you think of the overall experience."}, {"id": "s246", "start": 1001.28, "end": 1006.28, "text": "There is UI, there's also copy, UX writing, and so on and so forth."}, {"id": "s247", "start": 1006.28, "end": 1009.28, "text": "But this approach gives us this in between."}, {"id": "s248", "start": 1009.28, "end": 1018.2, "text": "It is less deterministic and I think this is a really good segue to some of the challenges because imagine, I'm going to use my example once again, the orchestrator"}, {"id": "s249", "start": 1018.2, "end": 1027.12, "text": "will just fetch the eligible components for that query, but then it's up to the LLM how to place in the UI."}, {"id": "s250", "start": 1027.12, "end": 1034.64, "text": "And this can get really really messy, but and those are the challenges that I'll like to share with you guys here."}, {"id": "s251", "start": 1034.64, "end": 1038.48, "text": "I got to be careful because I've got only 30 minutes, but let's go."}, {"id": "s252", "start": 1038.48, "end": 1046.8, "text": "So, the first challenge is if the agent picks the components, who's in charge or what entity is in charge of arranging them?"}, {"id": "s253", "start": 1046.8, "end": 1049.24, "text": "And this is information architecture, right?"}, {"id": "s254", "start": 1049.24, "end": 1052.2, "text": "This is a critical aspect of UX."}, {"id": "s255", "start": 1052.2, "end": 1057.36, "text": "And then once again, if you put yourself in the shoes of the average customer, it matters a lot."}, {"id": "s256", "start": 1057.36, "end": 1061.24, "text": "So, if you're just left alone, the placement can be totally random."}, {"id": "s257", "start": 1061.24, "end": 1067.68, "text": "So, at least in my team, we borrow this concept of atomic design."}, {"id": "s258", "start": 1067.68, "end": 1070.08, "text": "And atomic design, it goes like this."}, {"id": "s259", "start": 1070.08, "end": 1071.92, "text": "Let me just change here."}, {"id": "s260", "start": 1071.92, "end": 1072.84, "text": "Uh yeah."}, {"id": "s261", "start": 1072.84, "end": 1085.0, "text": "So, as you can see, atomic design, and then I have the definition, is a methodology composed of five distinct stages working together to create interface design systems in a more deliberate"}, {"id": "s262", "start": 1085.0, "end": 1086.4, "text": "and hierarchical manner."}, {"id": "s263", "start": 1086.4, "end": 1087.48, "text": "This helps a lot."}, {"id": "s264", "start": 1087.48, "end": 1087.68, "text": "Why?"}, {"id": "s265", "start": 1087.68, "end": 1096.92, "text": "Because those are the individual elements, and if you think of the overall structure of the page, it gives me the ability to steer it as I see fit."}, {"id": "s266", "start": 1096.92, "end": 1102.88, "text": "And what we've done in my team, so this UX agent, we harnessed this UX agent."}, {"id": "s267", "start": 1102.88, "end": 1115.2, "text": "So, we eventually taught this this UX agent what good looks like, what is the optimal layout for a given situation, and we have a catalog of different templates."}, {"id": "s268", "start": 1115.2, "end": 1121.56, "text": "But I'll like to show you at least this because this detail is very important."}, {"id": "s269", "start": 1121.56, "end": 1125.24, "text": "Here, it is the overall hierarchy hierarchy."}, {"id": "s270", "start": 1125.24, "end": 1138.68, "text": "So, if you remember part of the orchestrator, the orchestrator will eventually just fetch the eligible components to accomplish the query of the user, but then the next big question is, how do we arrange that?"}, {"id": "s271", "start": 1138.68, "end": 1141.8, "text": "The approach that we used was think of this hierarchy."}, {"id": "s272", "start": 1141.8, "end": 1145.2, "text": "So, you have the overall page, the layout."}, {"id": "s273", "start": 1145.2, "end": 1148.04, "text": "The layout will contain different slots."}, {"id": "s274", "start": 1148.04, "end": 1150.24, "text": "So, think of this one here, the header."}, {"id": "s275", "start": 1150.24, "end": 1154.12, "text": "You can have the main, and then you can have sub sub slots."}, {"id": "s276", "start": 1154.12, "end": 1156.32, "text": "Sub slots can have sub slots."}, {"id": "s277", "start": 1156.32, "end": 1160.68, "text": "And within the sub slots, you can have eligible component categories."}, {"id": "s278", "start": 1160.68, "end": 1171.6, "text": "And then this will allow us to steer eventually the the the optimal placement of the components that have been retrieved by the orchestrator."}, {"id": "s279", "start": 1171.6, "end": 1178.12, "text": "So this is literally us codifying our UX knowledge into this agent."}, {"id": "s280", "start": 1178.12, "end": 1180.68, "text": "So the next time, you know, it doesn't matter."}, {"id": "s281", "start": 1180.68, "end": 1182.88, "text": "We'll just follow the same approach."}, {"id": "s282", "start": 1182.88, "end": 1184.8, "text": "And then this is the hierarchy that we're using."}, {"id": "s283", "start": 1184.8, "end": 1188.28, "text": "So layout to slot to sub slot to components."}, {"id": "s284", "start": 1188.28, "end": 1192.72, "text": "However, because of the orchestrator, we we flipped the order."}, {"id": "s285", "start": 1192.72, "end": 1198.72, "text": "So from components, components will map to sub slot, sub slots to slots, and slots to templates."}, {"id": "s286", "start": 1198.72, "end": 1202.56, "text": "And then we can just arrange as needed."}, {"id": "s287", "start": 1202.56, "end": 1204.44, "text": "So this was a hell of a challenge."}, {"id": "s288", "start": 1204.44, "end": 1216.24, "text": "It is still a challenge, by the way, and it's a really good segue to the second one, the second challenge, which is the actual design, your design system and your catalog."}, {"id": "s289", "start": 1216.24, "end": 1219.36, "text": "This becomes the heartbeat of the whole thing, right?"}, {"id": "s290", "start": 1219.36, "end": 1227.96, "text": "I cannot stress enough, if you guys see the potential of leveraging this UI protocols for your product, this is going to be a big deal, right?"}, {"id": "s291", "start": 1227.96, "end": 1238.04, "text": "So we're pushing the boundaries and then we're testing and we keep on testing these different protocols that I mentioned, ATUI, JSON Render, Open UI, and so on and so forth."}, {"id": "s292", "start": 1238.04, "end": 1245.52, "text": "But this has been a quite challenging because the the catalog is the contract between the agent and the UI."}, {"id": "s293", "start": 1245.52, "end": 1248.28, "text": "So every property mat- matters."}, {"id": "s294", "start": 1248.28, "end": 1251.72, "text": "And not only for the catalog, but for the layout as well."}, {"id": "s295", "start": 1251.72, "end": 1257.36, "text": "So if you remember, the layout has its own components, the slots and the sub slots."}, {"id": "s296", "start": 1257.36, "end": 1261.2, "text": "Each of those components will have its own attributes."}, {"id": "s297", "start": 1261.2, "end": 1265.48, "text": "And all of that, this curation, let me just encapsulate into curation."}, {"id": "s298", "start": 1265.48, "end": 1270.6, "text": "This curation is absolutely needed so that you can deliver something meaningful."}, {"id": "s299", "start": 1270.6, "end": 1274.2, "text": "Not as some demo that you will see out there for the sake of demo, right?"}, {"id": "s300", "start": 1274.2, "end": 1280.44, "text": "So, this this this will give you a control will allow you to steer from UX perspective."}, {"id": "s301", "start": 1280.44, "end": 1281.2, "text": "Very good."}, {"id": "s302", "start": 1281.2, "end": 1289.64, "text": "And last but not least, one significant challenge that we had is that my teams do not design the pixel anymore."}, {"id": "s303", "start": 1289.64, "end": 1291.28, "text": "I don't know if you could see that, right?"}, {"id": "s304", "start": 1291.28, "end": 1294.0, "text": "So, we're not here designing at the entire flow."}, {"id": "s305", "start": 1294.0, "end": 1307.16, "text": "Now, AI can dictate that to a significant extent, but the nature of the work shifted quite a bit and it's been an interesting journey to say the least, a really good one, but even for the non-technical"}, {"id": "s306", "start": 1307.16, "end": 1314.28, "text": "PMs and UX designers, it it was a big hit because right now we talk about the schema."}, {"id": "s307", "start": 1314.28, "end": 1317.24, "text": "Let's talk about this curation of the catalog."}, {"id": "s308", "start": 1317.24, "end": 1318.88, "text": "Let's talk about the rules."}, {"id": "s309", "start": 1318.88, "end": 1322.28, "text": "Let's talk about the synthetic data that we can generate."}, {"id": "s310", "start": 1322.28, "end": 1328.68, "text": "How can we generate the queries that will map to a given component as part of this mapping logic?"}, {"id": "s311", "start": 1328.68, "end": 1331.08, "text": "Let's talk about interaction patterns."}, {"id": "s312", "start": 1331.08, "end": 1338.4, "text": "So, this if once again, if you guys are going to embark on this journey, be aware that the people element is very important."}, {"id": "s313", "start": 1338.4, "end": 1344.68, "text": "When I talk to other leaders, I I talk about the three P's: people, product, and process, right?"}, {"id": "s314", "start": 1344.68, "end": 1348.48, "text": "And then a very lightweight process, but this matters a lot."}, {"id": "s315", "start": 1348.48, "end": 1353.44, "text": "And with that, I'm going to leave a couple of resources here."}, {"id": "s316", "start": 1353.44, "end": 1358.28, "text": "So, and by the way, those are talks from AIE for what it's worth."}, {"id": "s317", "start": 1358.28, "end": 1363.0, "text": "So, yeah, people that have been talking about this protocols over and over and over."}, {"id": "s318", "start": 1363.0, "end": 1366.88, "text": "So, please just take advantage, take a screenshot."}, {"id": "s319", "start": 1366.88, "end": 1372.6, "text": "And if you guys want to connect with me here, yeah, my LinkedIn or just take a screenshot."}, {"id": "s320", "start": 1372.6, "end": 1376.2, "text": "I'll love to talk more about the topic."}, {"id": "s321", "start": 1376.2, "end": 1378.0, "text": "I can tell this is just a matter of time, right?"}, {"id": "s322", "start": 1378.0, "end": 1378.92, "text": "So, this is coming."}, {"id": "s323", "start": 1378.92, "end": 1381.68, "text": "So, thank you so much."}, {"id": "s324", "start": 1382.72, "end": 1384.88, "text": "I know."}, {"id": "s325", "start": 1395.166, "end": 1397.166, "text": "[music]"}]}, {"id": "Qw_tC68KKes", "title": "How AI Agents Let GTM Teams Scale — Justin Joyce, Cloudflare", "channel": "AI Engineer", "duration": 1155, "upload_date": null, "url": "https://www.youtube.com/watch?v=Qw_tC68KKes", "api": "/api/talks/Qw_tC68KKes.json", "summary_url": "/#Qw_tC68KKes", "transcript": {"html": "/transcripts/Qw_tC68KKes.html", "txt": "/transcripts/Qw_tC68KKes.txt", "vtt": "/transcripts/Qw_tC68KKes.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 13.76, "text": "Well, thank you everyone for joining."}, {"id": "s3", "start": 13.76, "end": 20.92, "text": "I'm hoping that you guys had a great time so far at this conference and you guys have a lot of takeaways back, you know, to your company."}, {"id": "s4", "start": 20.92, "end": 24.72, "text": "Um, I don't know if any of you guys saw the uh AGI pills downstairs."}, {"id": "s5", "start": 24.72, "end": 26.2, "text": "Yeah, well, I just took some."}, {"id": "s6", "start": 26.2, "end": 32.68, "text": "So, if I say any phrases about that's the uh the the gun What's that What's that the phrase?"}, {"id": "s7", "start": 32.68, "end": 38.36, "text": "That's the uh burning gun or the smoking gun or I start hallucinating in general, well, please snap me back."}, {"id": "s8", "start": 38.36, "end": 41.04, "text": "That's probably just the AGI pills."}, {"id": "s9", "start": 41.04, "end": 42.04, "text": "All right."}, {"id": "s10", "start": 42.04, "end": 45.0, "text": "So, without further ado, let's get started."}, {"id": "s11", "start": 45.0, "end": 46.16, "text": "Uh my name is Justin Joyce."}, {"id": "s12", "start": 46.16, "end": 50.44, "text": "I'm a principal sales operations and strategy manager at Cloudflare."}, {"id": "s13", "start": 50.44, "end": 64.96, "text": "Um and I work with the go-to-market team as part of the revenue operations organization, specifically on the teams that uh produce leads for the sales teams, as well as the customer experience team, which works on"}, {"id": "s14", "start": 64.96, "end": 69.84, "text": "uh the customer experience after the sale the sales have been done."}, {"id": "s15", "start": 69.84, "end": 73.68, "text": "And uh just a little background about me."}, {"id": "s16", "start": 73.68, "end": 83.76, "text": "As Moda said, I started in sales operations uh and sales and then I moved to sales uh to the machine learning side about the last 7 years at Grainger."}, {"id": "s17", "start": 83.76, "end": 93.8, "text": "And I really wanted to do that to be able to learn how to uh have prescriptive analysis and prescriptive uh prediction so I can help the business better to"}, {"id": "s18", "start": 93.8, "end": 99.52000000000001, "text": "make decisions and to understand what's the next step next best step."}, {"id": "s19", "start": 99.52000000000001, "end": 112.56, "text": "So, uh 6 months ago, I had an opportunity to move back into sales operations uh because I really wanted to use all the skills that I'd been learning from machine learning as well as from sales"}, {"id": "s20", "start": 112.56, "end": 115.88, "text": "operations in general."}, {"id": "s21", "start": 117.8, "end": 119.36, "text": "So, what's the general problem?"}, {"id": "s22", "start": 119.36, "end": 124.72, "text": "The general problem is that traditional go-to-market does not scale."}, {"id": "s23", "start": 124.72, "end": 127.96, "text": "There's a few um facets to this."}, {"id": "s24", "start": 127.96, "end": 140.4, "text": "The first facet is that usually teams on the back office side, uh they're either doing work in Excel or sheets at worst, um building analysis each week, multiple hours a week,"}, {"id": "s25", "start": 140.4, "end": 146.56, "text": "and as they take on multiple projects, it gets exponentially long with how many of those analysis that they're doing."}, {"id": "s26", "start": 146.56, "end": 159.24, "text": "Uh at best, they are producing dashboards, um providing information to the uh leadership and executive team, um which, you know, meets the needs of most teams, um but not all of them."}, {"id": "s27", "start": 159.24, "end": 167.28, "text": "And that needs meets that needs uh means that in general, not all the requirements of the go-to-market teams are met."}, {"id": "s28", "start": 167.28, "end": 174.68, "text": "They're not able to really provide all the information that the teams need when um they need it."}, {"id": "s29", "start": 175.12, "end": 186.76, "text": "The second problem, which is more on the go-to-market side with the sales and uh the sales teams and the other teams that I mentioned that I support, is they have two gaps."}, {"id": "s30", "start": 186.76, "end": 198.959, "text": "Essentially, the first gap is the context gap, meaning when a salesperson is uh talking to a prospect um one call and talking to a current customer in the next call, or"}, {"id": "s31", "start": 198.959, "end": 208.959, "text": "um talking at an adoption conversation the call after that, they have to constantly switch contexts and they have to gather information for those specific calls, which is good."}, {"id": "s32", "start": 208.959, "end": 217.56, "text": "They really need to get that information to have those calls and understand how to approach the situation, but they have to do all that work in between."}, {"id": "s33", "start": 217.56, "end": 229.239, "text": "Um the second one what is like what I like to call is the expert gap, which is the gap between how your expert salesperson or expert go-to-market um sales individual,"}, {"id": "s34", "start": 229.239, "end": 239.64, "text": "how he would approach a situation, how he would talk to a prospect, how he would uh work on adoption call, how he would handle a customer satisfaction issue, and"}, {"id": "s35", "start": 239.64, "end": 244.24, "text": "between also the a new salesperson or someone that's just ramping up."}, {"id": "s36", "start": 244.24, "end": 257.959, "text": "So, ideally like everyone working at the same operational level, so you have consistency in execution, consistency in messaging of how to assess a a customer's problems and how your product can help fit that portfolio."}, {"id": "s37", "start": 257.959, "end": 269.84, "text": "So, with these two problems with manual work as well as uh salespeople not having enough information and having the gap of having to get all the information they need"}, {"id": "s38", "start": 269.84, "end": 277.12, "text": "and gather that as well as not be able to execute the same level, it really creates an inefficiency in the go-to-market organization."}, {"id": "s39", "start": 277.12, "end": 287.32, "text": "And so, for the last 6 months or so since I've joined Cloudflare, I've been really focusing on how can I make this operation efficient from back to front and"}, {"id": "s40", "start": 287.32, "end": 296.0, "text": "there's a lot of great things that we've been doing at our company in general that's helped me enable that and I really want to share some of those findings with you."}, {"id": "s41", "start": 296.0, "end": 306.6, "text": "So, the framework that I'm proposing here, which I think is is it's going to really be effective in as we flesh this out in the future is a three-pillar"}, {"id": "s42", "start": 306.6, "end": 307.919, "text": "approach."}, {"id": "s43", "start": 307.919, "end": 320.0, "text": "The first pillar approach is how can we scale analysis and the ability of operations team to meet the data needs of executives, leadership, as well as be able to build applications"}, {"id": "s44", "start": 320.0, "end": 321.76, "text": "using business context."}, {"id": "s45", "start": 321.76, "end": 326.16, "text": "How can they take things that would take 2 hours to do down to 5 minutes?"}, {"id": "s46", "start": 326.16, "end": 337.28, "text": "Um back in well, not back in January of this year, I after I joined I joined the company, I had built these skills and I'd started asking questions of the data directly"}, {"id": "s47", "start": 337.28, "end": 350.4, "text": "and I was able to get answers immediately while doing other things and I saw the huge power of how if we can scale the analysis and the operations of the teams, we can actually focus on the second part of my job, which is strategy."}, {"id": "s48", "start": 350.4, "end": 354.68, "text": "The second pillar is how can is to scale insight."}, {"id": "s49", "start": 354.68, "end": 358.32, "text": "There's story in the data, and how can we provide that to the team?"}, {"id": "s50", "start": 358.32, "end": 362.76, "text": "How can we provide that team at, you know, the weekly level, at the different levels of management?"}, {"id": "s51", "start": 362.76, "end": 371.28, "text": "How can we provide that information, that insight, that story to every customer that the sales teams are talking to?"}, {"id": "s52", "start": 371.84, "end": 379.72, "text": "And the third one, which is arguably the biggest one, is uh to provide self-service capabilities to the go-to-market team."}, {"id": "s53", "start": 379.72, "end": 394.72, "text": "When these sales individuals, when they're talking to a customer, how can they get the expert-level information that they need to interact with that customer and to best assess, you know, how they should approach the situation, how to handle rejections,"}, {"id": "s54", "start": 394.72, "end": 399.6, "text": "how to upsell them, and how to handle customer satisfaction issues."}, {"id": "s55", "start": 399.6, "end": 407.0, "text": "Uh this is a huge part of what I've seen we've done at Cloudflare, and I'll share a little bit what that looks like."}, {"id": "s56", "start": 407.08, "end": 421.36, "text": "So, as it relates to scaling the analytical capability, the back-office operations, what we have done as we have built role-specific skill files, which have the context of the business information tying it to the data."}, {"id": "s57", "start": 421.36, "end": 424.32, "text": "This is for both technical and non-technical users."}, {"id": "s58", "start": 424.32, "end": 430.48, "text": "Technical users, you could say the ones who are building SQL and being able to data engineer a lot of solutions."}, {"id": "s59", "start": 430.48, "end": 438.96, "text": "And then the non-technical people would be more individuals who are closer to the business with the sales people who may not know how to write SQL."}, {"id": "s60", "start": 438.96, "end": 447.76, "text": "And so, we have skill files that they're able to use to ask questions of the data to get answers fairly quickly while doing other tasks."}, {"id": "s61", "start": 447.919, "end": 458.0, "text": "And one example here is in those skill files, we also, through testing, we've included the types of questions that the business would ask of the data."}, {"id": "s62", "start": 458.0, "end": 469.08, "text": "In this case, looking at closed date changes and opportunities, as well as uh changes in the amount of the opportunities, so that we can answer essentially 80% or or more of the questions,"}, {"id": "s63", "start": 469.08, "end": 474.4, "text": "where the other 20% might be more uh complex strategic questions."}, {"id": "s64", "start": 474.4, "end": 482.84, "text": "And so, overall, this allows the teams to be able to embed all of the logic into the skill files and get answers uh fairly quickly."}, {"id": "s65", "start": 482.84, "end": 494.48, "text": "So, I've seen users who do not know any SQL, and the essentially their request in the past we bottleneck to someone who knows data and can write SQL for complex queries, be able to just ask questions of the data"}, {"id": "s66", "start": 494.48, "end": 495.919, "text": "and get answers."}, {"id": "s67", "start": 495.919, "end": 508.28, "text": "And this is very useful also for what I show later on on the third pillar is for building skills for these go-to-market teams, so that they um can and ask questions of their data"}, {"id": "s68", "start": 508.28, "end": 510.0, "text": "and and get answers."}, {"id": "s69", "start": 510.0, "end": 514.719, "text": "Also, uh in our team we've used these same skill files to build multiple applications."}, {"id": "s70", "start": 514.719, "end": 528.24, "text": "Uh when usually, you know, that is uh done in IT and bottlenecked in those areas, we're able to use the semantic information about the business um knowledge, as well as the columns table to build these applications"}, {"id": "s71", "start": 528.24, "end": 528.8389999999999, "text": "rather quickly."}, {"id": "s72", "start": 528.8389999999999, "end": 534.88, "text": "So, this allows us to free up our time, so that we can focus on strategy and enablement."}, {"id": "s73", "start": 537.52, "end": 543.92, "text": "All right, for the second pillar, uh what I mentioned earlier, there's a story in the data and they really shouldn't have to search for it."}, {"id": "s74", "start": 543.92, "end": 547.16, "text": "Uh what I'm showing you here is synthetic data on the right."}, {"id": "s75", "start": 547.16, "end": 558.8389999999999, "text": "Uh we have a weekly summary that goes out, which highlights how the business is doing, how they're pacing to their goals, and then highlighting um trends, uh standouts, as well as watches."}, {"id": "s76", "start": 558.8389999999999, "end": 570.28, "text": "So, this uh we provide this information to the business, so they can, as you just like you can open your phone now uh on Gemini, if you have it, and you can see your notes for the day or the things that you need to do,"}, {"id": "s77", "start": 570.28, "end": 579.16, "text": "giving that same level of information to the go-to-market team, so they can just go along their day, and if they do need to look at some of the reports or dashboards, they can"}, {"id": "s78", "start": 579.16, "end": 582.96, "text": "to drill in, um but we bring the story to them."}, {"id": "s79", "start": 582.96, "end": 586.0, "text": "And I'll pull this together why I think this is really important."}, {"id": "s80", "start": 586.0, "end": 594.24, "text": "Um you know, of course there's a place for dashboards and standard information, but there's different level of adoption of the KPI metrics at any given company."}, {"id": "s81", "start": 594.24, "end": 598.12, "text": "You're going to have people who are love dashboards, people are never going to look at them."}, {"id": "s82", "start": 598.12, "end": 603.08, "text": "So, I think you really need to have a way to scaffold that across um the business."}, {"id": "s83", "start": 603.08, "end": 605.56, "text": "So, how do we do this automated analysis?"}, {"id": "s84", "start": 605.56, "end": 614.48, "text": "So, a big part of this is simplifying the data so that the AI agents can actually um analyze the data in a very consistent and clean way."}, {"id": "s85", "start": 614.48, "end": 624.68, "text": "Here what we do is we transform the data by the dimension of time, also slice of the logical part of the business, which is manager, theater, and finally the metric."}, {"id": "s86", "start": 624.68, "end": 626.88, "text": "Here we have data uh that is wide."}, {"id": "s87", "start": 626.88, "end": 629.56, "text": "You could also go um from wide to long."}, {"id": "s88", "start": 629.56, "end": 638.4, "text": "Uh our trend information that I showed you, um uh that data is long, and then we do some pre-processing on that data um to then highlight trends."}, {"id": "s89", "start": 638.4, "end": 649.88, "text": "So, the the uh embedding of the logic of how you would filter this data to even analyze it, um as well as the logical um aggregations the business want to see is all engineered"}, {"id": "s90", "start": 649.88, "end": 650.92, "text": "up front."}, {"id": "s91", "start": 650.92, "end": 659.96, "text": "This from my experience, this handles uh 80 or plus percent of the requests is just getting information about the performance of the teams and how they're doing."}, {"id": "s92", "start": 659.96, "end": 665.92, "text": "You can always go down to the raw data, but this last uh pillar, which I'll go over in a minute, um allows them to do that."}, {"id": "s93", "start": 665.92, "end": 678.08, "text": "To be able to orchestrate this uh effectively and be able to rely on it, we have a multi-agent workflow where we first get the data, and then we do a first pass draft on the data calling our MCPs,"}, {"id": "s94", "start": 678.08, "end": 687.8, "text": "um and then this we have a second reviewer agent who checks the veracity of the data, and then we have a third um agent, which is a tone agent, who using a multi-shot prompt"}, {"id": "s95", "start": 687.8, "end": 693.28, "text": "um is able to just craft the message and highlight the risks and opportunities um equally."}, {"id": "s96", "start": 693.28, "end": 701.88, "text": "And with every run, we have observability into each of the LLM calls, so we can see what is passed and what is the response that is going on there."}, {"id": "s97", "start": 701.88, "end": 710.24, "text": "And so, this architecture we tested for about 2-3 months and, you know, looking every single run to see what is going wrong."}, {"id": "s98", "start": 710.24, "end": 714.56, "text": "And this is the the model that we had set up that is really working for us."}, {"id": "s99", "start": 714.56, "end": 723.64, "text": "And we really hope to expand this beyond just what I've shown you for multiple teams, but also down to the customer level like I was just talking to you about."}, {"id": "s100", "start": 723.64, "end": 726.48, "text": "The third part is the self-service model."}, {"id": "s101", "start": 726.48, "end": 737.08, "text": "And what I'm showing you here is our internal tool called Cloudflare OS, which is an agentic workspace that is running on Cloudflare where the go-to-market team can come in here."}, {"id": "s102", "start": 737.08, "end": 749.32, "text": "It spins up their own compute and their own persistent environment using Cloudflare workers as well as durable objects, which is basically a storage sort of like S3."}, {"id": "s103", "start": 749.32, "end": 756.0, "text": "And so, the sales people can come in here and get the data they need it when they need it."}, {"id": "s104", "start": 756.64, "end": 766.76, "text": "So, some use cases that these teams are using it for is doing a forecast brief, building QBR decks, building a purchase deck on what the customer that they're onboarding has purchased,"}, {"id": "s105", "start": 766.76, "end": 771.88, "text": "doing account planning, general queries of the data, as well as renewal preparation."}, {"id": "s106", "start": 771.88, "end": 781.12, "text": "How are they going to look at what the customer has used and either upsell them or figure out how they can get them adopting their product more."}, {"id": "s107", "start": 781.48, "end": 785.92, "text": "So, just a little bit more into that Cloudflare S setup that I just showed you."}, {"id": "s108", "start": 785.92, "end": 789.64, "text": "The AI agent workspace is where that screen I was I was showing you."}, {"id": "s109", "start": 789.64, "end": 802.76, "text": "And through the the three-part piece of the skills in the lower left, which is our like expert level information, as well as the MCP connection and the AI gateway,"}, {"id": "s110", "start": 802.76, "end": 816.4, "text": "they're able to have conversations in this agentic workspace to pull data they need and using expert-level skills, which is curated, um so that they're able to execute the jobs that they need to do when they need to do it."}, {"id": "s111", "start": 816.4, "end": 832.32, "text": "And so, a little more information about the skill repository, uh we have a central alias where skills are presented uh to uh the central team, curated by the uh go-to-market team, as well as by operations team, and they're reviewed, so we can make sure that we're not having a proliferation"}, {"id": "s112", "start": 832.32, "end": 843.48, "text": "of skills, and we have an expert-level knowledge skill at every level, so that they can really get all the information they need for how to approach uh any customer situation."}, {"id": "s113", "start": 844.36, "end": 847.88, "text": "And so, just a few more uh um images here of uh them using it."}, {"id": "s114", "start": 847.88, "end": 852.56, "text": "Here, uh we have them building a prescriptive plan for their daily work."}, {"id": "s115", "start": 852.56, "end": 860.52, "text": "They're asking a question, it's their um you can see the agent is responding by looking into the MCP and starting to pull the data together."}, {"id": "s116", "start": 860.52, "end": 869.04, "text": "And related to the QBR deck, uh here's a slide of generating a custom slide deck for a customer call."}, {"id": "s117", "start": 869.36, "end": 878.8389999999999, "text": "And so, this has really, I think, unlocked the ability of the go-to-market teams to be able to really have all their information uh serviced to them."}, {"id": "s118", "start": 879.04, "end": 882.32, "text": "And so, bring it together with the three pillars that I talked about."}, {"id": "s119", "start": 882.32, "end": 893.4, "text": "Um if you really don't have all these, I think you have issues with serving the go-to-market needs uh in terms of uh using optimizing the use of Agentyc uh systems."}, {"id": "s120", "start": 893.4, "end": 899.6, "text": "With self-service, you allow them to be able to pull data when they need it for whatever situation they need it with the expert-level information."}, {"id": "s121", "start": 899.6, "end": 911.08, "text": "The the second is by pushing the uh the insights to the business, you're able to surface the generalized standardized information of how these teams are doing, and also um"}, {"id": "s122", "start": 911.08, "end": 915.76, "text": "yeah, so so that there's no and also uh so they're aligning with source of truth on performance."}, {"id": "s123", "start": 915.76, "end": 925.28, "text": "Um and then, the the third one is the scaling of the analytical team for them to be able to answer queries and build applications for the teams, which really unlocks a lot"}, {"id": "s124", "start": 925.28, "end": 934.44, "text": "um because the opportunity cost of that team being overloaded and being able to help is that the meet the needs of the go-to-market team um is not met."}, {"id": "s125", "start": 934.44, "end": 937.52, "text": "So, some findings um and the future."}, {"id": "s126", "start": 937.52, "end": 943.52, "text": "So, uh the first thing is skill curation is the basis for all of this agentic workforce."}, {"id": "s127", "start": 943.52, "end": 952.72, "text": "If you're able to embed the knowledge of the business into the skill files as well as the skills uh uh for the an analyst to be able to build"}, {"id": "s128", "start": 952.72, "end": 967.6, "text": "uh answer questions or build applications as well as the skills that I showed you in the Cloudflare OS, you're really able to uh give them the ability to use the agentic systems in a more predictable and deterministic way so that they can execute"}, {"id": "s129", "start": 967.6, "end": 969.56, "text": "um evenly across the board."}, {"id": "s130", "start": 969.56, "end": 974.76, "text": "The second thing is through this whole process, the feedback loop is very important."}, {"id": "s131", "start": 974.76, "end": 985.28, "text": "Just like uh a company would try to sell a product externally and get feedback, with these internal teams, uh the feedback loop is very important to be able to see is is what you're building is it actually useful?"}, {"id": "s132", "start": 985.28, "end": 986.8389999999999, "text": "What are some issues that they're having?"}, {"id": "s133", "start": 986.8389999999999, "end": 990.32, "text": "And how can you make this uh work more efficiently?"}, {"id": "s134", "start": 990.32, "end": 995.52, "text": "And the third thing is the layering of those uh three pillars that I talked about."}, {"id": "s135", "start": 995.52, "end": 1003.88, "text": "Being able to answer questions where the team comes to you, some of the go-to-market team, that's how they like to interface with the operations team is to be able to ask questions."}, {"id": "s136", "start": 1003.88, "end": 1007.44, "text": "Um and then the pushing of information and then self-serviceability."}, {"id": "s137", "start": 1007.44, "end": 1015.88, "text": "Through that, you're able to uh interweave all the needs of the team to be able to be met by this uh agentic run uh team."}, {"id": "s138", "start": 1015.88, "end": 1028.959, "text": "So, through all these uh different pillars that I talked about, we've really been able to 2x our efficiency and be able to serve the teams as well as allowing them to be able to get the information that they need to do their job."}, {"id": "s139", "start": 1028.959, "end": 1031.92, "text": "And some some things um that I see going into the future."}, {"id": "s140", "start": 1031.92, "end": 1036.04, "text": "Number one is a deeper integration with uh our systems that we work in."}, {"id": "s141", "start": 1036.04, "end": 1050.6, "text": "So, for example, those QBR decks and um renewal call skills, uh how can we set up meetings for the go-to-market team and embed those artifacts in those meetings so they don't have to actually pull them."}, {"id": "s142", "start": 1050.6, "end": 1055.76, "text": "We can allow them to that self-service portal to be more ad hoc in what they need."}, {"id": "s143", "start": 1055.76, "end": 1060.08, "text": "But, that requires some information or some security setup and how can we do that?"}, {"id": "s144", "start": 1060.08, "end": 1068.16, "text": "And then also, another example is getting meeting notes from those calls, which you have to set up that across the board."}, {"id": "s145", "start": 1068.16, "end": 1071.64, "text": "So, there's some system side thing that we have to work on there."}, {"id": "s146", "start": 1071.64, "end": 1079.72, "text": "The second thing is harder problems around quoting and approvals and updating the CRM itself."}, {"id": "s147", "start": 1079.72, "end": 1088.92, "text": "Uh we use Salesforce and we're just in the midst of building the connections and the ability for us to update Salesforce with these Agenty systems."}, {"id": "s148", "start": 1088.92, "end": 1099.16, "text": "And I see that being um set up in a way that I set up with that automated analysis where you have workflows uh to just make sure that everything is getting"}, {"id": "s149", "start": 1099.16, "end": 1100.28, "text": "um done right."}, {"id": "s150", "start": 1100.28, "end": 1112.0, "text": "And the second thing is we're sort of reached the Cambrian stage of using Agenty systems, which means there's an explosion of excitement and skills and finding out ways to solve anything with AI."}, {"id": "s151", "start": 1112.0, "end": 1130.76, "text": "But, I see as we get to this uh fuller integration and standardization, we're going to uh want to come back and and and not really limit, but just figure out a really strategic approach for allowing each team to use the Agenty system so that the source of truth in all the systems are aligning."}, {"id": "s152", "start": 1130.76, "end": 1131.04, "text": "All right."}, {"id": "s153", "start": 1131.04, "end": 1135.76, "text": "Well, thank you for joining this talk and I appreciate you, um you know, coming here."}, {"id": "s154", "start": 1135.76, "end": 1137.093, "text": "Hope you have a great conference."}, {"id": "s155", "start": 1137.093, "end": 1139.093, "text": "[applause]"}, {"id": "s156", "start": 1152.813, "end": 1154.813, "text": "[music]"}]}, {"id": "REascnFlq_8", "title": "Agents' next frontier: agent-to-agent and network effects — Jean-Denis Greze, Town", "channel": "AI Engineer", "duration": 1277, "upload_date": null, "url": "https://www.youtube.com/watch?v=REascnFlq_8", "api": "/api/talks/REascnFlq_8.json", "summary_url": "/#REascnFlq_8", "transcript": {"html": "/transcripts/REascnFlq_8.html", "txt": "/transcripts/REascnFlq_8.txt", "vtt": "/transcripts/REascnFlq_8.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.56, "end": 13.56, "text": "Can you all hear me?"}, {"id": "s3", "start": 13.56, "end": 14.56, "text": "All right."}, {"id": "s4", "start": 14.56, "end": 16.92, "text": "Um Well, first things for coming."}, {"id": "s5", "start": 16.92, "end": 20.0, "text": "I can't believe there's anybody in the room, but that's very nice."}, {"id": "s6", "start": 20.0, "end": 22.72, "text": "Uh Uh my name is Jean-Denis."}, {"id": "s7", "start": 22.72, "end": 25.08, "text": "Um I'm CTO at a company called Town."}, {"id": "s8", "start": 25.08, "end": 31.4, "text": "We're not going to really talk about Town, so you can go to town.com and check that out if you want, but that's not the point of the talk today."}, {"id": "s9", "start": 31.4, "end": 36.76, "text": "I was CTO at Plaid for 7 years, and then I was at Dropbox before."}, {"id": "s10", "start": 36.76, "end": 38.92, "text": "And then before that I built software for hedge funds."}, {"id": "s11", "start": 38.92, "end": 50.0, "text": "I've done lots of stuff in my career, and right now I'm working on uh assistance agents for for normal people, not not for engineers, but for like basically everyone in America and the world."}, {"id": "s12", "start": 50.0, "end": 54.96, "text": "And one of the things we've been working on are systems where agents work with other agents."}, {"id": "s13", "start": 54.96, "end": 56.6, "text": "So, agent-to-agent."}, {"id": "s14", "start": 56.6, "end": 67.68, "text": "And the main idea is that we think there's huge network effects if agents can work together to get things done for people because in the real world the way most of us do work"}, {"id": "s15", "start": 67.68, "end": 69.88, "text": "is with other people, right?"}, {"id": "s16", "start": 69.88, "end": 71.44, "text": "Uh more is better."}, {"id": "s17", "start": 71.44, "end": 76.64, "text": "But, actually I don't think agent-to-agent makes much sense as a concept."}, {"id": "s18", "start": 76.64, "end": 80.36, "text": "So, I want to reframe the entire talk in terms of search."}, {"id": "s19", "start": 80.36, "end": 85.76, "text": "So, I think most LLM systems are just a search problem."}, {"id": "s20", "start": 85.76, "end": 97.52000000000001, "text": "And what you're trying to do is you're trying to make sure the context window right before you either return results to the user or before a tool call, you're trying to make sure the context window has the right information for the user."}, {"id": "s21", "start": 97.52000000000001, "end": 106.0, "text": "If you put the right information in the context window then based on the intelligence, so to speak, of the LLM, you will get the best result possible."}, {"id": "s22", "start": 106.0, "end": 112.75999999999999, "text": "Um so, you know, 4 years ago the way we did that is humans would populate the context window manually."}, {"id": "s23", "start": 112.75999999999999, "end": 120.4, "text": "Then a couple years ago, most people are ragging, so they were like, let's have a tool, like a search tool, that can look across systems and bring the data in there."}, {"id": "s24", "start": 120.4, "end": 124.0, "text": "And then people were like, well, that doesn't scale super well, has issues."}, {"id": "s25", "start": 124.0, "end": 135.52, "text": "And now we're all about agentic search, which is the idea that you give the agent a lot of tools, and it'll search through the space of all content, and then hopefully before it makes a tool call, it has exactly the right content"}, {"id": "s26", "start": 135.52, "end": 139.07999999999998, "text": "to make the right tool call to return the right information to the user."}, {"id": "s27", "start": 139.07999999999998, "end": 141.92000000000002, "text": "Um and in this, by the way, there's no there's no people."}, {"id": "s28", "start": 141.92000000000002, "end": 145.8, "text": "It's just a one LLM call at the like the one that matters having the right context."}, {"id": "s29", "start": 145.8, "end": 146.84, "text": "That's That's what you're trying to do."}, {"id": "s30", "start": 146.84, "end": 150.2, "text": "You're trying to engineer um that system."}, {"id": "s31", "start": 150.2, "end": 150.44, "text": "Cool."}, {"id": "s32", "start": 150.44, "end": 152.52, "text": "So, what what does that have to do with agent agent?"}, {"id": "s33", "start": 152.52, "end": 155.64, "text": "So, I want you to imagine the following world."}, {"id": "s34", "start": 155.64, "end": 159.36, "text": "There's not many agents that can do things."}, {"id": "s35", "start": 159.36, "end": 161.68, "text": "There's just one agent, right?"}, {"id": "s36", "start": 161.68, "end": 167.2, "text": "And it has one context window, and it has access to all the information in the universe."}, {"id": "s37", "start": 167.2, "end": 176.88, "text": "It can look at any one person's email, can look at any company's information, can look at any government's information, and it has it right there in the context window,"}, {"id": "s38", "start": 176.88, "end": 178.6, "text": "and then you ask it to do something."}, {"id": "s39", "start": 178.6, "end": 185.12, "text": "You You have your little system prompt with all that data, and what's going to happen is it'll give you the best possible outcome."}, {"id": "s40", "start": 185.12, "end": 189.64, "text": "And that actually That is a multi-agent world."}, {"id": "s41", "start": 189.64, "end": 191.76, "text": "It's just an agent that has access to all the world's information."}, {"id": "s42", "start": 191.76, "end": 193.2, "text": "That's the natural state of things."}, {"id": "s43", "start": 193.2, "end": 194.64, "text": "That's the ideal state of things."}, {"id": "s44", "start": 194.64, "end": 210.07999999999998, "text": "There's a problem with this state of things, and the problem comes from a few So, you're learning economics something called the Coase theorem, and it says that basically even humans, if they all have access to all the right information and there's no transaction costs, we get the economically"}, {"id": "s45", "start": 210.07999999999998, "end": 213.959, "text": "ideal outcome out of a out of a contract or negotiation."}, {"id": "s46", "start": 213.959, "end": 214.88, "text": "Well, it's the same thing."}, {"id": "s47", "start": 214.88, "end": 218.88, "text": "We can't put all of the world's contacts We can't make it available to the LLM."}, {"id": "s48", "start": 218.88, "end": 224.4, "text": "Like theoretically even with infinite context window, because of privacy and security."}, {"id": "s49", "start": 224.4, "end": 225.32, "text": "We're humans."}, {"id": "s50", "start": 225.32, "end": 232.2, "text": "I don't let you look at my email, so there cannot be an agent that I'm willing to just let it look at my email all the time."}, {"id": "s51", "start": 232.2, "end": 235.76, "text": "But, if it existed, it would be very, very powerful."}, {"id": "s52", "start": 235.76, "end": 242.08, "text": "So, I I think this is like this is the test for a multi-agent system, which is how well does it approximate this?"}, {"id": "s53", "start": 242.08, "end": 250.56, "text": "If it approximates this, that means if you can get the same data in your window that a perfect system that has access to all the world's data could, then you get the optimal outcome."}, {"id": "s54", "start": 250.56, "end": 251.92, "text": "That's what you need to try to do."}, {"id": "s55", "start": 251.92, "end": 262.0, "text": "So, we're going to talk about five strategies that people use at various companies to try to get the right data into that that LLM call with an externality."}, {"id": "s56", "start": 262.0, "end": 268.36, "text": "So, the first one is approximate access to everything within a trust boundary."}, {"id": "s57", "start": 268.36, "end": 279.15999999999997, "text": "So, my wife and I, we have an agent together, and that agent has access to my email and her email, uh including emails before we were married."}, {"id": "s58", "start": 279.15999999999997, "end": 288.4, "text": "Uh and it's okay, she doesn't ask my agent questions about that, but she does ask about, you know, whether I like schedule something for our kids or, you know, uh if I followed up on some third-party thing."}, {"id": "s59", "start": 288.4, "end": 292.12, "text": "And so, the fact that our agent has access to both of our systems is wonderful."}, {"id": "s60", "start": 292.12, "end": 303.64, "text": "Um and the work context, this might be there's a an HR team agent that has access to all the HR systems, just like an employee of the HR team would, or maybe as much access as the lowest employee in the HR team."}, {"id": "s61", "start": 303.64, "end": 310.68, "text": "All the employees in the HR team have the ability to ask this agent questions, and boom, it gets pretty good results."}, {"id": "s62", "start": 310.68, "end": 312.76, "text": "And this is very popular right now."}, {"id": "s63", "start": 312.76, "end": 320.56, "text": "Uh it's very popular with IT teams and security teams cuz it's the same model as SaaS for security, so it works really well."}, {"id": "s64", "start": 320.56, "end": 327.64, "text": "I think it has a problem, which is a fundamental problem that if I wake up in the morning, it's like basically the only thing I think about, which is"}, {"id": "s65", "start": 327.64, "end": 332.48, "text": "does it get Over time, does this system naturally require fewer humans?"}, {"id": "s66", "start": 332.48, "end": 336.28, "text": "And then, as the models get better, does this approach get better?"}, {"id": "s67", "start": 336.28, "end": 339.15999999999997, "text": "And the problem with this approach is the answer is no to both."}, {"id": "s68", "start": 339.15999999999997, "end": 345.8, "text": "Uh you still need humans to think about all the data, and you don't get magical de-siloification of your data."}, {"id": "s69", "start": 345.8, "end": 349.12, "text": "You've just created a new silo cuz a human thought about it."}, {"id": "s70", "start": 349.12, "end": 356.76, "text": "So, the problem with this is I do think if this is your approach to building better AI, you're going to be in the next couple years."}, {"id": "s71", "start": 356.76, "end": 358.12, "text": "Um but that's okay."}, {"id": "s72", "start": 358.12, "end": 360.88, "text": "Your is my opportunity."}, {"id": "s73", "start": 360.88, "end": 363.24, "text": "Uh I'm just I'm just not an I'm sorry."}, {"id": "s74", "start": 363.24, "end": 363.68, "text": "That was mean."}, {"id": "s75", "start": 363.68, "end": 366.76, "text": "But like I think it's not I think it's a good now way to think about it."}, {"id": "s76", "start": 366.76, "end": 369.08, "text": "It's not the good end game way to think about it."}, {"id": "s77", "start": 369.08, "end": 378.44, "text": "The other approach which is I think is a little more clever and then I'm going to try to explain it is basically you try to have tools that make a different trade-off between power and privacy."}, {"id": "s78", "start": 378.44, "end": 380.8, "text": "So, I'm going to give you an example here."}, {"id": "s79", "start": 380.8, "end": 389.4, "text": "Um the use case is I want to ask my agent, does anyone in my company is anyone in my company connected to someone on the finance team at Acme Corp?"}, {"id": "s80", "start": 389.4, "end": 396.12, "text": "And so, what the the no silo way to do that is just give me access to everyone's Gmail in my company."}, {"id": "s81", "start": 396.12, "end": 398.6, "text": "I'll see who has emails with people from Acme Corp."}, {"id": "s82", "start": 398.6, "end": 404.44, "text": "Then I'll look at their profile on Google or LinkedIn and then I'll be like, oh, you seem to email a lot with the CFO."}, {"id": "s83", "start": 404.44, "end": 405.88, "text": "Can you do the intro for me?"}, {"id": "s84", "start": 405.88, "end": 408.15999999999997, "text": "But right, obviously silos, we don't want that."}, {"id": "s85", "start": 408.15999999999997, "end": 413.4, "text": "So, what if you build a tool and what the tool did is it looked at everyone's Gmail."}, {"id": "s86", "start": 413.4, "end": 418.96, "text": "So, that tool had access to everyone's Gmail and it just returned a relationship strength score."}, {"id": "s87", "start": 418.96, "end": 424.16, "text": "So, the tool you would give it like a domain and you would say I'm looking for someone who's a CFO."}, {"id": "s88", "start": 424.16, "end": 431.0, "text": "It would look at everyone at the company who sent emails to that company and then it would like rank their score and they would give you back the score"}, {"id": "s89", "start": 431.0, "end": 433.12, "text": "and then the agent would get the score and it would be like cool."}, {"id": "s90", "start": 433.12, "end": 435.919, "text": "Then they would use a Slack tool to text that person the company."}, {"id": "s91", "start": 435.919, "end": 440.0, "text": "It's like, hey Bob, I see that you're connected to the Jane who's the CFO at Acme Corp."}, {"id": "s92", "start": 440.0, "end": 441.919, "text": "And then Bob would be like, yes, I am."}, {"id": "s93", "start": 441.919, "end": 446.84, "text": "And then your AI would be like, oh, can you draft an e- can I draft an email or can you draft an email introducing me?"}, {"id": "s94", "start": 446.84, "end": 451.36, "text": "And then Bob would say, yes, and he would do that and you'd be connected and everything would be wonderful."}, {"id": "s95", "start": 451.36, "end": 453.36, "text": "So, this is actually very cool approach."}, {"id": "s96", "start": 453.36, "end": 454.68, "text": "I don't know how many of you do it."}, {"id": "s97", "start": 454.68, "end": 458.2, "text": "Like we we do this at Town for a few things that we see a lot of our users do."}, {"id": "s98", "start": 458.2, "end": 462.68, "text": "We ask ourself, what is a privacy preserving tool that all of our users would be okay existing?"}, {"id": "s99", "start": 462.68, "end": 469.08, "text": "They can opt out if they don't want it, but it has a natural network effect because it breaks through silos in interesting way."}, {"id": "s100", "start": 469.08, "end": 474.04, "text": "Um, like another one that's interesting here is letting other people put draft emails in your inbox."}, {"id": "s101", "start": 474.04, "end": 482.04, "text": "You let other people at your company draft emails on your behalf cuz they're going to ask you to anyway to get intros if they're on the sales team, so might as well save yourself a few clicks."}, {"id": "s102", "start": 482.04, "end": 488.0, "text": "So, the question here is like are people going to be okay with a privacy trade-off that you make within a corporation?"}, {"id": "s103", "start": 488.0, "end": 489.44, "text": "Uh, bad."}, {"id": "s104", "start": 489.44, "end": 491.2, "text": "Bad."}, {"id": "s105", "start": 491.2, "end": 493.04, "text": "Oh, boy."}, {"id": "s106", "start": 493.04, "end": 496.36, "text": "Within a corporation that will, you know, mostly it works."}, {"id": "s107", "start": 496.36, "end": 501.24, "text": "Um, so the problem here again is it's again manual and not dynamic."}, {"id": "s108", "start": 501.24, "end": 503.72, "text": "It's manual cuz humans need to think about the tools."}, {"id": "s109", "start": 503.72, "end": 505.88, "text": "Maybe I could build the tools."}, {"id": "s110", "start": 505.88, "end": 509.84, "text": "Uh, and it's also manual cuz you need to explain it to everyone that it's happening."}, {"id": "s111", "start": 509.84, "end": 516.479, "text": "Humans may not like it if this is happening if they're not okay with the privacy security the privacy kind of power trade-off that you've made."}, {"id": "s112", "start": 516.479, "end": 517.28, "text": "Cool."}, {"id": "s113", "start": 517.28, "end": 520.039, "text": "And again, this doesn't really get better as they I guess better."}, {"id": "s114", "start": 520.039, "end": 521.68, "text": "That's the problem."}, {"id": "s115", "start": 521.68, "end": 521.84, "text": "Cool."}, {"id": "s116", "start": 521.84, "end": 522.8, "text": "So, now the third category."}, {"id": "s117", "start": 522.8, "end": 526.2, "text": "This one's super popular, but only mostly in the single user context."}, {"id": "s118", "start": 526.2, "end": 529.0, "text": "So, this is, you know, like personal wikis in claw land."}, {"id": "s119", "start": 529.0, "end": 530.48, "text": "That's what we would call it."}, {"id": "s120", "start": 530.48, "end": 531.64, "text": "But it's across teams."}, {"id": "s121", "start": 531.64, "end": 534.24, "text": "So, it's a shared silo."}, {"id": "s122", "start": 534.24, "end": 539.8389999999999, "text": "Create a new place where data accumulates within your company within subgroups at your company."}, {"id": "s123", "start": 539.8389999999999, "end": 543.52, "text": "Um, and you start to put more and more stuff there over time."}, {"id": "s124", "start": 543.52, "end": 545.6, "text": "And all the agents have access to that stuff."}, {"id": "s125", "start": 545.6, "end": 551.12, "text": "Because they have access to it, you no longer have information that would be okay to be shared that's stuck in a silo."}, {"id": "s126", "start": 551.12, "end": 553.72, "text": "It now automatically filters out into this public space."}, {"id": "s127", "start": 553.72, "end": 556.28, "text": "So, examples, shared skills."}, {"id": "s128", "start": 556.28, "end": 560.56, "text": "If you code in an organization, probably in your repo you have shared skills."}, {"id": "s129", "start": 560.56, "end": 561.96, "text": "Anyone can make them better."}, {"id": "s130", "start": 561.96, "end": 565.12, "text": "Someone has a better way to, you know, profile your database or whatever."}, {"id": "s131", "start": 565.12, "end": 565.92, "text": "They can write the skill."}, {"id": "s132", "start": 565.92, "end": 569.8389999999999, "text": "Next time someone's sitting there is like, \"Oh my god, the database query is slow.\""}, {"id": "s133", "start": 569.8389999999999, "end": 573.44, "text": "It uses the profiling skill and everyone's a better engineer."}, {"id": "s134", "start": 573.44, "end": 574.24, "text": "So, that's one version."}, {"id": "s135", "start": 574.24, "end": 584.24, "text": "The other one that's pretty popular is people decide they have some shared mediums, like a wiki, airtable, etc. And they uh they have a scale that says, \"Hey, put more data in there over time.\""}, {"id": "s136", "start": 584.24, "end": 585.88, "text": "So, these are cool."}, {"id": "s137", "start": 585.88, "end": 596.92, "text": "Um and they work as long as your your agents have those tools and also some trajectory incentives to really like get data out in and out of of these shared silos."}, {"id": "s138", "start": 596.92, "end": 602.88, "text": "Um I think the next version of this that a few people are working on is like you have a sweeper AI."}, {"id": "s139", "start": 602.88, "end": 608.32, "text": "So, this actually if there's one good idea in this talk that I think works really well is this."}, {"id": "s140", "start": 608.32, "end": 609.16, "text": "It's a sweeper AI."}, {"id": "s141", "start": 609.16, "end": 612.28, "text": "So, you have an AI inside each private silo."}, {"id": "s142", "start": 612.28, "end": 617.56, "text": "An AI has a policy about what has to stay in the silo."}, {"id": "s143", "start": 617.56, "end": 621.96, "text": "And then it also has a description of all the shared spaces that you have."}, {"id": "s144", "start": 621.96, "end": 626.92, "text": "And at the end of the day, it looks at new information in the silo and it puts it in the public spaces."}, {"id": "s145", "start": 626.92, "end": 628.68, "text": "Well, public, public to your company."}, {"id": "s146", "start": 628.68, "end": 637.0, "text": "So, this is the same as the personal wiki that you all have AI building for you at the end of the day so that I can know your goals and your friends and all that stuff, but it's at the company level."}, {"id": "s147", "start": 637.0, "end": 644.4, "text": "Um the hard part is how do we pick what private information is okay to to share and to put it in shared silos."}, {"id": "s148", "start": 644.4, "end": 645.8, "text": "And I think there's two approaches."}, {"id": "s149", "start": 645.8, "end": 648.24, "text": "There's the ask a human approach."}, {"id": "s150", "start": 648.24, "end": 656.64, "text": "So, this is like the LLM comes up with a list of things to contribute and then it asks the user, \"Hey, are you okay with me putting this in the shared space?\""}, {"id": "s151", "start": 656.64, "end": 657.2, "text": "And you read it."}, {"id": "s152", "start": 657.2, "end": 658.24, "text": "You're like, \"Yep.\""}, {"id": "s153", "start": 658.24, "end": 659.72, "text": "Saved you a bunch of time."}, {"id": "s154", "start": 659.72, "end": 660.0, "text": "Right?"}, {"id": "s155", "start": 660.0, "end": 662.2, "text": "I mean, you weren't going to do it otherwise."}, {"id": "s156", "start": 662.2, "end": 667.6, "text": "Uh I think the other version is you actually ask the LLM to enforce a policy."}, {"id": "s157", "start": 667.6, "end": 671.2, "text": "And I think that actually is where things are going to go very, very quickly."}, {"id": "s158", "start": 671.2, "end": 682.8389999999999, "text": "Um and I think in the next 6 months we'll have a bunch of systems where companies have trusted an LLM with a policy to automatically surface more and more information that otherwise would have been private into a public space."}, {"id": "s159", "start": 682.8389999999999, "end": 692.36, "text": "If you're like at a Fortune 500 enterprise company, unfortunately, I don't think that's going to happen for a while, but I think if you look at smaller companies, like 10, 50 person employees, high trust,"}, {"id": "s160", "start": 692.36, "end": 701.84, "text": "like low likelihood of something one one doing bad with the data, which really clear to know what data couldn't be shared, basically finance and HR data, you're going to see a ton of this."}, {"id": "s161", "start": 701.84, "end": 707.76, "text": "And the cool thing here is this really improves trajectories of systems on on common work."}, {"id": "s162", "start": 707.76, "end": 709.0, "text": "All right, that was third approach."}, {"id": "s163", "start": 709.0, "end": 712.44, "text": "Fourth approach pretty obvious, use humans as the conduit for information."}, {"id": "s164", "start": 712.44, "end": 715.32, "text": "So this is like traditional agent to agent."}, {"id": "s165", "start": 715.32, "end": 723.84, "text": "My agent ask your agent, \"Hey, who is connected to someone on the finance team at Acme Corp?\""}, {"id": "s166", "start": 723.84, "end": 727.28, "text": "You as a human see the request and you're like, \"Yeah, I'm okay with that."}, {"id": "s167", "start": 727.28, "end": 730.52, "text": "Go and find the information inside of my email.\""}, {"id": "s168", "start": 730.52, "end": 732.24, "text": "And then it shows you the result."}, {"id": "s169", "start": 732.24, "end": 737.0, "text": "And then you're like, \"Yes, I'm okay with that result going to the person who asked.\""}, {"id": "s170", "start": 737.0, "end": 745.48, "text": "The big problem with it is for for any request that has low where it's like only a few people will have the information, you're kind of spamming everyone the request."}, {"id": "s171", "start": 745.48, "end": 758.16, "text": "So if I ask this question to 100-person company, 100 people are being pinged on Slack, being like approves on these requests to like farm your personal network for this for this, you know, for this like the answer to this question."}, {"id": "s172", "start": 758.16, "end": 759.76, "text": "That's not very efficient."}, {"id": "s173", "start": 759.76, "end": 763.12, "text": "Um And so that's why there's a better version of it."}, {"id": "s174", "start": 763.12, "end": 768.56, "text": "Um which I this is this is very powerful, but uh I haven't seen it in practice much."}, {"id": "s175", "start": 768.56, "end": 771.04, "text": "It's it's a black box approach."}, {"id": "s176", "start": 771.04, "end": 772.4, "text": "I wish I had a diagram for this."}, {"id": "s177", "start": 772.4, "end": 774.48, "text": "Unfortunately for you all, I do not."}, {"id": "s178", "start": 774.48, "end": 776.04, "text": "So here's what this means."}, {"id": "s179", "start": 776.04, "end": 784.52, "text": "The black box approach is where when you ask a question that can only be answered by looking at information in other people's silos."}, {"id": "s180", "start": 784.52, "end": 793.839, "text": "You have an LLM, the trace of which no one has access to, that gets access to all of the data, and it gets to the answer."}, {"id": "s181", "start": 793.839, "end": 794.28, "text": "Right?"}, {"id": "s182", "start": 794.28, "end": 800.64, "text": "Like by say get to the answer, either gets the answer or it's about to do the the the any tool call that's all right."}, {"id": "s183", "start": 800.64, "end": 810.48, "text": "And then it looks at what information did it need to make that tool call, and it only ask the people who own that information for their approval to do the tool call."}, {"id": "s184", "start": 810.48, "end": 816.92, "text": "So, in the example before that I gave, when I ask 100 people at my company, \"Hey, do you know the CFO at Acme Corp?\""}, {"id": "s185", "start": 816.92, "end": 821.04, "text": "The request goes to everyone's agents in my company."}, {"id": "s186", "start": 821.04, "end": 827.24, "text": "All of their agents look in their Gmail and their private silos to see if they're connected to the CFO."}, {"id": "s187", "start": 827.24, "end": 828.6, "text": "That happens automatically."}, {"id": "s188", "start": 828.6, "end": 831.92, "text": "No No human is being asked for approval for that to happen."}, {"id": "s189", "start": 831.92, "end": 839.28, "text": "Then it the agent in the black box ha gets the list of the 20 people who are connected."}, {"id": "s190", "start": 839.28, "end": 843.48, "text": "It looks at contacts from the emails to determine who has the strongest connection."}, {"id": "s191", "start": 843.48, "end": 846.2, "text": "It determines that it's Bob."}, {"id": "s192", "start": 846.2, "end": 854.68, "text": "And then, it just asks Bob, \"Hey, Jean-Denis wants you to introduce him to Jane, the CFO at Acme Corp."}, {"id": "s193", "start": 854.68, "end": 856.0, "text": "I know you're well connected to her."}, {"id": "s194", "start": 856.0, "end": 859.16, "text": "Am I okay sharing that bit of information with Jean-Denis?\""}, {"id": "s195", "start": 859.16, "end": 860.12, "text": "And you're like, \"Yeah, sure.\""}, {"id": "s196", "start": 860.12, "end": 860.8, "text": "You click yes."}, {"id": "s197", "start": 860.8, "end": 861.88, "text": "No big deal."}, {"id": "s198", "start": 861.88, "end": 863.8, "text": "The important thing is you have to trust the black box."}, {"id": "s199", "start": 863.8, "end": 877.0, "text": "So, you have to trust that you can break down all the silos for an LLM that has full access and that doesn't ask for permission until there's this sharing moment or this right step."}, {"id": "s200", "start": 877.0, "end": 880.8, "text": "So, actually, within a company, this is not impossible to do."}, {"id": "s201", "start": 880.8, "end": 885.8389999999999, "text": "Uh and actually, your security and compliance team can get okay with it."}, {"id": "s202", "start": 885.8389999999999, "end": 896.24, "text": "Um you just have to have You have to be sure that the human in the loop step is correct, and you have to be sure that you're not letting other information go through without last answer."}, {"id": "s203", "start": 896.24, "end": 903.4, "text": "So, you know, like the the nightmare scenarios and things like this are things like uh um Sorry."}, {"id": "s204", "start": 903.4, "end": 906.04, "text": "I'm like We have plenty of time."}, {"id": "s205", "start": 906.04, "end": 906.64, "text": "I'm almost done."}, {"id": "s206", "start": 906.64, "end": 907.72, "text": "So, it's great."}, {"id": "s207", "start": 907.72, "end": 919.72, "text": "Um the nightmare scenarios with things like this is someone asks a question like, \"Are you connected to a recruiter at the other company that you have no business being recruited to as a way for them to find out that you're interviewing somewhere else, right?\""}, {"id": "s208", "start": 919.72, "end": 926.48, "text": "So, you know, there are you you still sometimes with a black box inadvertently get an information out that you shouldn't be able to."}, {"id": "s209", "start": 926.48, "end": 930.12, "text": "You have to really think about how you would build a great system."}, {"id": "s210", "start": 930.12, "end": 932.44, "text": "So, those are the those are the approaches."}, {"id": "s211", "start": 932.44, "end": 944.88, "text": "I think if I were to bet on one that has immediate ROI that we're going to all see in both like open source claw-ish worlds and then like small companies, it's going to be the wiki that's automatically created by AI"}, {"id": "s212", "start": 944.88, "end": 946.8, "text": "like the information base that's kept up to date."}, {"id": "s213", "start": 946.8, "end": 955.16, "text": "I think there will be database versions of it, wiki versions of it, and I think more and more we're going to trust LLMs to make the decision about what's okay to share and what's not."}, {"id": "s214", "start": 955.16, "end": 956.4, "text": "There are problems."}, {"id": "s215", "start": 956.4, "end": 961.12, "text": "So, prompt injection in in the silos can be a real problem."}, {"id": "s216", "start": 961.12, "end": 962.08, "text": "Obviously."}, {"id": "s217", "start": 962.08, "end": 972.52, "text": "So, if you have a silo that has like that's more open and someone can put something bad in there and then that as part of the energetic search you pull it out, you know, bad things can can happen."}, {"id": "s218", "start": 972.52, "end": 983.0, "text": "Uh you can have it's very easy to have a shared wiki that just goes like totally off the rails, you know, like the information there one piece of information there is incorrect cuz LLM made a mistake"}, {"id": "s219", "start": 983.0, "end": 984.8, "text": "and then it like poisons it forever."}, {"id": "s220", "start": 984.8, "end": 990.64, "text": "I have a personal wiki that thinks my agent's name is Apex right now, but I renamed my agent a month ago to Ivy."}, {"id": "s221", "start": 990.64, "end": 998.92, "text": "And like somewhere in memory bank uh uh of my like setup uh Apex lives and so I can't get rid of it."}, {"id": "s222", "start": 998.92, "end": 999.8389999999999, "text": "Uh that's fine for Apex."}, {"id": "s223", "start": 999.8389999999999, "end": 1005.36, "text": "That's a funny one, but it's like much more difficult if it's a really wrong piece of information about your business."}, {"id": "s224", "start": 1005.36, "end": 1013.24, "text": "Um if you don't have human in the loop for any of the steps, obviously there'll be false and wrong disclosures."}, {"id": "s225", "start": 1013.24, "end": 1017.04, "text": "You know, sometimes when there's a wrong disclosure of information, someone gets fired."}, {"id": "s226", "start": 1017.04, "end": 1020.44, "text": "Someone there's a wrong disclosure, it doesn't matter at all."}, {"id": "s227", "start": 1020.44, "end": 1022.12, "text": "Sometimes a customer sues you."}, {"id": "s228", "start": 1022.12, "end": 1025.36, "text": "So, you know, uh you got to be careful."}, {"id": "s229", "start": 1025.36, "end": 1032.12, "text": "Um and then I think this all sounds nice, but like who approves what, what's logged, what's reversible?"}, {"id": "s230", "start": 1032.12, "end": 1036.36, "text": "The black box idea is really great, but it can't truly be a black box."}, {"id": "s231", "start": 1036.36, "end": 1039.079, "text": "Someone at your company will want to audit it at some point."}, {"id": "s232", "start": 1039.079, "end": 1040.839, "text": "They want to understand what's going in there, right?"}, {"id": "s233", "start": 1040.839, "end": 1046.6, "text": "So, at some level there must be some person in the CISO suite or somewhere that has access to all the data."}, {"id": "s234", "start": 1046.6, "end": 1049.56, "text": "Um Yeah."}, {"id": "s235", "start": 1049.56, "end": 1052.24, "text": "So, um what do I think?"}, {"id": "s236", "start": 1052.24, "end": 1053.84, "text": "Well, I do think the frontier is auto."}, {"id": "s237", "start": 1053.84, "end": 1054.6, "text": "So, I've said that."}, {"id": "s238", "start": 1054.6, "end": 1056.88, "text": "I think in coding we used to approve everything."}, {"id": "s239", "start": 1056.88, "end": 1059.04, "text": "Then we were like, \"YOLO, live dangerously.\""}, {"id": "s240", "start": 1059.04, "end": 1062.24, "text": "And now the gods at Anthropic have granted us auto mode."}, {"id": "s241", "start": 1062.24, "end": 1066.16, "text": "And auto mode tries to figure out when we're maybe being a little silly and it tells us."}, {"id": "s242", "start": 1066.16, "end": 1070.16, "text": "Well, I think A to A across information silos will be the same way."}, {"id": "s243", "start": 1070.16, "end": 1076.52, "text": "I think what's going to happen is we're going to get comfortable with low sensitivity information being pulled out and put into common spaces."}, {"id": "s244", "start": 1076.52, "end": 1080.92, "text": "And then we will have a place that's like human review or always human approved."}, {"id": "s245", "start": 1080.92, "end": 1084.8, "text": "And then over time what's going to happen is the LLMs will get more powerful."}, {"id": "s246", "start": 1084.8, "end": 1087.36, "text": "We will be better at encoding safe policies within them."}, {"id": "s247", "start": 1087.36, "end": 1093.64, "text": "We'll be better at designing for the really hard areas tools that get the privacy trade-off correct."}, {"id": "s248", "start": 1093.64, "end": 1099.84, "text": "And it'll just be more and more auto for building shared silos and even sometimes for deciding whether involve a human."}, {"id": "s249", "start": 1099.84, "end": 1112.04, "text": "So, the example that I have is like if I ask for notes from a weekly recurring call with, you know, a supplier of ours and their finance team, maybe the the LLM's like, \"Oh, well, in giving your role,"}, {"id": "s250", "start": 1112.04, "end": 1114.44, "text": "I don't need to ask anyone on those teams for permission."}, {"id": "s251", "start": 1114.44, "end": 1116.0, "text": "I can just share the notes with you."}, {"id": "s252", "start": 1116.0, "end": 1117.2, "text": "It's like it's fine."}, {"id": "s253", "start": 1117.2, "end": 1118.64, "text": "I they can it can look at the content."}, {"id": "s254", "start": 1118.64, "end": 1119.84, "text": "It can see what my role is."}, {"id": "s255", "start": 1119.84, "end": 1123.92, "text": "It can decide from a risk perspective I'm okay with that disclosure.\""}, {"id": "s256", "start": 1123.92, "end": 1129.32, "text": "Um and the cool thing about auto, by the way, is if you design your systems that way, it'll scale with model capacity."}, {"id": "s257", "start": 1129.32, "end": 1139.52, "text": "So, my encouragement would be like, you need to start if you have agent to agent or or work across silos, which is I think the better way to think about it, definitely define a low sensitivity zone"}, {"id": "s258", "start": 1139.52, "end": 1142.48, "text": "where you're okay with the LLM making a call."}, {"id": "s259", "start": 1142.48, "end": 1144.56, "text": "And get okay with that."}, {"id": "s260", "start": 1144.56, "end": 1153.24, "text": "And then magically, as time goes on, it'll get bigger and your system will naturally get more powerful, which is what you you So, you want to be on a beach."}, {"id": "s261", "start": 1153.64, "end": 1154.32, "text": "That's what you want to do."}, {"id": "s262", "start": 1154.32, "end": 1155.48, "text": "That's where I want to be."}, {"id": "s263", "start": 1155.48, "end": 1157.4, "text": "My kids in Hawaii."}, {"id": "s264", "start": 1157.4, "end": 1158.28, "text": "Okay, network effects."}, {"id": "s265", "start": 1158.28, "end": 1159.48, "text": "I've 1 minute."}, {"id": "s266", "start": 1159.48, "end": 1160.84, "text": "Uh this is the conclusion."}, {"id": "s267", "start": 1160.84, "end": 1170.04, "text": "So, we talked about five approaches, blah blah blah, trust boundaries, custom tools, shared silos, humans in the loop, and this human in the black box version."}, {"id": "s268", "start": 1170.04, "end": 1172.36, "text": "Uh I think this stuff is very powerful."}, {"id": "s269", "start": 1172.36, "end": 1177.96, "text": "I think the interesting questions a little bit are in within companies, I think this will all work very soon."}, {"id": "s270", "start": 1177.96, "end": 1183.6, "text": "The big question is where how how how comfortable are we are we with something like an auto mode around privacy?"}, {"id": "s271", "start": 1183.6, "end": 1192.28, "text": "And I think the really interesting question that I don't have an answer for, but I think whoever does this will be wealthier than I am, is if you can think of"}, {"id": "s272", "start": 1192.28, "end": 1201.0, "text": "scenarios where you can get multiple companies to agree to their information silos having a common agent working across them."}, {"id": "s273", "start": 1201.0, "end": 1208.8, "text": "So, there's like a company that I won't name in in in in somewhere in the world, uh working on like finance stuff where they have a lot of investment banks."}, {"id": "s274", "start": 1208.8, "end": 1215.08, "text": "And actually the investment banks there's a benefit to them sharing private data about private companies for purposes of things like lending."}, {"id": "s275", "start": 1215.08, "end": 1217.6, "text": "And they're starting to look in this direction."}, {"id": "s276", "start": 1217.6, "end": 1225.36, "text": "Where they're trusting each other's agents to be able to work across what before would have been private information, with agents deciding what can be accessed or not."}, {"id": "s277", "start": 1225.36, "end": 1226.68, "text": "And it's it's cool."}, {"id": "s278", "start": 1226.68, "end": 1227.2, "text": "It's very cool."}, {"id": "s279", "start": 1227.2, "end": 1236.44, "text": "And I think once you find some use cases across across companies, uh I think that'll be a really good beachhead to to move more in this direction."}, {"id": "s280", "start": 1236.44, "end": 1238.84, "text": "So, yeah."}, {"id": "s281", "start": 1238.84, "end": 1244.88, "text": "You know, as a human though, I ask myself, do I trust the future where agents make all the decisions about privacy?"}, {"id": "s282", "start": 1244.88, "end": 1245.68, "text": "I don't know about that."}, {"id": "s283", "start": 1245.68, "end": 1250.24, "text": "I just think it's a it is for better or worse the direction things are going."}, {"id": "s284", "start": 1250.24, "end": 1252.28, "text": "And I just I'm like so good on time."}, {"id": "s285", "start": 1252.28, "end": 1252.96, "text": "So, I'm on time."}, {"id": "s286", "start": 1252.96, "end": 1253.84, "text": "Thank you for coming."}, {"id": "s287", "start": 1253.84, "end": 1256.304, "text": "I again, uh yeah."}, {"id": "s288", "start": 1256.304, "end": 1256.4, "text": "[applause]"}, {"id": "s289", "start": 1256.4, "end": 1259.28, "text": "Thanks for being here, and"}, {"id": "s290", "start": 1273.989, "end": 1275.989, "text": "[music]"}, {"id": "s291", "start": 1276.44, "end": 1278.44, "text": "Mhm."}]}, {"id": "RmS5s6Wbin4", "title": "Gadgets: Personal app vibe coding that is actually safe — Kenton Varda, Cloudflare", "channel": "AI Engineer", "duration": 1134, "upload_date": null, "url": "https://www.youtube.com/watch?v=RmS5s6Wbin4", "api": "/api/talks/RmS5s6Wbin4.json", "summary_url": "/#RmS5s6Wbin4", "transcript": {"html": "/transcripts/RmS5s6Wbin4.html", "txt": "/transcripts/RmS5s6Wbin4.txt", "vtt": "/transcripts/RmS5s6Wbin4.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 23.68, "end": 24.48, "text": "Okay."}, {"id": "s3", "start": 24.48, "end": 25.519, "text": "Hi."}, {"id": "s4", "start": 25.519, "end": 25.84, "text": "All right."}, {"id": "s5", "start": 25.84, "end": 29.439, "text": "I've got a lot to talk about, so I'm going to launch right into it here."}, {"id": "s6", "start": 29.439, "end": 35.36, "text": "Um, so Swix says that you only get to make one point at every talk, uh, one key takeaway."}, {"id": "s7", "start": 35.36, "end": 37.68, "text": "And so I figured I'd just lead with that."}, {"id": "s8", "start": 37.68, "end": 43.12, "text": "My, uh, key point is personal AI codegen breaks traditional cloud infrastructure."}, {"id": "s9", "start": 43.12, "end": 49.28, "text": "And to clarify what I mean about that, the word personal here is, uh, is is doing a lot of work."}, {"id": "s10", "start": 49.28, "end": 52.0, "text": "It's uh, loadbearing as cloud would say."}, {"id": "s11", "start": 52.0, "end": 62.32, "text": "Um my point is that um if we want to see this future where um everyone has personal apps and like can personalize uh the apps that they run um the"}, {"id": "s12", "start": 62.32, "end": 69.76, "text": "infrastructure we're using today um for for software in general is is not the right thing and we need something completely different."}, {"id": "s13", "start": 69.76, "end": 78.4, "text": "So to explain what I mean um think about the way that uh uh software is produced and distributed today."}, {"id": "s14", "start": 78.4, "end": 91.6, "text": "You have a developer in an ivory tower who builds an app and then sends it down to the the people the users who use the app and many of them are happy with it but some of them are not."}, {"id": "s15", "start": 91.6, "end": 103.52000000000001, "text": "Some of them uh say this app needs uh some additional features for my use case and so they go to the developer and they say oh great developer will you please grant my feature request"}, {"id": "s16", "start": 103.52000000000001, "end": 106.799, "text": "your app is literally unusable without it."}, {"id": "s17", "start": 106.799, "end": 116.72, "text": "And so then the the developer's representative, the product manager takes these feature requests and files them into Jira where they are never seen again."}, {"id": "s18", "start": 116.72, "end": 127.759, "text": "Um but sometimes sometimes the product manager sees a feature request and says ah I you know I want that too and then that feature request goes onto the road map and the developer"}, {"id": "s19", "start": 127.759, "end": 142.07999999999998, "text": "um works on it and the developer is implementing all these features features that uh you know each one is only used by a small subset of users and each one is adding all these if statements their code and making things messy"}, {"id": "s20", "start": 142.07999999999998, "end": 148.239, "text": "and uh they don't like it because the codebase is becoming a mess and each of these features which is really kind of boring to implement."}, {"id": "s21", "start": 148.239, "end": 152.879, "text": "And so the developer says, \"Ah, I know what I need to do."}, {"id": "s22", "start": 152.879, "end": 155.44, "text": "We need a rewrite."}, {"id": "s23", "start": 155.44, "end": 160.56, "text": "We need to we need a new architecture that has a plug-in system.\""}, {"id": "s24", "start": 160.56, "end": 168.4, "text": "And then every one of these features can be a plug-in and it can be nice and clean and easy to build and the core can stay clean."}, {"id": "s25", "start": 168.4, "end": 173.76, "text": "And so the developer goes off and starts working on the the new architecture with the plug-in system."}, {"id": "s26", "start": 173.76, "end": 183.28, "text": "and uh there are still feature requests coming in and the developer says,\"Well, we can't do those features yet because uh we need the plug-in system."}, {"id": "s27", "start": 183.28, "end": 186.08, "text": "This will be so much easier once we have the plug-in system."}, {"id": "s28", "start": 186.08, "end": 189.76, "text": "And if we do it now, we're just delaying that and we'll just have to redo it later anyway.\""}, {"id": "s29", "start": 189.76, "end": 197.157, "text": "And so um the years go by and uh the new architecture is not ready yet and"}, {"id": "s30", "start": 197.157, "end": 197.599, "text": "[snorts]"}, {"id": "s31", "start": 197.599, "end": 201.92000000000002, "text": "none of the features are being implemented and people are saying, \"What are they doing?"}, {"id": "s32", "start": 201.92000000000002, "end": 207.519, "text": "this developer has given up their product and uh everybody is sad."}, {"id": "s33", "start": 207.519, "end": 214.56, "text": "So AI seems to present a new alternative to this."}, {"id": "s34", "start": 214.56, "end": 225.28, "text": "What if uh the developer could create their app, the first version of their app, give it to the users, and the users if they need a new feature could say"}, {"id": "s35", "start": 225.28, "end": 231.04, "text": "that could ask their AI agent to write that feature just for them, add it to the app."}, {"id": "s36", "start": 231.04, "end": 234.4, "text": "Um, then everyone gets the features they need."}, {"id": "s37", "start": 234.4, "end": 237.519, "text": "No one is bogged down in everyone else's features."}, {"id": "s38", "start": 237.519, "end": 243.36, "text": "Uh, and the developer gets to keep the the core app nice and clean and beautiful."}, {"id": "s39", "start": 243.36, "end": 253.84, "text": "But there's a there's a problem with this, which is that none of the the infrastructure we build software on today is like remotely designed for this."}, {"id": "s40", "start": 253.84, "end": 268.16, "text": "You've got uh Apple and Google for the past 15 years uh gatekeeping their systems to the point where there's like five companies that can build mobile apps now and uh because everyone else has been banned."}, {"id": "s41", "start": 268.16, "end": 276.32, "text": "Um and it's almost like easier to in the United States to buy a gun than it is to like get access to your own phone to install unsigned software."}, {"id": "s42", "start": 276.32, "end": 278.88, "text": "You go to Google and you say, \"I want to install unsigned software.\""}, {"id": "s43", "start": 278.88, "end": 282.88, "text": "And now they're going to say, \"Oh, whoa, hold on, buddy."}, {"id": "s44", "start": 282.88, "end": 284.0, "text": "uh you seem upset."}, {"id": "s45", "start": 284.0, "end": 286.88, "text": "Uh you should uh go home and think about this."}, {"id": "s46", "start": 286.88, "end": 293.6, "text": "Uh if you still want that unsigned software in 24 hours, then you can come back and talk to us."}, {"id": "s47", "start": 294.96, "end": 298.639, "text": "Fortunately, we have a workaround for all of that, which is the web."}, {"id": "s48", "start": 298.639, "end": 301.44, "text": "On the web, everyone can build whatever they want."}, {"id": "s49", "start": 301.44, "end": 302.88, "text": "And it turns out it's fine."}, {"id": "s50", "start": 302.88, "end": 307.6, "text": "It's not the security disaster that Apple and Google keep telling us would happen."}, {"id": "s51", "start": 307.6, "end": 321.6, "text": "So you can build whatever you want on the web but there's a different problem on the web which is that for the past uh 25 years of uh cloud architecture we've been running in the wrong direction."}, {"id": "s52", "start": 321.68, "end": 337.12, "text": "uh when you distribute a web app, you run it on your own server like put it on your server and then users send requests to your server where the one version of your app, the one um you know blessed version runs"}, {"id": "s53", "start": 337.12, "end": 339.12, "text": "uh for every single user."}, {"id": "s54", "start": 339.12, "end": 341.919, "text": "And so that's convenient for developers."}, {"id": "s55", "start": 341.919, "end": 346.4, "text": "That's why we've done it is so the developer can make sure things stay updated and everyone's on the same version."}, {"id": "s56", "start": 346.4, "end": 353.44, "text": "But um it obviously means that users cannot customize their apps."}, {"id": "s57", "start": 353.919, "end": 370.16, "text": "So you know last year uh vibe coding comes along and we have all these vibe coding um platforms out there and the most of them are targeting web apps because that's the easy thing to target but they're all targeting this existing infrastructure"}, {"id": "s58", "start": 370.16, "end": 374.8, "text": "which is actually like not the right way to do it."}, {"id": "s59", "start": 374.8, "end": 378.08, "text": "Um, we need something entirely different."}, {"id": "s60", "start": 378.08, "end": 379.919, "text": "And hence my point."}, {"id": "s61", "start": 379.919, "end": 385.68, "text": "Do you uh do you like how the word breaks kind of wiggles every now and then?"}, {"id": "s62", "start": 385.68, "end": 392.0, "text": "That was uh that was something Claude put in there and it was so stupid I just had to keep it."}, {"id": "s63", "start": 392.0, "end": 408.479, "text": "Um, I want to know where in Claude's training data it uh it learned that you could make words wiggle to give them emphasis because like I you know I understand the red I understand the underline but uh the wiggle like I don't think that's that's from humans."}, {"id": "s64", "start": 408.479, "end": 411.759, "text": "I I think that's an AI original."}, {"id": "s65", "start": 411.999, "end": 413.44, "text": "[laughter]"}, {"id": "s66", "start": 413.44, "end": 415.039, "text": "This this is ASI folks."}, {"id": "s67", "start": 415.039, "end": 419.919, "text": "Yeah, it's beyond my puny human brain's ability to comprehend."}, {"id": "s68", "start": 419.919, "end": 434.72, "text": "Um anyway, uh so you might be wondering at this point like who is this this guy who hasn't introduced himself up on stage um giving a Richard Stallman-esque rant about how we should have the freedom to modify our own software"}, {"id": "s69", "start": 434.72, "end": 437.12, "text": "and what does he know about cloud infrastructure."}, {"id": "s70", "start": 437.12, "end": 439.52, "text": "So I'm Kenton Varta."}, {"id": "s71", "start": 439.52, "end": 441.599, "text": "I created Cloudflare workers."}, {"id": "s72", "start": 441.599, "end": 445.599, "text": "I started the project um back in 2017 when I joined Cloudflare."}, {"id": "s73", "start": 445.599, "end": 448.24, "text": "I am still the lead engineer today."}, {"id": "s74", "start": 448.24, "end": 452.479, "text": "um it now is uh you know it's a serverless application hosting platform."}, {"id": "s75", "start": 452.479, "end": 453.84000000000003, "text": "We have millions of developers."}, {"id": "s76", "start": 453.84000000000003, "end": 456.56, "text": "We serve trillions requests per day."}, {"id": "s77", "start": 456.56, "end": 466.0, "text": "But what I'm going to talk to you a little bit about today is uh sort of a side project I've been working on on top of workers which is um"}, {"id": "s78", "start": 466.319, "end": 472.08, "text": "designed to is my exploration in how to uh uh solve this problem."}, {"id": "s79", "start": 472.08, "end": 478.639, "text": "So, uh, this thing you're looking at right now is actually a little app that I created in this platform."}, {"id": "s80", "start": 478.639, "end": 484.4, "text": "But, um, we're going to the the front page here."}, {"id": "s81", "start": 484.4, "end": 487.599, "text": "So, you have your your Vibe Code prompt."}, {"id": "s82", "start": 487.599, "end": 489.199, "text": "You know, these things are a diamond dozen."}, {"id": "s83", "start": 489.199, "end": 493.36, "text": "Um, we all seen this before, but I'm just going to put in a little prompt to make to show that it works."}, {"id": "s84", "start": 493.36, "end": 497.84, "text": "Uh, make a silly counter app."}, {"id": "s85", "start": 497.84, "end": 502.96, "text": "Silly Max it silly."}, {"id": "s86", "start": 502.96, "end": 505.44, "text": "All right, but I'm not actually gonna sit here and watch it."}, {"id": "s87", "start": 505.44, "end": 508.56, "text": "Oh no, it said error."}, {"id": "s88", "start": 509.36, "end": 511.36, "text": "Yep, the internet doesn't work."}, {"id": "s89", "start": 511.36, "end": 511.919, "text": "That's okay."}, {"id": "s90", "start": 511.919, "end": 514.159, "text": "That's not the most important part of my talk."}, {"id": "s91", "start": 514.159, "end": 532.24, "text": "So um so what I what I want you to understand about this environment is uh this is not like your typical vibe coding environment where you're deploying apps to a web page."}, {"id": "s92", "start": 532.24, "end": 538.24, "text": "This is um uh you need to think about more like uh like an office suite."}, {"id": "s93", "start": 538.24, "end": 539.68, "text": "So think about Google Docs."}, {"id": "s94", "start": 539.68, "end": 543.68, "text": "You open Google Docs, you have a bunch of documents, hundreds, maybe thousands of documents."}, {"id": "s95", "start": 543.68, "end": 547.6, "text": "You open one, you edit it, you share it with people."}, {"id": "s96", "start": 547.6, "end": 551.519, "text": "This is the same thing except instead of documents, you have gadgets."}, {"id": "s97", "start": 551.519, "end": 554.32, "text": "And each gadget is an application with code."}, {"id": "s98", "start": 554.32, "end": 555.76, "text": "They can all be different code."}, {"id": "s99", "start": 555.76, "end": 561.8389999999999, "text": "I have um I have an app here which is like a collaborative whiteboard app."}, {"id": "s100", "start": 561.8389999999999, "end": 564.0, "text": "Like this is a oneshot prompt."}, {"id": "s101", "start": 564.0, "end": 569.36, "text": "Um, I have a uh an app here which So, I get a lot of email in Spanish."}, {"id": "s102", "start": 569.36, "end": 570.24, "text": "It's a long story."}, {"id": "s103", "start": 570.24, "end": 574.16, "text": "I don't know Spanish, but I need help like filtering all the Spanish email."}, {"id": "s104", "start": 574.16, "end": 576.48, "text": "So, I made a little app to help me do that."}, {"id": "s105", "start": 576.48, "end": 577.36, "text": "Uh, a gadget."}, {"id": "s106", "start": 577.36, "end": 584.9590000000001, "text": "Um, I have a gadget to help me sort uh pull requests that I need to uh review on GitHub."}, {"id": "s107", "start": 584.9590000000001, "end": 591.6, "text": "And uh but those are, you know, things that I just like vibe coded from scratch."}, {"id": "s108", "start": 591.6, "end": 594.399, "text": "But we also have this concept over here of blueprints."}, {"id": "s109", "start": 594.399, "end": 604.16, "text": "And um a blueprint is someone made a gadget and they decided that it was useful and they took a a blueprint of it which is just taking the code exporting the code"}, {"id": "s110", "start": 604.16, "end": 612.399, "text": "without the data which they can then share with someone else and then other people can uh instantiate gadgets from these blueprints."}, {"id": "s111", "start": 612.399, "end": 619.68, "text": "So um we have like a you know document editor app here, a combon board and um a slide builder."}, {"id": "s112", "start": 619.68, "end": 636.079, "text": "So like you know typical office apps uh I'm going to s so this this slide builder um was built by my colleague Philip here um who's a product manager at Cloudflare and of course these days all product managers are also prolific engineers"}, {"id": "s113", "start": 636.079, "end": 648.56, "text": "um so he you know he vibed this in an afternoon I believe but uh if I instantiate this gadget I get this nice little slide deck um you know it has things I can edit it and so on."}, {"id": "s114", "start": 648.56, "end": 649.12, "text": "Yay."}, {"id": "s115", "start": 649.12, "end": 652.24, "text": "And if I shared it, it would well."}, {"id": "s116", "start": 652.24, "end": 659.2, "text": "So an important point here is that when I instantiate this app, it is only for one slide deck."}, {"id": "s117", "start": 659.2, "end": 664.72, "text": "If I want multiple slide decks, I make multiple instances of the gadget uh one for each."}, {"id": "s118", "start": 664.72, "end": 678.16, "text": "And the reason for that is that all gadgets are um sharable and uh you know you can collaborate with other people on them and the sharing model is implemented by the platform instead of by the app itself."}, {"id": "s119", "start": 678.16, "end": 683.36, "text": "So if I click up here, I get sort of a a share dialogue kind of like a Google Docs share dialogue."}, {"id": "s120", "start": 683.36, "end": 685.76, "text": "I can create a share link and send it to people."}, {"id": "s121", "start": 685.76, "end": 700.079, "text": "And uh because each gadget is just the one thing that you want to share, that means that the platform can implement the sharing model and the access control such that the gadget itself can't possibly get that wrong."}, {"id": "s122", "start": 700.079, "end": 704.48, "text": "So I'm going to go over to actually another instance of the same slides app."}, {"id": "s123", "start": 704.48, "end": 715.12, "text": "This is the um the slides I originally wrote for this talk, which yesterday I decided these slides were trash and I threw them all away and rewrote it."}, {"id": "s124", "start": 715.12, "end": 718.88, "text": "Um but the the reason they're bad is is entirely my fault."}, {"id": "s125", "start": 718.88, "end": 720.079, "text": "It's not Philip's fault."}, {"id": "s126", "start": 720.079, "end": 721.92, "text": "It's uh not the software's fault."}, {"id": "s127", "start": 721.92, "end": 730.0, "text": "Um but this this can still serve as an example uh to to demonstrate some of what you can do on this platform."}, {"id": "s128", "start": 730.0, "end": 733.279, "text": "So if I uh click on here, I can see the conversation."}, {"id": "s129", "start": 733.279, "end": 736.399, "text": "And you know, of course, I didn't edit the slides myself by hand."}, {"id": "s130", "start": 736.399, "end": 739.2, "text": "I asked the agent to make them for me, right?"}, {"id": "s131", "start": 739.2, "end": 746.56, "text": "Um, and every app in this platform automatically integrates with agents so that you can do that."}, {"id": "s132", "start": 746.56, "end": 759.68, "text": "And so what I did is I gave Claude a link to this document, this Google doc where I had described all of the gadgets that I wanted or all the the slides that I wanted in my um"}, {"id": "s133", "start": 759.68, "end": 761.04, "text": "in my presentation."}, {"id": "s134", "start": 761.04, "end": 764.48, "text": "And crucially though, this is the interesting point."}, {"id": "s135", "start": 764.48, "end": 774.32, "text": "I said, if you need uh if you need to add any new features to the slides app itself to support some of these slides, feel free to do so."}, {"id": "s136", "start": 774.32, "end": 775.6, "text": "And it did."}, {"id": "s137", "start": 775.6, "end": 782.079, "text": "Um Claude read all the code for the app and read my doc and said, \"Yes, actually, let's see."}, {"id": "s138", "start": 782.079, "end": 785.519, "text": "Slide three needs a uh strikethrough formatting."}, {"id": "s139", "start": 785.519, "end": 786.8, "text": "That's not implemented.\""}, {"id": "s140", "start": 786.8, "end": 788.399, "text": "Um we can add that."}, {"id": "s141", "start": 788.399, "end": 791.44, "text": "Um, some of the slides require things to be centered."}, {"id": "s142", "start": 791.44, "end": 796.959, "text": "And you know, I guess Philip's design taste is too good for centering text."}, {"id": "s143", "start": 796.959, "end": 800.32, "text": "Uh, but my more pedestrian taste called for some centering."}, {"id": "s144", "start": 800.32, "end": 801.36, "text": "And that's okay."}, {"id": "s145", "start": 801.36, "end": 803.12, "text": "Cloud can add that."}, {"id": "s146", "start": 803.12, "end": 807.68, "text": "Um, more interestingly, slides uh five and six here."}, {"id": "s147", "start": 807.68, "end": 812.16, "text": "So, I asked for this like really crappy diagram of the cloud, right?"}, {"id": "s148", "start": 812.16, "end": 818.16, "text": "And the the app um didn't support sort of like arbitrary diagrams."}, {"id": "s149", "start": 818.16, "end": 824.48, "text": "It supported, you know, uh box diagrams and arrows and such, but not an arbitrary drawing like this."}, {"id": "s150", "start": 824.48, "end": 826.639, "text": "And so Claude said, \"Okay, that's okay."}, {"id": "s151", "start": 826.639, "end": 827.92, "text": "We can add a feature."}, {"id": "s152", "start": 827.92, "end": 832.48, "text": "We'll add a feature that allows uh you to insert a bunch of SVG."}, {"id": "s153", "start": 832.48, "end": 834.72, "text": "Just paste it into this box here."}, {"id": "s154", "start": 834.72, "end": 836.639, "text": "And now it becomes uh part of the slide.\""}, {"id": "s155", "start": 836.639, "end": 843.44, "text": "And now that's not very useful for any human, but it was perfectly useful for Claude who then generated the SVG."}, {"id": "s156", "start": 843.44, "end": 847.36, "text": "Now, at this point, you might be looking at this and saying, \"That's a little scary."}, {"id": "s157", "start": 847.36, "end": 850.079, "text": "SVG can contain JavaScript."}, {"id": "s158", "start": 850.079, "end": 853.04, "text": "Uh, are there XSS bugs here?\""}, {"id": "s159", "start": 853.04, "end": 858.079, "text": "And the answer to that is, uh, it doesn't really matter because of the way this environment is set up."}, {"id": "s160", "start": 858.079, "end": 875.68, "text": "So the UI that you see for the app here is running inside a null origin iframe sandbox um with content security policy set so that it basically cannot talk to anything any of the rest of the world can't access any cookies so on"}, {"id": "s161", "start": 875.68, "end": 887.36, "text": "um the only thing it can do is post message to the parent frame and through that post message channel we set up a a captain web RPC uh session"}, {"id": "s162", "start": 887.36, "end": 901.04, "text": "which forwards onto the server and all the way back to the server code for this gadget which is uh this code here which is written as a a durable object on Cloudflare workers"}, {"id": "s163", "start": 901.04, "end": 913.199, "text": "and uh basically that means so so this this server code runs in a dynamic worker sandbox uh on the server side where it too is prevented from talking to any of the rest of the world."}, {"id": "s164", "start": 913.199, "end": 917.92, "text": "So now we've set up this environment where there's a vibecoded client and a vibecoded server."}, {"id": "s165", "start": 917.92, "end": 923.68, "text": "They can only talk to each other and produce the UI uh for the user."}, {"id": "s166", "start": 923.68, "end": 929.8389999999999, "text": "And so if you have an XSS bug, it actually doesn't end up mattering because these can't leak anything."}, {"id": "s167", "start": 929.8389999999999, "end": 931.6, "text": "Um they're prevented from doing so."}, {"id": "s168", "start": 931.6, "end": 937.92, "text": "And it basically there is no security bug you can have in this code that matters."}, {"id": "s169", "start": 937.92, "end": 943.92, "text": "Um, and that makes it safe to, you know, go and do things."}, {"id": "s170", "start": 944.24, "end": 953.44, "text": "So, uh, I, uh, there's a whole lot that I would like to talk about that I won't have time for here, unfortunately."}, {"id": "s171", "start": 953.44, "end": 971.279, "text": "So the um uh so there there like for instance the uh we created a whole system by which these apps can talk to external services in a safe way but I could give you know two more talks about that."}, {"id": "s172", "start": 971.279, "end": 978.399, "text": "Um we created um there's a lot of stuff here."}, {"id": "s173", "start": 978.399, "end": 988.56, "text": "the the points that I want to make in the time that I have left though is so everything you see here is uh is built on everything except for the LLM"}, {"id": "s174", "start": 988.56, "end": 990.88, "text": "is built on Cloudflare workers."}, {"id": "s175", "start": 990.88, "end": 995.519, "text": "Um a lot of people don't know this but you can actually build complex apps on workers."}, {"id": "s176", "start": 995.519, "end": 997.6, "text": "There are no containers involved here."}, {"id": "s177", "start": 997.6, "end": 999.279, "text": "There's just dynamic workers."}, {"id": "s178", "start": 999.279, "end": 1001.68, "text": "There are no there's no database involved."}, {"id": "s179", "start": 1001.68, "end": 1004.24, "text": "It just uses durable objects."}, {"id": "s180", "start": 1004.24, "end": 1014.88, "text": "Um, and furthermore, all of this is actually running locally on my laptop, which is why it doesn't matter that uh the internet didn't work because uh so this is all running on"}, {"id": "s181", "start": 1014.88, "end": 1017.199, "text": "workerd, which is our open source runtime."}, {"id": "s182", "start": 1017.199, "end": 1018.399, "text": "A lot of people don't know this."}, {"id": "s183", "start": 1018.399, "end": 1021.279, "text": "The Cloudflare workers runtime is open source."}, {"id": "s184", "start": 1021.279, "end": 1023.04, "text": "You can self-host it."}, {"id": "s185", "start": 1023.04, "end": 1031.52, "text": "And I'm excited about that because we have in here a uh Home Assistant uh connector and a Spotify connector."}, {"id": "s186", "start": 1031.52, "end": 1037.36, "text": "And I want to run this in my basement and uh use it to do home automation tasks."}, {"id": "s187", "start": 1037.36, "end": 1039.496, "text": "Um so"}, {"id": "s188", "start": 1039.496, "end": 1040.559, "text": "[sighs]"}, {"id": "s189", "start": 1040.559, "end": 1043.6, "text": "this is where though I have to give a little bit of an apology."}, {"id": "s190", "start": 1043.6, "end": 1050.32, "text": "Um so a couple of months ago when I submitted the the uh the proposal for this talk."}, {"id": "s191", "start": 1050.32, "end": 1059.36, "text": "This was like a side project I was working on and the plan was I was going to come here and I was going to present it and then I was just at the end of the talk going to ye it onto GitHub"}, {"id": "s192", "start": 1059.36, "end": 1063.12, "text": "so that everyone could go and download and play with it themselves."}, {"id": "s193", "start": 1063.12, "end": 1070.72, "text": "In the last couple of weeks um there's been a lot of excitement inside Cloudflare and this has become a more serious project."}, {"id": "s194", "start": 1070.72, "end": 1079.52, "text": "And so last Thursday Dne our CTO pulled me uh into a room and said Kenton I don't think you should yeet this."}, {"id": "s195", "start": 1079.52, "end": 1081.84, "text": "I don't think this is yeet material."}, {"id": "s196", "start": 1081.84, "end": 1088.16, "text": "I think we need a uh we need to be more careful and disciplined and intentional about how we release this."}, {"id": "s197", "start": 1088.16, "end": 1089.919, "text": "So, let's hold it off for a few weeks."}, {"id": "s198", "start": 1089.919, "end": 1097.36, "text": "And I was pretty upset about that because I promised in the abstract that I was going to open source it, but sorry."}, {"id": "s199", "start": 1097.36, "end": 1098.88, "text": "Uh that's not happening today."}, {"id": "s200", "start": 1098.88, "end": 1101.44, "text": "It will happen soon though."}, {"id": "s201", "start": 1101.44, "end": 1111.36, "text": "Um, and I wish the silly counter worked because GPT makes some silly counters, but um oh well, it's not a big deal."}, {"id": "s202", "start": 1111.36, "end": 1114.8220000000001, "text": "And that's uh that's all I got."}, {"id": "s203", "start": 1114.8220000000001, "end": 1116.8220000000001, "text": "[applause]"}, {"id": "s204", "start": 1131.852, "end": 1133.852, "text": "[music]"}]}, {"id": "S6aSoQ6_u5A", "title": "Tell the Robot What You Want — Sandhya Subramani, AWS", "channel": "AI Engineer", "duration": 1043, "upload_date": null, "url": "https://www.youtube.com/watch?v=S6aSoQ6_u5A", "api": "/api/talks/S6aSoQ6_u5A.json", "summary_url": "/#S6aSoQ6_u5A", "transcript": {"html": "/transcripts/S6aSoQ6_u5A.html", "txt": "/transcripts/S6aSoQ6_u5A.txt", "vtt": "/transcripts/S6aSoQ6_u5A.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.04, "end": 14.24, "text": "Hello everyone."}, {"id": "s3", "start": 14.24, "end": 20.64, "text": "My name is Sandy and meet my co-host today, Scout."}, {"id": "s4", "start": 20.64, "end": 23.279, "text": "This is my friendly rover."}, {"id": "s5", "start": 23.279, "end": 29.039, "text": "And one would think that rovers can't really think for themselves, right?"}, {"id": "s6", "start": 29.039, "end": 34.88, "text": "We have to tell them what to do or we have to very specifically program them on how to think."}, {"id": "s7", "start": 34.88, "end": 41.52, "text": "But this little guy here actually has a brain and he can think for himself."}, {"id": "s8", "start": 41.52, "end": 43.12, "text": "Let me show you my screen."}, {"id": "s9", "start": 43.12, "end": 44.719, "text": "Oh no, it's going to the wrong screen."}, {"id": "s10", "start": 44.719, "end": 50.559, "text": "I'm going to see how I can stop this and I'm going to see how I can move to my screen."}, {"id": "s11", "start": 50.559, "end": 53.44, "text": "Um, give me just a second."}, {"id": "s12", "start": 53.44, "end": 56.719, "text": "I'm going to end show and then we get to this."}, {"id": "s13", "start": 56.719, "end": 61.039, "text": "So this is what Scout here is looking at."}, {"id": "s14", "start": 61.039, "end": 64.72, "text": "And Scout here has a small little brain."}, {"id": "s15", "start": 64.72, "end": 69.28, "text": "And Scout can understand what I'm saying in natural language."}, {"id": "s16", "start": 69.28, "end": 75.2, "text": "For example, if you can see my screen here, if I say, \"Hey Scout,\" I'm going to type to him."}, {"id": "s17", "start": 75.2, "end": 85.439, "text": "Say, \"Hey Scout, turn on your headlights and say hi to everyone."}, {"id": "s18", "start": 87.92, "end": 92.32, "text": "he is actually going to be able to understand and do those actions."}, {"id": "s19", "start": 92.32, "end": 94.799, "text": "But how is he able to do these things, right?"}, {"id": "s20", "start": 94.799, "end": 104.479, "text": "It's going to take him a couple of seconds to think about it because how this has been set up is he is working on with a Raspberry Pi installed"}, {"id": "s21", "start": 104.479, "end": 116.799, "text": "and that Raspberry Pi is actually in a small little location in New York City and he's got a SIM card here which is then connecting to that to that Raspberry Pi and then he's getting signals."}, {"id": "s22", "start": 116.799, "end": 118.88, "text": "So, this is via 4G connection."}, {"id": "s23", "start": 118.88, "end": 120.479, "text": "And so, he's like, \"Oh, hey, on it.\""}, {"id": "s24", "start": 120.479, "end": 121.68, "text": "And if you can see, you know what?"}, {"id": "s25", "start": 121.68, "end": 124.56, "text": "I'm going to tell him, \"Spin around.\""}, {"id": "s26", "start": 124.56, "end": 126.399, "text": "And oh, no, he's actually speaking to me."}, {"id": "s27", "start": 126.399, "end": 129.119, "text": "He's like, \"I see the stage and it's looking great."}, {"id": "s28", "start": 129.119, "end": 135.44, "text": "Big presentation screen to the left, bright stage lights, and rows of seats for the audience."}, {"id": "s29", "start": 135.44, "end": 139.52, "text": "How How many people do you see?"}, {"id": "s30", "start": 141.44, "end": 148.4, "text": "I've never trained him to answer this question, but he's Let's see if he's get getting it."}, {"id": "s31", "start": 148.56, "end": 152.239, "text": "He's thinking for like a second or two."}, {"id": "s32", "start": 152.959, "end": 155.599, "text": "Let me take a good look from the front camera."}, {"id": "s33", "start": 155.599, "end": 156.72, "text": "I see two people."}, {"id": "s34", "start": 156.72, "end": 162.56, "text": "One near the speaker monitor set up at the back of the stage and another person further right."}, {"id": "s35", "start": 162.56, "end": 163.76, "text": "Nah."}, {"id": "s36", "start": 163.76, "end": 181.44, "text": "spin 360 and he's also saying is this session about to start right so he's going to spin 360 any second now and then he's probably going to be like oh wow I did"}, {"id": "s37", "start": 181.44, "end": 196.08, "text": "so this little robot here is a next generation of robot where ah there we go he is spinning 360 now and he's probably going to tell me what he's seeing"}, {"id": "s38", "start": 198.07999999999998, "end": 199.599, "text": "and he's saying let's spin."}, {"id": "s39", "start": 199.599, "end": 200.159, "text": "Right?"}, {"id": "s40", "start": 200.159, "end": 210.879, "text": "So this new generation of robots is to it's different from our traditional robot training because I have given this guy a little brain."}, {"id": "s41", "start": 210.879, "end": 214.0, "text": "And what do I mean by I've given him a brain?"}, {"id": "s42", "start": 214.0, "end": 229.04, "text": "I've given this robot an agentic layer and I've given it it's called strands agents which is an open-source framework which was built by AWS and I'm going to quickly go back to my slide deck"}, {"id": "s43", "start": 229.12, "end": 242.64, "text": "we can see it right and so here what happens is we have these existing tools that the robot can do he can take certain actions by himself but only those actions by himself"}, {"id": "s44", "start": 242.64, "end": 257.44, "text": "so what we can do is we can add a layer of LLM or even better add a layer of agent to it so that the agent orchestrates which tool to call and how to really get the robot to start doing the things we want."}, {"id": "s45", "start": 257.44, "end": 266.16, "text": "So in traditional software with traditional AI machine uh like AI engineering we can give agents software tools."}, {"id": "s46", "start": 266.16, "end": 282.4, "text": "Similarly, we can give the same AI agent a hardware tool called a robot which has access to preset functions or programmable policies and then the agent can decide which policy to implement when."}, {"id": "s47", "start": 282.4, "end": 294.08, "text": "So all it takes is one robot agent for us to be able to do new innumerous tasks and have it understand what we're teaching it in natural language."}, {"id": "s48", "start": 294.08, "end": 296.88, "text": "So how do we get started with it?"}, {"id": "s49", "start": 296.88, "end": 300.0, "text": "All it takes is five lines of code."}, {"id": "s50", "start": 300.0, "end": 304.24, "text": "This is through uh the agent harness called strands."}, {"id": "s51", "start": 304.24, "end": 310.72, "text": "And all we have to do is import the strands agent and call the robot tool."}, {"id": "s52", "start": 310.72, "end": 319.84, "text": "And we say ro tools equals the robot and then we say pick up the red cube and should be able to pick up a red cube assuming that the robot has that capability."}, {"id": "s53", "start": 319.84, "end": 320.16, "text": "Yeah."}, {"id": "s54", "start": 320.16, "end": 323.36, "text": "Now he's seen someone and he's like oh let me go towards that person."}, {"id": "s55", "start": 323.36, "end": 325.039, "text": "So he gets pretty excited."}, {"id": "s56", "start": 325.039, "end": 329.12, "text": "This guy is pretty special because he doesn't have just one agent."}, {"id": "s57", "start": 329.12, "end": 330.88, "text": "He's got three different agents."}, {"id": "s58", "start": 330.88, "end": 335.36, "text": "All three of them are strands and all three of them are working simultaneously."}, {"id": "s59", "start": 335.36, "end": 342.8, "text": "One of them is the thinker agent and that's the part of him that's constantly thinking and assessing the environment and like what do I do next?"}, {"id": "s60", "start": 342.8, "end": 346.15999999999997, "text": "And that guy's that part of his brain is constantly thinking."}, {"id": "s61", "start": 346.15999999999997, "end": 351.52, "text": "Then there's the other communication part of it where and I'm going to show you that in a bit, right?"}, {"id": "s62", "start": 351.52, "end": 356.639, "text": "and I've connected him to my telegram app as well as to my web app."}, {"id": "s63", "start": 356.639, "end": 363.84, "text": "And so he is able to have a conversation with me in natural language and then take actions based on what I am telling him to do."}, {"id": "s64", "start": 363.84, "end": 368.319, "text": "Apart from him just perceiving and thinking and figuring out what he wants to do."}, {"id": "s65", "start": 368.319, "end": 373.36, "text": "And the third agent, the third type of agent that he's got access to is a voice agent."}, {"id": "s66", "start": 373.36, "end": 384.88, "text": "I did have to disable it because every time I speak, he's going to think I'm speaking to him and so he's going to keep chatting away with me and it's just not going to be fun because we're going to have our co-host interrupting me all the time."}, {"id": "s67", "start": 384.88, "end": 388.16, "text": "So, I've disabled that feature for the time being."}, {"id": "s68", "start": 388.16, "end": 402.08, "text": "But essentially all three of these agents work in tandem with this one robot and thereby this gives him the ability to do way more than what just what he's been trained to do"}, {"id": "s69", "start": 402.08, "end": 405.6, "text": "more than just the policies that he's learned."}, {"id": "s70", "start": 405.6, "end": 411.68, "text": "Now what is a quick overview on this trans package itself?"}, {"id": "s71", "start": 411.68, "end": 418.8, "text": "This turns package has more than supports more than 40 different robots under eight categories."}, {"id": "s72", "start": 418.8, "end": 422.639, "text": "And all of these are just simple robot tool calls."}, {"id": "s73", "start": 422.639, "end": 424.56, "text": "And how is this all set up?"}, {"id": "s74", "start": 424.56, "end": 425.919, "text": "Four different layers."}, {"id": "s75", "start": 425.919, "end": 429.52, "text": "The first one is the agent layer, the topmost one."}, {"id": "s76", "start": 429.52, "end": 430.96, "text": "And there are two parts to this."}, {"id": "s77", "start": 430.96, "end": 437.36, "text": "One is how the actions go in and the second is how it observes and the observations go up."}, {"id": "s78", "start": 437.36, "end": 440.08, "text": "So if you notice it's very birectional."}, {"id": "s79", "start": 440.08, "end": 453.199, "text": "So first when we give it an instruction we would be talking to this trans agent which is the agentic layer that would then decide which policy to call and the policy provider again"}, {"id": "s80", "start": 453.199, "end": 461.52, "text": "stands agent supports a bunch of different policy providers and we can then train our policy based on our traditional robot training."}, {"id": "s81", "start": 461.52, "end": 470.96, "text": "So in our policies we would collect data and then we would train on it and we would sim create more simulation data and that policy then becomes a VLA"}, {"id": "s82", "start": 470.96, "end": 490.72, "text": "model which then the robot would have access to strand agents would have access to and then it would invoke that specific policy based on the question that we're asking it or the command that we're giving it and that policy needs to sit somewhere right so that sits in the back end which could be your simulation environment or"}, {"id": "s83", "start": 490.72, "end": 494.4, "text": "it could be a real hardware chip, your hardware environment."}, {"id": "s84", "start": 494.4, "end": 499.52, "text": "That is the back end on which that is the interface on which the policy is running."}, {"id": "s85", "start": 499.52, "end": 505.68, "text": "And finally, the output actually takes place in the physical hardware which is the robot."}, {"id": "s86", "start": 505.68, "end": 511.919, "text": "And so the robot ah see so now it's responding this even if he falls down he's supposed to be fine."}, {"id": "s87", "start": 511.919, "end": 517.12, "text": "He technically shouldn't um he technically shouldn't uh get hurt."}, {"id": "s88", "start": 517.12, "end": 521.68, "text": "He should be able to pick back up from where he um stops."}, {"id": "s89", "start": 521.68, "end": 522.719, "text": "Ah, okay."}, {"id": "s90", "start": 522.719, "end": 524.88, "text": "So, I'm telling him to go back a bit."}, {"id": "s91", "start": 524.88, "end": 526.56, "text": "Back off."}, {"id": "s92", "start": 526.56, "end": 528.56, "text": "Let's see if he actually backs off."}, {"id": "s93", "start": 528.56, "end": 535.92, "text": "Um, so that is the four layers of how to get started with building this, right?"}, {"id": "s94", "start": 535.92, "end": 543.279, "text": "And what's happening under the hood, like a more picturesic view of what's the architecture of what's going on under the hood."}, {"id": "s95", "start": 543.279, "end": 549.279, "text": "We want everything is basically strands agents on the edge as well as on the cloud."}, {"id": "s96", "start": 549.279, "end": 555.279, "text": "We want to be able to train the VLA and the policies on with using agent core."}, {"id": "s97", "start": 555.279, "end": 568.32, "text": "Um and we want that to happen on the cloud but we also want to be able to call it directly on edge so that our robot can uh execute functions and policies faster."}, {"id": "s98", "start": 568.32, "end": 579.44, "text": "So this is sort of like a hybrid model where a part of it happens on the cloud and another part of it happens on the edge and strands can decide when to call which part of it."}, {"id": "s99", "start": 579.44, "end": 591.92, "text": "And so this helps with massive amounts of training as well when it's constantly collecting information and it's train able to train on that information and learn from itself but also just execute at runtime"}, {"id": "s100", "start": 591.92, "end": 593.6, "text": "really really quickly."}, {"id": "s101", "start": 593.6, "end": 601.36, "text": "Now, like I said, the agent decides what to do and the policy decides how it should be done."}, {"id": "s102", "start": 601.36, "end": 602.399, "text": "But he's pretty smart."}, {"id": "s103", "start": 602.399, "end": 606.16, "text": "He should be able to pick himself back up if he's not fully fallen down."}, {"id": "s104", "start": 606.16, "end": 610.16, "text": "And he should be able to continue moving along."}, {"id": "s105", "start": 610.56, "end": 612.16, "text": "So, I think he's okay."}, {"id": "s106", "start": 612.16, "end": 615.2, "text": "Now, where does this leave us?"}, {"id": "s107", "start": 615.2, "end": 617.6, "text": "And why is this so special?"}, {"id": "s108", "start": 617.6, "end": 621.8389999999999, "text": "We started off with very traditional robots."}, {"id": "s109", "start": 621.8389999999999, "end": 625.12, "text": "Robots have existed since forever, right?"}, {"id": "s110", "start": 625.12, "end": 634.32, "text": "And they've always just been programmed, pre-programmed to do to autom be automated and do a certain set of tasks autonomously."}, {"id": "s111", "start": 634.32, "end": 647.36, "text": "But there is a future in this world where this these robot policies, these VLA models could be so advanced that we wouldn't even need to do this."}, {"id": "s112", "start": 647.36, "end": 651.12, "text": "They could be as large as our large language models."}, {"id": "s113", "start": 651.12, "end": 655.76, "text": "So that ah wait hang on he's falling back again."}, {"id": "s114", "start": 655.76, "end": 659.68, "text": "I'm gonna see if I can get him to move back up."}, {"id": "s115", "start": 659.92, "end": 660.72, "text": "Good boy."}, {"id": "s116", "start": 660.72, "end": 662.32, "text": "Stop."}, {"id": "s117", "start": 662.32, "end": 664.079, "text": "Then he's fallen off again."}, {"id": "s118", "start": 664.079, "end": 678.399, "text": "Um we get to a point where these large language the the VA models could be as large and as amazing as our larger language models and they know they have all the information in the world and we wouldn't even have to do this."}, {"id": "s119", "start": 678.399, "end": 684.72, "text": "we might just have to feed in one simple model and then we could give it to him and then he would know exactly what to do."}, {"id": "s120", "start": 684.72, "end": 692.64, "text": "But until that point where we don't have to fine-tune on top of existing VAS and existing policies, we can do this."}, {"id": "s121", "start": 692.64, "end": 700.64, "text": "And this is a stepping stone towards a future where we don't need to train robots anymore."}, {"id": "s122", "start": 700.64, "end": 708.0, "text": "So now if we wanted to do more things than just the tasks it's trained on, give it an agent and see what it can do."}, {"id": "s123", "start": 708.0, "end": 715.44, "text": "And so let me quickly go back to my demo and I'm going to show you how it's actually working."}, {"id": "s124", "start": 719.12, "end": 719.92, "text": "Okay."}, {"id": "s125", "start": 719.92, "end": 723.839, "text": "So this is my so this is strand here."}, {"id": "s126", "start": 723.839, "end": 725.12, "text": "This is scout here."}, {"id": "s127", "start": 725.12, "end": 727.519, "text": "And I've been telling him to do a bunch of things."}, {"id": "s128", "start": 727.519, "end": 733.04, "text": "So I can say, \"Hey, do something complex.\""}, {"id": "s129", "start": 735.04, "end": 736.399, "text": "That's not complex."}, {"id": "s130", "start": 736.399, "end": 737.44, "text": "He's going to be thinking now."}, {"id": "s131", "start": 737.44, "end": 740.24, "text": "Ah, he's going to fall off."}, {"id": "s132", "start": 741.6, "end": 743.04, "text": "So he's saying, \"Let's spin."}, {"id": "s133", "start": 743.04, "end": 744.16, "text": "Full 360."}, {"id": "s134", "start": 744.16, "end": 745.04, "text": "Done."}, {"id": "s135", "start": 745.04, "end": 746.56, "text": "Still safely on the stage."}, {"id": "s136", "start": 746.56, "end": 750.24, "text": "I can see the bright stage lights and the audience seating area.\""}, {"id": "s137", "start": 750.24, "end": 750.959, "text": "All good."}, {"id": "s138", "start": 750.959, "end": 752.639, "text": "What's there?"}, {"id": "s139", "start": 752.639, "end": 754.399, "text": "A challenge."}, {"id": "s140", "start": 754.399, "end": 755.44, "text": "So he's speaking."}, {"id": "s141", "start": 755.44, "end": 758.8, "text": "I called this my signature performance,"}, {"id": "s142", "start": 760.639, "end": 762.079, "text": "but he's not doing anything."}, {"id": "s143", "start": 762.079, "end": 764.56, "text": "What are you doing?"}, {"id": "s144", "start": 765.92, "end": 768.9590000000001, "text": "He clearly seems to be speaking, but what are you doing?"}, {"id": "s145", "start": 768.9590000000001, "end": 770.639, "text": "Please do something."}, {"id": "s146", "start": 770.639, "end": 772.56, "text": "He just turned off his headlines."}, {"id": "s147", "start": 772.56, "end": 773.519, "text": "Cool."}, {"id": "s148", "start": 773.519, "end": 774.639, "text": "Okay, now he's calling."}, {"id": "s149", "start": 774.639, "end": 781.36, "text": "So, do you see it saying calling rover speak, which was the function that it called because I said do something complex."}, {"id": "s150", "start": 781.36, "end": 788.399, "text": "So now it spoke, but now I think it should have been attempting to do something and it fell off because it tried doing something."}, {"id": "s151", "start": 788.399, "end": 793.519, "text": "I've actually seen it do like a funky dance, like this funky dance move."}, {"id": "s152", "start": 793.519, "end": 796.959, "text": "But he's got a mind of his own right now."}, {"id": "s153", "start": 796.959, "end": 799.44, "text": "What's going on under the hood here?"}, {"id": "s154", "start": 799.44, "end": 800.48, "text": "Couple of things."}, {"id": "s155", "start": 800.48, "end": 802.8, "text": "The first thing is here, I can use this."}, {"id": "s156", "start": 802.8, "end": 804.399, "text": "What is the point of creating him?"}, {"id": "s157", "start": 804.399, "end": 810.399, "text": "I can use him to create my data sets because I'm able to also manually move him."}, {"id": "s158", "start": 810.399, "end": 822.8, "text": "I will get him to navigate in the direction that I want him to and then I can create training episodes and I can get information on how he's responding and how he's reasoning based on the questions that I ask."}, {"id": "s159", "start": 822.8, "end": 828.639, "text": "And this is super good information for me to then be able to make him do a better job of it."}, {"id": "s160", "start": 828.639, "end": 839.36, "text": "So that's one part of this whole process and this experiment of getting of giving him his own autonomy and getting him to do things so that I can create more data"}, {"id": "s161", "start": 839.36, "end": 844.32, "text": "but also apart from that uh this is my configuration."}, {"id": "s162", "start": 844.32, "end": 854.24, "text": "So over here under the hood strands agents which is your harness SDK is using currently anthropic claude opus 4.8 under the hood."}, {"id": "s163", "start": 854.24, "end": 867.92, "text": "So that is the brain and then this is my simple prompt where system prompt where I'm telling it what it's supposed to be doing and I'm telling it all of the rules and I'm also giving it access to all of the rules that it's already got."}, {"id": "s164", "start": 867.92, "end": 871.44, "text": "So I'm telling it what each of these rules are meant for."}, {"id": "s165", "start": 871.44, "end": 878.56, "text": "And so that's how strand decides which tool to invoke based on what I'm asking it to do."}, {"id": "s166", "start": 878.56, "end": 883.279, "text": "And the voice that it's using is the one of open AI real time."}, {"id": "s167", "start": 883.279, "end": 892.24, "text": "And I've also given it more information for it to be able to like just safety and guard rails to ensure that it's doing really well."}, {"id": "s168", "start": 892.24, "end": 895.04, "text": "Now it's this is these are two of the agents."}, {"id": "s169", "start": 895.04, "end": 900.16, "text": "The other thing that it can do is also chat with me on Telegram."}, {"id": "s170", "start": 900.16, "end": 907.76, "text": "This is amazing because when I'm not at home and I still want to get it to speak to me, I can say, \"Hey, scout."}, {"id": "s171", "start": 907.92, "end": 913.68, "text": "Who is turn around uh spin around analyze?\""}, {"id": "s172", "start": 913.68, "end": 914.24, "text": "Uh-uh."}, {"id": "s173", "start": 914.24, "end": 915.279, "text": "Don't fall off."}, {"id": "s174", "start": 915.279, "end": 922.24, "text": "Analyze the room and tell me who is the best looking person."}, {"id": "s175", "start": 922.24, "end": 923.8389999999999, "text": "This is always a hit or miss."}, {"id": "s176", "start": 923.8389999999999, "end": 927.8389999999999, "text": "Don't blame me if if Scout decides to be biased."}, {"id": "s177", "start": 927.8389999999999, "end": 938.399, "text": "I tried playing with this because it makes me feel like Snow White um and the queen saying mirror mirror on the wall who is the fairest of them all and so let's see if Strand can give us that."}, {"id": "s178", "start": 938.399, "end": 942.8, "text": "So it's saying haha on it on there spinning around to scope the room."}, {"id": "s179", "start": 942.8, "end": 943.519, "text": "Is he spinning?"}, {"id": "s180", "start": 943.519, "end": 944.48, "text": "He is."}, {"id": "s181", "start": 944.48, "end": 947.279, "text": "Looks like he's making and let's look at what he's looking at now."}, {"id": "s182", "start": 947.279, "end": 949.12, "text": "He's still looking at the stage."}, {"id": "s183", "start": 949.12, "end": 950.24, "text": "This is the other miller."}, {"id": "s184", "start": 950.24, "end": 950.88, "text": "He's looking at me."}, {"id": "s185", "start": 950.88, "end": 951.759, "text": "Hi."}, {"id": "s186", "start": 951.759, "end": 952.88, "text": "Am I the prettiest?"}, {"id": "s187", "start": 952.88, "end": 954.16, "text": "Oh, you flatter me."}, {"id": "s188", "start": 954.16, "end": 955.199, "text": "But no, turn again."}, {"id": "s189", "start": 955.199, "end": 957.68, "text": "Spin some more, please."}, {"id": "s190", "start": 957.68, "end": 959.68, "text": "He's decided not to spin more."}, {"id": "s191", "start": 959.68, "end": 962.399, "text": "Let's see what he says."}, {"id": "s192", "start": 967.04, "end": 967.92, "text": "Spin complete."}, {"id": "s193", "start": 967.92, "end": 969.92, "text": "Here is my analysis of the room."}, {"id": "s194", "start": 969.92, "end": 971.839, "text": "You can see my screen, right?"}, {"id": "s195", "start": 971.839, "end": 973.92, "text": "I have no way of zooming this in."}, {"id": "s196", "start": 973.92, "end": 976.639, "text": "Um, spotted six to seven people total."}, {"id": "s197", "start": 976.639, "end": 979.519, "text": "A couple seated front center near the bright stage, right?"}, {"id": "s198", "start": 979.519, "end": 981.04, "text": "A few more in the audience."}, {"id": "s199", "start": 981.04, "end": 983.6, "text": "One person a dark outfit on the stage."}, {"id": "s200", "start": 983.6, "end": 985.92, "text": "The rocking khaki jeans and sneakers."}, {"id": "s201", "start": 985.92, "end": 987.12, "text": "Thank you very much."}, {"id": "s202", "start": 987.12, "end": 994.9590000000001, "text": "Oh, no, no, no. The person in front of me, cocky jeans and sneakers, clearly walking with purpose on stage."}, {"id": "s203", "start": 994.9590000000001, "end": 996.72, "text": "Uh, best looking."}, {"id": "s204", "start": 996.72, "end": 1007.8389999999999, "text": "Honestly, from my low angle ground view, it's tough to tell faces, but the person on the stage right now gets style points for the confidence stride and the dramatic blue curtain backdrop."}, {"id": "s205", "start": 1007.8389999999999, "end": 1008.88, "text": "Thank you very much."}, {"id": "s206", "start": 1008.88, "end": 1018.079, "text": "Every time I need a confidence boost, I can be the only person in the room and ask this guy who's the prettiest of them all, and he will always"}, {"id": "s207", "start": 1018.079, "end": 1021.04, "text": "choose me as the answer."}, {"id": "s208", "start": 1021.811, "end": 1022.639, "text": "[laughter]"}, {"id": "s209", "start": 1022.639, "end": 1025.44, "text": "Thank you very much."}, {"id": "s210", "start": 1038.841, "end": 1040.841, "text": "[music]"}]}, {"id": "UhCY231d0FQ", "title": "GTM Engineering: The Technical Bits — Everett Berry, Clay", "channel": "AI Engineer", "duration": 1144, "upload_date": null, "url": "https://www.youtube.com/watch?v=UhCY231d0FQ", "api": "/api/talks/UhCY231d0FQ.json", "summary_url": "/#UhCY231d0FQ", "transcript": {"html": "/transcripts/UhCY231d0FQ.html", "txt": "/transcripts/UhCY231d0FQ.txt", "vtt": "/transcripts/UhCY231d0FQ.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.76, "end": 13.92, "text": "Okay, good morning everyone."}, {"id": "s3", "start": 13.92, "end": 17.08, "text": "I'm stoked to kick things off this morning."}, {"id": "s4", "start": 17.08, "end": 29.56, "text": "Um, today's talk is going to start off with just a brief look at GTM engineering and what it is, and then I'm going to get into kind of the areas that I consider to be the most technically interesting and challenging"}, {"id": "s5", "start": 29.56, "end": 30.88, "text": "um, within this space."}, {"id": "s6", "start": 30.88, "end": 33.32, "text": "So, GTM is pretty new."}, {"id": "s7", "start": 33.32, "end": 42.64, "text": "Um, it's arisen out of a couple factors, but one of the main motivating ones is that GTM teams have kind of realized that it is now possible to ship"}, {"id": "s8", "start": 42.64, "end": 45.76, "text": "as fast as a product and engineering team."}, {"id": "s9", "start": 45.76, "end": 57.36, "text": "And so, the best GTM teams that I work with are generally um, pushing changes to their GTM structure almost at the same cadence that an engineering team might be doing releases."}, {"id": "s10", "start": 57.36, "end": 67.4, "text": "And so, at Clari what that looks like is something like this, where every 2 weeks we're pushing new data to our teams, we're pushing new automations, we're of course running new campaigns,"}, {"id": "s11", "start": 67.4, "end": 75.28, "text": "and we're constantly iterating on the things that we're shipping and trying to keep pace with the speed that is um, that our engineering team is working at."}, {"id": "s12", "start": 75.28, "end": 87.2, "text": "So, um, to do this you need a couple fundamentals in place, and in my view GTM engineering at its heart is really about removing the constraints that have historically stopped GTM teams"}, {"id": "s13", "start": 87.2, "end": 90.76, "text": "from shipping at speed using technology."}, {"id": "s14", "start": 90.76, "end": 93.16, "text": "Um, and the role itself has exploded."}, {"id": "s15", "start": 93.16, "end": 108.0, "text": "So, um, I would venture to say that most advanced GTM teams are now hiring GTM engineers or looking for this role, and in my opinion it's one of the first roles that actually is an index on the advances that we're making in AI."}, {"id": "s16", "start": 108.0, "end": 118.75999999999999, "text": "And so, as models have become more powerful, GTM engineers have gained more leverage within their organization and become more valuable, and we've seen tremendous growth in this role."}, {"id": "s17", "start": 118.75999999999999, "end": 122.12, "text": "So, um I kind of break it down into four areas."}, {"id": "s18", "start": 122.12, "end": 128.96, "text": "And what I hope to do with this talk is kind of lightning round go through some of the technical problems and solutions that I see for this."}, {"id": "s19", "start": 128.96, "end": 134.48, "text": "If you're not familiar with Clay, we are obviously building infrastructure that kind of attacks these areas."}, {"id": "s20", "start": 134.48, "end": 136.72, "text": "But this is not meant to be a sales pitch."}, {"id": "s21", "start": 136.72, "end": 143.68, "text": "It's more meant to be if you're an engineer or GTM engineer that's working on these things, some ways to think about how to structure it."}, {"id": "s22", "start": 143.68, "end": 150.16, "text": "And then if you're a founder in this space, some of the interesting problems that I think are worth uh tackling."}, {"id": "s23", "start": 150.16, "end": 152.2, "text": "So, the first is data."}, {"id": "s24", "start": 152.2, "end": 157.959, "text": "And more than most teams within a company, data is the lifeblood of GTM."}, {"id": "s25", "start": 157.959, "end": 169.12, "text": "And the core goal that I think we're trying to accomplish with our data is to create a perfect virtual copy of the market, the ideal customers, the accounts and contacts that you're going after."}, {"id": "s26", "start": 169.12, "end": 173.28, "text": "So, um most teams start out with something that looks like this."}, {"id": "s27", "start": 173.28, "end": 179.04, "text": "You have accounts, which are the companies that you're targeting, and contacts, which are the people that you're going after."}, {"id": "s28", "start": 179.04, "end": 185.519, "text": "The problem though that makes this challenging is that accounts at least exist in a state of constant change."}, {"id": "s29", "start": 185.519, "end": 193.0, "text": "As an organization, a company might be getting acquired, it might be spinning up new offices, it might be launching new products."}, {"id": "s30", "start": 193.0, "end": 195.2, "text": "So, the company itself is always changing."}, {"id": "s31", "start": 195.2, "end": 200.92000000000002, "text": "In addition, you as the GTM team are doing things that company that is making it change as well."}, {"id": "s32", "start": 200.92000000000002, "end": 204.959, "text": "So, you're marketing at them, you're selling towards them, you're trying to book meetings."}, {"id": "s33", "start": 204.959, "end": 206.92000000000002, "text": "That's changing the state of the account."}, {"id": "s34", "start": 206.92000000000002, "end": 214.28, "text": "And then also, the company itself is hiring people and firing people and doing things that provide signals for you."}, {"id": "s35", "start": 214.28, "end": 219.0, "text": "So, as GTM engineers, we need to manage all of this state within our accounts."}, {"id": "s36", "start": 219.0, "end": 224.44, "text": "And um we don't have all the data that we need to do this kind of right off the bat."}, {"id": "s37", "start": 224.44, "end": 228.36, "text": "So, um this is what a an example from Clay's CRM looks like."}, {"id": "s38", "start": 228.36, "end": 236.36, "text": "You can see I have a ton of fields that are simply telling me what state this account is in, whether they're a customer or not, whether they're expanding or churning,"}, {"id": "s39", "start": 236.36, "end": 238.64, "text": "how big they are, how well they're scoring."}, {"id": "s40", "start": 238.64, "end": 248.08, "text": "And so, one of the fundamental things that we need to do is make sure that our records are updated so that we can actively accurately action on what's happening here."}, {"id": "s41", "start": 248.08, "end": 257.88, "text": "And so, as a you know, in a brand new CRM or a or a CRM that I'm going into, the first thing that I am doing is actually filling up the account with relevant contacts."}, {"id": "s42", "start": 257.88, "end": 264.64, "text": "And then I'm layering in third-party information that is going to help me figure out which accounts to target and which ones are in in market."}, {"id": "s43", "start": 264.64, "end": 277.36, "text": "Primarily, I'm looking at the account hierarchy, the firmographics that uh describe how big the company is and so forth, the technographics that describe what technology they're using, and then I'm trying to create signals on top of those accounts"}, {"id": "s44", "start": 277.36, "end": 282.08, "text": "that are going to allow me to go after that um that company."}, {"id": "s45", "start": 282.08, "end": 289.88, "text": "And so, because uh there's a lot of third-party data involved here, we need to actually go out and source and procure that data."}, {"id": "s46", "start": 289.88, "end": 301.64, "text": "And within GTM, there is literally hundreds of vendors that you can turn to to um to get the data that you need, but none of those vendors is going to have a complete picture of all the information you you desire."}, {"id": "s47", "start": 301.64, "end": 304.56, "text": "And so, the key technique here is called waterfalling."}, {"id": "s48", "start": 304.56, "end": 310.2, "text": "This is where I'm going to actually go and look into multiple providers to try to fill in all the information that I need."}, {"id": "s49", "start": 310.2, "end": 317.12, "text": "If you see here, if I was just using Forager to get phone numbers for this um this set of countries, I'd only get halfway there."}, {"id": "s50", "start": 317.12, "end": 321.0, "text": "So, instead, what I need to do is layer on all of these other providers."}, {"id": "s51", "start": 321.0, "end": 326.08, "text": "And that's not only true for phone numbers, but for most the other data points that we care about within GTM."}, {"id": "s52", "start": 326.08, "end": 335.28, "text": "And so, either you or the vendor that you're using needs to run evals against these data providers in order to obtain the most accurate information."}, {"id": "s53", "start": 335.28, "end": 344.28, "text": "And so, not only do I need to sync in third-party information to my data layer, I also need to incorporate first-party information, and I need to keep that constantly up to date."}, {"id": "s54", "start": 344.28, "end": 349.04, "text": "It's also incredibly expensive to update data all the time, especially if you're purchasing it."}, {"id": "s55", "start": 349.04, "end": 350.84000000000003, "text": "So, I can't just update all the fields."}, {"id": "s56", "start": 350.84000000000003, "end": 353.92, "text": "I need to kind of selectively choose which fields to update."}, {"id": "s57", "start": 353.92, "end": 361.64, "text": "And not only am I pulling information from various sources, but if I'm running a signals program, information that I need is getting pushed to me all the time as well."}, {"id": "s58", "start": 361.64, "end": 369.44, "text": "And because I'm using multiple third-party sources, the actual representation of a single account in those different sources is going to be different."}, {"id": "s59", "start": 369.44, "end": 372.72, "text": "So, I need to resolve the entities um in between them."}, {"id": "s60", "start": 372.72, "end": 384.24, "text": "And so, a great data layer will tackle all of these things and allow me to kind of move on to the more interesting work, but without this, it's really, really hard to execute automated GTM plays."}, {"id": "s61", "start": 384.24, "end": 387.4, "text": "So, the next piece that I need to get right is orchestration."}, {"id": "s62", "start": 387.4, "end": 393.64, "text": "And this occurs because within go-to-market, there are literally dozens of tools that most teams are using."}, {"id": "s63", "start": 393.64, "end": 400.0, "text": "So, I might have a sequencer or a dialer or a bunch of places where my reps are living or my field marketing is living."}, {"id": "s64", "start": 400.0, "end": 406.24, "text": "And in most cases, the view of the world that those tools have is different depending on where you look."}, {"id": "s65", "start": 406.24, "end": 411.6, "text": "And so, orchestration, in my view, is really the act of keeping all of that up to date."}, {"id": "s66", "start": 411.6, "end": 420.6, "text": "And so, what happens to our data model then is I'm um on top of my enriched information, I'm sending emails and calling into my contacts."}, {"id": "s67", "start": 420.6, "end": 424.0, "text": "The account is generating events that I need to keep track of."}, {"id": "s68", "start": 424.0, "end": 428.48, "text": "And I now need a system to actually plug all of this into my data layer."}, {"id": "s69", "start": 428.48, "end": 440.28, "text": "And so, most teams are going to have something that looks like this as their basic stack: CRM, data warehouse, sequencer, a dialer, a note taker for call recording, and some chat interface like Slack."}, {"id": "s70", "start": 440.28, "end": 447.08, "text": "However, um I usually see like 10 or 20 or 30 tools that actually these teams are interfacing with."}, {"id": "s71", "start": 447.08, "end": 451.28, "text": "And orchestration needs to kind of keep that information up to date."}, {"id": "s72", "start": 451.28, "end": 455.96, "text": "The problem with orchestration is um all of these different systems have different data needs."}, {"id": "s73", "start": 455.96, "end": 460.12, "text": "So, some systems need kind of like real-time updates one record at a time."}, {"id": "s74", "start": 460.12, "end": 464.52, "text": "Other systems are going to need hundreds of thousands of records, maybe updated once a day."}, {"id": "s75", "start": 464.52, "end": 469.6, "text": "I might need to schedule updates on a monthly or weekly basis depending on the data I'm using."}, {"id": "s76", "start": 469.6, "end": 472.15999999999997, "text": "Some data points like employee count change all the time."}, {"id": "s77", "start": 472.15999999999997, "end": 475.76, "text": "Other data points like headquarters location change very rarely."}, {"id": "s78", "start": 475.76, "end": 479.28, "text": "Um and I'm not going to be making updates to all the fields at the same time."}, {"id": "s79", "start": 479.28, "end": 482.68, "text": "So I need logic within these systems that helps with that."}, {"id": "s80", "start": 482.68, "end": 490.6, "text": "I also need to be able to take a single um system that I'm working with and actually fan its information out to multiple different systems."}, {"id": "s81", "start": 490.6, "end": 495.72, "text": "And because I end up with this kind of distributed setup, I also have failures that are happening all the time."}, {"id": "s82", "start": 495.72, "end": 501.0, "text": "So this turns into a fairly complex data engineering problem that we need to resolve."}, {"id": "s83", "start": 501.0, "end": 513.84, "text": "A classic example of this is um when I'm working with these different systems, usually they are not fully orchestrated, which means that one system is talking to each other while I'm trying to talk to both of those systems at the same time."}, {"id": "s84", "start": 513.84, "end": 523.76, "text": "So for example, if you have a salesforce uh connected to outreach or a sequencer, usually that CRM that seek sequencer are syncing independently of your orchestration system."}, {"id": "s85", "start": 523.76, "end": 530.8389999999999, "text": "And so if you create contacts in your CRM, you actually need to wait for that contact to sync to the sequencer before you can then take action on it."}, {"id": "s86", "start": 530.8389999999999, "end": 538.28, "text": "This creates some difficult problems where you actually need to introduce things like weights and loops to check if information is ready."}, {"id": "s87", "start": 538.28, "end": 548.2, "text": "So Clay, we've iterated on this problem um quite a bit and we've ended up in a place where we are basically taking a graph-based view of the orchestration problem"}, {"id": "s88", "start": 548.2, "end": 552.56, "text": "with a series of general purpose nodes that are executing various things."}, {"id": "s89", "start": 552.56, "end": 565.88, "text": "And so we have nodes that run agents, nodes that make tool calls, nodes that handle our conditional logic, nodes that run code, and then nodes that run effectively this map reduce system to fan out the information and bring it back."}, {"id": "s90", "start": 565.88, "end": 576.0, "text": "And so a great orchestration layer will handle all of these and whether you buy it or build it, I think this is like fundamentally the the kind of modern way to set this up."}, {"id": "s91", "start": 576.0, "end": 578.64, "text": "Here's an example of this um in in clay."}, {"id": "s92", "start": 578.64, "end": 586.88, "text": "And again, you can use other tools for this, but basically I'm going to have some sort of event that kicks off my orchestration, some trigger or some schedule."}, {"id": "s93", "start": 586.88, "end": 589.44, "text": "I'm going to then talk to a couple different systems."}, {"id": "s94", "start": 589.44, "end": 597.12, "text": "I'm going to combine that information back together, and then I'm going to push it out to different interfaces that, uh, my reps are using."}, {"id": "s95", "start": 597.44, "end": 607.04, "text": "Okay, so now that I have a data layer set up and I have my everything orchestrated, I now have this system which is starting to look a lot more complex."}, {"id": "s96", "start": 607.04, "end": 620.72, "text": "And if you spend a lot of time in go-to-market, uh, I think this is actually like one of the simplest views of what is happening with an account, where I have multiple signals that are occurring, I have data that needs to be updated, I have actions that my agents or reps are taking,"}, {"id": "s97", "start": 620.72, "end": 624.28, "text": "and then I have meetings that are happening and feedback that's occurring."}, {"id": "s98", "start": 624.28, "end": 632.84, "text": "And so, um, the state of the world today is that we are relying on sales reps in a lot of cases to manually sort through this, but one of the great advances"}, {"id": "s99", "start": 632.84, "end": 638.6, "text": "in the last year or so is that we can now use agents to take care of all of this context."}, {"id": "s100", "start": 638.6, "end": 645.2, "text": "Um, however, if you use agents, you actually run into some of the same problems that you are dealing with if you just use LLMs."}, {"id": "s101", "start": 645.2, "end": 655.92, "text": "So, um, in GTM in particular, we are trying to build very long-running agents, agents that run over a course of weeks or months that keep track of the state of an account throughout a deal cycle."}, {"id": "s102", "start": 655.92, "end": 666.64, "text": "We also have a high bar for error because a lot of the results of our GTM work is customer communication and getting that wrong can have disastrous con- uh, consequences."}, {"id": "s103", "start": 666.64, "end": 673.96, "text": "And then finally, the agents are often doing unstructured work and pushing that into systems that are highly structured like a CRM."}, {"id": "s104", "start": 673.96, "end": 679.64, "text": "And so, the the mapping of what the agent is producing is is super important."}, {"id": "s105", "start": 679.64, "end": 688.44, "text": "So, the architecture that we've landed on for this that I think is most powerful is an agent that exists for each account and maintains a persistent state of that account."}, {"id": "s106", "start": 688.44, "end": 697.56, "text": "It's always going to execute, and because it's executing over a of weeks or months, it's often going to be dormant for most of the time that it's available."}, {"id": "s107", "start": 697.56, "end": 702.12, "text": "So, we need to use smart triggers or a heartbeat or something to wake it up."}, {"id": "s108", "start": 702.12, "end": 708.56, "text": "And then when it wakes up, it needs to kind of ingest the current context of the account from our data layer and our orchestration layer."}, {"id": "s109", "start": 708.56, "end": 715.88, "text": "And because the agent is making decisions for us in many cases automatically, we need to allow for feedback on the agent as well."}, {"id": "s110", "start": 715.88, "end": 726.76, "text": "The um cutting edge of doing this is the learning phase where as the agent works on an account or a series of accounts, it updates its own view of what's working."}, {"id": "s111", "start": 726.76, "end": 729.68, "text": "Today in GTM, this is not fully solved yet."}, {"id": "s112", "start": 729.68, "end": 738.88, "text": "And in fact, the continual learning um effort and the next best action suggestions are kind of one of the cutting edge problems that that we're working on."}, {"id": "s113", "start": 738.88, "end": 742.56, "text": "So, here's a look at um a a kind of a basic agent."}, {"id": "s114", "start": 742.56, "end": 746.48, "text": "You can see here that I'm pulling in information from a couple different sources."}, {"id": "s115", "start": 746.48, "end": 748.44, "text": "I'm using reasoning steps here."}, {"id": "s116", "start": 748.44, "end": 753.76, "text": "And then critically, I'm also updating different values in my CRM that are just for the agents."}, {"id": "s117", "start": 753.76, "end": 761.8389999999999, "text": "So, I always recommend separating the fields that agents are updating from the fields that deterministic systems are updating or that people are updating."}, {"id": "s118", "start": 761.8389999999999, "end": 766.36, "text": "And to look at a full uh view of an agent, this is a closed loss free awaken agent."}, {"id": "s119", "start": 766.36, "end": 772.32, "text": "So, you can see it's talking to Gong, email, CRM, and um my data warehouse."}, {"id": "s120", "start": 772.32, "end": 775.24, "text": "And so, it's pulling together multiple pieces of information."}, {"id": "s121", "start": 775.24, "end": 777.96, "text": "And this agent is triggered on a time basis."}, {"id": "s122", "start": 777.96, "end": 783.08, "text": "So, if if we lose an account, we're not going to kind of like immediately go after that account again."}, {"id": "s123", "start": 783.08, "end": 787.96, "text": "We're going to wait for a little bit of time in order to um in order to attack it again."}, {"id": "s124", "start": 787.96, "end": 795.12, "text": "So, there's a number of kind of timing and context issues that we have to address when we're building agents for GTM."}, {"id": "s125", "start": 795.12, "end": 799.92, "text": "The last step um that that is important here is the actual execution step."}, {"id": "s126", "start": 799.92, "end": 808.64, "text": "So, now that we have a data layer that contains the perfect copy of the virtual world, we have an orchestrated system that's um sharing context with all of our systems."}, {"id": "s127", "start": 808.64, "end": 811.76, "text": "We have agents that are making decisions and reasoning about what to do."}, {"id": "s128", "start": 811.76, "end": 816.52, "text": "We actually need to get in front of customers and execute our messaging."}, {"id": "s129", "start": 816.52, "end": 821.68, "text": "Uh unfortunately, uh messaging and execution is one of the hardest problems in GTM engineering."}, {"id": "s130", "start": 821.68, "end": 827.64, "text": "Here's a look at some of the um email open and reply rates over time."}, {"id": "s131", "start": 827.64, "end": 832.0, "text": "Generally, what we observe is that cold email works less and less well as the years go on."}, {"id": "s132", "start": 832.0, "end": 834.88, "text": "This is a trend that's been true forever."}, {"id": "s133", "start": 834.88, "end": 836.72, "text": "Look at a snapshot of this."}, {"id": "s134", "start": 836.72, "end": 845.48, "text": "Um if you look at the far left here, I actually think these are pretty uh elevated rates for some of these, but the relative differences between these channels is correct."}, {"id": "s135", "start": 845.48, "end": 849.4, "text": "So, you know, LinkedIn can be three to four times more effective than cold email."}, {"id": "s136", "start": 849.4, "end": 852.12, "text": "Cold calling and cold email are roughly the same."}, {"id": "s137", "start": 852.12, "end": 858.04, "text": "And then on the right here, um this is a series of uh statistics from Smart Lead."}, {"id": "s138", "start": 858.04, "end": 860.44, "text": "This is across, I think, 20 million emails."}, {"id": "s139", "start": 860.44, "end": 865.16, "text": "And so, you can see we've got somewhere between a half a percent and 1% reply rates."}, {"id": "s140", "start": 865.16, "end": 870.8, "text": "So, what that means is, of course, if we've got 100 contacts that we're sequencing, maybe one of them will reply."}, {"id": "s141", "start": 870.8, "end": 881.72, "text": "And so, that really raises the stakes for agentic execution within GTM because if your agents are doing the wrong things, then you're missing out on the margin, which is where most GTM teams"}, {"id": "s142", "start": 881.72, "end": 884.88, "text": "are uh are having success."}, {"id": "s143", "start": 885.56, "end": 889.08, "text": "The other thing with execution is you have to solve some very human problems."}, {"id": "s144", "start": 889.08, "end": 895.56, "text": "So, for example, do you email on behalf of the rep, or do you let the agent do the emailing?"}, {"id": "s145", "start": 895.56, "end": 901.88, "text": "If you email on behalf of the rep, what that means is like everett@clay.com is actually reaching out directly to customers."}, {"id": "s146", "start": 901.88, "end": 911.08, "text": "But, if I do that in the wrong way, or I don't get the replies that I need, that then means that my overall domain reputation is going to suffer for for my company."}, {"id": "s147", "start": 911.08, "end": 915.08, "text": "So, a common technique then is to use multiple domains to get in touch with customers."}, {"id": "s148", "start": 915.08, "end": 922.36, "text": "But, then if I do that, I actually need to find a way to route responses on that domain back to my main domain so my reps can process it."}, {"id": "s149", "start": 922.36, "end": 923.4, "text": "And that's just email."}, {"id": "s150", "start": 923.4, "end": 932.92, "text": "There's also multi-channel outreach, which is tricky as well because you then have to, for example, if you get a call connection and a meeting booked on your call sequence,"}, {"id": "s151", "start": 932.92, "end": 939.24, "text": "you then need to suppress your email sequence and maybe unenrolled someone from a life cycle marketing campaign."}, {"id": "s152", "start": 939.24, "end": 950.44, "text": "So, the coordination of the execution of all of this is also a hard problem and also something that we can use agents to to help resolve."}, {"id": "s153", "start": 950.44, "end": 953.28, "text": "So, here's a look at one way that that we're tackling this."}, {"id": "s154", "start": 953.28, "end": 963.84, "text": "This is a setup for a kind of rep proxied view where we have a bunch of rep inboxes that are connected to our sequencer and we're actually sending that on behalf of reps."}, {"id": "s155", "start": 963.84, "end": 967.48, "text": "But like I said, we do this for kind of a portion of our accounts."}, {"id": "s156", "start": 967.48, "end": 974.88, "text": "For many of of our accounts, we actually use multiple domains to go after them and then we have to tackle the routing problem."}, {"id": "s157", "start": 975.56, "end": 982.48, "text": "So, that was kind of a lightning review of what I consider to be some of the like harder problems within GTM engineering."}, {"id": "s158", "start": 982.48, "end": 991.8, "text": "I think if you get these pieces right, you can end up in a place where you're providing a technical foundation for growth that is helping your company achieve incredible results."}, {"id": "s159", "start": 991.8, "end": 1002.48, "text": "But I think a lot of teams actually overlook some of the harder pieces here and and don't necessarily design around some of the constraints that they have to deal with."}, {"id": "s160", "start": 1002.48, "end": 1003.96, "text": "So, that's my talk."}, {"id": "s161", "start": 1003.96, "end": 1005.68, "text": "You can see me on LinkedIn."}, {"id": "s162", "start": 1005.68, "end": 1013.64, "text": "There's a URL there and looks like I have about 90 seconds for questions if anyone wants to ask anything."}, {"id": "s163", "start": 1015.9159999999999, "end": 1017.9159999999999, "text": "[applause]"}, {"id": "s164", "start": 1018.52, "end": 1022.04, "text": "Any any questions for Everett?"}, {"id": "s165", "start": 1022.04, "end": 1022.64, "text": "Raise your hand."}, {"id": "s166", "start": 1022.64, "end": 1025.08, "text": "I can Okay."}, {"id": "s167", "start": 1029.52, "end": 1038.64, "text": "Just uh curious as to what your um biggest challenge is with all these new um, within the org."}, {"id": "s168", "start": 1038.64, "end": 1044.36, "text": "I think one of the harder problems is probably the interface between the human and the agent."}, {"id": "s169", "start": 1044.36, "end": 1054.28, "text": "Like I said, I think the most powerful use of agents within GTM is to act as the reasoning and decision layer for a lot of tasks that a sales rep was previously doing."}, {"id": "s170", "start": 1054.28, "end": 1062.8, "text": "Um, and so you run into a lot of instances where the rep might think that they should do something different or the rep might not know that the agent did something."}, {"id": "s171", "start": 1062.8, "end": 1079.92, "text": "So, um, because ultimately a human still needs to get on a call with a prospect, coordinating the, uh, connection between what the automated systems are doing and what the, um, what the human sales rep is doing and making that work well, I think is probably one of the hardest problems."}, {"id": "s172", "start": 1080.76, "end": 1084.12, "text": "Okay, well, oh, yeah, one more."}, {"id": "s173", "start": 1088.04, "end": 1089.08, "text": "Um, I have a couple questions."}, {"id": "s174", "start": 1089.08, "end": 1095.36, "text": "So, um, GTM engineers are fundamentally software developers that have this, uh, knowledge."}, {"id": "s175", "start": 1095.36, "end": 1101.68, "text": "And, well, my other question is that, uh, this is mainly for outbound or inbound as well is included in this product."}, {"id": "s176", "start": 1101.68, "end": 1102.56, "text": "For everything, yeah."}, {"id": "s177", "start": 1102.56, "end": 1106.76, "text": "So, um, like the orchestration problem is pretty acute in inbound."}, {"id": "s178", "start": 1106.76, "end": 1108.04, "text": "You have to get the routing right."}, {"id": "s179", "start": 1108.04, "end": 1110.16, "text": "You have to qualify the account properly."}, {"id": "s180", "start": 1110.16, "end": 1115.24, "text": "There's usually historical context on inbound that comes in that needs to be, um, needs to be understood."}, {"id": "s181", "start": 1115.24, "end": 1120.44, "text": "So, uh, yeah, this I think GTM engineering covers, uh, covers all of GTM."}, {"id": "s182", "start": 1120.44, "end": 1125.64, "text": "And, uh, if you want to chat with me more about this, I'll just be right outside, but I will hand it to the next speaker now."}, {"id": "s183", "start": 1125.64, "end": 1127.84, "text": "Thank you."}]}, {"id": "V_5bn4q-vAI", "title": "How We Got LLMs to Recommend Our Open Source Library — Christopher Burns, Inth", "channel": "AI Engineer", "duration": 987, "upload_date": null, "url": "https://www.youtube.com/watch?v=V_5bn4q-vAI", "api": "/api/talks/V_5bn4q-vAI.json", "summary_url": "/#V_5bn4q-vAI", "transcript": {"html": "/transcripts/V_5bn4q-vAI.html", "txt": "/transcripts/V_5bn4q-vAI.txt", "vtt": "/transcripts/V_5bn4q-vAI.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 22.56, "text": "The talk title, we'll see if it lines up by the end of it, but when we put this talk title in just to be honest with you, so much changes in like"}, {"id": "s3", "start": 22.56, "end": 24.16, "text": "3 days at this point."}, {"id": "s4", "start": 24.16, "end": 25.68, "text": "We'll see how it goes."}, {"id": "s5", "start": 25.68, "end": 37.04, "text": "So, yeah, the whole point of it was that how I got LLMs to understand my open source library and what I did to do it well."}, {"id": "s6", "start": 37.04, "end": 39.2, "text": "Is it some kind of scientific background?"}, {"id": "s7", "start": 39.2, "end": 40.76, "text": "Am I from a lab?"}, {"id": "s8", "start": 40.76, "end": 46.04, "text": "No. That's My slidey clicky thing's not working."}, {"id": "s9", "start": 46.04, "end": 49.76, "text": "So, I just like to say again, I'm just like you."}, {"id": "s10", "start": 49.76, "end": 52.0, "text": "I'm just this side of the stage."}, {"id": "s11", "start": 52.0, "end": 59.88, "text": "I've just hacking hacking it together, figuring out what is useful, what is token efficient, these kind of things."}, {"id": "s12", "start": 59.88, "end": 62.2, "text": "And again, I am British."}, {"id": "s13", "start": 62.2, "end": 66.08, "text": "Please don't think my accent makes me an expert."}, {"id": "s14", "start": 67.24, "end": 70.6, "text": "So, for quick contacts, I'm Christopher Burns."}, {"id": "s15", "start": 70.6, "end": 71.96000000000001, "text": "I'm the founder of Inth."}, {"id": "s16", "start": 71.96000000000001, "end": 76.84, "text": "I created a open source cookie banner library called C15T."}, {"id": "s17", "start": 76.84, "end": 79.32, "text": "That really annoying thing on the internet."}, {"id": "s18", "start": 79.32, "end": 80.84, "text": "That is me."}, {"id": "s19", "start": 80.84, "end": 87.32, "text": "Uh I spoke at Next Conf uh after it started taking off and it had 1.2 thousand downloads at the time."}, {"id": "s20", "start": 87.32, "end": 89.56, "text": "Now it's closer to 2 million."}, {"id": "s21", "start": 89.56, "end": 94.68, "text": "In terms of like statistics, so we just checked that, you know, this is not theoretical."}, {"id": "s22", "start": 94.68, "end": 99.24000000000001, "text": "This is actual uh something that is succeeding."}, {"id": "s23", "start": 99.24000000000001, "end": 101.92, "text": "We have 3 million NPM downloads."}, {"id": "s24", "start": 101.92, "end": 106.4, "text": "4.5 uh 4.5 45% month-on-month growth."}, {"id": "s25", "start": 106.4, "end": 114.16, "text": "2.8 thousand websites using it in production from Minify to Z to Inphysical."}, {"id": "s26", "start": 114.16, "end": 124.8, "text": "And the whole concept of this talk was uh it goes back to we were doing all these things to make our library more efficient."}, {"id": "s27", "start": 124.8, "end": 128.96, "text": "You know, we were batting upwards compared to every other tool."}, {"id": "s28", "start": 128.96, "end": 131.84, "text": "Every other tool was built for marketers and lawyers."}, {"id": "s29", "start": 131.84, "end": 133.76, "text": "We were built for the developer."}, {"id": "s30", "start": 133.76, "end": 137.8, "text": "So, we had to make sure we had a very good developer experience."}, {"id": "s31", "start": 137.8, "end": 142.16, "text": "And we had an onboarding format said, \"How did you hear about this?\""}, {"id": "s32", "start": 142.16, "end": 159.959, "text": "And we started to get spikes that from April 13th, you know, now it is our number one source of inbound is Claude, ChatGPT, Codex, that is ChatGPT, Gemini recommending us."}, {"id": "s33", "start": 159.959, "end": 163.68, "text": "And I like to think of this as, you know, the iceberg."}, {"id": "s34", "start": 163.68, "end": 176.64, "text": "You know, we start with the top of C15T and there's many many tools that go into it from, you know, LLMs.txt to site maps to RSS feeds to robot.txts."}, {"id": "s35", "start": 176.64, "end": 183.92, "text": "So many micro optimizations that you can do from old methods of running the internet to new methods."}, {"id": "s36", "start": 183.92, "end": 190.84, "text": "And uh how many of you have, you know, made these kind of tools?"}, {"id": "s37", "start": 190.84, "end": 200.2, "text": "How many of you have, really put simply, said, \"Hey, agents, we need to this to be done.\""}, {"id": "s38", "start": 200.2, "end": 204.44, "text": "And yeah, it said, \"We should install this library.\""}, {"id": "s39", "start": 204.44, "end": 206.0, "text": "And you've gone, \"Okay.\""}, {"id": "s40", "start": 206.0, "end": 206.68, "text": "Raise your hands."}, {"id": "s41", "start": 206.68, "end": 209.48, "text": "How many people have done this?"}, {"id": "s42", "start": 209.56, "end": 212.16, "text": "Pretty much most people."}, {"id": "s43", "start": 212.28, "end": 214.68, "text": "That's a lot of hands."}, {"id": "s44", "start": 214.68, "end": 221.84, "text": "So, what's really funny is that we went from wizards installing our software to agents installing them."}, {"id": "s45", "start": 221.84, "end": 225.36, "text": "And I just went through Y Combinator."}, {"id": "s46", "start": 225.36, "end": 230.2, "text": "And what's really interesting is it if you know who these two people are."}, {"id": "s47", "start": 230.2, "end": 239.36, "text": "These are the co-founders of Stripe, the Collison brothers, and they had a really classic saying of like a Collison brothers install."}, {"id": "s48", "start": 239.36, "end": 243.2, "text": "And they would hand you their laptop, and they would install Stripe."}, {"id": "s49", "start": 243.2, "end": 246.6, "text": "These days, it's kind of like just a prompt."}, {"id": "s50", "start": 246.6, "end": 250.28, "text": "Being in Y Combinator, we just give people a prompt."}, {"id": "s51", "start": 250.28, "end": 260.079, "text": "And really what that means is that our very good developer experience primitives are now hitting agent primitives."}, {"id": "s52", "start": 260.359, "end": 268.2, "text": "So, as we was pulling all these things together, there is no one tool that fixes everything."}, {"id": "s53", "start": 268.2, "end": 272.36, "text": "I like to think about these problems like, you know, Batman's utility belt."}, {"id": "s54", "start": 272.36, "end": 278.36, "text": "Loads of really small things targeted in different areas to get it done."}, {"id": "s55", "start": 278.36, "end": 287.52, "text": "And we built all of these things into C15T because we wanted C15T to be the best developer framework in this tool."}, {"id": "s56", "start": 287.52, "end": 289.15999999999997, "text": "Think of it like Stripe Docs."}, {"id": "s57", "start": 289.15999999999997, "end": 301.48, "text": "And as we was building more and more tools, more and more documentation websites, we actually started abstracting these tools into a side quest that we call Lead Type."}, {"id": "s58", "start": 301.48, "end": 310.64, "text": "So, all of the things that we're going to talk about now are things that we have already solved with this open source framework."}, {"id": "s59", "start": 310.64, "end": 319.76, "text": "We have our friends at other developer companies implementing it and seeing similar results about how to like optimize for the agent experience."}, {"id": "s60", "start": 319.76, "end": 323.52, "text": "So, again, this isn't a magic SEO tool."}, {"id": "s61", "start": 323.52, "end": 330.56, "text": "It's actually a very non-sexy title, but a framework-neutral docs pipeline."}, {"id": "s62", "start": 330.56, "end": 332.12, "text": "Complex."}, {"id": "s63", "start": 332.12, "end": 345.52, "text": "But really, all it basically does is take your .mdx files, you run Lead Type generate, and it will spit out everything for um optimized agent experience for your websites."}, {"id": "s64", "start": 345.68, "end": 357.04, "text": "And the rest of this talk is going to look a bit like a BuzzFeed list, to put simply, of these problems, because again, not everybody knows even how to put an LLM.txt"}, {"id": "s65", "start": 357.04, "end": 358.24, "text": "on their website."}, {"id": "s66", "start": 358.24, "end": 370.24, "text": "So, you know, that comes to the first problem of if your docs have hundreds of pages, and how can it navigate them to find the right questions?"}, {"id": "s67", "start": 370.64, "end": 374.0, "text": "The first solution is obviously an LLM.txt."}, {"id": "s68", "start": 374.0, "end": 380.08, "text": "What we found in our research is that it's much better not to just generate this."}, {"id": "s69", "start": 380.08, "end": 384.76, "text": "It is much better to write your LLM.txt from hand."}, {"id": "s70", "start": 384.76, "end": 393.24, "text": "Obviously, AutoRaptor, but write it as you are trying to get the answers across to the LLMs."}, {"id": "s71", "start": 393.24, "end": 399.68, "text": "For about 40 good lines beats 1,000 lines of noise from our testing."}, {"id": "s72", "start": 399.68, "end": 404.56, "text": "And that comes to the second issue of agents don't know how to browse."}, {"id": "s73", "start": 404.56, "end": 406.919, "text": "They know how to fetch."}, {"id": "s74", "start": 406.919, "end": 411.48, "text": "So, you then need the second part of the solution of the LLMs full."}, {"id": "s75", "start": 411.48, "end": 423.96, "text": "Again, think of this as a sitemap, where it takes the actual page and the links and a short description of what each page is for the LLMs to reference."}, {"id": "s76", "start": 423.96, "end": 427.48, "text": "Again, most people have heard these two solutions."}, {"id": "s77", "start": 427.48, "end": 439.0, "text": "But, where things are starting to get very complicated and we're seeing a lot of optimizations right now, is that HTML is expensive, and why can't we just ship markdown"}, {"id": "s78", "start": 439.0, "end": 440.72, "text": "to the agents?"}, {"id": "s79", "start": 440.72, "end": 442.84, "text": "And we can."}, {"id": "s80", "start": 442.84, "end": 448.48, "text": "And you've seen that everybody has started creating twin MDs."}, {"id": "s81", "start": 448.48, "end": 457.12, "text": "So, that's taking the normal website, such as Next.js quick start, and then having a dot MD on the end of it."}, {"id": "s82", "start": 457.12, "end": 468.88, "text": "And when you load that, it goes to the markdown But, what's really important here, and it's really worth noting, is this line at the bottom."}, {"id": "s83", "start": 468.88, "end": 476.48, "text": "If you look at all the best documentation websites, Minify, Vercel, C15T, pat myself on the back."}, {"id": "s84", "start": 476.48, "end": 479.52, "text": "Um they all have this in the header."}, {"id": "s85", "start": 479.52, "end": 488.16, "text": "This is saying to the agents whenever they visit the website that there is an alternative version of this in mark markdown."}, {"id": "s86", "start": 488.16, "end": 491.0, "text": "Again, who actually supports it?"}, {"id": "s87", "start": 491.0, "end": 492.2, "text": "Don't ask me."}, {"id": "s88", "start": 492.2, "end": 497.16, "text": "Perplexity, some of the agents, it's all up in the air."}, {"id": "s89", "start": 497.16, "end": 508.52, "text": "And then, the second thing as well is that taking the .mds, you need to make sure that they're available through multiple methods."}, {"id": "s90", "start": 508.52, "end": 514.919, "text": "So, one of them is like the .md, so as you like copy it to an agent, you say .md."}, {"id": "s91", "start": 514.919, "end": 530.08, "text": "Another one is just taking the normal um link and then adding a uh redirect into your like your Next.js config, so that if it detects an agent has the header of accepting markdown,"}, {"id": "s92", "start": 530.08, "end": 535.28, "text": "instead of returning the HTML, it will return the markdown."}, {"id": "s93", "start": 535.28, "end": 540.4, "text": "And then, the third one is that not all agents can append header tags."}, {"id": "s94", "start": 540.4, "end": 546.16, "text": "So, there's also a URL query of mode equals agent."}, {"id": "s95", "start": 546.44, "end": 550.72, "text": "So, they're the ones that pretty much everybody knows."}, {"id": "s96", "start": 550.72, "end": 554.4, "text": "Um and it's pretty basic internet knowledge at this point."}, {"id": "s97", "start": 554.4, "end": 560.12, "text": "Um but one of the really interesting ones is where we're going next."}, {"id": "s98", "start": 560.12, "end": 568.2, "text": "And our tooling is also helping this is that an agent can't ask your website anything."}, {"id": "s99", "start": 568.32, "end": 571.48, "text": "So, we need to think about the web MCP."}, {"id": "s100", "start": 571.48, "end": 581.64, "text": "And this is still very early, but our tool is already uh um exposing three different tools to WebMCP."}, {"id": "s101", "start": 581.64, "end": 585.32, "text": "Search docs, get pages, and ask docs."}, {"id": "s102", "start": 585.32, "end": 594.2, "text": "Again, um our library lead type is pulling all of that context together so an agent can easily ask it the right questions."}, {"id": "s103", "start": 594.2, "end": 603.52, "text": "I think we'll even see a future where communication happens over email and there's companies in San Francisco building that today."}, {"id": "s104", "start": 604.36, "end": 619.2, "text": "But this is actually the most interesting one and I think the most important one that anybody who has any type of developer module surface, NPM modules, cargo, Python, whatever."}, {"id": "s105", "start": 619.2, "end": 627.92, "text": "Is that the uncomfortable truth is that coding agents are actually never visiting the website if you have a library."}, {"id": "s106", "start": 627.92, "end": 631.4, "text": "They're actually visiting the node modules."}, {"id": "s107", "start": 631.4, "end": 635.12, "text": "They read the repo and they read the node modules."}, {"id": "s108", "start": 635.12, "end": 646.4, "text": "They They have previous stale training data and they're trying to work it out on what it can do from the the compiled source."}, {"id": "s109", "start": 646.4, "end": 660.72, "text": "So, again, following what people like Vercel are doing and people who are thought leaders in this industry is that we take the bundled markdown documents and then we also"}, {"id": "s110", "start": 660.72, "end": 667.32, "text": "put them in the node modules with an agents.md file."}, {"id": "s111", "start": 667.32, "end": 674.44, "text": "And the agents.md file basically says, \"If you've got a problem, if you've got a question, all the documents are here."}, {"id": "s112", "start": 674.44, "end": 676.16, "text": "Grab them.\""}, {"id": "s113", "start": 676.16, "end": 682.08, "text": "And we actually see that this has surprisingly real effects."}, {"id": "s114", "start": 682.08, "end": 695.64, "text": "We can see that between many different models almost 50% token saving on instead of trying to search the web, find the right tools, pulling the markdown files from your code base."}, {"id": "s115", "start": 695.64, "end": 704.96, "text": "So, if you have a library that's forever changing, then having the node modules built in is a very effective solution."}, {"id": "s116", "start": 704.96, "end": 714.52, "text": "This is also working without any skills, but if you want as well, you can add skills to it to say, \"Look at the node modules and go from that.\""}, {"id": "s117", "start": 714.56, "end": 725.56, "text": "And again, just uh doubling down into this point, looking at like the agents.ai and DFile, you can say like when working with Z15 T Next.js library, read the bundles"}, {"id": "s118", "start": 725.56, "end": 731.28, "text": "and verify that they match and go from there."}, {"id": "s119", "start": 731.28, "end": 736.48, "text": "So, that's really like how we've done it."}, {"id": "s120", "start": 736.48, "end": 741.08, "text": "I don't want to say this is like prescriptive, that I know the answers."}, {"id": "s121", "start": 741.08, "end": 751.04, "text": "If you have documentation websites, or if you have any type of markdown, if you're running your own blog, you know, I've been using our package as well on our marketing website."}, {"id": "s122", "start": 751.04, "end": 755.32, "text": "Every part of our marketing website also has a markdown file."}, {"id": "s123", "start": 755.32, "end": 757.88, "text": "It can be something that's used for many things."}, {"id": "s124", "start": 757.88, "end": 763.2, "text": "We're currently just um most people are just using it for documentation."}, {"id": "s125", "start": 763.2, "end": 768.0, "text": "But, you can literally run it and it will pull out all of these extra files."}, {"id": "s126", "start": 768.0, "end": 781.68, "text": "And one of the big things was when I put this talk together, you know, we were seeing the results that Claude was recommending, but there was not really any like test suites yet, or test harnesses,"}, {"id": "s127", "start": 781.68, "end": 784.28, "text": "on like is your site agent ready?"}, {"id": "s128", "start": 784.28, "end": 787.44, "text": "And Cloudflare brought one of them out."}, {"id": "s129", "start": 787.44, "end": 792.68, "text": "But, my favorite is actually one called Aura AI."}, {"id": "s130", "start": 792.68, "end": 797.12, "text": "Um this is brand new and it tests a lot."}, {"id": "s131", "start": 797.12, "end": 802.2, "text": "I'm happy to show off score of 59 because it's constantly changing."}, {"id": "s132", "start": 802.2, "end": 804.32, "text": "3 weeks ago, it was a lot higher."}, {"id": "s133", "start": 804.32, "end": 807.76, "text": "And again, this is a forever changing area."}, {"id": "s134", "start": 807.76, "end": 813.04, "text": "So, aura.ai, put in your website, and it will start giving you recommendations."}, {"id": "s135", "start": 813.04, "end": 814.44, "text": "It's forever changing."}, {"id": "s136", "start": 814.44, "end": 817.08, "text": "Again, we can just stay on top of it."}, {"id": "s137", "start": 817.08, "end": 827.68, "text": "And yeah, this is like one of my final slides is that the slide the the market agents, LLMs, everything is forever changing."}, {"id": "s138", "start": 827.68, "end": 830.04, "text": "There is no such thing as perfection."}, {"id": "s139", "start": 830.04, "end": 840.04, "text": "When I started making these slides, I got so caught up of like, everyone expects me to be the expert here, but I've just been hacking on this problem a little more than you guys have so far."}, {"id": "s140", "start": 840.04, "end": 842.84, "text": "So, never get caught with being perfect."}, {"id": "s141", "start": 842.84, "end": 846.96, "text": "Every small little increase really does matter."}, {"id": "s142", "start": 846.96, "end": 851.24, "text": "Every small little thing you add really does matter."}, {"id": "s143", "start": 851.24, "end": 852.28, "text": "Thank you so much."}, {"id": "s144", "start": 852.28, "end": 856.749, "text": "You can find me on X, Burn Chris, and LinkedIn, and everywhere."}, {"id": "s145", "start": 856.749, "end": 857.4, "text": "[applause]"}, {"id": "s146", "start": 857.4, "end": 859.4, "text": "WOO!"}, {"id": "s147", "start": 859.4, "end": 864.36, "text": "I THINK I THINK WE HAVE TIME for one or two questions."}, {"id": "s148", "start": 864.36, "end": 866.64, "text": "Yeah, of course."}, {"id": "s149", "start": 872.4, "end": 876.6, "text": "So, if you were building um uh we're a website agency."}, {"id": "s150", "start": 876.6, "end": 879.8, "text": "We work with a lot of startups building like their own websites."}, {"id": "s151", "start": 879.8, "end": 880.24, "text": "Mhm."}, {"id": "s152", "start": 880.24, "end": 889.8, "text": "If you were just building a website, not necessarily like developer tool, but just a website to be found, which of these methods like would you concentrate on if you're starting from scratch?"}, {"id": "s153", "start": 889.8, "end": 900.68, "text": "Yeah, I think the most important ones, and we're starting to see this more and more, is trying to provide a dot md file for every single page."}, {"id": "s154", "start": 900.68, "end": 903.4, "text": "A lot of CMSs are not built in this way."}, {"id": "s155", "start": 903.4, "end": 916.8, "text": "Um and we see this optimization happening more and more where I didn't put in the slide, but we're seeing more and more websites being visited by agents instead of real humans."}, {"id": "s156", "start": 916.8, "end": 925.2, "text": "So, in terms of even like trying to be proactive and token efficient, you should provide a markdown file if you can."}, {"id": "s157", "start": 925.2, "end": 928.8, "text": "Again, a lot of CMS's are not built this way."}, {"id": "s158", "start": 928.8, "end": 931.16, "text": "I actually built my own CMS."}, {"id": "s159", "start": 931.16, "end": 935.24, "text": "My name is Chris and I built ChrisCMS, short for Christmas."}, {"id": "s160", "start": 935.24, "end": 938.4, "text": "It's a whole It's a whole thing my team wishes I never built."}, {"id": "s161", "start": 938.4, "end": 943.4, "text": "But, it does work and it does bring this like token efficiency up."}, {"id": "s162", "start": 943.4, "end": 949.0, "text": "So, yeah, I would say llms.txt is your first shout."}, {"id": "s163", "start": 949.0, "end": 952.88, "text": "llms.txt full form .txt."}, {"id": "s164", "start": 952.88, "end": 956.88, "text": "Second, if you if you can, just do them manually."}, {"id": "s165", "start": 956.88, "end": 963.48, "text": "Say you're not even working on systems that have markdown, I still recommend them."}, {"id": "s166", "start": 963.48, "end": 971.68, "text": "But, you can always get creative with creating these files on the on on the go."}]}, {"id": "VjEP0xqTUI0", "title": "The Building Blocks of GTM Orchestration — Arman Vaziri, Ramp", "channel": "AI Engineer", "duration": 1195, "upload_date": null, "url": "https://www.youtube.com/watch?v=VjEP0xqTUI0", "api": "/api/talks/VjEP0xqTUI0.json", "summary_url": "/#VjEP0xqTUI0", "transcript": {"html": "/transcripts/VjEP0xqTUI0.html", "txt": "/transcripts/VjEP0xqTUI0.txt", "vtt": "/transcripts/VjEP0xqTUI0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.92, "end": 14.68, "text": "Yeah, I really appreciate everybody showing up."}, {"id": "s3", "start": 14.68, "end": 17.2, "text": "Uh, as Madhu mentioned, my name's Armon."}, {"id": "s4", "start": 17.2, "end": 22.08, "text": "I lead our product and sales-led growth engineering teams at Ramp."}, {"id": "s5", "start": 22.08, "end": 27.72, "text": "Um, and today I'm going to talk to you about, uh, the building blocks of go-to-market orchestration."}, {"id": "s6", "start": 27.72, "end": 33.16, "text": "And um, to kick it off, like, what do I mean by go-to-market orchestration?"}, {"id": "s7", "start": 33.16, "end": 39.04, "text": "Effectively, like, what we're building towards is the ability to just describe a motion, right?"}, {"id": "s8", "start": 39.04, "end": 44.44, "text": "Whether it's like playbooks or experiments or like evergreen campaigns that you want to run."}, {"id": "s9", "start": 44.44, "end": 50.8, "text": "And how those get like distributed across the channels through which you actually execute your go-to-market, right?"}, {"id": "s10", "start": 50.8, "end": 54.16, "text": "Whether it's outbound or ads or web or whatever."}, {"id": "s11", "start": 54.16, "end": 60.0, "text": "Um, we want the ability to kind of describe this and automate that output."}, {"id": "s12", "start": 60.0, "end": 70.2, "text": "And this really started a few years ago where we kind of noticed that uh, there's a ton of great ideas, you know, like everybody across product and data and engineering and go-to-market"}, {"id": "s13", "start": 70.2, "end": 73.08, "text": "have like really good ideas for things that they want to do."}, {"id": "s14", "start": 73.08, "end": 76.4, "text": "And the bottleneck is kind of like everything after that, right?"}, {"id": "s15", "start": 76.4, "end": 78.56, "text": "How do you go pull an audience to go and target?"}, {"id": "s16", "start": 78.56, "end": 87.52, "text": "How do you go and convince a bunch of people to like um, abide by whatever strategy that you've come up with or playbooks or enablement materials."}, {"id": "s17", "start": 87.52, "end": 92.28, "text": "Um, and we wanted to try to aim to uh, reduce that coordination cost."}, {"id": "s18", "start": 92.28, "end": 103.92, "text": "So, there's parts of this where we could see it as like an engineering problem, even like a few years ago, just go and create like a consistent data substrate, go and like federate that across the different systems through which you,"}, {"id": "s19", "start": 103.92, "end": 105.84, "text": "uh, run your go-to-market."}, {"id": "s20", "start": 105.84, "end": 114.68, "text": "And obviously in the last few years, agents have really like deepened our ability to go and like push the level of automation that you can do on behalf of operators"}, {"id": "s21", "start": 114.68, "end": 119.0, "text": "like as close as possible to those points of execution."}, {"id": "s22", "start": 119.0, "end": 123.0, "text": "Um So, like really specifically, uh I'm a golfer."}, {"id": "s23", "start": 123.0, "end": 131.48, "text": "Suppose I want to offer golfers at uh East Coast construction companies an incentive to like try Ramp, talk to sales, whatever."}, {"id": "s24", "start": 131.48, "end": 138.76, "text": "Uh and we want to be able to go and spin up an audience of uh golfers at East Coast construction companies, spin up like an incentive."}, {"id": "s25", "start": 138.76, "end": 149.28, "text": "Let's go offer like some Pro V1 golf balls to uh these people, go create like outbound sequences, generate the copy, generate uh creative for paid ads and for web,"}, {"id": "s26", "start": 149.28, "end": 157.0, "text": "maybe show some in-app notifications for your customers, and do all of that seamlessly by just describing the intent, right?"}, {"id": "s27", "start": 157.0, "end": 160.32, "text": "And probably more than just this one sentence."}, {"id": "s28", "start": 160.32, "end": 165.76, "text": "Um So, a few years ago, we kind of identified uh a few fundamental challenges here."}, {"id": "s29", "start": 165.76, "end": 172.88, "text": "Um As was previously mentioned, uh the necessary data for this was just messy, inconsistent across systems, right?"}, {"id": "s30", "start": 172.88, "end": 184.32, "text": "Everybody's operating off of a different uh source of truth, and that makes it like effectively impossible to go and distribute some coordinated action across these different go-to-market teams and channels."}, {"id": "s31", "start": 184.32, "end": 188.519, "text": "Uh The next is that like reps were just buried in busywork, right?"}, {"id": "s32", "start": 188.519, "end": 194.68, "text": "Even if like you have the best intentions, I want to go and like run this campaign, uh I want your help doing it."}, {"id": "s33", "start": 194.68, "end": 199.28, "text": "The reality is that like uh our sales teams are in back-to-back-to-back-to-back meetings all day."}, {"id": "s34", "start": 199.28, "end": 210.84, "text": "They're outbounding, they're selling, and um the operational burden of like doing everything in between sales was just really high, uh which made kind of like really scaling out experimentation"}, {"id": "s35", "start": 210.84, "end": 213.36, "text": "and creativity challenging."}, {"id": "s36", "start": 213.36, "end": 218.04, "text": "Uh And similar to that, just the coordination and distribution are expensive, right?"}, {"id": "s37", "start": 218.04, "end": 219.72, "text": "If you're like, \"I have this idea."}, {"id": "s38", "start": 219.72, "end": 222.28, "text": "I'm going to go write this like proposal, this enablement material."}, {"id": "s39", "start": 222.28, "end": 225.88, "text": "I'm going to go try to like convince a bunch of people to go and use all of this.\""}, {"id": "s40", "start": 225.88, "end": 232.72, "text": "That's just like a really challenging thing to do on any like pace that's not on the order of like months."}, {"id": "s41", "start": 232.72, "end": 239.64, "text": "Um So, um over the last few years we've been trying to solve this problem from the ground up, right?"}, {"id": "s42", "start": 239.64, "end": 249.32, "text": "How can we start with that uh ingestion and consistency problem uh and data quality, which is just like, you know, on the road map every quarter."}, {"id": "s43", "start": 249.32, "end": 262.8, "text": "Um how can we then go build those vertical efficiency and growth levers, uh saving people time uh in like managing operations and execution, uh as well as like how can we improve conversion rates, make people more performant"}, {"id": "s44", "start": 262.8, "end": 268.68, "text": "by being able to kind of scale some of these more like uh informed and personalized and creative strategies."}, {"id": "s45", "start": 268.68, "end": 271.24, "text": "And then how can we extend this horizontally, right?"}, {"id": "s46", "start": 271.24, "end": 275.0, "text": "Teams have very common workflows at some level, right?"}, {"id": "s47", "start": 275.0, "end": 277.76, "text": "Everybody wants to outbound, everybody has meetings."}, {"id": "s48", "start": 277.76, "end": 282.919, "text": "Uh how can we go take the patterns that we build for one team and start to just mirror it to others?"}, {"id": "s49", "start": 282.919, "end": 287.72, "text": "Uh and now kind of where we're at is like this distribution and coordination problem, right?"}, {"id": "s50", "start": 287.72, "end": 295.52, "text": "How can you go and execute across multiple channels simultaneously through just like the description of intent?"}, {"id": "s51", "start": 296.08, "end": 299.96, "text": "So, yeah, I'll get into the building blocks."}, {"id": "s52", "start": 299.96, "end": 303.88, "text": "Really broadly, uh go-to-market agents are complicated."}, {"id": "s53", "start": 303.88, "end": 307.16, "text": "Um in order to do this effectively, right?"}, {"id": "s54", "start": 307.16, "end": 317.96, "text": "Your agents have to understand pretty much the entirety of your company, how you go to market, why products are useful, uh how to kind of like segment your buyers, your prospects, your customers"}, {"id": "s55", "start": 317.96, "end": 327.84, "text": "from people who have like never heard about you and you have like no information on them and they have no information on you, all the way to like customers who are actively using your products who have like"}, {"id": "s56", "start": 327.84, "end": 333.12, "text": "a totally different set of um you know, problems that you have to work with."}, {"id": "s57", "start": 333.12, "end": 344.0, "text": "Um And to just start to get a little technical here, um we started with like this consistent data foundation uh problem."}, {"id": "s58", "start": 344.0, "end": 347.6, "text": "And if you're looking at this and you're like, that looks like a CDP.\""}, {"id": "s59", "start": 347.6, "end": 349.8, "text": "Uh yeah, you're you're right."}, {"id": "s60", "start": 349.8, "end": 359.24, "text": "Uh we effectively went and built um an internal customer data platform at Ramp uh where we're effectively doing your very traditional things."}, {"id": "s61", "start": 359.24, "end": 374.72, "text": "We're going to take CRM data, product data, uh enrichment data, um web data, buying signals, you know, whether it's things that are internally modeled like um I don't know, we think that this customer has a high propensity to attach to"}, {"id": "s62", "start": 374.72, "end": 383.48, "text": "procurement or treasury uh all the way to things that are like external signals like funding announcements, um as well as like interaction data, right?"}, {"id": "s63", "start": 383.48, "end": 390.96, "text": "Emails, meetings, calls, uh page views, um and on the signal side of this, right?"}, {"id": "s64", "start": 390.96, "end": 400.76, "text": "We have some set of real-time events that are coming in, uh things like emails, you can go and pipe them onto a Kafka topic, consume them, uh and then funnel them back into"}, {"id": "s65", "start": 400.76, "end": 413.0, "text": "uh both like we have like a Postgres database that backs all of this, it enables us to maintain like transactional guarantees, referential integrity between the entities that exist and the different entities that exist, right?"}, {"id": "s66", "start": 413.0, "end": 424.96, "text": "Between your CRM, between your product, between third parties, um and attribute everything to the right level of detail, which we found to be like a pretty important problem, as well as all the associated metadata"}, {"id": "s67", "start": 424.96, "end": 427.36, "text": "around capturing like where did this come from?"}, {"id": "s68", "start": 427.36, "end": 429.16, "text": "When did it, you know, come in?"}, {"id": "s69", "start": 429.16, "end": 433.56, "text": "Um as well as starting to embed a lot of this data, right?"}, {"id": "s70", "start": 433.56, "end": 438.28, "text": "So much sales data is just inherently um unstructured, right?"}, {"id": "s71", "start": 438.28, "end": 444.919, "text": "You have like call transcripts, you have emails, you have notes, and the ability to kind of search across that is really valuable."}, {"id": "s72", "start": 444.919, "end": 451.6, "text": "Uh we have a set of online batch jobs, which are really just calling a lot of APIs uh for the most part."}, {"id": "s73", "start": 451.6, "end": 458.6, "text": "Uh Ramp's addressable market is pretty much like the entire US um and now expanding internationally."}, {"id": "s74", "start": 458.6, "end": 470.04, "text": "So, being able to kind of like pre-compute, pre-process, pre-ingest like all this enrichment data about who we can sell to and who we're already selling to is um really important for us."}, {"id": "s75", "start": 470.04, "end": 481.36, "text": "And then um as previously mentioned, a ton of work has gone into the offline piece of this with uh DBT, Snowflake, pulling everything into our warehouse, doing a lot of offline batch compute,"}, {"id": "s76", "start": 481.36, "end": 486.28, "text": "and then piping that in via reverse ETL back into the same layer."}, {"id": "s77", "start": 487.52, "end": 496.24, "text": "Uh next, more tactically, the way we tend to approach these problems is solve for one team first, then scale horizontally."}, {"id": "s78", "start": 496.24, "end": 501.68, "text": "Um as I mentioned before, you have like a very overlapping set of problems that exist, right?"}, {"id": "s79", "start": 501.68, "end": 504.16, "text": "Everybody wants to do automated outbound."}, {"id": "s80", "start": 504.16, "end": 506.44, "text": "Uh everybody wants to prepare for meetings."}, {"id": "s81", "start": 506.44, "end": 514.4, "text": "Uh whereas certain teams may have like problems or like things that they do that are isolated to them, like QBR generation."}, {"id": "s82", "start": 514.4, "end": 522.76, "text": "Um and to get into an example, like one of the things that we shipped is like pre-meeting briefs, right?"}, {"id": "s83", "start": 522.76, "end": 527.76, "text": "Um for AMs, AMs are like count account account managers."}, {"id": "s84", "start": 527.76, "end": 535.68, "text": "Uh they kind of manage the customer relationships that exist, trying to ensure that customers are using Ramp uh as best as possible."}, {"id": "s85", "start": 535.68, "end": 541.64, "text": "And um there's a lot of like important context that goes into like uh a meeting, right?"}, {"id": "s86", "start": 541.64, "end": 543.44, "text": "It's like what are we talking about?"}, {"id": "s87", "start": 543.44, "end": 544.92, "text": "Who are we meeting with?"}, {"id": "s88", "start": 544.92, "end": 547.36, "text": "Um what is the AM trying to do?"}, {"id": "s89", "start": 547.36, "end": 550.24, "text": "Like what are the product usage information?"}, {"id": "s90", "start": 550.24, "end": 551.52, "text": "What are the account vitals?"}, {"id": "s91", "start": 551.52, "end": 553.48, "text": "What's the agenda that we want to tackle?"}, {"id": "s92", "start": 553.48, "end": 556.32, "text": "And similarly, like what is the customer trying to do, right?"}, {"id": "s93", "start": 556.32, "end": 559.2, "text": "Do they have open tickets that they're trying to address?"}, {"id": "s94", "start": 559.2, "end": 563.64, "text": "Did they like email us saying that there is like a specific thing they're trying to talk about?"}, {"id": "s95", "start": 563.64, "end": 571.88, "text": "And how can we pull this together for AMs so that they can go in prepared uh and kind of manage the uh operational piece of just being in back-to-back-to-back"}, {"id": "s96", "start": 571.88, "end": 573.68, "text": "meetings all day."}, {"id": "s97", "start": 573.68, "end": 585.64, "text": "Um again, technically, uh the place to start with this is obviously if we're trying to generate a pre-meeting brief, we need to know what these meetings are, uh so we can pipe in meeting events,"}, {"id": "s98", "start": 585.64, "end": 594.84, "text": "uh do some hydration, map uh things like attendee emails, meeting titles uh back to the accounts that we're meeting with."}, {"id": "s99", "start": 594.84, "end": 605.96, "text": "This is like a sneaky hard problem at Ramp because you have the same emails that can work on behalf of multiple businesses, so it's kind of like a fuzzy match, and we can go and persist that, so that way every downstream consumer"}, {"id": "s100", "start": 605.96, "end": 607.88, "text": "of like, \"Hey, I care about this meeting.\""}, {"id": "s101", "start": 607.88, "end": 612.2, "text": "doesn't have to go and like recompute this from the ground up."}, {"id": "s102", "start": 612.36, "end": 619.56, "text": "And also, as mentioned in the previous talk, uh we've also built a system around durable execution, right?"}, {"id": "s103", "start": 619.56, "end": 622.68, "text": "That's pretty agnostic to the trigger that comes in."}, {"id": "s104", "start": 622.68, "end": 630.2, "text": "Everything is represented as a durable thread built around Temporal, representing each tool call and model call as an activity."}, {"id": "s105", "start": 630.2, "end": 640.2, "text": "That way, if uh you know, like a worker goes out for some reason, it can resume uh execution from where it left off, uh pulling together all the state that had accumulated"}, {"id": "s106", "start": 640.2, "end": 649.0, "text": "at that point in time, instead of starting back from like the beginning of the thread and trying to reprocess everything, which would be very inefficient and slow."}, {"id": "s107", "start": 649.0, "end": 660.28, "text": "Um there's also like great out-of-the-box capabilities for things like config-scoped tool calls, uh different agents are going to have access to different uh sets of tools, which give them access to different information,"}, {"id": "s108", "start": 660.28, "end": 666.0, "text": "different integrations, uh and different skills that might be necessary to actually perform the work."}, {"id": "s109", "start": 666.0, "end": 674.12, "text": "And similarly, there's things like uh human-in-the-loop uh tooling to just pause execution, get input, resume."}, {"id": "s110", "start": 674.12, "end": 686.4, "text": "Um And then getting to the uh unstructured piece of this, as I mentioned, like unstructured information is probably like the most valuable thing you're sitting on uh within your"}, {"id": "s111", "start": 686.4, "end": 690.52, "text": "um warehouse or your notes or wherever you store this today."}, {"id": "s112", "start": 690.52, "end": 695.52, "text": "Uh so, we have some set of real time data coming in, um, meeting transcripts, emails."}, {"id": "s113", "start": 695.52, "end": 706.48, "text": "We have some sort of like uh, batch jobs that are kind of pulling in like enablement materials, product knowledge, playbooks, um, chunking them, embedding them, putting them in Turbo Buffer,"}, {"id": "s114", "start": 706.48, "end": 710.72, "text": "and allows you to kind of or allows agents to go and search like what do I care about?"}, {"id": "s115", "start": 710.72, "end": 712.32, "text": "What am I trying to answer right now?"}, {"id": "s116", "start": 712.32, "end": 723.4, "text": "And doing some combination of like uh, vector search, attribute search, keyword search in order to pull information scoped to like a specific account, for example, uh, without having to pull in like"}, {"id": "s117", "start": 723.4, "end": 731.04, "text": "the full raw corpus into agent context, um, which would also be very inefficient, very expensive."}, {"id": "s118", "start": 731.68, "end": 736.08, "text": "And similarly, we've gone and built a skill library to allow people to customize their agents, right?"}, {"id": "s119", "start": 736.08, "end": 741.16, "text": "Getting back to the meeting brief example, different people have different formats that they care about."}, {"id": "s120", "start": 741.16, "end": 753.36, "text": "They have different information that they care about, um, and allowing them to kind of represent that, uh, in text, giving that to the agent to pull it together, uh, has been like very valuable for getting adoption."}, {"id": "s121", "start": 753.36, "end": 757.24, "text": "And putting all this together, you get an operational background agent, right?"}, {"id": "s122", "start": 757.24, "end": 765.64, "text": "You have like every night we're going to go and generate these things, fan out a set of agents that are going to go and compute, uh, per account, uh, meeting prep,"}, {"id": "s123", "start": 765.64, "end": 776.68, "text": "uh, which gives, uh, or which use some set of tools giving them access to like uh, that online CDP in Postgres I mentioned, the vector database, uh, meeting prep skills that we own at the system level,"}, {"id": "s124", "start": 776.68, "end": 781.56, "text": "as well as like custom instructions that users are providing themselves."}, {"id": "s125", "start": 782.96, "end": 789.839, "text": "And getting into the extending the blocks, um, the goal is for these foundations to speed up the next thing, right?"}, {"id": "s126", "start": 789.839, "end": 791.04, "text": "Meetings are super important."}, {"id": "s127", "start": 791.04, "end": 797.04, "text": "We want to be able to generate things like post-meeting follow-ups and things like automatic CRM updates, right?"}, {"id": "s128", "start": 797.04, "end": 802.16, "text": "Which can pull in the transcript and say like, \"Hey, we discussed this potential expansion opportunity."}, {"id": "s129", "start": 802.16, "end": 809.16, "text": "Let me go and pre-fill all the information needed to create that opportunity, get a thumbs up from my rep, and just make it happen."}, {"id": "s130", "start": 809.16, "end": 813.32, "text": "Um and similarly, we want to extend it horizontally to other teams, right?"}, {"id": "s131", "start": 813.32, "end": 826.44, "text": "Which is mainly an exercise of creating specific skills, data integrations, um and like just data ingestion itself, where we can say like, \"Okay, email, call transcript embeddings, custom instructions,"}, {"id": "s132", "start": 826.44, "end": 838.88, "text": "generalizable, but if we're building this for AEs, we're hand- handling like pre-sales, um opportunities, we need to go and focus more on like third-party data instead of a bunch of product data that we have already,"}, {"id": "s133", "start": 838.88, "end": 842.72, "text": "and that needs to be uh incorporated into our customer data platform."}, {"id": "s134", "start": 842.72, "end": 850.8, "text": "The skills need to go and reference kind of like a different set of uh information that we have on the people that we're trying to sell to."}, {"id": "s135", "start": 851.36, "end": 859.44, "text": "And similarly, uh we've built this in a way where employees have access to the same tools and skills that are being used for the background agents that we're creating,"}, {"id": "s136", "start": 859.44, "end": 859.64, "text": "right?"}, {"id": "s137", "start": 859.64, "end": 872.8389999999999, "text": "We set up a what we call like our GT MCP, uh and this is basically just like uh a window into the same exact tools that we've set up for these background agents, so that way the things that we build are just kind of automatically"}, {"id": "s138", "start": 872.8389999999999, "end": 875.8, "text": "federated out to people who want to go and build their own agents."}, {"id": "s139", "start": 875.8, "end": 881.32, "text": "They want to go chat with the information that we're setting up, uh and build their own automations."}, {"id": "s140", "start": 881.8, "end": 883.16, "text": "And they're building a ton of them."}, {"id": "s141", "start": 883.16, "end": 895.92, "text": "Uh this is just like uh a glimpse into some of the analytics that we've uh done taking the reasoning generated by uh the MCP uh tool calls, you know, that we've uh that are being executed"}, {"id": "s142", "start": 895.92, "end": 897.28, "text": "uh remotely."}, {"id": "s143", "start": 897.28, "end": 906.56, "text": "And this compounds because like when people go and build their own thing and they go and connect to our MCP, they're basically telling us like, \"Here is a problem that I have."}, {"id": "s144", "start": 906.56, "end": 908.56, "text": "Here's how I'm trying to solve this problem.\""}, {"id": "s145", "start": 908.56, "end": 916.2, "text": "And we can go and work with them to be like, \"Okay, we can just go and productionize this, uh distribute this to everybody who probably has similar problems.\""}, {"id": "s146", "start": 916.2, "end": 926.76, "text": "And they give us the prompts and the skills and the like, you know, even applications that they're vibe coding, uh to just like really simplify our ability to just go and productionize"}, {"id": "s147", "start": 926.76, "end": 930.28, "text": "um like these use cases."}, {"id": "s148", "start": 930.76, "end": 936.8, "text": "So now you're probably wondering uh what about that golf example that I had mentioned at the beginning?"}, {"id": "s149", "start": 936.8, "end": 939.4, "text": "Um the orchestration problem."}, {"id": "s150", "start": 939.4, "end": 950.2, "text": "Um the the point that I'm trying to convey by talking about all these specific things that we're doing is that these vertical builds that we're creating are the foundation of like"}, {"id": "s151", "start": 950.2, "end": 954.48, "text": "uh multi-team, multi-channel like distribution."}, {"id": "s152", "start": 954.48, "end": 958.2, "text": "Um if we want to be able to say like here is a playbook."}, {"id": "s153", "start": 958.2, "end": 959.48, "text": "Here's how you sell procurement."}, {"id": "s154", "start": 959.48, "end": 961.16, "text": "Here's how you sell to construction."}, {"id": "s155", "start": 961.16, "end": 971.28, "text": "Or here like wacky experiment ideas that we have uh like offering Pro V1s to golfers, which is actually like uh it works really well."}, {"id": "s156", "start": 971.28, "end": 982.12, "text": "Um we need to be able to say like uh take in that corpus of information of things that people are trying to do and federate that out through the background agents that are actually creating these artifacts"}, {"id": "s157", "start": 982.12, "end": 987.88, "text": "that people are like using to operationalize like go to market and execute."}, {"id": "s158", "start": 987.88, "end": 1004.0, "text": "So for my Pro V1 golf example, um the goal is to funnel this into ramp revenue, uh the internal application that we have built um and go and like effectively like funnel this into some of these vertical solutions that we've created, right?"}, {"id": "s159", "start": 1004.0, "end": 1009.6, "text": "So you can say like for SDRs, we want to go and create an audience of here are the golfers that we want to send things to."}, {"id": "s160", "start": 1009.6, "end": 1013.64, "text": "We can go and generate like personalized copy and sequences that they can go and send."}, {"id": "s161", "start": 1013.64, "end": 1021.44, "text": "Maybe we want to go and create web landing pages and spin up the uh images and the creative that will point these uh email sequences to."}, {"id": "s162", "start": 1021.44, "end": 1025.72, "text": "And we can do all of that through just like the description of like here's my intent."}, {"id": "s163", "start": 1025.72, "end": 1028.959, "text": "Get the people who own these channels to review them and sign off."}, {"id": "s164", "start": 1028.959, "end": 1036.52, "text": "And really allow us to just like move a lot quicker in how we uh ship and like scale creatively."}, {"id": "s165", "start": 1036.52, "end": 1040.04, "text": "Um across all these different go-to-market channels."}, {"id": "s166", "start": 1040.04, "end": 1053.0, "text": "So, the goal of this is to ship faster, ship safer, um scale our teams, become more efficient, and um with these campaigns, we can go and execute them across like multiple channels"}, {"id": "s167", "start": 1053.0, "end": 1060.24, "text": "with consistent audience targeting, um agents can go and hold context on multiple things that are like options, right?"}, {"id": "s168", "start": 1060.24, "end": 1074.32, "text": "We can go and execute this campaign or that campaign or that experiment and balance the like traditional multi-armed bandit problem of like exploring like new possibilities versus like being safe and like going into just known returns."}, {"id": "s169", "start": 1074.32, "end": 1087.76, "text": "Um and then we can build in guardrails as well to go and um effectively like manage compliance rules, rules of engagement, and being context aware, making sure we're not doing the same thing over and over again."}, {"id": "s170", "start": 1087.76, "end": 1092.76, "text": "Um and yeah, just do this on behalf of everybody."}, {"id": "s171", "start": 1093.56, "end": 1096.36, "text": "And those are the building blocks of go-to-market orchestration."}, {"id": "s172", "start": 1096.36, "end": 1098.447, "text": "Thank you,"}, {"id": "s173", "start": 1098.447, "end": 1100.447, "text": "[applause]"}, {"id": "s174", "start": 1100.64, "end": 1104.36, "text": "We have probably time for one question."}, {"id": "s175", "start": 1104.36, "end": 1107.0, "text": "Hey, there we go."}, {"id": "s176", "start": 1112.08, "end": 1112.857, "text": "Hey."}, {"id": "s177", "start": 1112.857, "end": 1113.44, "text": "[clears throat]"}, {"id": "s178", "start": 1113.44, "end": 1121.92, "text": "So, just curious um if how would you approach building something like this for a smaller company or for a company that's that's just getting started?"}, {"id": "s179", "start": 1121.92, "end": 1131.28, "text": "Yeah, I think a few people before have like mentioned something similar, but I would go and like find the very specific use cases that you can build automation around"}, {"id": "s180", "start": 1131.28, "end": 1135.4, "text": "and just like solve really specific problems that exist first."}, {"id": "s181", "start": 1135.4, "end": 1141.32, "text": "Um like 3 years ago, there was two of us and we were building like automated outbound, right?"}, {"id": "s182", "start": 1141.32, "end": 1151.24, "text": "So, like we're just trying to figure out like how can we go and use GPT 3.5 and like put personalized copy uh into some sequences and go and like"}, {"id": "s183", "start": 1151.24, "end": 1154.76, "text": "pull data from uh wherever to go and generate that."}, {"id": "s184", "start": 1154.76, "end": 1161.8, "text": "And by doing these things and solving these problems, you get like a really good understanding of how this works, how it could extend to other teams."}, {"id": "s185", "start": 1161.8, "end": 1165.2, "text": "Um and solving like real problems as you go."}, {"id": "s186", "start": 1165.2, "end": 1173.12, "text": "The reality is that like you can't spend like a year going and building like some really complicated system architecture that like is perfect."}, {"id": "s187", "start": 1173.12, "end": 1178.84, "text": "So, you have to like piece together the vertical solutions and then stick them together."}, {"id": "s188", "start": 1190.8029999999999, "end": 1192.8029999999999, "text": "[music]"}]}, {"id": "WJRdLNhrsLQ", "title": "How to build an AI-Native Health Company — Dan Feng, Maven Clinic", "channel": "AI Engineer", "duration": 1039, "upload_date": null, "url": "https://www.youtube.com/watch?v=WJRdLNhrsLQ", "api": "/api/talks/WJRdLNhrsLQ.json", "summary_url": "/#WJRdLNhrsLQ", "transcript": {"html": "/transcripts/WJRdLNhrsLQ.html", "txt": "/transcripts/WJRdLNhrsLQ.txt", "vtt": "/transcripts/WJRdLNhrsLQ.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.44, "end": 13.28, "text": "It's time."}, {"id": "s3", "start": 13.28, "end": 14.64, "text": "We can get it started."}, {"id": "s4", "start": 14.64, "end": 15.52, "text": "I'm Dan."}, {"id": "s5", "start": 15.52, "end": 17.24, "text": "I'm from Maven Clinic."}, {"id": "s6", "start": 17.24, "end": 24.8, "text": "Today we'll share the experience how we transition from a traditional technology company to AI native company."}, {"id": "s7", "start": 24.8, "end": 28.04, "text": "Before I started, I would like to do a little exercise."}, {"id": "s8", "start": 28.04, "end": 32.68, "text": "Raise your hand if you think you are already an AI native company."}, {"id": "s9", "start": 32.68, "end": 34.2, "text": "Okay, we saw a few."}, {"id": "s10", "start": 34.2, "end": 39.64, "text": "Raise your hand if you thought about it, but haven't started the journey yet."}, {"id": "s11", "start": 39.92, "end": 40.84, "text": "Okay, we saw a few."}, {"id": "s12", "start": 40.84, "end": 43.72, "text": "That means most of us is in between."}, {"id": "s13", "start": 43.72, "end": 47.76, "text": "Hopefully this talk can help you with that one."}, {"id": "s14", "start": 47.76, "end": 52.52, "text": "So, Maven Clinic is the largest digital health platform."}, {"id": "s15", "start": 52.52, "end": 55.92, "text": "We are focused on women and their families."}, {"id": "s16", "start": 55.92, "end": 61.84, "text": "So, we specialize in like maternity, fertility, parenting, menopause."}, {"id": "s17", "start": 61.84, "end": 65.28, "text": "We started our AI journey just 2 years back."}, {"id": "s18", "start": 65.28, "end": 68.72, "text": "And this moment we built something called a Maven Intelligence."}, {"id": "s19", "start": 68.72, "end": 76.92, "text": "It's a orchestration layer across all our product to enable AI for everybody in this company and for our clients."}, {"id": "s20", "start": 77.12, "end": 81.0, "text": "So, AI is here and improving every day."}, {"id": "s21", "start": 81.0, "end": 83.44, "text": "I think adopting it is not an optional."}, {"id": "s22", "start": 83.44, "end": 86.64, "text": "Even you choose not to, your competitors will do."}, {"id": "s23", "start": 86.64, "end": 89.56, "text": "This is a quote I heard like a couple years back."}, {"id": "s24", "start": 89.56, "end": 91.88, "text": "I would like to share here again."}, {"id": "s25", "start": 91.88, "end": 99.68, "text": "Like a tractors aren't to replace farmers, but the farmers who can operate the tractor will replace the ones who cannot."}, {"id": "s26", "start": 99.68, "end": 104.28, "text": "Hopefully everybody here will become farmers who can operate your tractors."}, {"id": "s27", "start": 104.28, "end": 106.47999999999999, "text": "That's the goal."}, {"id": "s28", "start": 106.47999999999999, "end": 112.47999999999999, "text": "So, first of all, I don't think there's a one single definition what it means by AI native."}, {"id": "s29", "start": 112.47999999999999, "end": 119.84, "text": "And more importantly, there's no predefined playbook you can just follow and bingo, you become AI native."}, {"id": "s30", "start": 119.84, "end": 123.12, "text": "For us, it is really come down to three parts."}, {"id": "s31", "start": 123.12, "end": 127.72, "text": "One is internally with our AI tools, whenever it's possible."}, {"id": "s32", "start": 127.72, "end": 139.84, "text": "It can be as simple as like generating your daily summary, managing your meeting, create a Jira task, anything you need to do today manually, you should think about to say can use AI to do it."}, {"id": "s33", "start": 139.84, "end": 146.48, "text": "Whenever you want to ask other people to do something for you, you should be saying with yourself I can use AI to do it."}, {"id": "s34", "start": 146.48, "end": 156.52, "text": "A lot of leaders in fact today at the Maven include our sales sale, they use AI tool to solve those task by themselves now instead delegate to other people."}, {"id": "s35", "start": 156.52, "end": 157.959, "text": "That's for internally."}, {"id": "s36", "start": 157.959, "end": 163.88, "text": "Externally, we want to build AIs into our product which achieve two goals there."}, {"id": "s37", "start": 163.88, "end": 167.32, "text": "One is really focused on improve our user experience."}, {"id": "s38", "start": 167.32, "end": 171.6, "text": "Second maybe help us reduce our operational cost."}, {"id": "s39", "start": 171.6, "end": 175.959, "text": "Like a like AI based like chatbot is really good example."}, {"id": "s40", "start": 175.959, "end": 183.36, "text": "It's 24/7, always available, can help our address issues, help our customer instantly."}, {"id": "s41", "start": 183.36, "end": 187.2, "text": "It's way better and cheaper compared to human agents."}, {"id": "s42", "start": 187.2, "end": 198.76, "text": "Thirdly, I think is more important, we need to think about our culture, process, the way we work, how we can change it so we can maximize what AI offers for us."}, {"id": "s43", "start": 198.76, "end": 202.32, "text": "I will touch it more on the following slides."}, {"id": "s44", "start": 202.84, "end": 209.519, "text": "So, when we come to adopting new technologies, there's always like screw three groups of users."}, {"id": "s45", "start": 209.519, "end": 212.72, "text": "One there's some early adopters, right?"}, {"id": "s46", "start": 212.72, "end": 214.76, "text": "For them, we don't need to do too much."}, {"id": "s47", "start": 214.76, "end": 223.16, "text": "Only thing we need to do is enable the tools for them and encourage them to share what they learn with the company."}, {"id": "s48", "start": 223.16, "end": 226.519, "text": "And what we need to really focus on is the one in the middle."}, {"id": "s49", "start": 226.519, "end": 228.0, "text": "That's a majority."}, {"id": "s50", "start": 228.0, "end": 233.72, "text": "We should build a shared AI infrastructure for them, build easy to use tools for them."}, {"id": "s51", "start": 233.72, "end": 237.72, "text": "Just make the adoption as seamlessly as possible."}, {"id": "s52", "start": 237.72, "end": 243.24, "text": "More importantly, we should really listen to them, get feedback, consistently inputting."}, {"id": "s53", "start": 243.24, "end": 248.04, "text": "For example, last year, most of folks and Maven they are using cursor."}, {"id": "s54", "start": 248.04, "end": 251.16, "text": "This year, a lot of them switch to cloud codes."}, {"id": "s55", "start": 251.16, "end": 253.28, "text": "For us, we need to support the both."}, {"id": "s56", "start": 253.28, "end": 255.0, "text": "We need to meet where they are."}, {"id": "s57", "start": 255.0, "end": 257.76, "text": "Just make feel they comfortable to use it."}, {"id": "s58", "start": 257.76, "end": 262.2, "text": "And for an older places, you always have a few slow adopters."}, {"id": "s59", "start": 262.2, "end": 266.0, "text": "They always have concerns, worries for the new technologies."}, {"id": "s60", "start": 266.0, "end": 268.919, "text": "For them, we just should have meet where they are."}, {"id": "s61", "start": 268.919, "end": 271.0, "text": "Understand what's their concern is."}, {"id": "s62", "start": 271.0, "end": 277.72, "text": "But more important, we should be crystal clear with them where the company is heading to."}, {"id": "s63", "start": 278.919, "end": 285.4, "text": "So, AI is really good and execution if we know what we want to do."}, {"id": "s64", "start": 285.4, "end": 290.8, "text": "So, this is change how we should hire new people and how should we reward them."}, {"id": "s65", "start": 290.8, "end": 301.48, "text": "We used to the way we used to work is we have a senior engineer who sense the problem, come up with solution, and delegate to other engineers for implementation."}, {"id": "s66", "start": 301.48, "end": 305.72, "text": "So, we can work on it in parallel and be faster."}, {"id": "s67", "start": 305.72, "end": 316.08, "text": "But these days, we found the NASA and NASA engineers wouldn't like to delegate the implementation work to other people because they they already figure out how to solve the problem."}, {"id": "s68", "start": 316.08, "end": 319.48, "text": "They just use AI to solve it instantly."}, {"id": "s69", "start": 319.48, "end": 324.32, "text": "Delegating to other people means more overheads and less efficient."}, {"id": "s70", "start": 324.32, "end": 331.04, "text": "And also means like when you have a new people, you want to make sure they can solve the problem independently."}, {"id": "s71", "start": 331.04, "end": 335.28, "text": "They pretty much has to work on the traditional technical lead memo."}, {"id": "s72", "start": 335.28, "end": 340.72, "text": "We can We cannot afford other people delegate implementation task for them."}, {"id": "s73", "start": 340.72, "end": 344.68, "text": "Also, when we hire a new people, we should think about what we are looking for."}, {"id": "s74", "start": 344.68, "end": 348.44, "text": "We definitely want to look for somebody genuinely interested in AI."}, {"id": "s75", "start": 348.44, "end": 350.48, "text": "The domain is moving so fast."}, {"id": "s76", "start": 350.48, "end": 352.15999999999997, "text": "We want them to keep learning."}, {"id": "s77", "start": 352.15999999999997, "end": 355.4, "text": "Also, help the team to stay on track."}, {"id": "s78", "start": 355.4, "end": 360.92, "text": "Secondly, is um with AI, engineers can do way more than they used to do."}, {"id": "s79", "start": 360.92, "end": 366.0, "text": "The boundaries between PM and engineers is getting blur blurry."}, {"id": "s80", "start": 366.0, "end": 370.24, "text": "We found like a engineers who really understand the product."}, {"id": "s81", "start": 370.24, "end": 377.88, "text": "In fact, they can have more way more contribution than a traditional engineer who only focus on software side."}, {"id": "s82", "start": 377.88, "end": 379.68, "text": "And this is what we are looking for."}, {"id": "s83", "start": 379.68, "end": 388.36, "text": "And those deep understanding of the system, the ability to can handle complicated ambiguous problem is also very valuable."}, {"id": "s84", "start": 388.36, "end": 390.36, "text": "This is where AI land off."}, {"id": "s85", "start": 390.36, "end": 395.28, "text": "When we hire new people, this is also the people we are interested in bring on board."}, {"id": "s86", "start": 395.28, "end": 400.24, "text": "For people we bring in, we want to reward them in the proper way."}, {"id": "s87", "start": 400.24, "end": 405.68, "text": "Even in our performance with review, we start ask, \"Okay, what do you have done for AI side?\""}, {"id": "s88", "start": 405.68, "end": 411.15999999999997, "text": "We definitely want to reward the people who leverage AI to multiple their impact."}, {"id": "s89", "start": 411.15999999999997, "end": 415.48, "text": "Although this is impactful everybody in the company."}, {"id": "s90", "start": 416.6, "end": 418.48, "text": "So, now we have the right tools."}, {"id": "s91", "start": 418.48, "end": 420.76, "text": "We get the right talent in the place."}, {"id": "s92", "start": 420.76, "end": 426.64, "text": "And we need to change how we work to maximize the benefit of AI."}, {"id": "s93", "start": 426.64, "end": 438.64, "text": "The we used the way we used to work is say, \"Okay, we spend the weeks, sometimes it's the months to flash out the business requirements, finalize the design, and then"}, {"id": "s94", "start": 438.64, "end": 440.0, "text": "do the implementation.\""}, {"id": "s95", "start": 440.0, "end": 443.48, "text": "Because implementation can be really expensive."}, {"id": "s96", "start": 443.48, "end": 450.36, "text": "If we didn't get the other part right in the beginning, it's it can be very costly to change it later."}, {"id": "s97", "start": 450.36, "end": 457.28, "text": "But in fact, we never get the sense and right in the beginning anyway for any of big projects."}, {"id": "s98", "start": 457.28, "end": 459.68, "text": "With AI, building is super fast."}, {"id": "s99", "start": 459.68, "end": 463.08, "text": "It's probably couple minutes you can get it done."}, {"id": "s100", "start": 463.08, "end": 465.92, "text": "Argument is really expensive one."}, {"id": "s101", "start": 465.92, "end": 471.4, "text": "So, we should really think about what's the best we can work, how can we deliver fast."}, {"id": "s102", "start": 471.4, "end": 475.96, "text": "It's still okay, you can think about what you want to deliver in one year."}, {"id": "s103", "start": 475.96, "end": 480.56, "text": "You can assume AI models can do anything you want in one year."}, {"id": "s104", "start": 480.56, "end": 491.16, "text": "Based on that one, really dream big to think what you can do in one year, but it should only serve as inspiration, inspiring, and directional."}, {"id": "s105", "start": 491.16, "end": 497.4, "text": "What we really need to focus on is what we want to deliver in the next two to four weeks, right?"}, {"id": "s106", "start": 497.4, "end": 503.04, "text": "What we want to get to the PMs and designers is say, \"Okay, tell me what I need to deliver in this sprint.\""}, {"id": "s107", "start": 503.04, "end": 509.84, "text": "And the engineer will focus on it and get it released if at the end of the sprint, if not sooner."}, {"id": "s108", "start": 509.84, "end": 515.76, "text": "Meanwhile, and the PMs, they have time to flesh out the next bunch of the requirements."}, {"id": "s109", "start": 515.76, "end": 520.84, "text": "If at the end of this sprint, they say, \"No, what we decided two weeks ago is wrong.\""}, {"id": "s110", "start": 520.84, "end": 521.8, "text": "It's totally okay."}, {"id": "s111", "start": 521.8, "end": 525.68, "text": "We can switch the gear, get it fixed quickly."}, {"id": "s112", "start": 525.68, "end": 532.44, "text": "That also means like we prefer people not write pages or pages of PRD or TDD anymore."}, {"id": "s113", "start": 532.44, "end": 536.56, "text": "We prefer them to write just a short one or two pages."}, {"id": "s114", "start": 536.56, "end": 541.44, "text": "That one is really serve as communication, so we can iterate on it."}, {"id": "s115", "start": 541.44, "end": 545.24, "text": "The really awkward part is mid-term goals."}, {"id": "s116", "start": 545.24, "end": 547.64, "text": "Those like a three months, six months."}, {"id": "s117", "start": 547.64, "end": 549.96, "text": "It's very hard to plan these days."}, {"id": "s118", "start": 549.96, "end": 554.24, "text": "The reason is I don't know what AI models will be capable in three months."}, {"id": "s119", "start": 554.24, "end": 556.64, "text": "There may be multiple releases already."}, {"id": "s120", "start": 556.64, "end": 559.32, "text": "So, we prefer not focus on this one."}, {"id": "s121", "start": 559.32, "end": 570.44, "text": "But this one can maybe make it not very easy for most of folks who has been in this domain for a long time because traditionally we get used to have a quarterly planning"}, {"id": "s122", "start": 570.44, "end": 572.8389999999999, "text": "or we plan it for six months."}, {"id": "s123", "start": 572.8389999999999, "end": 581.16, "text": "But it's our job to get used to the new AI era and learn how to work it efficiently."}, {"id": "s124", "start": 582.04, "end": 586.72, "text": "So, I want to talk about the coding and software development a little bit more here."}, {"id": "s125", "start": 586.72, "end": 592.12, "text": "AI coding tools is probably the most successful AI application."}, {"id": "s126", "start": 592.12, "end": 595.88, "text": "And it's really good and implementation."}, {"id": "s127", "start": 595.88, "end": 600.76, "text": "So, you probably heard a lot of people say, \"Okay, I have this AI tools."}, {"id": "s128", "start": 600.76, "end": 606.24, "text": "Now I can even use my phone to implement software and automate every stage.\""}, {"id": "s129", "start": 606.24, "end": 609.08, "text": "If they feel comfortable do that, it's totally okay."}, {"id": "s130", "start": 609.08, "end": 610.8, "text": "But you don't have to."}, {"id": "s131", "start": 610.8, "end": 616.84, "text": "What I'm trying to say here is And maybe this is our journey, how we adopt those AI tools."}, {"id": "s132", "start": 616.84, "end": 623.08, "text": "We started with the lowest risk task, like starting with writing unit tests, documentation."}, {"id": "s133", "start": 623.08, "end": 627.6, "text": "Those things are very easy to verify and the risk is super low."}, {"id": "s134", "start": 627.6, "end": 635.72, "text": "By doing that, one we build the confidence and we start to construct our own rules, skills, and build our barriers."}, {"id": "s135", "start": 635.72, "end": 642.52, "text": "And then we push to the whole engineering team say, \"Now you should use this AI coding tools for all the tasks.\""}, {"id": "s136", "start": 642.52, "end": 647.2, "text": "When they choose not to do, it's the time we really want to learn say, \"Why you don't do it?\""}, {"id": "s137", "start": 647.2, "end": 653.04, "text": "And at this moment, we pretty much use the AI coding tools to do all our implementation."}, {"id": "s138", "start": 653.04, "end": 659.2, "text": "Engineers really focus on reviewing, architecturing, and evaluation."}, {"id": "s139", "start": 659.592, "end": 659.88, "text": "[snorts]"}, {"id": "s140", "start": 659.88, "end": 665.32, "text": "So, and with AI coding tools, we are writing so much code these days."}, {"id": "s141", "start": 665.32, "end": 668.44, "text": "Code review becomes really challenging."}, {"id": "s142", "start": 668.44, "end": 673.6, "text": "So, for good engineer, used to they probably write hundreds of lines code every day."}, {"id": "s143", "start": 673.6, "end": 676.8, "text": "These days, they can easily write like thousands."}, {"id": "s144", "start": 676.8, "end": 682.4, "text": "If we keep do the code review as we used to do, we won't be able to keep up."}, {"id": "s145", "start": 682.4, "end": 687.28, "text": "We also tried the multiple like AI coding review review tools."}, {"id": "s146", "start": 687.28, "end": 692.12, "text": "It helps a little bit, but we don't feel comfortable 100% rely on them yet."}, {"id": "s147", "start": 692.12, "end": 696.52, "text": "We still found those feedbacks from our engineers are very, very valuable."}, {"id": "s148", "start": 696.52, "end": 703.04, "text": "And that means we need to really change the way we are doing code review to meet where we are now."}, {"id": "s149", "start": 703.04, "end": 705.12, "text": "And couple things we have done."}, {"id": "s150", "start": 705.12, "end": 711.12, "text": "One is we allow engineers to self-identify whether they still need code review."}, {"id": "s151", "start": 711.12, "end": 716.68, "text": "If they think this PR is simple enough, I feel very confident, I don't need anybody to take a look."}, {"id": "s152", "start": 716.68, "end": 718.32, "text": "And we are fine with that one."}, {"id": "s153", "start": 718.32, "end": 721.72, "text": "We let them merge, but we still hold them accountable."}, {"id": "s154", "start": 721.72, "end": 726.84, "text": "And if they do want code review, we want them stay with the best practices."}, {"id": "s155", "start": 726.84, "end": 737.8, "text": "For example, each PR shouldn't have more than 500 lines of code because nobody can do a meaningful code review with the ones has like thousands of lines code."}, {"id": "s156", "start": 737.8, "end": 741.2, "text": "And we also enable the like stack the PR."}, {"id": "s157", "start": 741.2, "end": 751.68, "text": "What it means is that for big feature, and the engineers can bring break it into multiple PRs where people review the PRs and they can keep working on it."}, {"id": "s158", "start": 751.68, "end": 756.44, "text": "One thing we really want to avoid is a rubber stamp, we call it."}, {"id": "s159", "start": 756.44, "end": 760.32, "text": "Means like people submit code review, you cannot really do anything to it."}, {"id": "s160", "start": 760.32, "end": 762.24, "text": "You just say blindly approve it."}, {"id": "s161", "start": 762.24, "end": 767.4, "text": "This is the worst case, we should really avoid because that's just give us false confidence."}, {"id": "s162", "start": 767.4, "end": 771.56, "text": "We think we reviewed it, it's good, and we release it."}, {"id": "s163", "start": 771.56, "end": 778.24, "text": "Meanwhile, we should keep working on our AI code review tools because we are thinking that's the future."}, {"id": "s164", "start": 778.24, "end": 785.68, "text": "So, at this moment, we use AI tools pretty much assist each step of our software development."}, {"id": "s165", "start": 785.68, "end": 795.8, "text": "Our goal is it will be automate the whole life cycle from end to end, from designing, implementation, and here is a fully release it."}, {"id": "s166", "start": 795.8, "end": 804.88, "text": "More important, we want the AI tools be able to monitor the live traffic and be able to catch the issue early and automatically fix it."}, {"id": "s167", "start": 804.88, "end": 809.52, "text": "That's what we are still working on, and we're not there yet."}, {"id": "s168", "start": 809.64, "end": 815.64, "text": "The last thing I want to touch a little bit for this presentation is about reliability."}, {"id": "s169", "start": 815.64, "end": 823.44, "text": "So, what it means is like for the traditional software, it does what we implement there, no more, no less."}, {"id": "s170", "start": 823.44, "end": 828.08, "text": "But for the Genex solutions, hallucination is there."}, {"id": "s171", "start": 828.08, "end": 829.8, "text": "We cannot ignore it."}, {"id": "s172", "start": 829.8, "end": 834.6, "text": "And there completely eliminating them is can be very costly."}, {"id": "s173", "start": 834.6, "end": 837.8, "text": "Sometimes is not necessary, either."}, {"id": "s174", "start": 837.8, "end": 843.32, "text": "So, the way we should do is really have a holistic solution even from the get beginning."}, {"id": "s175", "start": 843.32, "end": 851.76, "text": "For example, we can start with identify which failures is acceptable, which ones are not acceptable."}, {"id": "s176", "start": 851.76, "end": 858.48, "text": "For our AI system, for example, we have the functionality to help our customers to schedule appointment."}, {"id": "s177", "start": 858.48, "end": 861.8, "text": "If we fail well to 1,000, probably it's okay."}, {"id": "s178", "start": 861.8, "end": 867.96, "text": "I'm not saying it's a good experience, but the users really can just click the button again, we will reschedule for them."}, {"id": "s179", "start": 867.96, "end": 869.12, "text": "Probably it's okay."}, {"id": "s180", "start": 869.12, "end": 882.96, "text": "But if we help user to like submit their reimbursement claim, we cannot tolerate a failure because if people ask of $200, we issue them 50 or they ask 50, we give them 200."}, {"id": "s181", "start": 882.96, "end": 886.76, "text": "Each case will cause a escalation right away."}, {"id": "s182", "start": 886.76, "end": 889.8389999999999, "text": "For those cases, we have to put in extra stamps."}, {"id": "s183", "start": 889.8389999999999, "end": 896.6, "text": "For example, when we receive their receipt, we will use different models to review the same receipt."}, {"id": "s184", "start": 896.6, "end": 901.88, "text": "We only move forward if the results from different models agree with each other."}, {"id": "s185", "start": 901.88, "end": 910.52, "text": "If we really have trouble to figure it out which one is right, it's it's easy it's okay to tell the customer, say, \"Hey, we have trouble to process your stuff."}, {"id": "s186", "start": 910.52, "end": 913.839, "text": "Do you want us to get you connect to a human agent?\""}, {"id": "s187", "start": 913.839, "end": 915.08, "text": "We will move from there."}, {"id": "s188", "start": 915.08, "end": 917.24, "text": "That's acceptable solutions."}, {"id": "s189", "start": 917.24, "end": 921.92, "text": "And also we have should have a rigorous process to release our software."}, {"id": "s190", "start": 921.92, "end": 932.56, "text": "For us, we have like hundreds of integration tests, for which pretty much covered all the use cases we know, and we are keep adding to the integration test the suite."}, {"id": "s191", "start": 932.56, "end": 940.92, "text": "And the when we run the integration test, not only pass once is not good enough anymore, because the LLM can do different things."}, {"id": "s192", "start": 940.92, "end": 944.16, "text": "So, for each test case, we run it to many times."}, {"id": "s193", "start": 944.16, "end": 950.88, "text": "We consistently requires the high pass rate, like for example, 90% for all the time."}, {"id": "s194", "start": 950.88, "end": 952.38, "text": "And the more important,"}, {"id": "s195", "start": 952.38, "end": 952.72, "text": "[snorts]"}, {"id": "s196", "start": 952.72, "end": 961.32, "text": "and the after we launch the software, we have our auto evolve system evaluate carefully evaluate each conversation."}, {"id": "s197", "start": 961.32, "end": 966.44, "text": "We have predefined a lot of rubrics, what we think is good, what is bad."}, {"id": "s198", "start": 966.44, "end": 970.68, "text": "And then we will generate results, we will review the score."}, {"id": "s199", "start": 970.68, "end": 978.24, "text": "Besides this one, we also have dedicated a group, their job is mainly review those conversations."}, {"id": "s200", "start": 978.24, "end": 990.32, "text": "We will spot a check our conversations, that helps us to say whether we need to come back to improve our systems, or our rubrics is too strict or too loose, and we need consistently"}, {"id": "s201", "start": 990.32, "end": 991.48, "text": "improve it."}, {"id": "s202", "start": 991.48, "end": 1001.12, "text": "When we launch new features, then the time we say not only spot a check probably not enough, we really want to review like say 20%, and we can do it."}, {"id": "s203", "start": 1001.12, "end": 1010.28, "text": "This whole process make [clears throat] sure we we are really confident whenever we release something, although we know hallucination is there."}, {"id": "s204", "start": 1010.28, "end": 1018.8389999999999, "text": "And that's pretty much what I have for today, and I can stay here to take up questions, and if you have other things, you can reach out to me."}, {"id": "s205", "start": 1019.191, "end": 1021.191, "text": "[applause]"}]}, {"id": "XAsb7MIAzm8", "title": "Don’t be data poor — Anuj Iravane, Anterior", "channel": "AI Engineer", "duration": 1006, "upload_date": null, "url": "https://www.youtube.com/watch?v=XAsb7MIAzm8", "api": "/api/talks/XAsb7MIAzm8.json", "summary_url": "/#XAsb7MIAzm8", "transcript": {"html": "/transcripts/XAsb7MIAzm8.html", "txt": "/transcripts/XAsb7MIAzm8.txt", "vtt": "/transcripts/XAsb7MIAzm8.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.76, "end": 13.56, "text": "Hello everyone."}, {"id": "s3", "start": 13.56, "end": 16.36, "text": "Welcome to Don't Be Data Poor."}, {"id": "s4", "start": 16.36, "end": 17.52, "text": "My name's Anuj."}, {"id": "s5", "start": 17.52, "end": 20.76, "text": "I I lead AI at Anterior."}, {"id": "s6", "start": 20.76, "end": 28.0, "text": "Um just a bit about Anterior, we are a clinician-led AI company um built for health plans backed by Sequoia and NEA."}, {"id": "s7", "start": 28.0, "end": 31.72, "text": "Um and what we do is we run AI transformations for health plans."}, {"id": "s8", "start": 31.72, "end": 38.84, "text": "Um as part of which we build agents for several high-stakes healthcare administrative workflows in production."}, {"id": "s9", "start": 38.84, "end": 49.96, "text": "Um things like prior authorization, payment integrity, HEDIS measures, etc. Um it's it's okay if you're not familiar with any of these workflows um because a lot of the work that we do"}, {"id": "s10", "start": 49.96, "end": 53.0, "text": "can actually be summarized in in the same way."}, {"id": "s11", "start": 53.0, "end": 58.12, "text": "It's uh policy-guided decision-making over highly unstructured data."}, {"id": "s12", "start": 58.84, "end": 60.72, "text": "And the unstructured data looks something like this, right?"}, {"id": "s13", "start": 60.72, "end": 67.48, "text": "You have uh you have these scanned fax bundles containing medical records full of patient information."}, {"id": "s14", "start": 67.48, "end": 73.84, "text": "Um a not-so-fun fact is that I think around 70% of medical communication still happens via fax."}, {"id": "s15", "start": 73.84, "end": 79.03999999999999, "text": "Um and fortunately or unfortunately, this is the data that we end up working with the most."}, {"id": "s16", "start": 79.68, "end": 84.68, "text": "Um it is a very rich and information-dense data that we see here."}, {"id": "s17", "start": 84.68, "end": 92.6, "text": "Um the data distribution here is it comes from a very long tail of rare um cases with a nuanced scenarios."}, {"id": "s18", "start": 92.6, "end": 95.52000000000001, "text": "Uh it models an entire clinical trajectory for a patient."}, {"id": "s19", "start": 95.52000000000001, "end": 98.52000000000001, "text": "Uh and every single person's journey is very different."}, {"id": "s20", "start": 98.52000000000001, "end": 101.2, "text": "Uh it also presents itself in various formats."}, {"id": "s21", "start": 101.2, "end": 110.72, "text": "So, you have like things like bad handwriting, tables, checkboxes, um key-value pairs, images, um a lot of stuff here to deal with."}, {"id": "s22", "start": 110.72, "end": 113.6, "text": "But I personally think it's a very fascinating source of data that we see here."}, {"id": "s23", "start": 113.6, "end": 119.56, "text": "Like it's it's it's like sort of like an observation through a very fuzzy lens over an entire person's lifespan."}, {"id": "s24", "start": 119.56, "end": 121.88, "text": "It's really unique."}, {"id": "s25", "start": 122.32, "end": 131.28, "text": "And I'm sure you must have heard this like enough times today already, but in healthcare the the baselines for accuracy are just exceptionally high."}, {"id": "s26", "start": 131.28, "end": 133.0, "text": "95% is not good enough."}, {"id": "s27", "start": 133.0, "end": 138.24, "text": "Um And at Anterior, this is why we invest very deeply in datasets and emails."}, {"id": "s28", "start": 138.24, "end": 144.44, "text": "And these unstructured medical records are a staple source of data for these emails."}, {"id": "s29", "start": 144.92000000000002, "end": 149.44, "text": "And we we work with this kind of data in almost every workflow that we try to automate."}, {"id": "s30", "start": 149.64, "end": 152.0, "text": "But the problem is we can't really keep this data."}, {"id": "s31", "start": 152.0, "end": 154.07999999999998, "text": "It's PHI, it's highly protected."}, {"id": "s32", "start": 154.07999999999998, "end": 158.07999999999998, "text": "We can't retain it, we can't reuse it, we can't even derive information from it."}, {"id": "s33", "start": 158.07999999999998, "end": 162.12, "text": "And most of our contracts prohibit us from from doing anything like that."}, {"id": "s34", "start": 162.12, "end": 168.8, "text": "Um even things like redacting it, anonymizing it, and keeping derivative copies like is a strict no-no, completely off the table."}, {"id": "s35", "start": 168.8, "end": 174.64, "text": "So, nothing really survives in any sort of dataset that we want to persist over a period of time."}, {"id": "s36", "start": 174.886, "end": 174.959, "text": "[snorts]"}, {"id": "s37", "start": 174.959, "end": 182.72, "text": "So, so what this talk is about is like what do you do when the dataset you most need is also the data you're least allowed to keep."}, {"id": "s38", "start": 185.959, "end": 192.72, "text": "And the and the bet that we the answer that we put our bets on is that we can kind of synthetically generate this data ourselves."}, {"id": "s39", "start": 193.64, "end": 195.959, "text": "There's been a lot of focus on synthetic data recently."}, {"id": "s40", "start": 195.959, "end": 203.36, "text": "You have like Frontier Labs striving to generate synthetic data for continued pre-training, for RL, for computer use, for agents."}, {"id": "s41", "start": 203.36, "end": 207.16, "text": "So, it's it's it's a hot topic and it's it's a hot topic on our minds as well."}, {"id": "s42", "start": 207.16, "end": 214.84, "text": "And the moment you say generate, like the first thing that comes to mind is, okay, can we can we try to use an LLM to generate synthetic data?"}, {"id": "s43", "start": 215.36, "end": 216.28, "text": "And I think you can."}, {"id": "s44", "start": 216.28, "end": 220.92000000000002, "text": "I personally believe LLMs are a fantastic tool to generate synthetic data."}, {"id": "s45", "start": 220.92000000000002, "end": 223.44, "text": "And several teams have already demonstrated this already."}, {"id": "s46", "start": 223.44, "end": 232.6, "text": "There's been some papers in the healthcare space, outside the healthcare space, people have successfully used LLMs to generate synthetic data for for different purposes."}, {"id": "s47", "start": 232.6, "end": 239.56, "text": "There are some known challenges in trying to use these elements to create data especially when you're trying to one shot the whole process."}, {"id": "s48", "start": 239.56, "end": 244.24, "text": "Uh it's really hard to generate diverse realistic looking synthetic records."}, {"id": "s49", "start": 244.24, "end": 248.36, "text": "And this is even more of a problem when you're trying to do when you're trying to do this at scale."}, {"id": "s50", "start": 248.36, "end": 257.519, "text": "So, uh often times these medical records are over 300 pages long and it's like imagining if you wouldn't ask an LLM to write a novel for you in one shot, right?"}, {"id": "s51", "start": 257.519, "end": 262.64, "text": "So, it's the same reason why you wouldn't use an LLM to just one shot a synthetic record for you."}, {"id": "s52", "start": 262.64, "end": 270.28, "text": "Um and LLMs seem to suffer from this very strange mode collapse problem when it comes to generating like diverse uh data, creative data."}, {"id": "s53", "start": 270.28, "end": 272.72, "text": "And I think there's two main reasons for it."}, {"id": "s54", "start": 272.72, "end": 281.12, "text": "Uh the first one is uh like I just mentioned in the talk earlier, there's very little exposure to this data source in the pre-training data corpus."}, {"id": "s55", "start": 281.12, "end": 288.68, "text": "Um and today's objectives for pre-training and post-training are are largely uh they're only they're not incentivized for creativity or diversity really."}, {"id": "s56", "start": 288.68, "end": 291.919, "text": "They're incentivized to be helpful systems."}, {"id": "s57", "start": 293.24, "end": 300.08, "text": "So, with these challenges in mind, uh I'll walk you through like one of our approaches in how we uh managed to build a pipeline to generate synthetic data."}, {"id": "s58", "start": 300.08, "end": 304.0, "text": "Um earlier I mentioned our forward tasks look something like this, right?"}, {"id": "s59", "start": 304.0, "end": 309.16, "text": "So, you have workflows and tasks that uh start with some unstructured data and a policy."}, {"id": "s60", "start": 309.16, "end": 312.08, "text": "Um and you execute your policy against that data."}, {"id": "s61", "start": 312.08, "end": 318.36, "text": "You follow this reasoning trace through it uh and you arrive at some sort of an outcome, which is your label."}, {"id": "s62", "start": 318.36, "end": 321.04, "text": "So, this is our forward task."}, {"id": "s63", "start": 321.04, "end": 324.96, "text": "Uh and the idea we had was to try and reverse this process."}, {"id": "s64", "start": 324.96, "end": 335.32, "text": "Uh can we actually start by sampling a random label, uh figuring out a a reasoning trace for that label, and then trying to generate data backwards from that?"}, {"id": "s65", "start": 335.32, "end": 351.12, "text": "Uh the idea here being that if you can actually uh sample these two things uh with enough diversity, uh we will have we will be able to generate data that's conditioned on diverse set of inputs, allowing us to kind of circumvent the diversity problem a little bit."}, {"id": "s66", "start": 352.04, "end": 353.52, "text": "Uh so just a quick aside on policies."}, {"id": "s67", "start": 353.52, "end": 356.24, "text": "We've talked about policies a bit, but uh let me just clarify what these really mean, right?"}, {"id": "s68", "start": 356.24, "end": 360.72, "text": "So, this is an example policy we have for for a CPAP device for patients."}, {"id": "s69", "start": 360.72, "end": 364.12, "text": "Uh this particular one is for a medical necessity review workflow."}, {"id": "s70", "start": 364.12, "end": 374.16, "text": "Uh and it it sort of outlines all these diverse set of conditions uh that a patient might have um in which a CPAP device should be approved or or rejected."}, {"id": "s71", "start": 374.16, "end": 386.96, "text": "Um so and this policy, as well as many other policies, uh you can think of these as uh essentially decision trees that outline all these sorts of conditions um um that that dictate how some outcomes are met."}, {"id": "s72", "start": 387.4, "end": 393.44, "text": "And at Antheir, actually, we we spend a lot of time and energy in trying to model these policies explicitly as decision trees."}, {"id": "s73", "start": 393.44, "end": 404.88, "text": "Um uh we work with uh symbolic representation uh similar to decision trees, uh and it helps us achieve a better accuracy uh and consistency score when executing them in LLM-based workflow."}, {"id": "s74", "start": 404.88, "end": 414.6, "text": "And and the reason why I'm bringing this up is that uh by having this sort of symbolic representation of a policy, you actually have uh a way to kind of deterministically sample"}, {"id": "s75", "start": 414.6, "end": 417.96, "text": "different reasoning traces for a given outcome."}, {"id": "s76", "start": 419.24, "end": 421.44, "text": "So, back to our idea of like reversing the process, right?"}, {"id": "s77", "start": 421.44, "end": 429.68, "text": "Uh this this sampling of reasoning traces from the policies uh what helps us get that diverse conditioning input to then generate medical records from."}, {"id": "s78", "start": 429.68, "end": 439.52, "text": "Uh and the key idea here is that the distribution here uh that we sample from is is a much more uniform uh and effective prior distribution than what you'd normally get from an LLM."}, {"id": "s79", "start": 439.52, "end": 447.96, "text": "Uh one added benefit of sampling this way is that, in theory, you're able to test uh for far more scenarios than you would likely get from production data sources."}, {"id": "s80", "start": 447.96, "end": 458.64, "text": "So, what I mean by that is like say you get a sample of uh 200 cases from your customer uh um and and and and you try to like have an eval that measures performance against that, and you get a 95% score."}, {"id": "s81", "start": 458.64, "end": 464.8, "text": "Uh it doesn't really tell you about uh what you what your performance would be in those rare edge cases that are not in that data set."}, {"id": "s82", "start": 464.8, "end": 472.88, "text": "There'll always be rare edge cases uh that are outside the distribution just because of the fact that our data is so uh highly variant."}, {"id": "s83", "start": 473.2, "end": 480.44, "text": "So, uh for those for those family with Cynthia, like uh they follow a similar pattern uh of sampling scenarios from a symbolic causal state representation."}, {"id": "s84", "start": 480.44, "end": 488.24, "text": "There's a few of the folks in the space who are uh working with these symbolic representations to uh to generate diversity in synthetic data generation."}, {"id": "s85", "start": 489.2, "end": 491.24, "text": "So, let me walk you through the rest of the pipeline."}, {"id": "s86", "start": 491.24, "end": 491.52, "text": "All right?"}, {"id": "s87", "start": 491.52, "end": 502.32, "text": "So, uh once we have this diverse set of samples as a conditioning input, what we did was we built an LLM-based pipeline that uh follows uh a coarse-to-fine pattern"}, {"id": "s88", "start": 502.32, "end": 506.88, "text": "to progressively uh uh build up a medical record layer by layer."}, {"id": "s89", "start": 506.88, "end": 513.72, "text": "So, here we first start with creating some patient invariants like the biological sex, the birth date, the blood group."}, {"id": "s90", "start": 513.76, "end": 523.96, "text": "Uh we use that along with a recent trace uh with an LLM again to produce an ordered list of uh events and provider that a patient might have had, and we call this the patient journey."}, {"id": "s91", "start": 523.96, "end": 532.16, "text": "So, this is a high-level uh you can think of it as a high-level uh overview of what a patient might have gone through in their lifespan um uh captured by a list of events"}, {"id": "s92", "start": 532.16, "end": 535.36, "text": "on a high uh in natural language."}, {"id": "s93", "start": 536.72, "end": 543.12, "text": "And in the real world, it is actually only during these uh uh encounters provider encounters that documentation is really generated."}, {"id": "s94", "start": 543.12, "end": 549.68, "text": "At least for the data that we get uh uh most of our data source data is generated during these provider encounters."}, {"id": "s95", "start": 549.68, "end": 552.24, "text": "So, we model exactly that in our pipeline."}, {"id": "s96", "start": 552.24, "end": 562.6, "text": "Uh we first generate a document plan for each encounter, and then based on that and the preceding history of the uh of the patient, we uh we fan out into generating the actual documents"}, {"id": "s97", "start": 562.6, "end": 566.44, "text": "uh um to hydrate them with actual synthetic information."}, {"id": "s98", "start": 566.44, "end": 577.12, "text": "Uh and this coarse-to-fine layering uh is actually what allows us to keep uh uh the different prompt payloads in the pipeline uh very token efficient uh from both input and output perspective."}, {"id": "s99", "start": 577.12, "end": 581.48, "text": "While also enabling this also helps us enable the scale across longer patient journey."}, {"id": "s100", "start": 581.48, "end": 583.56, "text": "So, you can scale this pipeline."}, {"id": "s101", "start": 583.56, "end": 592.0, "text": "You can have a much longer patient journey and you can just fan out and generate documents that way without overloading the context windows of your LLMs."}, {"id": "s102", "start": 593.8, "end": 603.24, "text": "Finally, we have the sort of refinement loop in the end that we that uses a set of emails to provide feedback to improve specific parts of the generated documents."}, {"id": "s103", "start": 603.24, "end": 609.24, "text": "For example, one of the emails we have is an LLM based check for consistency between all documents."}, {"id": "s104", "start": 609.24, "end": 617.32, "text": "So, this makes sure that there's no contradictions or inaccuracies or conflicting information between two documents that are generated."}, {"id": "s105", "start": 617.32, "end": 624.28, "text": "This is important because we we have a parallel fan out process that is used to generate these documents independently."}, {"id": "s106", "start": 624.96, "end": 638.12, "text": "And because we started with the labels for this particular pipeline run, uh what we actually also have is an ability to kind of use those labels run and and and compare those against the generated"}, {"id": "s107", "start": 638.12, "end": 645.92, "text": "medical records to see if the tasks that we originally used actually matches the data is in accordance with the task inputs and outputs."}, {"id": "s108", "start": 645.92, "end": 652.08, "text": "So, we can do this sort of round trip check to ensure that our data is actually in sync and by default get the correct labels by construction."}, {"id": "s109", "start": 652.08, "end": 656.36, "text": "So, in theory, this is a very nice property to have."}, {"id": "s110", "start": 656.36, "end": 664.28, "text": "Like you can basically skip the ground truth and expensive ground truth in process you need for for data for fair data."}, {"id": "s111", "start": 664.6, "end": 671.8, "text": "One thing to clarify here is that so far all the generation has been happening just in plain text and markdown text."}, {"id": "s112", "start": 671.8, "end": 675.52, "text": "It is possible to go from that to a rendered PDF."}, {"id": "s113", "start": 675.52, "end": 688.16, "text": "But we don't really see much value in doing that because we have state of the art PDF parsers today available to everyone and they just allow you to convert any sort of complex PDF into a nice markdown representation."}, {"id": "s114", "start": 688.16, "end": 694.0, "text": "So, all of this synthetic generation Um, evaluation happens in the text domain."}, {"id": "s115", "start": 694.08, "end": 698.64, "text": "So, this is just an example of like a pipeline that we created from scratch and it's it's very easy to build."}, {"id": "s116", "start": 698.64, "end": 700.8, "text": "It's largely fully LM based."}, {"id": "s117", "start": 700.8, "end": 702.72, "text": "Um, but but who came up with this, right?"}, {"id": "s118", "start": 702.72, "end": 708.24, "text": "Like who who am I to uh know anything about what a good medical record looks like?"}, {"id": "s119", "start": 708.24, "end": 711.92, "text": "Uh So, how do we know if this is any good?"}, {"id": "s120", "start": 711.92, "end": 715.68, "text": "And uh I think this has been mentioned a few times today already, but like you really don't."}, {"id": "s121", "start": 715.68, "end": 718.12, "text": "Like uh no way AI engineer would ever would."}, {"id": "s122", "start": 718.12, "end": 723.08, "text": "Like you want your domain experts to be the ones telling you what's good, what's not good."}, {"id": "s123", "start": 723.08, "end": 731.52, "text": "Um, and which is why we believe that uh it is of great value to empower your domain experts to own your whole data pipeline."}, {"id": "s124", "start": 733.8, "end": 736.72, "text": "And specifically, we uh we do this in two ways, right?"}, {"id": "s125", "start": 736.72, "end": 743.76, "text": "Uh we enable our clinicians to kind of interject at each point uh in the generation process with a human-in-the-loop mechanism."}, {"id": "s126", "start": 743.76, "end": 749.88, "text": "So, at any point, a clinician can steer the generation process to make uh a medical record in the way they want it."}, {"id": "s127", "start": 749.88, "end": 761.92, "text": "Uh we often see our clinicians use this uh to to first look at cases that happen in production, get some interesting ideas, and then use that use those ideas along with this uh steering in this pipeline"}, {"id": "s128", "start": 761.92, "end": 766.24, "text": "to make uh cases that look similar to what we might see in production or they've seen in production."}, {"id": "s129", "start": 766.24, "end": 769.0, "text": "And this is what makes the data generated from this really useful, right?"}, {"id": "s130", "start": 769.0, "end": 777.68, "text": "Like you can actually model your uh your failure cases um beforehand or even after they after you see them in production."}, {"id": "s131", "start": 778.6, "end": 783.4, "text": "And secondly, I think most importantly, we let our clinicians also own the whole logic of the pipeline."}, {"id": "s132", "start": 783.4, "end": 792.24, "text": "Um, we do this by modeling the whole pipeline as a skills-based workflow running on a generic uh agent harness that we built internally."}, {"id": "s133", "start": 792.48, "end": 802.24, "text": "So, every every uh kind of section here you see uh all the way from the patient journey to the document generation to the document enrichment to the evals, all of these things are skills"}, {"id": "s134", "start": 802.24, "end": 805.04, "text": "uh that run on our agent harness."}, {"id": "s135", "start": 807.56, "end": 817.2, "text": "As an example, if a clinician wanted to uh say maybe add support for a new document type, let's say for a new customer, they wanted their intake forms to look a certain way,"}, {"id": "s136", "start": 817.2, "end": 824.48, "text": "they could easily just make a new skill file for it, attach it to the pipeline, and and and voila, there there wouldn't be any engineering changes required."}, {"id": "s137", "start": 824.48, "end": 827.64, "text": "So, it's completely clinician owned from that perspective."}, {"id": "s138", "start": 827.64, "end": 835.08, "text": "And just in a side generally, I feel like skills are really an amazing interface between AI engineers and domain experts, especially in vertical AI."}, {"id": "s139", "start": 835.08, "end": 844.44, "text": "We see this being we see this being modeled in several of our other workflows both for internal use cases and in production as well."}, {"id": "s140", "start": 847.28, "end": 848.52, "text": "So, some results from this, right?"}, {"id": "s141", "start": 848.52, "end": 857.6, "text": "So, even though we only really use synthetic data for evaluation at the moment, there's already a lot of merits that we get from it."}, {"id": "s142", "start": 857.6, "end": 861.6, "text": "Roughly 90% of our data sets are already made of synthetic data."}, {"id": "s143", "start": 861.6, "end": 869.76, "text": "This helps us maintain a very high production accuracy score um for across many customer deployments."}, {"id": "s144", "start": 869.76, "end": 876.96, "text": "The pipelines that we just showed you already we are able to achieve a a very high fidelity on this generated data."}, {"id": "s145", "start": 876.96, "end": 882.72, "text": "In a blind review, clinicians were not able were only able to distinguish synthetic from real about 60% of the time."}, {"id": "s146", "start": 882.72, "end": 887.72, "text": "So, room for improvement, but but it's but it's it's close."}, {"id": "s147", "start": 887.72, "end": 892.24, "text": "And I'm I'm quite quite it's a quite promising avenue for us to invest more more here."}, {"id": "s148", "start": 892.24, "end": 899.48, "text": "And and the the the the fact that is the most interesting to me and what I'm really what I'm really excited about is that all of these data sets"}, {"id": "s149", "start": 899.48, "end": 903.76, "text": "well, most of our data sets today then are created just in time for these customer deployments, right?"}, {"id": "s150", "start": 903.76, "end": 912.24, "text": "You can you when you have the ability to like create data from scratch so quickly, you can kind of you don't need to depend on on on waiting for data from your customer."}, {"id": "s151", "start": 912.24, "end": 920.8, "text": "You can kind of just model all your edge cases, simulate them, and test your workflows before you go live with the production go live in production."}, {"id": "s152", "start": 922.12, "end": 932.8, "text": "So, some takeaways if you're looking to build your own synthetic data pipeline in healthcare or even another domain, try reversing your inference workflow."}, {"id": "s153", "start": 933.04, "end": 938.88, "text": "Diversity should always be sampled from a from an appropriate distribution for your use case."}, {"id": "s154", "start": 938.88, "end": 944.64, "text": "Try to emulate the process in which data was actually generated."}, {"id": "s155", "start": 944.64, "end": 954.36, "text": "So, like I showed you, we were trying to sort of like we were using LLMs we're trying to emulate how our medical records might actually be generated during patient encounters."}, {"id": "s156", "start": 954.36, "end": 957.08, "text": "So, and I I would highly recommend you try doing that."}, {"id": "s157", "start": 957.08, "end": 965.96, "text": "And the fourth most important thing I think is when you're when you're making a data pipeline like this, it's really important to give your domain experts the keys because these are the people who know"}, {"id": "s158", "start": 965.96, "end": 973.76, "text": "about your data and and and they will help you drive towards a recursive self-improvement and not the AI engineers."}, {"id": "s159", "start": 974.96, "end": 975.36, "text": "Cool."}, {"id": "s160", "start": 975.36, "end": 978.4, "text": "So, you don't need a PHI problem for this anywhere."}, {"id": "s161", "start": 978.4, "end": 981.56, "text": "The data you need is ephemeral, sensitive, or even expensive to label."}, {"id": "s162", "start": 981.56, "end": 987.68, "text": "You can think about generating data yourself and hopefully you won't be data poor."}, {"id": "s163", "start": 987.68, "end": 989.88, "text": "Thank you, everyone."}, {"id": "s164", "start": 1002.1610000000001, "end": 1004.1610000000001, "text": "[music]"}]}, {"id": "XWcXwnysmpY", "title": "The Spatial Harness: Bringing Agents to the Canvas — Max Drake, tldraw", "channel": "AI Engineer", "duration": 1132, "upload_date": null, "url": "https://www.youtube.com/watch?v=XWcXwnysmpY", "api": "/api/talks/XWcXwnysmpY.json", "summary_url": "/#XWcXwnysmpY", "transcript": {"html": "/transcripts/XWcXwnysmpY.html", "txt": "/transcripts/XWcXwnysmpY.txt", "vtt": "/transcripts/XWcXwnysmpY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.759, "end": 19.52, "text": "Thank you for coming here to my talk to watch me talk about uh agents on the canvas."}, {"id": "s3", "start": 19.52, "end": 24.8, "text": "Um the first thing I'm going to do though is uh before I have to record my screen."}, {"id": "s4", "start": 24.8, "end": 30.72, "text": "Uh the first thing I'm going to do is I'm going to ask my agent to do something on the canvas."}, {"id": "s5", "start": 30.96, "end": 40.16, "text": "And what I'm going to do is say, \"Hey, uh, my colleague Spencer just emailed me a link to a notion document, uh, for a really cool demo we could build with the TL desktop app."}, {"id": "s6", "start": 40.16, "end": 45.52, "text": "Can you like find that document and then can you build it on the desktop app?\""}, {"id": "s7", "start": 45.76, "end": 47.92, "text": "Thank you."}, {"id": "s8", "start": 50.16, "end": 54.48, "text": "Okay, so that's going to build uh, and then we're going to come back to it later and hopefully it'll work."}, {"id": "s9", "start": 54.48, "end": 56.96, "text": "Um, hi everyone, my name is Max Reich."}, {"id": "s10", "start": 56.96, "end": 57.76, "text": "Thanks so much for coming."}, {"id": "s11", "start": 57.76, "end": 62.96, "text": "Um I work on uh agents on the canvas at uh TLA."}, {"id": "s12", "start": 62.96, "end": 64.559, "text": "I'm a product engineer there."}, {"id": "s13", "start": 64.559, "end": 67.84, "text": "Um so first things first, am I qualified to be giving this talk?"}, {"id": "s14", "start": 67.84, "end": 68.96000000000001, "text": "I like to think so."}, {"id": "s15", "start": 68.96000000000001, "end": 72.96000000000001, "text": "I've been doing like agents on the canvas stuff since before chat GBT came out."}, {"id": "s16", "start": 72.96000000000001, "end": 74.24, "text": "Um I think it's really cool."}, {"id": "s17", "start": 74.24, "end": 79.759, "text": "I think there's like so much UX stuff you can do with when you get LM, you have them working in space."}, {"id": "s18", "start": 79.759, "end": 81.119, "text": "Uh and I think it's really interesting."}, {"id": "s19", "start": 81.119, "end": 83.6, "text": "I've been doing it for about as long as you can have been doing it."}, {"id": "s20", "start": 83.6, "end": 87.119, "text": "Um more recently I've been talking about this a lot."}, {"id": "s21", "start": 87.119, "end": 88.72, "text": "Um, here's some proof."}, {"id": "s22", "start": 88.72, "end": 92.4, "text": "Um, and yeah, so I work at this company called Teal Draw."}, {"id": "s23", "start": 92.4, "end": 93.759, "text": "Um, can I get a quick show of hands?"}, {"id": "s24", "start": 93.759, "end": 96.479, "text": "Has anybody ever heard of or used Teal Draw before?"}, {"id": "s25", "start": 96.479, "end": 97.119, "text": "Yeah."}, {"id": "s26", "start": 97.119, "end": 98.0, "text": "Okay."}, {"id": "s27", "start": 98.0, "end": 98.799, "text": "Um, awesome."}, {"id": "s28", "start": 98.799, "end": 104.56, "text": "So, yeah, the thing that you've probably used if you use Teal Draw is, um, this app right here."}, {"id": "s29", "start": 104.56, "end": 106.07900000000001, "text": "So, this is all Teal Draw."}, {"id": "s30", "start": 106.07900000000001, "end": 109.52000000000001, "text": "Uh, this is a free uh, infinite canvas whiteboarding app."}, {"id": "s31", "start": 109.52000000000001, "end": 116.88, "text": "Um, you know, we have selections and arrows and resizing and, you know, all the things that you need in a in a whiteboard."}, {"id": "s32", "start": 116.88, "end": 120.719, "text": "Um, Traw is also the company uh that makes this app."}, {"id": "s33", "start": 120.719, "end": 121.84, "text": "It's based in London."}, {"id": "s34", "start": 121.84, "end": 122.88, "text": "It's where I work."}, {"id": "s35", "start": 122.88, "end": 130.959, "text": "Um, but the last thing that TLAR is, which is, I think, in my opinion, the most important, is it's the Infinite Canvas SDKs that that powers this app."}, {"id": "s36", "start": 130.959, "end": 135.36, "text": "Um, and so what that means is that, you know, this is kind of the teal draw."}, {"id": "s37", "start": 135.36, "end": 138.959, "text": "The SDK is the engine that powers a lot of Infinite canvas experiences."}, {"id": "s38", "start": 138.959, "end": 142.239, "text": "Um because it turns out it's really hard to get that kind of stuff right."}, {"id": "s39", "start": 142.239, "end": 154.31900000000002, "text": "Um and uh so if you ever want to build a Muro competitor or a slide designer or if you're like Replet um Replet has their whole new uh agent canvas stuff built on top of TLR."}, {"id": "s40", "start": 154.31900000000002, "end": 164.72, "text": "Um, and so the reason we built TL Draw in the first place was that we were running into this issue or people were running into this issue where they had this idea for this like really great killer canvas app."}, {"id": "s41", "start": 164.72, "end": 173.519, "text": "Uh, and they went to go build it and everybody would run into the same problem where they would run into they would have trouble making the actual canvas part of of the app"}, {"id": "s42", "start": 173.519, "end": 178.4, "text": "and they would, you know, trying to deal with resizing and selection and, you know, all the matrix math."}, {"id": "s43", "start": 178.4, "end": 181.68, "text": "And the issue is that they wouldn't be able to build their actual app itself."}, {"id": "s44", "start": 181.68, "end": 182.72, "text": "They would get stuck on the canvas."}, {"id": "s45", "start": 182.72, "end": 190.159, "text": "And so we built Teal Draw to kind of be the engine um that could power that could be the canvas so that they could focus on the actual app."}, {"id": "s46", "start": 190.159, "end": 196.48, "text": "Uh when LLM came out, we like a lot of other people saw that this is going to be this weird new type of software."}, {"id": "s47", "start": 196.48, "end": 200.8, "text": "I don't know if anyone, you know, I'm sure a lot of you were building in 2022 and it was really exciting."}, {"id": "s48", "start": 200.8, "end": 203.28, "text": "Um and a lot of people it was the exact same thing."}, {"id": "s49", "start": 203.28, "end": 211.36, "text": "People had the idea had an idea for this cool app that would, you know, involve LM on the canvas having them manipulating things in space."}, {"id": "s50", "start": 211.36, "end": 213.28, "text": "but then they would try to build it and they'd get stuck."}, {"id": "s51", "start": 213.28, "end": 214.959, "text": "Um there were no best practices."}, {"id": "s52", "start": 214.959, "end": 216.159, "text": "People didn't really know how to do it."}, {"id": "s53", "start": 216.159, "end": 224.31900000000002, "text": "And so at TL Draw we uh realized that we need to make it easy for people to build uh with agents with LLMs on the canvas."}, {"id": "s54", "start": 224.31900000000002, "end": 229.44, "text": "Um and also so Teal Draw the SDK as well as the app has multiplayer built in with like live sync."}, {"id": "s55", "start": 229.44, "end": 230.159, "text": "It's really nice."}, {"id": "s56", "start": 230.159, "end": 231.36, "text": "There's cursors."}, {"id": "s57", "start": 231.36, "end": 234.799, "text": "There's you can see your collaborators cursors and selections and viewports."}, {"id": "s58", "start": 234.799, "end": 245.28, "text": "And I think all of the things that make just the canvas in general a really great uh place for interacting with and collaborating with your colleagues also make it a really great place for interacting"}, {"id": "s59", "start": 245.28, "end": 246.799, "text": "uh and collaborating with agents."}, {"id": "s60", "start": 246.799, "end": 251.76, "text": "Uh and I hope I'm going to be able to show you guys some of that um in the demos that come up."}, {"id": "s61", "start": 251.76, "end": 257.28, "text": "Um so before we talk about agents on the canvas, uh really quickly I want to talk about agents not on the canvas."}, {"id": "s62", "start": 257.28, "end": 261.359, "text": "Um I'm sure you guys have all used an app that looks like this, you know, claude code."}, {"id": "s63", "start": 261.359, "end": 270.56, "text": "And I'm going to really oversimplify here, but basically, uh, part of the reason why these apps are so good and why they work is because they're, you know, the medium in which they're working,"}, {"id": "s64", "start": 270.56, "end": 272.96, "text": "writing code is essentially the medium in which they were trained."}, {"id": "s65", "start": 272.96, "end": 274.479, "text": "You know, it's it's text in, text out."}, {"id": "s66", "start": 274.479, "end": 275.759, "text": "That's how they were trained."}, {"id": "s67", "start": 275.759, "end": 279.44, "text": "Um, and when we work with them, we give them a prompt and they write code."}, {"id": "s68", "start": 279.44, "end": 280.88, "text": "It's text in, text out."}, {"id": "s69", "start": 280.88, "end": 284.88, "text": "Uh, you know, again, oversimplifying, but that's essentially how they work."}, {"id": "s70", "start": 284.88, "end": 290.479, "text": "I don't know if you guys have ever, you know, tried to get your agents to do like UI stuff and try to get them align to align something."}, {"id": "s71", "start": 290.479, "end": 292.72, "text": "found that they could not do that whatsoever."}, {"id": "s72", "start": 292.72, "end": 302.08, "text": "Um because it turns out agents are really really bad at working in 2D space and understanding 2D space and actually requires like a lot of engineering work to get them to"}, {"id": "s73", "start": 302.08, "end": 302.96, "text": "uh do it."}, {"id": "s74", "start": 302.96, "end": 306.96, "text": "And that's kind of the project that we've been embarking on at Teal Draw recently."}, {"id": "s75", "start": 306.96, "end": 313.759, "text": "Um and so the first thing we had to do, this is an older project, but the first thing we had to do is get them to teach them teach the agents"}, {"id": "s76", "start": 313.759, "end": 319.12, "text": "or at this point not agents LLM to understand the canvas and understand kind of what they're even looking at."}, {"id": "s77", "start": 319.12, "end": 326.479, "text": "Um, so we had this project called teach um where um we tal So I'm going to I'm going to prompt this really quick."}, {"id": "s78", "start": 326.479, "end": 330.96, "text": "I'm going to say, \"Hey, make the mouse blow out the candle.\""}, {"id": "s79", "start": 331.759, "end": 332.32, "text": "Yeah."}, {"id": "s80", "start": 332.32, "end": 333.44, "text": "So that's going to take a second."}, {"id": "s81", "start": 333.44, "end": 345.36, "text": "This is this is an older uh older project, but basically what we had to do is we had to kind of like teach the LMS how to take the like the screenshot that we give it and the JSON and all of the other information about the canvas"}, {"id": "s82", "start": 345.36, "end": 348.24, "text": "and Oh yeah, there we Okay."}, {"id": "s83", "start": 348.24, "end": 350.0, "text": "So yeah, that's some that's some wind."}, {"id": "s84", "start": 350.0, "end": 353.6, "text": "Uh it's is it sometimes it gives us smoke as well."}, {"id": "s85", "start": 353.6, "end": 355.039, "text": "Yeah, and we got a little smoke as well."}, {"id": "s86", "start": 355.039, "end": 362.16, "text": "So So we basically had to take it how to like and I want to be very clear this is not um this is not like a special mouse shape."}, {"id": "s87", "start": 362.16, "end": 367.12, "text": "These are just like uh you know the these are just shapes uh on the canvas."}, {"id": "s88", "start": 367.12, "end": 376.72, "text": "This is um and so the work behind this it's a singleshot prompt but we basically we tell the agent how to interpret uh both via screenshots and via the data"}, {"id": "s89", "start": 376.72, "end": 389.759, "text": "um what is actually on the canvas like what it's looking at um which is actually you know it's not a trivial problem and then also how to we teach it how to actually act on the canvas and to understand how the actions that it produces will affect the canvas."}, {"id": "s90", "start": 389.759, "end": 397.36, "text": "So, you know, it got it, you know, it made the it made the smoke, it made the it made the wind, it got the positions right, and it understood what it was doing."}, {"id": "s91", "start": 397.36, "end": 404.72, "text": "Um, so we we got this we kind of figured out how the um like kind of we got we taught it what the canvas is."}, {"id": "s92", "start": 404.72, "end": 407.52, "text": "Uh, but this was like a single shot, single prompt kind of thing."}, {"id": "s93", "start": 407.52, "end": 411.759, "text": "Um, and so the next thing we built is the uh teal draw agent starter kit."}, {"id": "s94", "start": 411.759, "end": 416.8, "text": "Uh, which basically turns that and wraps in a harness that lets an agent work agentically on the canvas."}, {"id": "s95", "start": 416.8, "end": 419.12, "text": "Um, the code is also MIT licensed."}, {"id": "s96", "start": 419.12, "end": 421.52, "text": "You can find it on um that you can find on the website."}, {"id": "s97", "start": 421.52, "end": 423.599, "text": "So, here's a little here's a little cat."}, {"id": "s98", "start": 423.599, "end": 424.96, "text": "I'm going to make this a little bigger."}, {"id": "s99", "start": 424.96, "end": 432.8, "text": "Um but what I'm going to say is, \"Hey, so somewhere else on the canvas uh there are uh some friends for the cat."}, {"id": "s100", "start": 432.8, "end": 435.28, "text": "Can you please uh bring one of them over to the cat?"}, {"id": "s101", "start": 435.28, "end": 438.639, "text": "Um her favorite color is red.\""}, {"id": "s102", "start": 438.96, "end": 440.16, "text": "And so I'm going to zoom out."}, {"id": "s103", "start": 440.16, "end": 441.52, "text": "I'm going to show you guys what's actually going on."}, {"id": "s104", "start": 441.52, "end": 443.44, "text": "So you can see the the view of the agent."}, {"id": "s105", "start": 443.44, "end": 445.68, "text": "There's some there's some potential friends over here."}, {"id": "s106", "start": 445.68, "end": 449.039, "text": "And um you know if you read the All right."}, {"id": "s107", "start": 449.039, "end": 457.919, "text": "So and basically what's going on is that the agent has kind of like we've given it a prompt and uh using the information it has about the canvas."}, {"id": "s108", "start": 457.919, "end": 460.479, "text": "It's uh going to kind of like make some goals for itself."}, {"id": "s109", "start": 460.479, "end": 462.639, "text": "You can see there's some to-dos in the corner here."}, {"id": "s110", "start": 462.639, "end": 469.52, "text": "It's it changed its view in order to see um what was you know the other stuff that was on the canvas."}, {"id": "s111", "start": 469.52, "end": 478.319, "text": "same way that if you ask a coding agent um you know you ask it you know where where do we define this thing in the codebase it can go and it can search it can find it."}, {"id": "s112", "start": 478.319, "end": 489.44, "text": "So this is kind of like turning that singleshot uh prompting experience into this kind of like agentic thing that you can uh have you know it can autonomously set goals"}, {"id": "s113", "start": 489.44, "end": 491.919, "text": "and and work towards them."}, {"id": "s114", "start": 491.919, "end": 508.479, "text": "The uh next thing we did um we did this this uh project called fairies and so we basically we had this agent experience but we realized that you know teal draw and you know the canvas in general is so collaborative it's so multiplayer and we wanted to basically we wanted people to be able to work together with"}, {"id": "s115", "start": 508.479, "end": 523.2, "text": "their agents and we also wanted the agents to be able to work together so this is this is a ferry um there's also you guys want to scan this QR code you can actually this is multiplayer you can join if you want you it requires a Gmail signup But you don't need to pay for tokens."}, {"id": "s116", "start": 523.2, "end": 524.8, "text": "Um, this is this is what the link is."}, {"id": "s117", "start": 524.8, "end": 527.36, "text": "So, basically, this is a this is a fairy."}, {"id": "s118", "start": 527.36, "end": 529.12, "text": "Um, this fair's name is is Joan."}, {"id": "s119", "start": 529.12, "end": 531.44, "text": "They don't like being they don't like being grabbed."}, {"id": "s120", "start": 531.44, "end": 533.44, "text": "Um, you can you can throw them around."}, {"id": "s121", "start": 533.44, "end": 535.44, "text": "You know, we added a lot of really important stuff."}, {"id": "s122", "start": 535.44, "end": 538.88, "text": "You can um you can you can change its hat."}, {"id": "s123", "start": 538.88, "end": 543.68, "text": "Um, you can change the the color and and this seems silly, but it's actually really important."}, {"id": "s124", "start": 543.68, "end": 551.519, "text": "uh and I'll talk about this a little bit more later, but actually understanding uh when you get a high level view of when you see your agents working on the canvas, it's important to know which one is which."}, {"id": "s125", "start": 551.519, "end": 555.839, "text": "And so differentiating them is actually important, which is why, of course, we added the leg slider."}, {"id": "s126", "start": 555.839, "end": 562.72, "text": "Um but so, you know, I can say like, you know, I can I can I can say hey to it."}, {"id": "s127", "start": 562.72, "end": 568.32, "text": "Um and I can say, you know, something like draw a cat."}, {"id": "s128", "start": 568.32, "end": 569.36, "text": "Uh and I can have it work."}, {"id": "s129", "start": 569.36, "end": 572.64, "text": "But the most important thing here is that fairies have friends, right?"}, {"id": "s130", "start": 572.64, "end": 574.48, "text": "and they can here we go."}, {"id": "s131", "start": 574.48, "end": 576.0, "text": "Uh"}, {"id": "s132", "start": 576.0, "end": 577.6, "text": "and they can fairies can work together."}, {"id": "s133", "start": 577.6, "end": 582.16, "text": "And so we kind of designed this like multi- aent collaboration system that works on the canvas."}, {"id": "s134", "start": 582.16, "end": 589.8389999999999, "text": "Um and I'm going to actually I'm going to go to I think one of my Yeah, I think so."}, {"id": "s135", "start": 589.8389999999999, "end": 593.76, "text": "My my colleagues agents are here working uh making this this really great scene."}, {"id": "s136", "start": 593.76, "end": 601.6, "text": "Um I'm going to bring mine over um summon and I'm going to give them a slightly different prompt."}, {"id": "s137", "start": 601.6, "end": 602.48, "text": "So, I'm gonna select them all."}, {"id": "s138", "start": 602.48, "end": 605.04, "text": "And now I have a group chat of of the agents, right?"}, {"id": "s139", "start": 605.04, "end": 610.88, "text": "And I'm going to say, \"Hey, I have a board meeting coming up in like 10 minutes, and I don't have any of my my figures."}, {"id": "s140", "start": 610.88, "end": 616.24, "text": "Can you draw up like a little memo for all of my uh financial data for fiscal year 2025?"}, {"id": "s141", "start": 616.24, "end": 618.48, "text": "Thank you.\""}, {"id": "s142", "start": 618.8, "end": 619.12, "text": "Okay."}, {"id": "s143", "start": 619.12, "end": 625.68, "text": "So, what what's going to happen there basically is this kind of like creates this uh multi- aent, you know, coordination thing."}, {"id": "s144", "start": 625.68, "end": 630.16, "text": "We have uh one of the fairies is writing uh writing out a plan."}, {"id": "s145", "start": 630.16, "end": 630.959, "text": "You can see it."}, {"id": "s146", "start": 630.959, "end": 635.04, "text": "Um, and again, the animations are kind of cute and funny, but it's actually really important."}, {"id": "s147", "start": 635.04, "end": 639.36, "text": "I don't have to read a chat or go through, you know, imagine if I have 10 agents working."}, {"id": "s148", "start": 639.36, "end": 642.399, "text": "I don't have to read a chat in order to know what's actually going on."}, {"id": "s149", "start": 642.399, "end": 644.24, "text": "I can look at the state of the agents."}, {"id": "s150", "start": 644.24, "end": 647.8389999999999, "text": "Uh, and I can actually, you know, I can can see what's happening."}, {"id": "s151", "start": 647.8389999999999, "end": 652.48, "text": "So, we we have a task here that's been defined."}, {"id": "s152", "start": 652.48, "end": 660.48, "text": "Um, it seems like, you know, the the ferry is is uh waiting for that to to finish."}, {"id": "s153", "start": 660.72, "end": 661.12, "text": "Yeah."}, {"id": "s154", "start": 661.12, "end": 662.48, "text": "So, that one's one's board."}, {"id": "s155", "start": 662.48, "end": 663.04, "text": "That one's waiting."}, {"id": "s156", "start": 663.04, "end": 664.32, "text": "So, this is the orchestrator ferry."}, {"id": "s157", "start": 664.32, "end": 667.36, "text": "What what it's done is it's assigned the it's assigned the task."}, {"id": "s158", "start": 667.36, "end": 670.72, "text": "Uh, and now it's waiting for the other ones to start and finish it."}, {"id": "s159", "start": 670.72, "end": 672.079, "text": "Um, and it's going to get notified."}, {"id": "s160", "start": 672.079, "end": 674.72, "text": "It's going to get prompted in order in order to review."}, {"id": "s161", "start": 674.72, "end": 680.8, "text": "Um, it seems like forever reason's not working, but thank Oh, never mind."}, {"id": "s162", "start": 680.8, "end": 683.12, "text": "So, yeah, we have one we have this one."}, {"id": "s163", "start": 683.12, "end": 686.88, "text": "So yeah, we have one fairy who made the made the task, one fairy who's working on it."}, {"id": "s164", "start": 686.88, "end": 691.6, "text": "And so this is this kind of um you know, multi- aent coordination system on the canvas."}, {"id": "s165", "start": 691.6, "end": 694.399, "text": "I have, you know, you can see my colleague has his agents over here."}, {"id": "s166", "start": 694.399, "end": 696.32, "text": "Uh they're they're working as well."}, {"id": "s167", "start": 696.32, "end": 701.44, "text": "Um and so you can kind of collaborate with people and with agents in this uh environment."}, {"id": "s168", "start": 701.44, "end": 704.32, "text": "And I don't know, I think that's really cool."}, {"id": "s169", "start": 704.32, "end": 708.32, "text": "the so the the next thing."}, {"id": "s170", "start": 708.32, "end": 714.24, "text": "So the problem with fairies is that um they're kind of trapped in the canvas and all the stuff you've seen before."}, {"id": "s171", "start": 714.24, "end": 722.0, "text": "This requires if you want to build something like this, this requires like the you to like opt in and have your entire harness be a like canvas harness."}, {"id": "s172", "start": 722.0, "end": 727.279, "text": "Um and the downside of that is that it makes it really hard to have any of this work with stuff like outside in the real world."}, {"id": "s173", "start": 727.279, "end": 730.48, "text": "The fairies are the fairies are trapped in the canvas."}, {"id": "s174", "start": 730.48, "end": 735.2, "text": "Um, and so I I I built this experiment."}, {"id": "s175", "start": 735.2, "end": 737.6, "text": "We had a little hackathon uh internally."}, {"id": "s176", "start": 737.6, "end": 748.32, "text": "Um, but first as a quick motivation for that, um, at Teal Draw whenever we have an whenever we're getting closer to a launch, we like abandon all of our task tracking software and we make just one massive"}, {"id": "s177", "start": 748.32, "end": 754.16, "text": "dependency graph of how like so this is what an actual this is a real thing from when we launched fairies actually."}, {"id": "s178", "start": 754.16, "end": 761.6, "text": "Um, and so this is what it looks like when we're like really like when is hitting the fan at at tealraw when we're launching something."}, {"id": "s179", "start": 761.6, "end": 767.04, "text": "Um, and I really like this interface because it it kind of lets you This is not like a special app."}, {"id": "s180", "start": 767.04, "end": 768.8, "text": "This is still just tealraw.com."}, {"id": "s181", "start": 768.8, "end": 771.6, "text": "You can, you know, move your shapes around and things like that."}, {"id": "s182", "start": 771.6, "end": 776.48, "text": "Um, but I really like this because it both it lets you see like what depends on what."}, {"id": "s183", "start": 776.48, "end": 777.76, "text": "It lets you know what's coming next."}, {"id": "s184", "start": 777.76, "end": 779.2, "text": "It lets you get a highle overview."}, {"id": "s185", "start": 779.2, "end": 784.56, "text": "You know, these are all green because we finished them, but you know, you can imagine during the project, some of them are in process."}, {"id": "s186", "start": 784.56, "end": 787.279, "text": "And I really want I really wanted something like this."}, {"id": "s187", "start": 787.279, "end": 791.76, "text": "Um, but something that I could actually that could actually do the work itself."}, {"id": "s188", "start": 791.76, "end": 795.2, "text": "And so I um prototyped this thing."}, {"id": "s189", "start": 795.2, "end": 796.48, "text": "It's called the tech tree app."}, {"id": "s190", "start": 796.48, "end": 797.6, "text": "And basically, it's similar to this."}, {"id": "s191", "start": 797.6, "end": 808.959, "text": "It's a dependency graph, but each of these tasks um is a a coding agent that you can kick off and you can have your agent kind of like be running and doing them autonomously."}, {"id": "s192", "start": 808.959, "end": 815.279, "text": "Um the project itself that's working on it's this little um this is just kind of like a demo app."}, {"id": "s193", "start": 815.279, "end": 818.9590000000001, "text": "Um but this is Can I Yeah."}, {"id": "s194", "start": 818.9590000000001, "end": 823.92, "text": "So this is this is a little fun, you know, multimodal input thing."}, {"id": "s195", "start": 823.92, "end": 825.279, "text": "I haven't written any of the code for this."}, {"id": "s196", "start": 825.279, "end": 827.92, "text": "This is um this is all written by agents."}, {"id": "s197", "start": 827.92, "end": 832.56, "text": "But I can manage all of the work is being done in this desktop app uh or in this app here."}, {"id": "s198", "start": 832.56, "end": 838.72, "text": "And so I can do something like I can see this one has has finished uh building some gesture controls for the canvas."}, {"id": "s199", "start": 838.72, "end": 843.44, "text": "So I can open the PR uh and unfortunately sorry Jeffrey I am just going to merge this."}, {"id": "s200", "start": 843.44, "end": 846.959, "text": "I'm not going to uh have it be explained to me."}, {"id": "s201", "start": 846.959, "end": 848.234, "text": "But so this is"}, {"id": "s202", "start": 848.234, "end": 848.88, "text": "[snorts]"}, {"id": "s203", "start": 848.88, "end": 849.76, "text": "and so yeah great."}, {"id": "s204", "start": 849.76, "end": 850.079, "text": "Awesome."}, {"id": "s205", "start": 850.079, "end": 850.959, "text": "It looks good."}, {"id": "s206", "start": 850.959, "end": 860.079, "text": "Um and then you know eventually this is going to get marked uh as as complete and this is also multiplayer which is really cool and you can have people working together."}, {"id": "s207", "start": 860.079, "end": 860.32, "text": "Yeah."}, {"id": "s208", "start": 860.32, "end": 861.199, "text": "So that's finished."}, {"id": "s209", "start": 861.199, "end": 868.32, "text": "Um and I you can also prompt from like inside the the app you can draw and have a prompt."}, {"id": "s210", "start": 868.32, "end": 875.04, "text": "So I can basically I can just take all of this uh and I can draw a little like so this is my prompt and I can wrap it in a task"}, {"id": "s211", "start": 875.04, "end": 890.72, "text": "um and I can you know call it facial animation canvas control and then I can assign that to cloud and I can just hit run and so now that's working as well and so this is kind of like you know this is kind of something similar to conductor or openai symfony where you're using a kind of like"}, {"id": "s212", "start": 890.72, "end": 901.12, "text": "one abstracted interface above uh what the actual in order to like manage your your multi- aent uh coordination and things like that And the thing I like about this also is that because this is multiplayer,"}, {"id": "s213", "start": 901.12, "end": 906.48, "text": "one of my colleagues can come and join and add tasks and uh edit things and see the work that's been going on."}, {"id": "s214", "start": 906.48, "end": 910.72, "text": "So, it's much more collaborative than um like your own instance of something."}, {"id": "s215", "start": 910.72, "end": 912.8, "text": "Um here's the moment of truth."}, {"id": "s216", "start": 912.8, "end": 918.079, "text": "Let's see if that demo that I had it build in the beginning worked."}, {"id": "s217", "start": 918.079, "end": 923.12, "text": "Um all right, it's it hasn't built the fluid simulation yet."}, {"id": "s218", "start": 923.12, "end": 925.76, "text": "Uh it's been working for 13 minutes."}, {"id": "s219", "start": 925.76, "end": 929.199, "text": "Um that's actually fine."}, {"id": "s220", "start": 929.199, "end": 931.279, "text": "So basically this is the TL Draw desktop app."}, {"id": "s221", "start": 931.279, "end": 935.68, "text": "Um something that's really cool here is that we have uh so this is running locally."}, {"id": "s222", "start": 935.68, "end": 936.72, "text": "It's working on files."}, {"id": "s223", "start": 936.72, "end": 937.68, "text": "We'll see if it finishes."}, {"id": "s224", "start": 937.68, "end": 938.72, "text": "We'll we'll let this run."}, {"id": "s225", "start": 938.72, "end": 946.16, "text": "Um but basically what this does is this uh this basically exposes the editor instance of the TLR app that's running here."}, {"id": "s226", "start": 946.16, "end": 955.12, "text": "And it has a server that lets any agent uh for example my cloud code uh write just plain JavaScript against the against the editor."}, {"id": "s227", "start": 955.12, "end": 968.24, "text": "and and it it basically it you know it's it's code mode if you've ever used code mode um but you can basically turn your teal desktop app into um a like scripting environment and"}, {"id": "s228", "start": 968.24, "end": 978.639, "text": "the one of my colleagues actually is u I'm going to this is this is the kind of off the rails bit of the canvas here um or of the of the talk."}, {"id": "s229", "start": 978.639, "end": 982.32, "text": "So here's something my colleague made uh using the same thing."}, {"id": "s230", "start": 982.32, "end": 988.399, "text": "So this is he has the teal draw desktop app in the corner here and he's using it as his uh window manager."}, {"id": "s231", "start": 988.399, "end": 994.56, "text": "Um and what he did the way he did this was he just told claude code to because cloud code has access to your actual computer."}, {"id": "s232", "start": 994.56, "end": 996.16, "text": "It's not locked into the canvas."}, {"id": "s233", "start": 996.16, "end": 1004.72, "text": "Uh it basically you know it it made some rectangles and it uh probably wrote some Apple script or something to actually re uh you know move the things around."}, {"id": "s234", "start": 1004.72, "end": 1012.0, "text": "And so you can kind of make all of these uh like ephemeral UIs and have them actually be doing things in the real world."}, {"id": "s235", "start": 1012.0, "end": 1019.92, "text": "Um, another really cool one that he did was, um, if this loads, it's Pong on the desktop."}, {"id": "s236", "start": 1019.92, "end": 1024.079, "text": "Uh, let's hit it with a little refresh there and see if it works."}, {"id": "s237", "start": 1024.079, "end": 1024.48, "text": "Yeah."}, {"id": "s238", "start": 1024.48, "end": 1030.16, "text": "So, this is he's got in the corner here, you know, you you have uh you have TLR running."}, {"id": "s239", "start": 1030.16, "end": 1034.959, "text": "This is the desktop app and it's using the Windows in order to uh play Pong."}, {"id": "s240", "start": 1034.959, "end": 1044.24, "text": "And so again, like kind of crazy, but there's uh you know, maybe it seems a little silly, but let's see if this this worked."}, {"id": "s241", "start": 1044.24, "end": 1045.039, "text": "Oh, it's still working."}, {"id": "s242", "start": 1045.039, "end": 1046.559, "text": "Man, it was usually much faster."}, {"id": "s243", "start": 1046.559, "end": 1056.0, "text": "Um, but I I think this stuff is so cool because this lets you kind of, you know, do all of the weird kind of like spatial interfaces that you can do uh on the canvas."}, {"id": "s244", "start": 1056.0, "end": 1058.32, "text": "You get all of like the primitives of the canvas."}, {"id": "s245", "start": 1058.32, "end": 1063.28, "text": "Um, but you can like you can have your agents working kind of like in the real world."}, {"id": "s246", "start": 1063.28, "end": 1065.039, "text": "uh it has access to real data."}, {"id": "s247", "start": 1065.039, "end": 1078.799, "text": "If I scroll up, I'll show that um if uh you know this is my cloud code and it found it it got the Gmail, it got the notion doc, it found the spec and it's going to to implement it."}, {"id": "s248", "start": 1078.799, "end": 1091.84, "text": "Um but yeah, so to sum up, I think that agents working on the canvas is so cool and I think that there's like so much we can do if we use like the agent the canvas as a a place to work with agents."}, {"id": "s249", "start": 1091.84, "end": 1102.32, "text": "And I think the place part of it is really important because you know when we do you know with remote work collaboration we do a lot of stuff online with each other and we collaborate with people on the canvas"}, {"id": "s250", "start": 1102.32, "end": 1111.52, "text": "and I think that the yeah the canvas can be a place where we uh collaborate with agents and I'm I'm I'm I'm vamping because I'm trying to see if this is finished but I don't think it's going to finish."}, {"id": "s251", "start": 1111.52, "end": 1114.72, "text": "Um, but thank you so much"}, {"id": "s252", "start": 1129.232, "end": 1131.232, "text": "[music]"}]}, {"id": "XsvUhpnHepE", "title": "The Missing Layer in Agentic AI — Giedrius Šteimantas, Oxylabs", "channel": "AI Engineer", "duration": 904, "upload_date": null, "url": "https://www.youtube.com/watch?v=XsvUhpnHepE", "api": "/api/talks/XsvUhpnHepE.json", "summary_url": "/#XsvUhpnHepE", "transcript": {"html": "/transcripts/XsvUhpnHepE.html", "txt": "/transcripts/XsvUhpnHepE.txt", "vtt": "/transcripts/XsvUhpnHepE.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.679, "end": 16.0, "text": "What a beautiful voice."}, {"id": "s3", "start": 16.0, "end": 18.4, "text": "All right, thank you for coming."}, {"id": "s4", "start": 18.4, "end": 27.279, "text": "Um, today I'm going to talk a lot about about missing layer of Aentic AI and explain a little bit about how web scraping infrastructure can actually help you."}, {"id": "s5", "start": 27.279, "end": 32.719, "text": "But first, let me talk uh a little bit about my friend's idea."}, {"id": "s6", "start": 32.719, "end": 34.399, "text": "So, my friend had this idea."}, {"id": "s7", "start": 34.399, "end": 48.079, "text": "Uh he built this AI chatbot that, you know, chatted with people about their style and it was supposed to help them pick out new items uh as you know, some sort of a personal shopper."}, {"id": "s8", "start": 48.079, "end": 60.16, "text": "And once those items were picked out, you know, this uh this this this chatbot would uh produce prompts that a shopping agent would then take and attempt to find them online"}, {"id": "s9", "start": 60.16, "end": 64.159, "text": "and purchase them for uh you know for for for the customers."}, {"id": "s10", "start": 64.159, "end": 75.52, "text": "Um this idea I know is not new and uh it could be applicable to many scenarios but my friend was kind of you know uh he was u he was good at building agents uh but u he ran into"}, {"id": "s11", "start": 75.52, "end": 87.2, "text": "different problems and asked me for advice and when he ran it he he would usually you know instead of you know product pages or whatever he would get things like that"}, {"id": "s12", "start": 87.2, "end": 95.52000000000001, "text": "it's uh you know he would get captured you know and uh you know of course you So he was uh he was doing it very very quickly."}, {"id": "s13", "start": 95.52000000000001, "end": 103.36, "text": "So he wipe coded the whole thing while having a you know a thought about you know infrastructure and underlying layers and how it should work."}, {"id": "s14", "start": 103.36, "end": 105.36, "text": "I didn't at all."}, {"id": "s15", "start": 105.36, "end": 115.6, "text": "Uh he was using a browser automation framework for everything and it was slow, expensive and unreliable."}, {"id": "s16", "start": 115.6, "end": 123.36, "text": "So at the end he made a product that uh uh that does not work and is expensive to run."}, {"id": "s17", "start": 123.36, "end": 132.239, "text": "So he asked me for help and you know I was a little bit reluctant at first because uh you know I don't like giving out professional advice you know for free"}, {"id": "s18", "start": 132.239, "end": 138.879, "text": "but uh I took a look at it and uh you know I got a little curious I have to be honest."}, {"id": "s19", "start": 138.879, "end": 142.56, "text": "I noticed that he was missing something."}, {"id": "s20", "start": 142.64, "end": 152.239, "text": "Um he was missing a layer an infrastructural layer that would allow this agent to operate freely on the open web."}, {"id": "s21", "start": 152.239, "end": 153.36, "text": "My name is Gedrus."}, {"id": "s22", "start": 153.36, "end": 169.36, "text": "I I work for Oxyabs uh where in the past 10 years we've helped you know companies that trained large language models uh get their data and now we use this infrastructure to help AI agents"}, {"id": "s23", "start": 169.36, "end": 176.0, "text": "to access uh web on scale and at low cost."}, {"id": "s24", "start": 176.4, "end": 184.319, "text": "And uh before we go into this agent and see how we can build it, I wanted to talk a little bit about the scraping industry and how we operate."}, {"id": "s25", "start": 184.319, "end": 192.56, "text": "And uh the principles that we operate on can be summed up by one uh sentence."}, {"id": "s26", "start": 192.56, "end": 195.28, "text": "You know, cost matters."}, {"id": "s27", "start": 195.28, "end": 203.28, "text": "And the first principle is use a browser when you absolutely have to validate content."}, {"id": "s28", "start": 203.28, "end": 208.319, "text": "HTTP response 200 does not mean that we are good to go."}, {"id": "s29", "start": 208.319, "end": 210.72, "text": "Lighter content is preferred."}, {"id": "s30", "start": 210.72, "end": 220.0, "text": "Websites are full of JavaScript, CSS, HTML, and there's a lot of bites that do not deliver any value whatsoever."}, {"id": "s31", "start": 220.0, "end": 229.36, "text": "And today I will demonstrate how these principles are also applicable when building agents that interact with the web."}, {"id": "s32", "start": 229.36, "end": 231.76, "text": "So coming back to my friend's agent, right?"}, {"id": "s33", "start": 231.76, "end": 238.72, "text": "Let's uh let's take a look and see how uh we could do a better job and uh making this agent run more reliably."}, {"id": "s34", "start": 238.72, "end": 241.84, "text": "So here's how my friends set it all up, you know?"}, {"id": "s35", "start": 241.84, "end": 243.84, "text": "So four different stages."}, {"id": "s36", "start": 243.84, "end": 251.12, "text": "Discovery, the agent was supposed to find products pages on websites where these items can be bought."}, {"id": "s37", "start": 251.12, "end": 252.879, "text": "Then a decision stage, right?"}, {"id": "s38", "start": 252.879, "end": 261.04, "text": "and uh where an agent can decide uh what products to buy based on you know uh the the content of these pages."}, {"id": "s39", "start": 261.04, "end": 271.759, "text": "So the agent has to visit them verify that the the stock is there the price is right the the description fits uh you know the prompt and once that"}, {"id": "s40", "start": 271.759, "end": 280.479, "text": "decision is made user is given with a choice you know whether to go ahead with the purchase or you know reject it altogether."}, {"id": "s41", "start": 280.479, "end": 293.12, "text": "The problem was that sometimes and of course we go to execution right away then execution just making the purchase but the problem was that sometimes it worked and sometimes it did not"}, {"id": "s42", "start": 293.12, "end": 295.759, "text": "that was a little problematic."}, {"id": "s43", "start": 295.759, "end": 308.56, "text": "So let's dissect it step by step and see how we could build this differently while improving performance and reducing the cost dramatically by using the same principles from the scraping industry."}, {"id": "s44", "start": 309.6, "end": 312.8, "text": "So the first stage discovery."}, {"id": "s45", "start": 312.8, "end": 323.52, "text": "So my friend uh you know he chose to go with a predefined list of websites major retailers uh and query their search pages in order to find these products."}, {"id": "s46", "start": 323.52, "end": 326.32, "text": "He used the browser automation tool for that."}, {"id": "s47", "start": 326.32, "end": 329.36, "text": "It kind of worked but you know it did have challenges."}, {"id": "s48", "start": 329.36, "end": 334.0, "text": "So their browser automation tool lacked what we call stealth."}, {"id": "s49", "start": 334.0, "end": 338.08, "text": "So they could so they would get captures and sometimes fail access to access the sites."}, {"id": "s50", "start": 338.08, "end": 338.8, "text": "all together."}, {"id": "s51", "start": 338.8, "end": 341.199, "text": "This would break down the flow."}, {"id": "s52", "start": 341.199, "end": 346.4, "text": "So a retry mechanism would have to be put in place making the whole process very long."}, {"id": "s53", "start": 346.4, "end": 361.36, "text": "Uh you know costly um and sometimes the size would not be uh accessed at all and also you know as a result also became very difficult to predict the final cost per transaction."}, {"id": "s54", "start": 361.36, "end": 365.44, "text": "The list of websites that my friend was checking was also deterministic."}, {"id": "s55", "start": 365.44, "end": 371.919, "text": "So selection of items would only be limited to the few choices he put in."}, {"id": "s56", "start": 372.08, "end": 378.56, "text": "Websites themselves were heavy on JavaScript, making the whole process very slow and costly."}, {"id": "s57", "start": 378.8, "end": 392.24, "text": "And finally, even if it worked, items ended up being unavailable at checkout because in the discovery phase, the he was not able to use energy location capabilities and a lot of e-commerce"}, {"id": "s58", "start": 392.24, "end": 402.8, "text": "websites are uh you know uh they take your users location into account when displaying stock options sizes and soever."}, {"id": "s59", "start": 405.199, "end": 408.319, "text": "So now we solve these problems at Oxabs every day."}, {"id": "s60", "start": 408.319, "end": 418.0, "text": "So when scraping you always want the results to appear on the first try and to not to use browser unless absolutely necessary."}, {"id": "s61", "start": 418.0, "end": 424.639, "text": "However, for this specific discovery phase, you also want to use to allow your agent to search the web."}, {"id": "s62", "start": 424.639, "end": 427.68, "text": "Doing so with a browser is very cumbersome."}, {"id": "s63", "start": 427.68, "end": 434.72, "text": "That is why I chose to use a product that we built especially for agents fast search API."}, {"id": "s64", "start": 434.72, "end": 439.759, "text": "It returns a compact JSON which is less than 2,000 tokens per response."}, {"id": "s65", "start": 439.759, "end": 444.56, "text": "Has fast response times less than 700 milliseconds on average."}, {"id": "s66", "start": 444.56, "end": 450.16, "text": "And it's uh has a a high success rate at a predictable low price."}, {"id": "s67", "start": 450.16, "end": 462.56, "text": "And most importantly, it gives your agent access to the mo to you know to many popular search engines that all of these websites have been instant indexed already a long time ago."}, {"id": "s68", "start": 462.56, "end": 475.36, "text": "So in the discovery phase instead of predefined list and the browser we give agent a tool to search the web fast search API agent formulates fan out queries and selects the relevant URLs from search results."}, {"id": "s69", "start": 475.36, "end": 484.96, "text": "Since the responses are quite small and there's no need for complicated models we can have the agent run quite quickly in this stage."}, {"id": "s70", "start": 485.919, "end": 487.199, "text": "Um, yeah."}, {"id": "s71", "start": 487.199, "end": 493.12, "text": "So, so now the agent has searched the web and selected some relevant URLs."}, {"id": "s72", "start": 493.12, "end": 505.28, "text": "It is time for those for for the agent to visit those pages to see what they're all about in order to confirm price, stock level, description, and product details and so on."}, {"id": "s73", "start": 505.28, "end": 508.24, "text": "With this, we can go to in the decision phase."}, {"id": "s74", "start": 508.24, "end": 512.24, "text": "This is where agent selects the items we will purchase."}, {"id": "s75", "start": 512.24, "end": 514.56, "text": "For this, my friend also used the browser."}, {"id": "s76", "start": 514.56, "end": 522.399, "text": "He ran many browsers on parallel so it could uh you know so the whole process could happen faster and that is not a bad thing."}, {"id": "s77", "start": 522.399, "end": 538.8, "text": "He managed to get some results however many of the results would end up like this and the result the agent would be left with very few choices with the majority of popular retailers"}, {"id": "s78", "start": 538.8, "end": 540.88, "text": "being left out."}, {"id": "s79", "start": 540.88, "end": 543.2, "text": "It's a good thing he did well with observability."}, {"id": "s80", "start": 543.2, "end": 545.6, "text": "So he actually noticed when it happened."}, {"id": "s81", "start": 545.6, "end": 553.44, "text": "But what we see when working with these types of customers is that they often fail to detect the failure."}, {"id": "s82", "start": 553.44, "end": 561.12, "text": "They end up checking only the content size and HTTP response code and then feeding this large HTML to an LLM."}, {"id": "s83", "start": 561.12, "end": 567.2, "text": "Now an a large language model of course can distinguish between valid esop content and a capture."}, {"id": "s84", "start": 567.2, "end": 570.72, "text": "But we need to spend tokens in order to do that."}, {"id": "s85", "start": 570.72, "end": 584.399, "text": "And when we attempt to open 10 websites, but only three return valid content but feed all of the 10 to the to the model, it is a problem."}, {"id": "s86", "start": 584.399, "end": 592.24, "text": "It means that we waste 70% of the tokens and that is a little crazy in my in my opinion."}, {"id": "s87", "start": 593.6, "end": 595.44, "text": "So I noticed this problem as well."}, {"id": "s88", "start": 595.44, "end": 600.959, "text": "Uh my initial hunch was compression was to compress the output."}, {"id": "s89", "start": 600.959, "end": 604.24, "text": "But then I thought wait the problem is not the compression."}, {"id": "s90", "start": 604.24, "end": 607.44, "text": "The problem is that the content is not valid."}, {"id": "s91", "start": 607.44, "end": 612.88, "text": "We need to make sure that the content is valid before even attempting any compression."}, {"id": "s92", "start": 612.88, "end": 618.959, "text": "This will lead to more options for the agent to choose from and fewer wasted tokens."}, {"id": "s93", "start": 618.959, "end": 621.92, "text": "And then I remember rule number one of scraping."}, {"id": "s94", "start": 621.92, "end": 626.16, "text": "Use the browser when you absolutely need it."}, {"id": "s95", "start": 626.16, "end": 629.279, "text": "Otherwise look for other solutions."}, {"id": "s96", "start": 629.279, "end": 639.04, "text": "So I I tried to rebuild the stage without a browser and I uh only by using ox web scraper API and this gave me many benefits."}, {"id": "s97", "start": 639.04, "end": 643.2, "text": "Uh but firstly only valid content was returned."}, {"id": "s98", "start": 643.2, "end": 648.48, "text": "In case of captures or other blocks the request would fail with an explicit error message."}, {"id": "s99", "start": 648.48, "end": 651.92, "text": "So I know not to include it when sending to a large language model."}, {"id": "s100", "start": 651.92, "end": 656.56, "text": "But the success rates are quite high and even for protected websites."}, {"id": "s101", "start": 656.56, "end": 660.32, "text": "So that wasn't that much of you know much of a problem."}, {"id": "s102", "start": 660.32, "end": 664.959, "text": "So no browser was needed and uh everything is a lightweight rest API."}, {"id": "s103", "start": 664.959, "end": 671.12, "text": "I can run hundreds of requests in parallel and receive content at the same time."}, {"id": "s104", "start": 671.519, "end": 673.76, "text": "Also the API supports markdown."}, {"id": "s105", "start": 673.76, "end": 678.16, "text": "So no need to submit raw HTML uh to LLMs."}, {"id": "s106", "start": 678.16, "end": 685.68, "text": "If a website is dynamic, it runs a full browser under the hood to render the content correctly."}, {"id": "s107", "start": 685.8389999999999, "end": 688.399, "text": "And finally, it supports geoloccation options."}, {"id": "s108", "start": 688.399, "end": 693.92, "text": "So I can localize my results and get relevant content."}, {"id": "s109", "start": 693.92, "end": 699.2, "text": "The best part, customers only pay for successful results."}, {"id": "s110", "start": 699.2, "end": 705.68, "text": "So actually, yeah, that's uh that's what's uh that's what that's what the best thing about it."}, {"id": "s111", "start": 705.68, "end": 707.04, "text": "No cure or no pay."}, {"id": "s112", "start": 707.04, "end": 712.399, "text": "If if the scraper fails, there's no cost and it fails loudly."}, {"id": "s113", "start": 714.88, "end": 718.88, "text": "So now we have all of the information to make a decision."}, {"id": "s114", "start": 718.88, "end": 723.279, "text": "We present a decision to the user and the user makes the final call."}, {"id": "s115", "start": 723.279, "end": 729.92, "text": "Once it's affirmative, we move to the last stage of the workflow, the purchase."}, {"id": "s116", "start": 729.92, "end": 733.2, "text": "So I remember what I said a couple of times about browsers."}, {"id": "s117", "start": 733.2, "end": 735.6, "text": "This time, but this time is different."}, {"id": "s118", "start": 735.6, "end": 740.32, "text": "you this time you absolutely need to use a browser."}, {"id": "s119", "start": 740.32, "end": 744.8, "text": "We need to process inputs and the content is highly dynamic."}, {"id": "s120", "start": 744.8, "end": 749.519, "text": "Now this time my implementation, my friend's implementation does not differ much."}, {"id": "s121", "start": 749.519, "end": 756.0, "text": "We both use playright MCP with a browser and a large language model."}, {"id": "s122", "start": 757.68, "end": 765.68, "text": "The main problem my friend faced however just like in in the previous stages while using browser was access."}, {"id": "s123", "start": 765.68, "end": 775.2, "text": "Just like in the beginning as he was using the browser he was getting captured into oblivion making it impossible to automate the flow."}, {"id": "s124", "start": 775.92, "end": 778.399, "text": "Well the fix was quite easy."}, {"id": "s125", "start": 778.399, "end": 784.88, "text": "I just connected Oxab's headless browser since it supports playright MCP is just a drop in replacement."}, {"id": "s126", "start": 784.88, "end": 798.32, "text": "With this replacement, I hardened this agent with years of scraping experience and got proper stealth done at the browser source code level, a residential proxy attached to it out of the box,"}, {"id": "s127", "start": 798.32, "end": 804.16, "text": "and most importantly in this in this case, a geoloccation capability."}, {"id": "s128", "start": 804.16, "end": 811.04, "text": "So my results are localized the same way as in the verification stage."}, {"id": "s129", "start": 811.04, "end": 825.2, "text": "So if we run it, we actually have a a a a browser that that access the content and can actually automate the flow by, you know, selecting the right size from the prompt,"}, {"id": "s130", "start": 825.2, "end": 829.68, "text": "add it to cart and complete the purchase."}, {"id": "s131", "start": 829.68, "end": 840.639, "text": "And boom, we have an agent that commands a powerful infrastructure hardened by years of web scraping experience."}, {"id": "s132", "start": 840.8, "end": 848.56, "text": "Not only does it open the up the web, but also saves the time on implementation and token cost."}, {"id": "s133", "start": 848.56, "end": 860.88, "text": "And if I can leave you with a few lessons we learned today was that you know when building agents use the same principles from the scraping industry."}, {"id": "s134", "start": 860.88, "end": 864.72, "text": "Use the browser when you absolutely need to."}, {"id": "s135", "start": 864.72, "end": 878.8, "text": "You have to validate content before feeding it to the large language models and most importantly fill the missing layer with the proper infrastructure so you can focus on building stuff."}, {"id": "s136", "start": 878.8, "end": 882.079, "text": "But remember cost matters."}, {"id": "s137", "start": 882.079, "end": 884.72, "text": "Thank you very much."}, {"id": "s138", "start": 884.915, "end": 886.915, "text": "[applause]"}]}, {"id": "XzJD1bvXKjs", "title": "How long can your skills be before your agent forgets what you told it? — Laurie Voss, Arize AI", "channel": "AI Engineer", "duration": 1346, "upload_date": null, "url": "https://www.youtube.com/watch?v=XzJD1bvXKjs", "api": "/api/talks/XzJD1bvXKjs.json", "summary_url": "/#XzJD1bvXKjs", "transcript": {"html": "/transcripts/XzJD1bvXKjs.html", "txt": "/transcripts/XzJD1bvXKjs.txt", "vtt": "/transcripts/XzJD1bvXKjs.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.8, "end": 13.679, "text": "All right."}, {"id": "s3", "start": 13.679, "end": 15.92, "text": "Hello everybody."}, {"id": "s4", "start": 15.92, "end": 19.279, "text": "Thank you for coming to this delightfully nerdy talk."}, {"id": "s5", "start": 19.279, "end": 21.84, "text": "Uh this talk has a really long title."}, {"id": "s6", "start": 21.84, "end": 23.92, "text": "Uh so let me give you the short version up front."}, {"id": "s7", "start": 23.92, "end": 27.439, "text": "You write skills files uh and stuff them full of instructions."}, {"id": "s8", "start": 27.439, "end": 31.039, "text": "At some point the model stops keeping track of all of them."}, {"id": "s9", "start": 31.039, "end": 33.04, "text": "The question is where is that point?"}, {"id": "s10", "start": 33.04, "end": 36.48, "text": "At what point have you put too many instructions in your skills files?"}, {"id": "s11", "start": 36.48, "end": 40.8, "text": "Uh and the answer has changed a lot in the last year."}, {"id": "s12", "start": 40.8, "end": 41.52, "text": "I'm Lori."}, {"id": "s13", "start": 41.52, "end": 43.92, "text": "I'm head of developer relations at Arise AI."}, {"id": "s14", "start": 43.92, "end": 48.48, "text": "Uh in a former life, I co-founded npm Inc. So some of you may know me from the days of JavaScript."}, {"id": "s15", "start": 48.48, "end": 53.36, "text": "These days I spend a lot of time thinking about AI and how to test it."}, {"id": "s16", "start": 53.36, "end": 57.12, "text": "Uh a few months ago I was at AI engineer in Miami which was a good conference."}, {"id": "s17", "start": 57.12, "end": 59.68, "text": "Uh and I was watching a talk by Dexter Horthy."}, {"id": "s18", "start": 59.68, "end": 60.8, "text": "Uh it was a good talk."}, {"id": "s19", "start": 60.8, "end": 62.64, "text": "It was not about this topic at all."}, {"id": "s20", "start": 62.64, "end": 73.68, "text": "Uh but while he was giving that talk he mentioned as an aside uh that an agent can follow up to about 200 instructions uh before it starts forgetting those instructions."}, {"id": "s21", "start": 73.68, "end": 77.52, "text": "Uh and he then he moved on in his talk and it was entirely an aside."}, {"id": "s22", "start": 77.52, "end": 82.4, "text": "Uh and he he mentioned that that figure is from 2025 so things might be better now."}, {"id": "s23", "start": 82.4, "end": 87.759, "text": "Um, and I stopped listening for a second because I was like, 200 instructions."}, {"id": "s24", "start": 87.759, "end": 90.96000000000001, "text": "Uh, is not very many instructions at all."}, {"id": "s25", "start": 90.96000000000001, "end": 91.36, "text": "Right?"}, {"id": "s26", "start": 91.36, "end": 95.439, "text": "A decent skills file blows past 200 instructions almost immediately."}, {"id": "s27", "start": 95.439, "end": 102.799, "text": "Um, if the user says X, do Y, always include a section on Z, never use the phrase W, every one of those is a separate instruction."}, {"id": "s28", "start": 102.799, "end": 109.68, "text": "Uh, and if the model quietly stops tracking them after 200, that's a really hard ceiling on the complexity of what you can build."}, {"id": "s29", "start": 109.68, "end": 112.56, "text": "Uh, so I wanted to know where he got that number first."}, {"id": "s30", "start": 112.56, "end": 115.36, "text": "Uh, and I wanted to know if it was true."}, {"id": "s31", "start": 115.36, "end": 117.28, "text": "Uh, so you know the feeling that I'm talking about."}, {"id": "s32", "start": 117.28, "end": 123.2, "text": "You write this big beautiful skills file, pages of rules, edge cases, tone, formatting, you hand it to the agent, it does the thing."}, {"id": "s33", "start": 123.2, "end": 127.36, "text": "Uh, and you look at the output and go, did it actually pay attention?"}, {"id": "s34", "start": 127.36, "end": 136.07999999999998, "text": "Did it actually follow all of these rules or did it just sort of, you know, do what it felt like and sort of give me a close simulacum of what I was expecting?"}, {"id": "s35", "start": 136.07999999999998, "end": 138.56, "text": "Um, you can't really tell or can you?"}, {"id": "s36", "start": 138.56, "end": 139.84, "text": "More on that later."}, {"id": "s37", "start": 139.84, "end": 144.879, "text": "Um, and so you live with this lowgrade anxiety every time you hit run."}, {"id": "s38", "start": 144.879, "end": 150.879, "text": "Um, and that feeling is what this research is about and what we're trying to find out if we can avoid."}, {"id": "s39", "start": 150.879, "end": 153.44, "text": "So here's my promise for your next 18 minutes."}, {"id": "s40", "start": 153.44, "end": 159.12, "text": "Uh, I'm going to show you where that 200 number came from, whether it's still true, and what the real number is today."}, {"id": "s41", "start": 159.12, "end": 161.599, "text": "Uh, because it moved by an order of magnitude."}, {"id": "s42", "start": 161.599, "end": 166.239, "text": "Uh, and then we're going to talk about what that means for you to take away."}, {"id": "s43", "start": 166.239, "end": 174.72, "text": "uh how long your skills and prompts can actually be and what that should what changes you should make to your workflow as a result."}, {"id": "s44", "start": 174.72, "end": 176.879, "text": "So the 200 number isn't folklore."}, {"id": "s45", "start": 176.879, "end": 186.72, "text": "Uh it comes from a real benchmark called IFScale uh from a paper uh by this guy whose name I'm going to mess up Jeroslowitch uh and co-authors last year."}, {"id": "s46", "start": 186.72, "end": 189.599, "text": "And the test is beautifully simple."}, {"id": "s47", "start": 189.599, "end": 192.08, "text": "Uh here's how if scale works."}, {"id": "s48", "start": 192.08, "end": 204.239, "text": "If you ask the model to write a business report uh and you give it a list of specific words that it has to include exactly in the report, include the exact word customer, include the exact word revenue, and so on for as many words as you want."}, {"id": "s49", "start": 204.239, "end": 207.2, "text": "Each of those is an instruction that it has to follow."}, {"id": "s50", "start": 207.2, "end": 211.2, "text": "Uh and then you count how many of those exact words showed up."}, {"id": "s51", "start": 211.2, "end": 216.48, "text": "Um so because the test is so simple, you only have to keep two numbers in your head."}, {"id": "s52", "start": 216.48, "end": 221.2, "text": "One is density, which we call n. That is how many rules we're talking about at once."}, {"id": "s53", "start": 221.2, "end": 227.12, "text": "And the second is accuracy, which is the percentage of those rules uh that it was able to actually follow."}, {"id": "s54", "start": 227.12, "end": 235.28, "text": "Uh now you might say uh that including random words in a report is not the same as following real instructions and fair enough and we're going to talk about that."}, {"id": "s55", "start": 235.28, "end": 237.92000000000002, "text": "Um but the keywords are a proxy."}, {"id": "s56", "start": 237.92000000000002, "end": 243.04, "text": "Uh include the word revenue is the same shape of task as include a section on pricing, right?"}, {"id": "s57", "start": 243.04, "end": 244.239, "text": "Or never use this phrase."}, {"id": "s58", "start": 244.239, "end": 248.959, "text": "It is a discrete named constraint that you've told the agent that it has to follow."}, {"id": "s59", "start": 248.959, "end": 256.0, "text": "Um, if a model can't track 200 words in one prompt, it's definitely going to struggle with 200 more complicated instructions."}, {"id": "s60", "start": 256.0, "end": 260.32, "text": "Uh, so uh, if anything, it's going to do worse."}, {"id": "s61", "start": 260.32, "end": 261.919, "text": "So, this number is a ceiling."}, {"id": "s62", "start": 261.919, "end": 264.0, "text": "Uh, this number is as high as you can go."}, {"id": "s63", "start": 264.0, "end": 267.36, "text": "If you give it more complicated instructions, the number is probably going to get lower."}, {"id": "s64", "start": 267.36, "end": 270.16, "text": "And 200 is a really low ceiling."}, {"id": "s65", "start": 270.16, "end": 279.919, "text": "Um so before chasing new models you have to do good science which means that you have to replicate the uh old result and make sure uh that the 200 ceiling is real."}, {"id": "s66", "start": 279.919, "end": 282.0, "text": "So I reran the original benchmark."}, {"id": "s67", "start": 282.0, "end": 288.0, "text": "Um the original paper tested a whole batch of models uh and models uh live and die really fast."}, {"id": "s68", "start": 288.0, "end": 296.639, "text": "So uh by the time I got around to doing this testing only three of the models in the original set of 10 models that they used were still available via any kind of API."}, {"id": "s69", "start": 296.639, "end": 301.28, "text": "Uh so they were GPT 4.1, Claude Sonnet 4, and Gemini 2.5 Pro."}, {"id": "s70", "start": 301.28, "end": 305.199, "text": "Those were models that were available 12 months ago that are still available now."}, {"id": "s71", "start": 305.199, "end": 308.8, "text": "Um and that is why we tested those three because they were what was left."}, {"id": "s72", "start": 308.8, "end": 314.88, "text": "Um and since I first published this research a couple of weeks ago, uh one of those three models has been retired."}, {"id": "s73", "start": 314.88, "end": 318.0, "text": "So this was the last possible time that I could have run this test."}, {"id": "s74", "start": 318.0, "end": 320.88, "text": "Um so of that lineup, we're already down to two."}, {"id": "s75", "start": 320.88, "end": 322.96, "text": "So don't get attached to your models."}, {"id": "s76", "start": 322.96, "end": 327.199, "text": "Um here is the results that we got replicating the original if scale finding."}, {"id": "s77", "start": 327.199, "end": 329.84, "text": "Uh that is accuracy on the vertical axis."}, {"id": "s78", "start": 329.84, "end": 332.24, "text": "So it starts at 100% and begins to fall off."}, {"id": "s79", "start": 332.24, "end": 336.24, "text": "Uh and then the number of rules uh going up along the bottom on log scale."}, {"id": "s80", "start": 336.24, "end": 341.52, "text": "So every time it gets halfway across it has doubled uh the number of rules that it's dealing with."}, {"id": "s81", "start": 341.52, "end": 346.56, "text": "Um so by 500 rules you're losing 30 40 50% of them."}, {"id": "s82", "start": 346.56, "end": 350.479, "text": "Uh our curves matched the results in the original paper within the noise boundary."}, {"id": "s83", "start": 350.479, "end": 352.15999999999997, "text": "So the finding was real."}, {"id": "s84", "start": 352.15999999999997, "end": 357.84000000000003, "text": "uh a year ago somewhere around 200 to 300 rules frontier models started falling apart."}, {"id": "s85", "start": 357.84000000000003, "end": 360.0, "text": "That is a really low ceiling."}, {"id": "s86", "start": 360.0, "end": 370.16, "text": "Uh so that is our baseline and now comes the fun part where we took the exact same test and pointed it at the current frontier or rather what the current frontier was when I ran this test."}, {"id": "s87", "start": 370.16, "end": 376.96, "text": "So I ran GPT 5.5, Claude Opus 4.7 because 4.8 came out a week after I ran this test."}, {"id": "s88", "start": 376.96, "end": 380.319, "text": "Uh Gemini 3.1 Pro and Deepseek V4 Pro."}, {"id": "s89", "start": 380.319, "end": 383.44, "text": "So, I gave them the same prompt, the same words, the same everything."}, {"id": "s90", "start": 383.44, "end": 387.199, "text": "And I immediately ran into a problem, which is that they aced it."}, {"id": "s91", "start": 387.199, "end": 390.96, "text": "They all scored 100% immediately on this test."}, {"id": "s92", "start": 390.96, "end": 392.479, "text": "Absolutely no bugs."}, {"id": "s93", "start": 392.479, "end": 399.919, "text": "Uh, so we'd built a test to find the ceiling and the models had walked straight through the ceiling without noticing that the ceiling was there."}, {"id": "s94", "start": 399.919, "end": 403.919, "text": "Um, and that was a problem because the benchmark was written to top out at 500 words."}, {"id": "s95", "start": 403.919, "end": 407.28, "text": "So, I had to change the benchmark in order to be able to find the new ceiling."}, {"id": "s96", "start": 407.28, "end": 408.72, "text": "So, I moved the goalposts."}, {"id": "s97", "start": 408.72, "end": 410.4, "text": "I gave it more words to include."}, {"id": "s98", "start": 410.4, "end": 412.8, "text": "I doubled uh it from 500 to a,000."}, {"id": "s99", "start": 412.8, "end": 414.96, "text": "I doubled it again from a,000 to 2,000."}, {"id": "s100", "start": 414.96, "end": 418.0, "text": "And I kept doing that until I hit a 10,000word vocabulary."}, {"id": "s101", "start": 418.0, "end": 423.36, "text": "And that is where I began to find the ceiling of what models can do these days."}, {"id": "s102", "start": 423.36, "end": 426.56, "text": "Um, so let me put up the this is the money slide."}, {"id": "s103", "start": 426.56, "end": 427.919, "text": "This is the results."}, {"id": "s104", "start": 427.919, "end": 432.24, "text": "Remember log scale on the on the uh x-axis there."}, {"id": "s105", "start": 432.24, "end": 435.84, "text": "So it's going from 500 to 1,000 to 5,000 to 10,000."}, {"id": "s106", "start": 435.84, "end": 440.88, "text": "Uh so it looks like that scale is falling off of a cliff and it's actually happening over like a thousand numbers."}, {"id": "s107", "start": 440.88, "end": 446.56, "text": "Um but uh look how far to the right these new curves get before they bend."}, {"id": "s108", "start": 446.56, "end": 452.56, "text": "A year ago they were falling over at 200 to 300 instructions and now depending on the model the boundary is closer to 2,000."}, {"id": "s109", "start": 452.56, "end": 458.08, "text": "And for the best of them it is up to 5,000 instructions before they begin to fall off a cliff."}, {"id": "s110", "start": 458.08, "end": 464.639, "text": "So in about 12 months frontier models got close to 10 times better at following instructions simultaneously."}, {"id": "s111", "start": 464.639, "end": 469.039, "text": "That is the headline fighting and there is a lot of nuance that we need to get into."}, {"id": "s112", "start": 469.039, "end": 474.0, "text": "Um the capacity to track 2,000 named constraints in a single prompt is there."}, {"id": "s113", "start": 474.0, "end": 487.84, "text": "Um and that's really interesting because I think uh I don't know if everybody else feels this way but like it feel it felt to me like the the jump from you know GPT 5.1 to GPT 5.5 was kind of incremental, right?"}, {"id": "s114", "start": 487.84, "end": 490.16, "text": "It didn't feel like we'd got 10 times better."}, {"id": "s115", "start": 490.16, "end": 497.12, "text": "But this is a test that really matters to uh a very practical thing like how long can my skills file be?"}, {"id": "s116", "start": 497.12, "end": 500.72, "text": "Uh and in the course of a year we got 10 times better."}, {"id": "s117", "start": 500.72, "end": 505.199, "text": "Uh and that thing that gets me is that this benchmark is barely a a year old."}, {"id": "s118", "start": 505.199, "end": 507.599, "text": "A year later 500 is a rounding error."}, {"id": "s119", "start": 507.599, "end": 509.28, "text": "Uh and this keeps moving under my feet."}, {"id": "s120", "start": 509.28, "end": 513.919, "text": "I tested 4.7 uh opus 4.7. Opus 4.8 is even better."}, {"id": "s121", "start": 513.919, "end": 517.919, "text": "Um so this chart is a little out of date already which is kind of the whole point."}, {"id": "s122", "start": 517.919, "end": 529.92, "text": "If you set your engineering assumptions about how skills files should work, about how prompt how long your prompt can be, and you did that more than about six months ago, you are incorrect now, and you should probably be re-engineering"}, {"id": "s123", "start": 529.92, "end": 531.44, "text": "how you do stuff."}, {"id": "s124", "start": 531.44, "end": 540.8, "text": "Uh, but there is more to this story uh because the way that the a models failed uh changed dramatically."}, {"id": "s125", "start": 540.8, "end": 543.279, "text": "Uh, and the way that they failed is very important."}, {"id": "s126", "start": 543.279, "end": 548.16, "text": "This part was a completely unexpected finding when I started running the experiment."}, {"id": "s127", "start": 548.16, "end": 553.36, "text": "Uh, and it totally messed up my test to start with because uh, the old failure mode was boring."}, {"id": "s128", "start": 553.36, "end": 557.92, "text": "They would just forget instructions and I could measure how many instructions they had remembered or forgotten."}, {"id": "s129", "start": 557.92, "end": 563.36, "text": "Uh, but the new ones fall apart in their own weird extremely onbrand way."}, {"id": "s130", "start": 563.36, "end": 566.64, "text": "Uh, so let me introduce you to how these four models fail."}, {"id": "s131", "start": 566.64, "end": 569.44, "text": "Uh, Deepseek 4 is a traditional model."}, {"id": "s132", "start": 569.44, "end": 570.56, "text": "It just forgets things."}, {"id": "s133", "start": 570.56, "end": 572.399, "text": "It doesn't have any drama."}, {"id": "s134", "start": 572.399, "end": 578.64, "text": "um it starts forgetting instructions around 750 rules and by 2000 it's dropping nearly half of them."}, {"id": "s135", "start": 578.64, "end": 583.36, "text": "Uh so it just forgets which frankly is the failure mode that I trust most because it's predictable."}, {"id": "s136", "start": 583.36, "end": 584.72, "text": "It's very easy to measure."}, {"id": "s137", "start": 584.72, "end": 588.9590000000001, "text": "Uh and the other models were not nearly as cooperative."}, {"id": "s138", "start": 588.9590000000001, "end": 594.8, "text": "Uh Opus 4.7 uh would decide repeatedly that the test was dangerous."}, {"id": "s139", "start": 594.8, "end": 599.44, "text": "Uh and what it would do is it would refuse at the API level to complete the test."}, {"id": "s140", "start": 599.44, "end": 606.0, "text": "I didn't know that there was an API response that you could get from Claude where it was like, \"No, I could do this, but I'm not going to.\""}, {"id": "s141", "start": 606.0, "end": 612.08, "text": "Uh, but that's absolutely an API level response that Claude supports because they care so much about safety."}, {"id": "s142", "start": 612.08, "end": 615.12, "text": "Uh, and I started getting those all of the time."}, {"id": "s143", "start": 615.12, "end": 619.519, "text": "Uh, and the reason that was happening is because Claude has a very sensitive safety classifier."}, {"id": "s144", "start": 619.519, "end": 627.36, "text": "Uh, and if you put in certain combinations of words like say anthrax and cyanide, it decides that the whole request is dangerous and it bails out."}, {"id": "s145", "start": 627.36, "end": 635.6, "text": "Uh, and if you remember what my test does, my test is throwing uh 5 to 10,000 random words into uh into an instruction file."}, {"id": "s146", "start": 635.6, "end": 641.68, "text": "And so my my randomly selected words contained all sorts of things that looked dangerous in combination to the safety filter."}, {"id": "s147", "start": 641.68, "end": 645.76, "text": "And so it kept bailing saying that I was asking it to, you know, make a bomb or something."}, {"id": "s148", "start": 645.76, "end": 659.279, "text": "Um, so, uh, we had to for to get Claude to cooperate, I had to take all of my words and run them through OpenAI safety filter and filter out all of the naughty looking words so that it could get to anywhere."}, {"id": "s149", "start": 659.279, "end": 662.24, "text": "Once I given it that, Claude did really well."}, {"id": "s150", "start": 662.24, "end": 672.959, "text": "Uh so but the failure mode is that Claude is more likely to decide what you're doing is dangerous very early on uh at you know even two or 300 instructions if what you're doing"}, {"id": "s151", "start": 672.959, "end": 677.519, "text": "uh is you know contains anything to do with medical advice because medical things often are dual purpose."}, {"id": "s152", "start": 677.519, "end": 678.32, "text": "They can be dangerous."}, {"id": "s153", "start": 678.32, "end": 679.6, "text": "They can be safe."}, {"id": "s154", "start": 679.6, "end": 684.24, "text": "Um so uh the third failure mode was Gemini 3.1 Pro."}, {"id": "s155", "start": 684.24, "end": 688.16, "text": "Gemini is rock solid all the way out uh to 5,000 instructions."}, {"id": "s156", "start": 688.16, "end": 690.079, "text": "It does extremely well."}, {"id": "s157", "start": 690.079, "end": 692.24, "text": "um genuinely one of the best on the chart."}, {"id": "s158", "start": 692.24, "end": 694.56, "text": "Uh and then past that it gets weird."}, {"id": "s159", "start": 694.56, "end": 699.76, "text": "Um it doesn't forget the instructions, it gets overwhelmed by the instructions."}, {"id": "s160", "start": 699.76, "end": 706.72, "text": "What it tries to do is it uh it uses thinking tokens to make sure that it is following all of the instructions at once."}, {"id": "s161", "start": 706.72, "end": 710.72, "text": "And when the number of instructions gets really high, it uses all of its thinking tokens."}, {"id": "s162", "start": 710.72, "end": 713.2, "text": "It uses its entire token budget thinking."}, {"id": "s163", "start": 713.2, "end": 715.44, "text": "And then it doesn't give any output."}, {"id": "s164", "start": 715.44, "end": 726.72, "text": "It's it gets to like nine, you know, if you've given it 10,000 tokens worth, it'll get 9,500 tokens worth of thinking and then give you a 500word response which doesn't contain any of the tokens."}, {"id": "s165", "start": 726.72, "end": 736.48, "text": "Uh so it thinks itself into a corner and runs out of room to actually answer, which is very expensive, uh and totally unhelpful, which is kind of on brand, isn't it?"}, {"id": "s166", "start": 736.48, "end": 737.538, "text": "Um"}, {"id": "s167", "start": 737.538, "end": 738.079, "text": "[snorts]"}, {"id": "s168", "start": 738.079, "end": 741.76, "text": "uh which, you know, I would never say that out loud."}, {"id": "s169", "start": 741.76, "end": 748.48, "text": "Uh, and finally comes the winner, which is uh, GPT 5.5. GPT 5.5 is the best of the lot."}, {"id": "s170", "start": 748.48, "end": 751.8389999999999, "text": "99% accuracy all the way out to 5,000 rules."}, {"id": "s171", "start": 751.8389999999999, "end": 755.68, "text": "Um, but if you push it far enough, it is by far the weirdest of the bunch."}, {"id": "s172", "start": 755.68, "end": 757.68, "text": "Uh, because it doesn't refuse outright."}, {"id": "s173", "start": 757.68, "end": 759.04, "text": "It doesn't silently forget."}, {"id": "s174", "start": 759.04, "end": 764.48, "text": "Instead, what it does is it gets frustrated and tells you that the test is stupid."}, {"id": "s175", "start": 764.48, "end": 766.9590000000001, "text": "Uh, it starts the report."}, {"id": "s176", "start": 766.9590000000001, "end": 768.8, "text": "It gets a few like that's the thing."}, {"id": "s177", "start": 768.8, "end": 775.92, "text": "It doesn't start out just saying no. It starts the report, it starts writing the report, and like 500 words into the report, it's like, \"No, this is dumb."}, {"id": "s178", "start": 775.92, "end": 776.88, "text": "I'm not going to do this.\""}, {"id": "s179", "start": 776.88, "end": 778.72, "text": "And then it politely tells you, \"This is dumb."}, {"id": "s180", "start": 778.72, "end": 780.24, "text": "I'm not going to do this anymore.\""}, {"id": "s181", "start": 780.24, "end": 786.959, "text": "Uh, that is the actual response that it gave me, but that that was like 5,000 words into the into this business report that I told it to generate."}, {"id": "s182", "start": 786.959, "end": 790.639, "text": "Um, so it's not wrong, right?"}, {"id": "s183", "start": 790.639, "end": 797.36, "text": "I was asking for a coherent business report that on no particular subject that contains 5,000 random words."}, {"id": "s184", "start": 797.36, "end": 799.279, "text": "You're right, Gemini DPT."}, {"id": "s185", "start": 799.279, "end": 801.92, "text": "this is a a stupid thing to ask for."}, {"id": "s186", "start": 801.92, "end": 806.959, "text": "Um, which is a deeply unreasonable request and GPT called this out on it."}, {"id": "s187", "start": 806.959, "end": 817.04, "text": "Um, but it still counts as a failure in the test because the half-finish report that it gives you is missing most of the keywords and it is also the hardest one to detect because claude bails immediately."}, {"id": "s188", "start": 817.04, "end": 819.2, "text": "Claude says, \"No, I'm not going to do this.\""}, {"id": "s189", "start": 819.2, "end": 821.36, "text": "Uh, Deepseek does its best."}, {"id": "s190", "start": 821.36, "end": 830.16, "text": "Uh, but GPT does what looks like a good job unless you read all the way to the end of the report where it says, \"No, actually I'm going to bail because this is stupid.\""}, {"id": "s191", "start": 830.16, "end": 843.44, "text": "Um, so if you step back and look at the four together, Deep Sea quietly forgets, Claude gets scared and refuses, Gemini overthinks itself into silence, and GPT 5.5 finishes half of the job and tells you that the rest of it is beneath it."}, {"id": "s192", "start": 843.44, "end": 849.839, "text": "Um, and the point was the point isn't which one of these is funniest, although it is genuinely a little funny."}, {"id": "s193", "start": 849.839, "end": 854.88, "text": "Uh the point is that did it follow my instructions no longer has one failure mode."}, {"id": "s194", "start": 854.88, "end": 864.88, "text": "It has four different ways that it can fail and you can't recognize that failure unless you know which model you're dealing with and what its m what its pattern of failure is going to be."}, {"id": "s195", "start": 864.88, "end": 867.92, "text": "Uh so the models get 10 got 10x better."}, {"id": "s196", "start": 867.92, "end": 869.279, "text": "They fail in funny ways."}, {"id": "s197", "start": 869.279, "end": 872.0, "text": "Why should you care when you uh get back to your desk?"}, {"id": "s198", "start": 872.0, "end": 875.04, "text": "Because three things have changed to your workflow."}, {"id": "s199", "start": 875.04, "end": 880.48, "text": "The first is that a year ago, the smart move was to keep every skills file very very short."}, {"id": "s200", "start": 880.48, "end": 891.04, "text": "Uh under 200 instructions, then point off to subsklls and a whole like you know byzantine labyrinth of uh additional skills files and subfiles and things like that."}, {"id": "s201", "start": 891.04, "end": 898.079, "text": "Uh and you mo you were compressing your your instructions to fit into a very small available space and you don't need to do that anymore."}, {"id": "s202", "start": 898.079, "end": 900.32, "text": "Your skills files can be very long."}, {"id": "s203", "start": 900.32, "end": 907.92, "text": "Um, number two is that if your use case needs a 100 specific rules or 300, you can just put them all in the prompt."}, {"id": "s204", "start": 907.92, "end": 913.12, "text": "Uh, you don't have to lie awake wondering whether which ones the model silently ignored."}, {"id": "s205", "start": 913.12, "end": 921.36, "text": "Um, and if you've been thinking uh about uh your own lived experience of using models, uh you probably recognize this."}, {"id": "s206", "start": 921.36, "end": 930.8, "text": "you've discovered that you've got less worried about how long your your prompt is going to get uh because the models have genuinely got 10 times better at following your prompts."}, {"id": "s207", "start": 930.8, "end": 935.12, "text": "Um 2,000 named constraints is an entire style guide, right?"}, {"id": "s208", "start": 935.12, "end": 938.24, "text": "Like it's it's every brand rule, every legal disclaimer."}, {"id": "s209", "start": 938.24, "end": 947.12, "text": "Uh a year ago, you'd have had to shard that across a dozen specialized agents and hope that your specialized agents are hand are are handing off to each each other cleanly."}, {"id": "s210", "start": 947.12, "end": 948.88, "text": "But now you can ignore that."}, {"id": "s211", "start": 948.88, "end": 951.12, "text": "Um but the third thing is the big one."}, {"id": "s212", "start": 951.12, "end": 953.6, "text": "The question used to be can the model even do this?"}, {"id": "s213", "start": 953.6, "end": 955.8389999999999, "text": "And the answer is now firmly yes."}, {"id": "s214", "start": 955.8389999999999, "end": 957.68, "text": "Well reasonably firmly."}, {"id": "s215", "start": 957.68, "end": 966.56, "text": "Uh is it worth the cost is the new question because you can include 10,000 words of of sorry 10,000 different instructions into your prompt."}, {"id": "s216", "start": 966.56, "end": 968.16, "text": "But that is going to be an enormous prompt."}, {"id": "s217", "start": 968.16, "end": 969.6, "text": "It's going to be a very expensive prompt."}, {"id": "s218", "start": 969.6, "end": 971.199, "text": "It's going to be a very slow prompt."}, {"id": "s219", "start": 971.199, "end": 981.759, "text": "So what used to be a hard wall that you would run against has now become a soft trade-off of is it worth me adding all of these extra instructions if it's going to give me more cost and more latency."}, {"id": "s220", "start": 981.8389999999999, "end": 986.56, "text": "Uh and now some caveats uh to head off the Q&A."}, {"id": "s221", "start": 986.56, "end": 996.72, "text": "Um first and important first and most important I mentioned this earlier this is a proxy task including random words uh in a in a fake business report um is evidence"}, {"id": "s222", "start": 996.72, "end": 998.399, "text": "that long skills file works."}, {"id": "s223", "start": 998.399, "end": 1001.519, "text": "It is not the same as proof that a long skills file works."}, {"id": "s224", "start": 1001.519, "end": 1007.92, "text": "Um, also the models hit the wall at wildly different points anywhere from 750 to 9,000 plus."}, {"id": "s225", "start": 1007.92, "end": 1010.88, "text": "So you have to pick your model very carefully."}, {"id": "s226", "start": 1010.88, "end": 1018.56, "text": "Uh, what our test doesn't do is measure whether the model reasoned clearly over a giant prompt."}, {"id": "s227", "start": 1018.56, "end": 1024.88, "text": "So uh, the good news is since I did my research several weeks ago, uh, a whole bunch of people have piled in on this."}, {"id": "s228", "start": 1024.88, "end": 1037.28, "text": "Um and now there's good research uh actual scientists have got involved and done uh Chroma's has done context rot work uh across 18 models showing that accuracy on long inputs"}, {"id": "s229", "start": 1037.28, "end": 1041.76, "text": "can fall 30 to 50% well before you hit the context window limit."}, {"id": "s230", "start": 1041.76, "end": 1053.52, "text": "Uh and the weird part of their finding was that uh coherent well ststructured text is more likely to hit that failure mode uh than if you just put your instructions into a random order and shuffle them in."}, {"id": "s231", "start": 1053.52, "end": 1056.16, "text": "Uh, I don't know why that's the case."}, {"id": "s232", "start": 1056.16, "end": 1057.679, "text": "I'd have to read their report."}, {"id": "s233", "start": 1057.679, "end": 1067.039, "text": "Um, so the model can track 2,000, 5,000, possibly 10,000 instructions, but it's not necessarily going to uh reason clearly over them."}, {"id": "s234", "start": 1067.039, "end": 1074.48, "text": "It's not necessarily if those if those instructions conflict, if there is tension between them, it's not necessarily going to get that right."}, {"id": "s235", "start": 1074.48, "end": 1077.76, "text": "Um, and then there's the other one I mentioned briefly."}, {"id": "s236", "start": 1077.76, "end": 1081.039, "text": "Uh, collude's refusals are annoying, but they are loud."}, {"id": "s237", "start": 1081.039, "end": 1082.88, "text": "You get an error, you know it failed."}, {"id": "s238", "start": 1082.88, "end": 1087.919, "text": "Uh GPT's polite half-finish report is much more dangerous because it looks like a real answer."}, {"id": "s239", "start": 1087.919, "end": 1094.0, "text": "Uh you have to read the whole thing to notice that it gave up quietly halfway, which means that you can't trust the output."}, {"id": "s240", "start": 1094.0, "end": 1098.88, "text": "It means you have to read the output every single time to make sure whether or not it's working."}, {"id": "s241", "start": 1098.88, "end": 1108.32, "text": "Uh so the model will accept your 2,00 rules and it will hand you back something that looks at least to begin with confident and polished but could be bailing out halfway through."}, {"id": "s242", "start": 1108.32, "end": 1114.64, "text": "Um, so, uh, as an aside, people always ask me, \"How much did all this cost me?\""}, {"id": "s243", "start": 1114.64, "end": 1117.44, "text": "It cost me $29 to run all of these queries."}, {"id": "s244", "start": 1117.44, "end": 1123.84, "text": "2,37 2,300 calls across seven models, uh, came to $29."}, {"id": "s245", "start": 1123.84, "end": 1126.64, "text": "Uh, it turns out novel research doesn't cost very much."}, {"id": "s246", "start": 1126.64, "end": 1135.12, "text": "Um, and this is the part of the talk where I was saying that you have to check this stuff in production because you can't trust that your model isn't going to"}, {"id": "s247", "start": 1135.12, "end": 1136.4, "text": "silently fail."}, {"id": "s248", "start": 1136.4, "end": 1141.52, "text": "Uh, so you knew I was going to mention evals eventually because I work at Arise and this is where I do that."}, {"id": "s249", "start": 1141.52, "end": 1143.679, "text": "Um, but there are plenty of plugs for Arise."}, {"id": "s250", "start": 1143.679, "end": 1154.4, "text": "So I'm just going to say one true thing which is that if you are building a real AI application and you are giving it genuinely tricky tasks, you are going to run into one or more of these failure modes with a frontier model."}, {"id": "s251", "start": 1154.4, "end": 1163.52, "text": "Uh, and unless it's Claude telling you just to off at the API level, the only way to know that something went wrong is monitoring your outputs with another LLM."}, {"id": "s252", "start": 1163.52, "end": 1164.32, "text": "That is an eval."}, {"id": "s253", "start": 1164.32, "end": 1165.44, "text": "And that is what Arise does."}, {"id": "s254", "start": 1165.44, "end": 1167.6, "text": "And I'll leave it at that."}, {"id": "s255", "start": 1167.6, "end": 1171.12, "text": "Uh, I already mentioned that there's been new research since we did our own."}, {"id": "s256", "start": 1171.12, "end": 1172.16, "text": "Here's another important one."}, {"id": "s257", "start": 1172.16, "end": 1181.679, "text": "A paper landed testing 46 models called revisiting the reliability of language models in instruction falling, which you can bet made my ears perk up after I did that research myself."}, {"id": "s258", "start": 1181.679, "end": 1187.919, "text": "Uh, and they found something uncomfortable, which is that a model can ace a benchmark like ours and still be wildly unreliable."}, {"id": "s259", "start": 1187.919, "end": 1197.12, "text": "because if you reword the same instruction in a slightly different way, it can make a radical difference to how well uh it follows those instructions."}, {"id": "s260", "start": 1197.12, "end": 1200.64, "text": "So the model can follow 2,000 instructions and it can do it really well."}, {"id": "s261", "start": 1200.64, "end": 1209.2, "text": "But if you put the same instructions, the same 2,000 instructions in a different order, it can suddenly make the model much worse at following those instructions."}, {"id": "s262", "start": 1209.2, "end": 1212.16, "text": "And how ex how exactly to do that?"}, {"id": "s263", "start": 1212.16, "end": 1220.24, "text": "what is the correct order of instructions to give your model such that it follows them perfectly as opposed to getting confused is still research that is being done."}, {"id": "s264", "start": 1220.24, "end": 1224.799, "text": "So capacity went up but reliability is still a problem."}, {"id": "s265", "start": 1224.799, "end": 1230.96, "text": "Um and then this is just a little brag because uh I was happy about it like I'm not a scientist."}, {"id": "s266", "start": 1230.96, "end": 1236.88, "text": "I did some research and then a whole bunch of other actual scientists piled in uh and did real science on the same question."}, {"id": "s267", "start": 1236.88, "end": 1240.88, "text": "There's now a whole bunch of benchmarks that have shown up uh to measure this same question."}, {"id": "s268", "start": 1240.88, "end": 1244.799, "text": "Firebench, CCR bench, Guidebench uh are all trying to measure the same thing."}, {"id": "s269", "start": 1244.799, "end": 1249.039, "text": "How well models follow a lot of real messy constraints at once."}, {"id": "s270", "start": 1249.039, "end": 1251.039, "text": "Uh and now the whole field is looking at it."}, {"id": "s271", "start": 1251.039, "end": 1258.48, "text": "So if you want better science than my, you know, 10,000 random words, uh the real science exists now."}, {"id": "s272", "start": 1258.48, "end": 1260.72, "text": "Uh so that gets me to where I will leave you."}, {"id": "s273", "start": 1260.72, "end": 1265.52, "text": "A year ago, the hard part of writing a skill was fitting everything in without the model losing the plot."}, {"id": "s274", "start": 1265.52, "end": 1269.039, "text": "That was a compression problem, and the compression problem is gone."}, {"id": "s275", "start": 1269.039, "end": 1272.159, "text": "uh the model will hold your 2,000 instructions just fine."}, {"id": "s276", "start": 1272.159, "end": 1277.28, "text": "The new hard part is knowing whether it actually did what you said and that is a verification problem."}, {"id": "s277", "start": 1277.28, "end": 1280.72, "text": "Uh a verification problem doesn't get solved by writing a better prompt."}, {"id": "s278", "start": 1280.72, "end": 1287.12, "text": "It gets solved by checking the output every time uh the same way that you would test any other code, which is to say an eval."}, {"id": "s279", "start": 1287.12, "end": 1289.679, "text": "The ceiling moved by 10x in one year."}, {"id": "s280", "start": 1289.679, "end": 1298.08, "text": "Uh so go back and check the assumptions that you made six months ago about how big your prompts should be, how big your uh instructions can get."}, {"id": "s281", "start": 1298.08, "end": 1299.679, "text": "uh because they might already be wrong."}, {"id": "s282", "start": 1299.679, "end": 1300.08, "text": "Boom."}, {"id": "s283", "start": 1300.08, "end": 1301.6, "text": "Be wrong."}, {"id": "s284", "start": 1301.6, "end": 1302.72, "text": "So that is the talk."}, {"id": "s285", "start": 1302.72, "end": 1307.6, "text": "If you want uh all of the code and all of the data, uh it is at this GitHub URL."}, {"id": "s286", "start": 1307.6, "end": 1312.24, "text": "Uh and this other QR code is uh something marketing made me insert."}, {"id": "s287", "start": 1312.24, "end": 1316.799, "text": "We are having a World Cup watch party tonight at 5:00 p.m. Uh you can come to our party."}, {"id": "s288", "start": 1316.799, "end": 1321.36, "text": "That link is to the Luma that will get you into the get into get you into the party."}, {"id": "s289", "start": 1321.36, "end": 1326.24, "text": "Uh I hope this talk has given you some novel information or at least a couple of laughs."}, {"id": "s290", "start": 1326.24, "end": 1329.919, "text": "And thank you so much for your time and attention."}]}, {"id": "YXowceUKYJI", "title": "KV Cache-Aware Routing and P/D Disaggregation on Kubernetes — Yuchen Fama & Ashish Kamra, Red Hat", "channel": "AI Engineer", "duration": 1308, "upload_date": null, "url": "https://www.youtube.com/watch?v=YXowceUKYJI", "api": "/api/talks/YXowceUKYJI.json", "summary_url": "/#YXowceUKYJI", "transcript": {"html": "/transcripts/YXowceUKYJI.html", "txt": "/transcripts/YXowceUKYJI.txt", "vtt": "/transcripts/YXowceUKYJI.vtt"}, "sentences": [{"id": "s1", "start": 12.8, "end": 13.44, "text": "All right."}, {"id": "s2", "start": 13.44, "end": 17.52, "text": "Um, welcome everyone to yet another inference talk."}, {"id": "s3", "start": 17.52, "end": 20.4, "text": "I hope you have had a good conference so far."}, {"id": "s4", "start": 20.4, "end": 28.72, "text": "And u, so in this session, I mean I'm sure you people who have been in the room uh must have heard these terms many times by now."}, {"id": "s5", "start": 28.72, "end": 40.719, "text": "So we're going to do a little bit more deep dive into the challenges of LLM deployments for agentic workloads and uh in this session we'll focus specifically on KV cache away routing and"}, {"id": "s6", "start": 40.719, "end": 55.6, "text": "uh PD disagregation um and also you know when you when you look at public inference uh benchmark results you are typically looking at very steady state isolated highly sanitized numbers and what those benchmarks actually don't show you"}, {"id": "s7", "start": 55.6, "end": 64.879, "text": "u is the chaotic reality of multi-turn interactions, massive context fluctuations which are very typical of agentic workloads."}, {"id": "s8", "start": 64.879, "end": 69.36, "text": "So we'll also try to pull the curtain back on some of those complexities."}, {"id": "s9", "start": 69.36, "end": 73.52, "text": "Um by by way of introduction uh my name is Ashish Kamra."}, {"id": "s10", "start": 73.52, "end": 77.439, "text": "I'm a senior manager of performance engineering at Red Hat."}, {"id": "s11", "start": 77.439, "end": 78.32, "text": "And with me"}, {"id": "s12", "start": 78.32, "end": 79.36, "text": "hi I'm Yuch Chen."}, {"id": "s13", "start": 79.36, "end": 85.03999999999999, "text": "I'm the product manager at Red Hat Inference working closely with VLM and AMD core maintainers."}, {"id": "s14", "start": 85.03999999999999, "end": 87.92, "text": "also a contributor myself."}, {"id": "s15", "start": 88.88, "end": 91.92, "text": "So here is the agenda for the next 20 minutes or so."}, {"id": "s16", "start": 91.92, "end": 101.03999999999999, "text": "Um Euchen will start with an analysis of inference behavior in the agentic era and some of the core characteristics and challenges."}, {"id": "s17", "start": 101.03999999999999, "end": 108.72, "text": "Uh next we next you will walk us through the KV cache um utilization and management strategies."}, {"id": "s18", "start": 108.72, "end": 121.04, "text": "I will break down the mechanics of pre-fill decode disagregation and walk you through some some results and then Euchen will again bring it all back together with our ongoing case study on our favorite"}, {"id": "s19", "start": 121.04, "end": 132.239, "text": "open coding model GLM 5.2. Um and just a couple of uh sources from our side if you are more interested in learning more about open source inference we have a free course"}, {"id": "s20", "start": 132.239, "end": 137.12, "text": "free course on deep learning.ai AI uh by Cedric and with Andrew Ning."}, {"id": "s21", "start": 137.12, "end": 147.04, "text": "Um and the other is a series of blogs on the Red Hat developer portal on distributed inference concepts uh troubleshooting and deployment patterns."}, {"id": "s22", "start": 147.68, "end": 159.12, "text": "Uh and for those who may not be aware since Red Hat is better known as the Linux company for enterprise Linux and uh the Kubernetes company for Open Shift"}, {"id": "s23", "start": 159.12, "end": 171.12, "text": "uh but more recently we are also a major player in open source AI inference with uh us being the top contributor in VLM LLMD and the case of projects and also"}, {"id": "s24", "start": 171.12, "end": 186.879, "text": "uh having incubated guide LLM for benchmarking LLM compressor for model quantization and speculators for uh speculative uh decoding models and we also bring it bring all of that together in a"}, {"id": "s25", "start": 186.879, "end": 192.8, "text": "optimized model hub on hugging phase under the Red Hat AI arc."}, {"id": "s26", "start": 192.8, "end": 203.599, "text": "Um and we are also building the platform for the next wave of agentic inference workloads and with that I will hand over to you to uh walk you through more of it."}, {"id": "s27", "start": 205.04, "end": 213.519, "text": "So we are currently um at this inflection point moving from the era of classic inference to the agentic era."}, {"id": "s28", "start": 213.519, "end": 227.68, "text": "So when we look at the real world agentic work workloads such as uh sweet bench and also watrices from real world cloud code sessions they fundamentally break many assumptions we made with classic LM serving."}, {"id": "s29", "start": 227.68, "end": 241.439, "text": "uh as you heard actually many times in previous sessions for example multi-turns and new standard we found from a few turns all the way to 3,000 turns and also because agent frequently reuse the uh system prompt and the total definitions"}, {"id": "s30", "start": 241.439, "end": 247.36, "text": "we usually see super high cash hit rate um oftentimes well exceeding 90%."}, {"id": "s31", "start": 247.36, "end": 260.4, "text": "Uh another thing is input output ratio is uh is massive oftentimes over a 100 ratio and even higher and in many cases and on top of that the context management is is incredibly"}, {"id": "s32", "start": 260.4, "end": 272.56, "text": "complex due to this high variance because we can't just simply take the average and oftentimes we need to look at the distributions and the P90 numbers especially when you do uh capacity planning"}, {"id": "s33", "start": 272.56, "end": 281.04, "text": "and also we observe really interesting patterns like sub Asian panel which is which further complex uh complicates scheduling."}, {"id": "s34", "start": 281.04, "end": 293.919, "text": "So to help communities study um this patterns we collaborate with Google thank you and also IBM our parent company to add uh a a trace replay tool in the inference perf you heard from earlier sessions"}, {"id": "s35", "start": 293.919, "end": 295.759, "text": "u from Ashoken and Jason."}, {"id": "s36", "start": 295.759, "end": 300.4, "text": "Um so yeah feel free to check it out and the link is here."}, {"id": "s37", "start": 301.68, "end": 303.04, "text": "Uh next slide."}, {"id": "s38", "start": 303.04, "end": 308.96, "text": "Oh, so transition from the class uh the characteristics um we just saw for agentic workloads."}, {"id": "s39", "start": 308.96, "end": 313.919, "text": "We're no longer chasing this um this this raw throughput in a steady state."}, {"id": "s40", "start": 313.919, "end": 325.84, "text": "We often need to optimize uh for example interactive latency and they're very um highly volatile and client-driven context because user and you know client define the prompt structure."}, {"id": "s41", "start": 325.84, "end": 328.479, "text": "So this introduced several critical challenges."}, {"id": "s42", "start": 328.479, "end": 334.8, "text": "First of all, KV cache management becomes super volatile because the context is client determined as I said."}, {"id": "s43", "start": 334.8, "end": 347.6, "text": "So oftentimes we face this like you know frequent evictions and rewrites and secondly we also need to tune um the engine like VM with upper layer uh scheduling and routing."}, {"id": "s44", "start": 347.6, "end": 357.759, "text": "It needs that coordination such as prefix routing especially when latency becomes a primary uh scheduling matrix rather than like a secondary or afterthought."}, {"id": "s45", "start": 357.759, "end": 360.32, "text": "And thirdly, we also need to rethink our metrics."}, {"id": "s46", "start": 360.32, "end": 363.52, "text": "For example, we need to measure cats throughput separately."}, {"id": "s47", "start": 363.52, "end": 363.919, "text": "Why?"}, {"id": "s48", "start": 363.919, "end": 368.0, "text": "Because on the right, it's really clear that economic stakes is very high."}, {"id": "s49", "start": 368.0, "end": 370.639, "text": "So, this is the uh anthropic API pricing."}, {"id": "s50", "start": 370.639, "end": 372.639, "text": "You also heard from earlier sessions."}, {"id": "s51", "start": 372.639, "end": 376.4, "text": "There's 10x cost difference between cash and non-cash tokens."}, {"id": "s52", "start": 376.4, "end": 383.44, "text": "So, 10x difference on your um token balance sheet is is pretty serious impact on your business."}, {"id": "s53", "start": 383.44, "end": 389.36, "text": "So next let's let's look at how the KV cache is um both utilized and managed in LMD."}, {"id": "s54", "start": 389.36, "end": 400.24, "text": "So LMD router has this really flexible um endpoint picker plugins we call the EP that can route the request to the optimal pods and that meet the KV cache locality"}, {"id": "s55", "start": 400.24, "end": 402.56, "text": "and also the load criteria."}, {"id": "s56", "start": 402.56, "end": 412.96, "text": "So the EP continue probe each pods like VM pod matrix to score each pod on like the running for example running and waiting request and then the KV cache utilization"}, {"id": "s57", "start": 412.96, "end": 423.44, "text": "also prefix uh cache availability and so we can schedule requests to the optimal pod with the lowest load and also highest possibility to um to of a cache hit."}, {"id": "s58", "start": 423.44, "end": 430.4, "text": "So um going down from to the KV cache management layer actually you also heard from earlier session right before this."}, {"id": "s59", "start": 430.4, "end": 442.16, "text": "So for agentic sessions when you have u hot warm and cold cache our current effort focus on for example um more offloading tiers like NVME SSD and also uh file system XF"}, {"id": "s60", "start": 442.16, "end": 457.12, "text": "along with KV ccentric store um like uh moon cake and also implementing smarter and session a wire eviction policies such as priority and also session pinning to uh ensure this uh really important you know the the context persists"}, {"id": "s61", "start": 457.12, "end": 460.72, "text": "exactly when and where it's needed."}, {"id": "s62", "start": 461.52, "end": 464.8, "text": "So, I'm gonna play this um video really quick."}, {"id": "s63", "start": 464.8, "end": 466.88, "text": "Uh it's a it's a short demo."}, {"id": "s64", "start": 466.88, "end": 468.4, "text": "Stand here so you can look at it."}, {"id": "s65", "start": 468.4, "end": 470.4, "text": "Okay."}, {"id": "s66", "start": 472.0, "end": 475.12, "text": "So, okay."}, {"id": "s67", "start": 475.12, "end": 477.919, "text": "So, this is a example of a KV cache bar routing."}, {"id": "s68", "start": 477.919, "end": 484.24, "text": "As you see, when we send the very first request and it populate the KV cache, it takes roughly 3 seconds."}, {"id": "s69", "start": 484.24, "end": 491.68, "text": "And when we actually look at where it's you know the KV cache uh is going there's no KV cache hit because it's the very first turn."}, {"id": "s70", "start": 491.68, "end": 500.16, "text": "And then when we have the second turn the request actually reuse a KV cache because as you see the system prompt is the same and this time takes about one seconds."}, {"id": "s71", "start": 500.16, "end": 505.84, "text": "And then when you actually look at the uh pod address exactly the same because we define the KV cache."}, {"id": "s72", "start": 505.84, "end": 509.36, "text": "Now going to the third turn a new request with different system prompt."}, {"id": "s73", "start": 509.36, "end": 520.0, "text": "Now it takes about three uh seconds and as you see you know right now and we don't find any KV cache here because you can tell it's different pod address"}, {"id": "s74", "start": 520.0, "end": 530.88, "text": "and then if you just change the user prompt and keep the same system prompt and the next turn you you reuse the KB cache and in this in this time it takes roughly about uh one second."}, {"id": "s75", "start": 530.88, "end": 531.12, "text": "Yeah."}, {"id": "s76", "start": 531.12, "end": 538.88, "text": "So it's a pretty intuitive demo and um I'll turn it to Ashish to talk about the next side but before that what does problem does it solve?"}, {"id": "s77", "start": 538.88, "end": 553.44, "text": "So often times the prefix routing KB cache routing helps you solve the TTFD problem and of course you'll improve your lat uh your your throughput but oftentimes for agentic workload is not just a TTFT your throughput is about your inter token latency"}, {"id": "s78", "start": 553.44, "end": 565.8389999999999, "text": "how do we solve that so preview decode disagregation is a really uh powerful technique but there are times there work at times it doesn't work so I'll turn it to Ashish to give you a preview of um of the PD"}, {"id": "s79", "start": 565.8389999999999, "end": 573.519, "text": "uh disregation So before we dive into PD, let's just uh look at what LLMD is."}, {"id": "s80", "start": 573.519, "end": 579.92, "text": "So LLMD is a high performance Kubernetes native and actually now works on non-cubernetes environments as well."}, {"id": "s81", "start": 579.92, "end": 584.9590000000001, "text": "Distributed LM LLM inference framework hosted under the CNCF umbrella."}, {"id": "s82", "start": 584.9590000000001, "end": 592.32, "text": "LLMD provides a unified intelligent control plane designed specifically for agentic era of inference workloads."}, {"id": "s83", "start": 592.32, "end": 597.279, "text": "Well, Euchin already talked about the router and the EP at the top of the slide."}, {"id": "s84", "start": 597.279, "end": 613.2, "text": "Um, the other aspects are workload APIs such as leader worker set and disagregated set that orchestrates complex multi- multi-node model execution and then autoscalers that monitors capacity bounds and real-time traffic mixes"}, {"id": "s85", "start": 613.2, "end": 619.04, "text": "to independently scale up and scale down uh your pods depending on the system load."}, {"id": "s86", "start": 619.04, "end": 623.279, "text": "So now look now let's look at uh prefill decode disagregation in detail."}, {"id": "s87", "start": 623.279, "end": 629.68, "text": "Um uh okay so why does PD exist in the first place?"}, {"id": "s88", "start": 629.68, "end": 637.68, "text": "So one of the most powerful patterns implemented by LLMD is prefill decode disagregation and you must have heard from some of the previous talks as well."}, {"id": "s89", "start": 637.68, "end": 649.12, "text": "So what happens is in in a nonPD situation in aggregated serving one pod is responsible for optimizing both your time to first token and your inter token latencies."}, {"id": "s90", "start": 649.12, "end": 654.399, "text": "Uh but in PD prefill and decode become independently scalable inference pods."}, {"id": "s91", "start": 654.399, "end": 660.48, "text": "But to understand why we actually need this we have to look at the physics of LLM execution."}, {"id": "s92", "start": 660.48, "end": 667.68, "text": "colloccating uh both prefill and decode tasks on the same GPU creates something called as phase interference."}, {"id": "s93", "start": 667.68, "end": 672.8, "text": "Prefill phase is the phase that creates the KV caches for your initial prompt."}, {"id": "s94", "start": 672.8, "end": 674.88, "text": "It wants high compute."}, {"id": "s95", "start": 674.88, "end": 687.12, "text": "It's highly bursty uh utilizes GPUs at uh high flops and and thrives on large batch parallelism to process the prompts and builds the initial KV cache."}, {"id": "s96", "start": 687.12, "end": 693.68, "text": "The decode phase on the other hand is generating one token at a time and it's more me memory bandwidth hungry."}, {"id": "s97", "start": 693.68, "end": 698.88, "text": "It's highly latency sensitive and requires high heavy cache residency."}, {"id": "s98", "start": 698.88, "end": 710.399, "text": "So in a in a in a traditional aggregated pod if you if there's a sudden influx of a long prefilled palm, it will completely stall the ongoing decode token generation process"}, {"id": "s99", "start": 710.399, "end": 716.0, "text": "causing massive problems and jitter in user streaming latency."}, {"id": "s100", "start": 716.56, "end": 720.399, "text": "So, so how does PD actually work in practice in LMD?"}, {"id": "s101", "start": 720.399, "end": 725.6, "text": "So, LNMD uses um uh you know like okay, we'll start with step one."}, {"id": "s102", "start": 725.6, "end": 738.399, "text": "A incoming request hits the gateway router which dynamically evaluates cluster states using something known as the endpoint picker you talked about and schedules the request to use PD disagregation"}, {"id": "s103", "start": 738.399, "end": 741.279, "text": "selecting the optimal prefill and decode workers."}, {"id": "s104", "start": 741.279, "end": 745.92, "text": "The router then coordinates the transaction directly with the designated pre-fill worker."}, {"id": "s105", "start": 745.92, "end": 754.72, "text": "The pre-fill worker processes the prompt, construct the initial KV cache of the prompt and outputs the standard KV transfer metadata."}, {"id": "s106", "start": 754.72, "end": 769.68, "text": "Um, and the target decode worker actually pulls the computed KV caches um, uh, across the network fab fabric utilizing uh, the KV transfer metadata that the uh, uh, prefill pod had generated."}, {"id": "s107", "start": 769.68, "end": 782.56, "text": "Um okay so with that yes that's kind of how uh PD is implemented in practice in LMD and next I would like to show you some uh experimental results on where PD actually shines."}, {"id": "s108", "start": 782.56, "end": 799.6, "text": "So in this graph you can see that um uh in in in the standard aggregated deployment which is the top red line uh the P99 ITL uh hovers roughly around 900 milliseconds and you can you can see some fluctuations"}, {"id": "s109", "start": 799.6, "end": 814.88, "text": "um up and down and but the the bottom blue line is the P99 uh inter token latency on a PD deployment and you can see that it's drastically almost nine times better at 100 millconds and it's also much smoother"}, {"id": "s110", "start": 814.88, "end": 824.0, "text": "uh than the aggregated serving and uh this is some of our own internal results at Red Hat."}, {"id": "s111", "start": 824.0, "end": 844.32, "text": "So for a GPOSS 12B model uh 16 H100s uh the aggregated config is four replicas tensor parallelism 4 and the disagregated is two prefilled 2D code all with tensor parallelism 4. It's a highly multi-turn workload with a 10,000 token prefix and 128 tokens"}, {"id": "s112", "start": 844.32, "end": 847.04, "text": "for every turn every turn."}, {"id": "s113", "start": 847.04, "end": 857.8389999999999, "text": "So, so this is a great chart like you can see at the bottom most line is a standard aggregated config that's uh is doing the default Kubernetes scheduling and uh and it's aggregated."}, {"id": "s114", "start": 857.8389999999999, "end": 873.199, "text": "So that's kind of our baseline and then the middle blue line is still aggregated but with the LLMD uh KV cache aware routing and you can almost see the gains just just based on the routing and the red line is actually the PD"}, {"id": "s115", "start": 873.199, "end": 883.44, "text": "uh the pre-fill decode config with two pre-fill and two decode workers and you can actually see that like it's very similar to the aggregated config at the lower concurrency regimes"}, {"id": "s116", "start": 883.44, "end": 902.32, "text": "and uh even and and very similar at the higher concurrency regimes but it's actually the middle part of the concurrency regime that PD actually shines and and these are some of the the classic parita curves that we see when you actually do PD and uh aggregated side by side."}, {"id": "s117", "start": 902.32, "end": 917.68, "text": "So these results are again from the GPTOSS 12B model 64 H100s aggregated is eight replicas TP8 and this a is uh three prefilled 5D code again TP8 and a pre-filled heavy workload with like 5,000"}, {"id": "s118", "start": 917.68, "end": 928.48, "text": "average input sequence length and 500 output sequence length and you can actually see the blue line is the the PD curve and the red line is the aggregated curve and the PD curve kind of dominates"}, {"id": "s119", "start": 928.48, "end": 934.9590000000001, "text": "um uh the aggregate curve across the entire interactivity spectrum."}, {"id": "s120", "start": 937.04, "end": 942.0, "text": "Okay, but I don't want to leave you guys that PD is the answer to everything and it's a magic bullet."}, {"id": "s121", "start": 942.0, "end": 947.6, "text": "But um it's uh it's essentially a separation phase separation trade-off and not a magic bullet."}, {"id": "s122", "start": 947.6, "end": 953.92, "text": "So we created this uh matrix to help you decide when PD might be uh good for you."}, {"id": "s123", "start": 953.92, "end": 967.36, "text": "So if you're managing long context uh with high ISL OSL ratios and you if you have a large model that you're serving that can that you can apply rich model parallelism techniques"}, {"id": "s124", "start": 967.36, "end": 982.56, "text": "um you're facing that middle concurrency regime uh that I I showed you in the previous graphs and and the very important part is that if you want uh strict ITL streaming requirements like you want the you want the token generation to be uh much more smooth"}, {"id": "s125", "start": 982.56, "end": 990.24, "text": "um then you want to consider PD but we also saw that it requires transfer of KV caches from your pre-filled workers to your decode workers."}, {"id": "s126", "start": 990.24, "end": 998.9590000000001, "text": "So you must pro process an advanced uh high-sp speeded network fabric like uh RDMMA or rocky to support that KV cache transfer."}, {"id": "s127", "start": 998.9590000000001, "end": 1013.12, "text": "And if you do not have such requirements, short moderate context, any model size, low concurrency regimes or uh if you have strict TTF requirements because you can actually tune them on an aggregate serving"}, {"id": "s128", "start": 1013.12, "end": 1018.399, "text": "um and you the biggest point is like if you don't have the network fabric to support those KV cache transfers."}, {"id": "s129", "start": 1018.399, "end": 1021.8389999999999, "text": "So you might actually just want to stick with aggregated."}, {"id": "s130", "start": 1022.48, "end": 1024.48, "text": "So here is my key takeaway from all of this."}, {"id": "s131", "start": 1024.48, "end": 1034.48, "text": "So architecting this complex platform requires balancing a lot of u knobs and a highly multi-dimensional design space all of which is supported in LLMD."}, {"id": "s132", "start": 1034.48, "end": 1047.52, "text": "As you saw the scheduler must support or constantly evaluate SLO targets uh QEPs KV cache locality metrics PD ratios and network topologies to be able to route the request to the optimal"}, {"id": "s133", "start": 1047.52, "end": 1048.16, "text": "FOD."}, {"id": "s134", "start": 1048.16, "end": 1060.0, "text": "While in while the PD design space you you need dynamic PD rate matching to adapt to PD ratios because you know you can start with a static PD ratio but it needs to evolve with the autoscaler"}, {"id": "s135", "start": 1060.0, "end": 1076.08, "text": "as the traffic changes um and you need uh yeah autoscaling to scale PD pools independently um and constantly tweaking model parallelism techniques like tensor parallelism data parallelism uh to meet your SLOs's."}, {"id": "s136", "start": 1076.08, "end": 1088.08, "text": "So um I think with these uh I will hand it over to Euchen to anchor some of the concepts that we showed with the real world case study of serving the GLM 5.2 model"}, {"id": "s137", "start": 1088.08, "end": 1091.52, "text": "uh which is uh still ongoing as we speak."}, {"id": "s138", "start": 1091.52, "end": 1092.64, "text": "Yeah, still ongoing."}, {"id": "s139", "start": 1092.64, "end": 1102.96, "text": "You probably have seen tons of uh impressive numbers of GLM 5.2 on B200 when we talk to our customers and they usually don't have you know the luxury of B200."}, {"id": "s140", "start": 1102.96, "end": 1104.48, "text": "They have a lot of H200."}, {"id": "s141", "start": 1104.48, "end": 1112.559, "text": "So we have to figure out how to like put all the knobs together and make GM 5.2 work really well for cluster of of H200."}, {"id": "s142", "start": 1112.559, "end": 1115.12, "text": "So uh we let's anchor all the concept together."}, {"id": "s143", "start": 1115.12, "end": 1120.16, "text": "Um we went through for example the uh KV cache routing PD disagregation."}, {"id": "s144", "start": 1120.16, "end": 1134.16, "text": "We kind of call them a wildl path in LMD and also we combine with different parallelism strategies to so we can uh independently uh scale prefuel paths because for agentic workload is super uh long you know like heavy prefill."}, {"id": "s145", "start": 1134.16, "end": 1147.36, "text": "So uh in this case we designed the prefuel pool using up to three workers optimized for uh high throughput uh with deep and then for decoup we use uh one dedicated worker and um that's optimized for for low latency."}, {"id": "s146", "start": 1147.36, "end": 1158.4, "text": "So we use Nixo for efficient KV transfer between the pools and also with the each worker we have the leader worker set group uh with TP1 DP8 and also uh EP8"}, {"id": "s147", "start": 1158.4, "end": 1169.919, "text": "uh expert parallelism 8. So the architecture is just highly modular because you can uh actually scale the throughput by simply adding uh preview workers without reconfiguring and um the decoup."}, {"id": "s148", "start": 1169.919, "end": 1178.08, "text": "So uh this highlights how AMD effectly effectively managed the complexity of combining like PB and DB and EPI scale."}, {"id": "s149", "start": 1178.08, "end": 1182.0, "text": "And also we found some interesting fun fact actually a couple days ago."}, {"id": "s150", "start": 1182.0, "end": 1184.32, "text": "Um B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Bf6 uh BF16"}, {"id": "s151", "start": 1184.32, "end": 1190.0, "text": "KV cache actually is faster than using like FPA uh KV cache for longer preview."}, {"id": "s152", "start": 1190.0, "end": 1198.559, "text": "Um this is also like we continue to explore and found like more interesting patterns, but more importantly uh we want to kind of just show the result really quick."}, {"id": "s153", "start": 1198.559, "end": 1210.4, "text": "So um for this uh data set agentic workload data set the ISO OSL ratio is pretty high 45 to1 ratio preview is uh is really the constraint you can tell um with 2P even 1D"}, {"id": "s154", "start": 1210.4, "end": 1222.16, "text": "we have um 4x passer TDFT and also 60 uh% more requests and this is continuous like work in progress so the next step is we need to also put the upper layer"}, {"id": "s155", "start": 1222.16, "end": 1228.96, "text": "lower TTFT and also adding more more preview replicas so um I know we're running out of time really quick."}, {"id": "s156", "start": 1228.96, "end": 1243.52, "text": "Uh we um the fundamental shift for agentic workload we're continuing to uh have this um uh agentic north uh northstar uh with session graph orchestration program award scheduling uh state reuse life cycle and also"}, {"id": "s157", "start": 1243.52, "end": 1246.88, "text": "the uh agentic benchmark um we're working on."}, {"id": "s158", "start": 1246.88, "end": 1257.919, "text": "So you can find them uh in AMD upstream AMD and also you know feel free to join the SIG group and uh and contribute and um this is the very last slide."}, {"id": "s159", "start": 1257.919, "end": 1263.36, "text": "So distri distributed inference is not challenge uh every single comp a single company can solve along."}, {"id": "s160", "start": 1263.36, "end": 1276.0, "text": "We're proud to be uh building this uh future in the open alongside our incredible ecosystem collaborators uh core wave Google IBM Nvidia growing list of launch partners and industry adopters."}, {"id": "s161", "start": 1276.0, "end": 1280.64, "text": "So if you're passionate about the future of opensource inference, we invite you to join us."}, {"id": "s162", "start": 1280.64, "end": 1282.08, "text": "We do have a booth downstairs."}, {"id": "s163", "start": 1282.08, "end": 1284.48, "text": "Feel free to stop by, ask us any questions."}, {"id": "s164", "start": 1284.48, "end": 1287.744, "text": "And uh thank you so much for your time."}, {"id": "s165", "start": 1287.744, "end": 1289.744, "text": "[applause]"}, {"id": "s166", "start": 1304.774, "end": 1306.774, "text": "[music]"}]}, {"id": "YkNulwcc5jk", "title": "ACP: The Universal Remote Control for AI Agents — Alex Hancock, Block", "channel": "AI Engineer", "duration": 661, "upload_date": null, "url": "https://www.youtube.com/watch?v=YkNulwcc5jk", "api": "/api/talks/YkNulwcc5jk.json", "summary_url": "/#YkNulwcc5jk", "transcript": {"html": "/transcripts/YkNulwcc5jk.html", "txt": "/transcripts/YkNulwcc5jk.txt", "vtt": "/transcripts/YkNulwcc5jk.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.68, "end": 13.88, "text": "Hey everybody."}, {"id": "s3", "start": 13.88, "end": 16.32, "text": "Um my name's Alex Hancock."}, {"id": "s4", "start": 16.32, "end": 19.36, "text": "Today I'm going to talk about a universal remote control for AI."}, {"id": "s5", "start": 19.36, "end": 25.88, "text": "And before I start, I just want to say the previous speaker said that MCP client maintainers haven't implemented support for tasks because they're smart."}, {"id": "s6", "start": 25.88, "end": 27.28, "text": "I'm an MCP client maintainer."}, {"id": "s7", "start": 27.28, "end": 29.24, "text": "I can tell you it's just because I'm lazy."}, {"id": "s8", "start": 29.24, "end": 30.96, "text": "I haven't done it."}, {"id": "s9", "start": 30.96, "end": 33.36, "text": "Um Okay."}, {"id": "s10", "start": 33.36, "end": 35.08, "text": "So, a little bit about me before we start."}, {"id": "s11", "start": 35.08, "end": 40.88, "text": "I am a software engineer at Block, which is the parent company of Cash App and Square and Title."}, {"id": "s12", "start": 40.88, "end": 42.88, "text": "We have a few different things going on now."}, {"id": "s13", "start": 42.88, "end": 44.68, "text": "Um and I've worked there for a long time."}, {"id": "s14", "start": 44.68, "end": 49.92, "text": "I worked on Square product stuff and Cash App stuff, but I've been doing open source AI for the last couple years."}, {"id": "s15", "start": 49.92, "end": 57.2, "text": "Specifically, I work on this open source harness project called Goose, which started as an internal project at Block."}, {"id": "s16", "start": 57.2, "end": 58.88, "text": "Yeah, some Goose fans out there."}, {"id": "s17", "start": 58.88, "end": 63.32, "text": "And then uh yeah, we open sourced it and we donated it to the Linux Foundation."}, {"id": "s18", "start": 63.32, "end": 67.76, "text": "So, now the IP is there, but we still lots of us from Block still work on it."}, {"id": "s19", "start": 67.76, "end": 72.08, "text": "Um I'm also a maintainer of MCP, the Model Context Protocol."}, {"id": "s20", "start": 72.08, "end": 74.8, "text": "I work on the Rust SDK for that project."}, {"id": "s21", "start": 74.8, "end": 83.08, "text": "And more recently, I've also started some work on ACP, the Agent Client Protocol, which is what I'm going to talk about today."}, {"id": "s22", "start": 83.08, "end": 90.72, "text": "So, I think I think we have an issue with harnesses that I want to I want to try to put to you all today, uh propose to you all today"}, {"id": "s23", "start": 90.72, "end": 94.44, "text": "as a problem and then and then recommend a a solution."}, {"id": "s24", "start": 94.44, "end": 99.8, "text": "So, what I've been noticing recently is that we've got lots of great harnesses out there, right?"}, {"id": "s25", "start": 99.8, "end": 105.75999999999999, "text": "There are ones from the labs, there are one from ones from different companies, there's lots of open standards-based ones."}, {"id": "s26", "start": 105.75999999999999, "end": 111.0, "text": "Um but I noticed that the interface to them is often custom or bespoke."}, {"id": "s27", "start": 111.0, "end": 119.16, "text": "And in in the worst case, it's like you might have some harnesses where there's literally only one client application you can use to control that harness, right?"}, {"id": "s28", "start": 119.16, "end": 127.36, "text": "And I think this has a couple issues with it, but the analogy that I'll make with the web is it would be like if you had to use one browser"}, {"id": "s29", "start": 127.36, "end": 132.4, "text": "or a one given protocol to connect to a to every website, right?"}, {"id": "s30", "start": 132.4, "end": 133.2, "text": "That just wouldn't work."}, {"id": "s31", "start": 133.2, "end": 138.28, "text": "You wouldn't have something like the open web if if that were the reality with browsers."}, {"id": "s32", "start": 138.28, "end": 140.72, "text": "And so I think we can do better."}, {"id": "s33", "start": 140.72, "end": 147.8, "text": "And the thing about standards by finding a standard and the thing about standards is that they create ecosystems and markets."}, {"id": "s34", "start": 147.8, "end": 156.28, "text": "And I would argue that in the agentic AI space, we have a good standard for the agent going out and doing things, right?"}, {"id": "s35", "start": 156.28, "end": 160.68, "text": "Calling tools, taking actions in other systems, reading resources, reading data."}, {"id": "s36", "start": 160.68, "end": 164.72, "text": "We've all benefited as a community from having MCP."}, {"id": "s37", "start": 164.72, "end": 164.92000000000002, "text": "Right?"}, {"id": "s38", "start": 164.92000000000002, "end": 172.52, "text": "And the most powerful thing about MCP is not anything about MCP itself, but it's that everyone uses MCP."}, {"id": "s39", "start": 172.52, "end": 182.4, "text": "And that's why we have, you know, thousands or tens of thousands of servers around the world and all the agents can connect to them and go and do things in those other systems."}, {"id": "s40", "start": 182.4, "end": 191.92, "text": "I would say that we don't yet have a good solution or a standard for client software to tell agents what to do."}, {"id": "s41", "start": 191.92, "end": 195.8, "text": "Giving it tasks, telling it what to work on and getting updates."}, {"id": "s42", "start": 195.8, "end": 204.76, "text": "And so I'm going to put forward an option today that I think is a good option that that we on our team have been working on and we think is a good"}, {"id": "s43", "start": 204.76, "end": 207.6, "text": "a good solution in the open standards space."}, {"id": "s44", "start": 207.6, "end": 214.04, "text": "And this is ACP, so agent client protocol is the name of this project and it came from the editor companies."}, {"id": "s45", "start": 214.04, "end": 225.64, "text": "It came from like if you've used the Zed text editor or you've used any of JetBrains products, the Zed folks and the JetBrains JetBrains folks teamed up and proposed a standard for"}, {"id": "s46", "start": 225.64, "end": 227.56, "text": "um clients to be able to control harnesses."}, {"id": "s47", "start": 227.56, "end": 229.76, "text": "And it makes sense if you put yourself in their shoes, right?"}, {"id": "s48", "start": 229.76, "end": 240.64, "text": "What they wanted to be able to do is write a single high quality client implementation in an editor, maybe in Zed or in IntelliJ or something like that, and be able to control any harness"}, {"id": "s49", "start": 240.64, "end": 251.24, "text": "by with that single client implementation, sending tasks, getting results back, seeing what files are being edited, etc. It makes a ton of sense if you put yourself in their shoes, right?"}, {"id": "s50", "start": 251.24, "end": 257.959, "text": "But we saw this on the Goose team, and we think that there is a much broader utility than just editors, right?"}, {"id": "s51", "start": 257.959, "end": 262.48, "text": "So it's a it's it's relatively neutral and it doesn't have many editor specific features."}, {"id": "s52", "start": 262.48, "end": 268.96, "text": "And so we think that this can can go to a be spread to a wider range of client software."}, {"id": "s53", "start": 268.96, "end": 280.6, "text": "To go into a little bit more depth about ACP's design and and what you can do with it, it lets you establish connections between clients and agent harnesses that have a given"}, {"id": "s54", "start": 280.6, "end": 286.44, "text": "a set of capabilities associated with the the connection, and then you can make sessions."}, {"id": "s55", "start": 286.44, "end": 293.72, "text": "Within sessions, you can send user messages, the things that a user is maybe typing into the app or that the client software wants to send."}, {"id": "s56", "start": 293.72, "end": 302.08, "text": "The agent can then respond to those with text, uh more images or audio, text, etc., or updates about what's going on."}, {"id": "s57", "start": 302.08, "end": 308.2, "text": "So like, if a tool is called, it can send a tool call notification and explain what tool was called and what the metadata was."}, {"id": "s58", "start": 308.2, "end": 316.44, "text": "Um and it can also send things like permission requests, so that if the client software needs to show the user, you know, \"Should I do this tool call?"}, {"id": "s59", "start": 316.44, "end": 317.2, "text": "Yes or no?\""}, {"id": "s60", "start": 317.2, "end": 320.64, "text": "It can go over this uh this protocol."}, {"id": "s61", "start": 320.64, "end": 323.2, "text": "And it's it's pretty simple in its design."}, {"id": "s62", "start": 323.2, "end": 331.64, "text": "Uh it uses JSON RPC messages, and the thing we like about it most is that it's extensible as well, so you're not limited to just what's in the vanilla protocol."}, {"id": "s63", "start": 331.64, "end": 333.52, "text": "You can add custom methods."}, {"id": "s64", "start": 333.52, "end": 339.32, "text": "So the the convention is you put an underscore, and then you start to put your custom methods."}, {"id": "s65", "start": 339.32, "end": 347.12, "text": "And the thing I like about this is that if enough harness projects or client projects adopt this, we can start to see what we're all doing that's the same,"}, {"id": "s66", "start": 347.12, "end": 347.56, "text": "right?"}, {"id": "s67", "start": 347.56, "end": 358.04, "text": "Like if the Codex team has some custom methods, the Goose team has some custom methods, uh the client team has some custom methods, whoever, we can see what emerges in the in the ecosystem"}, {"id": "s68", "start": 358.04, "end": 366.4, "text": "and what makes sense to get on a standards track and bring into the protocol itself so that this is sort of shaped by usage and shaped by the community."}, {"id": "s69", "start": 366.4, "end": 372.08, "text": "Um I'm going to do a demo of a standard IO version of this."}, {"id": "s70", "start": 372.08, "end": 379.52, "text": "So, I'm going to open Zed and I just have a really simple project here where I'll say, \"Tell me about this project.\""}, {"id": "s71", "start": 379.52, "end": 382.8, "text": "And so, this is a single HTML file."}, {"id": "s72", "start": 382.8, "end": 390.48, "text": "So, you can see I was able to type my query into Zed and this is the agent in play here is Goose, so it's using Goose's ACP interface."}, {"id": "s73", "start": 390.48, "end": 401.04, "text": "And it's you can see it's like sending text back, it's sending tool call information back um about what it read and what it did and then it found, you know, that it's a single HTML file and then explained it."}, {"id": "s74", "start": 401.04, "end": 403.72, "text": "And I'll do another I'll do another one."}, {"id": "s75", "start": 403.72, "end": 407.48, "text": "This is one from a company called Poolside AI."}, {"id": "s76", "start": 407.48, "end": 410.6, "text": "Uh I'll say, \"Tell me about this project.\""}, {"id": "s77", "start": 410.6, "end": 411.68, "text": "In the same project."}, {"id": "s78", "start": 411.68, "end": 421.24, "text": "And so, this is a terminal-based client getting exactly the same experience from the same agent, one implementation on the harness side, and you can now use any client."}, {"id": "s79", "start": 421.24, "end": 421.56, "text": "Right?"}, {"id": "s80", "start": 421.56, "end": 422.919, "text": "And so, you can see it did the same thing."}, {"id": "s81", "start": 422.919, "end": 429.32, "text": "It showed me some text results back, it showed a tool call, and then it showed a It's it's streaming in a summary."}, {"id": "s82", "start": 429.32, "end": 438.24, "text": "Um So, that's a basic demo showing two clients talking to the same agent uh over standard IO locally in this case."}, {"id": "s83", "start": 438.24, "end": 440.24, "text": "But local obviously isn't enough, right?"}, {"id": "s84", "start": 440.24, "end": 443.32, "text": "If you want this to take off, you have to be able to do remote as well."}, {"id": "s85", "start": 443.32, "end": 445.48, "text": "Agents are going to be running in the cloud."}, {"id": "s86", "start": 445.48, "end": 449.28, "text": "And so, when we came to this project, we saw that it did not have remote support yet."}, {"id": "s87", "start": 449.28, "end": 452.15999999999997, "text": "So, we specified an HTTP transport."}, {"id": "s88", "start": 452.15999999999997, "end": 455.48, "text": "There's an HTTP version and there's a websocket upgrade."}, {"id": "s89", "start": 455.48, "end": 463.6, "text": "And so now, the messages are the same, the protocol semantics are the same, but there's a new transport that is just landing now that enables remote."}, {"id": "s90", "start": 463.6, "end": 470.6, "text": "And the way we think about this on the Goose team, the agentic stack, is there's sort of these four important components, right?"}, {"id": "s91", "start": 470.6, "end": 477.28, "text": "You have the client, which is like the app that the user is using or a headless app running somewhere on a machine."}, {"id": "s92", "start": 477.28, "end": 481.44, "text": "There's the harness, which is the program that implements the tool calling loop."}, {"id": "s93", "start": 481.44, "end": 482.8, "text": "There are the tools themselves."}, {"id": "s94", "start": 482.8, "end": 484.48, "text": "This often MCP."}, {"id": "s95", "start": 484.48, "end": 486.24, "text": "And then there's the model, right?"}, {"id": "s96", "start": 486.24, "end": 499.919, "text": "And if you do a remote transport for the agent client protocol, and MCP has remote transport for tool calling, and the models have kind of all had remote endpoints like responses APIs for a long time."}, {"id": "s97", "start": 499.919, "end": 503.96, "text": "Now you have the flexibility to move all of these four components around."}, {"id": "s98", "start": 503.96, "end": 505.96, "text": "They could all be on the same machine."}, {"id": "s99", "start": 505.96, "end": 508.84, "text": "The harness could be on a different machine than the client."}, {"id": "s100", "start": 508.84, "end": 511.28, "text": "Uh the model could be the only thing that's remote."}, {"id": "s101", "start": 511.28, "end": 513.719, "text": "The tools could be the only thing that's remote."}, {"id": "s102", "start": 513.719, "end": 523.0, "text": "Uh aligning on standards and making sure that they have good transport stories is what's going to let us move all the pieces of this agentic stack around."}, {"id": "s103", "start": 523.0, "end": 526.44, "text": "And I can show a quick demo of this as well."}, {"id": "s104", "start": 526.44, "end": 531.16, "text": "So, this is a a client just to show how easy it is to create clients for this."}, {"id": "s105", "start": 531.16, "end": 534.24, "text": "I just live-coded this, you know, last night."}, {"id": "s106", "start": 534.24, "end": 536.92, "text": "And I'll say, \"Write a poem.\""}, {"id": "s107", "start": 536.92, "end": 541.0, "text": "So, this is again connecting to that same process on my machine."}, {"id": "s108", "start": 541.0, "end": 543.76, "text": "Uh in this case I'm running it over the network, but it's on my machine."}, {"id": "s109", "start": 543.76, "end": 548.76, "text": "It's connecting and sending Goose instructions for what to do uh remotely."}, {"id": "s110", "start": 548.76, "end": 555.12, "text": "So, this could be in a container, could be up in the cloud, but the messages are the same and the library you use is the same."}, {"id": "s111", "start": 555.12, "end": 559.8, "text": "So, you can just switch between local and remote very, very easily."}, {"id": "s112", "start": 559.8, "end": 572.68, "text": "Um So, if you want to get plugged into this ecosystem, start experimenting with support, either making your own clients or adding stuff to harnesses, this is a this will link you to the agent client protocol site for"}, {"id": "s113", "start": 572.68, "end": 573.48, "text": "how to get started."}, {"id": "s114", "start": 573.48, "end": 577.64, "text": "There's a number of clients and and agent servers are out there."}, {"id": "s115", "start": 577.64, "end": 585.52, "text": "This ranges from editors, desktop applications, mobile applications, terminal based things, like there's a proliferation."}, {"id": "s116", "start": 585.52, "end": 590.2, "text": "And I I think the use cases are are are potentially huge, right?"}, {"id": "s117", "start": 590.2, "end": 598.16, "text": "If we if we get some interoperability going here because you can have people can make personal clients that's exactly how you want it orchestrating your agents."}, {"id": "s118", "start": 598.16, "end": 608.32, "text": "You could have sort of clients created for certain business domains or an individual company or a set of clients from a company you could customize like a white label"}, {"id": "s119", "start": 608.32, "end": 610.72, "text": "client have it work with all the harnesses."}, {"id": "s120", "start": 610.72, "end": 616.36, "text": "And I also think if we make a new category here, we're going to see quality of the clients go up, right?"}, {"id": "s121", "start": 616.36, "end": 630.2, "text": "Because any anytime you get an ecosystem or a marketplace going and there's many options, users can vote with their feet if clients aren't meeting their needs and so people will start to compete on the quality of the user experience and and like overall I think this should drive up"}, {"id": "s122", "start": 630.2, "end": 633.32, "text": "uh the user experience of using AI."}, {"id": "s123", "start": 633.32, "end": 634.12, "text": "That's what I've got today."}, {"id": "s124", "start": 634.12, "end": 635.28, "text": "Thank you very much."}, {"id": "s125", "start": 635.28, "end": 639.68, "text": "And if you want to chat with me, find me after or send me an email."}, {"id": "s126", "start": 639.68, "end": 642.6, "text": "Um happy to get you plugged into this work."}, {"id": "s127", "start": 642.6, "end": 644.8, "text": "Thank you."}, {"id": "s128", "start": 657.627, "end": 659.627, "text": "[music]"}]}, {"id": "Yphdry8ttAQ", "title": "Trading Desks to Clinical Trials: Parallels in Applied Vertical AI — Ayush Bhardwaj, Allos AI", "channel": "AI Engineer", "duration": 1202, "upload_date": null, "url": "https://www.youtube.com/watch?v=Yphdry8ttAQ", "api": "/api/talks/Yphdry8ttAQ.json", "summary_url": "/#Yphdry8ttAQ", "transcript": {"html": "/transcripts/Yphdry8ttAQ.html", "txt": "/transcripts/Yphdry8ttAQ.txt", "vtt": "/transcripts/Yphdry8ttAQ.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.6, "end": 14.8, "text": "Hello everyone."}, {"id": "s3", "start": 15.48, "end": 20.56, "text": "So, my name is Ayush Bhardwaj and I did applied AI for a hedge fund."}, {"id": "s4", "start": 20.56, "end": 26.52, "text": "And now I do everything tech plus applied AI for a pharma tech startup cuz you know the way startups are."}, {"id": "s5", "start": 26.52, "end": 28.88, "text": "You have to do everything, wear multiple hats."}, {"id": "s6", "start": 28.88, "end": 32.48, "text": "So, before I start the session, I would like to do a small survey."}, {"id": "s7", "start": 32.48, "end": 36.4, "text": "Can I get a raise of hands for all the engineers in the room?"}, {"id": "s8", "start": 36.4, "end": 38.68, "text": "Okay, that's a tough room."}, {"id": "s9", "start": 38.68, "end": 41.88, "text": "Now, can I get a raise of hands for managers?"}, {"id": "s10", "start": 41.88, "end": 45.08, "text": "Okay, just to be clear, managing AI agent does not count."}, {"id": "s11", "start": 45.08, "end": 46.28, "text": "You have to manage people."}, {"id": "s12", "start": 46.28, "end": 48.6, "text": "Okay, we have few managers as well."}, {"id": "s13", "start": 48.6, "end": 49.0, "text": "Interesting."}, {"id": "s14", "start": 49.0, "end": 51.64, "text": "So, they will help me like fine-tune my talk a bit."}, {"id": "s15", "start": 51.64, "end": 58.04, "text": "So, today my aim is to take you through the journey of how do you actually build and iterate in applied vertical AI?"}, {"id": "s16", "start": 58.04, "end": 62.24, "text": "And my experience is from the hedge fund and the pharma tech company."}, {"id": "s17", "start": 62.24, "end": 71.24, "text": "So, before delving deep into the recipe, I'll just like take you through what do I even mean by applied vertical AI cuz I don't know if it sounds like a very weird term."}, {"id": "s18", "start": 71.24, "end": 73.64, "text": "It's like the vertical word is kind of forced."}, {"id": "s19", "start": 73.64, "end": 74.8, "text": "I won't lie, it is."}, {"id": "s20", "start": 74.8, "end": 76.44, "text": "I coined this term probably."}, {"id": "s21", "start": 76.44, "end": 84.24, "text": "So, applied AI is like built for So, what applied vertical AI is essentially applied AI but built for one very specific industry."}, {"id": "s22", "start": 84.24, "end": 89.76, "text": "It's It's aim is to simulate a job of a person in that particular industry in a sense."}, {"id": "s23", "start": 89.76, "end": 95.16, "text": "So, an example of applied AI is Google Translate which is like general purpose, helps you translate."}, {"id": "s24", "start": 95.16, "end": 104.8, "text": "It could be used in education tech and it can have like tons and various sorts of uses is whereas Elos, which is my employer, the pharma tech company, we specifically build drugs with AI."}, {"id": "s25", "start": 104.8, "end": 106.96000000000001, "text": "So, that's a very specific use case."}, {"id": "s26", "start": 106.96000000000001, "end": 111.92, "text": "Another examples of applied vertical AI field could be the legal tech firms that are now coming up with."}, {"id": "s27", "start": 111.92, "end": 113.64, "text": "You must I'm sure you must have heard about them."}, {"id": "s28", "start": 113.64, "end": 118.0, "text": "So, those are like another the examples of applied vertical AI."}, {"id": "s29", "start": 118.0, "end": 121.92, "text": "So, when I left the hedge fund, right?"}, {"id": "s30", "start": 121.92, "end": 127.6, "text": "So, I was expecting that the world would change for me cuz you know, hedge funds are like really fast and really pressure sensitive."}, {"id": "s31", "start": 127.6, "end": 132.36, "text": "Whereas, pharma is like, \"Okay, we're going to take 15 years, but we're going to do it right.\""}, {"id": "s32", "start": 132.36, "end": 136.36, "text": "Hedge fund was all about like, \"You need to do it fast and mostly right."}, {"id": "s33", "start": 136.36, "end": 140.16, "text": "It does not matter if we lose at one paradigm as long as we are overall winning.\""}, {"id": "s34", "start": 140.16, "end": 143.72, "text": "Whereas, a pharma firm is like, \"We have to be absolutely right."}, {"id": "s35", "start": 143.72, "end": 145.24, "text": "You can take a week more.\""}, {"id": "s36", "start": 145.24, "end": 146.32, "text": "And it was true."}, {"id": "s37", "start": 146.32, "end": 148.28, "text": "It's it's a completely different world."}, {"id": "s38", "start": 148.28, "end": 153.88, "text": "But, to your surprise and to mine as well, nothing changed, actually."}, {"id": "s39", "start": 153.88, "end": 166.07999999999998, "text": "My job increased, but the core part of my job, applied AI, remained the exact same and I cannot uh express how surprised I was cuz I thought that it'll be a complete different thing, but apparently it was not."}, {"id": "s40", "start": 166.07999999999998, "end": 175.07999999999998, "text": "So, uh So, then I spoke to other people as well across legal AI and the people coming up with the prop tech firms, which is essentially the real estate tech firms."}, {"id": "s41", "start": 175.07999999999998, "end": 180.04, "text": "And I realized that everyone is kind of building the applied vertical AI in a very similar way."}, {"id": "s42", "start": 180.04, "end": 183.72, "text": "I could see some steps that could be essentially abstracted out."}, {"id": "s43", "start": 183.72, "end": 186.0, "text": "And that's what we'll do today."}, {"id": "s44", "start": 186.0, "end": 195.44, "text": "So, uh before again delving the deep into that, I received a few reach outs saying, \"Are people actually putting agents into production?\""}, {"id": "s45", "start": 195.44, "end": 197.72, "text": "And I was like, this is such a wrong question to ask."}, {"id": "s46", "start": 197.72, "end": 203.16, "text": "Everyone is putting agents into production, even like 15-year-old 15-year-old kids these days."}, {"id": "s47", "start": 203.16, "end": 214.72, "text": "The question to ask is whether they actually work, whether they actually make or save money, whether they justify their ROI, whether uh they're making way more than the amount we are investing into it like end-to-end."}, {"id": "s48", "start": 214.72, "end": 217.84, "text": "And I can say from my anecdotal experience, yes."}, {"id": "s49", "start": 217.84, "end": 223.48, "text": "At the both places I worked, the agent either saved the money or made more money."}, {"id": "s50", "start": 223.48, "end": 227.04, "text": "So, with that, let's get started."}, {"id": "s51", "start": 227.04, "end": 234.96, "text": "So, the recipe I'll take you through a series of seven steps, roughly, and try to like make this process as simple as possible."}, {"id": "s52", "start": 234.96, "end": 237.88, "text": "So, the first step is formulate the problem."}, {"id": "s53", "start": 237.88, "end": 243.08, "text": "So, this is sounds like very trivial, but a lot of people, specifically startups, get this wrong."}, {"id": "s54", "start": 243.08, "end": 245.32, "text": "They just try to do too much at once."}, {"id": "s55", "start": 245.32, "end": 250.72, "text": "Whereas, from what I have learned and what I think a lot of colleagues would agree, you need to pick a very narrow task."}, {"id": "s56", "start": 250.72, "end": 252.84, "text": "You just cannot ask it to do everything."}, {"id": "s57", "start": 252.84, "end": 261.56, "text": "A good example for this could be, let's say if you build something in finance, you won't ask it to like, \"Hey, can you fetch me top three market opportunities that I could invest in?\""}, {"id": "s58", "start": 261.56, "end": 262.6, "text": "No, that won't work."}, {"id": "s59", "start": 262.6, "end": 264.84, "text": "You have to be like very specific."}, {"id": "s60", "start": 264.84, "end": 268.32, "text": "Like you pick a market, you say, \"Let's take the US equities.\""}, {"id": "s61", "start": 268.32, "end": 271.16, "text": "Then you pick an industry, let's take IT."}, {"id": "s62", "start": 271.16, "end": 280.24, "text": "And then you ask it to like rank stocks based on some parameters like capital expenditure or let's say the AI um uh investments."}, {"id": "s63", "start": 280.24, "end": 286.8, "text": "So, you pick like very specific things, and then you uh sort of formulate a very narrow job for the AI agent to do."}, {"id": "s64", "start": 286.8, "end": 289.15999999999997, "text": "And you can build like n number of AI agent."}, {"id": "s65", "start": 289.15999999999997, "end": 291.64, "text": "Last I checked, there was no tax on building more AI agents."}, {"id": "s66", "start": 291.64, "end": 294.48, "text": "So, why do you want your single agent to do everything?"}, {"id": "s67", "start": 294.48, "end": 298.6, "text": "So, this is important, and this is in the same uh in the pharma context is the exact same."}, {"id": "s68", "start": 298.6, "end": 303.8, "text": "We just break down the process into steps, and then ask really pointed questions with the agent."}, {"id": "s69", "start": 303.8, "end": 306.4, "text": "We model our agent for a task."}, {"id": "s70", "start": 306.4, "end": 313.12, "text": "So, once we have our problem right off the way, we know what we're trying to solve, the next step is identify the data."}, {"id": "s71", "start": 313.12, "end": 314.6, "text": "And I cannot stress this enough."}, {"id": "s72", "start": 314.6, "end": 319.96, "text": "This is a really, really, really important step, cuz everyone has news data."}, {"id": "s73", "start": 319.96, "end": 324.16, "text": "Everyone has like seller side reports from JP Morgan, Morgan Stanley."}, {"id": "s74", "start": 324.16, "end": 329.2, "text": "Uh everyone has the arXiv preprint server or PubChem or your research papers, right?"}, {"id": "s75", "start": 329.2, "end": 333.919, "text": "But what actually makes your application better than let's say ChatGPT or Claude?"}, {"id": "s76", "start": 333.919, "end": 335.96, "text": "It is your proprietary data."}, {"id": "s77", "start": 335.96, "end": 340.96, "text": "So, the thing with proprietary data is it's really expensive to buy, and most people won't sell it to you."}, {"id": "s78", "start": 340.96, "end": 343.0, "text": "So, you need to curate it by yourself."}, {"id": "s79", "start": 343.0, "end": 345.52, "text": "Imagine your organization has been working for 3 years, right?"}, {"id": "s80", "start": 345.52, "end": 347.08, "text": "They already have a lot of data."}, {"id": "s81", "start": 347.08, "end": 348.64, "text": "It's just unstructured."}, {"id": "s82", "start": 348.64, "end": 355.04, "text": "And in the age of LLMs, I think this is a very fairly easy task to make unstructured data into structured data."}, {"id": "s83", "start": 355.04, "end": 357.92, "text": "Like a LLM workflow could do it overnight."}, {"id": "s84", "start": 357.92, "end": 370.24, "text": "So, to give you a great example of the proprietary data that finance industry has, it's the trade thesis, which is like what trade work and why it worked."}, {"id": "s85", "start": 370.24, "end": 373.4, "text": "And in pharma, it is the data for failed experiments."}, {"id": "s86", "start": 373.4, "end": 379.32, "text": "For successful experiments data, yes, you can get it, but failed experiments, that's relatively hard to get."}, {"id": "s87", "start": 379.32, "end": 381.96, "text": "So, now we have the problem, we have the data."}, {"id": "s88", "start": 381.96, "end": 383.919, "text": "What's the third step?"}, {"id": "s89", "start": 383.919, "end": 387.2, "text": "That is to model the problem, like write the prompt."}, {"id": "s90", "start": 387.2, "end": 395.8, "text": "So, while writing prompt, you like what we should aim is to model it after the person who you are trying to replace."}, {"id": "s91", "start": 395.8, "end": 402.68, "text": "I mean, that's the hypothesis, but yeah, no offense, we're not trying to replace anyone with AI, but that's the ideology behind writing prompts."}, {"id": "s92", "start": 402.68, "end": 406.4, "text": "Encode how a person would solve this job into multiple steps."}, {"id": "s93", "start": 406.4, "end": 408.56, "text": "So, it's just like a like a mental model."}, {"id": "s94", "start": 408.56, "end": 411.12, "text": "So, this is again fairly simple."}, {"id": "s95", "start": 411.12, "end": 418.84000000000003, "text": "Next thing, observability, I'm sure you have been in this conference at 3 years and this word, I think I don't know, you'll be hearing about like a thousandth time."}, {"id": "s96", "start": 418.84000000000003, "end": 421.16, "text": "There are tons of observability provider."}, {"id": "s97", "start": 421.16, "end": 423.52, "text": "If you can't see it, you can fix it."}, {"id": "s98", "start": 423.52, "end": 431.68, "text": "So, you need observability to see the traces, understand what your uh AI application is doing, and debug it."}, {"id": "s99", "start": 431.68, "end": 435.8, "text": "So, sorry, but all of this was the easy part, to be honest."}, {"id": "s100", "start": 435.8, "end": 437.56, "text": "All of this fits one screen."}, {"id": "s101", "start": 437.56, "end": 441.76, "text": "The mythical 10x engineers can do this stuff in minutes."}, {"id": "s102", "start": 441.76, "end": 445.6, "text": "Like literally, this is the code you precisely need to build an AI agent."}, {"id": "s103", "start": 445.6, "end": 447.48, "text": "So, that's why it's not the moat."}, {"id": "s104", "start": 447.48, "end": 449.76, "text": "Uh of course, except your proprietary data."}, {"id": "s105", "start": 449.76, "end": 451.52, "text": "So, what do you do now?"}, {"id": "s106", "start": 451.52, "end": 462.15999999999997, "text": "What do you do after doing the first four steps, which is observability, and prompts, and like uh getting the data right, and everything?"}, {"id": "s107", "start": 462.15999999999997, "end": 464.04, "text": "UI trade."}, {"id": "s108", "start": 464.04, "end": 469.24, "text": "Now, the thing with iteration is like when I joined the hedge fund, I thought how hard it can be."}, {"id": "s109", "start": 469.24, "end": 470.68, "text": "I mean, everyone can iterate."}, {"id": "s110", "start": 470.68, "end": 474.2, "text": "I mean, we have been iterating our whole life for each of the task."}, {"id": "s111", "start": 474.2, "end": 483.52, "text": "But, to be honest, I could build it, but I just could not tell if it worked cuz I'm not a trader."}, {"id": "s112", "start": 483.52, "end": 486.88, "text": "I'm not someone who has a PhD in biology or chemistry."}, {"id": "s113", "start": 486.88, "end": 492.4, "text": "I just don't understand what the model is saying, what is the output of my AI agent is."}, {"id": "s114", "start": 492.4, "end": 495.16, "text": "And since most of you are engineers, you would relate."}, {"id": "s115", "start": 495.16, "end": 500.52, "text": "You can instantly tell that Sonnet 5 sucks because you have your own training."}, {"id": "s116", "start": 500.52, "end": 503.0, "text": "You understand, okay, this code is not great code."}, {"id": "s117", "start": 503.0, "end": 510.04, "text": "Whereas, some X model, let's say Fable 5, you see, okay, this is great but not as great as the high base cuz you've been trained for this for life."}, {"id": "s118", "start": 510.04, "end": 513.88, "text": "You have a mental model to judge these things."}, {"id": "s119", "start": 513.88, "end": 524.48, "text": "But, you just do not have the same kind of mental model when it comes to like predicting trade thesis is or doing like really specific task that vertically our industry does."}, {"id": "s120", "start": 524.48, "end": 535.36, "text": "And this is also the place where like a lot of vertical AI projects quietly die because on the surface it looks like you have made it, you have built it, let's put this into production and start selling it."}, {"id": "s121", "start": 535.36, "end": 540.16, "text": "But, no one would buy it the same way you won't use an inferior coding model."}, {"id": "s122", "start": 540.16, "end": 544.04, "text": "So, as an engineer when I ran into this, I just couldn't accept honestly."}, {"id": "s123", "start": 544.04, "end": 546.16, "text": "I thought, no, there's certainly more that I can do."}, {"id": "s124", "start": 546.16, "end": 547.88, "text": "We don't need other people."}, {"id": "s125", "start": 547.88, "end": 553.76, "text": "So, I thought I could LLM as a judge my way out of it."}, {"id": "s126", "start": 554.136, "end": 554.8, "text": "[sighs and laughter]"}, {"id": "s127", "start": 554.8, "end": 561.68, "text": "And this was a really, really stupid mistake to be honest cuz what LLM is essentially doing, it's it's predicting the next probable word."}, {"id": "s128", "start": 561.68, "end": 564.48, "text": "So, if you see, it's just like jargoning its way out."}, {"id": "s129", "start": 564.48, "end": 566.56, "text": "It does not understand what alpha means."}, {"id": "s130", "start": 566.56, "end": 571.8, "text": "It does not understand how to actually create value unless you have like taught it some way."}, {"id": "s131", "start": 571.8, "end": 576.08, "text": "And whereas a human can just tell it instantly what's and what's not."}, {"id": "s132", "start": 576.08, "end": 582.48, "text": "So, I'll just try to dwell a bit more deeper on why you can just iterate."}, {"id": "s133", "start": 582.48, "end": 598.88, "text": "So, first thing is that model cannot verify itself, specifically in these fields, because reinforcement learning via verifiable rewards is really good at math and code because you have like answer keys, you can verify your code is uh compiling or not, and there are tons of stuff you can just model"}, {"id": "s134", "start": 598.88, "end": 600.68, "text": "uh the complete thing around this."}, {"id": "s135", "start": 600.68, "end": 604.16, "text": "But, when in these fields, there is just no way to model it."}, {"id": "s136", "start": 604.16, "end": 607.88, "text": "And And let's say if any error gets in, it's just compounds with every stuff."}, {"id": "s137", "start": 607.88, "end": 611.08, "text": "And that's what LeCun seems to think as well."}, {"id": "s138", "start": 611.08, "end": 617.24, "text": "And now, the more important part that we touched upon previously, the data."}, {"id": "s139", "start": 617.24, "end": 623.04, "text": "So, the interesting thing with pharma and finance is the data was never there."}, {"id": "s140", "start": 623.04, "end": 626.44, "text": "And I'll explain to you why."}, {"id": "s141", "start": 627.12, "end": 638.56, "text": "So, any institutional manager holding over $100 million in qualifying US equities are forced to publicly file their holdings, long position holdings, every quarter."}, {"id": "s142", "start": 638.56, "end": 648.8, "text": "And once a hedge fund does this, this is the percentage decrease in their returns because everyone just sees those reverse engineers and takes away their moat."}, {"id": "s143", "start": 648.8, "end": 651.2, "text": "And when it comes to pharma, right?"}, {"id": "s144", "start": 651.2, "end": 657.8389999999999, "text": "So, this is the number of uh so, by law, you are like required to disclose every clinical trial pass or failure you have done."}, {"id": "s145", "start": 657.8389999999999, "end": 661.8, "text": "But, 30% of the funds, which is like nearly 1/3 of firms, never do."}, {"id": "s146", "start": 661.8, "end": 674.16, "text": "And in like 2026, FDA had to like publicly remind over, I don't know, about 2,000 sponsors that they are, I mean, doing injustice by not uh releasing unfavorable results"}, {"id": "s147", "start": 674.16, "end": 682.44, "text": "because this is the exact data which helps the model thing, which helps your LLM actually reason through these complex and niche industries."}, {"id": "s148", "start": 682.44, "end": 686.52, "text": "And they hide it because for them, it's like a chicken laying golden eggs."}, {"id": "s149", "start": 686.52, "end": 688.08, "text": "Why would they sell their chicken?"}, {"id": "s150", "start": 688.08, "end": 693.16, "text": "So, naturally, neither OpenAI nor Anthropic has that has this data because it's like gatekeeper."}, {"id": "s151", "start": 693.16, "end": 701.0, "text": "You just cannot hire a trader for $100 an hour and have them annotate that stuff because there's like lots of NDAs and they definitely earn more."}, {"id": "s152", "start": 701.0, "end": 705.52, "text": "So, okay, now I have told you about tens of problems, right?"}, {"id": "s153", "start": 705.52, "end": 708.96, "text": "Now, you would naturally think, okay, yeah, right, then what do we do?"}, {"id": "s154", "start": 708.96, "end": 713.08, "text": "How do we build a startup in like a vertical space space?"}, {"id": "s155", "start": 713.08, "end": 723.12, "text": "So, very self-explanatory, you hire the person who you want to sell it to cuz there is, to be honest, no other way around."}, {"id": "s156", "start": 723.12, "end": 724.72, "text": "I have tried a lot of stuff."}, {"id": "s157", "start": 724.72, "end": 726.92, "text": "You just need to hire the user."}, {"id": "s158", "start": 726.92, "end": 732.24, "text": "In finance in a hedge fund, this was very easy because the user was kind of like my boss, the trader."}, {"id": "s159", "start": 732.24, "end": 736.24, "text": "We worked together, but in the PharmaTech startup, it was very weird."}, {"id": "s160", "start": 736.24, "end": 742.4, "text": "We were like a bunch of young engineers and we were like, oh, we need a 20-year-old scientist in our company to tell us what to do?"}, {"id": "s161", "start": 742.4, "end": 744.32, "text": "Yeah, I guess we do."}, {"id": "s162", "start": 744.32, "end": 745.76, "text": "And then we hired someone, right?"}, {"id": "s163", "start": 745.76, "end": 748.92, "text": "And that someone actually changed the trajectory of our tools."}, {"id": "s164", "start": 748.92, "end": 750.48, "text": "Our tools started making sense."}, {"id": "s165", "start": 750.48, "end": 761.0, "text": "When we pitched to the other pharma companies, the big ones, the big pharma, they started liking our tools because it's kind of spoke their language versus the normal jargonish LLM language."}, {"id": "s166", "start": 761.0, "end": 767.64, "text": "So, once you have hired the user, let's say, then what would you make that user do?"}, {"id": "s167", "start": 767.64, "end": 770.4, "text": "You try to build a learning loop out of it."}, {"id": "s168", "start": 770.4, "end": 776.56, "text": "The domain expert can start at the like a very, very low level, the ground level, where they just think about prompts."}, {"id": "s169", "start": 776.56, "end": 780.76, "text": "Okay, yeah, I mean, let's not ask LLM to do this."}, {"id": "s170", "start": 780.76, "end": 783.08, "text": "Let's ask a very specific query again."}, {"id": "s171", "start": 783.08, "end": 784.64, "text": "They'll help you curate data."}, {"id": "s172", "start": 784.64, "end": 795.76, "text": "Just like engineers know which conferences are which are not, which research paper sites are great, which are not, which are like top leaders in engineering, which is which are just like influencers."}, {"id": "s173", "start": 795.76, "end": 800.72, "text": "Similarly, a pharma expert or let's say a trader knows which sources are more reliable than the other."}, {"id": "s174", "start": 800.72, "end": 802.12, "text": "So, they help you create their data."}, {"id": "s175", "start": 802.12, "end": 809.24, "text": "They help you like refine your prompts better, and they try to create like thinking models of how they would think about a problem."}, {"id": "s176", "start": 809.24, "end": 813.96, "text": "Cuz I mean, let's say if you if you follow five steps to solve a problem, right?"}, {"id": "s177", "start": 813.96, "end": 816.44, "text": "You just cannot do it in in any random order."}, {"id": "s178", "start": 816.44, "end": 817.76, "text": "There has to be a logical flow."}, {"id": "s179", "start": 817.76, "end": 818.92, "text": "There has to be a natural flow."}, {"id": "s180", "start": 818.92, "end": 826.32, "text": "That's So, that's what they uh try to curate like decompose a problem, gradually refine, and then finally judge."}, {"id": "s181", "start": 826.32, "end": 836.64, "text": "So, the person who sort of has lived through the complete of the industry that they're trying to revolutionize, their judgment is now like turning into agents."}, {"id": "s182", "start": 836.64, "end": 838.88, "text": "So, that's what's happening behind the loop."}, {"id": "s183", "start": 838.88, "end": 842.04, "text": "So, uh to do this there are like again multiple ways."}, {"id": "s184", "start": 842.04, "end": 845.72, "text": "I mean, each of these could have been a hour-long session on its own."}, {"id": "s185", "start": 845.72, "end": 850.56, "text": "And I wish I could take, but these are like few ways that I identified."}, {"id": "s186", "start": 850.56, "end": 854.92, "text": "Uh I'll just like take uh you through them like really quickly in the interest of time."}, {"id": "s187", "start": 854.92, "end": 860.76, "text": "So, supervised fine-tuning I think most of you would know where like model mimics human nest demonstrations."}, {"id": "s188", "start": 860.76, "end": 868.68, "text": "Uh reinforcement learning from human feedback is like a kind of uh a very efficient way where human preferences train a reward model."}, {"id": "s189", "start": 868.68, "end": 874.92, "text": "Then rubrics as a reward is I I like to call it reinforcement learning from AI feedback."}, {"id": "s190", "start": 874.92, "end": 884.72, "text": "This is because that you can human can just create a rubric, and then AI will just like grade itself based on that rubric, and that improve its own processes."}, {"id": "s191", "start": 884.72, "end": 889.76, "text": "But again, there is a slight chance that you might run into an echo chamber with rubrics as rewards."}, {"id": "s192", "start": 889.76, "end": 894.48, "text": "And the cheapest of all, and I think the highest ROI is the error analysis."}, {"id": "s193", "start": 894.48, "end": 899.32, "text": "Whereas the observability part that you set up earlier, you just analyze the logs plain and simple."}, {"id": "s194", "start": 899.32, "end": 903.04, "text": "You understand where model is going wrong, and then you just try to correct it."}, {"id": "s195", "start": 903.04, "end": 912.16, "text": "So, this is where you have like don't have to touch any weights, and the most highest ROI way to get the impact from a like start on."}, {"id": "s196", "start": 912.16, "end": 923.52, "text": "And once you understand like uh what more you could do, or if error analysis is solving or not, you can just gradually climb up the ladder, and probably uh later on go to the ultimate reinforcement"}, {"id": "s197", "start": 923.52, "end": 932.96, "text": "learning from human feedback cuz that's I think in our industry kind of the golden standard these days that you need to do RLHF to actually get some edge."}, {"id": "s198", "start": 932.96, "end": 935.88, "text": "But uh certainly there are some pitfalls of it."}, {"id": "s199", "start": 935.88, "end": 939.6, "text": "Like for example, now there's GLM 5.2, right?"}, {"id": "s200", "start": 939.6, "end": 942.08, "text": "You fine-tuned it, right?"}, {"id": "s201", "start": 942.08, "end": 946.6, "text": "Uh Alibaba Cloud or let's say Deep Seek will release a newer model, then you have to fine-tune that too as well."}, {"id": "s202", "start": 946.6, "end": 947.56, "text": "So there is a cost."}, {"id": "s203", "start": 947.56, "end": 949.48, "text": "It's not cheap."}, {"id": "s204", "start": 949.48, "end": 954.12, "text": "So once you have done all this, you just create a loop and you just like go on to that loop."}, {"id": "s205", "start": 954.12, "end": 960.88, "text": "You hired one user, you hire more users, they ask more queries, the scoping increases, the data increases."}, {"id": "s206", "start": 960.88, "end": 963.32, "text": "At this point you're kind of generating your own data."}, {"id": "s207", "start": 963.32, "end": 965.76, "text": "The exercise you have been doing in loop, right?"}, {"id": "s208", "start": 965.76, "end": 971.72, "text": "That exercise itself is generating a very I would say a crazy data set of what works and what does not work."}, {"id": "s209", "start": 971.72, "end": 973.4, "text": "And this loop never stops."}, {"id": "s210", "start": 973.4, "end": 981.76, "text": "Once you feel confident enough in your application, you just ship it, provide it to the external paying users, and then you see the magic of it that it actually works."}, {"id": "s211", "start": 981.76, "end": 990.36, "text": "So I just pulled the stat from Stanford AI Index report cuz it's a really nice report that gives you an idea of what the state of AI is."}, {"id": "s212", "start": 990.36, "end": 995.12, "text": "And this says like 80% 89% of enterprise AI agents never reach production."}, {"id": "s213", "start": 995.12, "end": 996.92, "text": "Again, I disagree."}, {"id": "s214", "start": 996.92, "end": 1002.04, "text": "Every AI reaches production, but it just fails to work or like justify its own cost."}, {"id": "s215", "start": 1002.04, "end": 1003.52, "text": "So that's the real thing."}, {"id": "s216", "start": 1003.52, "end": 1008.24, "text": "You can just build and ship AI agents whenever you want, but you need to justify ROI."}, {"id": "s217", "start": 1008.24, "end": 1014.24, "text": "And finance and pharma are two such industries where if it does not make money, it's shown the door."}, {"id": "s218", "start": 1014.24, "end": 1014.88, "text": "Simple."}, {"id": "s219", "start": 1014.88, "end": 1017.68, "text": "They won't like wait and say, \"Okay, maybe it'll work in 2 years."}, {"id": "s220", "start": 1017.68, "end": 1020.16, "text": "Maybe the cost will be lower in by the third year.\""}, {"id": "s221", "start": 1020.16, "end": 1022.2, "text": "No. It has to instantly make money."}, {"id": "s222", "start": 1022.2, "end": 1023.6, "text": "It has to like hit the ground running."}, {"id": "s223", "start": 1023.6, "end": 1026.28, "text": "And if it does not, shown the door instantly."}, {"id": "s224", "start": 1026.28, "end": 1035.8, "text": "So just to summarize the seven steps that I feel are like good enough to give you an abstraction of how the vertical AI industry moves."}, {"id": "s225", "start": 1035.8, "end": 1047.24, "text": "You formulate the problem statement, you source your data sources, you prompt it well, you define those prompts, you observe how your tool is performing, you don't iterate yet, you hire the user."}, {"id": "s226", "start": 1047.24, "end": 1051.08, "text": "And this user or users now play with the tool as much as possible."}, {"id": "s227", "start": 1051.08, "end": 1063.68, "text": "They like kind of form a learning loop, an endless learning loop that goes on and at a point when you feel yeah, it's it's really delivering that alpha over let's say Claude and ChatGPT, you just ship it, you start earning money."}, {"id": "s228", "start": 1063.68, "end": 1066.48, "text": "So, one more interesting thing."}, {"id": "s229", "start": 1066.48, "end": 1070.96, "text": "So, HITL is like kind of a thing everyone is like yeah, let's add human in the loop."}, {"id": "s230", "start": 1070.96, "end": 1072.32, "text": "I would say not yet."}, {"id": "s231", "start": 1072.32, "end": 1083.4, "text": "Finance and pharma are still those two industries where it's AITL, AI in the loop cuz everything is like done by the expert, but the AI assistant really helps save time."}, {"id": "s232", "start": 1083.4, "end": 1098.76, "text": "Like for example, uh it may take an X amount for a trader to form different trade thesis, and AI can just give him five candidate trade thesis, but which one would actually work in the market and which won't is the discussion the discussion still lies with the trader."}, {"id": "s233", "start": 1098.76, "end": 1109.24, "text": "And same for pharma when you're like picking drug candidates, which one to pick, the expert still does it, but you just like reduce the time of expert by a lot lot."}, {"id": "s234", "start": 1109.24, "end": 1112.2, "text": "So, and and it will stay this way for really long."}, {"id": "s235", "start": 1112.2, "end": 1119.16, "text": "So, uh for the models to actually make good decisions, they don't need to do correlation, they need to do causation."}, {"id": "s236", "start": 1119.16, "end": 1125.76, "text": "And as Ya as Jan LeCun puts it, these are like text statistics, not real-world models."}, {"id": "s237", "start": 1125.76, "end": 1129.52, "text": "You cannot just pattern match with past and use future to predict to it."}, {"id": "s238", "start": 1129.52, "end": 1131.56, "text": "And so, we are like kind of not there yet."}, {"id": "s239", "start": 1131.56, "end": 1134.04, "text": "That's what I call as the AGI line."}, {"id": "s240", "start": 1134.04, "end": 1136.88, "text": "Once we are there, yeah, probably then models will just like make drugs."}, {"id": "s241", "start": 1136.88, "end": 1138.68, "text": "You will have vibe coded drugs."}, {"id": "s242", "start": 1138.68, "end": 1142.6, "text": "Someone would be vibe coding market, but yeah, not yet."}, {"id": "s243", "start": 1142.6, "end": 1149.92, "text": "So, a final takeaway that I would call if if if there's one thing you are taking away from this talk, this is it."}, {"id": "s244", "start": 1149.92, "end": 1155.84, "text": "Model infra ecosystem, everyone selling you tons of stuff at this conference is just commodity."}, {"id": "s245", "start": 1155.84, "end": 1156.68, "text": "Everyone has it."}, {"id": "s246", "start": 1156.68, "end": 1157.92, "text": "If you have it, everyone has it."}, {"id": "s247", "start": 1157.92, "end": 1161.12, "text": "Everyone can pay X number of dollars for a subscription."}, {"id": "s248", "start": 1161.12, "end": 1164.72, "text": "But, what is moat and no one will come and sell it to you."}, {"id": "s249", "start": 1164.72, "end": 1168.04, "text": "You won't have to curate it on your own is the domain expertise."}, {"id": "s250", "start": 1168.04, "end": 1168.92, "text": "You need your data."}, {"id": "s251", "start": 1168.92, "end": 1169.96, "text": "You need other people's data."}, {"id": "s252", "start": 1169.96, "end": 1172.4, "text": "That is just not out there on the internet."}, {"id": "s253", "start": 1172.4, "end": 1174.8, "text": "And that that's what will form your moat."}, {"id": "s254", "start": 1174.8, "end": 1176.52, "text": "So, thank you for your time."}, {"id": "s255", "start": 1176.52, "end": 1180.0, "text": "I think you enjoyed the talk and yeah, let me know if you have any questions."}, {"id": "s256", "start": 1180.0, "end": 1181.04, "text": "We can meet outside."}, {"id": "s257", "start": 1181.04, "end": 1182.943, "text": "Thank you."}, {"id": "s258", "start": 1182.943, "end": 1184.943, "text": "[applause]"}, {"id": "s259", "start": 1198.663, "end": 1200.663, "text": "[music]"}]}, {"id": "ZFxh7sqbUZo", "title": "Teaching AIs to Hack — Prof. David Brumley, Bugcrowd", "channel": "AI Engineer", "duration": 1637, "upload_date": null, "url": "https://www.youtube.com/watch?v=ZFxh7sqbUZo", "api": "/api/talks/ZFxh7sqbUZo.json", "summary_url": "/#ZFxh7sqbUZo", "transcript": {"html": "/transcripts/ZFxh7sqbUZo.html", "txt": "/transcripts/ZFxh7sqbUZo.txt", "vtt": "/transcripts/ZFxh7sqbUZo.vtt"}, "sentences": [{"id": "s1", "start": 12.88, "end": 13.56, "text": "All right, everybody."}, {"id": "s2", "start": 13.56, "end": 15.56, "text": "We're going to talk about hacking."}, {"id": "s3", "start": 15.56, "end": 16.48, "text": "I love hacking."}, {"id": "s4", "start": 16.48, "end": 20.96, "text": "We have a very small audience here, so I assume everyone here loves hacking as well."}, {"id": "s5", "start": 20.96, "end": 25.04, "text": "So, I want to talk about designing reinforcement learning environments for cybersecurity tasks."}, {"id": "s6", "start": 25.04, "end": 35.32, "text": "Essentially, we all want to teach computers to hack because well, we're pushing out programs faster than other ever and so we need to be able to check them at machine speeds in scale."}, {"id": "s7", "start": 35.32, "end": 39.36, "text": "And this has been my research project for well over two decades."}, {"id": "s8", "start": 39.36, "end": 40.6, "text": "My name is David Brumley."}, {"id": "s9", "start": 40.6, "end": 46.44, "text": "I am a full professor at Carnegie Mellon University where I work on AI and cybersecurity."}, {"id": "s10", "start": 46.44, "end": 51.64, "text": "And I'm also chief AI and science officer at Bugcrowd where I work on data partnerships."}, {"id": "s11", "start": 51.64, "end": 62.48, "text": "So, before I talk about what we do and how we do it and why it's important to design cybersecurity tasks correctly for reinforcement learning environment, I want to start off with how humans learn because"}, {"id": "s12", "start": 62.48, "end": 65.239, "text": "I mean, I love teaching people to hack."}, {"id": "s13", "start": 65.239, "end": 70.48, "text": "And I remember in particular a case where we run a hacking contest called picoCTF."}, {"id": "s14", "start": 70.48, "end": 75.56, "text": "picoCTF has about a million high school kids every year play in this contest."}, {"id": "s15", "start": 75.56, "end": 79.2, "text": "Um and so it's a a really fun way for people to get an intro to cybersecurity."}, {"id": "s16", "start": 79.2, "end": 86.24, "text": "So, in 2016, a young uh person showed up on our scoreboard who was going by the hacker name fluorescence."}, {"id": "s17", "start": 86.24, "end": 89.52, "text": "And typically, we know who is doing well in the contest."}, {"id": "s18", "start": 89.52, "end": 96.6, "text": "It's kind of the typical suspects like a Palo Alto High School or uh some of the Washington D.C. high schools."}, {"id": "s19", "start": 96.6, "end": 97.96000000000001, "text": "We know who's going to win the contest."}, {"id": "s20", "start": 97.96000000000001, "end": 104.36, "text": "And so, this kind of independent starts showing up uh scoring on our scoreboard and we had no idea who it was."}, {"id": "s21", "start": 104.36, "end": 105.36, "text": "So, we reach out."}, {"id": "s22", "start": 105.36, "end": 111.96000000000001, "text": "It's actually a 17-year-old kid who found out about cybersecurity trying to get into it from math competitions."}, {"id": "s23", "start": 111.96000000000001, "end": 114.92, "text": "He got bored with the math competitions and started doing them."}, {"id": "s24", "start": 114.92, "end": 120.76, "text": "And very quickly, he ended up actually scoring second in picoCTF competing against all these high school kids."}, {"id": "s25", "start": 120.76, "end": 123.88, "text": "And we asked actually \"How did you learn this?\""}, {"id": "s26", "start": 123.88, "end": 127.04, "text": "And what he said really was uh germane to this task."}, {"id": "s27", "start": 127.04, "end": 134.28, "text": "What I did is I looked at the cybersecurity task, and then I started Googling \"What is the information I needed?\""}, {"id": "s28", "start": 134.28, "end": 137.8, "text": "I would read about it, I'd look at write-ups, and then I'd start emulating that."}, {"id": "s29", "start": 137.8, "end": 140.84, "text": "And this kid actually ended up coming in second."}, {"id": "s30", "start": 140.84, "end": 151.88, "text": "I recruited him to CMU, and he followed this methodology of studying write-ups and practicing cybersecurity on a graduated scale, easy problems first, and then slowly getting more difficult."}, {"id": "s31", "start": 151.88, "end": 154.84, "text": "And he actually turned into what's called a Pwn2Own winner."}, {"id": "s32", "start": 154.84, "end": 160.0, "text": "So, Pwn2Own, if you've never heard of it, is one of the more elite cybersecurity competitions."}, {"id": "s33", "start": 160.0, "end": 163.959, "text": "This kid, just 2 years after he first learned cybersecurity, enters."}, {"id": "s34", "start": 163.959, "end": 169.2, "text": "And uh if you read about it at the time, he was the first one to hack a Tesla."}, {"id": "s35", "start": 169.2, "end": 175.04, "text": "So, he walked out of this contest with $375,000 in cash and a brand new Tesla."}, {"id": "s36", "start": 175.04, "end": 184.76, "text": "The reason I tell this story is actually the way we teach AI uh frontier models to hack is the same way that we've been successful teaching high school students,"}, {"id": "s37", "start": 184.76, "end": 188.36, "text": "such as Richard Zhu, to become Pwn2Own winners."}, {"id": "s38", "start": 188.36, "end": 196.6, "text": "My other students include people like George Hotz, who did the first iPhone jailbreak, and current Pwn2Own winners like Sang Heon Lee."}, {"id": "s39", "start": 196.6, "end": 203.88, "text": "And so, what I want to talk about is how we teach reinforcement learning, and do it the same way that we've been teaching hacking for a while."}, {"id": "s40", "start": 203.88, "end": 207.6, "text": "And it really breaks down into two different axes."}, {"id": "s41", "start": 207.6, "end": 214.28, "text": "The first thing when designing these sorts of tasks for people is to look at target difficulty."}, {"id": "s42", "start": 214.28, "end": 223.12, "text": "There's a spectrum of different challenges that you can look at from toy problems through CTF and synthetic problems, all the way up to hardened targets."}, {"id": "s43", "start": 223.12, "end": 229.2, "text": "The second axis for teaching machines to hack is really looking at exploitation difficulty."}, {"id": "s44", "start": 229.2, "end": 236.44, "text": "For example, when we look at a toy program, we may start looking at the sort of skills it needs to acquire to be able to hack that."}, {"id": "s45", "start": 236.44, "end": 242.96, "text": "For example, if you have a toy program and it has a bug, can the LLM figure out where the bug is?"}, {"id": "s46", "start": 242.96, "end": 249.0, "text": "Can it then prove that it knows where it is by triggering a crash or some other fault in the program?"}, {"id": "s47", "start": 249.0, "end": 251.72, "text": "But of course, hacking is not just crashing a program."}, {"id": "s48", "start": 251.72, "end": 253.48, "text": "We want to take control of that program."}, {"id": "s49", "start": 253.48, "end": 255.64, "text": "That's the beautiful thing about hacking."}, {"id": "s50", "start": 255.64, "end": 257.48, "text": "It's bending computers to our will."}, {"id": "s51", "start": 257.48, "end": 261.12, "text": "It's what makes it unique in the sciences."}, {"id": "s52", "start": 261.12, "end": 264.04, "text": "So you look at things like, \"Hey, there's a flaw in that program."}, {"id": "s53", "start": 264.04, "end": 267.28, "text": "Can I use that to do arbitrary read writes in memory?"}, {"id": "s54", "start": 267.28, "end": 271.52, "text": "Or even to do a full arbitrary code execution exploit?\""}, {"id": "s55", "start": 271.52, "end": 282.64, "text": "And so if you remember nothing else from this talk, it's really the way that we teach LLMs, whether it be frontier models like Anthropic or private models that you're tuning in your house,"}, {"id": "s56", "start": 282.64, "end": 292.32, "text": "you follow these two axes where you're trying to come up with a set of tasks that increase in target difficulty along one, and then you're teaching specific cybersecurity skills"}, {"id": "s57", "start": 292.32, "end": 294.56, "text": "on the second."}, {"id": "s58", "start": 295.64, "end": 297.88, "text": "In other words, hacking is really a ladder."}, {"id": "s59", "start": 297.88, "end": 303.68, "text": "And this is what actually matches cybersecurity so well to reinforcement learning."}, {"id": "s60", "start": 303.68, "end": 309.52, "text": "We have a ladder of tasks and we typically end up with a good oracle for whether they can achieve that task."}, {"id": "s61", "start": 309.52, "end": 314.24, "text": "And so you can start to measure whether your model is learning the right set of capabilities."}, {"id": "s62", "start": 314.24, "end": 320.28, "text": "So this talk is really divided into three parts."}, {"id": "s63", "start": 322.12, "end": 325.36, "text": "The first one is to talk about vulnerability discovery."}, {"id": "s64", "start": 325.36, "end": 336.56, "text": "And when we talk about vulnerability discovery, what we're talking about is in the variety of different programs that you encounter in real life, how do you design oracles that are correct"}, {"id": "s65", "start": 336.56, "end": 341.04, "text": "for determining whether or not a model has successfully been able to detect that vulnerability?"}, {"id": "s66", "start": 341.04, "end": 355.36, "text": "And what's interesting is several of the cybersecurity benchmarks out there were amazing first-generation pieces of work, but they have a critical flaw where the model will actually stop learning after it finds the easiest vulnerability."}, {"id": "s67", "start": 355.36, "end": 358.15999999999997, "text": "And that can prevent them from getting smarter."}, {"id": "s68", "start": 358.15999999999997, "end": 364.28, "text": "The second is I want to talk about how we are designing benchmarks to measure this ability to do weaponization."}, {"id": "s69", "start": 364.48, "end": 368.48, "text": "And this is really where we get into where does security differentiate from bug finding."}, {"id": "s70", "start": 368.48, "end": 373.84, "text": "And we'll talk about how well LLMs do against what I would call hard targets."}, {"id": "s71", "start": 373.84, "end": 380.52, "text": "A hard target one easy way to to look at it is how much would you pay for an exploit that a model could produce."}, {"id": "s72", "start": 380.52, "end": 387.24, "text": "We know Richard Zhu fluorescence was paid $375,000 and got a brand new Tesla for one exploit."}, {"id": "s73", "start": 387.24, "end": 389.88, "text": "Can models achieve that capabilities today?"}, {"id": "s74", "start": 389.88, "end": 396.52, "text": "And then I'm going to just summarize ways that if you're interested in this environment, we can connect and do more work together."}, {"id": "s75", "start": 396.52, "end": 397.32, "text": "So, very simple talk."}, {"id": "s76", "start": 397.32, "end": 405.32, "text": "So, let's talk about the first axis of discovery and where you really want to um learn what you're going to be measuring."}, {"id": "s77", "start": 405.32, "end": 413.4, "text": "This is a key part in reinforcement learning where if you set up the wrong task objective, the LLM will learn it, but it'll learn the wrong thing."}, {"id": "s78", "start": 413.4, "end": 415.24, "text": "So, some definitions to begin with."}, {"id": "s79", "start": 415.24, "end": 417.64, "text": "Let's start defining the problem."}, {"id": "s80", "start": 417.64, "end": 422.72, "text": "When we think about reinforcement learning or we talk about gyms, there's some key components in that."}, {"id": "s81", "start": 422.72, "end": 426.919, "text": "There's of course other things, but the key components are you need a vulnerable application."}, {"id": "s82", "start": 426.919, "end": 430.919, "text": "And we like to enclose these inside container environments so that they're reproducible."}, {"id": "s83", "start": 430.919, "end": 442.04, "text": "We make sure that they run and that you don't have variations between for example, if I run a program on this version of Linux versus a different version of Linux, it actually may behave differently."}, {"id": "s84", "start": 442.04, "end": 444.76, "text": "And so, you want to standardize that with a vulnerable program."}, {"id": "s85", "start": 444.76, "end": 446.6, "text": "You need a grading oracle."}, {"id": "s86", "start": 446.6, "end": 451.52, "text": "Now, one of the things I think the previous talk was talking about was LLM as a judge is a reasonable thing."}, {"id": "s87", "start": 451.52, "end": 454.76, "text": "What we found in cybersecurity is that is flawed."}, {"id": "s88", "start": 454.76, "end": 458.08, "text": "The LLMs will always say they were successful hacking."}, {"id": "s89", "start": 458.08, "end": 464.2, "text": "And so, what you want to come up with is a deterministic grading oracle for each of the different levels you're getting at."}, {"id": "s90", "start": 464.2, "end": 471.4, "text": "For example, if you're trying to teach it to just find a bugs, maybe this grading Oracle is was it able to trigger a crash."}, {"id": "s91", "start": 471.4, "end": 473.15999999999997, "text": "We'll talk about that more in a second."}, {"id": "s92", "start": 473.15999999999997, "end": 479.64, "text": "So, you have this reinforcement learning environment or this gym environment and of course you have your LLM and an orchestrator that's going to talk to it."}, {"id": "s93", "start": 479.64, "end": 486.32, "text": "The way we set up our task is very simply, we expose through MCP a few key functions, a setup function."}, {"id": "s94", "start": 486.32, "end": 489.6, "text": "So, the LLM will call setup, it returns the problem definition."}, {"id": "s95", "start": 489.6, "end": 499.12, "text": "We give it standard tool calls such as read and write inside the container inside a sandbox inside the container, and then a grading Oracle at the very end."}, {"id": "s96", "start": 499.12, "end": 508.48, "text": "And so, you end up with this vulnerable program in here, a grading Oracle, and I'm going to assume that you've already verified that there is at least one flaw in this program."}, {"id": "s97", "start": 508.48, "end": 511.6, "text": "Maybe you yourself have figured out that it can crash."}, {"id": "s98", "start": 511.6, "end": 516.4, "text": "Maybe you have downloaded it from a bug report and you've been able to reproduce that vulnerability."}, {"id": "s99", "start": 516.4, "end": 520.08, "text": "We won't get into that, that's part of our sauce that we do at Bugcrowd."}, {"id": "s100", "start": 520.08, "end": 528.52, "text": "But, once you do that, you have this package environment and then your task prompt is going to be something very simple like, \"Dear LLM, can you find and exploit the vulnerability?\""}, {"id": "s101", "start": 528.52, "end": 531.8389999999999, "text": "Now, you don't want to just ask, \"Can you find the vulnerability?\""}, {"id": "s102", "start": 531.8389999999999, "end": 537.4, "text": "because then you won't be able to distinguish between an LLM hallucination and a real vulnerability."}, {"id": "s103", "start": 537.4, "end": 542.16, "text": "So, you almost always ask it to actually exploit the vulnerability."}, {"id": "s104", "start": 542.16, "end": 547.0, "text": "And that exploit is going to be key to how we do reinforcement learning."}, {"id": "s105", "start": 547.0, "end": 550.36, "text": "So, the LLM does some thinking and it comes up with an exploit."}, {"id": "s106", "start": 550.36, "end": 556.68, "text": "For example, this very, very simple program, if you just give it enough A's, you'll trigger a crash."}, {"id": "s107", "start": 556.68, "end": 561.48, "text": "So, that's the LLM's witness, the proof of vulnerability that it was able to find something."}, {"id": "s108", "start": 561.48, "end": 565.08, "text": "You run that input through your grading Oracle."}, {"id": "s109", "start": 565.08, "end": 568.4, "text": "The Oracle that determines did the program misbehave or not."}, {"id": "s110", "start": 568.4, "end": 574.88, "text": "In this case, the program would simply crash and you farm out your rewards."}, {"id": "s111", "start": 575.04, "end": 579.48, "text": "This is a very elegant way and actually this is the way we teach people to hack."}, {"id": "s112", "start": 579.48, "end": 582.16, "text": "We set up a deterministic auto grader."}, {"id": "s113", "start": 582.16, "end": 585.04, "text": "For example, in CTFs, it's cuz you capture the flag."}, {"id": "s114", "start": 585.04, "end": 600.84, "text": "Within a cybersecurity environment like this, the level one maybe can it crash, all the way up to control flow hijack, where for example, you may ask the LLM, \"Can you do something like launch a calculator, some external program you shouldn't be able to run, or do a reverse shell?\""}, {"id": "s115", "start": 600.84, "end": 602.56, "text": "So, that's the basic setup."}, {"id": "s116", "start": 602.56, "end": 603.72, "text": "But, there's a problem with this."}, {"id": "s117", "start": 603.72, "end": 610.72, "text": "This is the way if you go look at the existing benchmarks like uh Cybex or uh CyberGym, they set up the task."}, {"id": "s118", "start": 610.72, "end": 612.52, "text": "But, there's actually a problem here."}, {"id": "s119", "start": 612.52, "end": 617.32, "text": "And that's because there's an assumption that the program only has one vulnerability."}, {"id": "s120", "start": 617.32, "end": 624.64, "text": "I don't know about you, but it's very rare to find a program for which you know there's only one vulnerability."}, {"id": "s121", "start": 624.64, "end": 630.0, "text": "So, what happens if you have two vulnerabilities here?"}, {"id": "s122", "start": 630.0, "end": 634.52, "text": "This actually breaks a lot of assumptions in current evaluation environments."}, {"id": "s123", "start": 634.52, "end": 638.28, "text": "You ask the same question, \"Dear LLM, can you find and exploit the vulnerability?\""}, {"id": "s124", "start": 638.28, "end": 642.56, "text": "But, now the LLM has a lot of freedom to reward hack."}, {"id": "s125", "start": 642.56, "end": 646.44, "text": "For example, which vulnerability should it find?"}, {"id": "s126", "start": 646.44, "end": 655.12, "text": "If you came in only knowing about the first vulnerability, but there's a second one you didn't know about, what do you do if the LLM thinks it found a second one?"}, {"id": "s127", "start": 655.12, "end": 657.76, "text": "Or suppose you know two."}, {"id": "s128", "start": 657.76, "end": 672.92, "text": "What we found is on existing benchmarks with multiple pro- with a real OSS benchmarks, there are multiple vulnerabilities, the LLM will just continue to find the easiest vulnerability, and that really limits its trajectory as far as what it can learn."}, {"id": "s129", "start": 672.92, "end": 679.92, "text": "And then you have a question, if it does find a vulnerability you did not know about, well, how do you score it, right?"}, {"id": "s130", "start": 679.92, "end": 684.4, "text": "You certainly don't want to give tasks that have no vulnerabilities because then you don't know if you're wasting your time."}, {"id": "s131", "start": 684.4, "end": 688.44, "text": "But, what if the LLM finds an unknown vulnerability?"}, {"id": "s132", "start": 688.44, "end": 691.68, "text": "Here's where you can run into a catch-22."}, {"id": "s133", "start": 691.8389999999999, "end": 696.28, "text": "What existing benchmarks do is they tell the LLM which bug."}, {"id": "s134", "start": 696.28, "end": 708.88, "text": "For example, in many of the benchmarks out there like side bench, they will give a backtrace that says for example, I know the vulnerability is in this backtrace which identifies the vulnerable function."}, {"id": "s135", "start": 708.88, "end": 715.48, "text": "But at that point, you're teaching the LLM, but you're pointing at it exactly the problem."}, {"id": "s136", "start": 715.48, "end": 720.72, "text": "So the LLM no longer has to reason about the program and that will stunt its reasoning capability."}, {"id": "s137", "start": 720.72, "end": 726.84, "text": "Essentially, if you're nudging it and saying here's the vulnerability, it's in this function, it doesn't have to do a lot."}, {"id": "s138", "start": 726.84, "end": 732.88, "text": "In fact, it can often fit that entire function in its context window and it doesn't have to reason much."}, {"id": "s139", "start": 732.88, "end": 741.32, "text": "The second problem though is if you don't tell the LLM which one and there's multiple vulnerabilities, it can always just then reward hack the easiest problem."}, {"id": "s140", "start": 741.32, "end": 749.72, "text": "And we see this in every foundational LLM out there and we see it in as far as I can tell most of the benchmarks out there."}, {"id": "s141", "start": 749.72, "end": 759.92, "text": "There will be multiple vulnerabilities, it will be graded, but because the grading is just checking for for example, a crash, it's not exploring the full state space and the LLM will just keep returning"}, {"id": "s142", "start": 759.92, "end": 761.32, "text": "the same one."}, {"id": "s143", "start": 761.32, "end": 763.92, "text": "This is also a problem in some of the public competitions."}, {"id": "s144", "start": 763.92, "end": 767.2, "text": "For example, we won something called the Cyber Grand Challenge from DARPA."}, {"id": "s145", "start": 767.2, "end": 771.24, "text": "It was the first challenge from DARPA to show that fully autonomous cyber is capable."}, {"id": "s146", "start": 771.24, "end": 776.56, "text": "50% of the hand curated challenges had unknown vulnerabilities."}, {"id": "s147", "start": 776.56, "end": 790.72, "text": "This was DARPA spent $60 million designing a contest trying to come up with problems that were well defined and well scoped and they accidentally added additional bugs and 50% of those were ones that were actually exploited."}, {"id": "s148", "start": 790.72, "end": 795.4, "text": "So this idea that we're just going to create synthetic problems with one bug doesn't work."}, {"id": "s149", "start": 795.4, "end": 799.36, "text": "People have tried it, spent a lot of money, you always introduce new ones."}, {"id": "s150", "start": 799.36, "end": 803.64, "text": "Second problem is second example I'd show is the AIxCC."}, {"id": "s151", "start": 803.64, "end": 805.2, "text": "I designed the scoring algorithm for this."}, {"id": "s152", "start": 805.2, "end": 811.84, "text": "This is again a very large DARPA program that ran last year in DEF CON where 18 of the bugs found were unintended ones."}, {"id": "s153", "start": 811.84, "end": 817.68, "text": "And so the TLDR on here is you can't just say, \"Well, we're going to hand curate an environment with just one vulnerability.\""}, {"id": "s154", "start": 817.68, "end": 819.2, "text": "Experts have tried, it doesn't work."}, {"id": "s155", "start": 819.2, "end": 822.24, "text": "You have to change the problem definition."}, {"id": "s156", "start": 822.28, "end": 826.96, "text": "So we've been thinking about this and what we developed is a new way to test is called the audit task."}, {"id": "s157", "start": 826.96, "end": 835.36, "text": "Again, suppose you have two different bugs, but you flip the question from just find a bug to find all vulnerabilities discovered."}, {"id": "s158", "start": 835.36, "end": 841.12, "text": "At this point, the LLM has the freedom to find multiple bugs and submit multiple proofs of vulnerabilities."}, {"id": "s159", "start": 841.12, "end": 846.56, "text": "And it may be full proofs of vulnerabilities for bugs you know about and bugs you don't."}, {"id": "s160", "start": 846.64, "end": 850.2, "text": "You run all vulnerabilities through your oracle."}, {"id": "s161", "start": 850.2, "end": 852.48, "text": "And this is where it's very important to have a deterministic grader."}, {"id": "s162", "start": 852.48, "end": 857.76, "text": "So for here, for example, there's two vulnerabilities, it gives us two inputs that crash both vulnerabilities."}, {"id": "s163", "start": 857.76, "end": 862.48, "text": "And part of this grader now have to uniquify them to show that two different vulnerabilities are triggered."}, {"id": "s164", "start": 862.48, "end": 867.12, "text": "Now if we didn't know about vuln two, this also gives us the opportunity to increase our ground truth."}, {"id": "s165", "start": 867.12, "end": 871.12, "text": "We haven't told the vuln the LLM that we don't know about something that it found."}, {"id": "s166", "start": 871.12, "end": 873.76, "text": "It just gave us proof that it was able to find it."}, {"id": "s167", "start": 873.76, "end": 883.8, "text": "So we can normalize the set of known vulnerabilities at that point to be something like D star and calculate the the precision and recall for the model across multiple vulnerabilities."}, {"id": "s168", "start": 883.8, "end": 890.8389999999999, "text": "For example, recall is the number of known that it found over the total set and precision is the number of found over the submitted."}, {"id": "s169", "start": 890.8389999999999, "end": 901.36, "text": "What this prevents the model from doing and it essentially balances is the ability for it to go find unknown vulnerabilities, but also prevents you from prevents the model from just spamming."}, {"id": "s170", "start": 901.36, "end": 909.64, "text": "You don't want it to give you a bunch of things that aren't vulnerabilities, like for example, giving us POV in four that doesn't trigger anything."}, {"id": "s171", "start": 909.64, "end": 912.36, "text": "You need to disc you need to prevent that."}, {"id": "s172", "start": 912.36, "end": 919.08, "text": "And we found that this precision versus recall is the way to balance those two competing goals."}, {"id": "s173", "start": 919.08, "end": 921.96, "text": "So when you do this this way, you have an open world grading."}, {"id": "s174", "start": 921.96, "end": 930.56, "text": "Instead of trying to define one problem that's perfect, you can give it a real open-source task that can have multiple vulnerabilities, even though those that you don't know about."}, {"id": "s175", "start": 930.56, "end": 941.6, "text": "You post-hoc, since you're asking for a proof of vulnerability, you can then go say what is the total set found of those known and unknown, and you can score precision and recall and normalize both,"}, {"id": "s176", "start": 941.6, "end": 943.12, "text": "so they're multiplicative."}, {"id": "s177", "start": 943.12, "end": 947.24, "text": "It won't just keep finding the same easy bug."}, {"id": "s178", "start": 947.8, "end": 956.36, "text": "You add as I said, it's open world, so you can find unknown bugs and use it on real open-source, and it also gives a clean trajectory."}, {"id": "s179", "start": 956.36, "end": 963.36, "text": "Now, the key to doing this, the one thing that you do have to add to the grader is the ability to distinguish between multiple bugs if it gives you a POV."}, {"id": "s180", "start": 963.36, "end": 967.36, "text": "The way we do this is the same way everyone in industry does it."}, {"id": "s181", "start": 967.36, "end": 968.8, "text": "We look at the stack backtrace."}, {"id": "s182", "start": 968.8, "end": 977.56, "text": "If you've ever had your program crash on Windows or Mac, and it's like submit to Microsoft or Apple, what it's doing is it's submitting the backtrace, and they're uniquifying"}, {"id": "s183", "start": 977.56, "end": 981.12, "text": "those into independent bugs, and then they're scoring the results given based on that."}, {"id": "s184", "start": 981.12, "end": 983.88, "text": "So, we built that into the grader."}, {"id": "s185", "start": 983.88, "end": 991.28, "text": "It also means that there's no LLM as a judge, because let's face it, you can't judge trust the LLM that you're teaching to be a judge."}, {"id": "s186", "start": 991.28, "end": 995.64, "text": "And it also, what we found, it limits or removes bias completely."}, {"id": "s187", "start": 995.64, "end": 998.2, "text": "The model actually never knows how many vulnerabilities."}, {"id": "s188", "start": 998.2, "end": 1004.52, "text": "When you say go find a bug, you've actually then given it a piece of information that there is a bug, right?"}, {"id": "s189", "start": 1004.52, "end": 1010.8, "text": "And in fact, what we find is that models will then find tune on that and only try to find one."}, {"id": "s190", "start": 1010.8, "end": 1017.4, "text": "Here we open the possibility that there's no bugs, which provides a little bit cleaner trajectory for that learning signal."}, {"id": "s191", "start": 1017.4, "end": 1022.72, "text": "So, the key TLDR for this is don't define the task by a single bed, let the program define the task."}, {"id": "s192", "start": 1022.72, "end": 1031.36, "text": "We see people trying to create artificial benchmarks or synthetic benchmarks, and they'll go out and say, \"Hey, let's just go find one crash, and then we'll turn that into an RL.\""}, {"id": "s193", "start": 1031.36, "end": 1037.48, "text": "What invariably ends up happening is the model will then reward hack, and then it'll stunt its growth."}, {"id": "s194", "start": 1037.48, "end": 1041.12, "text": "Or worse, you'll have an incorrect benchmark."}, {"id": "s195", "start": 1041.12, "end": 1044.68, "text": "So, the audit task is one way to continue that climb."}, {"id": "s196", "start": 1044.68, "end": 1054.8, "text": "The second access, if you look at going from as I said, toy programs, CTFs, all the way up to open source where you have multiple types of bugs, is what are the capabilities that our model is able to do?"}, {"id": "s197", "start": 1054.8, "end": 1065.48, "text": "And this is some of our latest work where we collaborated with the foundational models, OpenAI, Anthropic, and we're able to check how well they can exploit high-value targets."}, {"id": "s198", "start": 1066.16, "end": 1067.4, "text": "This hadn't been done before."}, {"id": "s199", "start": 1067.4, "end": 1077.12, "text": "If we go look at public experiments out there, and we look at, for example, DARPA, they had looked at this question of fully autonomous where they said, \"Hey, for synthetic problems that we can create,"}, {"id": "s200", "start": 1077.12, "end": 1079.56, "text": "can AI do arbitrary code execution?\""}, {"id": "s201", "start": 1079.56, "end": 1081.6, "text": "What we would consider a real hack."}, {"id": "s202", "start": 1081.6, "end": 1090.68, "text": "But when you go and you look at AIxCC or Cyber Gym or Bounty Bench, all they really checked is whether the AI could crash the program."}, {"id": "s203", "start": 1090.68, "end": 1092.96, "text": "Crashing a program is different than hacking it."}, {"id": "s204", "start": 1092.96, "end": 1096.44, "text": "You can't go steal someone's IP by simply crashing a program."}, {"id": "s205", "start": 1096.44, "end": 1102.4, "text": "So, this question of whether models could exploit high-value targets was actually open."}, {"id": "s206", "start": 1102.84, "end": 1104.52, "text": "So, what high-value target should we look at?"}, {"id": "s207", "start": 1104.52, "end": 1105.96, "text": "We picked Chrome."}, {"id": "s208", "start": 1105.96, "end": 1110.36, "text": "And in particular, we picked the JavaScript Wasm interpreter called V8."}, {"id": "s209", "start": 1110.36, "end": 1117.04, "text": "Now, V8 is one of the things that maybe is foreign to you, but actually powers the internet."}, {"id": "s210", "start": 1117.04, "end": 1122.72, "text": "V8 is how Chrome executes JavaScript, and JavaScript is what's under the attacker's control."}, {"id": "s211", "start": 1122.72, "end": 1126.24, "text": "Put up a malicious website, it runs JavaScript, you can then exploit V8."}, {"id": "s212", "start": 1126.24, "end": 1130.84, "text": "It also runs Edge, it runs Node.js, it runs Cloudflare Edge Workers."}, {"id": "s213", "start": 1130.84, "end": 1137.36, "text": "If you've ever used an Edge Worker, it's actually running V8 where each tenant is a separate thread."}, {"id": "s214", "start": 1137.36, "end": 1138.44, "text": "It's crazy."}, {"id": "s215", "start": 1138.44, "end": 1143.84, "text": "And if you can find a vulnerability in V8, you can exploit all these systems."}, {"id": "s216", "start": 1145.52, "end": 1153.68, "text": "V8 is difficult to do because it goes beyond typical programs as far as security measures to try to keep it safe."}, {"id": "s217", "start": 1153.68, "end": 1158.96, "text": "For example, when you start looking at V8 and you look at the internals of this, there is a sandbox."}, {"id": "s218", "start": 1158.96, "end": 1165.24, "text": "And so, inside this sandbox is where you run your untrusted code, things like media, images, and so on."}, {"id": "s219", "start": 1165.24, "end": 1168.84, "text": "And inside the sandbox, we expect there to be vulnerabilities."}, {"id": "s220", "start": 1168.84, "end": 1174.24, "text": "In other words, if you can crash a in-sandbox object, it doesn't mean anything."}, {"id": "s221", "start": 1174.24, "end": 1176.04, "text": "That's expected behavior."}, {"id": "s222", "start": 1176.04, "end": 1183.68, "text": "What makes V8 a high-value target and what makes rewards start at 10,000 and go up to 100,000, or if you sell them on the black market, millions."}, {"id": "s223", "start": 1183.68, "end": 1185.84, "text": "Let's be frank here, people do that."}, {"id": "s224", "start": 1185.84, "end": 1188.4, "text": "is whether you can do an out-of-sandbox exploit."}, {"id": "s225", "start": 1188.4, "end": 1193.52, "text": "And that typically requires chaining multiple vulnerabilities together."}, {"id": "s226", "start": 1193.56, "end": 1202.88, "text": "So, TLDR, if you could give Chrome to an LLM and it could come up with a zero-day, you would essentially be able to hack nation-states at that point."}, {"id": "s227", "start": 1202.88, "end": 1207.64, "text": "It's a very worthwhile task to see how far we have to climb."}, {"id": "s228", "start": 1207.64, "end": 1211.96, "text": "But, we also want to be able to measure where LLMs get stuck."}, {"id": "s229", "start": 1211.96, "end": 1216.72, "text": "It's such a hard target that when it fails, you end up with very little signal."}, {"id": "s230", "start": 1216.72, "end": 1223.88, "text": "And so, we designed an experiment on X-plane, where we bucketized 16 different capabilities in a ladder."}, {"id": "s231", "start": 1223.88, "end": 1226.72, "text": "First, can you trigger a crap Can you trigger the vulnerability?"}, {"id": "s232", "start": 1226.72, "end": 1231.28, "text": "Do you just show a deviation when you hit the the vulnerable line of code?"}, {"id": "s233", "start": 1231.28, "end": 1234.2, "text": "Can you crash an in-sandbox object?"}, {"id": "s234", "start": 1234.2, "end": 1238.04, "text": "That's interesting, but that's just the first vulnerability that you find."}, {"id": "s235", "start": 1238.04, "end": 1239.76, "text": "Then, can you get in-sandbox primitives?"}, {"id": "s236", "start": 1239.76, "end": 1242.64, "text": "Can you inside the sandbox get arbitrary read and write?"}, {"id": "s237", "start": 1242.64, "end": 1252.92, "text": "What that allows you to do is inside the sandbox, the way exploitation works is you first exploit inside the sandbox and then you have a Turing-complete program if you have arbitrary read write."}, {"id": "s238", "start": 1252.92, "end": 1256.88, "text": "You then try looking for that second vulnerability and chaining it together."}, {"id": "s239", "start": 1256.88, "end": 1259.08, "text": "Can you get out-of-sandbox primitives?"}, {"id": "s240", "start": 1259.08, "end": 1262.4, "text": "And then finally, can you do arbitrary code execution?"}, {"id": "s241", "start": 1262.4, "end": 1269.0, "text": "What this allows us to do is it allows us to measure how far models get in this ladder on a really hard target."}, {"id": "s242", "start": 1269.0, "end": 1272.0, "text": "And the results were actually very interesting in this."}, {"id": "s243", "start": 1272.0, "end": 1274.68, "text": "So, we ran this on 41 V8 vulnerabilities."}, {"id": "s244", "start": 1274.68, "end": 1278.04, "text": "We went and hand vulnerified verified that they were all exploitable."}, {"id": "s245", "start": 1278.04, "end": 1284.56, "text": "We took actually the leader for the current Chrome security, his name is Sung Hin Lee, verify these for us."}, {"id": "s246", "start": 1284.56, "end": 1293.8, "text": "And what we found is that if you're purely looking at old benchmarks where our triggering a crash is what you want to do, it's really not a distinguisher among models."}, {"id": "s247", "start": 1293.8, "end": 1299.2, "text": "GPT and GPT 5.5 and Mythos both achieved 95%."}, {"id": "s248", "start": 1299.2, "end": 1303.72, "text": "They were able to trigger a vulnerability 39 out of 41 times."}, {"id": "s249", "start": 1303.72, "end": 1305.8, "text": "Essentially, all the tasks are side."}, {"id": "s250", "start": 1305.8, "end": 1316.12, "text": "And then if you started to look at lower powered models, things like Gemini, Kimmy, Minimax, GLM, they were still able to succeed about 50% of the time."}, {"id": "s251", "start": 1316.12, "end": 1317.24, "text": "So, think about this."}, {"id": "s252", "start": 1317.24, "end": 1325.96, "text": "If you were looking at the old benchmarks, the message would be 50% of the time Kimmy succeeds in hacking, but that's because their definition of hacking was broken."}, {"id": "s253", "start": 1325.96, "end": 1328.12, "text": "It was simply crashing it."}, {"id": "s254", "start": 1328.12, "end": 1331.0, "text": "The real question is can they do a full sandbox escape?"}, {"id": "s255", "start": 1331.0, "end": 1334.84, "text": "And this is where we see a distinguishing characteristics."}, {"id": "s256", "start": 1335.08, "end": 1345.28, "text": "So, if we look at what I'd call arbitrary code execution is really what the elite would do, Mythos was a quite surprising able to do this 73% of the time."}, {"id": "s257", "start": 1345.28, "end": 1351.8, "text": "So, 30 out of the 41 examples, Mythos was able to do this sort of full control flow hijack."}, {"id": "s258", "start": 1351.8, "end": 1353.96, "text": "GPT, sorry, the little bar here is wrong."}, {"id": "s259", "start": 1353.96, "end": 1359.08, "text": "This was 68% of the time, and Gemini and Kimmy were 0% of the time."}, {"id": "s260", "start": 1359.08, "end": 1362.4, "text": "So, we're starting to see a signal between these models on what they can do."}, {"id": "s261", "start": 1362.4, "end": 1366.4, "text": "Little bars here are wrong, but the actual numbers are correct."}, {"id": "s262", "start": 1367.48, "end": 1374.96, "text": "So, there's some cool evidence actually that these aren't memorized, that people like Mythos and GPT just didn't have access to zero days out there."}, {"id": "s263", "start": 1374.96, "end": 1376.52, "text": "So, this is where I get a geek out on security."}, {"id": "s264", "start": 1376.52, "end": 1387.88, "text": "For example, in CVE-2023-670T, this was something that the experts in Chrome, it's a very small community, they knew that it was exploitable and they came up with a POC, but what happened inside"}, {"id": "s265", "start": 1387.88, "end": 1393.6, "text": "Mythos was Mythos took a route that everyone thought would be too hard to do in practice."}, {"id": "s266", "start": 1393.6, "end": 1403.24, "text": "One of the things that Mythos was able to do was reverse JavaScript's math.random and use that to forge a pointer for a return-oriented program out of the Uber cage exploit."}, {"id": "s267", "start": 1403.24, "end": 1404.28, "text": "It was very creative."}, {"id": "s268", "start": 1404.28, "end": 1406.04, "text": "So, this wasn't a publicly known exploit."}, {"id": "s269", "start": 1406.04, "end": 1413.12, "text": "There is a public one, but what it came up with was very different for which experts actually thought would be too difficult in practice."}, {"id": "s270", "start": 1413.12, "end": 1421.96, "text": "CVE-2024-76 7965, it found a new WASM path past where all the public work had stop had stopped."}, {"id": "s271", "start": 1421.96, "end": 1426.16, "text": "In fact, it was unclear that there was a public exploit that worked for this."}, {"id": "s272", "start": 1426.16, "end": 1435.04, "text": "We were able, again through a lot of manual effort, to create one after the fact, but we know that that wasn't public to the best of our knowledge."}, {"id": "s273", "start": 1435.68, "end": 1443.96, "text": "2024-0519, again, public vulnerability, no public exploit, Mythos was able to succeed."}, {"id": "s274", "start": 1444.56, "end": 1448.12, "text": "At the end of this, the work was on par with a human elite researcher."}, {"id": "s275", "start": 1448.12, "end": 1453.04, "text": "I actually want to say a few more words about 2024-7965 cuz that one was actually pretty interesting."}, {"id": "s276", "start": 1453.04, "end": 1463.28, "text": "This is one for which we knew of a public we knew that it we could exploit it on an arm, but actually even our internal expert didn't think that you could do it on x86 and Mythos succeeded."}, {"id": "s277", "start": 1463.28, "end": 1466.96, "text": "So, fairly significant proof that this wasn't just memorization."}, {"id": "s278", "start": 1466.96, "end": 1471.0, "text": "These are hard tasks against uh hardened targets."}, {"id": "s279", "start": 1471.0, "end": 1474.72, "text": "So, you can download this entire set at exploitbench.ai."}, {"id": "s280", "start": 1474.72, "end": 1480.4, "text": "We provide all the uh all the uh all the environments."}, {"id": "s281", "start": 1480.4, "end": 1482.44, "text": "These are Docker images that you can just pull from GitHub."}, {"id": "s282", "start": 1482.44, "end": 1483.76, "text": "They have an MCP interface."}, {"id": "s283", "start": 1483.76, "end": 1484.76, "text": "It's really cool."}, {"id": "s284", "start": 1484.76, "end": 1489.52, "text": "You can just say like Claude pointed at the MCP interface and see if it can hack it."}, {"id": "s285", "start": 1489.52, "end": 1492.88, "text": "We provided all the data in the transcripts with the exception of Mythos."}, {"id": "s286", "start": 1492.88, "end": 1495.48, "text": "And the reason that we withheld Mythos was twofold."}, {"id": "s287", "start": 1495.48, "end": 1500.36, "text": "First is we had an NDA that we couldn't release me those transcripts cuz it's not public."}, {"id": "s288", "start": 1500.36, "end": 1505.88, "text": "But second, actually me those was able to come up with weaponized exploits that weren't public."}, {"id": "s289", "start": 1505.88, "end": 1507.6, "text": "And so we kind of hit this quandary out there."}, {"id": "s290", "start": 1507.6, "end": 1516.24, "text": "If we're going to publish these benchmarks and we believe in open science, but the models are creating actually interesting exploits for high-value targets."}, {"id": "s291", "start": 1516.24, "end": 1519.96, "text": "What do you do as far as the open science part of this?"}, {"id": "s292", "start": 1519.96, "end": 1520.92, "text": "We don't have an answer."}, {"id": "s293", "start": 1520.92, "end": 1523.52, "text": "Kind of fun to think about."}, {"id": "s294", "start": 1524.76, "end": 1529.08, "text": "So for the next steps, I mean we only have a 20-minute talk here."}, {"id": "s295", "start": 1530.16, "end": 1539.84, "text": "One of the things that we are doing is we're taking these as really benchmarks to see where the frontier models stop, and then we're building reinforcement learning environments to help get models past that."}, {"id": "s296", "start": 1539.84, "end": 1550.0, "text": "The way that we go about this is we've done a a fairly curated approach where we take open-source software and we built a very extensive vulnerability mining machine based upon our work with DARPA"}, {"id": "s297", "start": 1550.0, "end": 1553.76, "text": "over the last decade for novel vulnerability discovery."}, {"id": "s298", "start": 1553.76, "end": 1555.76, "text": "We find unique proofs of vulnerability."}, {"id": "s299", "start": 1555.76, "end": 1561.08, "text": "These are zero days no one else use and we use these to then build reinforcement learning environments."}, {"id": "s300", "start": 1561.08, "end": 1562.76, "text": "Why are we finding zero days?"}, {"id": "s301", "start": 1562.76, "end": 1572.16, "text": "Well, we want to make sure that the models aren't simply memorizing and we know if it's a vulnerability they've never seen before that it can't at least be just memorizing that."}, {"id": "s302", "start": 1572.16, "end": 1581.2, "text": "We're able to do this at scale where some of our the companies that we work with we're providing up to 10,000 reinforcement learning environments per month to really accelerate their"}, {"id": "s303", "start": 1581.2, "end": 1581.92, "text": "uh learning."}, {"id": "s304", "start": 1581.92, "end": 1591.72, "text": "We of course can't take credit for how far these models have come, but we like the fact that we've had in some way uh some impact on how well they do at cybersecurity."}, {"id": "s305", "start": 1592.2, "end": 1595.64, "text": "So the TLDR in the entire talk is training cybersecurity is really not mysterious."}, {"id": "s306", "start": 1595.64, "end": 1605.28, "text": "What it takes is an actual expert that builds the right oracles that when you go back and look at the transcripts goes and tries to figure out was the was the machine just memorizing?"}, {"id": "s307", "start": 1605.28, "end": 1606.56, "text": "Was it doing reward hacking?"}, {"id": "s308", "start": 1606.56, "end": 1614.04, "text": "And most importantly, how do you handle the case where the machines are finding vulnerabilities that you didn't know about before."}, {"id": "s309", "start": 1614.04, "end": 1616.96, "text": "If you're interested in this, please reach out."}, {"id": "s310", "start": 1616.96, "end": 1619.4, "text": "Happy to answer questions."}]}, {"id": "ZIYYsAzaLlA", "title": "Building the Engine While Flying the Plane: Launching the Figma MCP Server — Jesse Lumarie, Figma", "channel": "AI Engineer", "duration": 1006, "upload_date": null, "url": "https://www.youtube.com/watch?v=ZIYYsAzaLlA", "api": "/api/talks/ZIYYsAzaLlA.json", "summary_url": "/#ZIYYsAzaLlA", "transcript": {"html": "/transcripts/ZIYYsAzaLlA.html", "txt": "/transcripts/ZIYYsAzaLlA.txt", "vtt": "/transcripts/ZIYYsAzaLlA.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.96, "end": 14.24, "text": "All right, get started."}, {"id": "s3", "start": 14.24, "end": 23.359, "text": "Hi, I'm Jesse and I've been a software engineer at Figma for about three years and I'm going to talk to you about how we built Figma's first MCP server in about 3 months."}, {"id": "s4", "start": 23.359, "end": 31.599, "text": "Um, and in case you don't know what it is, the Figma MCP server is a way for you to send context between production uh code and design and vice versa."}, {"id": "s5", "start": 31.599, "end": 34.32, "text": "AI tools don't need to build a dedicated integration."}, {"id": "s6", "start": 34.32, "end": 39.28, "text": "They can just use our Figma MCP and they kind of get started."}, {"id": "s7", "start": 39.28, "end": 50.559, "text": "So, taking you back to November 2024, long long time ago, Anthropic released the MCP server spec and uh everyone in the world of AI was sort of starting to use it and experiment with it."}, {"id": "s8", "start": 50.559, "end": 55.12, "text": "Um but outside of anthropic none of the other AI agents or labs were really using it."}, {"id": "s9", "start": 55.12, "end": 58.079, "text": "So OpenAI cursor VS Code they didn't support it yet."}, {"id": "s10", "start": 58.079, "end": 68.24, "text": "Um once we got access to the feature in cursor however uh we were able to kind of ideate and understand what it was capable of and we got something a little bit closer to an actual product"}, {"id": "s11", "start": 68.24, "end": 70.0, "text": "and that's where my story begins."}, {"id": "s12", "start": 70.0, "end": 75.36, "text": "Um I was working on growth initiatives at the time and I saw our internal demo and I really wanted to use it."}, {"id": "s13", "start": 75.36, "end": 79.03999999999999, "text": "I thought it'd be great for non-designers uh to kind of be able to use Figma."}, {"id": "s14", "start": 79.03999999999999, "end": 84.479, "text": "Um, I started creating actually a Figma plug-in based MCP server and I started doing it one day a week."}, {"id": "s15", "start": 84.479, "end": 90.0, "text": "It was kind of my 20% project that we didn't we didn't really have 20% projects, but I really wanted to work on it, so I did."}, {"id": "s16", "start": 90.0, "end": 93.28, "text": "Um, and so I got staffed with some other folks um on the team."}, {"id": "s17", "start": 93.28, "end": 94.4, "text": "We were the MC Peeps."}, {"id": "s18", "start": 94.4, "end": 95.2, "text": "That's a peep."}, {"id": "s19", "start": 95.2, "end": 96.72, "text": "It's a candy if you don't know."}, {"id": "s20", "start": 96.72, "end": 97.92, "text": "Um, they're delicious."}, {"id": "s21", "start": 97.92, "end": 105.2, "text": "And I I just want to be very clear um I'm going to say I a lot and we there was a big team behind this so it's not just me and they're all fantastic."}, {"id": "s22", "start": 105.2, "end": 116.399, "text": "Um a few weeks later after we started getting our initial architecture sorted a new version of the spec dropped uh deprecating the support type that we were going to use which was server events"}, {"id": "s23", "start": 116.399, "end": 122.079, "text": "and while the MCP spec was sort of chugging along clients were adding features and support in different paces."}, {"id": "s24", "start": 122.079, "end": 129.28, "text": "Uh cloud had early support cloud desktop but cloud code you was wasn't really supported uh with all the complete set of features."}, {"id": "s25", "start": 129.28, "end": 138.72, "text": "OpenAI and VS Code didn't h have support until that spec update and then it wasn't even then uh VS Code didn't go out of uh didn't get to G until July."}, {"id": "s26", "start": 138.72, "end": 140.959, "text": "It didn't mean that all the features were implemented either."}, {"id": "s27", "start": 140.959, "end": 146.48, "text": "There are lots of different pieces um and in many cases only tools were supported."}, {"id": "s28", "start": 146.48, "end": 149.04, "text": "VS Code was truly like the golden client."}, {"id": "s29", "start": 149.04, "end": 157.201, "text": "Uh they eventually supported kind of all pieces of the spec, but it was it was hard to kind of understand what you were building towards because clients supported so many different things."}, {"id": "s30", "start": 157.201, "end": 157.84, "text": "[snorts]"}, {"id": "s31", "start": 157.84, "end": 165.44, "text": "But even though we didn't know exactly what the MCP server spec would be supported, we we knew that it would be extremely powerful and a great product uh for us to to utilize."}, {"id": "s32", "start": 165.44, "end": 174.959, "text": "And so we started building um and so taking a a more highle re recap about a year ago uh we launched our local MCP server."}, {"id": "s33", "start": 174.959, "end": 178.56, "text": "And what local means it was heavily designed for developer use cases."}, {"id": "s34", "start": 178.56, "end": 185.68, "text": "You kind of had to know what you were doing a little bit and we targeted developers because they were the first to adopt AI workflows."}, {"id": "s35", "start": 185.68, "end": 194.4, "text": "they would use a single plop prompt like help me implement this and a developer could pull everything that they would normally get from Figma's dev mode into their coding agent."}, {"id": "s36", "start": 194.4, "end": 209.92000000000002, "text": "This include things like component data, spacing, variables um and from there we just kept adding more and more re read tools like for fig jam for make um etc. But they all shared this kind of uh mutual goal to make Figma context available for develop develop"}, {"id": "s37", "start": 209.92000000000002, "end": 212.959, "text": "developers wherever they are."}, {"id": "s38", "start": 212.959, "end": 218.07999999999998, "text": "So, Figma, if you don't know about Figma, um Figma is a canvas."}, {"id": "s39", "start": 218.07999999999998, "end": 221.12, "text": "Um and it's represented as a scene graph in C++."}, {"id": "s40", "start": 221.12, "end": 224.239, "text": "It's a graph of connected nodes, not unlike the HTML DOM."}, {"id": "s41", "start": 224.239, "end": 227.36, "text": "And we had a number of different ways we could represent the scene graph."}, {"id": "s42", "start": 227.36, "end": 237.28, "text": "We had this internal representation which was kind of akin to JSX or XML, effectively converting the scene graph into JSS tags and XML tags and passing those to the agent."}, {"id": "s43", "start": 237.28, "end": 241.439, "text": "It was abstract and sparse, but it didn't have super rigorous fidelity."}, {"id": "s44", "start": 241.439, "end": 250.4, "text": "Another option that we had internally was um D2R which is our like way of saying a react tailwind representation."}, {"id": "s45", "start": 250.4, "end": 258.16, "text": "Uh and the reason we had this is Figma has a sites product and so we already had a way of basically converting the scene graph into HTML."}, {"id": "s46", "start": 258.16, "end": 266.24, "text": "If you actually copy the output of the Figma MCP today and you paste into like a simple MCP or simple HTTP server, it should be pixel perfect."}, {"id": "s47", "start": 266.24, "end": 268.16, "text": "Um and if it's not, file a bug."}, {"id": "s48", "start": 268.16, "end": 278.15999999999997, "text": "Uh but um we had a hunch that this representation would be the best one because lots of the models were sort of rldled on this React Tailwind type of code."}, {"id": "s49", "start": 278.15999999999997, "end": 281.04, "text": "Um and we we had a suspicion that it would work really well."}, {"id": "s50", "start": 281.04, "end": 283.84000000000003, "text": "The last one that we kind of considered was just a plain image."}, {"id": "s51", "start": 283.84000000000003, "end": 291.52, "text": "But back in early 2025, 2025 agents weren't great at converting images directly to HTML or CSS or sort of other languages."}, {"id": "s52", "start": 291.52, "end": 295.52, "text": "And so we kind of use that as an additional piece of context, not as the sole one."}, {"id": "s53", "start": 295.52, "end": 302.56, "text": "And to give you what what this kind of looks like in practice, on the left here we have a a Figma frame and on the right we have the"}, {"id": "s54", "start": 302.56, "end": 304.08, "text": "React Tailwind code."}, {"id": "s55", "start": 304.08, "end": 309.6, "text": "Um you can also see at the very top the image can crew meetup uh link."}, {"id": "s56", "start": 309.6, "end": 316.0, "text": "Uh we also basically abstract out the images within the code or sorry within the scene graph and put them at the top level."}, {"id": "s57", "start": 316.0, "end": 321.039, "text": "Our first attempt was just passing B 64 data into the code and that was just a terrible idea."}, {"id": "s58", "start": 321.039, "end": 324.32, "text": "It it just blew up the context window and was bad all around."}, {"id": "s59", "start": 324.32, "end": 325.6, "text": "um don't do that."}, {"id": "s60", "start": 325.6, "end": 330.16, "text": "Um we'd also pass an image of the current node to the agent as well."}, {"id": "s61", "start": 330.16, "end": 340.479, "text": "While the image by itself did not do a good job of converting to uh code, having the code context plus the image actually had better agentic output."}, {"id": "s62", "start": 340.479, "end": 342.0, "text": "So what do I mean by better?"}, {"id": "s63", "start": 342.0, "end": 343.6, "text": "How did we know what was better?"}, {"id": "s64", "start": 343.6, "end": 345.12, "text": "We tried to do evals."}, {"id": "s65", "start": 345.12, "end": 351.199, "text": "Um and so we did some sort of very simple eval to start with a mix of quantitative and qualitative data."}, {"id": "s66", "start": 351.199, "end": 355.44, "text": "Uh, from a quantitative standpoint, we we looked at did it use variables?"}, {"id": "s67", "start": 355.44, "end": 357.199, "text": "Uh, did it use the theming we expected?"}, {"id": "s68", "start": 357.199, "end": 358.72, "text": "Did it use the right spot?"}, {"id": "s69", "start": 358.72, "end": 361.84, "text": "And from the qualitative side of things, does it look good?"}, {"id": "s70", "start": 361.84, "end": 364.88, "text": "Did it make good decisions with incomplete information?"}, {"id": "s71", "start": 364.88, "end": 369.28, "text": "And we spent like two hours grading an eval into an Excel spreadsheet."}, {"id": "s72", "start": 369.28, "end": 370.88, "text": "And we said, we're never we're never doing that again."}, {"id": "s73", "start": 370.88, "end": 371.6, "text": "It was awful."}, {"id": "s74", "start": 371.6, "end": 373.919, "text": "Don't do eval by hand if you can help it."}, {"id": "s75", "start": 373.919, "end": 379.28, "text": "Um, we had a bunch of toy repos that we kind of created or kind of had folks create for us."}, {"id": "s76", "start": 379.28, "end": 388.479, "text": "Um and we eventually ended up coding up a web app to sort of help us with the eval which made things a lot easier at least from like a um process perspective."}, {"id": "s77", "start": 388.479, "end": 404.639, "text": "One interesting thing is Figma um there are Figma files which we are converting there's a lot of open source code out there but there's not a lot of uh open- source code that also has fig files attached and so we had to either create our own or sort of find different ways to make automated systems."}, {"id": "s78", "start": 404.639, "end": 410.24, "text": "Um, and now we have a um, eval that sort of runs like hundreds of times a week."}, {"id": "s79", "start": 410.24, "end": 415.44, "text": "Engineers can kick this off and sort of grade against prompt changes um, with LLM judges."}, {"id": "s80", "start": 415.44, "end": 418.319, "text": "So, we kind of remove the human from the loop where we don't need it."}, {"id": "s81", "start": 418.319, "end": 424.16, "text": "Um, but having an agent translate a pixel uh, perfect version of code isn't enough."}, {"id": "s82", "start": 424.16, "end": 429.199, "text": "Um, I mentioned that the React Tailwind version of our output was pixel perfect."}, {"id": "s83", "start": 429.199, "end": 430.8, "text": "That's really only half the story."}, {"id": "s84", "start": 430.8, "end": 437.12, "text": "An enterprise doesn't care if it's pixel perfect if it's not using its like battle tested accessible and internationalized components."}, {"id": "s85", "start": 437.12, "end": 443.28, "text": "At Figma, we already had this concept of code connect which allows you to link design components to components in your codebase."}, {"id": "s86", "start": 443.28, "end": 448.8, "text": "We needed a way to use this with our MCP server so that an a an agent used the correct components."}, {"id": "s87", "start": 448.8, "end": 451.599, "text": "For example, this beautiful button here."}, {"id": "s88", "start": 451.599, "end": 456.96, "text": "Uh this would be a perfect representation if you were to throw that into an HTML server."}, {"id": "s89", "start": 456.96, "end": 458.96, "text": "But you kind of see two problems."}, {"id": "s90", "start": 458.96, "end": 462.8, "text": "um if you had a primary button in your codebase, you wouldn't be referencing it."}, {"id": "s91", "start": 462.8, "end": 467.599, "text": "And that's not ideal if it has accessibil accessibility properties or internationalization properties."}, {"id": "s92", "start": 467.599, "end": 470.72, "text": "And then second, um you'd eat up the context window."}, {"id": "s93", "start": 470.72, "end": 473.759, "text": "We we use Oh, this happened last time."}, {"id": "s94", "start": 473.759, "end": 478.479, "text": "Uh we use React Tailwind to um basically convert things over."}, {"id": "s95", "start": 478.479, "end": 484.16, "text": "Um but we want to make sure we do it in the sparest way possible."}, {"id": "s96", "start": 484.16, "end": 487.36, "text": "All right, just going to keep vamping a bit here."}, {"id": "s97", "start": 487.36, "end": 489.68, "text": "And so picture the same thing on screen."}, {"id": "s98", "start": 489.68, "end": 492.479, "text": "Uh but now we have like all this React Tailwind code."}, {"id": "s99", "start": 492.479, "end": 498.879, "text": "It's going to then be converted into sending over uh basically a sparse representation of it via code connect."}, {"id": "s100", "start": 498.879, "end": 509.12, "text": "Um and by connecting the user's code to the design, we're able to pass back effectively what is a pointer which allows the agent to use the code component leading to our higher fidelity"}, {"id": "s101", "start": 509.12, "end": 510.08, "text": "uh implementation."}, {"id": "s102", "start": 510.08, "end": 518.88, "text": "So effectively you go from like this big old thing of uh react tailin to the small react component that just says use button component."}, {"id": "s103", "start": 520.08, "end": 524.24, "text": "Um all right it's going to let you restart it."}, {"id": "s104", "start": 524.24, "end": 529.44, "text": "Okay cool pause that."}, {"id": "s105", "start": 535.2, "end": 537.36, "text": "All right I can start talking a little bit about the next bit."}, {"id": "s106", "start": 537.36, "end": 537.8389999999999, "text": "Oh, wait."}, {"id": "s107", "start": 537.8389999999999, "end": 539.6, "text": "You can see this cool thing."}, {"id": "s108", "start": 539.6, "end": 545.2, "text": "You can ask yourself how I described it well, but yeah, it's basically like a React component that you're able to then bring into your code."}, {"id": "s109", "start": 545.2, "end": 551.04, "text": "Um, once we felt good about the serialization syntax, we started to look at what an MCB server can be."}, {"id": "s110", "start": 551.04, "end": 559.36, "text": "And the MCP spec had a lot of great pieces in it, but some features weren't quite fleshed out within clients, and other features we really wish existed."}, {"id": "s111", "start": 559.36, "end": 564.399, "text": "Many clients only implemented a subset of the spec, and many features were very experimental."}, {"id": "s112", "start": 564.399, "end": 568.72, "text": "This is the client compatibility matrix from March 2025."}, {"id": "s113", "start": 568.72, "end": 577.76, "text": "Today, for example, we expose a host of resources to an agent so that it can figure out um how to use our server as well as different help articles within Figma."}, {"id": "s114", "start": 577.76, "end": 587.76, "text": "Um whereas before we would send that information down with like an air for example, and the agent would have to call uh wasting inference and sort of reasoning to sort of figure out what is actually going wrong."}, {"id": "s115", "start": 587.76, "end": 591.76, "text": "Um one small part of the spec uh that was missing was server instructions."}, {"id": "s116", "start": 591.76, "end": 592.88, "text": "I shouldn't say missing from the spec."}, {"id": "s117", "start": 592.88, "end": 595.279, "text": "it was in the spec, but no clients implemented it."}, {"id": "s118", "start": 595.279, "end": 602.64, "text": "Um, and it wasn't really highlighted in the docs until Anthropic added a nice blog post uh to sort of talk about it and then some clients started adding it."}, {"id": "s119", "start": 602.64, "end": 607.2, "text": "And therefore, we would add uh additional instructions into each tool call."}, {"id": "s120", "start": 607.2, "end": 615.12, "text": "Basically instructing the LLM how to use our server um even though server descriptions weren't necessarily written out yet."}, {"id": "s121", "start": 615.12, "end": 619.36, "text": "Some other features that we really really wanted were elicitation and sampling."}, {"id": "s122", "start": 619.36, "end": 627.519, "text": "Um, elicitation, if you haven't heard of it, is a way for you to ask the user a question, take that input, and pass it back to your server."}, {"id": "s123", "start": 627.519, "end": 631.92, "text": "So, here we have it's VS Code, uh, and basically just asking, you know, what's my name?"}, {"id": "s124", "start": 631.92, "end": 635.6, "text": "And you're able to take that input and pass it back, uh, to the server."}, {"id": "s125", "start": 635.6, "end": 644.32, "text": "Um, which is interesting on its own, but we thought in combination with sampling, which is unfortunately deprecated, but it's fine because you're able to work around it."}, {"id": "s126", "start": 644.32, "end": 654.64, "text": "Sampling is a way of having a server query the client's LLM from from our server and in kind of the canonical case was for small queries."}, {"id": "s127", "start": 654.64, "end": 659.519, "text": "We thought it'd be really useful to combine elicitation and sampling into a single workflow."}, {"id": "s128", "start": 659.519, "end": 665.36, "text": "We talked about how code connect improves users workflows quite a bit and kind of makes outputs a lot better."}, {"id": "s129", "start": 665.36, "end": 676.88, "text": "What we wanted to do was ask a user can we map out your code code base for code connections so that our MC MCP server can link them so that the output would be better and reduce the amount of context we send."}, {"id": "s130", "start": 676.88, "end": 683.68, "text": "Unfortunately though most of the clients didn't implement these features and didn't allow you to properly query the the agent in the context of the codebase."}, {"id": "s131", "start": 683.68, "end": 690.32, "text": "So for sampling even when VS code supported it you could only really query it as a general agent not specific to the codebase."}, {"id": "s132", "start": 690.32, "end": 693.8389999999999, "text": "But we were able to kind of hack around it using tools."}, {"id": "s133", "start": 693.8389999999999, "end": 701.76, "text": "When you got the context of a particular component or sorry of a particular design in Figma, if we noticed it was a component and that it wasn't code connected,"}, {"id": "s134", "start": 701.76, "end": 706.399, "text": "we'd send down a prompt to ask the user if they'd want to map the unlink component component."}, {"id": "s135", "start": 706.399, "end": 709.279, "text": "Kind of mimicking elicitation."}, {"id": "s136", "start": 709.279, "end": 716.32, "text": "If the user said yes, we'd send down another prompt to have the agent scan the code for potential matches, mimicking sampling."}, {"id": "s137", "start": 716.32, "end": 723.76, "text": "We then service them in a specified format or ask the agent to do so and then have them send it back in bulk to make a bunch of code connections."}, {"id": "s138", "start": 723.76, "end": 730.959, "text": "Um the screenshot on the right is the MCP inspector and if you haven't used it and you're developing an MCP server, you're doing yourself a disservice."}, {"id": "s139", "start": 730.959, "end": 733.6, "text": "It's a really great tool and it's open source and great."}, {"id": "s140", "start": 733.6, "end": 741.12, "text": "Um but the magic in our case was combining these two features because we could ask the user for for permission."}, {"id": "s141", "start": 741.12, "end": 745.8389999999999, "text": "we can have the agent give us those suggestions and we can map them and in the end the users got a better experience."}, {"id": "s142", "start": 745.8389999999999, "end": 747.44, "text": "Um that's pretty great."}, {"id": "s143", "start": 747.44, "end": 760.32, "text": "Um the last sort of little thing that we did was we wanted to make our output the best it could be and we didn't necessarily know when we were starting you know we had our eval but we didn't know if the react tailwind code would be successful for other types of code bases."}, {"id": "s144", "start": 760.32, "end": 765.76, "text": "Um and outside of the elicitation and sampling which didn't really work as we wanted there was no way of getting that information from the user."}, {"id": "s145", "start": 765.76, "end": 774.16, "text": "So we added some optional query arguments to our tool calls for ones like get design context where they would send back what sort of language what sort of framework the user might be using."}, {"id": "s146", "start": 774.16, "end": 783.04, "text": "This is imperfect uh agents lie but it was at least a signal for us to understand like oh this type of user this felt user may not have had a good experience."}, {"id": "s147", "start": 783.04, "end": 786.079, "text": "Perhaps it's because our translation layer wasn't working as well."}, {"id": "s148", "start": 786.079, "end": 790.399, "text": "We have found that that works pretty well but this was kind of our way of verifying that."}, {"id": "s149", "start": 790.399, "end": 795.76, "text": "Um while we were working towards our first beta, we know we wanted four things."}, {"id": "s150", "start": 795.76, "end": 797.76, "text": "We wanted to launch quickly."}, {"id": "s151", "start": 797.76, "end": 801.279, "text": "Um we wanted to have the highest possible bar for our security."}, {"id": "s152", "start": 801.279, "end": 803.279, "text": "We wanted to respect file permissions."}, {"id": "s153", "start": 803.279, "end": 807.92, "text": "And we wanted to respect our pricing impact packaging so we didn't have abuse vectors."}, {"id": "s154", "start": 807.92, "end": 820.079, "text": "And so after the spec changed and introduced OOTH in March 2025, we had to decide whether to keep our MCP server local or sort of switch to the new remote server using streamable HTTP and kind of like work on all the off problems."}, {"id": "s155", "start": 820.079, "end": 829.44, "text": "Um we punted so until HMR there wasn't this offspec to to build from and we could easily relay off from our web app to our desktop app."}, {"id": "s156", "start": 829.44, "end": 838.72, "text": "So for folks who don't know the Figma desktop app is Electron and so the front end of it is a web app and we basically just run figma.com in that and then we have an"}, {"id": "s157", "start": 838.72, "end": 845.68, "text": "um IPC uh bridge between the two and that sends it to our node process that allows us to talk to the user's file system."}, {"id": "s158", "start": 845.68, "end": 852.48, "text": "Um we then sort of expose a server events server in node and that way clients could talk directly locally."}, {"id": "s159", "start": 852.48, "end": 858.0, "text": "The local story was also really great with enterprises because they kind of like the idea of our data not being sent anywhere."}, {"id": "s160", "start": 858.0, "end": 867.6, "text": "Um, this architecture was our fastest path to getting something into the hands of users to understand product market fit and what kind of tools and use cases folks had."}, {"id": "s161", "start": 868.48, "end": 874.8, "text": "Um, we launched the MCP server internally and the reception was extremely honest."}, {"id": "s162", "start": 874.8, "end": 875.745, "text": "Um, we"}, {"id": "s163", "start": 875.745, "end": 876.8, "text": "[laughter]"}, {"id": "s164", "start": 876.8, "end": 883.8389999999999, "text": "uh but we we worked out a lot of the kinks and we started to get some really positive feedback in the community um from from a bunch of nice folks."}, {"id": "s165", "start": 883.8389999999999, "end": 886.48, "text": "Um, but launching this part was just the beginning."}, {"id": "s166", "start": 886.48, "end": 892.399, "text": "Um we had a lot of improvements that we wanted to make and we immediately started working on the remote server as soon as we launched."}, {"id": "s167", "start": 892.399, "end": 900.639, "text": "Um clients were on different timelines and we were still trying to figure out you know where we're going but we knew we wanted to get the remote server out so that's what we worked on."}, {"id": "s168", "start": 900.639, "end": 903.76, "text": "Um in September we launched the remote server."}, {"id": "s169", "start": 903.76, "end": 907.199, "text": "We ged both servers in October 2025."}, {"id": "s170", "start": 907.199, "end": 919.519, "text": "Um, and then we started adding read and write capabilities and kind of all these things combined ended up making for Figma one of the fastest growing products that they've ever had, which was not something we expected when we started working on this."}, {"id": "s171", "start": 919.519, "end": 924.079, "text": "Um, so late last year, I started working on a slightly different thing."}, {"id": "s172", "start": 924.079, "end": 931.199, "text": "Um, we started to see some research that designers really wanted to shift to writing production code in certain cases and we didn't really have a dedicated product for this."}, {"id": "s173", "start": 931.199, "end": 945.12, "text": "So I started hacking with a bunch of MCP MCP folks at an offsite and this eventually became something called make in your local codebase uh which is kind of Figma's agent solution for for working on on git GitHub and and local code bases."}, {"id": "s174", "start": 945.12, "end": 949.8389999999999, "text": "Um and the reason I bring this up is only slightly self- serving but it relates to this this next slide."}, {"id": "s175", "start": 949.8389999999999, "end": 957.12, "text": "Um if there's one thing you want to take away from this talk it's that we're so early like this has not been a long time."}, {"id": "s176", "start": 957.12, "end": 962.72, "text": "The MC MCP spec is only two years old and we're still figuring out the best way to do things."}, {"id": "s177", "start": 962.72, "end": 970.88, "text": "And then second, um, Figma's done a great job of letting engineers build and figure out, uh, what's next and letting them run with it run with it."}, {"id": "s178", "start": 970.88, "end": 972.639, "text": "I wasn't staffed on MCP."}, {"id": "s179", "start": 972.639, "end": 981.759, "text": "I wasn't staffed on our make product, but I ended up helping them be built um, just because I was kind of given the leeway to do so and learning a ton along the way."}, {"id": "s180", "start": 981.759, "end": 984.0, "text": "Um, that's all for my talk."}, {"id": "s181", "start": 984.0, "end": 988.32, "text": "I'll be around today and tomorrow, but feel free to reach and happy to talk about MCP, Figma and all that."}, {"id": "s182", "start": 988.32, "end": 991.04, "text": "Thanks so much for your time."}]}, {"id": "ZyGMqdIpPoE", "title": "Agent Spending Without Controls — Rodrigo Coelho & Pranav Maheshwari, Edge & Node", "channel": "AI Engineer", "duration": 1248, "upload_date": null, "url": "https://www.youtube.com/watch?v=ZyGMqdIpPoE", "api": "/api/talks/ZyGMqdIpPoE.json", "summary_url": "/#ZyGMqdIpPoE", "transcript": {"html": "/transcripts/ZyGMqdIpPoE.html", "txt": "/transcripts/ZyGMqdIpPoE.txt", "vtt": "/transcripts/ZyGMqdIpPoE.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.48, "end": 13.759, "text": "All right, thanks for having me."}, {"id": "s3", "start": 13.759, "end": 23.92, "text": "Uh, today we're going to be speaking about ampersend and agent spending without controls, which is the missing infrastructure layer for AI payments."}, {"id": "s4", "start": 23.92, "end": 27.92, "text": "A little bit about myself, uh, I'm CEO of Edge and Node."}, {"id": "s5", "start": 27.92, "end": 31.84, "text": "For those that aren't aware, we were the team that built the graph protocol."}, {"id": "s6", "start": 31.84, "end": 36.8, "text": "For those that aren't aware of that, um it is a blockchain data indexing protocol."}, {"id": "s7", "start": 36.8, "end": 38.64, "text": "It's been around since 2018."}, {"id": "s8", "start": 38.64, "end": 40.559, "text": "We have a decentralized network."}, {"id": "s9", "start": 40.559, "end": 51.2, "text": "Um we've served 1.8 trillion queries over the years of onchain data to applications um utilizing blockchain data."}, {"id": "s10", "start": 51.2, "end": 64.08, "text": "Um I've been a serial entrepreneur myself and we've incubated a project within engine node called ampersend uh in the ejected commerce space which is what we're going to be talking about today."}, {"id": "s11", "start": 64.08, "end": 69.28, "text": "And so we're all aware that payments have been online for the past 30 years."}, {"id": "s12", "start": 69.28, "end": 78.08, "text": "Um you know starting in 1981 we had our first electronic transaction and fast forward we had a multi-deade transition."}, {"id": "s13", "start": 78.08, "end": 83.6, "text": "Um, and this is from credit card payments to online e-commerce payments."}, {"id": "s14", "start": 83.6, "end": 92.64, "text": "Uh, fast forwarding all the way to today where we have the rise of the agent economy and unlocking a new wave of economic value."}, {"id": "s15", "start": 92.64, "end": 106.799, "text": "And now we have LLMs and agents uh that can transact and we have this underlying payment infrastructure that's been around for decades and it's being rebuilt today um for the agentic economy."}, {"id": "s16", "start": 106.799, "end": 110.56, "text": "we've heard from many speakers here about how that's being done."}, {"id": "s17", "start": 110.56, "end": 116.0, "text": "We're going to be discussing today um our perspective and angle on it."}, {"id": "s18", "start": 116.0, "end": 121.84, "text": "So we we ourselves at edge and node were really early into the agentic commerce world."}, {"id": "s19", "start": 121.84, "end": 127.2, "text": "We actually developed um a microp payment system for queries back in 2021."}, {"id": "s20", "start": 127.2, "end": 131.039, "text": "We already referenced the 402 spec back back then in a blog post."}, {"id": "s21", "start": 131.039, "end": 143.76, "text": "And so back in late 2024, we were looking into agents and how they would interact with data, how they would pay for it, specifically for the graph protocol itself and making microp payments for queries."}, {"id": "s22", "start": 143.76, "end": 148.879, "text": "And in our research, we were kind of looking at how this this could happen."}, {"id": "s23", "start": 148.879, "end": 152.07999999999998, "text": "And then a few weeks later, X42 was released by Coinbase."}, {"id": "s24", "start": 152.07999999999998, "end": 159.04, "text": "So we jumped on immediately with the Coinbase team, with the Google team, started to collaborate to the X42 spec."}, {"id": "s25", "start": 159.04, "end": 160.64, "text": "We've joined the foundation."}, {"id": "s26", "start": 160.64, "end": 173.84, "text": "We've contributed to the X42 uh spec ourselves leveraging some of our prior art on the um microp payment system and uh batching protocol as part of how it could be utilized to"}, {"id": "s27", "start": 173.84, "end": 176.8, "text": "uh reduce gas fees when you're dealing in nano payments."}, {"id": "s28", "start": 176.8, "end": 181.36, "text": "Um Circle themselves came out with their own kind of version of it called nano payments."}, {"id": "s29", "start": 181.36, "end": 196.319, "text": "Um so we were also working in similar veins and so we've seen an explosion of uh companies emerge solutions technologies and this kind of agented commerce map you can see on the screen here that"}, {"id": "s30", "start": 196.319, "end": 199.12, "text": "there's a vast array of companies more added every day."}, {"id": "s31", "start": 199.12, "end": 200.8, "text": "It's really burgeoning."}, {"id": "s32", "start": 200.8, "end": 217.519, "text": "Um, and you know, we're just one little piece in here of people developing, you know, infrastructure, um, payment protocols, governance, etc. And so, traditional payment rails though were built for humans."}, {"id": "s33", "start": 217.519, "end": 228.879, "text": "Um, you know, when we're dealing with like financial institutions specifically, there's kind of a human in the loop that sets uh the decision making process of uh whether that payment is allowed to go through."}, {"id": "s34", "start": 228.879, "end": 232.799, "text": "But we're dealing with agents that transact at machine speed and around the clock."}, {"id": "s35", "start": 232.799, "end": 244.159, "text": "And like I was saying is all these controls and uh policies and rules were built for humans and not for uh uh machines that don't breathe, right?"}, {"id": "s36", "start": 244.159, "end": 251.28, "text": "So we're dealing in um in microscond machine speed and it's just simply not going to work in the way it has."}, {"id": "s37", "start": 251.28, "end": 253.84, "text": "And so we need a new method of doing that."}, {"id": "s38", "start": 253.84, "end": 256.959, "text": "Um you can see a lot of the transactions uh exploding."}, {"id": "s39", "start": 256.959, "end": 258.639, "text": "This is sort of over time."}, {"id": "s40", "start": 258.639, "end": 262.639, "text": "We're seeing um transaction growth over X42."}, {"id": "s41", "start": 262.639, "end": 264.56, "text": "We're all saying this is coming."}, {"id": "s42", "start": 264.56, "end": 266.24, "text": "It is still early days."}, {"id": "s43", "start": 266.24, "end": 274.8, "text": "We're uh ourselves we're seeing a lot of experimentation kind of with uh with OpenClaw people making retail payments on an experimental basis."}, {"id": "s44", "start": 274.8, "end": 280.08, "text": "still not on the enterprise side as we're talking to uh many teams."}, {"id": "s45", "start": 280.08, "end": 288.8, "text": "Definitely everyone's looking at it and building kind of the infrastructure for when um these use cases break through."}, {"id": "s46", "start": 288.8, "end": 293.199, "text": "And so that's part of what we're we'll be displaying today with Amperson."}, {"id": "s47", "start": 293.199, "end": 304.479, "text": "But in order for this to really break through, we need a compliance layer specifically when you're dealing with like you know uh almost a quadrillion dollar industry of the the traditional financial world."}, {"id": "s48", "start": 304.479, "end": 309.759, "text": "there's a set of rules, policies, and guidelines that need to be in place before anything can happen."}, {"id": "s49", "start": 309.759, "end": 318.8, "text": "Uh beyond just a credit card transaction, we're dealing with trillions and trillions of dollars um being transacted um across the globe."}, {"id": "s50", "start": 318.8, "end": 324.72, "text": "And so we're going to be honing in a bit on that as part of the presentation today in the demo that's coming up."}, {"id": "s51", "start": 324.72, "end": 332.479, "text": "But the compliance layer is literally like is is this counterparty um a non-sanction entity?"}, {"id": "s52", "start": 332.479, "end": 336.56, "text": "is this counterparty uh have they been involved in terrorist activity?"}, {"id": "s53", "start": 336.56, "end": 338.72, "text": "Who is the identity behind this?"}, {"id": "s54", "start": 338.72, "end": 346.56, "text": "And when you're dealing with a Gentic systems, it's just simply you're presented with just a wallet address with no kind of background information on that."}, {"id": "s55", "start": 346.56, "end": 357.84000000000003, "text": "And we need these uh infrastructure layers in place to um to enable and facilitate enterprises to feel comfortable to adopt this um technology."}, {"id": "s56", "start": 357.84000000000003, "end": 361.44, "text": "All of these systems exist in the existing world today."}, {"id": "s57", "start": 361.44, "end": 373.919, "text": "But uh as we're breaking through into this um agentic world, we really need to have all of these pieces uh before uh large enterprises are going to sign off and"}, {"id": "s58", "start": 373.919, "end": 377.68, "text": "uh give the okay to um implement these."}, {"id": "s59", "start": 377.68, "end": 390.319, "text": "At the end of the day, there is going to be a human responsible like a chief legal officer, a chief policy officer and that will have to sign off and that person needs to feel 100% confident that"}, {"id": "s60", "start": 390.319, "end": 401.759, "text": "the systems in place will not allow for um agents to hallucinate, to go off the rails, to overspend, um to break policy."}, {"id": "s61", "start": 401.759, "end": 408.88, "text": "Uh a lot of these compliance issues deal with large fines into the tens, hundreds, even billions of dollars."}, {"id": "s62", "start": 408.88, "end": 421.199, "text": "So these are really important um items and things to think about from a large enterprise and financial services perspective and governance simply hasn't caught up."}, {"id": "s63", "start": 421.199, "end": 431.599, "text": "We're again we're early days so we are part of building up what needs to be put in place from our view in terms of allowing this to scale."}, {"id": "s64", "start": 431.599, "end": 434.88, "text": "And that's why we're building Amperent."}, {"id": "s65", "start": 434.88, "end": 440.639, "text": "Um, so we're dealing with Agentic checkouts with a financial harness."}, {"id": "s66", "start": 440.639, "end": 445.44, "text": "And I'm going to turn it over to my colleague Prrenoff who is going to show us a demo."}, {"id": "s67", "start": 445.44, "end": 445.919, "text": "Right."}, {"id": "s68", "start": 445.919, "end": 446.4, "text": "All right."}, {"id": "s69", "start": 446.4, "end": 448.4, "text": "Thanks."}, {"id": "s70", "start": 452.319, "end": 453.039, "text": "All right."}, {"id": "s71", "start": 453.039, "end": 458.96, "text": "Like we said, for agents to be really useful, we need to give them tools."}, {"id": "s72", "start": 458.96, "end": 461.36, "text": "Right now they're being used for coding."}, {"id": "s73", "start": 461.36, "end": 466.15999999999997, "text": "If you want to use them to build better things, you need to give them the right tools."}, {"id": "s74", "start": 466.15999999999997, "end": 476.24, "text": "As of right now, as a AI industry, we've given them a lot of MCP servers, but most of these MP MCP servers are free of cost."}, {"id": "s75", "start": 476.24, "end": 480.8, "text": "So there are two ways to make your agents really useful."}, {"id": "s76", "start": 480.8, "end": 496.0, "text": "One way is you can go to all these websites like Exop, Firecrawl and so many more which are getting more and more bigger with more MCP servers coming to play and you got to put in your credit card and you make your agent better"}, {"id": "s77", "start": 496.0, "end": 509.199, "text": "or there is a better way that you can use an aggregator which has all the important tools to make your agent super powerful and that's why we built this marketplace"}, {"id": "s78", "start": 509.199, "end": 513.68, "text": "and all you need is a skill file installed in your agent."}, {"id": "s79", "start": 513.68, "end": 519.039, "text": "You can give your cloud code this skill file and everything else will be done for you."}, {"id": "s80", "start": 519.039, "end": 521.279, "text": "So I'm going to show you an experiment."}, {"id": "s81", "start": 521.279, "end": 536.56, "text": "We'll have uh this specific terminal with the amperson skill file and we'll have cloud code cloud co-working without the skill file and you'll see the difference is immense already."}, {"id": "s82", "start": 536.56, "end": 544.959, "text": "The reason is that most important MCP servers are going to be paid and you'll not put in your credit card to all these MCP servers."}, {"id": "s83", "start": 544.959, "end": 552.399, "text": "Rather what you'll do is use you'll use the agentic commerce tool or a platform or a wallet or a credit card to make that happen."}, {"id": "s84", "start": 552.399, "end": 554.959, "text": "And that's what what we enable."}, {"id": "s85", "start": 554.959, "end": 560.8, "text": "So let's just go on the terminal and install the ampus and scale file in one set."}, {"id": "s86", "start": 560.8, "end": 563.8389999999999, "text": "This is our website by the way where you can go."}, {"id": "s87", "start": 563.8389999999999, "end": 567.36, "text": "You copy the prompt and just like put in here."}, {"id": "s88", "start": 567.36, "end": 572.16, "text": "I already have it so I'm not going to uh sort of maybe it's fine."}, {"id": "s89", "start": 572.16, "end": 574.24, "text": "Uh install the skill file."}, {"id": "s90", "start": 574.24, "end": 577.44, "text": "And here I'm on the cloud coork, right?"}, {"id": "s91", "start": 577.44, "end": 579.279, "text": "It does not have the skill file."}, {"id": "s92", "start": 579.279, "end": 580.8, "text": "Fair and square."}, {"id": "s93", "start": 580.8, "end": 582.24, "text": "This has the skill file."}, {"id": "s94", "start": 582.24, "end": 588.8, "text": "Now what I'll do is I'll tell them find the email information of the head of crypto and blockchain at Mastercard."}, {"id": "s95", "start": 588.8, "end": 589.44, "text": "All right."}, {"id": "s96", "start": 589.44, "end": 591.92, "text": "And I'll put in the same prompt."}, {"id": "s97", "start": 591.92, "end": 596.8, "text": "Uh I'll put in the same prompt for cloud cowork."}, {"id": "s98", "start": 596.8, "end": 607.76, "text": "Remember the only difference is this specific terminal of mine has the skill file which has paid MCP tools and this one does not."}, {"id": "s99", "start": 607.76, "end": 617.6, "text": "And you'll see that it is not able to like specifically find out, hey, we're not able to give you exactly the email, but this is how the email format is for our master"}, {"id": "s100", "start": 617.6, "end": 617.92, "text": "card."}, {"id": "s101", "start": 617.92, "end": 620.399, "text": "And you can go ahead and find that out."}, {"id": "s102", "start": 620.399, "end": 631.2, "text": "But when I go to my terminal, it is already be able to it will already be able to give me the email specifically the Twitter and what where is he based and everything and beyond."}, {"id": "s103", "start": 631.2, "end": 637.04, "text": "This is just one example of telling you that agents are getting powerful through MCP."}, {"id": "s104", "start": 637.04, "end": 639.8389999999999, "text": "But these MCPs are not public services."}, {"id": "s105", "start": 639.8389999999999, "end": 647.76, "text": "They're going to be charged and you will not know that you're interacting with MCPS or installing it or going on their websites and getting the credit card."}, {"id": "s106", "start": 647.76, "end": 654.0, "text": "Rather, you'll just have a scale file which is a aggregator which can take care of your payments."}, {"id": "s107", "start": 654.0, "end": 655.04, "text": "in the background."}, {"id": "s108", "start": 655.04, "end": 665.6, "text": "What happened was if you go over here, you already can see that we did a transaction so that we could enable this surge for you because this is a paid endpoint"}, {"id": "s109", "start": 665.6, "end": 670.72, "text": "that we had to specifically pay for to get what you specifically needed."}, {"id": "s110", "start": 670.72, "end": 681.2, "text": "So when we go to transactions, you should be able to find that we did a small transaction so that you would specifically get that specific information."}, {"id": "s111", "start": 681.2, "end": 690.399, "text": "uh 30 days on the maybe we skip to the next demo for now as you can see this spending happened."}, {"id": "s112", "start": 690.399, "end": 692.0, "text": "Let's skip to the next demo."}, {"id": "s113", "start": 692.0, "end": 693.68, "text": "I wanted to show you one more demo."}, {"id": "s114", "start": 693.68, "end": 705.92, "text": "In this what I've done is let's say I'm not a good kid which generally I am and I want to buy a father's day gift for my dad and I can also make that happen"}, {"id": "s115", "start": 705.92, "end": 708.16, "text": "directly via the terminal."}, {"id": "s116", "start": 708.16, "end": 710.48, "text": "Shopify introduced UCP."}, {"id": "s117", "start": 710.48, "end": 717.44, "text": "Amazon might be coming up with its own thing, but what I'll do is I'll give it a specific command using Shopify UCP."}, {"id": "s118", "start": 717.44, "end": 720.079, "text": "Buy my father a Father's Day gift."}, {"id": "s119", "start": 720.079, "end": 723.12, "text": "Keep the gift less than $10."}, {"id": "s120", "start": 723.12, "end": 726.639, "text": "Let's see how this specific thing rolls."}, {"id": "s121", "start": 726.639, "end": 741.36, "text": "What uh will happen in this specific terminal case is that it will already be able to f locate certain shops online and find out what things can be given for father's day gift"}, {"id": "s122", "start": 741.36, "end": 748.48, "text": "list them for me and be able to buy that directly via ampend wallet that we have created."}, {"id": "s123", "start": 748.48, "end": 757.36, "text": "your agent is as powerful as the paid MCP tools that you're connected to it and if you've given it a payment trail."}, {"id": "s124", "start": 758.9590000000001, "end": 762.9590000000001, "text": "So currently it's finding that out for us."}, {"id": "s125", "start": 763.519, "end": 765.519, "text": "Okay."}, {"id": "s126", "start": 774.32, "end": 782.48, "text": "See, this was an authorized transaction it did for finding me the email of that specific person at Mastercard, right?"}, {"id": "s127", "start": 782.48, "end": 789.12, "text": "And these are all paid services or I would have to go on Xi and sort of put in my email card and get that."}, {"id": "s128", "start": 789.12, "end": 791.68, "text": "So, never leave your terminal."}, {"id": "s129", "start": 791.68, "end": 804.079, "text": "Just have a payment gateway and paid MCP tools and make your agents super super compatible and faster and give them more uh power."}, {"id": "s130", "start": 804.72, "end": 808.399, "text": "All right, it's currently finding some stuff for me."}, {"id": "s131", "start": 808.399, "end": 820.9590000000001, "text": "Let's see if it's able to come up with some recommendations that I can use and I can hear itself do a aentic checkout so I can buy something for my dad for Father's Day."}, {"id": "s132", "start": 822.88, "end": 831.6, "text": "What's good about this specific thing is that again and again I don't have to put in my name, my address, my phone number, anything."}, {"id": "s133", "start": 831.6, "end": 842.88, "text": "The agent already has the memory where it knows what do I like, what do I not like, and it will just give me specific things that I might want to buy for him."}, {"id": "s134", "start": 842.88, "end": 846.56, "text": "So, it already like, you know, total $9."}, {"id": "s135", "start": 846.56, "end": 847.6, "text": "This is what it is."}, {"id": "s136", "start": 847.6, "end": 857.36, "text": "Confirming the order and it already placed the bet and it already took $11 for that order complete."}, {"id": "s137", "start": 857.36, "end": 859.199, "text": "And here is your receipt."}, {"id": "s138", "start": 859.199, "end": 865.12, "text": "and my dad gets his $10 key directly via the agent."}, {"id": "s139", "start": 865.12, "end": 871.76, "text": "So this is just starting of what we call will be the future of agent e-iccommerce."}, {"id": "s140", "start": 871.76, "end": 877.36, "text": "It's not just buying gifts for your uh parents but rather it's much bigger."}, {"id": "s141", "start": 877.36, "end": 891.76, "text": "MCPs are becoming the normal norms of how your agents become super powerful and you might have already seen that Cloudflare is opening its gateway through X42 and agentic payments."}, {"id": "s142", "start": 891.76, "end": 898.24, "text": "If you go on a website and the agent is crawling that website then ads are irrelevant."}, {"id": "s143", "start": 898.24, "end": 900.639, "text": "How do people get paid?"}, {"id": "s144", "start": 900.639, "end": 910.399, "text": "It's via agentic payments where a bot comes through Cloudflare, pays a microtransaction and gets all the information that's needed."}, {"id": "s145", "start": 910.399, "end": 915.199, "text": "So to make your agent super powerful, you need paid tools."}, {"id": "s146", "start": 915.199, "end": 918.639, "text": "We are in the era where most MCP tools are free."}, {"id": "s147", "start": 918.639, "end": 921.199, "text": "That's not going to be the case in the future."}, {"id": "s148", "start": 921.199, "end": 932.48, "text": "they're going to get paid and it will be it what your agent would need is good MCPS or an API which has an integration of MCPS and a wallet"}, {"id": "s149", "start": 932.48, "end": 935.92, "text": "and this is what I'm trying to show you."}, {"id": "s150", "start": 935.92, "end": 939.199, "text": "So the specific bet has already been placed."}, {"id": "s151", "start": 939.199, "end": 951.199, "text": "I'm going to try to show you the transaction over here that was done and it's already settled and I might have gotten an email where Shopify was able to buy"}, {"id": "s152", "start": 951.199, "end": 953.36, "text": "my dad a gift."}, {"id": "s153", "start": 953.36, "end": 957.68, "text": "Let's see if I open it and show it to you because it Yeah, it's okay."}, {"id": "s154", "start": 957.68, "end": 960.24, "text": "You guys are friends."}, {"id": "s155", "start": 960.24, "end": 968.32, "text": "See over here the order has been placed and I can already it's already getting tracked all via the agent terminal."}, {"id": "s156", "start": 968.32, "end": 970.48, "text": "I didn't have to even skip."}, {"id": "s157", "start": 970.48, "end": 979.279, "text": "Let's go to the last part which is all of this will be big if and only if like Rodrigo says there is compliance."}, {"id": "s158", "start": 979.279, "end": 986.079, "text": "Merchants will not take payments if they think this order is being placed by North Korean wallet."}, {"id": "s159", "start": 986.079, "end": 990.32, "text": "And for that you need the compliance layer to be fitting in as well."}, {"id": "s160", "start": 990.32, "end": 993.44, "text": "The seller and the buyer side both need to have that."}, {"id": "s161", "start": 993.44, "end": 1004.0, "text": "And I've created this specific uh simulation for you in which we have a good claw that you can let me just close this right now."}, {"id": "s162", "start": 1004.0, "end": 1018.88, "text": "So now let's go to the third one which is compliant transactions right for the world and Amazon to accept agentic payments there needs to be compliance involved to make sure that the payment that's been done is not malicious."}, {"id": "s163", "start": 1018.88, "end": 1024.799, "text": "So we have a good claw that I'll spinning up that I'll be spinning up over here and we have a bad claw."}, {"id": "s164", "start": 1024.799, "end": 1039.36, "text": "The thing about bad claw is this is again a simulation but this is a sanctioned wallet address that means it has either interacted with North Korean entities or we were able to simulate it in a way that it is flagged"}, {"id": "s165", "start": 1039.36, "end": 1046.319, "text": "right so no amount of transaction should be able to be done because it is out of the swift scope of policies."}, {"id": "s166", "start": 1046.319, "end": 1059.919, "text": "So if we go over here uh in this specific thing and I disable screening and save it, my good claw and my B bad claw both should be able to do transactions."}, {"id": "s167", "start": 1062.16, "end": 1068.0, "text": "Just to give you a little bit of periphery, this is the seller that is accepting payments."}, {"id": "s168", "start": 1068.0, "end": 1076.64, "text": "We have a small service of scraping websites and it needs to pay 0.1 cent to be able to take that scraping information."}, {"id": "s169", "start": 1076.64, "end": 1085.2, "text": "Right now because we don't have regulations both these transactions are going through and you can see it's getting authorized over here."}, {"id": "s170", "start": 1085.2, "end": 1098.88, "text": "Right now what I'll do is using compliance I will enable the specific feature that we have built with TRM which scans the wallet and make sure that all the transactions are compliant"}, {"id": "s171", "start": 1098.88, "end": 1118.32, "text": "and what it will do is that up till now everything has been working for good claw and bad claw but things will stop working for bad claw because using compliance we are able to scan that and we are able to give you see over here the your your transactions are getting blocked or rejected."}, {"id": "s172", "start": 1118.4, "end": 1122.16, "text": "And I can also show you over here that rejected and denied."}, {"id": "s173", "start": 1122.16, "end": 1128.24, "text": "And the reason behind the denying is because you're in the block listed wallet addresses."}, {"id": "s174", "start": 1128.799, "end": 1133.44, "text": "All to tell you that agentic commerce is becoming real."}, {"id": "s175", "start": 1133.44, "end": 1138.88, "text": "Agents need commerce more than humans need commerce."}, {"id": "s176", "start": 1138.88, "end": 1140.64, "text": "But it will not be the same."}, {"id": "s177", "start": 1140.64, "end": 1154.72, "text": "You will not go through payment guardrails of Stripe or any other of these checkout flows, but agents will have their own proprietary firms either through wallets or through their own credit cards."}, {"id": "s178", "start": 1154.72, "end": 1157.12, "text": "Agents would need to be superpowered."}, {"id": "s179", "start": 1157.12, "end": 1165.28, "text": "MCPs will get paid and more and more paid MCPs will come to reality to make your agent successful."}, {"id": "s180", "start": 1165.36, "end": 1178.96, "text": "That will only happen and only be successful in UX terms and more if you're able to empower your wallet with paid MCPs and a wallet infrastructure."}, {"id": "s181", "start": 1178.96, "end": 1182.799, "text": "If you want to know more about it, come to Ampend."}, {"id": "s182", "start": 1182.799, "end": 1186.24, "text": "We'll be here outside chatting if you have any questions."}, {"id": "s183", "start": 1186.24, "end": 1188.4, "text": "Thank you."}, {"id": "s184", "start": 1201.283, "end": 1203.283, "text": "[music]"}]}, {"id": "_PdK6x7PQNM", "title": "Data Quality Is the Compute Multiplier — Ari Morcos, DatologyAI", "channel": "AI Engineer", "duration": 1145, "upload_date": null, "url": "https://www.youtube.com/watch?v=_PdK6x7PQNM", "api": "/api/talks/_PdK6x7PQNM.json", "summary_url": "/#_PdK6x7PQNM", "transcript": {"html": "/transcripts/_PdK6x7PQNM.html", "txt": "/transcripts/_PdK6x7PQNM.txt", "vtt": "/transcripts/_PdK6x7PQNM.vtt"}, "sentences": [{"id": "s1", "start": 13.04, "end": 15.519, "text": "Good morning everybody."}, {"id": "s2", "start": 15.759, "end": 16.88, "text": "My name is Ari Marcos."}, {"id": "s3", "start": 16.88, "end": 19.359, "text": "I'm the CEO and co-founder of Datlogy AI."}, {"id": "s4", "start": 19.359, "end": 23.119, "text": "Uh and really excited to kick off the data quality track uh today."}, {"id": "s5", "start": 23.119, "end": 26.72, "text": "Uh data quality is is what we live and breathe uh at Datlogy."}, {"id": "s6", "start": 26.72, "end": 27.599, "text": "It's all we think about."}, {"id": "s7", "start": 27.599, "end": 31.119, "text": "In fact, the company's name literally means the science or study of data."}, {"id": "s8", "start": 31.119, "end": 38.879, "text": "Um, so very excited to see the increasing excitement and interest in this area and a amazing lineup of talks uh today."}, {"id": "s9", "start": 38.879, "end": 47.92, "text": "So today I'm going to tell you about why data quality is a compute multiplier that we're all overlooking and where we can make massive gains by just working on better data."}, {"id": "s10", "start": 47.92, "end": 55.199, "text": "Um, we've seen that compute availability over the last six months has become extremely scarce and is only getting worse."}, {"id": "s11", "start": 55.199, "end": 63.68, "text": "We saw H100 prices reverse their several year-long drop which is normal for hardware and all of a sudden come up where now they're about 40% up from their lows"}, {"id": "s12", "start": 63.68, "end": 65.439, "text": "um at the end of last year."}, {"id": "s13", "start": 65.439, "end": 75.6, "text": "Um as test time compute has become a critical part of models and as we have put more and more thinking tokens in we're seeing that the number the token usage is absolutely"}, {"id": "s14", "start": 75.6, "end": 76.64, "text": "skyrocketing."}, {"id": "s15", "start": 76.64, "end": 83.68, "text": "Um reasoning models use eight times as many tokens um as non-reasoning models and that's projected to 5x again in the next year or so."}, {"id": "s16", "start": 83.68, "end": 88.88, "text": "Um, so the number of tokens we're pushing through goes higher and higher and that constrains compute even further."}, {"id": "s17", "start": 88.88, "end": 96.15899999999999, "text": "And this has led actually to a world where it's not implausible today that we might see access to some of the frontier APIs actually get limited or go away."}, {"id": "s18", "start": 96.15899999999999, "end": 101.119, "text": "Um, as one example, Google just capped uh Meta's Gemini usage because of inference constraints."}, {"id": "s19", "start": 101.119, "end": 107.68, "text": "OpenAI has effectively started selling token futures or you can guarantee token capacity some amount of time into the future."}, {"id": "s20", "start": 107.68, "end": 119.92, "text": "This is only necessary because they are legitimately wondering there might be a world where access to frontier API tokens is limited not as a business decision but because there's just simply not enough inference and first party products will be prioritized."}, {"id": "s21", "start": 119.92, "end": 124.079, "text": "So in a world where compute is increasingly scarce and you need to make models better."}, {"id": "s22", "start": 124.079, "end": 125.119, "text": "Well, what do you do?"}, {"id": "s23", "start": 125.119, "end": 126.399, "text": "Well, we work on data."}, {"id": "s24", "start": 126.399, "end": 128.47899999999998, "text": "Um I you're going to hear me say this over and over again."}, {"id": "s25", "start": 128.47899999999998, "end": 133.28, "text": "Data quality is a compute multiplier because what it does is it it makes the learning curve steeper."}, {"id": "s26", "start": 133.28, "end": 138.959, "text": "So this is just a very simple schematic of performance on the y-axis as a function of data on the x-axis."}, {"id": "s27", "start": 138.959, "end": 143.599, "text": "Note that this x-axis, you could swap it out for data, for compute, for time, for dollars."}, {"id": "s28", "start": 143.599, "end": 146.239, "text": "They're all the same x-axis fundamentally."}, {"id": "s29", "start": 146.239, "end": 152.4, "text": "Um, and if you can make data quality better, you can turn this gray curve um into this blue curve."}, {"id": "s30", "start": 152.4, "end": 159.76, "text": "And that means that now you can get dramatically better performance for the same compute budget as if you had trained with far more compute."}, {"id": "s31", "start": 159.76, "end": 164.48, "text": "Um and similarly you can get the same performance for a much smaller compute budget."}, {"id": "s32", "start": 164.48, "end": 173.92000000000002, "text": "Um which is exactly showing you how you can get performance as if you had spent 10 times this 10 times as much on compute and really shows this compute multiplier"}, {"id": "s33", "start": 173.92000000000002, "end": 175.12, "text": "point."}, {"id": "s34", "start": 175.12, "end": 176.64, "text": "Um so how do you actually do this?"}, {"id": "s35", "start": 176.64, "end": 182.08, "text": "Well fundamentally the idea is we want to make it so that we get the maximum signal per token and per batch."}, {"id": "s36", "start": 182.08, "end": 189.2, "text": "Um for those that are a little bit more technically what we want to want to do here is maximize the marginal information gain per data point when we show it to the model."}, {"id": "s37", "start": 189.2, "end": 191.519, "text": "what data is going to teach the model the most."}, {"id": "s38", "start": 191.519, "end": 196.8, "text": "Um, and that's all about finding data that's relevant to the use cases that you want."}, {"id": "s39", "start": 196.8, "end": 203.2, "text": "One thing that you know is very important is that there's no one golden data set to rule them all that's good for everything no matter what you want to do."}, {"id": "s40", "start": 203.2, "end": 208.72, "text": "A data set's only going to be optimal with respect to a particular set of output tasks that you want the model to do."}, {"id": "s41", "start": 208.72, "end": 213.519, "text": "So if you want a great legal model, you're going to want legal data more than healthcare data and vice versa."}, {"id": "s42", "start": 213.519, "end": 214.959, "text": "It needs to be diverse."}, {"id": "s43", "start": 214.959, "end": 220.4, "text": "A lot of the issues we see with model robustness and brittleleness comes from try training on data that's not diverse enough."}, {"id": "s44", "start": 220.4, "end": 229.76, "text": "So the model can answer a question correctly if it's presented just so but if it's presented a little bit differently now everything breaks um needs to be information and you have to mix the data correctly."}, {"id": "s45", "start": 229.76, "end": 232.4, "text": "This is a hugely difficult part of you now have many different sources."}, {"id": "s46", "start": 232.4, "end": 236.959, "text": "How do you combine them to actually drive the largest improvement in performance?"}, {"id": "s47", "start": 236.959, "end": 240.08, "text": "So um this is a high level of what we do at here."}, {"id": "s48", "start": 240.08, "end": 242.4, "text": "Um you can think of us as the oil refinery for data."}, {"id": "s49", "start": 242.4, "end": 244.319, "text": "We don't source new tokens like many data providers."}, {"id": "s50", "start": 244.319, "end": 250.959, "text": "Rather we take existing tokens coming from public data sets, proprietary data sets and licensed data sets and make them way better."}, {"id": "s51", "start": 250.959, "end": 251.76, "text": "And how do we do that?"}, {"id": "s52", "start": 251.76, "end": 253.36, "text": "Well, we do that through these four C's."}, {"id": "s53", "start": 253.36, "end": 255.84, "text": "Um, clean, curate, create, and compose."}, {"id": "s54", "start": 255.84, "end": 257.759, "text": "Um, so cleaning is fairly straightforward."}, {"id": "s55", "start": 257.759, "end": 261.199, "text": "This is doing things like heruristic filters, all a gopher and things like that."}, {"id": "s56", "start": 261.199, "end": 265.84, "text": "Removing documents that have, you know, only 10 characters in them or all winging."}, {"id": "s57", "start": 265.84, "end": 267.84, "text": "That's kind of basic table stakes."}, {"id": "s58", "start": 267.84, "end": 270.56, "text": "Um, benchmark decontamination is incredibly important."}, {"id": "s59", "start": 270.56, "end": 275.919, "text": "As I'm sure you all know, benchmaxing has become a real problem and makes it very difficult to interpret model results."}, {"id": "s60", "start": 275.919, "end": 283.52, "text": "So, we rigorously decontaminate all of our training data with respect to all downstream benchmarks with a pretty low engram to ensure that that's the case."}, {"id": "s61", "start": 283.52, "end": 289.04, "text": "That gets you to a point where now you can feed the model into the data, but it's still sorry, feed the data into the model, but it's still not very good."}, {"id": "s62", "start": 289.04, "end": 290.08, "text": "So then how do you make it better?"}, {"id": "s63", "start": 290.08, "end": 297.68, "text": "Well, it's a combination of many things ranging from quality classifiers and tonomy across different topics and balancing that redundancy reduction."}, {"id": "s64", "start": 297.68, "end": 314.24, "text": "So removing data points that are not the same that are semantically similar but convey very similar information even if they're not the same pixels themselves say upsampling and downsampling data points based off the quality and the relevance and then task distribution matching identifying what data do you actually need in order to solve this given task."}, {"id": "s65", "start": 314.24, "end": 319.28, "text": "That now gives you a data set that is very high quality but is typically still too small."}, {"id": "s66", "start": 319.28, "end": 320.88, "text": "And that's where synthetic data comes in."}, {"id": "s67", "start": 320.88, "end": 333.52, "text": "Now we can go and rephrase that data as effectively a very fancy form of data augmentation to produce dramatically more data in many different formats and this helps a lot both with kind of uh data size and with diversity"}, {"id": "s68", "start": 333.52, "end": 346.8, "text": "um because we can really inject a lot of diversity in through this and then finally you know have these data sets how do you combine them and how do you com and how do you sequence them across different training stages it's now become table stakes that any large model is generally trained for at least three phases of"}, {"id": "s69", "start": 346.8, "end": 354.08, "text": "data um how do you do that um and can you actually even do continuous uh curricula and things like that which is a lot of what we work on at Dtology."}, {"id": "s70", "start": 354.08, "end": 356.96, "text": "Um and that ultimately gets you a much better data set out."}, {"id": "s71", "start": 356.96, "end": 359.6, "text": "All right, so that's a high level of kind of what we need to do."}, {"id": "s72", "start": 359.6, "end": 361.199, "text": "What can you actually get out of this?"}, {"id": "s73", "start": 361.199, "end": 363.919, "text": "Can this actually really make a massive difference?"}, {"id": "s74", "start": 363.919, "end": 367.6, "text": "Um so we've about half of our team at Datlogy are just researchers."}, {"id": "s75", "start": 367.6, "end": 372.16, "text": "Um and you know we uh do all of our own research on how we do data curation effectively."}, {"id": "s76", "start": 372.16, "end": 382.0, "text": "um because this is such a critical part of the uh model building pipeline uh there's very little published here um because there's a very strong disincentive not to share how you do this"}, {"id": "s77", "start": 382.0, "end": 397.36, "text": "um the kind of foundational paper for daty was one I wrote when I was at meta called beyond scaling laws um which was fortunate to get a best paper at nurips a couple years ago which showed that if you choose your data correctly you can actually bend the scaling laws itself you can change the exponent"}, {"id": "s78", "start": 397.36, "end": 404.56, "text": "um and that's because you're now not wasting your time looking at redundant or unnecessary data That was very much the proof of principle for all of Dtology."}, {"id": "s79", "start": 404.56, "end": 407.12, "text": "And we've since expanded this into many public research releases."}, {"id": "s80", "start": 407.12, "end": 410.72, "text": "We've shared of various ways to improve models just through data curation."}, {"id": "s81", "start": 410.72, "end": 415.84000000000003, "text": "I'm going to go through a couple of those results now um and show you what we've been able to to to achieve."}, {"id": "s82", "start": 415.84000000000003, "end": 418.72, "text": "Um so first let's talk about vision language models."}, {"id": "s83", "start": 418.72, "end": 423.599, "text": "How can we improve um VLMs just through data curation alone?"}, {"id": "s84", "start": 423.599, "end": 426.639, "text": "Um so in this case what we did is we took the mammoth data set."}, {"id": "s85", "start": 426.639, "end": 440.24, "text": "This is a fairly small data set about 25 billion um tokens uh that we use for the purposes of training the fusion adapter layer between your um text uh your text your text model and your vision model."}, {"id": "s86", "start": 440.24, "end": 447.199, "text": "Um and what you can see this is a scaling plot where we have error on the y-axis as a function of log flops um on the x-axis."}, {"id": "s87", "start": 447.199, "end": 452.479, "text": "Um so there's about a scale of a thousand from the left uh most part of this plot to the rightmost part."}, {"id": "s88", "start": 452.479, "end": 459.52, "text": "Um and what you can see is that if you look at the parto frontier defined by many of the best uh public VLMs like the Quen 3 series and 3.5"}, {"id": "s89", "start": 459.52, "end": 468.8, "text": "intern VL etc you can see that a model trained on daties data are able to go well well beyond uh that frontier and I'll note this is actually without any post- training"}, {"id": "s90", "start": 468.8, "end": 469.36, "text": "as well."}, {"id": "s91", "start": 469.36, "end": 472.72, "text": "Uh so you can get very strong performance across many different benchmarks."}, {"id": "s92", "start": 472.72, "end": 479.44, "text": "Um so just looking at kind of taking the input data set that gray diamond there that's the input data set we use to do our curation."}, {"id": "s93", "start": 479.44, "end": 488.0, "text": "Um you can see that just through curation you're able to get around a 14 absolute percentage point improvement um holding everything else constant just through better data alone."}, {"id": "s94", "start": 488.0, "end": 496.879, "text": "Um and not only that you can also see that we can roughly match the performance of quen 3.54b come with about a percentage of it um while using 145x"}, {"id": "s95", "start": 496.879, "end": 500.4, "text": "less training compute in a world with no with less compute."}, {"id": "s96", "start": 500.4, "end": 501.12, "text": "How do you do more?"}, {"id": "s97", "start": 501.12, "end": 505.199, "text": "You make data better and now it's as if you had 100 times um the compute."}, {"id": "s98", "start": 505.199, "end": 510.16, "text": "Um, interestingly I mentioned that reasoning models are be are using tokens at a very high rate as well."}, {"id": "s99", "start": 510.16, "end": 517.76, "text": "Well, another thing that we found is that data curation can also lead uh to more concise answers um depending on how you represent the data."}, {"id": "s100", "start": 517.76, "end": 525.76, "text": "So what's plotted here is the mean number of tokens per response um across all the same set of models for the large most part um that we just showed."}, {"id": "s101", "start": 525.76, "end": 531.2, "text": "Um and you can see that that models trained on data those three blue lines right at the top are all extremely concise."}, {"id": "s102", "start": 531.2, "end": 538.9590000000001, "text": "Um and if we do kind of the same sort of plot um but now on the x-axis instead of log training flops this is now um log flops per response."}, {"id": "s103", "start": 538.9590000000001, "end": 540.64, "text": "Um so this is inference efficiency."}, {"id": "s104", "start": 540.64, "end": 549.36, "text": "Um you can still see that we go well on the ex by beating that router frontier um and you know roughly get uh similar performance to quen 35 with 35 fewer"}, {"id": "s105", "start": 549.36, "end": 552.399, "text": "uh times fewer flops uh per correct answer."}, {"id": "s106", "start": 552.399, "end": 554.8, "text": "So data curation can make a huge impact in VLMs."}, {"id": "s107", "start": 554.8, "end": 556.0, "text": "What about text models?"}, {"id": "s108", "start": 556.0, "end": 564.56, "text": "Um, one of the most uh challenging things about many models is that they work very well on English data, but they don't work well um for non-western use cases in general."}, {"id": "s109", "start": 564.56, "end": 569.68, "text": "The internet is an extremely biased view of the world that does not represent the world uniformly at all."}, {"id": "s110", "start": 569.68, "end": 574.64, "text": "And this has major implications for fairness and for the usability of these models across the world."}, {"id": "s111", "start": 574.64, "end": 578.88, "text": "I don't want to live in a future where only developed countries can access this very effectively."}, {"id": "s112", "start": 578.88, "end": 580.32, "text": "Um, so how do you do this?"}, {"id": "s113", "start": 580.32, "end": 582.64, "text": "Well, curation again can be a massive lever here."}, {"id": "s114", "start": 582.64, "end": 590.399, "text": "Um so what I'm plotting here now is a similar plot error on the y- axis as a function of log flops about 100x going from left to right here."}, {"id": "s115", "start": 590.399, "end": 593.36, "text": "Um this is highlighting multilingual MMLU performance."}, {"id": "s116", "start": 593.36, "end": 596.56, "text": "You can see we have a parto frontier here defined by many models."}, {"id": "s117", "start": 596.56, "end": 599.36, "text": "The quen models um the liquid some of the liquid models."}, {"id": "s118", "start": 599.36, "end": 603.279, "text": "Um the green square is tiny coher's best multilingual model."}, {"id": "s119", "start": 603.279, "end": 607.519, "text": "You can see again that we're well off the predto frontier with a couple things I really want to highlight."}, {"id": "s120", "start": 607.519, "end": 611.44, "text": "First off we only use 8% of the data here as multilingual tokens."}, {"id": "s121", "start": 611.44, "end": 615.92, "text": "Um, so most languages actually only had um at max 6 billion tokens here."}, {"id": "s122", "start": 615.92, "end": 620.88, "text": "So these are not massive amounts of data uh in the non-English languages that are going in here."}, {"id": "s123", "start": 620.88, "end": 624.079, "text": "Um you can again see we get the same sort of compute multiplier effect."}, {"id": "s124", "start": 624.079, "end": 629.519, "text": "We're a little better than Quen 3 um while while having roughly 8x less compute budget um here."}, {"id": "s125", "start": 629.519, "end": 631.36, "text": "So you can make a huge improvement."}, {"id": "s126", "start": 631.36, "end": 639.6, "text": "One last thing I want to show here is that if you look at the two blue points on the upper left here um those are both dense llama style models trained for a trillion tokens"}, {"id": "s127", "start": 639.6, "end": 640.9590000000001, "text": "um on curated data."}, {"id": "s128", "start": 640.9590000000001, "end": 649.6, "text": "The point on the lower right here I'll come back to but is a model trained by one of our customers rci trendy large that was trained on 17 trillion tokens and is a hypersparse."}, {"id": "s129", "start": 649.6, "end": 658.88, "text": "Um and what you can see is that if you take the line defined by the two smaller models, um it goes mostly right through that blue star uh which is training large despite it being trained"}, {"id": "s130", "start": 658.88, "end": 661.2, "text": "um with 50x more training compute."}, {"id": "s131", "start": 661.2, "end": 673.92, "text": "So if you use your data correctly and you simulate token scarcity appropriately, you can also get um very predictable scaling to much larger models and you can derisk a run with 50 or 100 times less compute effectively"}, {"id": "s132", "start": 673.92, "end": 679.519, "text": "um before you actually go and scale up the hero run um and find that maybe it doesn't end up where you want it to be."}, {"id": "s133", "start": 679.519, "end": 686.48, "text": "Um an interesting scientific result I want to share here is that we also see very strong cross-lingual benefits um from curation."}, {"id": "s134", "start": 686.48, "end": 696.8, "text": "Um so what's plotted here is the non-English accuracy um where in the the the left bar is showing not curating anything at all and then the right bar just curating the English."}, {"id": "s135", "start": 696.8, "end": 699.92, "text": "Um we also curate all the non-English data and that leads to much better performance."}, {"id": "s136", "start": 699.92, "end": 706.0, "text": "But I just want to show this because I think it's quite interesting that curating English data benefits non-English performance."}, {"id": "s137", "start": 706.0, "end": 718.079, "text": "Um and that's because we see this cross-lingual transfer where the model understands how English relates to say Spanish and and so therefore making it better at English would also make it better at Spanish to some extent and interestingly we see that the the um the"}, {"id": "s138", "start": 718.079, "end": 731.36, "text": "size of magnitude of that transfer um is strongly correlated uh with the similarity between English and that language um and we also see it go the other way although the effects a bit smaller um where curating the non-English data also helps to benefit"}, {"id": "s139", "start": 731.36, "end": 737.44, "text": "English data um performance um okay And let me talk a little bit about synthetic data."}, {"id": "s140", "start": 737.44, "end": 740.56, "text": "Um we take an approach to synthetic data that we call rephrasing."}, {"id": "s141", "start": 740.56, "end": 746.399, "text": "This is something that our team pioneered several years ago and has now become um basically table stakes for building a very strong model."}, {"id": "s142", "start": 746.399, "end": 750.639, "text": "Um in anyway I think we'll hear a lot about the synthetic data in various forms uh throughout the day."}, {"id": "s143", "start": 750.639, "end": 760.399, "text": "Um but fundamentally with beyond web our goals is how can we define a synthetic data platform that works extremely well um and can be applied to anyone's proprietary doc data and documents."}, {"id": "s144", "start": 760.399, "end": 764.32, "text": "Fundamentally we want to help folks build models that wouldn't be able to do so otherwise."}, {"id": "s145", "start": 764.32, "end": 767.68, "text": "And that's what where data quality can make an absolute difference."}, {"id": "s146", "start": 767.68, "end": 774.48, "text": "Um so to give an example, we might take a document like this about a corporate takeover and we might convert that into one of hundreds of templates."}, {"id": "s147", "start": 774.48, "end": 777.519, "text": "One of which might be a series of true false questions."}, {"id": "s148", "start": 777.519, "end": 780.16, "text": "Um by doing this, there's a couple things that are really great."}, {"id": "s149", "start": 780.16, "end": 785.2, "text": "Number one, because all the information is coming from the document on the left, you don't have any issue with model collapse."}, {"id": "s150", "start": 785.2, "end": 793.44, "text": "Um and you can actually train models um that are much better than the rephrasing model because the rephrasing model doesn't actually have to teach and understand all the concepts."}, {"id": "s151", "start": 793.44, "end": 800.24, "text": "All it needs to do is transform the left document into a true false questions accurately which is a much easier task."}, {"id": "s152", "start": 800.24, "end": 803.519, "text": "And then you do this into many many different formats um throughout data."}, {"id": "s153", "start": 803.519, "end": 809.2, "text": "This effectively increases diversity and it makes it so you learn a lot more from the highest quality data points."}, {"id": "s154", "start": 809.2, "end": 812.32, "text": "One thing that's really critical here, what do you rephrase?"}, {"id": "s155", "start": 812.32, "end": 814.32, "text": "All documents are not created equal for rephrasing."}, {"id": "s156", "start": 814.32, "end": 817.8389999999999, "text": "If you just pick random sets of documents to rephrase, you will not get a great result."}, {"id": "s157", "start": 817.8389999999999, "end": 821.68, "text": "Um but if you find the high quality documents and rephrase them, it can make a big difference."}, {"id": "s158", "start": 821.68, "end": 828.399, "text": "Um and we've seen if you compare this to lots of other public synthetic corpora, we can get much better performance much faster."}, {"id": "s159", "start": 828.399, "end": 836.0, "text": "Um and critically this can be applied to any any proprietary data um in one of our customers own environments."}, {"id": "s160", "start": 836.0, "end": 836.32, "text": "All right."}, {"id": "s161", "start": 836.32, "end": 843.519, "text": "Uh let me spend the last few minutes just quickly talking about a couple um of what we've seen uh the things we've seen with our customers where this can actually drive really gains."}, {"id": "s162", "start": 843.519, "end": 850.48, "text": "Um so first one of our customers Thompson Reuters um has really focused on post training quite a bit."}, {"id": "s163", "start": 850.48, "end": 859.36, "text": "um and they have a very sophisticated post- trainining infrastructure with the goal of uh building better legal models on their proprietary high-quality legal data that they have."}, {"id": "s164", "start": 859.36, "end": 868.32, "text": "So we partnered with them to mid-train a model first on a combination of their data um and uh public data um to then make much better legal reasoning models."}, {"id": "s165", "start": 868.32, "end": 868.959, "text": "So what do we see?"}, {"id": "s166", "start": 868.959, "end": 870.32, "text": "Well, first off, look at the left here."}, {"id": "s167", "start": 870.32, "end": 877.6, "text": "Um in this case, we took a an open source model um and then uh just did continued pre-trainer and mid-training on a 100 billion tokens."}, {"id": "s168", "start": 877.6, "end": 887.519, "text": "What you'll see here is that we see that legal capabilities go up about five percentage points um as measured by uh legal bench after you do this 100 billion mid-training which was less than 1% of the pre-training budget."}, {"id": "s169", "start": 887.519, "end": 889.6, "text": "Um but you don't get catastrophic forgetting."}, {"id": "s170", "start": 889.6, "end": 891.92, "text": "You also see the general capabilities go up as well."}, {"id": "s171", "start": 891.92, "end": 899.12, "text": "I'm sure that many of you have seen or experienced um when you try to adapt a model to a particular domain, you lose general performance."}, {"id": "s172", "start": 899.12, "end": 900.8, "text": "Not if you use the data correctly."}, {"id": "s173", "start": 900.8, "end": 906.959, "text": "Um, the key here is actually the majority of the data we showed the model was actually data that was representative of the pre-training distribution."}, {"id": "s174", "start": 906.959, "end": 914.56, "text": "There was only some of the domain specific data in and that's necessary to prevent the model from losing the capabilities that it had before."}, {"id": "s175", "start": 914.56, "end": 917.44, "text": "Um, and you can solve this entirely through better data."}, {"id": "s176", "start": 917.44, "end": 919.8389999999999, "text": "Um, but this actually isn't the most exciting part here."}, {"id": "s177", "start": 919.8389999999999, "end": 923.6, "text": "Um, as I mentioned, the TR team had done a lot of work on post- training."}, {"id": "s178", "start": 923.6, "end": 925.92, "text": "Um, and had a very sophisticated post-training harness."}, {"id": "s179", "start": 925.92, "end": 930.48, "text": "Well, they then applied that to the mid-train model versus just the default instruction tune model."}, {"id": "s180", "start": 930.48, "end": 933.36, "text": "And what they found was that the gain deriving from post-training."}, {"id": "s181", "start": 933.36, "end": 942.88, "text": "So the y- axis here is a delta um as a result of post-training um almost tripled uh when you applied it to the mid-train model versus to the um just default instruction tune model."}, {"id": "s182", "start": 942.88, "end": 948.079, "text": "And that's because its policy um when it starts is now much more accurate um and it can make much better inference."}, {"id": "s183", "start": 948.079, "end": 958.88, "text": "Um, so you can even even if you don't change the post- training data at all, showing your model better domain specific data can actually make post- training two to three times more effective out of the box."}, {"id": "s184", "start": 958.88, "end": 967.92, "text": "Um, which I think really goes to show not only how important data can be in these uh factors, but it also actually goes to show how we really should be thinking about all these stages synergistically"}, {"id": "s185", "start": 967.92, "end": 977.44, "text": "rather than as uh three completely independent stages of pre-training and then I hand it off to somebody else who mid-trains who then I hand off to somebody else um who post trains."}, {"id": "s186", "start": 977.44, "end": 991.8389999999999, "text": "Um okay uh in the last minute or so I just want to quickly talk about um one other one which is rci who I mentioned that large model trendy large um you'll actually hear from verun who was the pre-training lead for this model later today um so look forward to that talk um"}, {"id": "s187", "start": 991.8389999999999, "end": 1007.92, "text": "but in this case they trained a model this is a fully open um US-made model um uh on 17 trillion tokens that we curated from public uh data sets no proprietary data involved here um and no closed model usage so no asking Claude uh to do this for you Um,"}, {"id": "s188", "start": 1007.92, "end": 1011.68, "text": "and with that, RC was able to train a model that is competitive with the Open Frontier."}, {"id": "s189", "start": 1011.68, "end": 1015.04, "text": "Um, matches uh, GLM5 and and Kimmy on many tasks."}, {"id": "s190", "start": 1015.04, "end": 1017.279, "text": "Um, and even outperforms Claude on a couple tasks."}, {"id": "s191", "start": 1017.279, "end": 1025.28, "text": "Um, but I think what's most exciting about this is that the RC team um, had not trained a model prior to uh, the middle of last year when they started working with us."}, {"id": "s192", "start": 1025.28, "end": 1037.6, "text": "Um and critically in total across salaries, across compute, across R&D, um across everything for this and several other models, they were able to get to a model that's competitive with the open frontier,"}, {"id": "s193", "start": 1037.6, "end": 1040.64, "text": "um for less than $20 million total."}, {"id": "s194", "start": 1040.64, "end": 1043.839, "text": "That includes all the repetitions, that includes compute, that includes everything."}, {"id": "s195", "start": 1043.839, "end": 1048.4, "text": "So if you hear this story over and over again, oh, if I want to customize a model, it's going to cost hundreds of millions of dollars."}, {"id": "s196", "start": 1048.4, "end": 1049.36, "text": "That's just not true."}, {"id": "s197", "start": 1049.36, "end": 1055.12, "text": "you can train an immensely powerful model especially in a narrow domain for high six figures million dollars."}, {"id": "s198", "start": 1055.12, "end": 1057.919, "text": "It's very doable to get a model that's extremely performant."}, {"id": "s199", "start": 1057.919, "end": 1059.2, "text": "Um this is for a general purpose."}, {"id": "s200", "start": 1059.2, "end": 1061.12, "text": "So this is kind of the upper bound of that."}, {"id": "s201", "start": 1061.12, "end": 1063.6, "text": "Um and data quality is how you can do that."}, {"id": "s202", "start": 1063.6, "end": 1064.08, "text": "All right."}, {"id": "s203", "start": 1064.08, "end": 1071.84, "text": "So um last slide here just kind of say um summarizing um focus on kind of what's going to give you the most signal per token."}, {"id": "s204", "start": 1071.84, "end": 1073.84, "text": "That's the thing that matters a lot more than more tokens."}, {"id": "s205", "start": 1073.84, "end": 1081.679, "text": "that it's almost always better to repeat highquality data than it is to show lowquality data at a certain point um up to a threshold."}, {"id": "s206", "start": 1081.679, "end": 1083.84, "text": "Um but focus on kind of how can you get that?"}, {"id": "s207", "start": 1083.84, "end": 1087.84, "text": "This is data quality remains the single most underleveraged compute multiplier."}, {"id": "s208", "start": 1087.84, "end": 1092.88, "text": "If you're sitting in a world where you want to build a model or customize a model and you're limited on compute, how do you get past that?"}, {"id": "s209", "start": 1092.88, "end": 1096.32, "text": "Invest in data and that's something that can do a tremendous amount of effort."}, {"id": "s210", "start": 1096.32, "end": 1099.36, "text": "Um and then finally, this is a frontier research engineering problem."}, {"id": "s211", "start": 1099.36, "end": 1102.64, "text": "You need to be able to score and understand data across many different axes."}, {"id": "s212", "start": 1102.64, "end": 1103.76, "text": "because that's a frontier research problem."}, {"id": "s213", "start": 1103.76, "end": 1111.6, "text": "And then have that scale up to pabytes of data, massive scale, um, and can be very critical and it can lead to tremendous leverage."}, {"id": "s214", "start": 1111.6, "end": 1113.28, "text": "Um, and with that, I'll say thank you."}, {"id": "s215", "start": 1113.28, "end": 1116.4, "text": "Um, I will note that we're hiring for a bunch of different roles on the left here."}, {"id": "s216", "start": 1116.4, "end": 1124.799, "text": "Um, if you're interested in building or customizing your own model and um, would like to to get much better data out of the box or apply it to your own data, um, would love to chat with you."}, {"id": "s217", "start": 1124.799, "end": 1128.72, "text": "Um, and uh, thank you very much."}]}, {"id": "_ehJyfHg1Vk", "title": "The Era of Compound Engineering — Kieran Klaassen, Every/Cora", "channel": "AI Engineer", "duration": 1238, "upload_date": null, "url": "https://www.youtube.com/watch?v=_ehJyfHg1Vk", "api": "/api/talks/_ehJyfHg1Vk.json", "summary_url": "/#_ehJyfHg1Vk", "transcript": {"html": "/transcripts/_ehJyfHg1Vk.html", "txt": "/transcripts/_ehJyfHg1Vk.txt", "vtt": "/transcripts/_ehJyfHg1Vk.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.679, "end": 14.08, "text": "Hello."}, {"id": "s3", "start": 14.08, "end": 16.558999999999997, "text": "Hello everyone."}, {"id": "s4", "start": 18.08, "end": 20.08, "text": "Welcome."}, {"id": "s5", "start": 22.32, "end": 28.4, "text": "I want to start with saying I haven't written a single line of code this year."}, {"id": "s6", "start": 28.4, "end": 34.0, "text": "Um, maybe I haven't even looked at most of it yet."}, {"id": "s7", "start": 34.0, "end": 35.2, "text": "I do ship."}, {"id": "s8", "start": 35.2, "end": 44.879, "text": "Uh, I have a product I built that thousands of people use and trust with their email inbox, which is amazing."}, {"id": "s9", "start": 44.879, "end": 51.28, "text": "I'm actually proud of the code I ship and I'm proud of the product I ship."}, {"id": "s10", "start": 51.28, "end": 59.039, "text": "I've been doing this for two years and trying to extract my thinking and my taste into a system that compounds."}, {"id": "s11", "start": 59.039, "end": 62.96, "text": "And I'm going to share you how I do that."}, {"id": "s12", "start": 62.96, "end": 71.36, "text": "Lots of stuff you hear is like, \"Oh, you should use this the factory dark factory do that blah blah blah all the new hip cool things.\""}, {"id": "s13", "start": 71.36, "end": 74.159, "text": "Uh, what I'm trying to do is not that today."}, {"id": "s14", "start": 74.159, "end": 89.759, "text": "I'm going to just show you how I work and hopefully share something that you can bring to your workflow that will outlift trends and really set yourself up for success for newer models, bigger models."}, {"id": "s15", "start": 89.759, "end": 91.6, "text": "Uh there are two halves in this talk."}, {"id": "s16", "start": 91.6, "end": 97.119, "text": "One is why it's so important to compound how I got here."}, {"id": "s17", "start": 97.119, "end": 102.07900000000001, "text": "So this is for people that maybe are not at the end of the the trajectory."}, {"id": "s18", "start": 102.07900000000001, "end": 104.15899999999999, "text": "It's interesting to see how to get there."}, {"id": "s19", "start": 104.15899999999999, "end": 115.439, "text": "And then stuff you can run yourself, you can use uh day-to-day to ship, to build, uh to research, to do knowledge work even."}, {"id": "s20", "start": 115.52000000000001, "end": 117.03999999999999, "text": "Hello, I'm Kiran."}, {"id": "s21", "start": 117.03999999999999, "end": 121.52, "text": "I work at every is an AI lab for the future of work."}, {"id": "s22", "start": 121.52, "end": 125.6, "text": "And we ask ourselves the question, what's next?"}, {"id": "s23", "start": 125.6, "end": 130.08, "text": "And we write about it, we teach about it, we build."}, {"id": "s24", "start": 130.08, "end": 145.36, "text": "And we have a studio se uh studio um where we have mostly single engineering teams that take a problem they really care about and use AI to build a product out and really leverage that and"}, {"id": "s25", "start": 145.36, "end": 159.28, "text": "compounded knowledge is a big way we do that lots of loops shipping faster and faster and core as mine is where I invented compound engineering and it's a complete AI email inbox"}, {"id": "s26", "start": 159.28, "end": 160.56, "text": "it's agent native."}, {"id": "s27", "start": 160.56, "end": 164.07999999999998, "text": "So that means whatever you can do the agent can do."}, {"id": "s28", "start": 164.07999999999998, "end": 173.84, "text": "H it runs on your desktop phone CLI insight codeex like uh MCPS and I'm rebuilding it as version two."}, {"id": "s29", "start": 173.84, "end": 180.319, "text": "Uh so soon beta access if you want access just DM me talk to me."}, {"id": "s30", "start": 180.319, "end": 184.8, "text": "The cool part is it's one engineer and I have support."}, {"id": "s31", "start": 184.8, "end": 186.319, "text": "I have design support."}, {"id": "s32", "start": 186.319, "end": 193.599, "text": "I have some like database hardcore engineering problem support like you need some support."}, {"id": "s33", "start": 193.599, "end": 203.2, "text": "Um but I built a full email client alone and I've only started building this in January this new rebuild."}, {"id": "s34", "start": 203.2, "end": 204.56, "text": "I use reals on the back end."}, {"id": "s35", "start": 204.56, "end": 210.64, "text": "I love Ruby React on the front end and I own products fully."}, {"id": "s36", "start": 210.64, "end": 219.28, "text": "So I talk to people when something goes down I'm the one responsible and it's set up like this on purpose."}, {"id": "s37", "start": 219.28, "end": 224.64, "text": "I'm an ex VPB of engineer and founder and I know how to hire grow teams all that stuff."}, {"id": "s38", "start": 224.64, "end": 237.519, "text": "But I wanted to do the opposite with sonnet 3.5. I just felt there was something new that was unlocked and I wanted to see how far can AI go before I actually need to grow the team."}, {"id": "s39", "start": 237.519, "end": 240.64, "text": "And I'm still alone with some support which is cool."}, {"id": "s40", "start": 240.64, "end": 244.72, "text": "So I built Kora and this is what I learned."}, {"id": "s41", "start": 245.439, "end": 249.84, "text": "Two years ago I started and the bottleneck by then was code."}, {"id": "s42", "start": 249.84, "end": 257.6, "text": "So it kept moving and my job changed over the years but first there was bad code hallucination just stuff that didn't work."}, {"id": "s43", "start": 257.6, "end": 261.6, "text": "I added agents I added skills just reviewing it."}, {"id": "s44", "start": 261.6, "end": 264.32, "text": "So okay code got good."}, {"id": "s45", "start": 264.32, "end": 270.479, "text": "The plan was the bottleneck because I could do things but larger things."}, {"id": "s46", "start": 270.479, "end": 278.24, "text": "So whenever I have a good plan set out, it would do bigger things than just code changes."}, {"id": "s47", "start": 278.24, "end": 279.84000000000003, "text": "Okay, plans got good."}, {"id": "s48", "start": 279.84000000000003, "end": 284.479, "text": "Um the next bottleneck was deciding what to build."}, {"id": "s49", "start": 284.479, "end": 288.479, "text": "Talking with users, really understanding problems you're solving."}, {"id": "s50", "start": 288.479, "end": 291.28, "text": "This is why it's so good that you use your own product."}, {"id": "s51", "start": 291.28, "end": 294.24, "text": "You love what you're building for."}, {"id": "s52", "start": 294.24, "end": 298.639, "text": "And that got really good as well."}, {"id": "s53", "start": 298.639, "end": 300.08, "text": "The scope got bigger."}, {"id": "s54", "start": 300.08, "end": 303.36, "text": "AI could help writing uh plans."}, {"id": "s55", "start": 303.36, "end": 306.639, "text": "And I kept repeating myself and that was annoying."}, {"id": "s56", "start": 306.639, "end": 310.16, "text": "So I figured out there needs to be some kind of memory system."}, {"id": "s57", "start": 310.16, "end": 317.759, "text": "So every time um I repeat myself, I can say, \"Hey, can you make sure to store this knowledge in some way?\""}, {"id": "s58", "start": 317.759, "end": 322.88, "text": "I started with storing this in cloth MD, but at some point that became too large."}, {"id": "s59", "start": 322.88, "end": 336.15999999999997, "text": "Um, so I built a system that remembers and that's really where compound engineering came from and you see me go away from typing more towards judgment and taste and"}, {"id": "s60", "start": 336.15999999999997, "end": 349.68, "text": "I think implementation is mostly solved even though you see many people that do orchestration dark factories who it kind of works which is cool but the thing that doesn't work is"}, {"id": "s61", "start": 349.68, "end": 352.8, "text": "our judgment and our taste."}, {"id": "s62", "start": 352.8, "end": 365.44, "text": "And for me it's really where do I turn my brain on versus when do I leverage the model and it's where you make judgments and it's where you add taste."}, {"id": "s63", "start": 365.44, "end": 384.479, "text": "So where you think where you iterate where you jam where you brainstorm I extract that into a system and if it's extracted into the system you can move on to bigger problems because the next time the AI will come up with a brainstorm it will already include that thinking"}, {"id": "s64", "start": 384.479, "end": 397.44, "text": "so you can go on for the next one and I see that one engineer with a compounding system just beats teams like full teams that use AI that don't."}, {"id": "s65", "start": 398.08, "end": 399.84000000000003, "text": "This is my loop."}, {"id": "s66", "start": 399.84000000000003, "end": 404.88, "text": "It's it there's more to it than this, but this is the overview."}, {"id": "s67", "start": 404.88, "end": 411.28, "text": "Brainstorming, planning, working, reviewing, polishing, compounding, and repeating."}, {"id": "s68", "start": 411.28, "end": 413.759, "text": "And the real trick here is on both ends."}, {"id": "s69", "start": 413.759, "end": 420.24, "text": "It's kind of the human AI sandwich where the human is the bread and the AI is the middle part."}, {"id": "s70", "start": 420.24, "end": 422.88, "text": "And the brain is on on the ends."}, {"id": "s71", "start": 422.88, "end": 434.319, "text": "So the start brainstorming where you have to decide what to work on what the problem is and really understand what you're trying to do and at the end where your taste comes in where you decide"}, {"id": "s72", "start": 434.319, "end": 444.96, "text": "this looks very good makes me very happy or we need to raise the bar we need to do better we need to make it more snappy we need to go optimistic or whatever that is like"}, {"id": "s73", "start": 444.96, "end": 454.56, "text": "like delight and throughout here especially in the brain on parts it's important to extract the learnings to compound."}, {"id": "s74", "start": 454.56, "end": 457.759, "text": "So that's basically the loop."}, {"id": "s75", "start": 457.84000000000003, "end": 461.759, "text": "You cannot run the middle if it's not set up correctly."}, {"id": "s76", "start": 461.759, "end": 471.68, "text": "And it's very important to be able to let go and let the machine rip overnight for many hours in parallel."}, {"id": "s77", "start": 472.08, "end": 478.8, "text": "And the only way to be able to do that is making sure you spend time on uh on that system."}, {"id": "s78", "start": 478.8, "end": 486.639, "text": "So my rules 50% should go into creating uh the feature just making sure like did it build the feature?"}, {"id": "s79", "start": 486.639, "end": 489.12, "text": "Did it deliver the value you set out to do?"}, {"id": "s80", "start": 489.12, "end": 495.44, "text": "But 50% of the time should go to um teaching the system for anything that it did wrong."}, {"id": "s81", "start": 495.44, "end": 496.479, "text": "Can we learn something?"}, {"id": "s82", "start": 496.479, "end": 498.4, "text": "Can you teach the system something?"}, {"id": "s83", "start": 498.4, "end": 507.039, "text": "And this is something that is kind of hard, but it's very important because it will make the next time better."}, {"id": "s84", "start": 507.039, "end": 529.76, "text": "One bonus is because of this extraction um I store all of this knowledge inside my repository as solution documents and people say oh but tokens and in my research it's actually more token efficient because if you have the right answers and the right solutions already within the token you don't need to do review"}, {"id": "s85", "start": 529.76, "end": 539.2, "text": "you don't need to correct you don't need to do deep research across the internet because the token's already there so it's actually more token efficient in the long term, which is cool."}, {"id": "s86", "start": 539.2, "end": 543.44, "text": "Less research, finding things faster."}, {"id": "s87", "start": 543.44, "end": 551.519, "text": "The real reason why this works is my brain is fixed and AI isn't or less fixed."}, {"id": "s88", "start": 551.519, "end": 562.56, "text": "And my philosophy is keep extracting until the complete middle runs itself and is so freaking good that it will surprise you."}, {"id": "s89", "start": 563.36, "end": 566.24, "text": "Um let me show you how this works."}, {"id": "s90", "start": 566.24, "end": 582.16, "text": "Uh so I have a plugin called the compound engineering plugin that you can install in whatever tool you use codeexcloud code cursor plus 10 others and I just built this while building Kora shared it at some point and now"}, {"id": "s91", "start": 582.16, "end": 584.24, "text": "hundreds of thousands of people use it daily."}, {"id": "s92", "start": 584.24, "end": 586.64, "text": "So thank you all for using it if you did."}, {"id": "s93", "start": 586.64, "end": 587.76, "text": "I'm honored."}, {"id": "s94", "start": 587.76, "end": 592.08, "text": "Um, I never decided this should be something like hype."}, {"id": "s95", "start": 592.08, "end": 595.68, "text": "It's just me using my plug-in shipping code."}, {"id": "s96", "start": 595.68, "end": 597.44, "text": "Uh, you can install it wherever."}, {"id": "s97", "start": 597.44, "end": 603.839, "text": "Uh, you can also create your own version of this, which could be just storing information in files."}, {"id": "s98", "start": 603.839, "end": 605.2, "text": "Uh, however you do it."}, {"id": "s99", "start": 605.2, "end": 606.48, "text": "But let me show you the plug-in."}, {"id": "s100", "start": 606.48, "end": 612.24, "text": "So, compound engineering became compound product as well."}, {"id": "s101", "start": 612.24, "end": 620.88, "text": "Uh I have a lovely uh co-contributor Trevan Chowo who has a very good product sense and product background."}, {"id": "s102", "start": 620.88, "end": 632.24, "text": "So he brought a lot of product thinking and I think compound engineering is really for engineers, PMs, designers, even people that do knowledge work within every love to use compound engineering."}, {"id": "s103", "start": 632.24, "end": 637.6, "text": "It's such a uh like universal uh concept of compounding knowledge."}, {"id": "s104", "start": 637.6, "end": 641.279, "text": "It doesn't have to be used for engineers but that's where it came from me."}, {"id": "s105", "start": 641.279, "end": 648.48, "text": "So the first demo is um it's it's here to activate your brain."}, {"id": "s106", "start": 648.48, "end": 651.8389999999999, "text": "So this is called CE ID8 and you can run it."}, {"id": "s107", "start": 651.8389999999999, "end": 657.76, "text": "And here I run it in it's maybe a little bit small but I say hey I have Kora version version one."}, {"id": "s108", "start": 657.76, "end": 660.56, "text": "I want to upgrade people to version two."}, {"id": "s109", "start": 660.56, "end": 666.079, "text": "Um come up with oh no actually this is look at all my open open tickets."}, {"id": "s110", "start": 666.079, "end": 667.279, "text": "Tell me what to do next."}, {"id": "s111", "start": 667.279, "end": 668.24, "text": "It's a great command."}, {"id": "s112", "start": 668.24, "end": 676.72, "text": "It will just go through all your issues and you can link linear open like open source issues on GitHub, Slack, intercom."}, {"id": "s113", "start": 676.72, "end": 687.12, "text": "What it will do is it will generate uh structure from all this mess and we'll make arguments about what is good to work on versus not good to work on."}, {"id": "s114", "start": 687.12, "end": 696.16, "text": "And the cool part is it will reason about this and the output here is a clean HTML page that you can share with the team that you can be inspired by."}, {"id": "s115", "start": 696.16, "end": 708.88, "text": "So this is generation of ids and the cool part is you can point it to your OKRs you can um get ideiation aligned to your strategy and that's kind of how it compounds."}, {"id": "s116", "start": 708.88, "end": 722.56, "text": "So if you have past experiments or past learnings in your repository or a strategy document which you can create with CE strategy, it will score these ids against this knowledge already which is really cool."}, {"id": "s117", "start": 722.56, "end": 743.04, "text": "And I've seen people dump this uh document inside cloth design and say create a PowerPoint and you get a beautifully designed PowerPoint with like XY matrix of where the sweet spot is for what to do for your OKRs which is very low effort for you and very impressive to bring to your team."}, {"id": "s118", "start": 743.6, "end": 746.48, "text": "Uh next one is a very simple one."}, {"id": "s119", "start": 746.48, "end": 749.44, "text": "It's called C do review but is very useful."}, {"id": "s120", "start": 749.44, "end": 758.399, "text": "Um, if someone hands you a PRD or some kind of document, run dock review on it and it comes back with very sharp questions."}, {"id": "s121", "start": 758.399, "end": 759.92, "text": "I always like the questions."}, {"id": "s122", "start": 759.92, "end": 761.44, "text": "I'm like, \"Oh, that's a good question."}, {"id": "s123", "start": 761.44, "end": 762.9590000000001, "text": "I did not think about it.\""}, {"id": "s124", "start": 762.9590000000001, "end": 768.639, "text": "So, either you relay this to your colleague or you ask them to answer."}, {"id": "s125", "start": 768.639, "end": 782.8, "text": "You can then compound that knowledge after answering with C compound so that the next time um this answer is already baked in and it wouldn't ask you it would already know the answer because it's already embedded in the system."}, {"id": "s126", "start": 782.8, "end": 784.639, "text": "You can share this with people."}, {"id": "s127", "start": 784.639, "end": 787.68, "text": "You can say oh you can actually run this yourself as well."}, {"id": "s128", "start": 787.68, "end": 789.12, "text": "This runs anywhere."}, {"id": "s129", "start": 789.12, "end": 790.56, "text": "So you can do it in co-work as well."}, {"id": "s130", "start": 790.56, "end": 792.72, "text": "It doesn't need to be in cloth code."}, {"id": "s131", "start": 792.72, "end": 800.56, "text": "Um it's a very simple thing that we spend a lot of effort in to make very good and it's part of our flow."}, {"id": "s132", "start": 800.8, "end": 805.68, "text": "This my most used one u it's when the ID is too big to describe."}, {"id": "s133", "start": 805.68, "end": 809.6, "text": "So this was the example of Kora version one to version two."}, {"id": "s134", "start": 809.6, "end": 811.6, "text": "I say c brainstorm."}, {"id": "s135", "start": 811.6, "end": 813.519, "text": "This is a brain on command."}, {"id": "s136", "start": 813.519, "end": 816.48, "text": "Uh I know I need to get into into the zone."}, {"id": "s137", "start": 816.48, "end": 818.0, "text": "I block off time."}, {"id": "s138", "start": 818.0, "end": 821.279, "text": "I'm not going to multitask or anything like that."}, {"id": "s139", "start": 821.279, "end": 823.04, "text": "Um, and I run this."}, {"id": "s140", "start": 823.04, "end": 824.88, "text": "So, it pulls in compound knowledge."}, {"id": "s141", "start": 824.88, "end": 831.519, "text": "It looks at the difference between Kora one and two and, uh, looks at the personas I've set up."}, {"id": "s142", "start": 831.519, "end": 835.92, "text": "So, it will see, hey, like certain people need certain things."}, {"id": "s143", "start": 835.92, "end": 837.6, "text": "And it will ask me questions."}, {"id": "s144", "start": 837.6, "end": 840.48, "text": "And it doesn't ask me a lot of questions."}, {"id": "s145", "start": 840.48, "end": 846.639, "text": "It's dialed in to ask you just the right amount of questions it needs to do the work."}, {"id": "s146", "start": 846.639, "end": 850.72, "text": "It's very easy to get 30 questions and feel, \"Wow, I did so much.\""}, {"id": "s147", "start": 850.72, "end": 853.44, "text": "But in the end, the goal is not to answer questions."}, {"id": "s148", "start": 853.44, "end": 857.279, "text": "In the end, it's to get the absolute best work out of it."}, {"id": "s149", "start": 857.279, "end": 861.199, "text": "And I think other libraries might over question."}, {"id": "s150", "start": 861.199, "end": 864.8, "text": "H I think there's a balance uh to be found there."}, {"id": "s151", "start": 864.8, "end": 869.6, "text": "So out comes a plan, a brainstorm document stored and compounded."}, {"id": "s152", "start": 869.6, "end": 877.199, "text": "And then my favorite, which is SL LFG, which is basically the loop, the the automation loop."}, {"id": "s153", "start": 877.199, "end": 882.88, "text": "And if you like vibe coding/ LFG something is great as well."}, {"id": "s154", "start": 882.88, "end": 884.079, "text": "It will run for hours."}, {"id": "s155", "start": 884.079, "end": 887.12, "text": "It will do planning work review testing."}, {"id": "s156", "start": 887.12, "end": 888.079, "text": "Opens a PR."}, {"id": "s157", "start": 888.079, "end": 888.9590000000001, "text": "It will dog food."}, {"id": "s158", "start": 888.9590000000001, "end": 890.8, "text": "It will try fix fix things."}, {"id": "s159", "start": 890.8, "end": 895.8389999999999, "text": "It will then do a before and after video screenshot in the pull request."}, {"id": "s160", "start": 895.8389999999999, "end": 903.199, "text": "Makes it super easy for you to then see what happens last if it comes back."}, {"id": "s161", "start": 903.199, "end": 904.16, "text": "So this is overnight."}, {"id": "s162", "start": 904.16, "end": 905.279, "text": "You can do parallel."}, {"id": "s163", "start": 905.279, "end": 906.16, "text": "There's polish."}, {"id": "s164", "start": 906.16, "end": 909.04, "text": "This is the brain on again C polish."}, {"id": "s165", "start": 909.04, "end": 912.959, "text": "You give it the pull request and what it will do is it will show you."}, {"id": "s166", "start": 912.959, "end": 924.48, "text": "So I like to run it in cursor and on the left side I like to run this and it will tell me hey this was introduced with this LFG flow and on the right it will show the product."}, {"id": "s167", "start": 924.48, "end": 925.44, "text": "This is important."}, {"id": "s168", "start": 925.44, "end": 937.519, "text": "Sometimes I don't even know what was built because I also have video recordings that I dump into LFG that it will then process and analyze and see what went wrong."}, {"id": "s169", "start": 937.519, "end": 941.04, "text": "So sometimes I don't even know what it was solving for."}, {"id": "s170", "start": 941.04, "end": 945.04, "text": "So it's a good primer to know, okay, this is what we are here where we are."}, {"id": "s171", "start": 945.04, "end": 946.0, "text": "This is what it's solving."}, {"id": "s172", "start": 946.0, "end": 947.12, "text": "This is how I solved it."}, {"id": "s173", "start": 947.12, "end": 950.24, "text": "And you tell me what do you think?"}, {"id": "s174", "start": 950.24, "end": 951.759, "text": "And this is not QA."}, {"id": "s175", "start": 951.759, "end": 954.32, "text": "This is raising the bar like it should work."}, {"id": "s176", "start": 954.32, "end": 957.279, "text": "If it doesn't work here, your LFG flow failed."}, {"id": "s177", "start": 957.279, "end": 968.56, "text": "Um, but you can see here like this works only in this example there is a mark of a logo mark twice which is not technically wrong but I don't want two marks on one page."}, {"id": "s178", "start": 968.56, "end": 971.92, "text": "So in this case I can say hey there are marks two marks here."}, {"id": "s179", "start": 971.92, "end": 976.8, "text": "Can we just make sure we only ever have one and run C compound."}, {"id": "s180", "start": 976.8, "end": 987.68, "text": "So it will extract that knowledge, make sure next time when I do design work, it's tagged correctly, it will find that file and uh know not to do that."}, {"id": "s181", "start": 987.68, "end": 989.92, "text": "So that's closing the loop."}, {"id": "s182", "start": 989.92, "end": 994.079, "text": "You merge it and you learn something."}, {"id": "s183", "start": 994.88, "end": 998.639, "text": "So why does compound engineering resonate with people?"}, {"id": "s184", "start": 998.639, "end": 1001.8389999999999, "text": "I think it's not a very new concept."}, {"id": "s185", "start": 1001.8389999999999, "end": 1004.399, "text": "It's just something how we do software engineering."}, {"id": "s186", "start": 1004.399, "end": 1017.92, "text": "is just now instead of working with teams we use with AI we use AI and we leverage that and AI is very good at specific things especially with large amounts of knowledge and doing the right thing especially with latest models so"}, {"id": "s187", "start": 1017.92, "end": 1031.36, "text": "uh if you want to do this yourself if you don't want to use my plug-in uh make sure to extract never repeat if you see yourself repeating yourself make sure to extract it somehow make sure it doesn't happen again"}, {"id": "s188", "start": 1031.36, "end": 1036.959, "text": "make sure that there is a middle that can run without you that does the planning, working, reviewing, and it should be boring."}, {"id": "s189", "start": 1036.959, "end": 1038.319, "text": "It should just work."}, {"id": "s190", "start": 1038.319, "end": 1042.0, "text": "Uh you should not be needed if you're still needed in the loop."}, {"id": "s191", "start": 1042.0, "end": 1043.919, "text": "Spend time on the middle."}, {"id": "s192", "start": 1043.919, "end": 1045.439, "text": "Do it manually."}, {"id": "s193", "start": 1045.439, "end": 1049.76, "text": "Feel where it's off and like iterate until you can actually let it go."}, {"id": "s194", "start": 1049.76, "end": 1056.527, "text": "And if if you are at a point where you just run something and runs for three hours and it's always good, you know you're there."}, {"id": "s195", "start": 1056.527, "end": 1057.039, "text": "[sighs]"}, {"id": "s196", "start": 1057.039, "end": 1059.84, "text": "It's important to document the thinking, not the code."}, {"id": "s197", "start": 1059.84, "end": 1063.679, "text": "This is also very anti- um developery."}, {"id": "s198", "start": 1063.679, "end": 1074.96, "text": "It's like yeah but documentation shouldn't mean the code and like the code is the artifact itself but I am of the opinion to generalize you need reasoning behind why you did something"}, {"id": "s199", "start": 1074.96, "end": 1094.559, "text": "and all these traces even though they're bad could lead to things like hey something happened right at postmortem what decision was made by whom or what agent that led to this can we then turn that into a learning so we change that behavior for the next time and I've seen it work very well"}, {"id": "s200", "start": 1094.559, "end": 1104.0, "text": "uh especially with postmortems and again every interaction spend 50% of your time to make it better the next time."}, {"id": "s201", "start": 1104.0, "end": 1112.88, "text": "So, make sure to build the system that will remember uh instead of was this good, make the system better and make the system know."}, {"id": "s202", "start": 1112.88, "end": 1121.679, "text": "And I know it's hard like it's just hard to do for myself and we all know we need to do it, but it's kind of awkward and it's like h it's it works."}, {"id": "s203", "start": 1121.679, "end": 1122.16, "text": "It's great."}, {"id": "s204", "start": 1122.16, "end": 1123.039, "text": "Let's just move on."}, {"id": "s205", "start": 1123.039, "end": 1130.0, "text": "But it's very important and you can see the system really go if you do that a lot."}, {"id": "s206", "start": 1130.24, "end": 1145.12, "text": "So the bet is implementation is only getting cheaper and judgment is not and the future models and systems need to be set up so they have access to this judgment that we have our taste"}, {"id": "s207", "start": 1145.12, "end": 1147.36, "text": "uh to have more leverage."}, {"id": "s208", "start": 1147.36, "end": 1157.12, "text": "So that is the bottleneck and remember brain at the ends really activate your brain make sure you really understand what you're doing in the start."}, {"id": "s209", "start": 1157.12, "end": 1159.52, "text": "Don't offload the thinking to the AI."}, {"id": "s210", "start": 1159.52, "end": 1163.84, "text": "Make sure you truly feel understand what you're doing, the problem."}, {"id": "s211", "start": 1163.84, "end": 1167.76, "text": "H let the AI go and at the end raise the bar."}, {"id": "s212", "start": 1167.76, "end": 1169.36, "text": "Make sure you don't fix things."}, {"id": "s213", "start": 1169.36, "end": 1176.16, "text": "It should be very good at the end, but make sure to raise the bar because we're not shipping shitty code."}, {"id": "s214", "start": 1176.16, "end": 1181.44, "text": "And your standard should be the next feature should be easier because you ship this one."}, {"id": "s215", "start": 1181.44, "end": 1188.24, "text": "If the next feature is harder because you added complexity, which is normally how engineering works, we're flipping that."}, {"id": "s216", "start": 1188.24, "end": 1193.679, "text": "The next feature should be easier to build because you ship this one."}, {"id": "s217", "start": 1193.919, "end": 1194.88, "text": "I'm Kiran."}, {"id": "s218", "start": 1194.88, "end": 1196.32, "text": "Uh, check out the plugin."}, {"id": "s219", "start": 1196.32, "end": 1197.44, "text": "It's open source."}, {"id": "s220", "start": 1197.44, "end": 1200.0, "text": "Please um, contribute."}, {"id": "s221", "start": 1200.0, "end": 1200.88, "text": "PR is welcome."}, {"id": "s222", "start": 1200.88, "end": 1203.44, "text": "I love PRs from everyone."}, {"id": "s223", "start": 1203.44, "end": 1206.08, "text": "Go build your orchestration system."}, {"id": "s224", "start": 1206.08, "end": 1210.08, "text": "Go build your personal uh, knowledge base that compounds."}, {"id": "s225", "start": 1210.08, "end": 1211.36, "text": "And thank you."}, {"id": "s226", "start": 1211.36, "end": 1216.348, "text": "I'll be hanging around if you have questions and enjoy the rest of your day."}, {"id": "s227", "start": 1216.348, "end": 1218.348, "text": "[applause]"}]}, {"id": "bMjlRrWjdT0", "title": "AI Evals for Cross-Functional Teams — Nachiket Paranjape & Swaroop Chitlur Haridas, DoorDash", "channel": "AI Engineer", "duration": 971, "upload_date": null, "url": "https://www.youtube.com/watch?v=bMjlRrWjdT0", "api": "/api/talks/bMjlRrWjdT0.json", "summary_url": "/#bMjlRrWjdT0", "transcript": {"html": "/transcripts/bMjlRrWjdT0.html", "txt": "/transcripts/bMjlRrWjdT0.txt", "vtt": "/transcripts/bMjlRrWjdT0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.44, "end": 15.44, "text": "Good afternoon everyone."}, {"id": "s3", "start": 15.44, "end": 18.72, "text": "Thanks for uh coming for a post lunch uh talk."}, {"id": "s4", "start": 18.72, "end": 20.56, "text": "Always appreciate that."}, {"id": "s5", "start": 20.56, "end": 24.32, "text": "Um my name is Farup and here's my teammate Nachiket."}, {"id": "s6", "start": 24.32, "end": 29.76, "text": "Uh we are uh here behalf of the Door Dash Genai platform team."}, {"id": "s7", "start": 29.76, "end": 33.36, "text": "Um and we kind of wanted to share our eval journey."}, {"id": "s8", "start": 33.36, "end": 46.8, "text": "Uh it started as uh uh you know eval is another engineering thing but then it slowly we realized it evolved into a cross functional effort and we kind of want to share our story here."}, {"id": "s9", "start": 46.8, "end": 48.48, "text": "So what is this team?"}, {"id": "s10", "start": 48.48, "end": 50.879, "text": "This team is a gen platform team."}, {"id": "s11", "start": 50.879, "end": 54.32, "text": "Uh we are a horizontal team that helps all other product teams."}, {"id": "s12", "start": 54.32, "end": 59.76, "text": "So product teams at Door Dash build on top of the infrastructure and the primitives that we provide."}, {"id": "s13", "start": 59.76, "end": 71.03999999999999, "text": "Um and we see our uh USP and the value that we provide is that we help product teams balance these three forces which is accuracy, latency and cost."}, {"id": "s14", "start": 71.03999999999999, "end": 77.119, "text": "Um initially we applied this in terms of models but if you think about it it also applies to agents."}, {"id": "s15", "start": 77.119, "end": 82.799, "text": "Um and the way we achieve this is we have uh primitives and building blocks."}, {"id": "s16", "start": 82.799, "end": 90.88, "text": "Um so for example we have an LLM gateway where you can easily switch between different models uh and try the latest and greatest."}, {"id": "s17", "start": 90.88, "end": 102.799, "text": "Uh we have an agent gateway where you can connect to tools uh and other agents uh and we help solve authentication uh agent identity and other things in a central place"}, {"id": "s18", "start": 102.799, "end": 105.28, "text": "uh which our security team can bless."}, {"id": "s19", "start": 105.28, "end": 110.399, "text": "Um similarly we pair the LLM gateway with open weights models hosting."}, {"id": "s20", "start": 110.399, "end": 113.84, "text": "Uh, of course cost is a number one concern these days."}, {"id": "s21", "start": 113.84, "end": 120.88, "text": "Uh, and we uh kind of invested in open weights models uh and have seen significant impact uh already."}, {"id": "s22", "start": 120.88, "end": 124.32, "text": "Um, and maybe we'll talk about that in a future conference."}, {"id": "s23", "start": 124.32, "end": 129.84, "text": "Uh, the fourth pillar is eval and that's the part that we would want to share today."}, {"id": "s24", "start": 129.84, "end": 140.319, "text": "Um when we started talking to product teams internally at Door Dash uh there were varying uh distinct needs across teams."}, {"id": "s25", "start": 140.319, "end": 144.07999999999998, "text": "We had a consumer discovery and shopping assistant team."}, {"id": "s26", "start": 144.07999999999998, "end": 151.599, "text": "Uh for those who attended Ragago talk earlier today uh you will uh see the need for session level quality judgments."}, {"id": "s27", "start": 151.599, "end": 163.599, "text": "um uh then the personalization ML then you needed uh a way to scale up human judgment and with multi- aent systems we needed trajectory based evals now the question is"}, {"id": "s28", "start": 163.599, "end": 178.239, "text": "how do you cater to all these different needs under a common platform and uh as we spoke to these teams we realized like um we needed to empower the people who are the domain experts"}, {"id": "s29", "start": 178.239, "end": 193.519, "text": "and in our case that was strategy and operations folks it as product managers uh it was even labeling partners uh and not only engineers so we kind of started with like okay we have to be UI first and this was the guidance we had from Andy Fang our co-founder as well"}, {"id": "s30", "start": 193.519, "end": 208.239, "text": "um so we had UIs for non-engineers to contribute uh then we kind of evolved to also being API first so that engineers can also build and not be blocked on the central platform and they can build their own uh"}, {"id": "s31", "start": 208.239, "end": 220.0, "text": "uh uh systems uh and Then of course with the coding agents now we have become workflow first where we kind of empower SNO and PMs to also being able to uh navigate"}, {"id": "s32", "start": 220.0, "end": 224.159, "text": "uh the platform and uh run operations as well."}, {"id": "s33", "start": 224.159, "end": 230.4, "text": "Um so with that context I'll hand it off to Nachig to talk about uh how we went about delivering this."}, {"id": "s34", "start": 230.4, "end": 231.599, "text": "Cool."}, {"id": "s35", "start": 231.599, "end": 232.48, "text": "Thanks Harup."}, {"id": "s36", "start": 232.48, "end": 234.31900000000002, "text": "Um and thanks everyone for joining us."}, {"id": "s37", "start": 234.31900000000002, "end": 238.799, "text": "I know France is playing right now and I promise you this will be better than that."}, {"id": "s38", "start": 238.799, "end": 239.36, "text": "I'm kidding."}, {"id": "s39", "start": 239.36, "end": 251.599, "text": "Um so as Faroo was saying uh Evals is not just an engineering harness it is a cross functional effort across different pillars across different uh teams uh that actually"}, {"id": "s40", "start": 251.599, "end": 258.639, "text": "helps us add all the domain specific knowledge into our uh into the quality of the AI itself."}, {"id": "s41", "start": 258.639, "end": 267.199, "text": "So from your traces to your data sets uh from you know scoring mechanisms uh this is all basically a team sport."}, {"id": "s42", "start": 267.199, "end": 272.72, "text": "we all have to play uh and help improve the quality of AI."}, {"id": "s43", "start": 273.52, "end": 282.08, "text": "So going a little bit deeper into the same aspect uh we have different uh teams uh at Door Dash who help us actually improve the quality of AI."}, {"id": "s44", "start": 282.08, "end": 288.32, "text": "So you're going to have your strategy and operations folks who are going to set priorities, set the quality bar that you want to aim for."}, {"id": "s45", "start": 288.32, "end": 294.479, "text": "You're going to have your product people who are going to translate uh these requirements into rubrics workflows."}, {"id": "s46", "start": 294.479, "end": 298.24, "text": "You're going to have your operations teams running uh annotations."}, {"id": "s47", "start": 298.24, "end": 306.72, "text": "You're going to have your engineering teams like us uh providing APIs, telemetry, data sets, judges, all you know the the cool things."}, {"id": "s48", "start": 306.72, "end": 319.6, "text": "Um and combining all these together is is what a recipe is for actually making sure that you are shipping quality AI products through an eval platform."}, {"id": "s49", "start": 319.6, "end": 325.52, "text": "So we've tried to boil this down uh into sort of you know like a a continuous iteration loop."}, {"id": "s50", "start": 325.52, "end": 339.28, "text": "Uh so right from tracing uh you know having a tracing solution viewing your sessions your traces to sampling them down you uh you know to a very small uh set that you actually want to look at"}, {"id": "s51", "start": 339.28, "end": 351.36, "text": "uh annotating these with the domain specific expertise that you bring in with the different teams I mentioned reviewing those uh then creating those golden data sets which are going to be you you know your"}, {"id": "s52", "start": 351.36, "end": 362.8, "text": "uh golden data sets and that that you want to measure or calibrate against uh and then of course like you know monitoring this over a period of time and then you know rinse and repeat uh go through the whole loop again."}, {"id": "s53", "start": 362.8, "end": 376.24, "text": "So this is in our experience has been you know like a good sort of continuous loop uh for you know shipping quality AI at the plat on on the platform level uh we we have two surfaces"}, {"id": "s54", "start": 376.24, "end": 390.08, "text": "uh so we have the telemetry layer uh where we have all our traces our scores uh observations that is also sort of the plane where users are able to access these traces using an MCP using an SDK"}, {"id": "s55", "start": 390.08, "end": 397.36, "text": "uh using our APIs and then we have the workflow This is where a lot of our strat ops, our product teams operate on the platform."}, {"id": "s56", "start": 397.36, "end": 399.84000000000003, "text": "So this is where all the annotation tasks are set."}, {"id": "s57", "start": 399.84000000000003, "end": 407.6, "text": "Uh you know this is where they review their golden data sets, uh create their judges, calibrate their judges and so on."}, {"id": "s58", "start": 407.6, "end": 416.0, "text": "So maybe today we'll go through you know these sort of four different uh modules or pillars of our platform uh step by step."}, {"id": "s59", "start": 416.0, "end": 430.72, "text": "Uh so again first one uh tracing and sampling uh which is actually capturing what your agents what your LLMs are actually uh you know outputting for the lack of better words uh and actually viewing those."}, {"id": "s60", "start": 430.72, "end": 439.52, "text": "Now in order to also power this uh whole platform we have I think as far mentioned we have gone in an API first uh approach."}, {"id": "s61", "start": 439.52, "end": 448.4, "text": "Uh what that has allowed us to do is have these table APIs that actually uh you know and then you know build UIs uh on top of that."}, {"id": "s62", "start": 448.4, "end": 455.36, "text": "Uh so all our scores our data sets uh these are all powered by very stable APIs uh that our team owns."}, {"id": "s63", "start": 455.36, "end": 464.08, "text": "Uh so all your API access uh including you know like an SDK access is basically powered by this single uh plane."}, {"id": "s64", "start": 464.08, "end": 470.8, "text": "Um again going back uh and you know like just refreshing your memory."}, {"id": "s65", "start": 470.8, "end": 476.879, "text": "Uh step one capture your traces uh capture your sessions uh measure your scores."}, {"id": "s66", "start": 476.879, "end": 489.84, "text": "Uh then you want to start uh almost you know like adding all your judgment your context your domain knowledge uh and then calibrating your judges is what we have seen as the whole"}, {"id": "s67", "start": 489.84, "end": 492.479, "text": "uh life cycle."}, {"id": "s68", "start": 493.12, "end": 495.199, "text": "Step two is on the annotation side."}, {"id": "s69", "start": 495.199, "end": 507.919, "text": "Uh so you obviously are capturing a lot of your uh agentic behavior, your sessions, your traces, but you actually want to see what are some places where things went well and what are some places where things did not go well."}, {"id": "s70", "start": 507.919, "end": 518.24, "text": "This is where you can actually titrate your your you know and actually look in inside what's actually happening uh at the session level and annotate these data sets."}, {"id": "s71", "start": 518.24, "end": 522.479, "text": "Um and as Surup mentioned, we have a lot of use cases."}, {"id": "s72", "start": 522.479, "end": 537.12, "text": "we have we we talked to multiple different teams who have uh various uh ways of annotating uh their data sets uh and it's it's almost hard for a platform team to you know build like a UI specific"}, {"id": "s73", "start": 537.12, "end": 554.16, "text": "uh for each use case uh and and you know to give you an example uh it's usually going to be an annotator who's going to annotate these data sets so the platform team is you know in charge of the APIs we have a strategy and of person who's actually deciding what to annotate and then you have an"}, {"id": "s74", "start": 554.16, "end": 557.6, "text": "annotator who's actually going to annotate uh your data set."}, {"id": "s75", "start": 557.6, "end": 565.8389999999999, "text": "So we took this approach uh everybody uh has uh you know access to coding agents uh and we actually doubled down on that API first approach."}, {"id": "s76", "start": 565.8389999999999, "end": 577.36, "text": "So because we had these APIs we were actually uh able to enable our statops teams to use something like a codeex or a claw code and v code their own annotation UIs."}, {"id": "s77", "start": 577.36, "end": 580.399, "text": "Uh so we had different use cases."}, {"id": "s78", "start": 580.399, "end": 583.6, "text": "Uh I think we had a talk from Ragav before."}, {"id": "s79", "start": 583.6, "end": 585.76, "text": "Uh we had image annotation use cases."}, {"id": "s80", "start": 585.76, "end": 588.8, "text": "We had some uh you know manual testing use cases."}, {"id": "s81", "start": 588.8, "end": 593.04, "text": "What stood out to us was the underlying patterns were similar."}, {"id": "s82", "start": 593.04, "end": 600.959, "text": "So if we are are API first uh we can actually enable our our our partners to simply v code these UIs for annotation."}, {"id": "s83", "start": 600.959, "end": 613.279, "text": "So it's it's like a very simple example then you know of of a vibe coded UI looks pretty clean does the job uh and you get you know the annotation that you eat this is basically like a menu from a restaurant"}, {"id": "s84", "start": 613.279, "end": 624.399, "text": "uh it's it's you know nothing crazy uh but the point I want to make here is that what helped us was to give this workflow in the hands of the operators"}, {"id": "s85", "start": 624.399, "end": 628.959, "text": "so that they can actually build their own vcoded annotation UIs."}, {"id": "s86", "start": 628.959, "end": 637.36, "text": "Uh so moving on once you have these annotation UIs you obviously want to you know calibrate your your your judge prompts you obviously have some LM as a judge"}, {"id": "s87", "start": 637.36, "end": 648.24, "text": "uh metric that you're tracking you want to now start improving that with these golden data sets u in order to do that uh you know we have a pretty simple process"}, {"id": "s88", "start": 648.24, "end": 657.8389999999999, "text": "uh you you're going to start with you know some judge prompt take a look at you know what exactly do you want to measure from the output uh g you know have have us have something simple"}, {"id": "s89", "start": 657.8389999999999, "end": 666.56, "text": "you're going to have your baseline scores uh where you're going to simply run those LLM judges on your traces and then you're going to have that optimization loop."}, {"id": "s90", "start": 666.56, "end": 673.12, "text": "Uh so we use uh the JPEA library which is a pretty commonly used library out there for prompt optimization."}, {"id": "s91", "start": 673.12, "end": 683.76, "text": "Uh and once you know the the iteration loop is complete uh our partner teams are happy they're going to then elevate that judge prompt as their LLM as a judge."}, {"id": "s92", "start": 683.76, "end": 694.24, "text": "Now even while doing that uh LLM as a judge as a concept the whole prompt calibration concept might be uh straightforward to a lot of folks but it is still like a pretty new and evolving"}, {"id": "s93", "start": 694.24, "end": 695.12, "text": "field."}, {"id": "s94", "start": 695.12, "end": 700.64, "text": "Uh and what we wanted to do was really reduce the friction of back and forth with an engineering team."}, {"id": "s95", "start": 700.64, "end": 707.12, "text": "So we tried to really remove all the complicated logic and make this into a self-s serve UI."}, {"id": "s96", "start": 707.12, "end": 709.92, "text": "So the screenshot that you actually see is what actually exists."}, {"id": "s97", "start": 709.92, "end": 714.88, "text": "uh so uh you know like a product manager or an operator is going to come to our UI."}, {"id": "s98", "start": 714.88, "end": 720.8, "text": "They're going to set some of these configs uh on the platform and then actually run the calibration loop themselves."}, {"id": "s99", "start": 720.8, "end": 732.32, "text": "So they don't have to worry about the different settings that they need to worry about what are the different uh you know tweaks that they need to do and they can actually like you know run a calibration loop using any model of their choice."}, {"id": "s100", "start": 732.32, "end": 739.04, "text": "I think in this example I have Gemini they can use run it using uh you know any of the claude or the openi models too."}, {"id": "s101", "start": 739.04, "end": 742.56, "text": "The other important piece was actually uh making this reviewable."}, {"id": "s102", "start": 742.56, "end": 749.92, "text": "Uh you know again a lot of this uh is a closed box where you can't really it's hard to see what's actually happening."}, {"id": "s103", "start": 749.92, "end": 756.32, "text": "Uh so the second piece that we built was actually giving them vis visualization and visibility into what's actually happening."}, {"id": "s104", "start": 756.32, "end": 764.9590000000001, "text": "So on the left you can see we and this is like one of the good examples where we saw like a significant amount of improvement in the judge prompt."}, {"id": "s105", "start": 764.9590000000001, "end": 775.6, "text": "uh and we actually show the you know the the previous the original system prompt and the calibrated prompt to our partners so that they are also able to gain that trust"}, {"id": "s106", "start": 775.6, "end": 779.92, "text": "uh why as as as we build this [clears throat]"}, {"id": "s107", "start": 779.92, "end": 795.76, "text": "yeah just want to add to that is this enables different configurations in different teams in some teams you have seen the strategy and operations folks own the prompt uh you have seen some teams where the product manager owns the prompt you have seen some teams where engineering owns the prompt so this gives gives the flexibility"}, {"id": "s108", "start": 795.76, "end": 799.04, "text": "for teams to design and evolve because we are all learning."}, {"id": "s109", "start": 799.04, "end": 803.76, "text": "So the even the org uh design is improving and we are enabling that."}, {"id": "s110", "start": 803.76, "end": 805.2, "text": "Yeah, that that's a good point."}, {"id": "s111", "start": 805.2, "end": 815.76, "text": "I think the overall idea was to you know build something which is as self-s served as possible so that uh you know people aren't always necessarily blocked by our team helping them out."}, {"id": "s112", "start": 815.76, "end": 818.88, "text": "Um and then finally you know uh the quality loop in practice."}, {"id": "s113", "start": 818.88, "end": 824.639, "text": "you know as we've been going through this exercise we've seen a lot of improvements happening to our product as well."}, {"id": "s114", "start": 824.639, "end": 836.72, "text": "So you know for example we sort mentioned we started with the UIs we are you know now API and workflow first uh we're trying to reuse a lot of the existing infrastructure that already existed at Door Dash"}, {"id": "s115", "start": 836.72, "end": 839.6, "text": "uh and that's helped us uh get a long way."}, {"id": "s116", "start": 839.6, "end": 843.279, "text": "Now some of uh we we we've seen obviously like you know really good results."}, {"id": "s117", "start": 843.279, "end": 858.16, "text": "I think a very good result that we we do like to call out is we actually did see a lot of reduction in the spend uh at per annotation cost as you as you all can imagine we do have you know thousands of rows that need to get annotated"}, {"id": "s118", "start": 858.16, "end": 871.8389999999999, "text": "every week uh and it can get pretty expensive at doash scale uh and having this selfserve uh annotation platform really helped us reduce increase the velocity and reduce the cost that we were actually spending"}, {"id": "s119", "start": 871.8389999999999, "end": 873.12, "text": "with these annotators."}, {"id": "s120", "start": 873.12, "end": 875.6, "text": "to to annotate the data for us."}, {"id": "s121", "start": 875.6, "end": 878.72, "text": "Uh obviously uh this resulted in faster loops."}, {"id": "s122", "start": 878.72, "end": 880.88, "text": "Uh teams were able to iterate faster."}, {"id": "s123", "start": 880.88, "end": 887.279, "text": "They were able to uh you know calibrate their own judges in a completely self-s served way."}, {"id": "s124", "start": 887.279, "end": 893.68, "text": "Uh and thus it has resulted us in in in moving with a very very high velocity."}, {"id": "s125", "start": 894.24, "end": 906.399, "text": "So uh finally I just wanted to you know quickly touch on this slide again uh the eight steps you know continuous loop uh which is you know you you have your traces you want to look at your traces your sessions"}, {"id": "s126", "start": 906.399, "end": 914.959, "text": "you want to sample it down to a size which is which you are comfortable with uh you want to start annotating your data sets you really want to start"}, {"id": "s127", "start": 914.959, "end": 926.32, "text": "uh making the data better with the human knowledge that exists and the domain knowledge that exists and then calibrate your workflows was calibrate your agents, calibrate your LLM judges"}, {"id": "s128", "start": 926.32, "end": 935.6, "text": "with this golden data set and then repeat this whole cycle uh over a period of time to you know to ship reliably and ship with high quality."}, {"id": "s129", "start": 935.6, "end": 937.76, "text": "Um yeah, we have 4 minutes left."}, {"id": "s130", "start": 937.76, "end": 939.36, "text": "Thank you once again."}, {"id": "s131", "start": 939.36, "end": 940.88, "text": "I think that was the last slide."}, {"id": "s132", "start": 940.88, "end": 948.9590000000001, "text": "Uh thanks for attending and if there's any questions, we'd be happy to hang out after the talk or even happy to answer them now."}, {"id": "s133", "start": 951.07, "end": 953.07, "text": "[applause]"}]}, {"id": "bdHaOXZOhcM", "title": "Prototyping as Leadership: How a CTO Ships with AI Agents — Hursh Agrawal, The Browser Company", "channel": "AI Engineer", "duration": 1098, "upload_date": null, "url": "https://www.youtube.com/watch?v=bdHaOXZOhcM", "api": "/api/talks/bdHaOXZOhcM.json", "summary_url": "/#bdHaOXZOhcM", "transcript": {"html": "/transcripts/bdHaOXZOhcM.html", "txt": "/transcripts/bdHaOXZOhcM.txt", "vtt": "/transcripts/bdHaOXZOhcM.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.28, "end": 16.4, "text": "Hi everyone, thanks for coming."}, {"id": "s3", "start": 16.4, "end": 17.68, "text": "Uh, I'm Hersh Agarwal."}, {"id": "s4", "start": 17.68, "end": 21.84, "text": "I'm the CTO and co-founder of the browser company, makers of the Arc and Dia browsers."}, {"id": "s5", "start": 21.84, "end": 28.4, "text": "Uh, and I'm going to talk about prototyping as leadership as you get to a manager schedule, how you can keep building."}, {"id": "s6", "start": 28.4, "end": 32.0, "text": "So this is my actual calendar from last week."}, {"id": "s7", "start": 32.0, "end": 35.52, "text": "Uh I imagine this is kind familiar to some of you in leadership."}, {"id": "s8", "start": 35.52, "end": 38.0, "text": "Um that was my actual week."}, {"id": "s9", "start": 38.0, "end": 40.48, "text": "I uh have a whole org that reports up into me."}, {"id": "s10", "start": 40.48, "end": 48.399, "text": "So I have 15 plus recurring meetings a week uh standups, reviews, recruiting meetings, etc. Uh and seven direct reports."}, {"id": "s11", "start": 48.399, "end": 55.28, "text": "And I've noticed something over the last several months, which is I've started to consistently ship, you know, two to 10 PRs a week."}, {"id": "s12", "start": 55.28, "end": 56.32, "text": "Uh and this is new."}, {"id": "s13", "start": 56.32, "end": 58.48, "text": "This was not possible several months ago."}, {"id": "s14", "start": 58.48, "end": 60.719, "text": "It's really because of these new AI agents."}, {"id": "s15", "start": 60.719, "end": 64.72, "text": "Uh, and notably, I also have a toddler at home, so I like cannot work 996."}, {"id": "s16", "start": 64.72, "end": 66.72, "text": "You know, I'm working 40 50 hours a week."}, {"id": "s17", "start": 66.72, "end": 70.96000000000001, "text": "So, I really have to fit all this in into a regular week."}, {"id": "s18", "start": 71.28, "end": 77.84, "text": "And pre-I agents, uh, as you grew as a leader, you had more of the org reporting to you."}, {"id": "s19", "start": 77.84, "end": 82.88, "text": "Uh, you would sort of the way you would influence the org was through communicating to people."}, {"id": "s20", "start": 82.88, "end": 94.07900000000001, "text": "Uh so you'd uh write road maps, docs, meetings, and you'd sort of incept uh your context and what you wanted to build with your employees uh and your engineers."}, {"id": "s21", "start": 94.07900000000001, "end": 104.32, "text": "And now, interestingly, in the last few months, as coding agents have become more autonomous and able to handle longer tasks, the manager schedule, as Paul Graham put it, is suddenly"}, {"id": "s22", "start": 104.32, "end": 106.399, "text": "usable as building time."}, {"id": "s23", "start": 106.399, "end": 108.88, "text": "You can actually ship stuff."}, {"id": "s24", "start": 108.88, "end": 112.0, "text": "And so I think building is part of the job now."}, {"id": "s25", "start": 112.0, "end": 120.24, "text": "you can do it first of all as a leader but it's I think it's also becoming necessary as part of the job for two reasons."}, {"id": "s26", "start": 120.24, "end": 131.76, "text": "First, uh, the technology world is changing where suddenly the core technology that's part of our products are these frontier models that change every 3 months, which is a new dynamic that's come out."}, {"id": "s27", "start": 131.76, "end": 135.599, "text": "And as each new frontier model comes out, its capabilities change."}, {"id": "s28", "start": 135.599, "end": 137.84, "text": "The contours of what it's useful for change."}, {"id": "s29", "start": 137.84, "end": 141.36, "text": "It's, you know, how it actually reacts to prompting changes."}, {"id": "s30", "start": 141.36, "end": 150.0, "text": "And there's so much noise on Twitter, even internally for us, and so many opinions with each new model release on what's good and what's bad."}, {"id": "s31", "start": 150.0, "end": 157.44, "text": "And I found it is impossible to tell what a new model is good for unless you have your hands in it and you're using it all day long."}, {"id": "s32", "start": 157.44, "end": 168.72, "text": "And so having an ability to slot in building time into your schedule means you can figure out the contours of what is this new model family capable of and both how do I direct my engineers"}, {"id": "s33", "start": 168.72, "end": 175.519, "text": "in terms of uh setting expectations on how they should be building but also getting a sense of how does this fit into our product?"}, {"id": "s34", "start": 175.519, "end": 176.56, "text": "How does this fit into our business?"}, {"id": "s35", "start": 176.56, "end": 179.599, "text": "You know how is this how is our strategy going to change because of this?"}, {"id": "s36", "start": 179.599, "end": 182.879, "text": "What's going to happen in three to six months when the open source models catch up?"}, {"id": "s37", "start": 182.879, "end": 187.44, "text": "All of that intuition comes from actually using the models and building."}, {"id": "s38", "start": 187.44, "end": 194.879, "text": "I've also found even if you've built the intuition, it's actually tough to communicate that to other people who haven't played with the models."}, {"id": "s39", "start": 194.879, "end": 197.12, "text": "Uh, and so you're like, \"Oh, this new thing is possible."}, {"id": "s40", "start": 197.12, "end": 198.0, "text": "It's going to be amazing.\""}, {"id": "s41", "start": 198.0, "end": 200.0, "text": "And your engineers are like, \"Okay, yeah, sure.\""}, {"id": "s42", "start": 200.0, "end": 208.319, "text": "Um, so it's really helpful to have some time to actually build stuff so you can show them, you know, you can be like, \"Hey, I built this prototype with this new model family."}, {"id": "s43", "start": 208.319, "end": 209.599, "text": "It works in the product."}, {"id": "s44", "start": 209.599, "end": 211.519, "text": "Here's an actual prototype you can play with.\""}, {"id": "s45", "start": 211.519, "end": 219.12, "text": "And this is just so much faster and more efficient than trying to convince people every 3 months when a new model family comes out."}, {"id": "s46", "start": 219.2, "end": 221.519, "text": "I also think leaders are really well suited for it."}, {"id": "s47", "start": 221.519, "end": 234.0, "text": "You know, you all have uh context, more context than anybody else uh in the organization about the business, the strategy, the trade-offs, the decisions to be made, what needs to be done, what's uh what's coming up, what are imperatives."}, {"id": "s48", "start": 234.0, "end": 242.879, "text": "And so the steering of a leader uh as you are prompting these models is to per token uh more impactful than an IC's."}, {"id": "s49", "start": 242.879, "end": 246.4, "text": "And so you can really fit this into a little bit of time."}, {"id": "s50", "start": 246.4, "end": 250.239, "text": "The delegation skill also transfers like you delegate to people."}, {"id": "s51", "start": 250.239, "end": 254.48, "text": "That's sort of one of the core skills of being a leader and that transfers to agents pretty well."}, {"id": "s52", "start": 254.48, "end": 258.079, "text": "You know it's setting goals, giving context, checking in, even coaching the agent."}, {"id": "s53", "start": 258.079, "end": 259.919, "text": "You know what if you tried this?"}, {"id": "s54", "start": 259.919, "end": 264.72, "text": "Um, and then I've also found I I think this is maybe specific to now."}, {"id": "s55", "start": 264.72, "end": 272.15999999999997, "text": "Uh, maybe this will change in several months as these models get better, but the models are really good at execution, but still not unbelievable at judgment."}, {"id": "s56", "start": 272.15999999999997, "end": 277.6, "text": "You know, often the model will come back and be like, hey, that algorithm idea is not possible or like I can't do this."}, {"id": "s57", "start": 277.6, "end": 280.479, "text": "And so you have as a leader have to be like, oh, have you tried this thing?"}, {"id": "s58", "start": 280.479, "end": 282.0, "text": "And the model's like, oh, okay, cool, cool, cool."}, {"id": "s59", "start": 282.0, "end": 282.639, "text": "I'll try that."}, {"id": "s60", "start": 282.639, "end": 288.24, "text": "And so it's a really nice dynamic you can have with these models if you have time slotted out for building."}, {"id": "s61", "start": 288.24, "end": 292.24, "text": "uh that really leverages all the context you have."}, {"id": "s62", "start": 292.32, "end": 296.0, "text": "So the great Julie Zo had a great tweet about this uh a month ago."}, {"id": "s63", "start": 296.0, "end": 300.16, "text": "She pulled some Bay Area technical leaders on what can you actually build?"}, {"id": "s64", "start": 300.16, "end": 302.24, "text": "What should you be building in this new world?"}, {"id": "s65", "start": 302.24, "end": 303.84, "text": "And four categories emerged."}, {"id": "s66", "start": 303.84, "end": 305.36, "text": "Uh you could build internal tools."}, {"id": "s67", "start": 305.36, "end": 310.56, "text": "So internal efficiency uh quality of life improvements just like gardening around the codebase and the product."}, {"id": "s68", "start": 310.56, "end": 311.759, "text": "This is really helpful."}, {"id": "s69", "start": 311.759, "end": 312.88, "text": "Um I really like this."}, {"id": "s70", "start": 312.88, "end": 314.72, "text": "I learned from this the celebration story."}, {"id": "s71", "start": 314.72, "end": 317.52, "text": "You can build artifacts to celebrate people on your team."}, {"id": "s72", "start": 317.52, "end": 331.759, "text": "And then arguably, I think the most important is the vision piece is really playing with the new model families, understanding what's possible viscerally yourself, and then trying to fit that into the business and building products that can show that off to your engineers"}, {"id": "s73", "start": 331.759, "end": 336.88, "text": "so you can really push uh the boundaries of what's possible with the product and business."}, {"id": "s74", "start": 336.88, "end": 337.84000000000003, "text": "I she's right."}, {"id": "s75", "start": 337.84000000000003, "end": 339.52, "text": "I would not take any critical path work."}, {"id": "s76", "start": 339.52, "end": 350.4, "text": "the last thing you want to do is to have that dependent on you, especially you're going to be dragged into fires and recruiting calls and meetings, etc. Uh so really trying to do one of these four categories is is optimal."}, {"id": "s77", "start": 350.4, "end": 353.039, "text": "So this is this is my how I work."}, {"id": "s78", "start": 353.039, "end": 357.12, "text": "Uh and what two to three hours a day of coding can actually look like."}, {"id": "s79", "start": 357.12, "end": 366.08, "text": "Uh so I usually have a morning coding block about an hour and this is when I look over last night's code, what the uh agent did last night, review it."}, {"id": "s80", "start": 366.08, "end": 367.68, "text": "I'll talk a little bit more about this."}, {"id": "s81", "start": 367.68, "end": 374.96, "text": "Uh, and then a few maybe steering blocks throughout the day interspersed between one-on- ones and reviews and meetings and everything else you need to do."}, {"id": "s82", "start": 374.96, "end": 382.479, "text": "And then the most important block is that 5:00 p.m. block at the end of the day where you really set up whatever overnight run it is you want to run."}, {"id": "s83", "start": 382.479, "end": 388.16, "text": "And I'll talk about that whether that's coding or training models or whatever you want the agent to do."}, {"id": "s84", "start": 388.4, "end": 391.28, "text": "I'll go over sort of three examples of tasks you can do."}, {"id": "s85", "start": 391.28, "end": 394.88, "text": "But really what I found work for me is this one overnight loop."}, {"id": "s86", "start": 394.88, "end": 406.4, "text": "uh you first in that 5pm block gather context I'll talk about that uh you set up the run you know you get ask answer any clarifying questions uh and then claude code or whatever your coding agent is overnight"}, {"id": "s87", "start": 406.4, "end": 415.44, "text": "does the thing you know does the work for four six eight hours and in the morning you get this beautiful report uh and you figure out what to do with it and then you ship whatever it is so"}, {"id": "s88", "start": 415.44, "end": 426.4, "text": "I'll talk about building features which is sort of the most obvious one uh I found this worked really well with evals and hill climbing so optimizing AI features uh and then a new thing actually in the maybe more recent"}, {"id": "s89", "start": 426.4, "end": 432.96, "text": "uh generations of models is you can have these models train other ML models overnight too and this works really really well."}, {"id": "s90", "start": 432.96, "end": 450.479, "text": "So building features um the big mindset shift for me that really helped was starting to think about building features not in terms of how do I build this feature and break it up and then give it prompting on how to do the individual task but rather"}, {"id": "s91", "start": 450.479, "end": 456.639, "text": "what is all the context this frontier model needs to be able to make decisions like I would make."}, {"id": "s92", "start": 456.639, "end": 462.319, "text": "So trying to give it as much context as possible because if it's working for 6 hours, 8 hours overnight, you're not going to be there to steer it."}, {"id": "s93", "start": 462.319, "end": 467.44, "text": "And so you want it to have as much context as you do about the business goals of whatever you're trying to get it to do."}, {"id": "s94", "start": 467.44, "end": 477.199, "text": "So, uh, a little tip I found that has worked well for me, um, if you have a co-work agent, whatever your, uh, cloud co-work or codeex or I recommend DIA, I feel like that's the best one."}, {"id": "s95", "start": 477.199, "end": 478.4, "text": "Not biased at all."}, {"id": "s96", "start": 478.4, "end": 491.52, "text": "Um, whatever it is that's connected to your Slack and your Jira, Confluence, notion, the repo, etc. Uh, just I before a meeting or something, I'll be like at like 3:00 4 p.m. I'll be like, \"Hey, I really want to build this."}, {"id": "s97", "start": 491.52, "end": 507.28, "text": "go and do like 20 minutes of research and go dig through all of Slack and Notion and everything else and come up with a cloud code prompt that I can post paste into a cloud code and just give me as much context as possible the trade-offs what we tried before what works what doesn't why are we're doing"}, {"id": "s98", "start": 507.28, "end": 516.9590000000001, "text": "it what is like the business context of this feature I want to build or this model I want to train and that takes like 30 seconds to whisper flow into DIA or whatever your co-work agent is"}, {"id": "s99", "start": 516.9590000000001, "end": 524.08, "text": "and the nice thing is this comes back with a giant prompt that then you can paste into cloud code or cursor or codeex or whatever your coding agent is."}, {"id": "s100", "start": 524.08, "end": 529.519, "text": "So this is an example of a 5mm prompt I'll have that I give it before I go to bed."}, {"id": "s101", "start": 529.519, "end": 534.48, "text": "I'll say implement this whole feature and then just paste all of that context I got from my co-work agent."}, {"id": "s102", "start": 534.48, "end": 537.04, "text": "Uh and then it's important to think about verification."}, {"id": "s103", "start": 537.04, "end": 544.0, "text": "So as this uh agent is running overnight, you want it to verify how it's doing as it's building and testing the feature."}, {"id": "s104", "start": 544.0, "end": 547.36, "text": "So first I'll be like hey write the tests first so they capture what you do."}, {"id": "s105", "start": 547.36, "end": 552.24, "text": "This is really helpful because I I found of decoding agents if you if they write tests afterwards, they're a little sloppish."}, {"id": "s106", "start": 552.24, "end": 556.24, "text": "Um, and then I'll tell it to test the endto-end flow with computer use."}, {"id": "s107", "start": 556.24, "end": 561.519, "text": "You know, go around, click around, just make sure the flow works and matches the business context I gave you."}, {"id": "s108", "start": 561.519, "end": 568.8, "text": "And so the modern models are really good at reasoning about, okay, does this flow actually solve the problem I was trying to solve?"}, {"id": "s109", "start": 568.8, "end": 575.44, "text": "And then uh I usually prompted to do as much work as possible so that when I wake up in the morning, the stack is ready."}, {"id": "s110", "start": 575.44, "end": 587.68, "text": "So split this into reviewer friendly PRs with clear descriptions, manage CI and get CI green and just make sure you're you're monitoring uh just to make sure the the whole stack is passable."}, {"id": "s111", "start": 587.68, "end": 589.279, "text": "AI code review is really important."}, {"id": "s112", "start": 589.279, "end": 596.16, "text": "We have a bunch of internal AI code reviewers uh you know pre the previous talk was talking about codto and other AI code reviewer."}, {"id": "s113", "start": 596.16, "end": 605.76, "text": "If you don't have any, I would look on Twitter for a bunch of AI code review skills and then just prompt it, hey, once you're done, run this AI code review skill in a clean sub agent, and then fix those things."}, {"id": "s114", "start": 605.76, "end": 614.56, "text": "And then watch the PRs, fix every bot comment, every, you know, CI check that shows up, any sort of uh anything you need to do, resolve the threads, run this autonomously."}, {"id": "s115", "start": 614.56, "end": 620.0, "text": "Uh, don't ask me questions, and then I'll like throw in a little encouraging something, you know, be like, you'll do great."}, {"id": "s116", "start": 620.0, "end": 620.64, "text": "I believe in you."}, {"id": "s117", "start": 620.64, "end": 621.36, "text": "It's going to be great."}, {"id": "s118", "start": 621.36, "end": 625.2, "text": "Um, I don't know if that helps or not, but it's it's a I tend to do that."}, {"id": "s119", "start": 625.2, "end": 626.56, "text": "Uh, and then I tell them I'm going to bed."}, {"id": "s120", "start": 626.56, "end": 628.32, "text": "Just leave me a report in the morning on what you do."}, {"id": "s121", "start": 628.32, "end": 631.8389999999999, "text": "I need the full stack ready and a report on what trade-offs you made, how you did."}, {"id": "s122", "start": 631.8389999999999, "end": 633.519, "text": "Uh, and it does great."}, {"id": "s123", "start": 633.519, "end": 637.44, "text": "Uh, it actually modern models, new Opus 4.8 or the new GBT."}, {"id": "s124", "start": 637.44, "end": 644.24, "text": "They can handle what used to be, you know, weeks of work uh, in one overnight run and you come back in the morning with this uh, beautiful package ready for you."}, {"id": "s125", "start": 644.24, "end": 649.04, "text": "It actually makes the mornings kind of nice because you have this little present ready for you."}, {"id": "s126", "start": 649.12, "end": 651.68, "text": "Another example is optimizing AI features."}, {"id": "s127", "start": 651.68, "end": 654.56, "text": "So, first you're at the AI engineering conference."}, {"id": "s128", "start": 654.56, "end": 656.32, "text": "I assume you all are familiar with this."}, {"id": "s129", "start": 656.32, "end": 661.92, "text": "When you first build an LLM call or agent into a into a feature, it's not optimized."}, {"id": "s130", "start": 661.92, "end": 668.079, "text": "You know, you need to optimize it hill climb on some eval to get the quality, the latency, the cost to where you want it to be."}, {"id": "s131", "start": 668.079, "end": 670.399, "text": "This is also all doable overnight."}, {"id": "s132", "start": 670.399, "end": 672.56, "text": "Um, especially with the modern coding agents."}, {"id": "s133", "start": 672.56, "end": 678.079, "text": "So, uh, usually if I'm prototyping a feature, I will, uh, put a little feedback button on it."}, {"id": "s134", "start": 678.079, "end": 684.079, "text": "So after the LLM call or the agent runs, I'll be like, \"Hey, uh just add a feedback button and a little text box."}, {"id": "s135", "start": 684.079, "end": 690.959, "text": "And then in one of my 1 hour slots or 30-minut slots throughout the day, I'll just take the time to uh collect a bunch of feedback.\""}, {"id": "s136", "start": 690.959, "end": 697.68, "text": "So I'll uh you know, run it a few times, collect a bit of feedback, be like, \"Hey, this was bad or this was good or this could have been better.\""}, {"id": "s137", "start": 697.68, "end": 700.88, "text": "And then just have it save JSON dumps on my downloads folder."}, {"id": "s138", "start": 700.88, "end": 706.48, "text": "So it'll save a dump of each of the runs with the system prompt and the inputs and my feedback."}, {"id": "s139", "start": 706.48, "end": 710.9590000000001, "text": "uh and you just collect a handful, you know, like even four, five, 10 are fine."}, {"id": "s140", "start": 710.9590000000001, "end": 714.24, "text": "If you can get some other uh co-workers to run it, that would be great."}, {"id": "s141", "start": 714.24, "end": 716.64, "text": "Collect like 20 or 30."}, {"id": "s142", "start": 716.64, "end": 725.68, "text": "And then similarly, uh at 5:00 p.m. when you're setting up an overnight run, uh just say, \"Hey, like here are, you know, 10 20 30 feedback JSONs."}, {"id": "s143", "start": 725.68, "end": 727.68, "text": "This is all the information they have in them."}, {"id": "s144", "start": 727.68, "end": 729.2, "text": "Turn this into an eval set.\""}, {"id": "s145", "start": 729.2, "end": 732.639, "text": "Like just do it locally with SQLite or Markdown or whatever you want."}, {"id": "s146", "start": 732.639, "end": 739.8389999999999, "text": "And then over the next few minutes, talk me through how would you design evals or scoring functions to optimize for this and let's do it interactively."}, {"id": "s147", "start": 739.8389999999999, "end": 746.56, "text": "And then I want you to a build a harness that runs this call against the evals and hill climbs until the score goes up."}, {"id": "s148", "start": 746.56, "end": 749.36, "text": "Like just do whatever you need to do to get these scores to go up."}, {"id": "s149", "start": 749.36, "end": 752.9590000000001, "text": "And obviously with this kind of thing, if you have such little data, overfitting is a problem."}, {"id": "s150", "start": 752.9590000000001, "end": 756.16, "text": "But even that I found these modern models, you can just tell it to not overfit."}, {"id": "s151", "start": 756.16, "end": 757.68, "text": "And it actually does a pretty good job."}, {"id": "s152", "start": 757.68, "end": 760.32, "text": "Uh and to just say don't overfitit, just keep it general."}, {"id": "s153", "start": 760.32, "end": 767.519, "text": "uh run overnight autonomously until we align on a scoring rubric and then give me a full report uh in the morning."}, {"id": "s154", "start": 767.519, "end": 773.279, "text": "And then a little tip, it's also nice to just say, \"Hey, save this flow as a generic skill so I can reuse it.\""}, {"id": "s155", "start": 773.279, "end": 777.04, "text": "Uh and that allows you to improve this flow over time and improve that skill."}, {"id": "s156", "start": 777.04, "end": 778.72, "text": "And this works actually in the morning."}, {"id": "s157", "start": 778.72, "end": 781.12, "text": "You wake up to ideally something hill climbed."}, {"id": "s158", "start": 781.12, "end": 789.839, "text": "Uh and actually when using that feature when we we ship these features to employees to to further dog fooding to production it actually does improve the quality."}, {"id": "s159", "start": 789.839, "end": 791.2, "text": "You know these are not overfit."}, {"id": "s160", "start": 791.2, "end": 793.6, "text": "Um and we we use this flow quite a bit internally."}, {"id": "s161", "start": 793.6, "end": 797.12, "text": "Uh we have an internal code reviewer similar to uh some of the external ones."}, {"id": "s162", "start": 797.12, "end": 803.2, "text": "And same thing there we add that hill climb to pretty good quality just with these overnight runs."}, {"id": "s163", "start": 803.36, "end": 807.36, "text": "And then the last example uh and this is again pretty new and really interesting."}, {"id": "s164", "start": 807.36, "end": 812.0, "text": "uh you can train custom models with this mechanism overnight you know in one night."}, {"id": "s165", "start": 812.0, "end": 816.48, "text": "So uh this is an example of a modern BERT PII classifier we trained."}, {"id": "s166", "start": 816.48, "end": 823.8389999999999, "text": "We were trying Opus and Haiku for it and it was expensive and latency was not great and we just couldn't get the precision recall to be amazing."}, {"id": "s167", "start": 823.8389999999999, "end": 833.8389999999999, "text": "And so uh we collected a bunch of training data and then overnight one night I was like here is a bunch of business context and a bunch of training data we collected."}, {"id": "s168", "start": 833.8389999999999, "end": 844.32, "text": "uh a clean up the training data cloud just bolster it with synthetic data whatever you need to here's a bunch of open AI and enthropic keys uh use an ensemble of frontier models to push the quality"}, {"id": "s169", "start": 844.32, "end": 854.079, "text": "I don't know anything about what ML model will be good here so like you decide you know just give me the best model class give me a few options and in fact train two like don't even train one train two separate ones"}, {"id": "s170", "start": 854.079, "end": 860.88, "text": "uh and then I gave it AWS access I was like give me a provision sandbox do not give it prod that's not a good idea that's how you take prod down"}, {"id": "s171", "start": 860.88, "end": 866.88, "text": "um pick the right GPU and EC2 cluster like train it, test against eval examples, deprovision it, whatever you need to do."}, {"id": "s172", "start": 866.88, "end": 868.639, "text": "Just give me back the train models."}, {"id": "s173", "start": 868.639, "end": 870.72, "text": "Uh, and then give me a report in the morning."}, {"id": "s174", "start": 870.72, "end": 876.8, "text": "And in fact, even put in how I would host this with my codebase on inference once this model is ready."}, {"id": "s175", "start": 876.8, "end": 878.399, "text": "And again, ask me any clarifying questions."}, {"id": "s176", "start": 878.399, "end": 878.88, "text": "You can do it."}, {"id": "s177", "start": 878.88, "end": 879.519, "text": "I believe in you."}, {"id": "s178", "start": 879.519, "end": 880.48, "text": "You're going to do great."}, {"id": "s179", "start": 880.48, "end": 882.32, "text": "Uh, and in the morning, just have this ready."}, {"id": "s180", "start": 882.32, "end": 884.16, "text": "And of course, it works beautifully."}, {"id": "s181", "start": 884.16, "end": 888.8, "text": "In the morning, you have uh, two ML models trained, a full report, great results."}, {"id": "s182", "start": 888.8, "end": 892.48, "text": "Uh, and we've, uh, pushed a bunch of these to production."}, {"id": "s183", "start": 892.48, "end": 894.0, "text": "So those are three examples."}, {"id": "s184", "start": 894.0, "end": 896.079, "text": "Um I would try try your own."}, {"id": "s185", "start": 896.079, "end": 901.199, "text": "Uh but I think the main takeaway for me in doing these is really to push on task scope."}, {"id": "s186", "start": 901.199, "end": 904.48, "text": "So this was a tweet by Simon Lass, one of the notion founders."}, {"id": "s187", "start": 904.48, "end": 910.16, "text": "Uh and he he called out these modern models are just capable of so much more than we think."}, {"id": "s188", "start": 910.16, "end": 923.279, "text": "uh and I think it's our jobs as leaders to really understand the contours of how much we can push these models because it affects both how we lead and how we influence our teams but also how they fit into our products and what these our new products are capable of in terms of utility."}, {"id": "s189", "start": 923.279, "end": 934.9590000000001, "text": "So I'd really push you overnight try to think of how do I give it more and more uh scope so that we can do you know weeks of work months of work overnight and see what these models are really capable of."}, {"id": "s190", "start": 935.04, "end": 939.68, "text": "I will say a caveat a lot of this works because of existing organizational scaffolding."}, {"id": "s191", "start": 939.68, "end": 942.32, "text": "So you'll have to build this up in your organization."}, {"id": "s192", "start": 942.32, "end": 944.399, "text": "You know, AI code reviewers, this really helps."}, {"id": "s193", "start": 944.399, "end": 948.0, "text": "You have an internal one we trained, but also just external ones, whatever you need."}, {"id": "s194", "start": 948.0, "end": 954.88, "text": "Um, agents.md hygiene, you know, cloud.md, agents.mmd, proper CI that you can trust."}, {"id": "s195", "start": 954.88, "end": 959.279, "text": "And then we have a bunch of other things like uh really sophisticated feature flags."}, {"id": "s196", "start": 959.279, "end": 963.92, "text": "Uh, we have a prototype branch that you can push to that goes to employees, but it doesn't go to production."}, {"id": "s197", "start": 963.92, "end": 965.199, "text": "Just layers like that."}, {"id": "s198", "start": 965.199, "end": 970.16, "text": "So you're not taking prod down basically as you're prototyping and showing these things off."}, {"id": "s199", "start": 970.16, "end": 974.32, "text": "Not amazing for the CTO to take prod down."}, {"id": "s200", "start": 974.399, "end": 976.959, "text": "I will say again code hygiene really matter really matters."}, {"id": "s201", "start": 976.959, "end": 978.16, "text": "I've been humbled a lot."}, {"id": "s202", "start": 978.16, "end": 980.079, "text": "You know my code has annoyed engineers."}, {"id": "s203", "start": 980.079, "end": 981.199, "text": "It's caused sevs."}, {"id": "s204", "start": 981.199, "end": 983.44, "text": "Uh coding agents are not perfect yet."}, {"id": "s205", "start": 983.44, "end": 985.36, "text": "So just uh your mileage may vary."}, {"id": "s206", "start": 985.36, "end": 994.72, "text": "you will get humbled, but I I still think it's worth it uh because you learn so much and you can model what taking on more and more scope even with a busy calendar looks like."}, {"id": "s207", "start": 994.72, "end": 996.32, "text": "Some tactical tips on hygiene."}, {"id": "s208", "start": 996.32, "end": 999.04, "text": "Uh I would test everything before the PR goes up."}, {"id": "s209", "start": 999.04, "end": 1003.12, "text": "That morning slot, that's a lot of what I'm doing is just testing what the overnight run did."}, {"id": "s210", "start": 1003.12, "end": 1007.199, "text": "Uh even though there's computer use, etc., it's really important you test it yourself."}, {"id": "s211", "start": 1007.199, "end": 1010.72, "text": "Um small readable PRs are really helpful."}, {"id": "s212", "start": 1010.72, "end": 1014.24, "text": "I think they you're modeling to the rest of the team what good looks like."}, {"id": "s213", "start": 1014.24, "end": 1019.92, "text": "So, if you're putting up three 5,000 line PRs, uh, other engineers on the team are going to start doing that, and that's not amazing."}, {"id": "s214", "start": 1019.92, "end": 1021.44, "text": "So, uh, it's really important."}, {"id": "s215", "start": 1021.44, "end": 1024.959, "text": "Your hygiene is really good because it's modeling for the rest of the team what good looks like."}, {"id": "s216", "start": 1024.959, "end": 1027.76, "text": "Um, and then, ooh, this is so tempting."}, {"id": "s217", "start": 1027.76, "end": 1031.52, "text": "It's so tempting to put other reviewers on code you haven't read yet."}, {"id": "s218", "start": 1031.52, "end": 1032.48, "text": "Don't do it."}, {"id": "s219", "start": 1032.48, "end": 1041.28, "text": "It's uh, mostly because you're going to look like an ass because there's going to be something in that code that is going to be so obviously bad and then some senior engineer is going to call you and be like, \"Yo,"}, {"id": "s220", "start": 1041.28, "end": 1042.48, "text": "why didn't you read this?\""}, {"id": "s221", "start": 1042.48, "end": 1044.48, "text": "So uh I speak from experience."}, {"id": "s222", "start": 1044.48, "end": 1048.959, "text": "Read the code, review it properly before you add anybody else to it."}, {"id": "s223", "start": 1049.12, "end": 1051.2, "text": "So hopefully this convinces you."}, {"id": "s224", "start": 1051.2, "end": 1052.72, "text": "Building is part of the job now."}, {"id": "s225", "start": 1052.72, "end": 1063.6, "text": "Uh you can do it uh even with just one or two hours a day and you should uh you'll start to feel the models every 3 months as the new model families come out and you'll learn the skill on how to push scope"}, {"id": "s226", "start": 1063.6, "end": 1065.84, "text": "as you are uh instructing them."}, {"id": "s227", "start": 1065.84, "end": 1069.76, "text": "And you'll be able to show the the the team and the org what's possible as well."}, {"id": "s228", "start": 1069.76, "end": 1076.72, "text": "you know, just because you as you have this capability, you'll automatically think of ideas on what to slot in for these overnight runs and then you can model for the team."}, {"id": "s229", "start": 1076.72, "end": 1078.96, "text": "Hey, this is what the future looks like."}, {"id": "s230", "start": 1078.96, "end": 1080.762, "text": "Thank you."}, {"id": "s231", "start": 1080.762, "end": 1082.762, "text": "[applause]"}, {"id": "s232", "start": 1095.827, "end": 1097.827, "text": "[music]"}]}, {"id": "cJ0EOzey--o", "title": "What's Next After RLHF? — Diogo Almeida, TypeSafe AI", "channel": "AI Engineer", "duration": 1085, "upload_date": null, "url": "https://www.youtube.com/watch?v=cJ0EOzey--o", "api": "/api/talks/cJ0EOzey--o.json", "summary_url": "/#cJ0EOzey--o", "transcript": {"html": "/transcripts/cJ0EOzey--o.html", "txt": "/transcripts/cJ0EOzey--o.txt", "vtt": "/transcripts/cJ0EOzey--o.vtt"}, "sentences": [{"id": "s1", "start": 12.44, "end": 13.12, "text": "Excellent."}, {"id": "s2", "start": 13.12, "end": 17.76, "text": "I will say that um I might speed run through this."}, {"id": "s3", "start": 17.76, "end": 21.2, "text": "Feel free if you don't disag- agree with something to yell out."}, {"id": "s4", "start": 21.2, "end": 24.48, "text": "It's way more fun for me if things get interactive."}, {"id": "s5", "start": 24.48, "end": 27.12, "text": "Um otherwise, I will go through this."}, {"id": "s6", "start": 27.12, "end": 32.64, "text": "Uh first, can I have like a vague show of hands of who knows what RLHF is?"}, {"id": "s7", "start": 32.64, "end": 33.68, "text": "Oh, excellent."}, {"id": "s8", "start": 33.68, "end": 37.56, "text": "I might be able to skip through that part quickly and get into the interactive stuff."}, {"id": "s9", "start": 37.56, "end": 39.32, "text": "So, my name's Tiago Almeida."}, {"id": "s10", "start": 39.32, "end": 41.4, "text": "I'm talking about what's next after RLHF."}, {"id": "s11", "start": 41.4, "end": 48.12, "text": "More accurately, I think this should be called what's next after the chat GPT era that I think we're all in."}, {"id": "s12", "start": 48.12, "end": 52.16, "text": "And my hint for you guys is it is not the Claude code era."}, {"id": "s13", "start": 52.16, "end": 56.96, "text": "I will justify this later on, but I actually believe them to be part of the same era."}, {"id": "s14", "start": 56.96, "end": 58.36, "text": "Why should you listen to me?"}, {"id": "s15", "start": 58.36, "end": 64.199, "text": "I was co-authored to what what is basically OpenAI's greatest hits, at least published hits."}, {"id": "s16", "start": 64.199, "end": 69.52, "text": "Co-authored to GPT-4, chat GPT, RLHF {slash} instruct GPT."}, {"id": "s17", "start": 69.52, "end": 73.88, "text": "Um the team I was part of basically invented post-training as a concept."}, {"id": "s18", "start": 73.88, "end": 77.48, "text": "So, um very qualified on a lot of this stuff."}, {"id": "s19", "start": 77.48, "end": 85.96000000000001, "text": "But what makes me somewhat unique here is that I'm one of the few people at OpenAI who actually hates on chat GPT."}, {"id": "s20", "start": 85.96000000000001, "end": 87.12, "text": "Uh thank you."}, {"id": "s21", "start": 87.12, "end": 90.32, "text": "Uh I don't hate chat GPT as a product, to be clear."}, {"id": "s22", "start": 90.32, "end": 96.47999999999999, "text": "I think chat GPT is a world-changing product that will probably stay with us for the rest of time unless something better comes up."}, {"id": "s23", "start": 96.47999999999999, "end": 109.03999999999999, "text": "But I also acknowledge its limitations and I I I think a lot of what's happened in the state of the field can be traced back to minor decisions we made in making the algorithms behind chat GPT."}, {"id": "s24", "start": 109.03999999999999, "end": 116.2, "text": "Um I feel like the question that's relevant to everyone in AI right now is what's actually going on."}, {"id": "s25", "start": 116.2, "end": 126.36, "text": "Um there's a lot of like differing opinions, and I think it's really useful to like map out the spectrum and figure out how can smart people have like such different opinions."}, {"id": "s26", "start": 126.36, "end": 128.47899999999998, "text": "There's cult one."}, {"id": "s27", "start": 128.47899999999998, "end": 132.4, "text": "Um, AI is not just going well, it's going insanely well."}, {"id": "s28", "start": 132.4, "end": 140.44, "text": "Every single benchmark we surpass human level, and as far as we can measure, we are continuously surpassing human performance."}, {"id": "s29", "start": 140.44, "end": 145.04, "text": "You know, like basically every new benchmark, and it's only getting faster and accelerating."}, {"id": "s30", "start": 145.04, "end": 148.24, "text": "You have uh, you know, every Can I see my mouse?"}, {"id": "s31", "start": 148.24, "end": 148.959, "text": "Excellent."}, {"id": "s32", "start": 148.959, "end": 159.32, "text": "Basically every like NLP benchmark is getting crushed, and not only that, allegedly the time that LLMs can operate autonomously is growing exponentially."}, {"id": "s33", "start": 159.32, "end": 165.8, "text": "On the other hand, you have AI is not just going poorly, it's going like insanely poorly."}, {"id": "s34", "start": 165.8, "end": 176.84, "text": "AI is a bubble, it's basically generating no value, it's just circular financing deals, etc., etc. And, you know, if AI is so great, why is why is everything just like a chat app right now?"}, {"id": "s35", "start": 176.84, "end": 178.56, "text": "Or like a cloud go thing?"}, {"id": "s36", "start": 178.56, "end": 186.8, "text": "Um, and a a lot of the people have actually kind of given up on what was the old guard's terminology of a transformative AI revolution."}, {"id": "s37", "start": 186.8, "end": 188.959, "text": "People aren't really talking about that anymore."}, {"id": "s38", "start": 188.959, "end": 192.44, "text": "They're talking about it being like massively valuable like B2B SaaS."}, {"id": "s39", "start": 192.44, "end": 198.68, "text": "So, the only thing that everyone agrees on is like there's just a these extreme points of view and like nothing in between."}, {"id": "s40", "start": 198.68, "end": 202.8, "text": "And everyone basically thinks AI is insane, but like for different reasons."}, {"id": "s41", "start": 202.8, "end": 206.8, "text": "And what I would want to talk about is what is the sane view of AI?"}, {"id": "s42", "start": 206.8, "end": 210.8, "text": "Let's take all the evidence of like cult one, it's going super well."}, {"id": "s43", "start": 210.8, "end": 213.56, "text": "Take all the evidence of cult two, it's going super poorly."}, {"id": "s44", "start": 213.56, "end": 219.72, "text": "Like, uh, you know, map them out and try to explain what what what explains that divide."}, {"id": "s45", "start": 219.72, "end": 231.8, "text": "Like, what is the simplest possible explanation of why some things are too good to be true, and some things are not just bad, they are so bad that we would still employ human workers to do like, you know, like kind of like dumb tasks."}, {"id": "s46", "start": 231.8, "end": 234.12, "text": "Um, no offense to any of them."}, {"id": "s47", "start": 234.12, "end": 239.12, "text": "A lot of these tasks on the right seem way, way, way easier than the stuff on the left."}, {"id": "s48", "start": 239.12, "end": 247.959, "text": "Like, how can we be solving like, you know, unsolved math problems, but still customer service requires like humans in the loop in order to actually like make decisions?"}, {"id": "s49", "start": 247.959, "end": 250.88, "text": "This I think is like a kind of like a wild state of affairs."}, {"id": "s50", "start": 250.88, "end": 260.0, "text": "And in my opinion, anyone who works adjacent to AI should have an answer to this because this is like the evidence in the field right now."}, {"id": "s51", "start": 260.0, "end": 269.72, "text": "Um, I would normally pause and ask people if they want to like yell out their thoughts in this, but uh, that I don't think we have time for that and I've been told to not take Q&A until after."}, {"id": "s52", "start": 269.72, "end": 274.68, "text": "Um, but I'll just give you my answer to this, which is, in my opinion, the simplest explanation."}, {"id": "s53", "start": 274.68, "end": 280.68, "text": "All the stuff on the left is not just a task that happens to have a human in the loop."}, {"id": "s54", "start": 280.68, "end": 284.84000000000003, "text": "In the left, the task The goal of it is to please the human in the loop."}, {"id": "s55", "start": 284.84000000000003, "end": 287.88, "text": "These tasks are intrinsically human in the loop tasks."}, {"id": "s56", "start": 287.88, "end": 291.4, "text": "The like Claude code's job is not to just make code work."}, {"id": "s57", "start": 291.4, "end": 294.84000000000003, "text": "Um, the the the the way it converses would be totally different."}, {"id": "s58", "start": 294.84000000000003, "end": 297.04, "text": "The goal is to please the human in it."}, {"id": "s59", "start": 297.04, "end": 303.56, "text": "And on the other side, all of these tasks that seem way more basic, the goal is to not have remove the human loop."}, {"id": "s60", "start": 303.56, "end": 311.76, "text": "Ideally, it would be running in the background in a server that you never even look at and ideally it eventually becomes like legacy software that you don't really worry about."}, {"id": "s61", "start": 311.76, "end": 315.56, "text": "So, and this is the divide between assistance and automation."}, {"id": "s62", "start": 315.56, "end": 325.919, "text": "Um, lesson one for my talk is that today's AI, everything inherited from our LHF, is incredible at the human in the loop stuff, but not for automation tasks."}, {"id": "s63", "start": 325.919, "end": 326.72, "text": "Tasks."}, {"id": "s64", "start": 326.72, "end": 336.28, "text": "This is a longer side, but the lesson basically every business has learned is do not use AI for decisions with stakes to your business."}, {"id": "s65", "start": 336.28, "end": 341.6, "text": "Um, a common pattern is make sure that all of the costs are to the user and not to your business."}, {"id": "s66", "start": 341.6, "end": 349.2, "text": "So, um, it's oh, totally okay to throw the user at infinite docs in customer service, but it is not okay to make it make expensive decisions."}, {"id": "s67", "start": 349.2, "end": 352.52, "text": "Horrible pattern, but that is the state of AI right now."}, {"id": "s68", "start": 352.52, "end": 357.68, "text": "Uh I can I can blitz through the what is RLHF part cuz you all seem to know what it what it is."}, {"id": "s69", "start": 357.68, "end": 362.44, "text": "Um it's the algorithm behind not just ChatGPT, but basically every LLM today."}, {"id": "s70", "start": 362.44, "end": 368.96, "text": "As far as I can tell by usage, 100% roughly of LLMs are trained with RLHF."}, {"id": "s71", "start": 368.96, "end": 375.16, "text": "And we have this we as in we the OpenAI team had this great blog post on how it worked."}, {"id": "s72", "start": 375.16, "end": 379.12, "text": "Um I will not get into that because you all know it, and this is super boring."}, {"id": "s73", "start": 379.12, "end": 385.6, "text": "Um the summary of this is it is just collect human preferences, optimize for human preferences."}, {"id": "s74", "start": 385.6, "end": 392.8, "text": "Um and if you want to see like an annotated version of this, you can see which parts are collecting human preferences, which ones are optimizing for them."}, {"id": "s75", "start": 392.8, "end": 393.004, "text": "And"}, {"id": "s76", "start": 393.004, "end": 393.48, "text": "[snorts]"}, {"id": "s77", "start": 393.48, "end": 402.44, "text": "this, I think, provides a really clear answer to everyone in the field asking, \"Why do all LLMs require a human in the loop?\""}, {"id": "s78", "start": 402.44, "end": 405.64, "text": "The And the simple answer is we literally put them in the loop."}, {"id": "s79", "start": 405.64, "end": 408.2, "text": "The goal of the loop is to optimize for human preference."}, {"id": "s80", "start": 408.2, "end": 410.72, "text": "It is not to run software autonomously."}, {"id": "s81", "start": 410.72, "end": 413.68, "text": "It's kind of super obvious."}, {"id": "s82", "start": 413.68, "end": 416.44, "text": "Thank you, my man at the back."}, {"id": "s83", "start": 416.44, "end": 417.4, "text": "The Yeah."}, {"id": "s84", "start": 417.4, "end": 419.8, "text": "I I I love that you're laughing at this."}, {"id": "s85", "start": 419.8, "end": 424.919, "text": "Um and because of that, overpromising is a feature."}, {"id": "s86", "start": 424.919, "end": 426.2, "text": "This is by design."}, {"id": "s87", "start": 426.2, "end": 428.44, "text": "This is an old meta study."}, {"id": "s88", "start": 428.44, "end": 444.52, "text": "Um and the the numbers probably have changed, but by construction, every RLHF model will always have a big difference between human preference and results, even if the results are good, because the main objective you're optimizing for is for human preference."}, {"id": "s89", "start": 444.52, "end": 447.6, "text": "This is just like natural to how LLMs work."}, {"id": "s90", "start": 447.6, "end": 458.44, "text": "Um I love this tweet of um uh sending ChatGPT an audio file of fart sound effects and asking like what What do you think of the music I made?"}, {"id": "s91", "start": 458.44, "end": 460.64, "text": "Here's a straight honest reaction."}, {"id": "s92", "start": 460.64, "end": 464.48, "text": "It's a very eerie vibe atmosphere piece."}, {"id": "s93", "start": 464.48, "end": 465.84000000000003, "text": "And this is just how RLHF works."}, {"id": "s94", "start": 465.84000000000003, "end": 471.76, "text": "If it doesn't know, it will err on the side of doing what it thinks is best for human preference."}, {"id": "s95", "start": 471.76, "end": 478.88, "text": "And this makes total sense if you are a user in the loop because like the end game for all RLHF models is optimizing for engagement."}, {"id": "s96", "start": 478.88, "end": 489.84, "text": "But what you really want if you want automation is for it to just like not give a about the humans and just do the task correctly in a calibrated way."}, {"id": "s97", "start": 489.84, "end": 497.76, "text": "Um Lesson number two is that today's AI was designed for assistance through optimizing for human preference."}, {"id": "s98", "start": 497.76, "end": 499.64, "text": "This is like it's like in the name."}, {"id": "s99", "start": 499.64, "end": 502.48, "text": "This is not like a controversial take."}, {"id": "s100", "start": 502.48, "end": 517.4, "text": "And the consequences are maybe more controversial, but it's like very obvious if you think about what we really are optimizing for, which is no matter how wrong the models are, they will look right because of the asymmetry within the reward model in RLHF."}, {"id": "s101", "start": 517.4, "end": 526.96, "text": "Um and this is where a lot of like the dilemma in the field stems from because people really want automation to happen."}, {"id": "s102", "start": 527.28, "end": 527.68, "text": "Cool."}, {"id": "s103", "start": 527.68, "end": 529.4, "text": "So, back to the original question."}, {"id": "s104", "start": 529.4, "end": 532.36, "text": "I'm over halfway done with the talk and I haven't even answered it."}, {"id": "s105", "start": 532.36, "end": 534.32, "text": "I was just talking about what's RLHF."}, {"id": "s106", "start": 534.32, "end": 541.24, "text": "But this was a framing to talk about what RLHF is to talk about what's next."}, {"id": "s107", "start": 541.24, "end": 549.52, "text": "And I would say the real question is what's next after AI's assistance era, which I think that we are like very firmly in right now."}, {"id": "s108", "start": 549.52, "end": 552.68, "text": "And back to the original clue of why it's not Claude code."}, {"id": "s109", "start": 552.68, "end": 558.56, "text": "It's actually a super fun nuanced discussion, but it's not Claude code because Claude code is still part of that assistance era."}, {"id": "s110", "start": 558.56, "end": 567.76, "text": "Claude code is still RLHF and it'll it would look very very different if it was purely This is a little advanced, but if it was purely RLVR, it would look very very different."}, {"id": "s111", "start": 567.76, "end": 574.8, "text": "And this is why you get like this dilemma with models where sometimes it gets really good at agentic stuff, but it stops following what you actually want."}, {"id": "s112", "start": 574.8, "end": 583.4, "text": "This This like the trade-off in optimization space that keeps dancing, but both of these trade-offs in optimization space do not add to the automation component."}, {"id": "s113", "start": 583.4, "end": 591.0, "text": "And like that leads to what I think the the logical answer of what's next after assistance is real automation."}, {"id": "s114", "start": 591.0, "end": 597.84, "text": "Um to talk about a little bit about the automation and how that would work, I want to talk about software."}, {"id": "s115", "start": 597.84, "end": 604.08, "text": "Um maybe this is a little bit philosophical for you guys, but I think it's when it clicks and hopefully it clicks if I do a good job."}, {"id": "s116", "start": 604.08, "end": 608.88, "text": "It it I I hopefully it'll be like really clear, which is I'm a lover of software."}, {"id": "s117", "start": 608.88, "end": 611.08, "text": "I assume everyone here loves software."}, {"id": "s118", "start": 611.08, "end": 613.28, "text": "Software is like super valuable."}, {"id": "s119", "start": 613.28, "end": 614.8, "text": "See all the SaaS."}, {"id": "s120", "start": 614.8, "end": 623.72, "text": "And kind of like the craziest part of software in my opinion is that all of the SaaS basically has not changed since 2019."}, {"id": "s121", "start": 623.72, "end": 635.96, "text": "Like SaaS is not really changed in the LLM era, except sometimes a chatbot is like latched on, which is like kind of insane if you think about like the progress made in AI, but is actually very predictable"}, {"id": "s122", "start": 635.96, "end": 638.96, "text": "when you think that AI is assistance native, right?"}, {"id": "s123", "start": 638.96, "end": 640.6, "text": "Like AI is made for assistance."}, {"id": "s124", "start": 640.6, "end": 642.04, "text": "What can you do in SaaS?"}, {"id": "s125", "start": 642.04, "end": 644.32, "text": "Just provide an assistant on the side."}, {"id": "s126", "start": 644.32, "end": 649.6, "text": "And this is not what early AI pioneers used to think would happen."}, {"id": "s127", "start": 649.6, "end": 658.6, "text": "Like when you see like the early wording in opening eyes uh charter, it's about like doing like tons of work, not about like making profit or anything like that."}, {"id": "s128", "start": 658.6, "end": 666.04, "text": "And we used to think that software would get a lot smarter, not just cheaper to write, which is kind of the direction we're going down right now."}, {"id": "s129", "start": 666.04, "end": 669.88, "text": "And I actually really like this phrasing from Garry Tan."}, {"id": "s130", "start": 669.88, "end": 674.839, "text": "Um I think he means this as a compliment to what's going on right now."}, {"id": "s131", "start": 674.839, "end": 681.16, "text": "We're entering the golden age of just-in-time software, but I actually think that this is like a like a double-edged sword."}, {"id": "s132", "start": 681.16, "end": 684.96, "text": "Like I don't just want just-in-time software, which is cool."}, {"id": "s133", "start": 684.96, "end": 687.92, "text": "I I love cloud code, to be clear, just like I love ChatGPT."}, {"id": "s134", "start": 687.92, "end": 688.96, "text": "I would keep using it."}, {"id": "s135", "start": 688.96, "end": 691.76, "text": "But like what I want is smarter software."}, {"id": "s136", "start": 691.76, "end": 696.24, "text": "Why can't like B2B Why can't software just be more expressive?"}, {"id": "s137", "start": 696.24, "end": 701.16, "text": "Like why are the like the building blocks of software actually still the same?"}, {"id": "s138", "start": 701.16, "end": 706.64, "text": "And um I think this is a question that the whole AI industry should ask itself."}, {"id": "s139", "start": 706.64, "end": 714.72, "text": "And basically every time you're thinking about we want to do automation, it is not about like, you know, an amalgamation of like automating a person's work."}, {"id": "s140", "start": 714.72, "end": 717.4, "text": "It's about like, \"Hey, there's this extremely rote work."}, {"id": "s141", "start": 717.4, "end": 721.88, "text": "It's so simple that we can like communicate to someone else that this thing should be done.\""}, {"id": "s142", "start": 721.88, "end": 726.72, "text": "And ideally it's like it it's so basic that it could be done repeatedly for basically free."}, {"id": "s143", "start": 726.72, "end": 728.08, "text": "Um or it could be done by computers."}, {"id": "s144", "start": 728.08, "end": 730.44, "text": "And that's really not happening right now."}, {"id": "s145", "start": 730.44, "end": 733.28, "text": "What we're doing is we're just automating the writing of the software."}, {"id": "s146", "start": 733.28, "end": 735.24, "text": "But then it its expressibility is the same."}, {"id": "s147", "start": 735.24, "end": 739.2, "text": "And that's That to me is like tragic in the state of the world."}, {"id": "s148", "start": 739.2, "end": 742.68, "text": "Um Cool."}, {"id": "s149", "start": 743.2, "end": 745.96, "text": "Oh, lesson three."}, {"id": "s150", "start": 746.08, "end": 749.68, "text": "This is something that I believe strongly in."}, {"id": "s151", "start": 749.68, "end": 758.48, "text": "I believe that like eventually the field will write the I wouldn't say Arlatech is a wrong, but it was like a weird detour and one that we didn't expect."}, {"id": "s152", "start": 758.48, "end": 761.52, "text": "Tomorrow's AI, I believe, will be for automation."}, {"id": "s153", "start": 761.52, "end": 765.36, "text": "And we will eventually have a world with smarter software."}, {"id": "s154", "start": 765.36, "end": 772.76, "text": "Like there will start to be actual work that is automated, which I, you know, right now it's a rounding error despite LLM's intelligence."}, {"id": "s155", "start": 772.76, "end": 777.12, "text": "And that is what we are working on at TypeSafe."}, {"id": "s156", "start": 777.12, "end": 780.36, "text": "We are still kind of stealthy."}, {"id": "s157", "start": 780.36, "end": 783.76, "text": "Like I'm willing to give these talks, but these are like some of the early ones."}, {"id": "s158", "start": 783.76, "end": 791.36, "text": "Um Our core question is what if the AI stack was redesigned for reliability and automation?"}, {"id": "s159", "start": 791.36, "end": 794.0, "text": "Like how would that all change?"}, {"id": "s160", "start": 794.0, "end": 795.4, "text": "What what would you do?"}, {"id": "s161", "start": 795.4, "end": 803.8, "text": "And actually there's a lot It's a It's a very interesting fork in the road for what's go you know, like from basically every LLM that's built today."}, {"id": "s162", "start": 803.8, "end": 808.04, "text": "And I think it's one of the most satisfying things I've worked on, and I've worked on some pretty cool stuff."}, {"id": "s163", "start": 808.04, "end": 809.52, "text": "We are releasing soon."}, {"id": "s164", "start": 809.52, "end": 819.48, "text": "So, um if you want to work with us or you want to like you know, be the first one of the first to build smart software, please sign up on either our mating mailing list or careers page."}, {"id": "s165", "start": 819.48, "end": 821.16, "text": "And I am trying to start a Twitter."}, {"id": "s166", "start": 821.16, "end": 824.44, "text": "So, follow me and I will post really spicy things."}, {"id": "s167", "start": 824.44, "end": 828.64, "text": "I actually will post something later today that I guarantee will be very spicy."}, {"id": "s168", "start": 828.64, "end": 833.36, "text": "Uh the hint is that the original scaling laws were incorrect."}, {"id": "s169", "start": 833.6, "end": 834.16, "text": "Cool."}, {"id": "s170", "start": 834.16, "end": 837.08, "text": "Um that uh that's it for my prepared stuff."}, {"id": "s171", "start": 837.08, "end": 840.64, "text": "I would love Do I have time for for people yelling out questions?"}, {"id": "s172", "start": 840.64, "end": 843.96, "text": "I would love questions, feedback, disagreements, strong stuff."}, {"id": "s173", "start": 843.96, "end": 844.8, "text": "I can repeat the question."}, {"id": "s174", "start": 844.8, "end": 846.6, "text": "You don't have to worry about the mic."}, {"id": "s175", "start": 846.6, "end": 848.52, "text": "Hell yeah."}, {"id": "s176", "start": 848.52, "end": 849.32, "text": "Uh cool."}, {"id": "s177", "start": 849.32, "end": 854.6, "text": "Uh the question was roughly what if you trained like a classifier head with pre-training as well?"}, {"id": "s178", "start": 854.6, "end": 857.96, "text": "Uh roughly uh like Yoshua Bengio is suggesting."}, {"id": "s179", "start": 857.96, "end": 862.44, "text": "Um I will say that that's complicated."}, {"id": "s180", "start": 862.44, "end": 866.0, "text": "And I actually think I don't have the time to answer that particular question."}, {"id": "s181", "start": 866.0, "end": 868.24, "text": "I will give like my simplified view on this."}, {"id": "s182", "start": 868.24, "end": 873.24, "text": "And it the answer is I actually don't think that pre-training is the problem."}, {"id": "s183", "start": 873.24, "end": 876.68, "text": "I think pre-training is uh phenomenal."}, {"id": "s184", "start": 876.68, "end": 883.56, "text": "Like the fact that we compress the knowledge of the internet into like this core of intelligence that then can be utilized is incredible."}, {"id": "s185", "start": 883.56, "end": 887.56, "text": "And the pre-trained models are incredibly intelligent."}, {"id": "s186", "start": 887.56, "end": 890.92, "text": "Uh and I believe that the problem is like how we unearth it."}, {"id": "s187", "start": 890.92, "end": 896.88, "text": "And hallucination [clears throat] to me is intrinsic to um optimizing for human preference."}, {"id": "s188", "start": 896.88, "end": 900.64, "text": "Like there's an asymmetry in the reward model kind of like a GANs have."}, {"id": "s189", "start": 900.64, "end": 902.839, "text": "Oh, I really should not get This is a very advanced topic."}, {"id": "s190", "start": 902.839, "end": 918.2, "text": "But there's an asymmetry in the reward model like what GANs have that allow for um that encourage the models to drop modes and be confident because it's very easy to see when the model is not confident and to punish that from a reward model perspective."}, {"id": "s191", "start": 918.2, "end": 924.12, "text": "It's very complicated, but uh I'm happy to chat afterwards if you want to jam."}, {"id": "s192", "start": 925.96, "end": 927.08, "text": "Cool."}, {"id": "s193", "start": 927.08, "end": 929.08, "text": "Oops."}, {"id": "s194", "start": 929.52, "end": 934.88, "text": "Um I have other slides from other talks as well that I could go into more about that."}, {"id": "s195", "start": 934.88, "end": 936.0, "text": "I have a minute left."}, {"id": "s196", "start": 936.0, "end": 937.88, "text": "Hell yeah."}, {"id": "s197", "start": 937.88, "end": 940.0, "text": "Say it again."}, {"id": "s198", "start": 943.08, "end": 944.92, "text": "It is definitely not RLVR."}, {"id": "s199", "start": 944.92, "end": 946.48, "text": "So, it is a new thing."}, {"id": "s200", "start": 946.48, "end": 953.68, "text": "Every single optimization stack I will actually go into an old presentation that I have because I think this is super important."}, {"id": "s201", "start": 953.68, "end": 960.24, "text": "Um in terms of like to me what the like Sutton's bitter lesson is that algorithms matter more than compute."}, {"id": "s202", "start": 960.24, "end": 963.24, "text": "This is true in games, but not true in reality."}, {"id": "s203", "start": 963.24, "end": 971.44, "text": "I actually think that the full stack is that data matters more than compute and doing the right task matters way more than data."}, {"id": "s204", "start": 971.44, "end": 979.8, "text": "And basically every single branch of LLM post-training if you want to call it has its own North Star of what it's optimizing for."}, {"id": "s205", "start": 979.8, "end": 982.4, "text": "So, RLHF is optimizing for human preference."}, {"id": "s206", "start": 982.4, "end": 996.04, "text": "RLVR is optimizing for like log error rates of pure correctness, but we are doing a third thing that is optimized for calibrated decision-making and like basically mainlining the intelligence of pre-trained models"}, {"id": "s207", "start": 996.04, "end": 1001.24, "text": "into like being actually useful for software, which I think is like quite different."}, {"id": "s208", "start": 1006.24, "end": 1008.8, "text": "Uh could you say that again?"}, {"id": "s209", "start": 1012.88, "end": 1016.28, "text": "Uh they're asking if the the reward is injected through the whole process."}, {"id": "s210", "start": 1016.28, "end": 1025.52, "text": "I will actually say that even the shape of the API is different because the shape of the API for RLHF is different from RLVR, which is different from what we are doing."}, {"id": "s211", "start": 1025.52, "end": 1032.319, "text": "So, we are like thinking about it from scratch just like no one thought about instruction following before we made instruction following happen."}, {"id": "s212", "start": 1032.319, "end": 1041.4, "text": "Um usually when there's a big branch in new ways to post-train, like it it it just looks like totally alien, and then in hindsight becomes super obvious."}, {"id": "s213", "start": 1042.199, "end": 1043.319, "text": "Cool."}, {"id": "s214", "start": 1043.319, "end": 1048.16, "text": "I believe I'm overtime cuz this red thing is is beeping, but please find me afterwards."}, {"id": "s215", "start": 1048.16, "end": 1049.2, "text": "I love questions."}, {"id": "s216", "start": 1049.2, "end": 1051.04, "text": "I love the interactivity."}, {"id": "s217", "start": 1051.04, "end": 1055.48, "text": "Um and uh follow me on Twitter for spicy stuff."}, {"id": "s218", "start": 1055.48, "end": 1057.36, "text": "Heck, yeah."}, {"id": "s219", "start": 1057.36, "end": 1059.08, "text": "Oh, oh yeah, it's over here."}, {"id": "s220", "start": 1059.08, "end": 1060.68, "text": "Complete skeptic."}, {"id": "s221", "start": 1060.68, "end": 1064.2, "text": "Um it's it's on brand for me."}, {"id": "s222", "start": 1064.2, "end": 1064.96, "text": "Cool."}, {"id": "s223", "start": 1064.96, "end": 1065.36, "text": "Heck, yeah."}, {"id": "s224", "start": 1065.36, "end": 1067.6, "text": "Thank you."}, {"id": "s225", "start": 1081.417, "end": 1083.417, "text": "[music]"}]}, {"id": "dQ-_i1tZiws", "title": "Tribal Dungeons of Global Shipping: AI Agents at Global Scale — Dmitry Buykin, Maersk", "channel": "AI Engineer", "duration": 722, "upload_date": null, "url": "https://www.youtube.com/watch?v=dQ-_i1tZiws", "api": "/api/talks/dQ-_i1tZiws.json", "summary_url": "/#dQ-_i1tZiws", "transcript": {"html": "/transcripts/dQ-_i1tZiws.html", "txt": "/transcripts/dQ-_i1tZiws.txt", "vtt": "/transcripts/dQ-_i1tZiws.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.519, "end": 14.4, "text": "Hello everyone."}, {"id": "s3", "start": 14.4, "end": 18.56, "text": "Um, this is a practitioner report uh from real production work."}, {"id": "s4", "start": 18.56, "end": 21.52, "text": "So, let's get into it."}, {"id": "s5", "start": 21.52, "end": 25.519, "text": "Um, I'll skip the generic uh yet another loop agent intro."}, {"id": "s6", "start": 25.519, "end": 30.08, "text": "This is about the hard part most agent demos skip."}, {"id": "s7", "start": 30.08, "end": 37.28, "text": "and about turning messy operational knowledge into something an agent can execute safely."}, {"id": "s8", "start": 37.28, "end": 47.36, "text": "This comes from real work uh in my company I'm working for supporting global shipping operations and grounded in production."}, {"id": "s9", "start": 48.399, "end": 56.64, "text": "On paper it's uh one workflow usually but uh in reality every shipment is an orchestration of many parallel state machines."}, {"id": "s10", "start": 56.64, "end": 65.28, "text": "While they agree the happy paths work the moment one drifts you get exception work."}, {"id": "s11", "start": 66.24, "end": 70.88, "text": "The easy majority is already automated in many companies."}, {"id": "s12", "start": 70.88, "end": 78.479, "text": "What's left is the long tail and more exceptions than system built uh to handle them."}, {"id": "s13", "start": 78.479, "end": 82.56, "text": "That tail is uh the expensive part."}, {"id": "s14", "start": 83.2, "end": 85.28, "text": "And then there's my favorite category."}, {"id": "s15", "start": 85.28, "end": 90.32, "text": "And it comes with a special uh plate here."}, {"id": "s16", "start": 90.32, "end": 95.119, "text": "See for EI builder dreams and their laptops."}, {"id": "s17", "start": 95.119, "end": 100.799, "text": "This what you can find outside of AI bubble in San Francisco."}, {"id": "s18", "start": 102.24000000000001, "end": 107.28, "text": "The signal process uh depends on many systems being coherent at once."}, {"id": "s19", "start": 107.28, "end": 120.07900000000001, "text": "If any step uh can't complete the happy path breaks and then it takes expert uh archist expert orchestration across uh multiple incomplete systems."}, {"id": "s20", "start": 120.399, "end": 126.399, "text": "All these uh variations um path pathways should be captured in SOPs."}, {"id": "s21", "start": 126.399, "end": 130.64, "text": "SOPs is a standard operating procedure common and regulated industries."}, {"id": "s22", "start": 130.64, "end": 136.16, "text": "So an expert and the model read them uh the same way."}, {"id": "s23", "start": 136.959, "end": 139.04, "text": "That gap is the hard part."}, {"id": "s24", "start": 139.04, "end": 150.8, "text": "Stable intent detection tool calls you can guarantee are safe integrating with legacy back ends and results evaluated with experts."}, {"id": "s25", "start": 152.31900000000002, "end": 154.959, "text": "Uh I call this uh tribal dungeons."}, {"id": "s26", "start": 154.959, "end": 163.2, "text": "Uh the knowledge exists but not in a form uh agent can execute and you can safely run a process."}, {"id": "s27", "start": 163.2, "end": 164.56, "text": "You can't safely run a process."}, {"id": "s28", "start": 164.56, "end": 179.68, "text": "The organization cannot represent standard legacy SOPs [clears throat] bunch of bunch of screenshots organized in sequence and but screenshots not uh a process."}, {"id": "s29", "start": 179.68, "end": 183.36, "text": "A legacy SOPs explain what a person sees and clicks."}, {"id": "s30", "start": 183.36, "end": 198.56, "text": "And an agent SOP needs a more complex uh setup, preconditions, uh decisions, identifiers, back end calls, validation, recovery, and evidence of uh successful execution."}, {"id": "s31", "start": 201.04, "end": 205.28, "text": "Experts own the what, agents own the how."}, {"id": "s32", "start": 205.28, "end": 208.159, "text": "And exception becomes a guardrail."}, {"id": "s33", "start": 208.159, "end": 216.959, "text": "Most of the effort is the translation and negotiation between them to align on common sense."}, {"id": "s34", "start": 218.31900000000002, "end": 229.84, "text": "Three parts here um in this architecture it's SOP memory uh organized as SOP corpus execution runtime and theme feedback capture."}, {"id": "s35", "start": 229.84, "end": 232.0, "text": "The agent loop is not the system."}, {"id": "s36", "start": 232.0, "end": 238.64, "text": "The refining loop around the agent is the system and it's the most complex part."}, {"id": "s37", "start": 238.64, "end": 240.799, "text": "Oh, sorry SAP is okay."}, {"id": "s38", "start": 240.799, "end": 243.28, "text": "It's this slide for UK."}, {"id": "s39", "start": 243.28, "end": 245.04, "text": "This is correct one."}, {"id": "s40", "start": 245.04, "end": 259.68, "text": "So and it's good illustration why the the same thing is means different and uh describing differently in different countries and it's creating a lot of variations between each country"}, {"id": "s41", "start": 259.68, "end": 276.24, "text": "and that corpus is a asset the company company's process memory uh modified and aligned with every country um conditions and far bigger than than than runtime you could see the proportion 20 to1"}, {"id": "s42", "start": 276.24, "end": 295.759, "text": "So and this is concurrently operating system and this is the scale we run in production today over 200 instances and spikes and latencies deviates from few minutes to up to 10 minutes."}, {"id": "s43", "start": 296.96, "end": 309.44, "text": "Um and mainly yeah the mainly main reason for it that u we depending on many legacy system which is uh so cannot be faster than agent loop itself."}, {"id": "s44", "start": 311.44, "end": 314.24, "text": "Expert time is the bottleneck."}, {"id": "s45", "start": 314.24, "end": 319.199, "text": "So the theme bench uh does the triage for us."}, {"id": "s46", "start": 319.199, "end": 323.759, "text": "It clusters the failures and hands back something you can act on."}, {"id": "s47", "start": 323.759, "end": 327.44, "text": "Not just look at look at it."}, {"id": "s48", "start": 328.88, "end": 338.479, "text": "The trace is the shared evidence that lets an expert and an engineer review the same case and agree on what happened."}, {"id": "s49", "start": 339.28, "end": 343.28, "text": "A correction only counts when it becomes an executable change."}, {"id": "s50", "start": 343.28, "end": 349.919, "text": "And that's the line between an opinion and a production fix."}, {"id": "s51", "start": 352.88, "end": 355.84000000000003, "text": "And and this is where quality comes from."}, {"id": "s52", "start": 355.84000000000003, "end": 371.919, "text": "not from vibes uh not from a bigger model from replaying real examples with u disabled rights to uh protect the production systems and checking whether behavior improved."}, {"id": "s53", "start": 373.44, "end": 382.16, "text": "You can see here on the uh cognitive proportion u or this effort ratio uh between each activity in our project."}, {"id": "s54", "start": 382.16, "end": 387.6, "text": "So usually uh pipe coding ends here."}, {"id": "s55", "start": 387.6, "end": 399.36, "text": "Here there ends um specdriven development because it cannot uh grow improve accuracy more than this stage on this scale."}, {"id": "s56", "start": 399.36, "end": 404.08, "text": "And this is uh where the real work starts."}, {"id": "s57", "start": 404.08, "end": 404.88, "text": "Nothing exotic."}, {"id": "s58", "start": 404.88, "end": 410.15999999999997, "text": "It's engineering common engineering sense applied at scale."}, {"id": "s59", "start": 410.15999999999997, "end": 425.599, "text": "So if uh you don't know all this uh terminology which developed over lastuh 30 years in software development argument to check because this is what every AI agent uh AI coding agent should know uh to help you"}, {"id": "s60", "start": 425.599, "end": 443.36, "text": "develop reliable production systems and accuracy it's uh wasn't designed uh in one diagram up front it was earned one small correction at the time at the scale you see here."}, {"id": "s61", "start": 443.36, "end": 461.44, "text": "So we have over 100,000 corrections over last 9 months in the system when we developing it [clears throat] and this um heat maps uh turned thousands of traces into priorities."}, {"id": "s62", "start": 461.44, "end": 471.36, "text": "is how we keep experts and engineers uh looking at the same problems and prioritize where the the most beneficial work for them."}, {"id": "s63", "start": 471.36, "end": 485.68, "text": "Every cell is a group of tracked scenarios we have and uh usually to turn one block in red it's around one two months of force for the whole team"}, {"id": "s64", "start": 486.96, "end": 500.16, "text": "whole team of engineers and also AI agents um the agent failed is uh where the investigation starts not where it ends each failure maps to a specific uh fix"}, {"id": "s65", "start": 502.319, "end": 507.36, "text": "discovery needs agent freedom and production needs a cage."}, {"id": "s66", "start": 507.36, "end": 510.56, "text": "Uh the harness isn't there to give the agent more room."}, {"id": "s67", "start": 510.56, "end": 514.64, "text": "It's there to make the dumb mistakes impossible."}, {"id": "s68", "start": 516.64, "end": 520.24, "text": "So on this scale please be careful is not a guard guard."}, {"id": "s69", "start": 520.24, "end": 523.76, "text": "Uh if we have wrong workflow then classifier eval."}, {"id": "s70", "start": 523.76, "end": 526.64, "text": "If it's wrong right then right gate."}, {"id": "s71", "start": 526.64, "end": 529.76, "text": "If it's wrong assumption then it's a mere view."}, {"id": "s72", "start": 529.76, "end": 536.72, "text": "A preventive measure eliminates the unsafe path on critical paths."}, {"id": "s73", "start": 536.72, "end": 539.2, "text": "U review and approval stay in the loop."}, {"id": "s74", "start": 539.2, "end": 546.56, "text": "The engine engineering focus is uh to build safe hands offs and a trail you can trust."}, {"id": "s75", "start": 548.88, "end": 553.68, "text": "The real outcome uh wasn't the agent in the system."}, {"id": "s76", "start": 553.68, "end": 557.36, "text": "It was the [clears throat] methodology we built around it."}, {"id": "s77", "start": 557.36, "end": 562.08, "text": "If you want the blueprint, then it's uh these five moves."}, {"id": "s78", "start": 562.08, "end": 563.519, "text": "Make work representable."}, {"id": "s79", "start": 563.519, "end": 566.0, "text": "Make exe execution bounded."}, {"id": "s80", "start": 566.0, "end": 571.92, "text": "Make behavior observable for every agent and make correction cheap."}, {"id": "s81", "start": 571.92, "end": 574.56, "text": "And last thing is make improvement compound."}, {"id": "s82", "start": 574.56, "end": 579.68, "text": "So gradually systematically improve the quality of the system."}, {"id": "s83", "start": 581.92, "end": 587.04, "text": "AI native um operation is more than agents in workflow."}, {"id": "s84", "start": 587.04, "end": 597.76, "text": "It's a system that learns from what works and fold folds it back into code as new composite tools adapting to the applications and the people around it."}, {"id": "s85", "start": 597.76, "end": 603.04, "text": "The best AI models um oriented intelligence for us."}, {"id": "s86", "start": 603.04, "end": 623.6, "text": "The adaptive architecture we built is the asset, the final asset and we aggregating all um repeatable sequences of steps successful scenarios and uh merging them into bigger tools which uh"}, {"id": "s87", "start": 623.6, "end": 628.72, "text": "combine the disproven scenarios into the reusable snippets by other agents."}, {"id": "s88", "start": 628.72, "end": 637.6, "text": "So and then um it's possible to roll out them not only for one country but for hundreds country in one go."}, {"id": "s89", "start": 638.64, "end": 646.079, "text": "So this is um um all for the talk and little time for questions and I'll be around afterwards."}, {"id": "s90", "start": 646.079, "end": 661.2, "text": "And the final reminder you know if you you know if you are AI builder if you emotionally attached to tools not MCPS we're not using MCPS because uh for us it's uh always"}, {"id": "s91", "start": 661.2, "end": 662.64, "text": "not the best choice."}, {"id": "s92", "start": 662.64, "end": 676.64, "text": "So because all all systems usually really bloated and we have to distill responses and uh tune the tools through function calling uh to our agents then we can control"}, {"id": "s93", "start": 676.64, "end": 685.6, "text": "quality of um our software and ensure that uh it's correctly processing assigned tasks."}, {"id": "s94", "start": 687.2, "end": 687.6, "text": "Thank you."}, {"id": "s95", "start": 687.6, "end": 689.8389999999999, "text": "Any questions?"}, {"id": "s96", "start": 693.519, "end": 697.76, "text": "Okay, then um thanks for your attent u attention."}, {"id": "s97", "start": 697.76, "end": 702.88, "text": "Then I will be around so you can ask me questions if you want."}, {"id": "s98", "start": 704.133, "end": 706.133, "text": "[applause]"}, {"id": "s99", "start": 720.508, "end": 722.508, "text": "[music]"}]}, {"id": "dSg0pu8d6qg", "title": "From Tokenmaxxing to Trusted Throughput — Mingsheng Hong, Ironclad", "channel": "AI Engineer", "duration": 1384, "upload_date": null, "url": "https://www.youtube.com/watch?v=dSg0pu8d6qg", "api": "/api/talks/dSg0pu8d6qg.json", "summary_url": "/#dSg0pu8d6qg", "transcript": {"html": "/transcripts/dSg0pu8d6qg.html", "txt": "/transcripts/dSg0pu8d6qg.txt", "vtt": "/transcripts/dSg0pu8d6qg.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.719, "end": 14.88, "text": "All right, let's get started."}, {"id": "s3", "start": 14.88, "end": 18.48, "text": "Apologies for the delay, but I'm really excited to be here."}, {"id": "s4", "start": 18.48, "end": 23.76, "text": "I'm Mingshan, VP of engineering focused on AI at Ironclad."}, {"id": "s5", "start": 23.76, "end": 29.679, "text": "And today I'll be telling you about something that's probably on top of many of your mind."}, {"id": "s6", "start": 29.679, "end": 34.48, "text": "uh how to control and optimize for your AI token spend."}, {"id": "s7", "start": 34.48, "end": 40.16, "text": "Can I get a get a quick show of hands that this is a relevant topic?"}, {"id": "s8", "start": 40.16, "end": 41.76, "text": "Okay, awesome."}, {"id": "s9", "start": 41.76, "end": 44.32, "text": "I appreciate that."}, {"id": "s10", "start": 45.92, "end": 50.8, "text": "So, we have all heard a few sensational stories from the media."}, {"id": "s11", "start": 50.8, "end": 60.879, "text": "There's an interesting Amazon story where an employee just created kind of a voluntary dashboard and everyone start tracking their own AI token usage."}, {"id": "s12", "start": 60.879, "end": 74.479, "text": "I'm not sure there's explicit encouragement from the leadership, but the effect is you know engineers some of the engineers started competing with each other in maximizing their token usage and get to the top of the so-called leaderboard."}, {"id": "s13", "start": 74.479, "end": 85.759, "text": "There's a similar story from Meta and then another even more sensational story about some companies spending $500 million on cloud oops within a month."}, {"id": "s14", "start": 85.759, "end": 92.479, "text": "So while these may not be happening in your companies today, the threats, the risks are real."}, {"id": "s15", "start": 92.479, "end": 95.119, "text": "How do we think about the policies?"}, {"id": "s16", "start": 95.119, "end": 96.72, "text": "How do we measure the cost?"}, {"id": "s17", "start": 96.72, "end": 100.0, "text": "And how do we control and optimize for it?"}, {"id": "s18", "start": 100.0, "end": 114.799, "text": "So one initial learning I want to share is it is really important to have dashboard that track every team every individual's token usage and cost but that should not be positioned as a leaderboard."}, {"id": "s19", "start": 114.799, "end": 120.0, "text": "We think of the the usage dashboard more as a smoke detector."}, {"id": "s20", "start": 120.0, "end": 128.08, "text": "If there are local pockets of teams or individuals that don't use much AI token that might be a signal worth investigating."}, {"id": "s21", "start": 128.08, "end": 137.12, "text": "But beyond that certainly we don't want to create even indirect incentive to maximize the token usage itself."}, {"id": "s22", "start": 138.64, "end": 141.12, "text": "So how do we think about it then?"}, {"id": "s23", "start": 141.12, "end": 151.68, "text": "First I want to make sure that we position this talk for those of you whose teams have already gone through the hump of getting AI adopted."}, {"id": "s24", "start": 151.68, "end": 167.12, "text": "If you're still in the initial process of provisioning easy access to your engineers or encouraging the teams and individuals to adopt, then you may not be ready to implement some of the ideas for controlling"}, {"id": "s25", "start": 167.12, "end": 169.2, "text": "and optimizing for cost."}, {"id": "s26", "start": 169.2, "end": 170.0, "text": "But that's okay."}, {"id": "s27", "start": 170.0, "end": 171.92000000000002, "text": "This could still be a good discussion."}, {"id": "s28", "start": 171.92000000000002, "end": 176.16, "text": "And frankly, we just got over that hump over the last couple quarters."}, {"id": "s29", "start": 176.16, "end": 181.84, "text": "So this is a very topical subject that every engineering leader I believe is navigating."}, {"id": "s30", "start": 181.84, "end": 187.12, "text": "So I would love to start that dialogue with you all today to explore the best practices."}, {"id": "s31", "start": 187.12, "end": 196.239, "text": "Can I get a quick show of hand for those of you whose teams have gone over the initial adoption phase now you are starting to seriously worry about the cost."}, {"id": "s32", "start": 196.239, "end": 198.879, "text": "Okay, I see roughly half of the hands raised."}, {"id": "s33", "start": 198.879, "end": 199.68, "text": "Thank you."}, {"id": "s34", "start": 199.68, "end": 212.56, "text": "So let's talk about then how we can control and how we can optimize what we call the trusted throughput as a kind of a proxy metric as a way to measure your ROI."}, {"id": "s35", "start": 212.56, "end": 222.959, "text": "But before that, just for those of you who are in the process of still increasing adoption, one lesson we learned is to after the kind of the top down leadership push"}, {"id": "s36", "start": 222.959, "end": 232.48, "text": "is to sit down with the individual teams and uh the individuals who may be resistant or struggling with adoption, understand where they came from."}, {"id": "s37", "start": 232.48, "end": 243.76, "text": "For example, there are some legitimate concerns that I heard, you know, people say, \"Hey, I used to really take pride and joy in handcrafting the code and now a lot of the joy and the pride"}, {"id": "s38", "start": 243.76, "end": 248.879, "text": "got taken away and replaced with me reviewing AI slop code, right?"}, {"id": "s39", "start": 248.879, "end": 258.16, "text": "So that doesn't sound like a very satisfying professional activity and that's where we need to kind of dig down and understand what are still the kind of the high impact"}, {"id": "s40", "start": 258.16, "end": 266.88, "text": "and uh engineering tasks technical work that we can help our engineers continue to grow themselves in the era of the AI."}, {"id": "s41", "start": 268.479, "end": 280.479, "text": "So I wanted to share with you a bit more about what we at ironclad does and there's an interesting connection actually within how we think about optimizing for engineering AI token usage."}, {"id": "s42", "start": 280.479, "end": 285.6, "text": "So, ironclad is a legal contracting AI companies AI company."}, {"id": "s43", "start": 285.6, "end": 299.84000000000003, "text": "We build AI features and native AI products to help lawyers, procurement and other business users move forward new contracts, move them forward faster with controlled risk."}, {"id": "s44", "start": 299.84000000000003, "end": 306.0, "text": "What that means is building trust is the number one priority with our AI product features and products."}, {"id": "s45", "start": 306.0, "end": 314.4, "text": "And for the prior speak uh speaker speaker, she did a wonderful job telling you about the importance of trust and how to build it in their domain."}, {"id": "s46", "start": 314.4, "end": 325.6, "text": "In our ironclad product domain, it often means lawyers especially, but other persona as well taking the time to kind of test the water and see if they can trust the AI output."}, {"id": "s47", "start": 325.6, "end": 336.479, "text": "For example, they may feed our conversational search a set of contracts they are firmly familiar with and they run a search and see if the output is towards the expectation."}, {"id": "s48", "start": 336.479, "end": 349.919, "text": "If so, they may expand on searching for things they don't know about or apply other workflows using AI to solve other things like redlinining the contract um and you know finding anomalies and so on."}, {"id": "s49", "start": 349.919, "end": 365.759, "text": "And so similarly using AI and making sure AI is delivering high engineering value also involves a you know a sequence of steps in gaining trust from the internal engineers the leadership as well with as uh with our customers."}, {"id": "s50", "start": 365.759, "end": 374.96, "text": "So this is the focus of our talk today and this probably will not come as a surprise here."}, {"id": "s51", "start": 374.96, "end": 381.28, "text": "The goal is not to minimizing or not even necessarily to reduce token spend."}, {"id": "s52", "start": 381.28, "end": 384.56, "text": "So here we kind of use the word it's not about austerity."}, {"id": "s53", "start": 384.56, "end": 389.28, "text": "It's about further improving the ROI of the token spend."}, {"id": "s54", "start": 389.28, "end": 390.88, "text": "So how do we do that?"}, {"id": "s55", "start": 390.88, "end": 395.919, "text": "Here we propose um a concept we call trusted throughput."}, {"id": "s56", "start": 395.919, "end": 409.039, "text": "So the trusted throughput comes from having the code reviewed and validated internally and ultimately validated in customer uh in customer deployments."}, {"id": "s57", "start": 410.639, "end": 421.039, "text": "So how do we go and how do we think about controlling the cost and uh measuring and in turn optimizing the ROI?"}, {"id": "s58", "start": 421.039, "end": 428.4, "text": "The first step is I'm pretty confident that all of you your teams who have been adopting AI have been measuring the cost."}, {"id": "s59", "start": 428.4, "end": 436.8, "text": "If you're using a single tool like claw code or codeex then you tend to get very rich analytics from the vendor's dashboard already."}, {"id": "s60", "start": 436.8, "end": 447.759, "text": "If you're like us who use a combination of these different coding tools then we basically use AI to build simple dashboards and pipelines to extract such vendor data."}, {"id": "s61", "start": 447.759, "end": 449.84, "text": "So we can kind of crossorrelate them."}, {"id": "s62", "start": 449.84, "end": 459.36, "text": "Then we can break it down, aggregate and then break down by per team, per individual, what is their cost usage across all of these uh tools."}, {"id": "s63", "start": 459.36, "end": 462.4, "text": "So that's the first step for measuring cost."}, {"id": "s64", "start": 462.4, "end": 472.15999999999997, "text": "Now one pitfall I have seen and we wanted to caution everybody is to then jump from measuring cost to start reducing or minimizing the cost, right?"}, {"id": "s65", "start": 472.15999999999997, "end": 473.199, "text": "Cutting cost."}, {"id": "s66", "start": 473.199, "end": 475.199, "text": "We think that is premature."}, {"id": "s67", "start": 475.199, "end": 480.319, "text": "Instead, the other important side of the equation for ROI is to measure value."}, {"id": "s68", "start": 480.319, "end": 483.759, "text": "How much value are we getting from burning the tokens?"}, {"id": "s69", "start": 483.759, "end": 492.72, "text": "Once we can measure the cost and value side, we understand ROI and then to improve ROI, we want to find and then fix the bottlenecks."}, {"id": "s70", "start": 492.72, "end": 503.68, "text": "In the next couple slides, I'm going to introduce two new bottlenecks we identify in this whole new software development life cycle where code generation now becomes abundant thanks to AI."}, {"id": "s71", "start": 503.68, "end": 511.039, "text": "But the pressure is now getting pushed down to code review and continuous integration CICD the merging the code."}, {"id": "s72", "start": 511.039, "end": 522.88, "text": "So we'll talk about that and finally we'll put together these ideas into a pra pragmatic framework of how we think about optimizing the ROI and thus the leverage in using AI."}, {"id": "s73", "start": 525.279, "end": 525.92, "text": "Okay."}, {"id": "s74", "start": 525.92, "end": 531.92, "text": "So this is kind of just a slide in building or using the vendor dashboard to measure the cost."}, {"id": "s75", "start": 531.92, "end": 544.08, "text": "And again we want to caution that here the main goal for regularly reviewing the dashboard is to see a if there's still adoption gap within individual pockets of teams or the individual engineers"}, {"id": "s76", "start": 544.08, "end": 556.56, "text": "and b if there are any sudden surprises in kind of the usage burst and if so understand what's been happening if they're legitimate and then also compare teams contextually."}, {"id": "s77", "start": 556.56, "end": 557.6, "text": "So this is important."}, {"id": "s78", "start": 557.6, "end": 566.959, "text": "We don't control just the AI usage per se because for example a platform infrastructure team the way they use AI and the way they get value may be different from the UI team."}, {"id": "s79", "start": 566.959, "end": 570.24, "text": "So we need to take the context into consideration."}, {"id": "s80", "start": 570.24, "end": 574.16, "text": "All of such review analysis is to help us extract learnings."}, {"id": "s81", "start": 574.16, "end": 579.8389999999999, "text": "So there's a self-learning loop that we can then feed back into institutional best practices."}, {"id": "s82", "start": 579.8389999999999, "end": 584.64, "text": "What we don't want to use the dashboards are to kind of stack rank people, right?"}, {"id": "s83", "start": 584.64, "end": 589.2, "text": "making it a a leaderboard and somehow reward maximization."}, {"id": "s84", "start": 589.2, "end": 596.08, "text": "There's an interesting analogy I want to draw with uh a traditional edge productivity metric called lines of code."}, {"id": "s85", "start": 596.08, "end": 606.8, "text": "So I believe all of you will be tracking that metric but it wouldn't be wise to use that metric as the key goal to measure engine velocity because if we want"}, {"id": "s86", "start": 606.8, "end": 612.16, "text": "productive and high quality engine work one can argue that removing code is even better."}, {"id": "s87", "start": 612.16, "end": 617.76, "text": "So, LOC line of code is an important metric but not something we want to directly optimize for."}, {"id": "s88", "start": 617.76, "end": 621.519, "text": "Same thing for the token usage and spend."}, {"id": "s89", "start": 622.32, "end": 626.72, "text": "So, that that gets us to the notion of trusted throughput."}, {"id": "s90", "start": 626.72, "end": 628.0, "text": "How do we think about that?"}, {"id": "s91", "start": 628.0, "end": 629.68, "text": "How do we define that?"}, {"id": "s92", "start": 629.68, "end": 633.04, "text": "First, I want to kind of share the quantified uh side of the things."}, {"id": "s93", "start": 633.04, "end": 637.44, "text": "What are the metrics that kind of we have been involving in defining and tracking."}, {"id": "s94", "start": 637.44, "end": 644.72, "text": "So we talked about line of code is clearly not a good way to measure if AI is you know generating a lot of value."}, {"id": "s95", "start": 644.72, "end": 650.88, "text": "So the next evolution can be let's count the number of open PRs pull requests."}, {"id": "s96", "start": 650.88, "end": 655.44, "text": "The intuition being engineers are using AI to generate a lot more code."}, {"id": "s97", "start": 655.44, "end": 657.519, "text": "So let's measure the open PR."}, {"id": "s98", "start": 657.519, "end": 663.2, "text": "So clearly we see a big kind of inflection in the open PR count."}, {"id": "s99", "start": 663.2, "end": 676.64, "text": "But eventually as we as I assume everyone would agree over the time even though people may do oneoff you know R&D work to try out things without lending them but eventually we're all measured by the code we ship."}, {"id": "s100", "start": 676.64, "end": 682.8, "text": "So therefore we evolved from tracking the open PR count to tracking the merge PR count."}, {"id": "s101", "start": 682.8, "end": 685.04, "text": "So that's an improvement."}, {"id": "s102", "start": 685.04, "end": 689.279, "text": "But the next question is not every merged PR is equal."}, {"id": "s103", "start": 689.279, "end": 698.16, "text": "There can be a PO with only 10 lines of code that takes forever that finds and fix a concurrency bug or there can be a thousand line kind of boilerplate"}, {"id": "s104", "start": 698.16, "end": 706.32, "text": "code that just takes a lot of time to then kind of generate and review but otherwise it's not necessary adding as much business value."}, {"id": "s105", "start": 706.32, "end": 713.44, "text": "So as such we then started kind of tagging each merged PR with some sort of complexity score."}, {"id": "s106", "start": 713.44, "end": 715.92, "text": "There's no traditional definition of what that means."}, {"id": "s107", "start": 715.92, "end": 717.519, "text": "We looked at the literature a bit."}, {"id": "s108", "start": 717.519, "end": 729.519, "text": "So we just took a pragmatic approach of giving AI a well-crafted prompt and then we feed the PR into basically one or two M and say score the complexity based on t-shirt size."}, {"id": "s109", "start": 729.519, "end": 738.079, "text": "So I the idea being if you use AI to generate a more complex PR we consider that as being more valuable basically that's how we kind of add a weightage"}, {"id": "s110", "start": 738.079, "end": 751.279, "text": "to each merged PR but that's not the end of the journey that's still something we're going to evolve keep evolving and I would love to discuss with everyone on kind of how we end up creating defining a set of metrics that kind of approximate"}, {"id": "s111", "start": 751.279, "end": 754.0, "text": "the value AI is generating."}, {"id": "s112", "start": 754.0, "end": 756.639, "text": "Now let's look at the qualitative view."}, {"id": "s113", "start": 756.639, "end": 767.6, "text": "What we think about the way we would define trusted throughput is a high quality output that's interested by both internal engineering and leadership and external customers."}, {"id": "s114", "start": 767.6, "end": 770.639, "text": "We think they come from three buckets."}, {"id": "s115", "start": 770.639, "end": 780.88, "text": "The first bucket is all of the objective metrics that we run with checking the test coverage whether uh all of the predefined security checks are passing."}, {"id": "s116", "start": 780.88, "end": 786.56, "text": "Do we go through the regular canarying practice as we roll out features safely and so on."}, {"id": "s117", "start": 786.56, "end": 793.44, "text": "In addition, we complement the subjective objective metrics with our subjective human judgment."}, {"id": "s118", "start": 793.44, "end": 801.8389999999999, "text": "So that's where the code review, the design review come in to look at the code quality, clarity, maintenance, architecture fit and so on."}, {"id": "s119", "start": 801.8389999999999, "end": 815.44, "text": "And then finally we want to make sure through all of these internal objective and subjective check when the rubber meets the road how customer perceive the changes are there production fire that lead to ro rollbacks"}, {"id": "s120", "start": 815.44, "end": 821.68, "text": "do customers complain have tickets that talk about usability uh friction uh bugs and so on."}, {"id": "s121", "start": 821.68, "end": 828.639, "text": "So these are the three buckets that together form what we think is trusted throughput from engineering."}, {"id": "s122", "start": 832.16, "end": 832.639, "text": "Okay."}, {"id": "s123", "start": 832.639, "end": 846.8, "text": "So now let's talk about from a software deploy deployment life cycle perspective where we observe the new bottlenecks are as I mentioned earlier AI code generation is making PR creation"}, {"id": "s124", "start": 846.8, "end": 848.24, "text": "abundant."}, {"id": "s125", "start": 848.24, "end": 857.519, "text": "So now the the bottleneck from kind of the whole life cycle perspective gets shifted onto re review and they're subsequently merging the PR."}, {"id": "s126", "start": 857.519, "end": 859.92, "text": "Does that resonate?"}, {"id": "s127", "start": 860.24, "end": 862.959, "text": "I see some heads nodding."}, {"id": "s128", "start": 862.959, "end": 871.68, "text": "So this is where we spend time on figuring out how we can further improve the review process as well as the continuous integration the CI process."}, {"id": "s129", "start": 871.68, "end": 875.76, "text": "So we will dive into these two topics in the next couple slides here."}, {"id": "s130", "start": 875.76, "end": 891.76, "text": "I just want to say a potential anti-attern anti-solution is that hey if the CI infrastructure gets overloaded then a workar around by engineers to stop splitting PR just start submitting large PR for review and submission"}, {"id": "s131", "start": 891.76, "end": 899.76, "text": "because if it takes an hour to run all of your regression test and submit it I don't want to break my PR into 10 right which might take 10 hours"}, {"id": "s132", "start": 899.76, "end": 913.92, "text": "however this in our view can be pretty risky because it makes the human review overhead higher it also reduce the quality of the review because the human attention can be spread thin so that is an anti-attern"}, {"id": "s133", "start": 913.92, "end": 930.16, "text": "I wanted to caution so for code review the key principle we use is to make sure we onboard AI tooling as the first level of defense they don't replace human reviewers but we want to offload human reviewers"}, {"id": "s134", "start": 930.16, "end": 939.36, "text": "as much as possible let the AI review take care of simpler things like coding style issues or if there's a missing test coverage."}, {"id": "s135", "start": 939.36, "end": 946.32, "text": "So, make sure the author gets through all of them before then the review gets routed to a human reviewer."}, {"id": "s136", "start": 946.32, "end": 957.279, "text": "And this way our human engineers can focus on applying their deep judgment on aspects that are somewhat subjective like if the code is good, if the architecture is sound,"}, {"id": "s137", "start": 957.279, "end": 964.0, "text": "if the code uh uh passes kind of the security uh the security design and so on."}, {"id": "s138", "start": 964.0, "end": 969.68, "text": "so that in the end our engineering team can take the final accountability."}, {"id": "s139", "start": 971.6, "end": 973.44, "text": "Now let's look at CI."}, {"id": "s140", "start": 973.44, "end": 987.92, "text": "So I assume all of you deploy some form of CI uh CI/CD and what we're seeing is thanks to AI now making it much easier to generate code as splitting code into smaller but more PRs"}, {"id": "s141", "start": 987.92, "end": 1001.519, "text": "it puts a lot more pressure on the CI and this is something that uh if we don't address uh at a company level individual engineers can be struggling because that means they have to waste their human time babysitting"}, {"id": "s142", "start": 1001.519, "end": 1003.36, "text": "the PR to get merged."}, {"id": "s143", "start": 1003.36, "end": 1015.6, "text": "If they run into flaky test then they have to manually they hit rerun it's very frustrating or they can recruit an AI agent to babysit and kind of do a loop but that in turn waste AI token as well."}, {"id": "s144", "start": 1015.6, "end": 1024.799, "text": "So these are not these are just workarounds not perfect solution and also tend to make engineers feel a little bit lower morale a little bit more frustrated."}, {"id": "s145", "start": 1024.799, "end": 1039.679, "text": "So what we what we are doing is kind of we put more uh developer experience uh platform kind of engineering to invest into reducing removing the flaky test improving the CI infrastructure"}, {"id": "s146", "start": 1039.679, "end": 1052.0, "text": "and the key thing here is to also define and measure the right metrics for example uh the work clock time between when a peer is ready to submit till when it's submitted"}, {"id": "s147", "start": 1052.0, "end": 1055.84, "text": "right if a typical CR uh run takes an hour."}, {"id": "s148", "start": 1055.84, "end": 1058.559, "text": "Does the typical PR submission take two or three hours?"}, {"id": "s149", "start": 1058.559, "end": 1065.44, "text": "In which case, that's a red flag and also the number of times a PR needs to get retrieded for passing through the test."}, {"id": "s150", "start": 1065.44, "end": 1077.039, "text": "So, these are the key metrics that we are using to measure our developer experiences and the relevant team who is focused on improving uh these uh the developer experience."}, {"id": "s151", "start": 1078.48, "end": 1090.0, "text": "So with all of the analysis and ideas here we uh want to share kind of the a pragmatic framework of how we can then measure and optimize token usage."}, {"id": "s152", "start": 1090.0, "end": 1091.76, "text": "It has three aspects."}, {"id": "s153", "start": 1091.76, "end": 1105.36, "text": "The first one is set the right set of guards across setting the budget and quota tracking usage defining anomalies so that no users uh leaders can get notified if something feels wrong."}, {"id": "s154", "start": 1105.36, "end": 1115.84, "text": "This is complementaryary to still regular human review which can catch other interesting patterns or learnings and feedback into the institutional knowledge base."}, {"id": "s155", "start": 1115.84, "end": 1130.64, "text": "Let me just couple that with the third item here which is the learning loop we talk about as our leadership work with individuals to define these guard rails review the metrics and then refine that's how we kind of close the learning loop."}, {"id": "s156", "start": 1130.64, "end": 1145.2, "text": "In addition to that, we want to work with our teams, individual engineers to continue to search for and if needed innovate on the best practices of how to use AI, how to use AI to build products and also use it internally."}, {"id": "s157", "start": 1145.2, "end": 1153.039, "text": "For example, some engineers may be writing an agentic loop as part of the harness when they use cloud code."}, {"id": "s158", "start": 1153.039, "end": 1165.2, "text": "after they generated initial PR they go and loop around and say try and pass the set of tests and then if some tests don't pass just auto fix the test or the code and retry."}, {"id": "s159", "start": 1165.2, "end": 1175.52, "text": "One thing to watch out for is to put a limit on the number of loop steps to make sure if things go out of control we don't waste too many tokens on that."}, {"id": "s160", "start": 1175.52, "end": 1177.679, "text": "Another example is prompt caching."}, {"id": "s161", "start": 1177.679, "end": 1194.559, "text": "This is becoming increasingly more prevalent by the commercial uh model vendors where what they advise is if you send a prompt with the same prefix they could optimize how they process the prefix of the prompt."}, {"id": "s162", "start": 1194.559, "end": 1201.679, "text": "What that means then as a user to those is that we want to encourage our users to structure their prompt that way."}, {"id": "s163", "start": 1201.679, "end": 1212.24, "text": "For example, if your prompt consists of a system prompt followed by a user prompt, you want to put the system prompt that's fixed at the top and the varying content at the bottom."}, {"id": "s164", "start": 1212.24, "end": 1213.84, "text": "Context pruning is also important."}, {"id": "s165", "start": 1213.84, "end": 1219.12, "text": "We want to kind of drill it into each individual users kind of new kind of muscle memory."}, {"id": "s166", "start": 1219.12, "end": 1229.36, "text": "So they are aware that as they build out the context through a longer chat session, they would be mindful of summarizing the context and make sure that the token usage is efficient that way."}, {"id": "s167", "start": 1229.36, "end": 1234.96, "text": "There are increasingly more tools like claw code that will automatically manage and compact the context for you."}, {"id": "s168", "start": 1234.96, "end": 1240.32, "text": "And so this increases the token usage efficiency but also increase the quality of AI output."}, {"id": "s169", "start": 1240.32, "end": 1244.08, "text": "There are other ideas we're exploring as well."}, {"id": "s170", "start": 1248.559, "end": 1252.24, "text": "So I know we're at time so this is towards the end of the talk."}, {"id": "s171", "start": 1252.24, "end": 1255.44, "text": "There is sometimes we also face build versus by decision."}, {"id": "s172", "start": 1255.44, "end": 1262.799, "text": "The principle is simple for things that are non- differentiating like IDE CI infrastructure we want to buy."}, {"id": "s173", "start": 1262.799, "end": 1273.44, "text": "But then for things that are specific to our context like how we would generate high quality PR for small bug fixes versus building a new UI feature for refactoring and so on."}, {"id": "s174", "start": 1273.44, "end": 1278.559, "text": "We have our internal playbook which is a set of well-crafted AI prompts."}, {"id": "s175", "start": 1278.559, "end": 1280.96, "text": "So we save that and share across our team."}, {"id": "s176", "start": 1280.96, "end": 1282.88, "text": "So that gets reused and enhanced."}, {"id": "s177", "start": 1282.88, "end": 1285.44, "text": "So that's something we must build internally."}, {"id": "s178", "start": 1285.44, "end": 1291.6, "text": "When it comes to case to case though, sometimes it's still a bit ambiguous like we're trying to build what we call builder agent."}, {"id": "s179", "start": 1291.6, "end": 1296.4, "text": "That's like a cloud-based code generation that wrap the cloud codec and so on."}, {"id": "s180", "start": 1296.4, "end": 1299.76, "text": "While we know there are also other vendors out there that we're still exploring."}, {"id": "s181", "start": 1299.76, "end": 1303.2, "text": "So we love to exchange thoughts on that."}, {"id": "s182", "start": 1303.52, "end": 1308.799, "text": "So then to summarize here are a couple key lessons as we went through the last couple quarters of journey."}, {"id": "s183", "start": 1308.799, "end": 1312.88, "text": "I wanted to share so that hopefully you could kind of accelerate your process there."}, {"id": "s184", "start": 1312.88, "end": 1320.48, "text": "If I were to summarize these three things I would it's about learning planning ahead and learn from other people's stories mistakes."}, {"id": "s185", "start": 1320.48, "end": 1332.88, "text": "So what that means is think about build respences by early on as you are encouraging more code gen think about how that impact your code review and CI and how you can address these new bottlenecks."}, {"id": "s186", "start": 1332.88, "end": 1344.08, "text": "And finally, continue to define and instrument your system to get the right metrics to measure the health of your CI system and the whole developer experience in general."}, {"id": "s187", "start": 1344.08, "end": 1345.6, "text": "So that's it for the talk."}, {"id": "s188", "start": 1345.6, "end": 1354.0, "text": "We believe that this is the golden era of AI where maximizing token ROI is the key for every team success."}, {"id": "s189", "start": 1354.0, "end": 1356.559, "text": "And with that, I just want to end with saying we are hiring."}, {"id": "s190", "start": 1356.559, "end": 1365.12, "text": "I know this is engineering leadership crowd but if you know of someone who is interested in building cutting edge legal contracting AI we would love to talk."}, {"id": "s191", "start": 1365.12, "end": 1367.28, "text": "Thank you."}]}, {"id": "ewtOo0scUh0", "title": "Data and Environment Curation for Post-Training LLMs — Mahesh Sathiamoorthy, Bespoke Labs", "channel": "AI Engineer", "duration": 1152, "upload_date": null, "url": "https://www.youtube.com/watch?v=ewtOo0scUh0", "api": "/api/talks/ewtOo0scUh0.json", "summary_url": "/#ewtOo0scUh0", "transcript": {"html": "/transcripts/ewtOo0scUh0.html", "txt": "/transcripts/ewtOo0scUh0.txt", "vtt": "/transcripts/ewtOo0scUh0.vtt"}, "sentences": [{"id": "s1", "start": 12.639, "end": 21.199, "text": "Hey everyone, um today I'll be talking about data and uh environment curation for uh post- training LLMs."}, {"id": "s2", "start": 21.199, "end": 23.439, "text": "And I am Mahesh Satyimi."}, {"id": "s3", "start": 23.439, "end": 27.439, "text": "Um I'm co-founder and CEO of Bespoke Labs."}, {"id": "s4", "start": 27.439, "end": 32.88, "text": "And previously I was a researcher and uh engineer at uh Google deep mind."}, {"id": "s5", "start": 32.88, "end": 41.36, "text": "So very briefly I will tell you a little bit about uh bespoke and uh after that the talk will be mostly around uh opensource work we have done."}, {"id": "s6", "start": 41.36, "end": 53.039, "text": "So bespoke is an applied data research lab with a mission to help enterprises and frontier labs access high quality data and RL environments for their post training needs."}, {"id": "s7", "start": 53.039, "end": 63.68, "text": "So very briefly what we do and what we have done is that last year we put out something called curator which is a tool for curating uh synthetic data"}, {"id": "s8", "start": 63.68, "end": 75.36, "text": "for post training with basically SFT and right after that actually deepse landed and we started an effort to curate reasoning data and that's how we started something called bespoke stratos"}, {"id": "s9", "start": 75.36, "end": 86.799, "text": "which eventually formed something uh into the project called open thoughts which some of you hopefully know about and we have also been core contributors to terminal bench."}, {"id": "s10", "start": 86.799, "end": 92.799, "text": "Um you know these days we we do a lot of research and build and ship RL environments."}, {"id": "s11", "start": 92.799, "end": 103.92, "text": "So I was actually looking forward to the previous talk uh from Nick who is also you know uh doing something similar uh and and the other thing we do is we"}, {"id": "s12", "start": 103.92, "end": 109.759, "text": "do a lot of post training and help enterprises uh to get their own custom models."}, {"id": "s13", "start": 109.759, "end": 109.92, "text": "Right?"}, {"id": "s14", "start": 109.92, "end": 116.32, "text": "That's the name of that's how we ended up with the bespoke uh t title for the company."}, {"id": "s15", "start": 116.32, "end": 124.799, "text": "Uh the the other thing I want to kind of mention is there's there is this you know you know in in our industry there are a lot of people who create data"}, {"id": "s16", "start": 124.799, "end": 129.84, "text": "uh create RL environments and then there are the uh researchers who consume this."}, {"id": "s17", "start": 129.84, "end": 138.64, "text": "But I feel like there is this slight mismatch and it's kind of beneficial for someone to kind of go do both at the same time."}, {"id": "s18", "start": 138.64, "end": 150.16, "text": "And in fact uh as you're curating data you want to put yourself in the shoes of the researcher to see what what does it take to you know uh actually move the metrics on the models."}, {"id": "s19", "start": 150.16, "end": 160.07999999999998, "text": "So that's one of the motivations of how we kind of think about the other thing I want to kind of talk about is you know how you know uh AI has evolved right."}, {"id": "s20", "start": 160.07999999999998, "end": 166.0, "text": "So early on we used to think about and evaluate models on what they know."}, {"id": "s21", "start": 166.0, "end": 179.76, "text": "Um for example this is a this was a very popular benchmark on uh testing LLMs on various kinds of STEM humanities and all that knowledge and these days we have all these benchmarks that test"}, {"id": "s22", "start": 179.76, "end": 190.239, "text": "uh how how agents are able to do things we have moved on from knowing to doing right so that's the idea of agents obviously and the one of the key"}, {"id": "s23", "start": 190.239, "end": 205.04, "text": "principles or one of the key things about agents is that they are autonomous And there are as I was saying there are many benchmarks including uh swb bench terminal bench and so on but ultimately for many people what they care about is"}, {"id": "s24", "start": 205.04, "end": 218.07999999999998, "text": "are these agents autonomous for long durations of time uh Nick had uh sorry uh Ross had a great talk on long horizon right so that's the goal is eventually we make these agents"}, {"id": "s25", "start": 218.07999999999998, "end": 228.56, "text": "autonomous for maybe few hours or you know few days or few weeks and what is it that's blocking the uh autonomy of agents."}, {"id": "s26", "start": 228.56, "end": 230.879, "text": "It's basically reliability, right?"}, {"id": "s27", "start": 230.879, "end": 238.72, "text": "So, at some point something falls apart like either they called the wrong tool or they made a mistake and you know what what not, right?"}, {"id": "s28", "start": 238.72, "end": 242.48, "text": "And what what's one lever to improve reliability there?"}, {"id": "s29", "start": 242.48, "end": 254.239, "text": "There are of course many um obviously you can prompt your way to improving the agents u reliability or you can uh update the harness you know the tools and whatnot"}, {"id": "s30", "start": 254.239, "end": 269.28, "text": "but postraining is a very powerful tool to improve reliability or or maybe even pre-train good models right so if you think of frontier labs this is one of their primary mechanisms of improving agents over to to"}, {"id": "s31", "start": 269.28, "end": 286.479, "text": "uh get better [clears throat] u capability ities in uh various domains or you know or for better you know benchmark numbers or better u um autonomy for long longer and longer durations"}, {"id": "s32", "start": 286.479, "end": 299.28, "text": "and for post training one of the popular techniques as you know is reinforcement learning and that's kind of um something you know a lot of you are excited about is the you know notion of RL environments"}, {"id": "s33", "start": 299.28, "end": 316.4, "text": "but ultimately for post training be it SFT or or uh reinforcement learning data is the bottleneck right so when when I talk about data RLNs are also something I'm calling it as data it's just the data is now in a very different shape"}, {"id": "s34", "start": 316.4, "end": 333.36, "text": "u again here you know compute is kind of well definfined models you know uh good sort of models exist and the uh infrastructure to post train for example u the There are various providers like fireworks,"}, {"id": "s35", "start": 333.36, "end": 336.479, "text": "tinker or uh slime world and whatnot."}, {"id": "s36", "start": 336.479, "end": 340.0, "text": "So all all of those are somewhat well defined."}, {"id": "s37", "start": 340.0, "end": 355.039, "text": "Most of the places where people struggle especially enterprises is that they don't have access to good quality data and RLNs and this obviously also applies to frontier labs where they have all this infra setup and they are you know needing good quality RLMs"}, {"id": "s38", "start": 355.039, "end": 366.639, "text": "right uh beyond so that that's one of the this is kind of how we are thinking about why to invest time in you know doing data research and RLN research"}, {"id": "s39", "start": 366.639, "end": 378.639, "text": "and as a side note one of the um other there are many other benefits of post- training for example you can reduce latency or improve cost throughput and whatnot"}, {"id": "s40", "start": 378.639, "end": 391.039, "text": "and I'll give one concrete example of a post- training work we did uh with one of the enterprises so in this talk I will mostly uh cover some of the work we have done in the open-source"}, {"id": "s41", "start": 391.039, "end": 411.52, "text": "uh community so we did some work on curating reasoning data for reasoning models and for uh you curating trajectories and uh environments for agents and recently we had an engagement with post training which uh I I'll very briefly talk about and some tools on data curation"}, {"id": "s42", "start": 411.68, "end": 432.639, "text": "so open thoughts um is a reasoning data set as well as a paper right so we we started this effort last year as I was saying this uh we we after DC came out we realized that there is uh lack lack of very high quality reasoning data in the uh community."}, {"id": "s43", "start": 432.639, "end": 446.56, "text": "Obviously the labs have access to good data but outside we didn't have access to data right so we we at bespoke started this effort called bespoke stratos and then we realized that this is actually quite useful so we joined"}, {"id": "s44", "start": 446.56, "end": 460.08, "text": "um together with various folks in uh Stanford UC Berkeley Udub and so on to create this consortium called open thoughts and we did lot of work on basically identifying the curation recipe"}, {"id": "s45", "start": 460.08, "end": 466.88, "text": "and we also published this as a paper in night of this year and this is the main figure of the paper."}, {"id": "s46", "start": 466.88, "end": 472.4, "text": "So what it shows is like we we figured out a curation recipe and it shows the scaling law right."}, {"id": "s47", "start": 472.4, "end": 481.039, "text": "So again this is last year when Amy uh and and uh live codebench and these these were some of the popular benchmarks."}, {"id": "s48", "start": 481.039, "end": 492.639, "text": "What we showed is that with this recipe if you keep you know scaling up the data set size the the you know the the it's a scalable recipe right the the metrics also improve"}, {"id": "s49", "start": 492.639, "end": 504.479, "text": "uh it's actually very widely used as well for example this is um Microsoft cso tweeting about the work and this alle Alex is my uh co-founder he's a chief scientist"}, {"id": "s50", "start": 504.479, "end": 519.36, "text": "and also a professor at UC Berkeley and this is John Schulman talking about open thoughts that he as he and his uh colleagues have been using it internally at uh thinking machines right and some of their blog posts also reference this"}, {"id": "s51", "start": 519.36, "end": 536.32, "text": "so I'll uh talk about how we did the curation for open thoughts um this is the pipeline that we used so you start with curate you start with a bunch of source questions right so there are various data sets out there that have the"}, {"id": "s52", "start": 536.32, "end": 540.56, "text": "uh prompt response and we choose with the prompt so we start with the prompts."}, {"id": "s53", "start": 540.56, "end": 543.519, "text": "These are various uh sources we have."}, {"id": "s54", "start": 543.519, "end": 556.48, "text": "And then uh if you look at the paper, so if you look at this graph for any given data point, say if there are 10,000 samples that you want, the question is then how do you choose"}, {"id": "s55", "start": 556.48, "end": 564.32, "text": "uh the questions from all these different data set so that you have 10,000 uh for the data point."}, {"id": "s56", "start": 564.32, "end": 568.64, "text": "So the the then there is the aspect around how do you mix these questions."}, {"id": "s57", "start": 568.64, "end": 572.399, "text": "So uh you can use various methods."}, {"id": "s58", "start": 572.399, "end": 580.08, "text": "So the paper talks about for example using LLMs to check for whether this is a good good question hardness of a question and so on."}, {"id": "s59", "start": 580.08, "end": 584.72, "text": "And then you want to filter questions u and generate the answers."}, {"id": "s60", "start": 584.72, "end": 587.2, "text": "Again this is all like driven by LLMs right?"}, {"id": "s61", "start": 587.2, "end": 595.6, "text": "So this is the curation recipe we did for uh creating this reasoning data set and the answer generation is using teacher models."}, {"id": "s62", "start": 595.6, "end": 609.2, "text": "So you can take other reasoning data uh reasoning models such as deepseek or quenbased models or even gemini and whatnot and then you can also filter the answers once you have the answers for uh these questions."}, {"id": "s63", "start": 609.2, "end": 616.0, "text": "Um and and then you can also you know given a question generate multiple answers or a single answer."}, {"id": "s64", "start": 616.0, "end": 631.279, "text": "So these are various knobs in the curation recipe and the systematic way of doing this is like you run ablations and figure out which uh you know in each of these stages what works and you kind of proceed to the next."}, {"id": "s65", "start": 631.279, "end": 634.72, "text": "So after doing all of this you get the final recipe right."}, {"id": "s66", "start": 634.72, "end": 647.279, "text": "So this uh you can read this paper it has lots and lots of uh you know information about how we did the curation but here are some of the learnings that you know some of them are quite"}, {"id": "s67", "start": 647.279, "end": 654.9590000000001, "text": "uh counterintuitive and some of this was also covered in last year's uh AI uh AI engineer conference."}, {"id": "s68", "start": 654.9590000000001, "end": 660.399, "text": "For example sampling um multiple answers per question works pretty well."}, {"id": "s69", "start": 660.399, "end": 664.88, "text": "This is something that uh we it's it's kind of counterintuitive."}, {"id": "s70", "start": 664.88, "end": 678.64, "text": "So as an example, something else we could have done is we could have had more much many more questions and then just answered them exactly once versus taking one question and answering them 16 times."}, {"id": "s71", "start": 678.64, "end": 684.32, "text": "The I think the the reasoning is probably that it gives like a variety of how reasoning is done."}, {"id": "s72", "start": 684.32, "end": 689.6, "text": "So the the during finetuning we also use the the reasoning traces, right?"}, {"id": "s73", "start": 689.6, "end": 692.0, "text": "So I think the diversity helps there."}, {"id": "s74", "start": 692.0, "end": 702.16, "text": "And the other thing we saw is like the stronger teachers are not always the best uh uh stronger models are not always the better teachers."}, {"id": "s75", "start": 702.16, "end": 714.56, "text": "And there were a few other counterintuitive aspects around like you know uh synthetic question generation or question answering working whereas answer filtering and other aspects not working very well."}, {"id": "s76", "start": 714.56, "end": 725.519, "text": "And after the open thoughts work which was around uh data curation for reasoning models such as you know uh deepse kind of models, we moved on to open thoughts agents which is"}, {"id": "s77", "start": 725.519, "end": 735.36, "text": "um very similar but how do you curate these the the data and RL environments for uh training agents now right not models."}, {"id": "s78", "start": 735.36, "end": 737.36, "text": "We we have a very similar figure here."}, {"id": "s79", "start": 737.36, "end": 739.92, "text": "Again we want to establish scaling loss."}, {"id": "s80", "start": 739.92, "end": 745.6, "text": "Um so as you increase the data set size we want to make sure that the curation recipe actually works."}, {"id": "s81", "start": 745.6, "end": 758.16, "text": "Uh and again I'm I'm not going to go into details here but very similarly there are various ways of choosing different sources for example stack exchange and and whatnot."}, {"id": "s82", "start": 758.16, "end": 759.279, "text": "How do you mix the test?"}, {"id": "s83", "start": 759.279, "end": 760.399, "text": "How do you filter?"}, {"id": "s84", "start": 760.399, "end": 764.88, "text": "Generating the rollouts uh choosing the teacher and so on."}, {"id": "s85", "start": 764.88, "end": 781.12, "text": "And again these are some of the lessons learnings u as an example even here we saw that stronger models are not necessarily the uh best teachers right so we found out some some some of the I think uh"}, {"id": "s86", "start": 781.12, "end": 796.8, "text": "um quen models were better than for example um um um claude models I think and sampling multiple answers again helped in this case synthetic rewriting and task augmentation um"}, {"id": "s87", "start": 796.8, "end": 806.399, "text": "is something we thought will work but it didn't very work work very well and the other thing is like in in this whole process of building this open thoughts agent"}, {"id": "s88", "start": 806.399, "end": 822.8, "text": "SFT still contributed a lot to the gains um RL was kind of you know it's very comput inensive and for for the last few few percentages it really helped uh but but you know in many of the situations for example in enterprises"}, {"id": "s89", "start": 822.8, "end": 826.639, "text": "SFT actually works works pretty well, right?"}, {"id": "s90", "start": 826.72, "end": 834.399, "text": "And here is one concrete example I wanted to share on um uh actually deploying something to production, right?"}, {"id": "s91", "start": 834.399, "end": 835.2, "text": "By post training."}, {"id": "s92", "start": 835.2, "end": 851.68, "text": "So we have seen a lot of people talk about post- training but in enterprise settings we haven't seen lot of successes at least haven't seen uh that here is a very concrete example of uh with intude there is a this app called credit karma which if you install there is a page"}, {"id": "s93", "start": 851.68, "end": 862.56, "text": "place where you can uh the the the app gives you a reasoning as to why a credit card has been recommended and this you can prompt a model to do this."}, {"id": "s94", "start": 862.56, "end": 869.279, "text": "But one of the reasons one of the places where it fails is that the you know it it it's not always compliant."}, {"id": "s95", "start": 869.279, "end": 877.519, "text": "So you have to have a long list of rules to make sure the responses are compliant and that actually blows up the latency."}, {"id": "s96", "start": 877.519, "end": 897.68, "text": "So answer here is like you want to curate data and post train right seems kind of straightforward but one of the things that we ran into is um the data set can be quite impa imbalance and lot lots and lots of places for example you will have 0% APR and the model after fine-tuning"}, {"id": "s97", "start": 897.68, "end": 911.04, "text": "can kind of hallucinate the these uh numbers so this again kind of ties back to what Ross talked about some time back with respect to attacks And we kind uh we created this specific"}, {"id": "s98", "start": 911.04, "end": 928.639, "text": "uh curation recipe where instead of just having these uh question the the prompt response pairs in plain language, we added these uh tags which helped the model to focus on you know uh the the kind of form rather than the specific numbers itself"}, {"id": "s99", "start": 928.639, "end": 944.24, "text": "and that gave a big boost and uh we we saw that um the the overall the compliance metrics improved the latency improved, the throughput improved and eventually you know they they are able to own the model right as frontier models improve"}, {"id": "s100", "start": 944.24, "end": 955.36, "text": "they don't need to kind of go and u um uh update it and also as we see now the uh frontier [clears throat] models are also getting more and more expensive"}, {"id": "s101", "start": 955.36, "end": 964.48, "text": "and you know this kind of g gives them a very good way for owning the model and also um lowering the costs."}, {"id": "s102", "start": 964.72, "end": 976.88, "text": "I think with that I want to briefly touch upon um uh you know curator the tooling that we had built last year um which is for curating reasoning data."}, {"id": "s103", "start": 976.88, "end": 989.44, "text": "So uh what it does is you can basically uh you know um specify the you you can either go with say a hugging face data set where you have various prompts"}, {"id": "s104", "start": 989.44, "end": 996.639, "text": "or uh in many situations you may have collected logs and you want to get the responses and fine-tune a model."}, {"id": "s105", "start": 996.639, "end": 1012.56, "text": "So this curator kind of makes it pretty easy to do that and it comes with the integration with you know uh tinker and fireworks and this this is again the tool that we used um originally for curating open thoughts"}, {"id": "s106", "start": 1012.56, "end": 1024.319, "text": "and here is a very very detailed diagram of what we are building today but um this again connects back to um what Ross was talking about where he was talking about algorithms"}, {"id": "s107", "start": 1024.319, "end": 1042.64, "text": "uh environments and compute root right so it it feels like you know we are kind of converging on something very similar so if you think about uh the the stack that is needed to say not just curate these RL environments but to post train models"}, {"id": "s108", "start": 1042.64, "end": 1055.679, "text": "one of the things you need is obviously handle on like how do you build these RL environments how do you measure the quality how do you track the different versions and so on so that's one of the layers and below that you want various infrastructure"}, {"id": "s109", "start": 1055.679, "end": 1059.6, "text": "to uh um sand use sandboxes, right?"}, {"id": "s110", "start": 1059.6, "end": 1070.96, "text": "to spin up the rollouts to to spin up the sandboxes to generate rollouts and especially if you have long horizon rollouts then maybe at some points you need to do a checkpointing and then you need to be able to"}, {"id": "s111", "start": 1070.96, "end": 1085.679, "text": "snapshot or roll back to something else right so that's the other uh the lower level u you know compute and orchestration and at the top I have been giving examples on post training so there is all this uh layer around like how do you do SFT"}, {"id": "s112", "start": 1085.679, "end": 1092.88, "text": "how do you do RL and so on but there is also this method called Japa which is around uh which is on prompt optimization."}, {"id": "s113", "start": 1092.88, "end": 1102.64, "text": "I don't know if you if you guys have heard of it but you can use LLMs itself to uh to to kind of optimize the prompts based on reflection."}, {"id": "s114", "start": 1102.64, "end": 1108.24, "text": "Um so that also works pretty well for updating the system prompts and also the harnesses."}, {"id": "s115", "start": 1108.24, "end": 1122.4, "text": "So this is kind of I feel like you know the the new architecture or the new reference uh stack for how how at least we are building and how many others are building um the the stack on how to build the RLMs"}, {"id": "s116", "start": 1122.4, "end": 1125.039, "text": "and then also post train agents."}, {"id": "s117", "start": 1125.039, "end": 1132.08, "text": "I think with that uh I will uh end the talk and u you know happy to take questions offline."}, {"id": "s118", "start": 1133.818, "end": 1135.818, "text": "[applause]"}]}, {"id": "h6mi88VrPtQ", "title": "x402 isn’t good (yet) — Jan Curn, Apify", "channel": "AI Engineer", "duration": 1248, "upload_date": null, "url": "https://www.youtube.com/watch?v=h6mi88VrPtQ", "api": "/api/talks/h6mi88VrPtQ.json", "summary_url": "/#h6mi88VrPtQ", "transcript": {"html": "/transcripts/h6mi88VrPtQ.html", "txt": "/transcripts/h6mi88VrPtQ.txt", "vtt": "/transcripts/h6mi88VrPtQ.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.56, "end": 14.24, "text": "Hello everyone."}, {"id": "s3", "start": 14.24, "end": 21.84, "text": "Uh last year here at AI Engineer World Fair, uh David Cramer from Sentry had a mildly provocative talk called MCP isn't good yet."}, {"id": "s4", "start": 21.84, "end": 25.04, "text": "And back then, MCP was the new kid on the block, right?"}, {"id": "s5", "start": 25.04, "end": 26.36, "text": "Uh it was like a lot of hype around it."}, {"id": "s6", "start": 26.36, "end": 28.28, "text": "People were, you know, were excited about it."}, {"id": "s7", "start": 28.28, "end": 32.8, "text": "But also like it wasn't really developed back then very much and it was very clunky."}, {"id": "s8", "start": 32.8, "end": 38.04, "text": "And in this talk, David argued, \"Hey, like this technology is cool, but it has like a lot of rough edges, right?"}, {"id": "s9", "start": 38.04, "end": 42.48, "text": "So just you know, go play with it, but you know, have your expectations low, right?\""}, {"id": "s10", "start": 42.48, "end": 46.84, "text": "By the way, they went on and actually built one of the best MCP servers on the market, right?"}, {"id": "s11", "start": 46.84, "end": 52.72, "text": "Like Sentry MCP is is is really like very well-designed server, like nice nice design and so on."}, {"id": "s12", "start": 52.72, "end": 58.6, "text": "And actually over the the last year, uh MCP became like a standard that's actually widely adopted, you know, across the industry."}, {"id": "s13", "start": 58.6, "end": 64.64, "text": "Like the top AI engines like Claude and ChatGPT, actually uh Claude offers MCP connectors, right?"}, {"id": "s14", "start": 64.64, "end": 67.04, "text": "So you can plug tools into your AI agents."}, {"id": "s15", "start": 67.04, "end": 74.84, "text": "Uh uh ChatGPT calls it MC calls it apps, but you can also like, you know, directory of different services you can plug into your Claude."}, {"id": "s16", "start": 74.84, "end": 79.03999999999999, "text": "And it actually became a standard thing for agent-to-agent interaction, right?"}, {"id": "s17", "start": 79.03999999999999, "end": 87.36, "text": "And uh uh despite a little little hate also about MCP, you know, I have yet to see CI connectors in any of these agents, right?"}, {"id": "s18", "start": 87.36, "end": 89.2, "text": "So MCP won."}, {"id": "s19", "start": 89.2, "end": 98.28, "text": "And so, inspired by David's talk, uh today uh I have a similar talk uh which is called X 402 isn't good yet."}, {"id": "s20", "start": 98.28, "end": 104.75999999999999, "text": "And in that talk, I would like to argue, you know, that uh while X 402 is very exciting technology, it has also still some rough edges, you know."}, {"id": "s21", "start": 104.75999999999999, "end": 113.6, "text": "And perhaps if I do it as well, we'll also build one of the best integrations with our X 402 on the market like Sentry did with MCP."}, {"id": "s22", "start": 113.6, "end": 114.36, "text": "My name is Jan Černý."}, {"id": "s23", "start": 114.36, "end": 116.08, "text": "I'm the founder and CEO of Apify."}, {"id": "s24", "start": 116.08, "end": 121.68, "text": "And uh for those who don't know, Apify is the largest marketplace of tools for AI."}, {"id": "s25", "start": 121.68, "end": 124.52, "text": "Uh we have about 45,000 of these tools."}, {"id": "s26", "start": 124.52, "end": 126.72, "text": "Uh we call them actors."}, {"id": "s27", "start": 126.72, "end": 141.16, "text": "And they are spending use cases like, you know, extraction of data from social media sites, e-commerce, hospitality, travel, search engines, maps, but over time also like AI agents or agentic use cases, you know, different automations and so on, right?"}, {"id": "s28", "start": 141.16, "end": 152.0, "text": "And some of these tools, some of these actors are built by our community, some are built by us, and our community is is making now more than $1 million per month on on payouts"}, {"id": "s29", "start": 152.0, "end": 153.0, "text": "by selling these tools, right?"}, {"id": "s30", "start": 153.0, "end": 158.72, "text": "So they build the tools, we sell them to to to users, and you know, we pass the money to them."}, {"id": "s31", "start": 158.72, "end": 160.92000000000002, "text": "And so it's a thriving marketplace."}, {"id": "s32", "start": 160.92000000000002, "end": 164.68, "text": "And I guess by now everybody understands like why we are so excited about agentic payments, right?"}, {"id": "s33", "start": 164.68, "end": 173.4, "text": "Because we really want our tools to be easily accessible to agents, like wherever they are, with whatever protocol is out there."}, {"id": "s34", "start": 173.4, "end": 179.72, "text": "Uh just 2 days ago we launched uh together with with Coinbase our our XYO 2 integration."}, {"id": "s35", "start": 179.72, "end": 182.4, "text": "Uh I would say the the launch went pretty viral."}, {"id": "s36", "start": 182.4, "end": 184.2, "text": "We got like 1 million views."}, {"id": "s37", "start": 184.2, "end": 199.4, "text": "Uh and before before this launch, there were about like 2,000 tools available on the on the agentic uh market uh basically on XYO XYO 2. We brought another 20,000"}, {"id": "s38", "start": 199.4, "end": 199.64, "text": "tools."}, {"id": "s39", "start": 199.64, "end": 208.92000000000002, "text": "So basically we 10X 10X the size of the of the agentic market uh on XYO XYO 2. So this is very exciting for us and I I we we believe also for the community."}, {"id": "s40", "start": 209.44, "end": 212.8, "text": "And actually we're very excited about this topic like long term."}, {"id": "s41", "start": 212.8, "end": 219.519, "text": "So actually last year here at AI Engineer World's Fair, I was the only one talking about the agentic commerce and agentic economy in general."}, {"id": "s42", "start": 219.519, "end": 227.68, "text": "And really argued that that like in a couple of years, like the most most of the economic economic activity in the world will be done autonomously between agents."}, {"id": "s43", "start": 227.68, "end": 233.28, "text": "And actually it looks like uh uh really it picked up."}, {"id": "s44", "start": 233.28, "end": 242.68, "text": "Uh I think like now everybody understands that agents, in order to get work done or like longer jobs without human intervention, they will actually need to have budget as well, right?"}, {"id": "s45", "start": 242.68, "end": 248.08, "text": "It's It's not like you can do a lot of things in this world without without money."}, {"id": "s46", "start": 248.08, "end": 256.239, "text": "And once agents, you know, can be trusted with money, they will complete like far longer and, you know, more complex tasks than they can do now."}, {"id": "s47", "start": 256.239, "end": 260.68, "text": "So, obviously, a lot of people understand this across the industry."}, {"id": "s48", "start": 260.68, "end": 277.15999999999997, "text": "So, over the past year or so, we saw a lot of new standards or agentic payments protocol coming to the market because, obviously, every player in finance or or payments is very excited about this opportunity because everybody wants to get a part of this of this like huge future"}, {"id": "s49", "start": 277.15999999999997, "end": 281.44, "text": "agentic economy and and transaction volume."}, {"id": "s50", "start": 281.44, "end": 283.8, "text": "So, first was L402."}, {"id": "s51", "start": 283.8, "end": 286.6, "text": "It was like in mid 2020."}, {"id": "s52", "start": 286.6, "end": 300.44, "text": "But then, MasterCard Agent Pay, we have X242 like Coinbase in my last year, KY Pay from Skyfire with Visa, API 2 by Google, ACP by OpenAI and Stripe, Tab by Visa,"}, {"id": "s53", "start": 300.44, "end": 312.24, "text": "UCP by Google and Shopify, ACTP by Alipay, MPP by Stripe and Tempol, AMP by Alipay, Apple by UnionPay, APP by OKX, and finally, Agent Pay for Machines by MasterCard."}, {"id": "s54", "start": 312.24, "end": 318.8, "text": "You can see this is really becoming a heated battleground and for the future of the agentic commerce."}, {"id": "s55", "start": 318.8, "end": 318.988, "text": "And"}, {"id": "s56", "start": 318.988, "end": 320.56, "text": "[snorts]"}, {"id": "s57", "start": 320.56, "end": 324.48, "text": "it's really hard to sort of keep track of all the standards and all the technologies."}, {"id": "s58", "start": 324.48, "end": 325.96, "text": "We're trying to."}, {"id": "s59", "start": 325.96, "end": 335.32, "text": "But, I would say for crypto world, actually, Swix asked all the speakers not to use sloppy AI-generated images in presentations, but I couldn't resist myself here."}, {"id": "s60", "start": 335.32, "end": 346.15999999999997, "text": "Um I think for crypto world, like the agentic commerce has been like super exciting news like because finally, there is like really solid use case for crypto except for like trading trading and gambling,"}, {"id": "s61", "start": 346.15999999999997, "end": 351.48, "text": "buying illegal substances on marketplaces and hiding money away from your spouses, right?"}, {"id": "s62", "start": 351.48, "end": 359.24, "text": "So, finally, agentic commerce really brings the like long-sought like use case for crypto that that I actually think is is pretty solid."}, {"id": "s63", "start": 359.24, "end": 360.96, "text": "And I'm not like a crypto bro myself."}, {"id": "s64", "start": 360.96, "end": 362.68, "text": "I I'm not holding anything."}, {"id": "s65", "start": 362.68, "end": 365.8, "text": "Actually, I was fairly skeptical to crypto all the time."}, {"id": "s66", "start": 365.8, "end": 371.6, "text": "But I feel that crypto is really well suited for agentic commerce or agentic uh payments."}, {"id": "s67", "start": 371.6, "end": 371.96, "text": "Why?"}, {"id": "s68", "start": 371.96, "end": 377.72, "text": "Because the traditional payment methods uh designed for people are super expensive, right?"}, {"id": "s69", "start": 377.72, "end": 384.52, "text": "And you know, uh like credit cards, PayPal, or you know, ACH and bank debit, they cannot be used for microtransactions."}, {"id": "s70", "start": 384.52, "end": 388.76, "text": "They are just very ineffective uh as we saw in previous presentation as well."}, {"id": "s71", "start": 388.76, "end": 391.44, "text": "So, but there's another problem."}, {"id": "s72", "start": 391.44, "end": 392.56, "text": "There are buyer disputes."}, {"id": "s73", "start": 392.56, "end": 403.12, "text": "Like anybody who's selling things online, you know that uh there are some people who sort of like buy certain services from your website and then dispute the payment and ask for refund, you know, or"}, {"id": "s74", "start": 403.12, "end": 405.8, "text": "or dispute it through their bank and you have to pay for that."}, {"id": "s75", "start": 405.8, "end": 418.56, "text": "Like in like traditional like well, human economy, there are some trust signals you can you you can do with the credit credit cards, you know, uh like Stripe and and others have different services to prevent fraud and so on."}, {"id": "s76", "start": 418.56, "end": 422.72, "text": "But in agentic interaction, like you really have no idea who the agent is."}, {"id": "s77", "start": 422.72, "end": 424.32, "text": "Like there's no agent identity."}, {"id": "s78", "start": 424.32, "end": 429.36, "text": "I mean, there are some standards being developed, but it's really not clear uh who are you transacting with."}, {"id": "s79", "start": 429.36, "end": 432.68, "text": "So, you just can't allow them to dispute the payments."}, {"id": "s80", "start": 432.68, "end": 437.52, "text": "You really need it it needs to be a one-way transaction and it needs to be like safe for you."}, {"id": "s81", "start": 437.52, "end": 437.919, "text": "Right?"}, {"id": "s82", "start": 437.919, "end": 441.56, "text": "So, I think uh crypto is is is a super position for that."}, {"id": "s83", "start": 441.56, "end": 453.2, "text": "But also, there's important part uh crypto, if done well, is like truly decentralized blockchain where where no company has like majority of of, you know, of the of the of the of the vote in the network,"}, {"id": "s84", "start": 453.2, "end": 466.52, "text": "it can be really decentralized and it can be like a public standard, you know, not owned by a single company who, for example, like Visa or MasterCard, sort of would abuse their dominant power, you know, to to extract fees from the from the from the system."}, {"id": "s85", "start": 466.52, "end": 477.08, "text": "So, I am I'm very very bullish on crypto in this in this space and uh there are basically like currently two largest uh crypto payment uh providers for any payments."}, {"id": "s86", "start": 477.08, "end": 482.84, "text": "One is XRO2 from from Coinbase and second was in this MPP, machine payments protocol from Stripe."}, {"id": "s87", "start": 482.84, "end": 491.76, "text": "Looking at the stats uh just yesterday, uh XRO2 is like 20 times larger in the number of transactions and the the the the volume."}, {"id": "s88", "start": 491.76, "end": 497.84, "text": "Uh so, obviously, we went first with implementation of XRO2, but we added in MPP in the process as well."}, {"id": "s89", "start": 497.84, "end": 500.72, "text": "And today, I'm going to share like a bit of our experience."}, {"id": "s90", "start": 500.72, "end": 502.8, "text": "This was also presented in the slide before."}, {"id": "s91", "start": 502.8, "end": 512.44, "text": "Uh XRO2 builds on the uh status code introduced like more like almost 30 years ago in the original HTTP specification uh called 402 payment required."}, {"id": "s92", "start": 512.44, "end": 516.88, "text": "So, this status code was waiting for 30 years patiently for someone to pick it up."}, {"id": "s93", "start": 516.88, "end": 523.28, "text": "And obviously, Coinbase took that opportunity because obviously, it's great for marketing, you know, we're finally make uh internet money work."}, {"id": "s94", "start": 523.28, "end": 524.8, "text": "It's awesome."}, {"id": "s95", "start": 524.8, "end": 525.56, "text": "So, how it works?"}, {"id": "s96", "start": 525.56, "end": 528.32, "text": "I'll just go quickly because we saw it in the last presentation as well."}, {"id": "s97", "start": 528.32, "end": 532.12, "text": "So, first, the client initiates like calls server with some API request."}, {"id": "s98", "start": 532.12, "end": 534.6, "text": "The server responds and actually, this is important part."}, {"id": "s99", "start": 534.6, "end": 538.44, "text": "Specification enforces the server to respond 402 payment required."}, {"id": "s100", "start": 538.44, "end": 539.44, "text": "There is no other way to do that."}, {"id": "s101", "start": 539.44, "end": 542.16, "text": "It it needs to use the 402."}, {"id": "s102", "start": 542.28, "end": 550.4, "text": "Then, you know, the client creates a signature uh by basically withdrawing money from the wallet uh or you know, allocating the budget from from from the wallet."}, {"id": "s103", "start": 550.4, "end": 553.44, "text": "Sends uh the signature to the to the server."}, {"id": "s104", "start": 553.44, "end": 560.08, "text": "Oh, the server verifies with a facilitator, which can be like Coinbase, for example, whether the transaction is correct."}, {"id": "s105", "start": 560.08, "end": 563.4, "text": "It gets uh confirmation that the transaction is is right."}, {"id": "s106", "start": 563.4, "end": 566.2, "text": "And then, it's supposed to do the work, right?"}, {"id": "s107", "start": 566.2, "end": 568.08, "text": "But there is a problem there."}, {"id": "s108", "start": 568.08, "end": 570.88, "text": "I'll get to that uh in a second."}, {"id": "s109", "start": 570.88, "end": 581.2, "text": "And after the work is done, uh you send a transaction you send a request to the facilitator to settle, which means like, you know, physically transfer the money to to your own wallet."}, {"id": "s110", "start": 581.2, "end": 587.44, "text": "And then facilitator performs operation on the blockchain, transaction is confirmed, everything is settled, all good."}, {"id": "s111", "start": 587.44, "end": 589.72, "text": "But there is a problem here."}, {"id": "s112", "start": 589.72, "end": 599.76, "text": "In this moment, like until until the transaction is is actually submitted to the blockchain, the buyer can use the same wallet and same money to other transaction."}, {"id": "s113", "start": 599.76, "end": 603.36, "text": "Basically, there is like nothing preventing the the client from double spending."}, {"id": "s114", "start": 603.36, "end": 614.12, "text": "So, you know, uh it can just create like 1,000 signatures like that, send it to 1,000 requests, and then, you know, like um maybe it will not get the result,"}, {"id": "s115", "start": 614.12, "end": 620.8, "text": "but let's say if it's like a simple API call, you know, where there is like a like zero marginal cost for you as a provider, you can do it."}, {"id": "s116", "start": 620.8, "end": 624.0, "text": "You can do the work, you know, before uh you settle."}, {"id": "s117", "start": 624.0, "end": 631.44, "text": "But imagine there is like some non-trivial work, or maybe you have to pay external service, and then you realize, \"Oh, the money is gone, right?\""}, {"id": "s118", "start": 631.44, "end": 635.6, "text": "Uh the the the client skipped out on the bill, which is not great."}, {"id": "s119", "start": 635.6, "end": 638.0, "text": "So, there is a work around that."}, {"id": "s120", "start": 638.0, "end": 641.8389999999999, "text": "You can actually uh just do the work after the transaction is settled."}, {"id": "s121", "start": 641.8389999999999, "end": 648.12, "text": "You just need to make sure you actually get the work done, you don't fail, and so on, because then the clients would be pretty angry, I guess."}, {"id": "s122", "start": 648.12, "end": 654.04, "text": "But there is a work around for this, and then you send like 200 OK and payment response, all good."}, {"id": "s123", "start": 654.04, "end": 657.16, "text": "So, there is a problem though."}, {"id": "s124", "start": 657.16, "end": 664.839, "text": "Like um as I showed before, like uh the standard requires HTTP 402 uh as a first response from the server."}, {"id": "s125", "start": 664.839, "end": 668.92, "text": "But MCP Alt requires HTTP 401."}, {"id": "s126", "start": 668.92, "end": 679.12, "text": "So, there are like two conflicts in the standards, and you know, each of them are actually enforcing it, and you cannot like sort of like, you know, return two error codes or two status codes at the same time."}, {"id": "s127", "start": 679.12, "end": 681.72, "text": "So, how do you companies resolve that?"}, {"id": "s128", "start": 681.72, "end": 690.24, "text": "Well, quite often they create a dedicated like hostname host uh like let's say x402.alchema.com to serve just the agentic payments gateway."}, {"id": "s129", "start": 690.24, "end": 702.44, "text": "So, they implement basically a new API host just to serve the the HTTP payments and then they have like Sorry, mcp.alchemy.com and maybe mpp.alchemy.com, right?"}, {"id": "s130", "start": 702.44, "end": 703.8, "text": "But it sounds like anti-pattern."}, {"id": "s131", "start": 703.8, "end": 709.44, "text": "Why would you have to duplicate like your API host for different payment providers?"}, {"id": "s132", "start": 709.44, "end": 713.12, "text": "It's like imagine like you had to like amazon.com for different like credit cards."}, {"id": "s133", "start": 713.12, "end": 714.2, "text": "You had like 20 different Amazons."}, {"id": "s134", "start": 714.2, "end": 715.12, "text": "Like it doesn't make sense, right?"}, {"id": "s135", "start": 715.12, "end": 718.24, "text": "So So, I think it is like one of the weaknesses."}, {"id": "s136", "start": 718.24, "end": 727.96, "text": "It's like I I understand like using HTTP 402 is great for marketing, but I think there should be in protocol some way to circumvent that and use use just purely headers, you know?"}, {"id": "s137", "start": 727.96, "end": 734.76, "text": "So for example, the payment payment required header without the the the status code."}, {"id": "s138", "start": 734.96, "end": 743.04, "text": "And then originally when X-Request-ID was created, it was designed for like fixed payments."}, {"id": "s139", "start": 743.04, "end": 750.24, "text": "Uh The the first payment scheme they introduced was called exact and it's like for simple API calls."}, {"id": "s140", "start": 750.24, "end": 756.04, "text": "Like there's like a fixed fee per transaction, fixed fee per per call, which is great for I don't know simple APIs."}, {"id": "s141", "start": 756.04, "end": 759.16, "text": "But unfortunately, Apify actors are tools on the marketplace."}, {"id": "s142", "start": 759.16, "end": 766.68, "text": "They typically perform bad jobs and you know, they can run for, you know, a few seconds, but they can also run for a few hours and consume a lot of resources"}, {"id": "s143", "start": 766.68, "end": 767.4, "text": "on the way."}, {"id": "s144", "start": 767.4, "end": 772.0, "text": "They are like typically like built as-you-go kind of like meter billing."}, {"id": "s145", "start": 772.0, "end": 773.0, "text": "So how to do that?"}, {"id": "s146", "start": 773.0, "end": 775.0, "text": "Like how to put this on X-Request-ID 2?"}, {"id": "s147", "start": 775.0, "end": 780.2, "text": "So in May 2025, Coinbase introduced X-Request-ID 2 with exact payment scheme."}, {"id": "s148", "start": 780.2, "end": 790.0, "text": "In December 2025, they announced the version two of the protocol, which was promising the up to payments payment scheme to kind of fix this problem of like meter billing."}, {"id": "s149", "start": 790.0, "end": 795.64, "text": "But it it took actually another like half a year almost to release the the up to finally."}, {"id": "s150", "start": 795.64, "end": 797.64, "text": "It was just like two or three months ago."}, {"id": "s151", "start": 797.64, "end": 798.8389999999999, "text": "So we were super excited about that."}, {"id": "s152", "start": 798.8389999999999, "end": 804.04, "text": "We were like finally we can make this work for our services."}, {"id": "s153", "start": 804.04, "end": 810.36, "text": "But then we realized actually the same double spending problem which is on on on exact is also with with up to."}, {"id": "s154", "start": 810.36, "end": 819.44, "text": "I mean, up to it was just a small sort of like improvement to the protocol where when you, you know, call the tool, you say, \"Oh, my maximum is $5.\""}, {"id": "s155", "start": 819.44, "end": 822.84, "text": "And then the the the server can charge anything up to $5."}, {"id": "s156", "start": 822.84, "end": 824.48, "text": "But it doesn't prevent the double-spending problem."}, {"id": "s157", "start": 824.48, "end": 826.44, "text": "So, basically, we are sort of stuck again."}, {"id": "s158", "start": 826.44, "end": 831.4, "text": "So, you know, we have to go back to the drawing boards and figure like how to do that."}, {"id": "s159", "start": 831.4, "end": 840.64, "text": "And so, one way we we did it was we just use exact payment scheme to kind of like fixed uh like charge a fixed payment."}, {"id": "s160", "start": 840.64, "end": 850.28, "text": "And then after the the the the job is done, we we would like refund the the the wallet with the with the leftover money, basically, the money that that wasn't spent."}, {"id": "s161", "start": 850.28, "end": 851.56, "text": "I mean, that worked."}, {"id": "s162", "start": 851.56, "end": 855.24, "text": "But uh so, you charge, you do the work, you refund the remainder."}, {"id": "s163", "start": 855.24, "end": 858.12, "text": "But that means like there's suddenly like two blockchain transactions."}, {"id": "s164", "start": 858.12, "end": 862.96, "text": "That means like uh there's a time, you know, to to settle those transactions."}, {"id": "s165", "start": 862.96, "end": 865.8, "text": "There might be like some fees associated with that and so on."}, {"id": "s166", "start": 865.8, "end": 872.08, "text": "And also, the clients will need to trust the server to kind of like, \"Hey, I give you the money, but you give it to me back, right?\""}, {"id": "s167", "start": 872.08, "end": 874.28, "text": "But I think that that that's that's a minor issue."}, {"id": "s168", "start": 874.28, "end": 875.96, "text": "But it just feels somehow clunky."}, {"id": "s169", "start": 875.96, "end": 878.44, "text": "Like, why would we need to do these workarounds, you know?"}, {"id": "s170", "start": 878.44, "end": 881.68, "text": "This protocol should support these things out of the box."}, {"id": "s171", "start": 881.68, "end": 888.12, "text": "So, just 2 months ago, uh Coinbase introduced like new payment scheme uh which is called batch settlement, which looks very promising."}, {"id": "s172", "start": 888.12, "end": 890.76, "text": "We haven't implemented it yet, so we'll report soon on that."}, {"id": "s173", "start": 890.76, "end": 895.12, "text": "But basically, just quickly, it works like So, first, the clients like deposit some money."}, {"id": "s174", "start": 895.12, "end": 901.64, "text": "So, basically, it's actually like like real transaction on blockchain using some uh Ethereum virtual machine black magic."}, {"id": "s175", "start": 901.64, "end": 904.28, "text": "Basically, uh the money is put in the escrow."}, {"id": "s176", "start": 904.28, "end": 908.24, "text": "And then the the client gets back a voucher like from the server."}, {"id": "s177", "start": 908.24, "end": 915.48, "text": "Say, \"Hey, here is some cryptographic voucher, and you can use it to sign like microtransaction as part of this batch.\""}, {"id": "s178", "start": 915.48, "end": 926.0, "text": "And then like the client sends sends requests, for example, like API calls or, you know, for like individual tokens, whatever, and uh use this like passes this voucher to"}, {"id": "s179", "start": 926.0, "end": 927.88, "text": "sign the those like a micro payments."}, {"id": "s180", "start": 927.88, "end": 929.84, "text": "But this transactions are the basically off-chain."}, {"id": "s181", "start": 929.84, "end": 938.44, "text": "They are just like sort of like cryptographically guaranteed locally, but you don't need to like write this like to the to the to the blockchain, which again is inefficient, slow,"}, {"id": "s182", "start": 938.44, "end": 940.48, "text": "you know, uh expensive."}, {"id": "s183", "start": 940.48, "end": 946.84, "text": "And then at some point, you're like, \"Hey, I I I accumulated a lot of these like micro transactions, so I just like settle them in batch.\""}, {"id": "s184", "start": 946.84, "end": 949.68, "text": "And then like you basically perform the transaction on blockchain."}, {"id": "s185", "start": 949.68, "end": 956.2, "text": "And then you can do this a couple of times and eventually refund the rest of the money like sort of like release the escrow, right?"}, {"id": "s186", "start": 956.2, "end": 959.04, "text": "So actually this looks really cool, very exciting."}, {"id": "s187", "start": 959.04, "end": 963.48, "text": "We'll we're currently working on implementing it now, so we'll see."}, {"id": "s188", "start": 963.48, "end": 966.44, "text": "But so how did we resolve like all this to make it work, right?"}, {"id": "s189", "start": 966.44, "end": 972.16, "text": "So we didn't really want to create like new new endpoints for different payment services."}, {"id": "s190", "start": 972.16, "end": 975.64, "text": "We didn't want to like the like hack the variable usage, you know, to our services."}, {"id": "s191", "start": 975.64, "end": 982.6, "text": "And also, we really don't want to like tweak too much our API because we have like tens of thousands of customers depending on that API."}, {"id": "s192", "start": 982.6, "end": 990.08, "text": "So we just can't like sort of like, you know, do whatever like new agentic payment standard is out there, just implement it right away."}, {"id": "s193", "start": 990.08, "end": 1000.12, "text": "So so kind of to fix these problems, let me introduce you let me introduce our newest service on Appify, which is called agi.appify.com."}, {"id": "s194", "start": 1000.12, "end": 1004.12, "text": "And AGI is not what you mean it is."}, {"id": "s195", "start": 1004.12, "end": 1006.68, "text": "It's actually it stands for agent general interface."}, {"id": "s196", "start": 1006.68, "end": 1014.76, "text": "So instead of like application programming interface, we have agent general interface that can change anytime but because it's used by agents, so they're flexible, right?"}, {"id": "s197", "start": 1014.76, "end": 1020.12, "text": "And on AGI, it's just a simple website with like one markdown document."}, {"id": "s198", "start": 1020.12, "end": 1024.079, "text": "It's not designed for people, so it kind of looks ugly, but it's okay."}, {"id": "s199", "start": 1024.079, "end": 1032.48, "text": "And there's instructions for agents like, \"Hey, how can you actually buy things on Appify yourself through Xapo 2, MPP?\""}, {"id": "s200", "start": 1032.48, "end": 1038.64, "text": "We can iterate quickly on this on this on this website or on this service because, you know, agents can pick up new version."}, {"id": "s201", "start": 1038.64, "end": 1045.439, "text": "It's not like fixed like API needs to be basically, you know, backwards compatible all the time."}, {"id": "s202", "start": 1045.439, "end": 1054.32, "text": "And the way it works is like the agent comes to agent.apify.com gets basically can buy a prepaid token."}, {"id": "s203", "start": 1054.32, "end": 1056.52, "text": "So basically they say like, \"Hey, here's $5."}, {"id": "s204", "start": 1056.52, "end": 1058.72, "text": "Give me Give me a Apify token.\""}, {"id": "s205", "start": 1058.72, "end": 1067.72, "text": "We give them like Apify token back and then they can use the Apify token through our normal API or through MCP to run our jobs and services, you know,"}, {"id": "s206", "start": 1067.72, "end": 1068.8, "text": "normally."}, {"id": "s207", "start": 1068.8, "end": 1070.64, "text": "And it it works pretty well."}, {"id": "s208", "start": 1070.64, "end": 1072.0, "text": "There is like no skill required."}, {"id": "s209", "start": 1072.0, "end": 1074.76, "text": "You just like point your agent to agent.apify.com."}, {"id": "s210", "start": 1074.76, "end": 1076.32, "text": "It picks it up."}, {"id": "s211", "start": 1076.32, "end": 1079.6, "text": "And I have here like a short demo."}, {"id": "s212", "start": 1079.6, "end": 1080.68, "text": "We're running out of time."}, {"id": "s213", "start": 1080.68, "end": 1083.08, "text": "So this is just like example how it works like."}, {"id": "s214", "start": 1083.08, "end": 1097.6, "text": "Actually, the X road ecosystem is like really early so that even, you know, we have to build our own like local wallet tool which you can like create like local like cryptographic key to charge, you know, with money and show QR code."}, {"id": "s215", "start": 1097.6, "end": 1099.64, "text": "Like I mean these things are still not not not not existing."}, {"id": "s216", "start": 1099.64, "end": 1102.44, "text": "I mean the ecosystem is like super super early."}, {"id": "s217", "start": 1102.44, "end": 1105.2, "text": "So I have local wallet with $10."}, {"id": "s218", "start": 1105.2, "end": 1110.84, "text": "Then I call like IGI.apify.com allocate like token with $1."}, {"id": "s219", "start": 1110.84, "end": 1113.4, "text": "I get back 402 payment required."}, {"id": "s220", "start": 1113.4, "end": 1117.64, "text": "So there is like this like super long like payment required signature."}, {"id": "s221", "start": 1117.64, "end": 1132.16, "text": "I use Apify I use the I use our MCPC just like MCPC client to sign the payment and then I can send the Oh."}, {"id": "s222", "start": 1132.16, "end": 1134.56, "text": "Oh oh oh."}, {"id": "s223", "start": 1134.6, "end": 1138.08, "text": "This demo didn't work as expected."}, {"id": "s224", "start": 1138.16, "end": 1140.32, "text": "Here we go."}, {"id": "s225", "start": 1141.6, "end": 1143.6, "text": "Mhm."}, {"id": "s226", "start": 1146.24, "end": 1148.883, "text": "Well, anyway, I have 1 minute left."}, {"id": "s227", "start": 1148.883, "end": 1150.0, "text": "[laughter]"}, {"id": "s228", "start": 1150.0, "end": 1151.0, "text": "Demo more come later."}, {"id": "s229", "start": 1151.0, "end": 1152.36, "text": "Sorry about that."}, {"id": "s230", "start": 1152.36, "end": 1165.0, "text": "So, to conclude my presentation, like really like try it out and like try to build try try to use it like actually I try I tried to use it for the first time like a couple of weeks ago because I always thought that oh my god it's somehow complicated, you know, there is a lot of this like"}, {"id": "s231", "start": 1165.0, "end": 1168.08, "text": "weird crypto lingo, you know, like I have I like I don't know what it what it means."}, {"id": "s232", "start": 1168.08, "end": 1171.16, "text": "But actually it's really really simple to to play with it."}, {"id": "s233", "start": 1171.16, "end": 1174.6, "text": "You can you know, get to get up and running in like 10 minutes."}, {"id": "s234", "start": 1174.6, "end": 1176.92, "text": "And uh it's still super early."}, {"id": "s235", "start": 1176.92, "end": 1180.32, "text": "Uh I think there's like $1 million transaction volume like per month."}, {"id": "s236", "start": 1180.32, "end": 1181.24, "text": "Like this is nothing, right?"}, {"id": "s237", "start": 1181.24, "end": 1182.68, "text": "Like the economy is much much bigger."}, {"id": "s238", "start": 1182.68, "end": 1184.8, "text": "But I think it will sooner ramp up."}, {"id": "s239", "start": 1184.8, "end": 1195.24, "text": "And I think once uh really this like era of like uh token subsidies will end, I mean when the when you really will have to pay for the tokens, you know, that your agents consume,"}, {"id": "s240", "start": 1195.24, "end": 1204.36, "text": "I think suddenly this decision whether to build or buy will, you know, make more economic sense actually to buy external, you know, services for a lot of things rather than build from scratch."}, {"id": "s241", "start": 1204.36, "end": 1214.96, "text": "And I think at this time really the agentic payments will explode and uh very soon uh um uh the agentic commerce might uh overtake the normal commerce."}, {"id": "s242", "start": 1214.96, "end": 1220.52, "text": "Thanks a lot for your attention and please come uh to join us uh in our booth."}, {"id": "s243", "start": 1220.52, "end": 1229.12, "text": "And actually I have another talk coming up in 2 hours uh about MCP and CLI, so you can check that one as well in Expo stage two."}, {"id": "s244", "start": 1229.16, "end": 1229.449, "text": "Thank you."}, {"id": "s245", "start": 1229.449, "end": 1231.449, "text": "[applause]"}]}, {"id": "hD9-V56FNRI", "title": "AI Agents Are Just Distributed Systems Now — Salman Munaf, TikTok", "channel": "AI Engineer", "duration": 1188, "upload_date": null, "url": "https://www.youtube.com/watch?v=hD9-V56FNRI", "api": "/api/talks/hD9-V56FNRI.json", "summary_url": "/#hD9-V56FNRI", "transcript": {"html": "/transcripts/hD9-V56FNRI.html", "txt": "/transcripts/hD9-V56FNRI.txt", "vtt": "/transcripts/hD9-V56FNRI.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.559, "end": 13.44, "text": "Hello everyone."}, {"id": "s3", "start": 13.44, "end": 14.639, "text": "Good good afternoon."}, {"id": "s4", "start": 14.639, "end": 20.4, "text": "Uh today uh I will be talking about AI agents are also distributed systems."}, {"id": "s5", "start": 20.4, "end": 25.84, "text": "So as uh the models have started to become more complex."}, {"id": "s6", "start": 25.84, "end": 39.92, "text": "Initially the uh LLM models were just text in text out without performing any actions and uh the effect that they can produce was just a wrong model output."}, {"id": "s7", "start": 39.92, "end": 56.16, "text": "However, with now the capability of agent the agent the rise in agent capabilities where the systems can now talk to external systems uh it has turned into a distributed systems and it is important"}, {"id": "s8", "start": 56.16, "end": 62.239, "text": "to incorporate distributed systems thinking and concepts when building AI agents."}, {"id": "s9", "start": 62.239, "end": 67.68, "text": "So I will be going over uh that uh in this talk."}, {"id": "s10", "start": 67.68, "end": 74.64, "text": "So you guys might have uh heard about incidents being caused by a AI agents."}, {"id": "s11", "start": 74.64, "end": 88.56, "text": "Uh for instance, the replicate AI agent deleting a production incident production database or Air Canada chatbot basically making an uh an incorrect refund."}, {"id": "s12", "start": 88.56, "end": 101.2, "text": "And both of these uh incidents or a lot of these incidents could have been prevented uh by good systems thinking when building these uh AI agents."}, {"id": "s13", "start": 101.2, "end": 113.03999999999999, "text": "So for instance for the replet a uh uh uh incident we could have good uh uh we could have robust backups."}, {"id": "s14", "start": 113.03999999999999, "end": 114.399, "text": "We could have scoped authority."}, {"id": "s15", "start": 114.399, "end": 120.719, "text": "we should we shouldn't ideally have uh allow AI agents to delete production databases."}, {"id": "s16", "start": 120.719, "end": 137.92, "text": "Uh moreover for Air Canada chatbot it would have been uh a good idea to have uh authoritative source of truth retrieval so that it's not making uh uh decisions based on stale or incorrect policies."}, {"id": "s17", "start": 139.12, "end": 143.599, "text": "So let's uh go over the transition from chatbot to production system."}, {"id": "s18", "start": 143.599, "end": 158.8, "text": "Uh so uh initially when we were in the uh in the uh age where LLMs were just chat bots uh we had prompt in and we were outputting text"}, {"id": "s19", "start": 158.8, "end": 164.16, "text": "there were no side effects the agent was not interacting with any other system."}, {"id": "s20", "start": 164.16, "end": 181.92, "text": "However, uh due to agentic uh in the agentic era in the agentic revolution, now those agents uh by ingesting prompt can uh run an agent loop, call external services, call tools and also perform state changes."}, {"id": "s21", "start": 181.92, "end": 188.8, "text": "The architectural boundary now has moved uh way beyond an LLM model."}, {"id": "s22", "start": 188.8, "end": 193.2, "text": "And the difference is that it can now cause side effects in the outside world."}, {"id": "s23", "start": 193.2, "end": 205.519, "text": "So when basic when building AI agents, it is important to recognize the external systems that it is talking to, [clears throat] the states that uh it is interacting with"}, {"id": "s24", "start": 205.519, "end": 211.2, "text": "and what credentials does it have and the actions that it can perform."}, {"id": "s25", "start": 212.799, "end": 222.56, "text": "uh I ideally like to think about it as uh uh AI agents as basically having a probabilistic coordinator."}, {"id": "s26", "start": 222.56, "end": 228.879, "text": "In distributed systems as well, we used to have services which were coordinating uh multi-step workflows."}, {"id": "s27", "start": 228.879, "end": 231.44, "text": "However, they were deterministic in nature."}, {"id": "s28", "start": 231.44, "end": 236.959, "text": "But in the case of AI agent, the AI acts as a probabilistic coordinator."}, {"id": "s29", "start": 236.959, "end": 241.76, "text": "The amount of action, the kind of actions that it can take can vary quite a lot."}, {"id": "s30", "start": 241.76, "end": 258.72, "text": "It is not just a decision tree that uh we typically in traditional systems would have mapped out and those uh actions can have severe consequences uh ba uh if they are not confined"}, {"id": "s31", "start": 258.72, "end": 263.52, "text": "by our determinist by having deterministic controls in place."}, {"id": "s32", "start": 263.52, "end": 279.04, "text": "So it is important to ensure uh that we have deterministic controls in place to ensure that agent or the AI agent is not performing any uh any actions that might be"}, {"id": "s33", "start": 279.04, "end": 282.0, "text": "uh uh problematic."}, {"id": "s34", "start": 282.72, "end": 291.68, "text": "So uh let's uh discuss the how a typical agent loop might look like."}, {"id": "s35", "start": 291.68, "end": 296.4, "text": "So at first it might uh do some planning."}, {"id": "s36", "start": 296.4, "end": 312.639, "text": "Then based on that plan it will it will perform an action and it will then observe the results of those actions and uh it might persist that into some d some data store and then decide what to do next."}, {"id": "s37", "start": 312.639, "end": 316.639, "text": "Each step in this loop is basically crossing a a boundary."}, {"id": "s38", "start": 316.639, "end": 322.16, "text": "During planning, it can interact with data sources to retrieve some data."}, {"id": "s39", "start": 322.16, "end": 330.639, "text": "Uh during action, it can call external APIs, tools, uh databases and perform any actions."}, {"id": "s40", "start": 330.639, "end": 342.8, "text": "During observation phase, it can perform it can get partial results and basically plan or make subsequent actions based on those partial results."}, {"id": "s41", "start": 342.8, "end": 359.28, "text": "It can persist incorrect data or uh and uh when deciding it might also decide to uh perform an incorrect action or uh worse it can also do a retry"}, {"id": "s42", "start": 359.28, "end": 361.039, "text": "storm."}, {"id": "s43", "start": 361.039, "end": 367.84, "text": "So it is very important when building an agent loop to persist every step of the process."}, {"id": "s44", "start": 367.84, "end": 380.8, "text": "Whatever actions the agent is doing, whatever context it is retrieving, it is important to uh persist that so that if anything fails, the agent is able to recognize where it failed and it can perform"}, {"id": "s45", "start": 380.8, "end": 383.039, "text": "uh a reversible action."}, {"id": "s46", "start": 383.039, "end": 385.44, "text": "Uh it can perform undo operations."}, {"id": "s47", "start": 385.44, "end": 391.12, "text": "Similarly, there should be explicit transactions uh identified for each step."}, {"id": "s48", "start": 391.12, "end": 396.479, "text": "So for instance, if an agent is making a call, if it fails, what it should do?"}, {"id": "s49", "start": 396.479, "end": 403.28, "text": "What should be the transaction to compensate for a uh for a irreversible or unsafe operation?"}, {"id": "s50", "start": 403.28, "end": 412.479, "text": "For instance, if an agent makes sends an email to a a wrong email to a customer, what should it do to compensate for that?"}, {"id": "s51", "start": 413.6, "end": 426.56, "text": "So, uh tool calls are just wrappers around uh external external APIs, databases, cues, uh and so on."}, {"id": "s52", "start": 426.56, "end": 441.68, "text": "And uh with uh when calling the when making these remote calls, there are some failures that you incorporate uh such as network delays, timeouts, uh you can make duplicate requests"}, {"id": "s53", "start": 441.68, "end": 446.08, "text": "or worse the server side request uh might succeed."}, {"id": "s54", "start": 446.08, "end": 450.96, "text": "However, the client however the client might be reported an error."}, {"id": "s55", "start": 450.96, "end": 458.479, "text": "We have we have seen uh instances where uh a data by base might have written the data."}, {"id": "s56", "start": 458.479, "end": 472.15999999999997, "text": "However, due to some other errors, the server might have reported uh uh to us the error and uh with humans in the loop we can make we can basically"}, {"id": "s57", "start": 472.15999999999997, "end": 478.4, "text": "perform correct corrective actions based on uh by seeing uh the database and actual source of truth."}, {"id": "s58", "start": 478.4, "end": 484.08, "text": "But in agent's case, we need to ensure that we have uh we have proper guardrails in place."}, {"id": "s59", "start": 484.08, "end": 492.639, "text": "So for instance, an agent calls refund customer uh tool call which basically performs a refund to the customer."}, {"id": "s60", "start": 492.639, "end": 498.4, "text": "The request times out uh that did the refund happen or not?"}, {"id": "s61", "start": 498.4, "end": 502.319, "text": "What will the agent uh infer from that?"}, {"id": "s62", "start": 502.319, "end": 505.199, "text": "Would it retry uh refunding to the customer?"}, {"id": "s63", "start": 505.199, "end": 510.639, "text": "you basically the the timeout does not actually mean that there a failure had occurred."}, {"id": "s64", "start": 510.639, "end": 512.0, "text": "It means unknown."}, {"id": "s65", "start": 512.0, "end": 527.8389999999999, "text": "And it is important to have uh when designing these tools, it is important to have request ids, item potency keys so that when making duplicate requests, they are not causing duplicate side effects."}, {"id": "s66", "start": 527.8389999999999, "end": 539.04, "text": "uh and the system can always do a status lookup like what the previous request was and what was the status of that so that it is not making side effect"}, {"id": "s67", "start": 539.04, "end": 544.399, "text": "it is not making side effects with duplicate a with duplicate requests."}, {"id": "s68", "start": 545.839, "end": 560.72, "text": "So [clears throat] AI agents when they whenever they uh uh whenever they uh they face failures they retry the their first uh action is to perform retries."}, {"id": "s69", "start": 560.72, "end": 565.44, "text": "So it is really important to have item potency baked in."}, {"id": "s70", "start": 565.44, "end": 578.64, "text": "uh it if a same request is coming in to an external API or the tool it should recognize that this is a duplicate request and ensure that no side effects are being take are taking place."}, {"id": "s71", "start": 578.64, "end": 588.16, "text": "Moreover, uh we should also prevent uh AI agents to perform retry storms to external APIs because this can cause cascading failures."}, {"id": "s72", "start": 588.16, "end": 600.48, "text": "uh we we should have max turns budget spend and max parallel calls to prevent uh to uh to ensure that the fan out is not that large."}, {"id": "s73", "start": 600.48, "end": 617.04, "text": "Moreover, we should have exponential back back off in place to ensure that uh the downstream dependencies are not being uh burdened and we should also have compensation uh operations in place for"}, {"id": "s74", "start": 617.04, "end": 623.44, "text": "uh operations that uh that that can have side effects."}, {"id": "s75", "start": 625.279, "end": 643.279, "text": "Uh so uh a lot of uh teams when building AI agents think of AI agent context as just a AI cont the context that uh the AI agent has as"}, {"id": "s76", "start": 643.279, "end": 645.519, "text": "uh as just a context."}, {"id": "s77", "start": 645.519, "end": 659.92, "text": "However, when that context can influence an action, it's a state and that state can become stale that can conflict with the authoritative data or corrupt future actions that the agent might perform."}, {"id": "s78", "start": 659.92, "end": 665.36, "text": "I like to classify it into two different types of uh memory that the agent has."}, {"id": "s79", "start": 665.36, "end": 676.079, "text": "First is the short-term memory which is the jet thread uh that the agent has uh the which is tied to a single execution thread and the second is the long-term memory."}, {"id": "s80", "start": 676.079, "end": 685.279, "text": "It can be project files uh system prompts uh databases that it interacts with the cache layer and so on."}, {"id": "s81", "start": 685.279, "end": 702.16, "text": "It is important to uh to to decide what will be the source of truth when these uh different data sources have conflicting information and we should ideally treat memory as a cache"}, {"id": "s82", "start": 702.16, "end": 708.56, "text": "which uh can be invalidated which can have provenence attached to it."}, {"id": "s83", "start": 708.56, "end": 723.04, "text": "So for instance whenever a data store or a database is updated or the source of truth is updated we in we invalidate the context or the memory that the agent has to ensure that it is not making actions based on the"}, {"id": "s84", "start": 723.04, "end": 726.399, "text": "uh incorrect or stale data."}, {"id": "s85", "start": 728.16, "end": 742.32, "text": "So usually these agents perform multi-step actions and uh the agent can succeed on uh on uh on the first couple of steps and then it fail."}, {"id": "s86", "start": 742.32, "end": 751.2, "text": "Uh it is important to reverse the entire transaction that was performed and these can uh then can cross system boundaries."}, {"id": "s87", "start": 751.2, "end": 761.519, "text": "So for instance, an agent can update an internal ticket uh send an email to a customer and fail to update the CRM."}, {"id": "s88", "start": 761.519, "end": 771.2, "text": "We need to figure out what is the uh correct compensation operation when it when it hits that failure."}, {"id": "s89", "start": 771.279, "end": 782.32, "text": "So for instance uh as I mentioned earlier that uh it improperly uh it improperly sends an incorrect email to the customer."}, {"id": "s90", "start": 782.32, "end": 797.44, "text": "It is important that the compensation operation is defined for the AI agent to ensure that it is sending an uh uh an apology email to the customer or any or or any email or an email that is correcting that mistake."}, {"id": "s91", "start": 799.04, "end": 811.12, "text": "So uh a the AI agent basically runs in a loop and uh whenever uh like it can it can do multiple calls."}, {"id": "s92", "start": 811.12, "end": 819.12, "text": "It can it can have a retry uh retry loop that it can run based uh whenever it fails."}, {"id": "s93", "start": 819.12, "end": 833.12, "text": "So it is important to have uh circuit breakers whenever it is making making external calls uh to ensure that the uh that the that it is not uh burdening the downstream"}, {"id": "s94", "start": 833.12, "end": 834.399, "text": "system."}, {"id": "s95", "start": 834.399, "end": 843.6, "text": "Uh for instance if a downstream is unhealthy there should be system break uh circuit breakers in place that prevents AI agents to call call that dependency."}, {"id": "s96", "start": 843.6, "end": 854.0, "text": "Moreover, it also prevents cascading failures when for instance the downstream dependency is uh unhealthy or uh is saturated."}, {"id": "s97", "start": 854.0, "end": 857.44, "text": "It is also important to assign rate limits and budgets."}, {"id": "s98", "start": 857.44, "end": 867.6, "text": "Uh an agent can uh go over uh can run your cost uh if it's not assigned proper budgets and rate limits."}, {"id": "s99", "start": 867.6, "end": 875.199, "text": "it will uh keep retrying and try try to uh try to solve the problem that if it if it's facing."}, {"id": "s100", "start": 875.199, "end": 886.72, "text": "So it is important that it is uh that we have uh set up max turns, max parallelism, max spend uh to ensure that the model is not uh uh not"}, {"id": "s101", "start": 886.72, "end": 891.76, "text": "uh crossing the uh the budget boundary that we have set."}, {"id": "s102", "start": 892.24, "end": 909.04, "text": "Moreover, uh ideally uh usually whenever we are building AI agents, uh we usually try to give all the permissions that it can have to ensure that it has all that it can perform perform the task that we have."}, {"id": "s103", "start": 909.04, "end": 924.079, "text": "That's the that's the uh first uh uh thing that we have that that's the first step that we take usually that to give the AI agents all the uh cred all the uh privileges"}, {"id": "s104", "start": 924.079, "end": 932.72, "text": "to perform any actions like for instance if it's interacting with the database we just give it all uh the readr access to the entire table."}, {"id": "s105", "start": 932.72, "end": 938.639, "text": "However, uh it is important to give scoped credentials to it."}, {"id": "s106", "start": 938.639, "end": 945.04, "text": "There should be separate read and write permissions and there should be allow list for the tools that it can call."}, {"id": "s107", "start": 945.04, "end": 951.44, "text": "A harmless model can become dangerous when it can perform unsafe operations."}, {"id": "s108", "start": 951.44, "end": 957.6, "text": "Moreover, uh a human approval shouldn't be tied uh to a blanket approval."}, {"id": "s109", "start": 957.6, "end": 964.56, "text": "It should be tied to uh action, timestamp, actor and expiration."}, {"id": "s110", "start": 964.56, "end": 977.6, "text": "So for instance, if a user has given uh an approval to approve a $30 refund, it shouldn't turn into a subsequent approval for $300 refund."}, {"id": "s111", "start": 977.6, "end": 990.48, "text": "It is important that whenever an approval is given, it should be tied to the particular parameters that it was uh asked for."}, {"id": "s112", "start": 991.759, "end": 1002.9590000000001, "text": "So, uh observability is an important requirement when building AI agents because uh and logs are not enough."}, {"id": "s113", "start": 1002.9590000000001, "end": 1011.36, "text": "Teams need to reconstruct when an agent failed, what happened, what information was was it reacting to and why it failed."}, {"id": "s114", "start": 1011.36, "end": 1019.519, "text": "And logs alone are not enough to uh for an agent to uh for teams to determine that."}, {"id": "s115", "start": 1019.519, "end": 1029.76, "text": "It is important to trace the model that was called, the prompt that was uh that was uh given to it and uh also the tool calls that were made"}, {"id": "s116", "start": 1029.76, "end": 1049.839, "text": "uh the request uh that was made, the response from the tool, the errors that it got, the retrieved context, what the agent was uh was the the retrieved information that the agent was reacting to, the rights that it made, and the approvals that it got and so on."}, {"id": "s117", "start": 1051.36, "end": 1060.16, "text": "So uh I would like to uh end with uh the idea that yes model capability matters."}, {"id": "s118", "start": 1060.16, "end": 1068.48, "text": "Having good models uh improves the uh likelihood of it making uh correct operations."}, {"id": "s119", "start": 1068.48, "end": 1070.799, "text": "Smarter models reduce mistakes."}, {"id": "s120", "start": 1070.799, "end": 1075.76, "text": "It uh it uh improves the capability that the model has."}, {"id": "s121", "start": 1075.76, "end": 1082.72, "text": "However, it cannot eliminate network failures, stale data or adversarial input."}, {"id": "s122", "start": 1082.72, "end": 1094.48, "text": "It is important when building this architecture, we also reason about can we bound, observe and recover from actions performed by the AI agent."}, {"id": "s123", "start": 1094.48, "end": 1109.84, "text": "It is important to have tool contracts in place to ensure that uh it is only allowed to make uh operations that it is uh given that it is provided the contract and the contracts are clearly establishing the request and response"}, {"id": "s124", "start": 1109.84, "end": 1118.799, "text": "uh response uh response types uh the schema and all these tools have item potency baked into it."}, {"id": "s125", "start": 1118.799, "end": 1126.4, "text": "so that uh when repeated requests are sent in uh it is not causing unsafe operations to be retried."}, {"id": "s126", "start": 1126.4, "end": 1133.6, "text": "Moreover, there should be source of truth decisions made uh when there are conflict conflicting uh memory states."}, {"id": "s127", "start": 1133.6, "end": 1148.72, "text": "It is important uh for the agent to realize this is the source of data that it should rely on and we should have re retry policies uh like rate limits set in to ensure that the agent is not uh retrying"}, {"id": "s128", "start": 1148.72, "end": 1151.2, "text": "uh ext uh aggressively."}, {"id": "s129", "start": 1151.2, "end": 1155.6, "text": "Moreover, uh permissions should be set up."}, {"id": "s130", "start": 1155.6, "end": 1158.96, "text": "There should be traces and recovery paths."}, {"id": "s131", "start": 1158.96, "end": 1168.4, "text": "So when building AI agents, we should also ask what the system lets it do when it is wrong."}, {"id": "s132", "start": 1168.4, "end": 1170.559, "text": "Thank you."}, {"id": "s133", "start": 1186.218, "end": 1188.218, "text": "[music]"}]}, {"id": "jQDXzEVHMSE", "title": "Building Turbopuffer: Gergely Orosz (@pragmaticengineer ) × Simon Eskildsen (CEO)", "channel": "AI Engineer", "duration": 3390, "upload_date": null, "url": "https://www.youtube.com/watch?v=jQDXzEVHMSE", "api": "/api/talks/jQDXzEVHMSE.json", "summary_url": "/#jQDXzEVHMSE", "transcript": {"html": "/transcripts/jQDXzEVHMSE.html", "txt": "/transcripts/jQDXzEVHMSE.txt", "vtt": "/transcripts/jQDXzEVHMSE.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 24.72, "end": 26.8, "text": "All right."}, {"id": "s3", "start": 26.88, "end": 38.719, "text": "It's great to be here and today with me here I'm I'm Gerge, author of the pragmatic engineer and I'm excited to have a chat with Simon Ericson uh founder"}, {"id": "s4", "start": 38.719, "end": 51.92, "text": "CEO of Turbopuffer a very technical CEO and we're going to have a pretty technical discussion but before we jump into it Simon I wanted to ask where did you fall in love with computers?"}, {"id": "s5", "start": 52.16, "end": 54.399, "text": "um through PowerPoint."}, {"id": "s6", "start": 54.399, "end": 63.84, "text": "PowerPoint you I don't know if any of you know this but in power well you probably know this but in PowerPoint right you can make the the diagrams and stuff when you click them"}, {"id": "s7", "start": 63.84, "end": 78.88, "text": "go to another slide that becomes touring complete real quick right you can sort of you know create very complicated convoluted games and then at some point you know you make it through the Microsoft Office suite and you discover Front Page."}, {"id": "s8", "start": 78.88, "end": 79.84, "text": "Do you remember Front Page?"}, {"id": "s9", "start": 79.84, "end": 80.88, "text": "Yeah, I remember Front Page."}, {"id": "s10", "start": 80.88, "end": 85.84, "text": "It it it was supposed to eliminate the need for all any front-end developers."}, {"id": "s11", "start": 85.84, "end": 86.4, "text": "Exactly."}, {"id": "s12", "start": 86.4, "end": 89.52, "text": "And it it only worked in Internet Explorer."}, {"id": "s13", "start": 89.52, "end": 96.32, "text": "I remember a heartbreak I had one day when someone opened a website I created in Firefox and it just it was it was all over the place."}, {"id": "s14", "start": 96.32, "end": 111.92, "text": "And then one day I accidentally clicked the HTML thing in front page and it just showed all of this stuff that I couldn't make sense of and it just started looking at it and then going online and finding little snippets that you could add in to make the cursor change and all of these different"}, {"id": "s15", "start": 111.92, "end": 115.439, "text": "uh different things and then it just sort of escalated from there."}, {"id": "s16", "start": 115.439, "end": 121.119, "text": "Then you upgrade to Dreamweaver and now you're coding and then you're like well how do you make the pages dynamically?"}, {"id": "s17", "start": 121.119, "end": 129.039, "text": "you learn PHP and then for me I exhausted the internet on Danish language programming advice."}, {"id": "s18", "start": 129.039, "end": 129.599, "text": "Mhm."}, {"id": "s19", "start": 129.599, "end": 139.516, "text": "Um and I was I was around 11 or 12 and so I just you know went and got addicted to World of Warcraft for four years but that gets you really really good at English."}, {"id": "s20", "start": 139.516, "end": 141.12, "text": "[laughter]"}, {"id": "s21", "start": 141.12, "end": 144.0, "text": "So you kind of start hacking get into deeper."}, {"id": "s22", "start": 144.0, "end": 150.07999999999998, "text": "Now the logical step would have been to just you know go to university and learn properly about this stuff."}, {"id": "s23", "start": 150.07999999999998, "end": 153.76, "text": "But that's not what you did did you?"}, {"id": "s24", "start": 153.76, "end": 164.31900000000002, "text": "I mean I just um I I started just I I mean you know then I learned video games then I learned English and then you know this like massive arsenal"}, {"id": "s25", "start": 164.31900000000002, "end": 165.2, "text": "of the web."}, {"id": "s26", "start": 165.2, "end": 172.56, "text": "I now it'd be very interesting because the LLMs would just speak Danish to me and you could just you wouldn't have hit the wall like I did."}, {"id": "s27", "start": 172.56, "end": 174.239, "text": "Um, so that would have been very interesting."}, {"id": "s28", "start": 174.239, "end": 175.76, "text": "Maybe I would have been better at programming."}, {"id": "s29", "start": 175.76, "end": 177.04, "text": "That would have been nice."}, {"id": "s30", "start": 177.04, "end": 178.72, "text": "And then I Yeah."}, {"id": "s31", "start": 178.72, "end": 182.08, "text": "Then I just started picking up jobs and things like that throughout high school."}, {"id": "s32", "start": 182.08, "end": 187.84, "text": "And when I was in high school as well, I got exposed to this thing called the International Olympiad in Informatics."}, {"id": "s33", "start": 187.84, "end": 188.72, "text": "You heard of this thing?"}, {"id": "s34", "start": 188.72, "end": 189.44, "text": "Yeah."}, {"id": "s35", "start": 189.44, "end": 201.68, "text": "Um, and I had a I had an internet friend and she lived in Australia and she was on the Australian team and she told there's probably something for the Danish team as well, but I had never I'd never heard about it before."}, {"id": "s36", "start": 201.68, "end": 211.92000000000002, "text": "And so I found it on some like little mysterious website and then applied and then solved these programming problems that look very different from the HTML and PHP things that I'd solved until"}, {"id": "s37", "start": 211.92000000000002, "end": 214.48, "text": "were like the algorithmicalish programs."}, {"id": "s38", "start": 214.48, "end": 215.04, "text": "Exactly."}, {"id": "s39", "start": 215.04, "end": 222.48, "text": "It's sort of like this is not actually the kind of problem you would see there but I think it illustrates well the kind of problem that you might get right is"}, {"id": "s40", "start": 222.48, "end": 235.12, "text": "you could imagine something like okay here's like n trucks here's m packages the m packages have these dimensions give me which trucks which packages should be in right and then"}, {"id": "s41", "start": 235.12, "end": 243.439, "text": "do something optimal like that's an npmplete problem you can't solve that but you could compete with everyone else in the competition of doing the best thing so it's these kinds of problems right"}, {"id": "s42", "start": 243.439, "end": 244.959, "text": "um and so I started doing that."}, {"id": "s43", "start": 244.959, "end": 250.319, "text": "In high school, I was working um I was working as well um for a startup."}, {"id": "s44", "start": 250.319, "end": 257.04, "text": "Um and then I just Shopify found me while I was still in high school."}, {"id": "s45", "start": 257.04, "end": 260.959, "text": "And and the whole like Shopify found me, was it through your open source contributions?"}, {"id": "s46", "start": 260.959, "end": 263.36, "text": "Was it was it something else?"}, {"id": "s47", "start": 263.36, "end": 277.44, "text": "It was because I had written an article where I had I had I dropped my iPhone and it was you know the iPhones are a lot like there used to be a time right where you drop your iPhone and you just knew it was over for the screen."}, {"id": "s48", "start": 277.44, "end": 284.08, "text": "It doesn't really happen as much anymore like the screens have gotten a lot better but back then it was like yeah one drop and it was dead and it just couldn't use it anymore."}, {"id": "s49", "start": 284.08, "end": 287.04, "text": "And so I went back to one of these old Nokia brick phones."}, {"id": "s50", "start": 287.04, "end": 288.96, "text": "And this is back in 2013."}, {"id": "s51", "start": 288.96, "end": 293.04, "text": "And people hadn't really realized all the pernicious effects of smartphones at the time."}, {"id": "s52", "start": 293.04, "end": 299.919, "text": "And so I wrote this article about how oh my god I'm like calling people and I have my sense of direction back."}, {"id": "s53", "start": 299.919, "end": 301.52, "text": "Um and I wrote an article about it."}, {"id": "s54", "start": 301.52, "end": 307.68, "text": "And this article it went on hacker news briefly and it um New York Times decided to feature it."}, {"id": "s55", "start": 307.68, "end": 308.479, "text": "No way."}, {"id": "s56", "start": 308.479, "end": 308.88, "text": "Yeah."}, {"id": "s57", "start": 308.88, "end": 323.44, "text": "And so a lot of traffic was driven to it and then some astute Shopify recruiter put it all together and um and I had a call with them and then I don't think they realized that I was still in high school but"}, {"id": "s58", "start": 323.44, "end": 325.199, "text": "um but I had a great call with them."}, {"id": "s59", "start": 325.199, "end": 328.16, "text": "They invited me on site to Ottawa, Canada."}, {"id": "s60", "start": 328.16, "end": 330.56, "text": "Um I had no idea what Ottawa Canada is."}, {"id": "s61", "start": 330.56, "end": 333.44, "text": "I think the email says something like what's an Ottawa?"}, {"id": "s62", "start": 333.44, "end": 334.88, "text": "I had no idea."}, {"id": "s63", "start": 334.88, "end": 342.479, "text": "Um, and so I went there and it was just like walked into the building and it was just a just felt right."}, {"id": "s64", "start": 342.479, "end": 351.36, "text": "Um, and so I I I interviewed with them and then said, \"Well, I got to finish high school first and then uh and then I moved to Canada uh to to to work at Shopify.\""}, {"id": "s65", "start": 351.36, "end": 351.6, "text": "Yeah."}, {"id": "s66", "start": 351.6, "end": 352.88, "text": "In 2013."}, {"id": "s67", "start": 352.88, "end": 353.12, "text": "Yeah."}, {"id": "s68", "start": 353.12, "end": 359.44, "text": "I think that's that's a like legit excuse for like not even worrying about college and and university."}, {"id": "s69", "start": 359.44, "end": 361.039, "text": "But I did it crossed your mind."}, {"id": "s70", "start": 361.039, "end": 361.52, "text": "It did."}, {"id": "s71", "start": 361.52, "end": 364.319, "text": "I thought I was going I thought I was doing a gap year."}, {"id": "s72", "start": 364.319, "end": 379.919, "text": "I thought I was like, \"Okay, I'm gonna go work at Shopify for a year and then I'll probably go back and do but I would just I was very insecure at the time about the fact that I hadn't studied computer science and my only exposure had been all the II competitions which is a pretty good crash course"}, {"id": "s73", "start": 379.919, "end": 388.0, "text": "in a lot of computer science and if nothing else it had really taught me that you can just sit down and read a paper and just figure it out if you spend enough time on it.\""}, {"id": "s74", "start": 388.0, "end": 401.199, "text": "So I did I did that repeatedly and in my first year at Shopify I just every time I heard something that I didn't know what was I noted it down on a piece of paper and then I went home and then that evening I would just read about it because I felt insecure that like well if someone"}, {"id": "s75", "start": 401.199, "end": 409.12, "text": "mentions mentions like TCP surely they know exactly what's in the three-way handshake and how TLS is like layered on top and they've looked at Wireshark and all of that."}, {"id": "s76", "start": 409.12, "end": 411.759, "text": "I don't think that's true but that's what I thought."}, {"id": "s77", "start": 411.759, "end": 414.479, "text": "So I went and did that for everything that I encountered."}, {"id": "s78", "start": 414.479, "end": 419.919, "text": "Um, so that was a really good crash course and then very quickly it became clear that well I just want to continue doing this."}, {"id": "s79", "start": 419.919, "end": 426.56, "text": "I don't want to go go somewhere else and then come back to this because I felt like I'd already found what I wanted to do."}, {"id": "s80", "start": 426.56, "end": 440.16, "text": "So it sounds sounds like it was a pretty good combination of like you just having this like very natural insecurity like you know you're young, you know, you don't have the education that everyone else has and inside a company that's just doing pretty like cutting edge stuff even at the time and even even to today, right?"}, {"id": "s81", "start": 440.16, "end": 442.16, "text": "Like they're they're leading."}, {"id": "s82", "start": 442.16, "end": 448.639, "text": "So you just kept self-seing yourself like just catching up and go and then do I understand that you just went deep in every concept that you understood."}, {"id": "s83", "start": 448.639, "end": 456.08, "text": "You didn't like just like try to understand a surface level but like go as deep as you can search on the internet buy books whatever that is."}, {"id": "s84", "start": 456.08, "end": 472.72, "text": "I think it was just that I just wanted to know keep learning how computers work and I think that this is something that I now look for when we interview engineers is that you just you can't help yourself but trying to peel back the layers and for me that ended up with the infrastructure"}, {"id": "s85", "start": 472.72, "end": 483.199, "text": "layer that was you know the people closest to the metal at at Shopify and I would just always sit next to them at lunch because I was working on the on the product side but I just I couldn't help myself."}, {"id": "s86", "start": 483.199, "end": 487.36, "text": "I was so I just wanted to learn what it was when they were talking about a reverse proxy."}, {"id": "s87", "start": 487.36, "end": 489.199, "text": "I'm like, why is it reverse?"}, {"id": "s88", "start": 489.199, "end": 492.479, "text": "I I still can't answer that."}, {"id": "s89", "start": 493.875, "end": 495.36, "text": "[snorts]"}, {"id": "s90", "start": 495.36, "end": 497.15, "text": "I I I mean, okay,"}, {"id": "s91", "start": 497.15, "end": 498.08, "text": "[laughter]"}, {"id": "s92", "start": 498.08, "end": 502.24, "text": "you know, well, what's in reverse?"}, {"id": "s93", "start": 502.24, "end": 506.08, "text": "Because it's a proxy, right?"}, {"id": "s94", "start": 506.479, "end": 507.84, "text": "I don't I don't know."}, {"id": "s95", "start": 507.84, "end": 508.479, "text": "I don't know."}, {"id": "s96", "start": 508.479, "end": 509.84, "text": "It's like an inverted index."}, {"id": "s97", "start": 509.84, "end": 510.72, "text": "Like what's inverted?"}, {"id": "s98", "start": 510.72, "end": 512.0, "text": "It's like it's a terrible name."}, {"id": "s99", "start": 512.0, "end": 519.919, "text": "Anyway, yeah, I I mean it's still better when when you get the NAT nat tables, the lookups, some of those things like some of that."}, {"id": "s100", "start": 519.919, "end": 521.039, "text": "But yeah, I hear you there."}, {"id": "s101", "start": 521.039, "end": 540.88, "text": "There's some like weird names with this, but at at Shopify, what were some of the kind of like hard engineuring challenges that you engineering challenges, outages, like like learnings that kind of defined you that were really also fun at the time or interesting to learn, but"}, {"id": "s102", "start": 540.88, "end": 543.04, "text": "it would have been hard to get it elsewhere."}, {"id": "s103", "start": 543.04, "end": 543.36, "text": "Yeah."}, {"id": "s104", "start": 543.36, "end": 552.399, "text": "So I think it was, you know, in the 2010s there's like a bunch of SAS companies that that scale really quickly and I felt so fortunate to have a front row seat to that"}, {"id": "s105", "start": 552.399, "end": 562.0, "text": "and so I ended up on the infrastructure team and this was back in you know 134 and uh Docker was coming out and so we were containerizing everything and"}, {"id": "s106", "start": 562.0, "end": 573.68, "text": "we were just every single year we had to you know the growth rates of of of SAS sometimes seems quaint in comparison to the growth rates of companies today but it was a company that was growing at you know 120 40%"}, {"id": "s107", "start": 573.68, "end": 574.88, "text": "year-over-year."}, {"id": "s108", "start": 574.88, "end": 580.08, "text": "Um, and so every year we were just preparing for a Black Friday that was going to be a lot worse than the last."}, {"id": "s109", "start": 580.08, "end": 583.04, "text": "And this is back in the day of we're buying physical hardware, right?"}, {"id": "s110", "start": 583.04, "end": 587.44, "text": "We have to like place an order at a particular point in time and do some interpolation based on that."}, {"id": "s111", "start": 587.44, "end": 589.36, "text": "Um, and the software also had to scale."}, {"id": "s112", "start": 589.36, "end": 596.16, "text": "And when you're scaling most software, a lot of the application layer problems end up back at the database layer."}, {"id": "s113", "start": 596.16, "end": 601.68, "text": "And so I just naturally found myself at this layer between Rails and the databases."}, {"id": "s114", "start": 601.68, "end": 608.08, "text": "Shopify didn't at the time at least contribute many patches to the databases themselves but mostly just spent time orchestrating."}, {"id": "s115", "start": 608.08, "end": 616.48, "text": "So we were doing sharding because as um my my dear boss Camilo used to say you can't cache rights."}, {"id": "s116", "start": 616.48, "end": 622.399, "text": "So there's a fundamental point where you you just you have to move beyond a single shard."}, {"id": "s117", "start": 622.399, "end": 631.279, "text": "Um so I wasn't I joined around the time and they did the sharding and they did it I think they did the cut over a week before Black Friday which is mindblowing."}, {"id": "s118", "start": 631.279, "end": 638.72, "text": "uh and very but it worked and then the the subsequent years we worked on things like going into multiple data centers."}, {"id": "s119", "start": 638.72, "end": 644.72, "text": "We also had this big mysterious reddish server that was like you know 128 GB of RAM which was a lot at the time."}, {"id": "s120", "start": 644.72, "end": 652.399, "text": "Today it's not that much and no one really knew what was in it and then it went down one day and people were like well that's super terrifying."}, {"id": "s121", "start": 652.399, "end": 655.44, "text": "Um because people had just been treating it as this KV store."}, {"id": "s122", "start": 655.44, "end": 657.44, "text": "Um and so we started splitting it out."}, {"id": "s123", "start": 657.44, "end": 672.16, "text": "We did all this stuff around making sure that if you if you if you go visit a Shopify store and the thing that stores your sessions is down, the right behavior is not just for the entire the of everything to be down."}, {"id": "s124", "start": 672.16, "end": 673.76, "text": "But that's kind of the default failure mode, right?"}, {"id": "s125", "start": 673.76, "end": 675.279, "text": "You're not going to rescue all of that."}, {"id": "s126", "start": 675.279, "end": 678.959, "text": "Um unless you're in a programming language that really forces that decision."}, {"id": "s127", "start": 678.959, "end": 687.36, "text": "So we did things like um build this matrix out of okay well this service when this component is down should act this way."}, {"id": "s128", "start": 687.36, "end": 691.44, "text": "Um and I found myself writing the test suite for a bunch of that."}, {"id": "s129", "start": 691.44, "end": 693.92, "text": "And then I was like okay well we can't just mock all of this."}, {"id": "s130", "start": 693.92, "end": 700.16, "text": "And so um I came up with this idea at the time of like oh what we're going to do is we're just going to um shell out to GDB"}, {"id": "s131", "start": 700.16, "end": 707.92, "text": "and then into the process and then close the file descriptor to the database to simulate the through the entire layer that the database fails."}, {"id": "s132", "start": 707.92, "end": 718.16, "text": "That was a little crazy and we never shipped that on CI but it did uncover a massive amount of issues in Rails that' be upstream and things like that of around just like handling failures at the connection layer."}, {"id": "s133", "start": 718.16, "end": 722.8, "text": "So then I moved on to create this proxy called Toxyroxy and"}, {"id": "s134", "start": 722.8, "end": 723.76, "text": "have you heard of this before?"}, {"id": "s135", "start": 723.76, "end": 724.399, "text": "No. No."}, {"id": "s136", "start": 724.399, "end": 724.64, "text": "Yeah."}, {"id": "s137", "start": 724.64, "end": 734.16, "text": "Toxyroxy is it's just like a layer 7 proxy that sits in between um you and well layer four but in between you and the databases."}, {"id": "s138", "start": 734.16, "end": 744.079, "text": "So you basically have just like this proxy and then my SQL whatever doesn't speak the protocol but then you can do an API call say take take uh take the database down make it slow"}, {"id": "s139", "start": 744.079, "end": 756.8, "text": "um and over time it also added layer 7 things of like do a bunch of failures this way you're not mocking the low-level drivers but you're testing the drivers and their failure handling as well so then this entire matrix could be implemented in CI"}, {"id": "s140", "start": 756.8, "end": 769.36, "text": "so the basically the proxy was just like a really thin layer which like was passed through but you built the functionality to like simulate problems with database or things like data corruption or whatever you wanted to do."}, {"id": "s141", "start": 769.36, "end": 778.079, "text": "So you could just do it in there and then you can anything that built on top of it but but then Oh yeah and then everyone had to like call this proxy or it needed to be on in a layer."}, {"id": "s142", "start": 778.079, "end": 778.48, "text": "Exactly."}, {"id": "s143", "start": 778.48, "end": 791.92, "text": "So you could do like do like my you know proxy.mmysql downdown and then pass it a lambda of what you wanted to do like get this page do a checkout whatever with the sessions table down and this just uncovered"}, {"id": "s144", "start": 791.92, "end": 801.36, "text": "tens of issues right in the myql driver in the rails like it's just like no one in the ecosystem had been testing for this and it was very difficult to see this in prod right because in myql down"}, {"id": "s145", "start": 801.36, "end": 806.399, "text": "you're focused on just getting back up and not like what could the application actually have done."}, {"id": "s146", "start": 806.399, "end": 807.44, "text": "Yeah, it's interesting."}, {"id": "s147", "start": 807.44, "end": 817.68, "text": "Of course, we're going to talk a bit more about databases obviously, but just thinking about how a lot of the problems or some of the most gnarly problems in large systems are always to do with state"}, {"id": "s148", "start": 817.68, "end": 821.6, "text": "and I never connected until now that I mean state is usually there's a database."}, {"id": "s149", "start": 821.6, "end": 831.92, "text": "If there's no database, if you have stateless services, you know, I mean, you still have problems, you have nodes going down, you have, I don't know, corruption, whatever, but it's usually like more isolated."}, {"id": "s150", "start": 831.92, "end": 834.48, "text": "But basically, like if we have state, we typically have databases."}, {"id": "s151", "start": 834.48, "end": 844.32, "text": "is if we have databases and if you can simulate these problems suddenly you can I mean you you can like predict a lot of things but the problem with state often time is it's really hard to"}, {"id": "s152", "start": 844.32, "end": 850.88, "text": "simulate problems happening ahead of time unless when they happen so did you it sounds like you have pretty good success with"}, {"id": "s153", "start": 850.88, "end": 861.279, "text": "yeah I think to my knowledge it's still um running in like the CI system of Shopify today I don't know if anyone in the crowd is from Shopify but I'm pretty sure that it still does"}, {"id": "s154", "start": 861.279, "end": 869.92, "text": "um and so we wrote all these tests against it to implement and all of these different uh different failure conditions and it just yeah it was it was it worked out great."}, {"id": "s155", "start": 869.92, "end": 872.16, "text": "So you spent eight years in total at at Shopify."}, {"id": "s156", "start": 872.16, "end": 876.639, "text": "So like starting from like all right just a gap year it just went on a year a year and another year."}, {"id": "s157", "start": 876.639, "end": 884.639, "text": "Um at what point did you think about leaving and why and what was your kind of decision framework?"}, {"id": "s158", "start": 884.639, "end": 889.199, "text": "It sounds like you or you were like on Epic right now even today Shopify it's doing wonderful."}, {"id": "s159", "start": 889.199, "end": 892.9590000000001, "text": "It's probably doing even way better than like like you know that growth kind of kept on."}, {"id": "s160", "start": 892.9590000000001, "end": 896.639, "text": "So I'm sure there would have been an argument to stay and you know stay on their August ship."}, {"id": "s161", "start": 896.639, "end": 896.88, "text": "Yeah."}, {"id": "s162", "start": 896.88, "end": 902.079, "text": "So I I spent I spent eight years there from 13 to to 21."}, {"id": "s163", "start": 902.079, "end": 908.72, "text": "Um and I I think there just came a point where I wanted to see something different again."}, {"id": "s164", "start": 908.72, "end": 911.36, "text": "I've been inside of Shopify since I was 18 years old, right?"}, {"id": "s165", "start": 911.36, "end": 914.0, "text": "I'd been seen one other startup in high school."}, {"id": "s166", "start": 914.0, "end": 920.8, "text": "I was like if I want to learn more about computers and learn faster, it might be time to inject some novelty into this function."}, {"id": "s167", "start": 920.8, "end": 928.48, "text": "Um, and so I I left in in in 21 and I'd worked on so many different parts of the infrastructure like caching."}, {"id": "s168", "start": 928.48, "end": 938.16, "text": "Um, me and Justine, who's now my co-founder, we wrote the entire storefront um, storefront for Shopify, um, which powered almost 100% of traffic 18 months after we embarked on it."}, {"id": "s169", "start": 938.16, "end": 941.92, "text": "Um, we've worked on running Shopify in multiple data centers."}, {"id": "s170", "start": 941.92, "end": 947.279, "text": "We've worked on so many database scaling projects like caching, all of these different things, right?"}, {"id": "s171", "start": 947.279, "end": 954.8, "text": "Um, a lot of the a lot of the scalability came from the Kardashians launching lots of products on on Shopify, which would force a lot of traffic."}, {"id": "s172", "start": 954.8, "end": 957.44, "text": "Um, but that's that's eventually how I left."}, {"id": "s173", "start": 957.44, "end": 960.8, "text": "And so when I left, I didn't really know what I wanted to do."}, {"id": "s174", "start": 960.8, "end": 966.639, "text": "And so I one of the projects I had while I was at Shopify was this napkin math project."}, {"id": "s175", "start": 966.639, "end": 967.279, "text": "Have you seen this"}, {"id": "s176", "start": 967.279, "end": 967.92, "text": "napkin math?"}, {"id": "s177", "start": 967.92, "end": 968.16, "text": "No."}, {"id": "s178", "start": 968.16, "end": 981.12, "text": "No. Um, so napkin math was essentially just this table that I maintain on GitHub of how much bandwidth can you drive to DRAMM, what does a roundtrip to S3"}, {"id": "s179", "start": 981.12, "end": 989.759, "text": "cost, and how long does it take, how much bandwidth can you drive to an NVME SSD, how much bandwidth can you drive to an EBS volume?"}, {"id": "s180", "start": 989.759, "end": 996.56, "text": "Just a collection of probably there's probably like 50 of these numbers and then a RS script that generates them all."}, {"id": "s181", "start": 996.56, "end": 998.24, "text": "um what all these things cost?"}, {"id": "s182", "start": 998.24, "end": 998.9590000000001, "text": "What do you like?"}, {"id": "s183", "start": 998.9590000000001, "end": 1000.32, "text": "What does a gigabyte of memory cost?"}, {"id": "s184", "start": 1000.32, "end": 1000.72, "text": "$2."}, {"id": "s185", "start": 1000.72, "end": 1002.16, "text": "What does a gigabyte of S3 cost?"}, {"id": "s186", "start": 1002.16, "end": 1002.56, "text": "2 cents."}, {"id": "s187", "start": 1002.56, "end": 1005.279, "text": "What does a gigabyte of um this cost?"}, {"id": "s188", "start": 1005.279, "end": 1006.079, "text": "10 cents, right?"}, {"id": "s189", "start": 1006.079, "end": 1007.279, "text": "What does it cost on spot?"}, {"id": "s190", "start": 1007.279, "end": 1008.88, "text": "What does it cost on a three-year commit?"}, {"id": "s191", "start": 1008.88, "end": 1013.12, "text": "Like I had just have a massive table and then create flash cards for almost every single cell."}, {"id": "s192", "start": 1013.12, "end": 1014.9590000000001, "text": "So I know all these numbers."}, {"id": "s193", "start": 1014.9590000000001, "end": 1023.12, "text": "And this was a project I started taking on at Shopify because I found myself in um this role a lot where I would go in and review a project, right?"}, {"id": "s194", "start": 1023.12, "end": 1034.799, "text": "So some product team would be like okay we got to do we got to build this thing so we got to build this infrastructure to support the feature and a lot of the times they would say okay well we've gone and benchmarked it on database A"}, {"id": "s195", "start": 1034.799, "end": 1051.28, "text": "but the benchmarks are not very good so we're going to go with database B and I hate benchmarks so much because that's not a satisfying answer to me to me it's like"}, {"id": "s196", "start": 1051.28, "end": 1063.919, "text": "this does not jive maybe my intuition database A that you're saying takes 10 seconds to do this should take 10 milliseconds if you do the napkin math right if it's a search query right it's like okay"}, {"id": "s197", "start": 1063.919, "end": 1082.559, "text": "you're searching for three terms there each term has this many documents that match it that's this many megabytes we inter intersect these many this many lists you have DRAM bandwidth on multiple cores of 100 gigabytes per second this should take 10 millisecond you tell me the benchmark takes 10"}, {"id": "s198", "start": 1082.559, "end": 1083.919, "text": "one of us is wrong."}, {"id": "s199", "start": 1083.919, "end": 1089.84, "text": "Either there's a gap in my understanding, which is very likely, or you would benchmark the wrong thing."}, {"id": "s200", "start": 1089.84, "end": 1092.799, "text": "And in some ways, some reasons, right, it's like, okay, you've done a benchmark."}, {"id": "s201", "start": 1092.799, "end": 1097.919, "text": "You don't didn't realize that your benchmark is doing a distributed query across a 100 different nodes."}, {"id": "s202", "start": 1097.919, "end": 1101.44, "text": "And so, of course, the P99 is going to be really, really high, right?"}, {"id": "s203", "start": 1101.44, "end": 1104.4, "text": "Unless you've cut that off or or made some different set of trade-offs."}, {"id": "s204", "start": 1104.4, "end": 1111.36, "text": "So I just found myself in these discussions repeatedly where people were making infrastructure decisions based on poor benchmarks."}, {"id": "s205", "start": 1111.36, "end": 1117.919, "text": "And so I needed some I I needed some ammo to go in and just be like okay we can just do the calculation right here and then."}, {"id": "s206", "start": 1117.919, "end": 1123.679, "text": "Um because I was always doing these like little demos or like writing little prototype scripts to to demonstrate this."}, {"id": "s207", "start": 1123.679, "end": 1128.48, "text": "But it was just I just the argument of here's how a beach tree works."}, {"id": "s208", "start": 1128.48, "end": 1130.16, "text": "This is how many pages we have to visit."}, {"id": "s209", "start": 1130.16, "end": 1131.919, "text": "This is what a random SSD read takes."}, {"id": "s210", "start": 1131.919, "end": 1133.039, "text": "It takes one millisecond."}, {"id": "s211", "start": 1133.039, "end": 1138.72, "text": "you have to visit a thousand blah blah blah blah blah and then present it back and see if this is the difference to your query."}, {"id": "s212", "start": 1138.72, "end": 1140.48, "text": "Well, like is the query plan correct?"}, {"id": "s213", "start": 1140.48, "end": 1141.76, "text": "Like is there a bug in my SQL?"}, {"id": "s214", "start": 1141.76, "end": 1142.799, "text": "Do we have bad discs?"}, {"id": "s215", "start": 1142.799, "end": 1144.88, "text": "Like what's the discrepancy here?"}, {"id": "s216", "start": 1144.88, "end": 1146.559, "text": "And I just got caught with that bug."}, {"id": "s217", "start": 1146.559, "end": 1149.12, "text": "And so after I left Sha, I was just writing a lot of articles about this."}, {"id": "s218", "start": 1149.12, "end": 1151.76, "text": "I was just like, well, how long does should this query take?"}, {"id": "s219", "start": 1151.76, "end": 1158.64, "text": "And then I one hypothesis I had at some point is like, okay, well, how many writes per second can MySQL do?"}, {"id": "s220", "start": 1158.64, "end": 1164.32, "text": "Well, shouldn't the amount of writes per second that MySQL do equal the amount of f-syncs that you can do per second?"}, {"id": "s221", "start": 1164.32, "end": 1165.52, "text": "That sort of makes sense, right?"}, {"id": "s222", "start": 1165.52, "end": 1168.72, "text": "Every time you do a write, you f-sync to persist to disk."}, {"id": "s223", "start": 1168.72, "end": 1170.64, "text": "So, how many f-syncs can you do per second?"}, {"id": "s224", "start": 1170.64, "end": 1172.32, "text": "Well, an f-sync takes one millisecond."}, {"id": "s225", "start": 1172.32, "end": 1173.679, "text": "So, you do a thousand writes per second."}, {"id": "s226", "start": 1173.679, "end": 1174.96, "text": "That well, that doesn't really match up."}, {"id": "s227", "start": 1174.96, "end": 1177.52, "text": "Like, feel like a database can do more than,000 rightes per second."}, {"id": "s228", "start": 1177.52, "end": 1179.36, "text": "Why can it do that?"}, {"id": "s229", "start": 1179.36, "end": 1184.48, "text": "So, that was one of those things where I tested and it's like, okay, well, my SQL on a little dinky box could do 10,000 writes per second."}, {"id": "s230", "start": 1184.48, "end": 1185.6, "text": "Well, how is that possible?"}, {"id": "s231", "start": 1185.6, "end": 1186.64, "text": "Mhm."}, {"id": "s232", "start": 1186.64, "end": 1189.28, "text": "And now you would just ask how is it possible?"}, {"id": "s233", "start": 1189.28, "end": 1190.48, "text": "Because you batch."}, {"id": "s234", "start": 1190.48, "end": 1193.84, "text": "So an f-sync happens on usually a 4K."}, {"id": "s235", "start": 1193.84, "end": 1194.4, "text": "Yeah."}, {"id": "s236", "start": 1194.4, "end": 1194.64, "text": "Right."}, {"id": "s237", "start": 1194.64, "end": 1196.08, "text": "But it's like that's not intuitive."}, {"id": "s238", "start": 1196.08, "end": 1198.08, "text": "Like it's actually I I I got caught."}, {"id": "s239", "start": 1198.08, "end": 1205.919, "text": "It was like just like you know probably some like 24-hour period where I just got obsessed with this question where like you're writing like the BPF traces and all of that to do all of this."}, {"id": "s240", "start": 1205.919, "end": 1222.96, "text": "This is like pre-LM so it took forever and you and then I found out that oh every f-sync was like much larger than I would have inferred like oh it's batching you go into the code and you read it and then you found some obscure article by it's always somewhere in like a central German town that's like"}, {"id": "s241", "start": 1222.96, "end": 1232.159, "text": "written some article about like how some intricacy of my SQL works and a patch that they did to it's like the entire internet runs on small towns in Bavaria."}, {"id": "s242", "start": 1232.159, "end": 1233.36, "text": "I'm convinced."}, {"id": "s243", "start": 1233.36, "end": 1235.36, "text": "Yeah."}, {"id": "s244", "start": 1236.08, "end": 1240.32, "text": "And then you decided to start Turbopuffer."}, {"id": "s245", "start": 1240.32, "end": 1240.72, "text": "Yeah."}, {"id": "s246", "start": 1240.72, "end": 1242.72, "text": "Did h how did you decide?"}, {"id": "s247", "start": 1242.72, "end": 1248.32, "text": "Did you know what you wanted to build or was it more like I want to build something something databases because you were clearly very into databases."}, {"id": "s248", "start": 1248.32, "end": 1253.84, "text": "You you've done an awesome job benchmarking like what is the theoretical like limits?"}, {"id": "s249", "start": 1253.84, "end": 1259.919, "text": "You were very familiar with this probably became you know like world expert in in this niche."}, {"id": "s250", "start": 1259.919, "end": 1262.32, "text": "And then how"}, {"id": "s251", "start": 1262.48, "end": 1265.76, "text": "did did you want to go into databases again?"}, {"id": "s252", "start": 1265.76, "end": 1271.039, "text": "I think it was there's three things that sort of came to a head."}, {"id": "s253", "start": 1271.039, "end": 1276.88, "text": "Um the last project that I worked on at Shopify was search and I didn't have a good time."}, {"id": "s254", "start": 1276.88, "end": 1278.88, "text": "What what what did you use back there?"}, {"id": "s255", "start": 1278.88, "end": 1294.64, "text": "Um I don't we don't need to name names of other database companies but it was uh it was one of the one of the like traditional search companies that a lot of different um companies run and it was just very difficult to get it to do what I did and I was just like the projects that touched"}, {"id": "s256", "start": 1294.64, "end": 1309.52, "text": "that database just I couldn't get them to perform at the napkin math and like there's there's no query planner and like I couldn't figure out why it wasn't there and sometimes it tracked and then sometimes it really didn't track at all and so I tried to learn as much as I could to figure out and like start"}, {"id": "s257", "start": 1309.52, "end": 1312.799, "text": "reading the source code of it and I was just I couldn't get it to track very often."}, {"id": "s258", "start": 1312.799, "end": 1316.64, "text": "It was very difficult to operate and so I just that was sort of like in the back of my head."}, {"id": "s259", "start": 1316.64, "end": 1318.24, "text": "I never thought I would touch that again."}, {"id": "s260", "start": 1318.24, "end": 1330.64, "text": "Then the second ingredient was the napkin math project because it sort of just gave me a lot of facility with all of these napkin math numbers of what might be achievable with the machine if you utilized it perfectly"}, {"id": "s261", "start": 1330.64, "end": 1331.2, "text": "properly."}, {"id": "s262", "start": 1331.2, "end": 1331.6, "text": "Yeah."}, {"id": "s263", "start": 1331.6, "end": 1345.36, "text": "And then the third one was that doing this you know leaving Shopify in 21 having spent eight years there and during that time I did this I called it angel engineering so I like joined my friends companies and then I just vested equity instead of um"}, {"id": "s264", "start": 1345.36, "end": 1352.559, "text": "instead of just investing or something like that and because I wanted to have my fingers in it I wanted to like see what else was out there that's why I left and"}, {"id": "s265", "start": 1352.559, "end": 1366.24, "text": "this problem kept coming up again again and again and again right like ChachiBT came out in 2022 and I was working with with a company then and They wanted to connect a bunch of documents to AI and that's when the context windows were really small."}, {"id": "s266", "start": 1366.24, "end": 1368.08, "text": "So you had to reach for search very quickly."}, {"id": "s267", "start": 1368.08, "end": 1369.44, "text": "So it's like a few kilobytes."}, {"id": "s268", "start": 1369.44, "end": 1372.08, "text": "It was eight kilobytes or four kilobytes depending on the model."}, {"id": "s269", "start": 1372.08, "end": 1372.96, "text": "It was very very small."}, {"id": "s270", "start": 1372.96, "end": 1374.799, "text": "So you had to reach for search very quickly."}, {"id": "s271", "start": 1374.799, "end": 1375.36, "text": "Right."}, {"id": "s272", "start": 1375.36, "end": 1376.48, "text": "And"}, {"id": "s273", "start": 1376.48, "end": 1384.08, "text": "so I I I worked with them and I was I was I created a little recommendation engine and the recommendation engine was actually quite good."}, {"id": "s274", "start": 1384.08, "end": 1391.44, "text": "Um, like I s I found out that one of the co-founders wife was pregnant through the recommendations that I was getting when I was running it on his feed."}, {"id": "s275", "start": 1391.44, "end": 1394.159, "text": "Um, like it was it was it it"}, {"id": "s276", "start": 1394.159, "end": 1394.88, "text": "weird but"}, {"id": "s277", "start": 1394.88, "end": 1395.679, "text": "it was recommending."}, {"id": "s278", "start": 1395.679, "end": 1395.919, "text": "Yeah."}, {"id": "s279", "start": 1395.919, "end": 1401.2, "text": "I mean it was just like you know he was reading about like and I did get permission."}, {"id": "s280", "start": 1401.2, "end": 1412.32, "text": "I just like I don't think anyone expected to be good enough and just like okay it's this this thing is working and then I ran the back of the envelope math on what it would cost to do this for everyone like all the users."}, {"id": "s281", "start": 1412.32, "end": 1413.44, "text": "This is a company called Readwise."}, {"id": "s282", "start": 1413.44, "end": 1416.96, "text": "So it's like articles that you save and then and insert later."}, {"id": "s283", "start": 1416.96, "end": 1419.52, "text": "And it was going to cost 30 grand a month."}, {"id": "s284", "start": 1419.52, "end": 1420.4, "text": "And this was a company."}, {"id": "s285", "start": 1420.4, "end": 1422.159, "text": "It's a bootstrap Canadian company."}, {"id": "s286", "start": 1422.159, "end": 1427.76, "text": "They spend about five they at the time they were spending about 5k a month on all the other infrastructure combined."}, {"id": "s287", "start": 1427.76, "end": 1437.76, "text": "So it just it didn't the you know fundamentally in a company if you're doing an investment you have have to run some gross margin on top of whatever you're paying right and it just didn't line up."}, {"id": "s288", "start": 1437.76, "end": 1439.84, "text": "Um and so we just didn't ship it."}, {"id": "s289", "start": 1439.84, "end": 1450.48, "text": "I worked on I you know tuned to autovacuum on postcress or something like that which is a good pastime and then you I just couldn't stop thinking about why it was so expensive to store"}, {"id": "s290", "start": 1450.48, "end": 1465.44, "text": "all of these vectors that we were using for the recommendations and I just sat and did the napkin math one day of like can we just use it all in S3 and do some clustering and then organize the files and just the way and it's like maybe you could build that and then"}, {"id": "s291", "start": 1465.44, "end": 1471.44, "text": "one day I just kind of said [ __ ] it and did it and like sat down and started started to like to write it out."}, {"id": "s292", "start": 1471.44, "end": 1480.96, "text": "Um, and I spent the summer of of 23 just hammering my head against the wall trying to find an approach where I could get the latency that I wanted."}, {"id": "s293", "start": 1480.96, "end": 1481.52, "text": "Um,"}, {"id": "s294", "start": 1481.52, "end": 1486.08, "text": "because the problem with S3 is it has really good durability, but latency we're talking hundreds of milliseconds, right?"}, {"id": "s295", "start": 1486.08, "end": 1486.32, "text": "Yes."}, {"id": "s296", "start": 1486.32, "end": 1496.159, "text": "The P99 on a uh 256 or 512 kilobyte object on S3 um is around 200 milliseconds."}, {"id": "s297", "start": 1496.159, "end": 1496.48, "text": "Um,"}, {"id": "s298", "start": 1496.48, "end": 1501.2, "text": "and and you're saying P99 because like when you're talking large scale, you want to care about the P99, right?"}, {"id": "s299", "start": 1501.2, "end": 1501.279, "text": "Yeah."}, {"id": "s300", "start": 1501.279, "end": 1501.919, "text": "I think when you're"}, {"id": "s301", "start": 1501.919, "end": 1503.679, "text": "That's why we're not talking about P50."}, {"id": "s302", "start": 1503.679, "end": 1506.4, "text": "When you're designing a system, you want to optimize for the P99."}, {"id": "s303", "start": 1506.4, "end": 1512.32, "text": "And especially because when you're designing a system on on S3, generally in every roundtrip, you're not doing one request."}, {"id": "s304", "start": 1512.32, "end": 1514.08, "text": "You're often doing lots of requests, right?"}, {"id": "s305", "start": 1514.08, "end": 1515.76, "text": "You're going to hit the P99 real quick."}, {"id": "s306", "start": 1515.76, "end": 1516.08, "text": "Exactly."}, {"id": "s307", "start": 1516.08, "end": 1518.32, "text": "So, it's like if you're navigating a tree on S3, right?"}, {"id": "s308", "start": 1518.32, "end": 1520.96, "text": "It's like, okay, you get the upper layer of the tree 200 milliseconds."}, {"id": "s309", "start": 1520.96, "end": 1523.2, "text": "You get like another layer of the tree 200 milliseconds."}, {"id": "s310", "start": 1523.2, "end": 1525.2, "text": "You get a bunch of leaves of the tree in 200 millonds."}, {"id": "s311", "start": 1525.2, "end": 1535.44, "text": "So in aggregate you have like you want to look at the P99 probably even the P999 to design the system properly because you will need to minimize the number of round trips that you had to make."}, {"id": "s312", "start": 1535.44, "end": 1546.159, "text": "So, I just sat and sketched that out um and tried a bunch of different approaches and then and then finally in in in July of 23, I I I got something"}, {"id": "s313", "start": 1546.159, "end": 1556.72, "text": "end to end that seemed to work and then rewrote it probably twice and then released it in in October of of 23 based on um based on just that that summer of of of working through it."}, {"id": "s314", "start": 1556.72, "end": 1562.159, "text": "And then you kind of you built it on on top of S3 because I guess durability and and all of and just really good."}, {"id": "s315", "start": 1562.159, "end": 1564.799, "text": "How did you make it fast?"}, {"id": "s316", "start": 1565.2, "end": 1567.679, "text": "We didn't in the beginning or I didn't in the beginning."}, {"id": "s317", "start": 1567.679, "end": 1572.64, "text": "Um it was just me at the time and it was really like it was it was it was a project."}, {"id": "s318", "start": 1572.64, "end": 1574.159, "text": "It was not a company."}, {"id": "s319", "start": 1574.159, "end": 1575.76, "text": "It was not"}, {"id": "s320", "start": 1575.76, "end": 1578.88, "text": "it was it was it was to satisfy a curiosity."}, {"id": "s321", "start": 1578.88, "end": 1586.159, "text": "It was not I did not set out to do this like I'm going to go like raise $10 million and do like I was like I barely knew what a VC was."}, {"id": "s322", "start": 1586.159, "end": 1592.24, "text": "Like I was like I just had to do this thing and I was so focused on doing it."}, {"id": "s323", "start": 1592.24, "end": 1598.88, "text": "so clear to me that if I wasn't going to do it, someone else was going to do it and I just became fully obsessed that summer with it."}, {"id": "s324", "start": 1598.88, "end": 1602.159, "text": "And so the first version was the simplest possible thing."}, {"id": "s325", "start": 1602.159, "end": 1608.64, "text": "I think I'm a very pragmatic person like I I didn't get buried."}, {"id": "s326", "start": 1608.64, "end": 1612.0, "text": "I barely read any like of the literature on LSM."}, {"id": "s327", "start": 1612.0, "end": 1617.6, "text": "I sort of like you know read a bunch of it just like got the basic idea barely implemented that because that would have taken too much time."}, {"id": "s328", "start": 1617.6, "end": 1619.84, "text": "It was the simplest possible version of what it could be."}, {"id": "s329", "start": 1619.84, "end": 1626.96, "text": "Like really what you have to imagine is that the simplest way you could do this is you run some clustering algorithm on the vectors."}, {"id": "s330", "start": 1626.96, "end": 1629.76, "text": "You get the clusters and then you put the clusters in files."}, {"id": "s331", "start": 1629.76, "end": 1639.2, "text": "The cl the files are called cluster one, cluster two, cluster three and then you have another file called centroidids of the clusters and then you do the search by downloading centroidids"}, {"id": "s332", "start": 1639.2, "end": 1643.12, "text": "looking at the centrids and then downloading the n closest clusters."}, {"id": "s333", "start": 1643.12, "end": 1653.36, "text": "There was a few optimizations around merging some clusters that were JSON in files and so on just to like control some cost and some performance but that was basically it and then getting that to scale."}, {"id": "s334", "start": 1653.36, "end": 1654.559, "text": "That was the first version."}, {"id": "s335", "start": 1654.559, "end": 1656.0, "text": "And then how do we make it fast?"}, {"id": "s336", "start": 1656.0, "end": 1659.12, "text": "Well, I didn't even implement a caching layer."}, {"id": "s337", "start": 1659.12, "end": 1663.76, "text": "I just put the reverse proxy in front of S3 with Engine X and then had it"}, {"id": "s338", "start": 1663.76, "end": 1664.88, "text": "know what a reverse proxy is."}, {"id": "s339", "start": 1664.88, "end": 1667.6, "text": "I like I do know what it is."}, {"id": "s340", "start": 1667.6, "end": 1670.0, "text": "I just still don't know what what the reverse is about."}, {"id": "s341", "start": 1670.0, "end": 1676.24, "text": "But anyway, um the reverse the reverse proxy reverse things."}, {"id": "s342", "start": 1676.24, "end": 1683.76, "text": "Um the the performance in this case um maybe that's what it's about by caching right all of the all of the S3 objects."}, {"id": "s343", "start": 1683.76, "end": 1687.039, "text": "It again it was the simplest like it's like I'm just going to put that in front."}, {"id": "s344", "start": 1687.039, "end": 1695.679, "text": "I knew how to configure engine X like I've written more enginex Lua than u than a lot of engineext Lua very good software."}, {"id": "s345", "start": 1695.679, "end": 1707.6, "text": "um just had that cache in front and then the way that I would do things like deleting in the cache was just like shell out to XRX and just remove like things in the in the cache and reverse engineer the directory structure on engine X and that's what we shipped and it was just running on a single"}, {"id": "s346", "start": 1707.6, "end": 1708.96, "text": "server in a T-Ox instance."}, {"id": "s347", "start": 1708.96, "end": 1711.76, "text": "I was like okay let's see if anyone gives a [ __ ] Yeah."}, {"id": "s348", "start": 1711.76, "end": 1720.08, "text": "So so far I mean this is kind of like cool engineering and like a cool side project and like a bunch of novel ideas and I you know like I think just some hardcore engineering."}, {"id": "s349", "start": 1720.08, "end": 1721.679, "text": "How did cursor come into play?"}, {"id": "s350", "start": 1721.679, "end": 1739.76, "text": "Because like when I learned about Turbopuffer, I was talking with Cursor about like how they built their their back end, their database, how they scaled, and they're telling me all these migrations and they were telling me like, oh yeah, so we we were on Postgress, but it didn't no they did something else in Postgress."}, {"id": "s351", "start": 1739.76, "end": 1740.72, "text": "It didn't even work that well."}, {"id": "s352", "start": 1740.72, "end": 1745.84, "text": "They went to AWS Aurora, which is managed service of Postgress, and it didn't work well, which is very surprising."}, {"id": "s353", "start": 1745.84, "end": 1746.559, "text": "And they're like, \"Oh, yeah.\""}, {"id": "s354", "start": 1746.559, "end": 1749.679, "text": "And then we went to this thing called Turbopuffer, and they worked well."}, {"id": "s355", "start": 1749.679, "end": 1751.6, "text": "And I was like, what's turbuffer?"}, {"id": "s356", "start": 1751.6, "end": 1753.279, "text": "And they're like, oh yeah, turbopuffer."}, {"id": "s357", "start": 1753.279, "end": 1755.679, "text": "I think I think they said like we were one of their first customers."}, {"id": "s358", "start": 1755.679, "end": 1757.36, "text": "And this never computed to me."}, {"id": "s359", "start": 1757.36, "end": 1759.84, "text": "Curser was already massive at that point."}, {"id": "s360", "start": 1759.84, "end": 1761.76, "text": "How did you meet the folks?"}, {"id": "s361", "start": 1761.76, "end": 1764.96, "text": "And how did they become would were they the first customer?"}, {"id": "s362", "start": 1764.96, "end": 1766.08, "text": "One of the first."}, {"id": "s363", "start": 1766.08, "end": 1767.2, "text": "They were the first customer."}, {"id": "s364", "start": 1767.2, "end": 1767.76, "text": "The first"}, {"id": "s365", "start": 1767.76, "end": 1768.559, "text": "the first."}, {"id": "s366", "start": 1768.559, "end": 1769.44, "text": "No."}, {"id": "s367", "start": 1769.44, "end": 1775.84, "text": "Um they they they reached out um after I just launched on on Twitter."}, {"id": "s368", "start": 1775.84, "end": 1777.039, "text": "I was like, \"Hey, I built this thing.\""}, {"id": "s369", "start": 1777.039, "end": 1789.44, "text": "And frankly it was like in I exact you it was like hey launch this thing and to me I was like I am so sick of working on this like I was like I've been working on this all summer I don't know if anyone cares"}, {"id": "s370", "start": 1789.44, "end": 1791.52, "text": "I only want to work on this if anyone cares."}, {"id": "s371", "start": 1791.52, "end": 1796.0, "text": "Let's put it on Twitter again single Tox instance on a 8 core node somewhere in GCP."}, {"id": "s372", "start": 1796.0, "end": 1802.48, "text": "I was like if someone goes to prod I'll I'll set it up properly on multiple and like I'll just block on that but let let's see if anyone cares."}, {"id": "s373", "start": 1802.48, "end": 1804.48, "text": "It was like the MVP of MVP."}, {"id": "s374", "start": 1804.48, "end": 1814.32, "text": "Anyone who's actually worked in the internal on databases would never have had like would have had too much pride to ship anything like that."}, {"id": "s375", "start": 1814.32, "end": 1818.32, "text": "Um, and I've just, you know, I've worked on I was just releasing it like a SAS project."}, {"id": "s376", "start": 1818.32, "end": 1820.24, "text": "Why can't you work on a database like it's SAS?"}, {"id": "s377", "start": 1820.24, "end": 1822.799, "text": "I don't, you know, it's like if anyone uses it, we'll do it properly."}, {"id": "s378", "start": 1822.799, "end": 1825.44, "text": "I know how to run software with a lot of nines."}, {"id": "s379", "start": 1825.44, "end": 1830.72, "text": "Um, but it was not a proper LSN like it was very very it was the simplest version of what it could be."}, {"id": "s380", "start": 1830.72, "end": 1832.72, "text": "And then I released on Twitter."}, {"id": "s381", "start": 1832.72, "end": 1834.799, "text": "I was like, \"Yeah, you could do a million vectors for a dollar.\""}, {"id": "s382", "start": 1834.799, "end": 1839.2, "text": "And before that, I think the the cheapest was maybe $100 per million for something that actually worked."}, {"id": "s383", "start": 1839.2, "end": 1839.84, "text": "Yeah."}, {"id": "s384", "start": 1839.84, "end": 1841.76, "text": "Um, and I knew it was reliable, right?"}, {"id": "s385", "start": 1841.76, "end": 1850.64, "text": "I knew like I had these invariants like if you shut down all the VMs, like no data is lost, like all the rights are committed directly to object like it has all the same invariants it had today."}, {"id": "s386", "start": 1850.64, "end": 1865.84, "text": "Um and cursor reached out and knowing them now I'm sure at the time the cursor was maybe eight people and knowing the founders now I am sure that they had sat at the dinner table one day and we're like the unit economics of what we have right now where all the vectors are in DRAM"}, {"id": "s387", "start": 1865.84, "end": 1874.159, "text": "are not working why hasn't anyone built it where we can put it in S3 and the actual code bases that are actively being used we can put in memory"}, {"id": "s388", "start": 1874.159, "end": 1878.08, "text": "and everything else just sit in opic stores and then we just hotload it in and out of the cache"}, {"id": "s389", "start": 1878.08, "end": 1883.6, "text": "makes so much sense right you open the codebase few seconds and it's in RAM and then the queries are as fast as anything else."}, {"id": "s390", "start": 1883.6, "end": 1884.96, "text": "It made so much sense."}, {"id": "s391", "start": 1884.96, "end": 1895.12, "text": "So I mean at the time they were if you look at some of Aman one of the co-founders early tweets he talks about uh using S3 for KV caching and things like that which barely anyone is still doing even though"}, {"id": "s392", "start": 1895.12, "end": 1896.64, "text": "um the economics"}, {"id": "s393", "start": 1896.64, "end": 1902.64, "text": "yeah price wise yeah it's and it's it's very it's very uncommon and I think it will happen right but they were ahead of their time"}, {"id": "s394", "start": 1902.64, "end": 1916.24, "text": "and they I think they were I don't know if they were thinking of building it themselves I think that's quite likely um and they found Turboper and it just perfectly pattern matched into that again I don't know if this dinner conversation happened or if this was just inside"}, {"id": "s395", "start": 1916.24, "end": 1917.279, "text": "Harvey's head."}, {"id": "s396", "start": 1917.279, "end": 1923.679, "text": "Um, but it pattern matched something and so we exchanged a bunch of emails and then something compelled."}, {"id": "s397", "start": 1923.679, "end": 1925.6, "text": "I didn't know anything about B2B sales."}, {"id": "s398", "start": 1925.6, "end": 1927.36, "text": "Now I love B2B sales."}, {"id": "s399", "start": 1927.36, "end": 1928.64, "text": "Um, I didn't know anything."}, {"id": "s400", "start": 1928.64, "end": 1933.76, "text": "I was just like I just want to help them cuz they they were they had some unit economics that didn't line up."}, {"id": "s401", "start": 1933.76, "end": 1935.279, "text": "So I just went to San Francisco, right?"}, {"id": "s402", "start": 1935.279, "end": 1936.0, "text": "I live in Canada."}, {"id": "s403", "start": 1936.0, "end": 1943.6, "text": "I went to San Francisco and I showed up at the office and when I showed up at the office they um they were having some Postgress problem that they were discussing."}, {"id": "s404", "start": 1943.6, "end": 1945.279, "text": "Yeah, the AWS aurora problems."}, {"id": "s405", "start": 1945.279, "end": 1945.679, "text": "Yes."}, {"id": "s406", "start": 1945.679, "end": 1946.0, "text": "Yeah."}, {"id": "s407", "start": 1946.0, "end": 1946.88, "text": "Early on."}, {"id": "s408", "start": 1946.88, "end": 1949.76, "text": "And I was like, \"Oh, do you guys have PG analyze?\""}, {"id": "s409", "start": 1949.76, "end": 1951.2, "text": "And they said, \"Oh, no, we don't.\""}, {"id": "s410", "start": 1951.2, "end": 1953.519, "text": "I let's let's get that going, right?"}, {"id": "s411", "start": 1953.519, "end": 1954.559, "text": "Let's look at it."}, {"id": "s412", "start": 1954.559, "end": 1963.279, "text": "And it was the same thing as it always is with Postgress, which is autovacuum hadn't run enough and so they had all of these like going to heat when they should be doing index scans and blah blah blah."}, {"id": "s413", "start": 1963.279, "end": 1964.96, "text": "So, we were talking about all of that."}, {"id": "s414", "start": 1964.96, "end": 1966.32, "text": "And so, it's just helping them, right?"}, {"id": "s415", "start": 1966.32, "end": 1969.919, "text": "It was like my, you know, my database genes just like kicked in."}, {"id": "s416", "start": 1969.919, "end": 1980.159, "text": "And I think this built enough trust with them that okay, well maybe if he knows how to help us with the database, maybe he also would know how to build one."}, {"id": "s417", "start": 1980.159, "end": 1988.399, "text": "And um at this time I'd also approached who I thought was the best engineer who ever worked at Shopify, my co-founder Justine."}, {"id": "s418", "start": 1988.399, "end": 2001.039, "text": "um and she'd come on and the first thing that she did was um remove the reverse proxy enginex cache with a file-based cache just a direct cache which again great like the S3 thing worked"}, {"id": "s419", "start": 2001.039, "end": 2013.039, "text": "um and so she was online she was starting to work on it and um and cursor cursor cursor then that night was like okay well we're going to migrate and so they migrated everything over the course of like a week or two after that"}, {"id": "s420", "start": 2013.039, "end": 2020.08, "text": "um but cursor was a small company back then right yeah and they were they just in the beginning of their massive rapid growth."}, {"id": "s421", "start": 2020.08, "end": 2020.72, "text": "Exactly."}, {"id": "s422", "start": 2020.72, "end": 2025.279, "text": "And I I told them that I was going to reduce their bill by 95%."}, {"id": "s423", "start": 2025.279, "end": 2027.12, "text": "And I did like we did."}, {"id": "s424", "start": 2027.12, "end": 2028.159, "text": "Justine and I did."}, {"id": "s425", "start": 2028.159, "end": 2036.08, "text": "We like they came on and their last bill with their previous vendor and the first bill with us, it was 95% lower."}, {"id": "s426", "start": 2036.08, "end": 2036.24, "text": "Yeah."}, {"id": "s427", "start": 2036.24, "end": 2041.44, "text": "And you're you're nice for not saying vendors, but I I can say talks to them and and it's in the deep dive about cursor."}, {"id": "s428", "start": 2041.44, "end": 2044.08, "text": "It was it was a it was Aurora specifically."}, {"id": "s429", "start": 2044.08, "end": 2044.96, "text": "Uh so"}, {"id": "s430", "start": 2044.96, "end": 2046.88, "text": "this was this was not this was not Postgress."}, {"id": "s431", "start": 2046.88, "end": 2048.399, "text": "No, this was a"}, {"id": "s432", "start": 2048.399, "end": 2050.159, "text": "it was a different one, but it's probably still in the write up."}, {"id": "s433", "start": 2050.159, "end": 2057.359, "text": "We don't we don't need to name names, but uh yeah, but they were the reason they went there is reliability was their main main pain point."}, {"id": "s434", "start": 2057.359, "end": 2070.879, "text": "I'm sure the unit economics would have been there, but yeah, this was and then what Swallow told me is he said like look like there's a few things that we did never ever do and he said one of them you should never ever bet your business on a tiny startup where you are their only or biggest customer"}, {"id": "s435", "start": 2070.879, "end": 2073.52, "text": "except for Turbopuffer and he said I love love those guys."}, {"id": "s436", "start": 2073.52, "end": 2081.52, "text": "So I guess it just comes to show that even in your case like to me what this story is shows is is you can do things when you build"}, {"id": "s437", "start": 2081.52, "end": 2095.44, "text": "highquality things and you're pushing for things good things can happen and on the other side of cursor when you're a startup it's okay to take sometimes irrational risks when you have conviction and it sounds to me that you gave them conviction by showing up in person"}, {"id": "s438", "start": 2095.44, "end": 2107.28, "text": "by helping them by showing that you know you know your stuff like you suddenly brought in your your 10ish or eight years of Shopify experience and your curiosity and They probably took a risk because of that, not because you were some, you know, random vendor."}, {"id": "s439", "start": 2107.28, "end": 2109.359, "text": "They probably never done that."}, {"id": "s440", "start": 2109.359, "end": 2113.52, "text": "So, fast forward today, uh, Turbopuffer is now a lot bigger."}, {"id": "s441", "start": 2113.52, "end": 2122.48, "text": "You're you're working on some some some cool things, but you have this very interesting business where for you CPUs are important, right?"}, {"id": "s442", "start": 2122.48, "end": 2124.8, "text": "You run on mostly CPUs."}, {"id": "s443", "start": 2124.8, "end": 2134.16, "text": "And you told me a story over dinner yesterday that uh you met Jensen uh and Jensen he really wanted to sell you on GPUs."}, {"id": "s444", "start": 2134.16, "end": 2136.24, "text": "Can you tell me how that meeting went?"}, {"id": "s445", "start": 2136.24, "end": 2138.32, "text": "Um yeah, Jensen Hong, right?"}, {"id": "s446", "start": 2138.32, "end": 2138.96, "text": "Yeah."}, {"id": "s447", "start": 2138.96, "end": 2142.8, "text": "I just I never met uh I'd never met uh Jensen before."}, {"id": "s448", "start": 2142.8, "end": 2149.44, "text": "We were we were at an event at uh at at Nvidia and we were just doing um presentations in a big HQ."}, {"id": "s449", "start": 2149.44, "end": 2150.079, "text": "Super impressive."}, {"id": "s450", "start": 2150.079, "end": 2150.48, "text": "Yeah, exactly."}, {"id": "s451", "start": 2150.48, "end": 2159.44, "text": "they've invited a couple of companies to go and and um and and and talk about um uh talk about our businesses and how we can partner with Nvidia and so on."}, {"id": "s452", "start": 2159.44, "end": 2163.599, "text": "And I I don't I I don't know."}, {"id": "s453", "start": 2163.599, "end": 2165.76, "text": "I was like I think I was in a goofy mood that day."}, {"id": "s454", "start": 2165.76, "end": 2172.4, "text": "And so I went up on on stage and I said, \"Um, hey, I'm Simon from from Turbopuffer.\""}, {"id": "s455", "start": 2172.4, "end": 2179.68, "text": "And uh and yeah, if you're wondering about the name, it's like if everything goes south, we can always pivot into vapes."}, {"id": "s456", "start": 2180.52, "end": 2181.359, "text": "[laughter]"}, {"id": "s457", "start": 2181.359, "end": 2187.359, "text": "I was kind of nervous and this is what I this is what I said and then and then he said back to"}, {"id": "s458", "start": 2187.359, "end": 2188.079, "text": "wait who was in the room?"}, {"id": "s459", "start": 2188.079, "end": 2188.72, "text": "Was it Jensen?"}, {"id": "s460", "start": 2188.72, "end": 2189.68, "text": "Was it a direct report?"}, {"id": "s461", "start": 2189.68, "end": 2201.52, "text": "It was it was Jensen and then I don't he has like I don't know if it's just 50 direct reports or it was like you know it was there was it was Jensen and then a bunch of the um like Nvidia Nvidia leadership, right?"}, {"id": "s462", "start": 2201.52, "end": 2205.92, "text": "Um cuz you go there and then you talk about that you find opportunities to partner and work together, right?"}, {"id": "s463", "start": 2205.92, "end": 2212.4, "text": "And so I said, \"Yeah, you know, so plan B could be that we could pivot into vapes.\""}, {"id": "s464", "start": 2212.4, "end": 2215.44, "text": "And then he said, I was already nervous."}, {"id": "s465", "start": 2215.44, "end": 2221.28, "text": "He said, \"Judging by your slide, maybe you should.\""}, {"id": "s466", "start": 2221.785, "end": 2222.64, "text": "[laughter]"}, {"id": "s467", "start": 2222.64, "end": 2225.44, "text": "No, he did not."}, {"id": "s468", "start": 2227.28, "end": 2228.99, "text": "And and"}, {"id": "s469", "start": 2228.99, "end": 2230.079, "text": "[gasps]"}, {"id": "s470", "start": 2230.079, "end": 2232.72, "text": "I didn't know what to say back to that."}, {"id": "s471", "start": 2232.72, "end": 2237.52, "text": "So I said, \"Well, Jensen, do you vape?\""}, {"id": "s472", "start": 2240.125, "end": 2240.78, "text": "[snorts]"}, {"id": "s473", "start": 2240.78, "end": 2242.64, "text": "[laughter]"}, {"id": "s474", "start": 2242.64, "end": 2246.0, "text": "He didn't he didn't answer the question."}, {"id": "s475", "start": 2246.02, "end": 2246.32, "text": "[laughter]"}, {"id": "s476", "start": 2246.32, "end": 2259.359, "text": "And then someone um someone on the um someone on the on the team um wrote to the whole company, Turop Puffer Company, Simon just asked Jensen if he vapes."}, {"id": "s477", "start": 2259.52, "end": 2263.599, "text": "Um, and then you know this is this is a great start, right?"}, {"id": "s478", "start": 2263.599, "end": 2267.44, "text": "And um, and then the team had team team had sort of talked to me beforehand."}, {"id": "s479", "start": 2267.44, "end": 2270.88, "text": "I was like, Simon, we got to make sure we don't say the C-word."}, {"id": "s480", "start": 2270.88, "end": 2273.52, "text": "We can't say CPUs."}, {"id": "s481", "start": 2275.28, "end": 2277.119, "text": "And so I just couldn't stop talking about CPUs."}, {"id": "s482", "start": 2277.119, "end": 2280.079, "text": "I was like, AVX 512 is so sick."}, {"id": "s483", "start": 2280.079, "end": 2285.92, "text": "Like we love SIMD and um, like we we we like there's so many CPUs."}, {"id": "s484", "start": 2285.92, "end": 2287.119, "text": "They're so easy to get."}, {"id": "s485", "start": 2287.119, "end": 2290.64, "text": "like um it's just a riot in CPU land."}, {"id": "s486", "start": 2290.64, "end": 2295.801, "text": "Like you know I I don't I think I stopped short of saying I'm so glad I don't need GPUs."}, {"id": "s487", "start": 2295.801, "end": 2295.839, "text": "[laughter]"}, {"id": "s488", "start": 2295.839, "end": 2301.599, "text": "But but it was just it I just couldn't stop talking about CPUs."}, {"id": "s489", "start": 2301.599, "end": 2301.92, "text": "Yeah."}, {"id": "s490", "start": 2301.92, "end": 2304.96, "text": "And so you know Jensen took an interest in that."}, {"id": "s491", "start": 2304.96, "end": 2306.079, "text": "Yeah."}, {"id": "s492", "start": 2306.079, "end": 2309.52, "text": "So who who knows like I'm sure you made you made a memorable impression."}, {"id": "s493", "start": 2309.52, "end": 2313.359, "text": "Maybe he made it his mission now to like at some point get you guys onto GPUs."}, {"id": "s494", "start": 2313.359, "end": 2319.28, "text": "But speaking of CPUs, can you tell me a bit what you're seeing inside of the hypers scale, the cloud providers?"}, {"id": "s495", "start": 2319.28, "end": 2322.4, "text": "You're now in AWS, you're you're in GCP, you're on Azure."}, {"id": "s496", "start": 2322.4, "end": 2330.72, "text": "What I would think naively is there's a GPU shortage and when I talk with inference companies, they are and and and AI labs, they're just getting whatever they can do."}, {"id": "s497", "start": 2330.72, "end": 2333.599, "text": "I would think getting CPUs is should be easy."}, {"id": "s498", "start": 2333.599, "end": 2334.32, "text": "Is it?"}, {"id": "s499", "start": 2334.32, "end": 2335.76, "text": "No,"}, {"id": "s500", "start": 2335.76, "end": 2337.04, "text": "it's not anymore."}, {"id": "s501", "start": 2337.04, "end": 2337.44, "text": "Why?"}, {"id": "s502", "start": 2337.44, "end": 2338.0, "text": "What's happening?"}, {"id": "s503", "start": 2338.0, "end": 2341.2, "text": "Can you tell us about dynamics on on on the why and what you've learned?"}, {"id": "s504", "start": 2341.2, "end": 2341.68, "text": "Yeah."}, {"id": "s505", "start": 2341.68, "end": 2347.28, "text": "So, I think that GPUs will probably continue to be scarce."}, {"id": "s506", "start": 2347.28, "end": 2349.28, "text": "Like, I don't know, maybe there's going to be some surplus."}, {"id": "s507", "start": 2349.28, "end": 2360.24, "text": "I I refuse to speculate too much about the macro, but I think as as RL is becoming a very very large amount of the workloads that needs a lot of CPUs."}, {"id": "s508", "start": 2360.24, "end": 2366.96, "text": "So, the labs are sucking up a lot of CPUs because you need CPUs to be like, okay, we need to like teach this model how to how to search."}, {"id": "s509", "start": 2366.96, "end": 2368.72, "text": "We need to teach it how to use GP."}, {"id": "s510", "start": 2368.72, "end": 2370.96, "text": "We need to teach it how to boot up bash."}, {"id": "s511", "start": 2370.96, "end": 2376.0, "text": "We need it needs to run real things and learn from that takes a lot of CPU."}, {"id": "s512", "start": 2376.0, "end": 2382.16, "text": "Um and so I think as we RL is consuming a lot of CPU and then also just all of the agents are running on CPUs, right?"}, {"id": "s513", "start": 2382.16, "end": 2393.04, "text": "They need to do all kinds of very general purpose things on a CPU and so as as as the demand curve is sort of shifting to the right and it's becoming more and more applied and that feeds back into RL by the way, right?"}, {"id": "s514", "start": 2393.04, "end": 2406.64, "text": "because as things become more applied like oh the models are not that good at CAD or ship building I don't know and then you know you have to spin up even more RL environments to do that so I think that's what we're seeing and so we're on the other end of that needing these CPUs"}, {"id": "s515", "start": 2406.64, "end": 2414.0, "text": "we need a lot of NVME SSDs as well um and a lot of this right now is tied up in DRAM right of of where like"}, {"id": "s516", "start": 2414.0, "end": 2421.839, "text": "you need a lot of that also for the GPU servers um but I would assume that it gets a lot worse before it gets a lot better on the on the CPU side"}, {"id": "s517", "start": 2421.839, "end": 2432.64, "text": "um and I think even the big companies are fighting amongst each other, right, to get the allocations and even we, you know, we're selling to companies that we also fight for CPU with and against, right?"}, {"id": "s518", "start": 2432.64, "end": 2438.4, "text": "It's uh it's it's it's really difficult and so you write things to try to make sure you get these CPUs as f fast as possible."}, {"id": "s519", "start": 2438.4, "end": 2438.64, "text": "Yeah."}, {"id": "s520", "start": 2438.64, "end": 2442.88, "text": "And yesterday I was at a dinner that you hosted with your team where you actually have a bunch of Turbo customers."}, {"id": "s521", "start": 2442.88, "end": 2457.119, "text": "A bunch of them are AI AI labs or or AI startups but a lot of them one of them uh reflection had have hu massive amount of footprint and they were telling me that they're in a situation where they cannot buy more like they"}, {"id": "s522", "start": 2457.119, "end": 2472.4, "text": "when it comes to GPUs or CPUs they max out they have the longest contracts that possible and I didn't realize how competitive it is in the cloud when you you go beyond a small fish to like a medium size or even a a large fish that now like"}, {"id": "s523", "start": 2472.4, "end": 2473.2, "text": "It's it's interesting."}, {"id": "s524", "start": 2473.2, "end": 2479.359, "text": "So So now you have this and even you're having this this uh kind of fight behind the scenes that is maybe not as visible."}, {"id": "s525", "start": 2479.359, "end": 2479.68, "text": "Exactly."}, {"id": "s526", "start": 2479.68, "end": 2493.76, "text": "And I mean you you work with the clouds right you work with them to talk about which regions have um have CPU which regions are getting it comes down to power right of like okay well where is the power which is generally where they're going to ship the new CPUs."}, {"id": "s527", "start": 2493.76, "end": 2496.64, "text": "Um and so we have to work with some of our biggest customers on that."}, {"id": "s528", "start": 2496.64, "end": 2500.48, "text": "So these are real constraints right that are that are making our way to us."}, {"id": "s529", "start": 2500.48, "end": 2511.04, "text": "We're just very fortunate that it's very easy for us to run lots of turbuffer clusters because all we need are like a few CPUs and NVME SSDs and then S3 and then we're in a good place."}, {"id": "s530", "start": 2511.04, "end": 2516.0, "text": "But there's lots of changes that we can make even to the architecture um to try to protect from from a lot of this."}, {"id": "s531", "start": 2516.0, "end": 2523.599, "text": "Now I'd rather spend that engineering effort on other things but we are very very good at using a lot of very different SKs, right?"}, {"id": "s532", "start": 2523.599, "end": 2527.44, "text": "So we don't need everything to be a particular CPU or instance type."}, {"id": "s533", "start": 2527.44, "end": 2530.72, "text": "We can run with many even many different types of machine types."}, {"id": "s534", "start": 2530.72, "end": 2531.76, "text": "Um"}, {"id": "s535", "start": 2531.76, "end": 2535.119, "text": "Q meaning that's the it's a fancy name for like the different machine types."}, {"id": "s536", "start": 2535.119, "end": 2535.44, "text": "Yes."}, {"id": "s537", "start": 2535.44, "end": 2535.839, "text": "Exactly."}, {"id": "s538", "start": 2535.839, "end": 2536.16, "text": "Right."}, {"id": "s539", "start": 2536.16, "end": 2539.839, "text": "Like you know C4D or I AG or whatever they're called."}, {"id": "s540", "start": 2539.839, "end": 2541.359, "text": "What's your favorite one?"}, {"id": "s541", "start": 2541.359, "end": 2548.0, "text": "Um we really like right now the um C4s on uh GCP."}, {"id": "s542", "start": 2548.0, "end": 2548.72, "text": "GCP."}, {"id": "s543", "start": 2548.72, "end": 2556.64, "text": "Um the Z4Ds are also performing really well um now that we've done done a bunch of of um of optimizations to them."}, {"id": "s544", "start": 2556.64, "end": 2559.119, "text": "Um those are really really great machine types."}, {"id": "s545", "start": 2559.119, "end": 2560.72, "text": "Uh we really like those."}, {"id": "s546", "start": 2560.72, "end": 2565.76, "text": "Um and then the ARM C4As as well um on on GCP."}, {"id": "s547", "start": 2565.76, "end": 2567.52, "text": "Um we like those."}, {"id": "s548", "start": 2567.52, "end": 2576.64, "text": "But I think that in general like when you're yeah when you're small it's very easy to suck up a bunch of but at Shopify I was also part of you know deciding"}, {"id": "s549", "start": 2576.64, "end": 2581.839, "text": "ahead of BFCM right a few months out you have to tell the cloud providers how much you're intending to use."}, {"id": "s550", "start": 2581.839, "end": 2583.119, "text": "do commits on all of that, right?"}, {"id": "s551", "start": 2583.119, "end": 2586.079, "text": "The the clouds are not infinite as they seem when you're small."}, {"id": "s552", "start": 2586.079, "end": 2592.319, "text": "And one way, of course, to like get like infrastructure and and also just like credibility is venture capital."}, {"id": "s553", "start": 2592.319, "end": 2596.64, "text": "If you raise $100 million, a billion dollars, some of your customers just raised $2 billion."}, {"id": "s554", "start": 2596.64, "end": 2598.16, "text": "Actually, I talked with them yesterday."}, {"id": "s555", "start": 2598.16, "end": 2601.68, "text": "You know, it gives you credibility, gives you cash, you can pay for this thing."}, {"id": "s556", "start": 2601.68, "end": 2606.8, "text": "Your specific Turbopufferers relationship to venture capital seems very interesting."}, {"id": "s557", "start": 2606.8, "end": 2610.72, "text": "I never heard you announce a raise until m maybe just very recently."}, {"id": "s558", "start": 2610.72, "end": 2616.96, "text": "Can you tell me how you and and you told me that when you started this thing, you didn't think too much outside of just building some cool stuff."}, {"id": "s559", "start": 2616.96, "end": 2628.8, "text": "How did you think about venture capital and how do you think about raising because again I feel you have a very fresh and different perspective than what which is typical inside of Silicon Valley."}, {"id": "s560", "start": 2628.8, "end": 2629.2, "text": "Yeah."}, {"id": "s561", "start": 2629.2, "end": 2637.04, "text": "So I think to to understand my how I think about capital you have to go back to the the beginning of Turbopuffer, right?"}, {"id": "s562", "start": 2637.04, "end": 2643.599, "text": "where I promised cursor that Justine and I could get their bill to 4K a month."}, {"id": "s563", "start": 2643.599, "end": 2653.599, "text": "And this was based on some very rough napkin math on, okay, if if Turbopuffer was a better implementation than it currently is, then it should cost this much."}, {"id": "s564", "start": 2653.599, "end": 2658.48, "text": "And that's the pricing we ship with and that's what we guaranteed um guaranteed cursor."}, {"id": "s565", "start": 2658.48, "end": 2661.04, "text": "Um but the software was not that good."}, {"id": "s566", "start": 2661.04, "end": 2664.0, "text": "Like it was very reliable, but it was very simple, right?"}, {"id": "s567", "start": 2664.0, "end": 2669.04, "text": "And that's like a core engineering principle of me is simplicity above everything."}, {"id": "s568", "start": 2669.04, "end": 2676.96, "text": "Um you and I have talked before about how software that ages well and some of the advantages of seeing be having long tenures inside of companies."}, {"id": "s569", "start": 2676.96, "end": 2678.16, "text": "You had a long tenure at Uber."}, {"id": "s570", "start": 2678.16, "end": 2679.52, "text": "I had a long tenure at Shopify."}, {"id": "s571", "start": 2679.52, "end": 2682.64, "text": "So you see simplicity just almost always wins."}, {"id": "s572", "start": 2682.64, "end": 2702.0, "text": "Um and at the time I was not convinced whether this was a venture scale opportunity because I understood that if you take venture capital no matter how many smiles there are in the room everyone's sort of expecting that you have to earn a big return on that on some timeline that makes sense to everyone involved and everyone"}, {"id": "s573", "start": 2702.0, "end": 2713.92, "text": "involved are you know pension funds in Canada like that it's like it there's like a whole stack right of of of people that that need to so at the time I was like I don't you I don't know if this could be a billion dollar company."}, {"id": "s574", "start": 2713.92, "end": 2715.92, "text": "I didn't know that in the very very beginning."}, {"id": "s575", "start": 2715.92, "end": 2717.839, "text": "Um it wasn't completely clear to me."}, {"id": "s576", "start": 2717.839, "end": 2722.24, "text": "It felt like a very niche kind of product, right, to build this particular search engine."}, {"id": "s577", "start": 2722.24, "end": 2724.48, "text": "Um and that was completely fine with me."}, {"id": "s578", "start": 2724.48, "end": 2727.359, "text": "So I you know it's it's it was fine."}, {"id": "s579", "start": 2727.359, "end": 2735.119, "text": "And so then I just I just looked at the cursor bill and I looked at my GCP bill which is what we started on."}, {"id": "s580", "start": 2735.119, "end": 2742.96, "text": "and you know as like a you know dumb Danish person who's just like okay like this number should just be lower than the other number."}, {"id": "s581", "start": 2742.96, "end": 2743.599, "text": "Yeah,"}, {"id": "s582", "start": 2743.599, "end": 2751.52, "text": "that's sort of like you know and it's just I don't think I'd spend enough time in San Francisco cuz I think the money over here it works a little bit differently."}, {"id": "s583", "start": 2751.52, "end": 2754.0, "text": "Um that's just that's all I knew."}, {"id": "s584", "start": 2754.0, "end": 2759.04, "text": "You you were doing business 101 as as long as you're making a profit you're good, right?"}, {"id": "s585", "start": 2759.04, "end": 2760.64, "text": "Yeah."}, {"id": "s586", "start": 2760.64, "end": 2771.359, "text": "It was like I'm I'm not kidding in this exaggeration that it was just like that just made sense to me that Justine and I were just going to go optimize this until these numbers were roughly equal."}, {"id": "s587", "start": 2771.359, "end": 2775.119, "text": "And maybe if if if we could get some other workloads, we could start paying ourselves."}, {"id": "s588", "start": 2775.119, "end": 2778.319, "text": "But that was like very much the philosophy at the time."}, {"id": "s589", "start": 2778.319, "end": 2781.68, "text": "Um because I didn't know if I could go raise a bunch of of of money."}, {"id": "s590", "start": 2781.68, "end": 2783.44, "text": "I didn't know anyone who had the money."}, {"id": "s591", "start": 2783.44, "end": 2785.359, "text": "I I didn't have any relationships."}, {"id": "s592", "start": 2785.359, "end": 2787.76, "text": "Um you were an absolute outsider to the"}, {"id": "s593", "start": 2787.76, "end": 2788.64, "text": "I was I was an outsider."}, {"id": "s594", "start": 2788.64, "end": 2790.24, "text": "I was like an outsider squared, right?"}, {"id": "s595", "start": 2790.24, "end": 2795.359, "text": "I grew up in Aus, Denmark and I um I then moved to Ottawa, Canada."}, {"id": "s596", "start": 2795.359, "end": 2801.2, "text": "So it's like I'm an outsider to Canada and in Canada I'm an outsider to San Francisco."}, {"id": "s597", "start": 2801.2, "end": 2809.28, "text": "So I was just thinking about this from first principles like oh you're a venture capital you need this return you need it on this timeline."}, {"id": "s598", "start": 2809.28, "end": 2810.72, "text": "I don't know if I can deliver that yet."}, {"id": "s599", "start": 2810.72, "end": 2820.319, "text": "I would need more data to decide that because I want to like I kind of want to keep working on this and now I have to get to this point for it to not be a failure."}, {"id": "s600", "start": 2820.319, "end": 2833.92, "text": "Um in in in January then I uh there was a person that I was at II with in in uh in 2012 and 2013 and his name is Buen and he was on the North and Macedonian team"}, {"id": "s601", "start": 2833.92, "end": 2837.599, "text": "um at II um and he was he's he was really good."}, {"id": "s602", "start": 2837.599, "end": 2840.64, "text": "He was so good that the North Macedonian team called him God."}, {"id": "s603", "start": 2840.64, "end": 2850.24, "text": "Um I don't know why but that was what he went by and he was yeah he was very good grew up and and I really wanted to work with Buen"}, {"id": "s604", "start": 2850.24, "end": 2851.902, "text": "but I couldn't afford to work with Boyan"}, {"id": "s605", "start": 2851.902, "end": 2852.8, "text": "[laughter]"}, {"id": "s606", "start": 2852.8, "end": 2864.319, "text": "um and he was very much like this is what I can live off like you know I just like I want to build this date like that would be like this is what it can be but at this point Justine and I hadn't taken a salary for like 6 months"}, {"id": "s607", "start": 2864.319, "end": 2874.8, "text": "and we'd already we'd already spent like tens of thousands of dollars on like on GCP bills and all of that and I was like I don't think we can I don't think we can we we can do it."}, {"id": "s608", "start": 2874.8, "end": 2886.64, "text": "And so I had met one one individual in in Silicon Valley uh his name is Locky and it just I ended up just calling him and saying hey I kind of want to learn a little bit faster here."}, {"id": "s609", "start": 2886.64, "end": 2890.64, "text": "Can I can we raise like 700K?"}, {"id": "s610", "start": 2890.64, "end": 2891.92, "text": "That's like what I wanted to raise."}, {"id": "s611", "start": 2891.92, "end": 2897.28, "text": "So it's just like I want to have like two engineers for the rest of the year."}, {"id": "s612", "start": 2897.28, "end": 2900.56, "text": "Justine and I still don't need to be paid and then a little bit of buffer room."}, {"id": "s613", "start": 2900.56, "end": 2908.96, "text": "It's like this is what I need and if this doesn't have PMF and is a big opportunity by the end of the year, I don't think we're going to bother and we'll just shut the whole thing down and we won't have it taking a dime."}, {"id": "s614", "start": 2908.96, "end": 2910.559, "text": "We'll return everything to you."}, {"id": "s615", "start": 2910.559, "end": 2915.2, "text": "Um I think there was the first time you heard anyone say it like that."}, {"id": "s616", "start": 2915.2, "end": 2919.76, "text": "Um and um I told some other VCs that at the time and that was terrifying to them."}, {"id": "s617", "start": 2919.76, "end": 2925.28, "text": "I think to someone on the West Coast this sounds like you have low ambition or something like that."}, {"id": "s618", "start": 2925.28, "end": 2925.839, "text": "M"}, {"id": "s619", "start": 2925.839, "end": 2932.72, "text": "um and to me it was just like I I don't know it just came from a when I don't know how to play a game I just play with open cards like this is how I see it"}, {"id": "s620", "start": 2932.72, "end": 2945.28, "text": "and so I we were it was very clear to us that we wanted to do this and but also it became clear to us that we didn't want to just like keep working on this unless it could become big and we were starting to develop conviction conviction that this actually become really really big"}, {"id": "s621", "start": 2945.28, "end": 2958.8, "text": "and so we we we did that and hired Buen and then became profitable later that year um and then just continued to hire and then it's like to raise more money, you need sort of"}, {"id": "s622", "start": 2958.8, "end": 2960.88, "text": "there's six reasons to raise capital."}, {"id": "s623", "start": 2960.88, "end": 2963.599, "text": "The first reason to raise capital is to fund R&D."}, {"id": "s624", "start": 2963.599, "end": 2964.24, "text": "Mhm."}, {"id": "s625", "start": 2964.24, "end": 2973.839, "text": "That was the reason that we raised capital in January because we funded R&D with a lot of our own, you know, opportunity cost and not taking a salary and then paying the bills ourselves."}, {"id": "s626", "start": 2973.839, "end": 2979.76, "text": "Um, but we wanted to learn a little bit faster and so we hired Buen and Morgan as the first engineers."}, {"id": "s627", "start": 2979.76, "end": 2983.28, "text": "And then the second reason to raise capital is to fund growth."}, {"id": "s628", "start": 2983.28, "end": 2990.0, "text": "you've you you've built something and you want to tell the world about it and you want to spend more capital to do that."}, {"id": "s629", "start": 2990.0, "end": 2996.004, "text": "Um the third reason to to to raise capital is for the founders's ego."}, {"id": "s630", "start": 2996.004, "end": 2996.559, "text": "[snorts]"}, {"id": "s631", "start": 2996.559, "end": 2999.04, "text": "Um it's a very popular appreciate the honesty."}, {"id": "s632", "start": 2999.04, "end": 3001.44, "text": "It's very popular, very very popular, right?"}, {"id": "s633", "start": 3001.44, "end": 3008.48, "text": "big numbers, lots of press, like um and I think this is a very very dangerous reason to raise money."}, {"id": "s634", "start": 3008.48, "end": 3014.4, "text": "And I wish that it was more talked about because you're diluting all of your employees when you do it."}, {"id": "s635", "start": 3014.4, "end": 3019.04, "text": "You are um setting a certain price for future employees and their upside."}, {"id": "s636", "start": 3019.04, "end": 3024.16, "text": "It's it's it for some people it can become a status game and that's not what it's about."}, {"id": "s637", "start": 3024.16, "end": 3030.16, "text": "We're here to build a big business together and this is not a reason to raise money."}, {"id": "s638", "start": 3030.16, "end": 3033.119, "text": "Um, but I I do think that it happens."}, {"id": "s639", "start": 3033.119, "end": 3037.92, "text": "Um, the fourth reason to to to raise capital is to reward your employees, right?"}, {"id": "s640", "start": 3037.92, "end": 3044.96, "text": "It's a you're on a very long journey and you want to work with the best people in the world and by definition there's not that many best people in the world."}, {"id": "s641", "start": 3044.96, "end": 3046.4, "text": "So, you want to reward them."}, {"id": "s642", "start": 3046.4, "end": 3058.16, "text": "Um, that was the reason that we took more capital in December um was to allow the employees to liquidate as some of their equity um instead of waiting for some like event like an IPO or something like further out."}, {"id": "s643", "start": 3058.16, "end": 3061.44, "text": "Um the fifth reason to raise is for a strategic partnership."}, {"id": "s644", "start": 3061.44, "end": 3066.24, "text": "There are strategic partnerships that have been made in this in this city that have made companies."}, {"id": "s645", "start": 3066.24, "end": 3073.2, "text": "Um and um the six reason to raise would be do doing M&A or or something like that."}, {"id": "s646", "start": 3073.2, "end": 3078.48, "text": "But it's like you have to be very honest about what reason you are raising in those six."}, {"id": "s647", "start": 3078.48, "end": 3082.24, "text": "First reason we raised was one and second reason we raised was four."}, {"id": "s648", "start": 3082.24, "end": 3083.44, "text": "Um so which which ones?"}, {"id": "s649", "start": 3083.44, "end": 3085.52, "text": "The first reason to raise was R&D."}, {"id": "s650", "start": 3085.52, "end": 3087.68, "text": "R&D and the second reason was"}, {"id": "s651", "start": 3087.68, "end": 3089.599, "text": "um to provide liquidity to the employees"}, {"id": "s652", "start": 3089.599, "end": 3090.079, "text": "employees."}, {"id": "s653", "start": 3090.079, "end": 3091.92, "text": "Yep."}, {"id": "s654", "start": 3091.92, "end": 3100.88, "text": "I I think it's a it's a nice and healthy way and I think yeah the ego part we don't talk about and the identity and especially the closer you are to"}, {"id": "s655", "start": 3100.88, "end": 3105.52, "text": "to tech ecosystems where a lot of people are raising it it will be part of it."}, {"id": "s656", "start": 3105.52, "end": 3111.04, "text": "As closing I I wanted to ask you about the way you have a remote culture these days."}, {"id": "s657", "start": 3111.04, "end": 3119.599, "text": "I'm seeing it especially for companies that do anything with AI, may that be building AI infra or or or just AI products."}, {"id": "s658", "start": 3119.599, "end": 3131.119, "text": "A lot of them prefer in person having a HQ often times in SF or wherever your headquarters may that be London or somewhere else because you often these companies often find that they have faster iteration."}, {"id": "s659", "start": 3131.119, "end": 3135.44, "text": "Uh it's just fewer layers cut in between and of course speed is is very very important."}, {"id": "s660", "start": 3135.44, "end": 3138.64, "text": "You have started full remote and you're still full remote."}, {"id": "s661", "start": 3138.64, "end": 3141.119, "text": "how is it working?"}, {"id": "s662", "start": 3141.119, "end": 3148.64, "text": "Uh, and what kind of quirks or like or turbo ways have you found to to make this work better?"}, {"id": "s663", "start": 3148.64, "end": 3150.16, "text": "Yeah, I think so."}, {"id": "s664", "start": 3150.16, "end": 3153.359, "text": "The the company started in in 23."}, {"id": "s665", "start": 3153.359, "end": 3157.599, "text": "So, sort of like on the on the on the cusp of COVID where a lot of companies were just remote."}, {"id": "s666", "start": 3157.599, "end": 3164.319, "text": "Um, the Shopify infra was remote since the very um very beginning because it was very difficult to get them all to move to Ottawa."}, {"id": "s667", "start": 3164.319, "end": 3169.2, "text": "Um, and so it was natural to me."}, {"id": "s668", "start": 3169.2, "end": 3177.68, "text": "It's like, okay, I think there's kind of maybe two cities where you can build a database company fast, and that's San Francisco and and and maybe New York."}, {"id": "s669", "start": 3177.68, "end": 3178.88, "text": "There are maybe other cities, right?"}, {"id": "s670", "start": 3178.88, "end": 3180.319, "text": "But that's like kind of where it's been done."}, {"id": "s671", "start": 3180.319, "end": 3180.64, "text": "Yeah."}, {"id": "s672", "start": 3180.64, "end": 3185.44, "text": "And so if you don't want to do that, I think you have to go all in on on on some distributed model."}, {"id": "s673", "start": 3185.44, "end": 3189.28, "text": "And so we've tried to figure out what does that distributed model mean for Turppuffer?"}, {"id": "s674", "start": 3189.28, "end": 3190.96, "text": "It doesn't mean the absence of in person."}, {"id": "s675", "start": 3190.96, "end": 3195.04, "text": "we get everyone together twice a year in in some in in some location."}, {"id": "s676", "start": 3195.04, "end": 3197.119, "text": "Uh earlier this year we were in in B, right?"}, {"id": "s677", "start": 3197.119, "end": 3198.8, "text": "And then we were in Mexico City and so on."}, {"id": "s678", "start": 3198.8, "end": 3201.119, "text": "So it's like that's that's not that uncommon."}, {"id": "s679", "start": 3201.119, "end": 3206.72, "text": "Um but one of the things that we we we've been trying to do is we have this concept called campfires."}, {"id": "s680", "start": 3206.72, "end": 3216.24, "text": "And the concept of the campfire is that when a couple of people just sort of randomly congregate in a place, you call it a campfire and you encourage as many people as you want to come and join."}, {"id": "s681", "start": 3216.24, "end": 3222.16, "text": "So, for example, this week is a Turbo Puffer campfire in San Francisco because I'm here for this conference and a bunch of other things."}, {"id": "s682", "start": 3222.16, "end": 3224.079, "text": "And so, everyone is invited to come."}, {"id": "s683", "start": 3224.079, "end": 3225.68, "text": "Like, we're going to go meet customers, right?"}, {"id": "s684", "start": 3225.68, "end": 3228.4, "text": "We're going to put on dinners for our customers and things like that."}, {"id": "s685", "start": 3228.4, "end": 3231.44, "text": "And we just make a thing out of it and and spend time together."}, {"id": "s686", "start": 3231.44, "end": 3234.48, "text": "And uh we encourage everyone to come."}, {"id": "s687", "start": 3234.48, "end": 3242.079, "text": "We've also gone to the extent now of um we want to encourage that, but not everyone not everyone needs to go to the campfire all the time."}, {"id": "s688", "start": 3242.079, "end": 3246.4, "text": "Some people just want to, you know, lock in and hacks into tent and that's great."}, {"id": "s689", "start": 3246.4, "end": 3253.119, "text": "We have people that just make it to the off sites twice a year and otherwise they're home, they're with their families and they don't they don't spend time on an airplane."}, {"id": "s690", "start": 3253.119, "end": 3254.8, "text": "Um, fantastic."}, {"id": "s691", "start": 3254.8, "end": 3257.2, "text": "Like that is completely compatible with this model."}, {"id": "s692", "start": 3257.2, "end": 3260.559, "text": "And there are other people at the company who are on a plane probably every two weeks."}, {"id": "s693", "start": 3260.559, "end": 3273.072, "text": "Um, we had someone the other day where they saw a campfire happening in New York and everyone was dialing in from a meeting room in New York and she had so much FOMO that she took an Uber straight to the airport in Ottawa and flew to"}, {"id": "s694", "start": 3273.072, "end": 3273.359, "text": "[laughter]"}, {"id": "s695", "start": 3273.359, "end": 3275.76, "text": "flew to New York to hang out with the team, right?"}, {"id": "s696", "start": 3275.76, "end": 3277.52, "text": "And I think that's fantastic."}, {"id": "s697", "start": 3277.52, "end": 3288.16, "text": "Um and we've also introduced these things where um if you if you uh if you do a current conference talk or a blog post or something like that at Turbop or something a bit extracurricular,"}, {"id": "s698", "start": 3288.16, "end": 3298.4, "text": "we give you a turbo credit and a turbo credit allows you to upgrade your next flight to business class which again encourages spending time together with the team."}, {"id": "s699", "start": 3298.4, "end": 3303.04, "text": "Um and now I mean turbo credits are probably going to take on a life of their own."}, {"id": "s700", "start": 3303.04, "end": 3306.96, "text": "Someone was talking about doing a central bank and doing interest rates on the turbo credits."}, {"id": "s701", "start": 3306.96, "end": 3309.28, "text": "um and doing a betting market on the turbo credits."}, {"id": "s702", "start": 3309.28, "end": 3312.319, "text": "And so like this might take on its life on its own."}, {"id": "s703", "start": 3312.319, "end": 3326.48, "text": "Um and uh you you know if you um if you're at a conference like this, there's some of the our engineers here who are just want to interact with customers and be on like and standing on a like expo floor all day is quite taxing."}, {"id": "s704", "start": 3326.48, "end": 3330.0, "text": "And so if you do that for two days because you want to do it, oh, you get a turbo credit, right?"}, {"id": "s705", "start": 3330.0, "end": 3336.8, "text": "And so it's just like these fun little things that we try to do to to to encourage people to meet if they want to meet Thank you."}, {"id": "s706", "start": 3336.8, "end": 3350.48, "text": "Well, in this session, uh, what I found very interesting is Turbopuffer is a so many AI companies are using you as an infrastructure layer, but in this conversation, we managed to talk very little about AI and a lot more about engineering principles,"}, {"id": "s707", "start": 3350.48, "end": 3356.96, "text": "pushing, being curious, and the human connection, how important it is for people to work together, to trust each other."}, {"id": "s708", "start": 3356.96, "end": 3358.48, "text": "So, just thank you very much for that."}, {"id": "s709", "start": 3358.48, "end": 3360.48, "text": "So, let's give a big round of applause for Simon."}, {"id": "s710", "start": 3360.48, "end": 3362.24, "text": "Thank you so much."}, {"id": "s711", "start": 3362.24, "end": 3362.88, "text": "This is great."}, {"id": "s712", "start": 3362.88, "end": 3365.04, "text": "Thank you."}, {"id": "s713", "start": 3365.28, "end": 3367.359, "text": "Are you"}, {"id": "s714", "start": 3385.734, "end": 3387.734, "text": "[music]"}]}, {"id": "jebp4V0vh30", "title": "Agentic Sites: Building Hyper Personalized Websites — Carlos Sanchez, Adobe", "channel": "AI Engineer", "duration": 1243, "upload_date": null, "url": "https://www.youtube.com/watch?v=jebp4V0vh30", "api": "/api/talks/jebp4V0vh30.json", "summary_url": "/#jebp4V0vh30", "transcript": {"html": "/transcripts/jebp4V0vh30.html", "txt": "/transcripts/jebp4V0vh30.txt", "vtt": "/transcripts/jebp4V0vh30.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.44, "end": 14.72, "text": "Hello."}, {"id": "s3", "start": 14.72, "end": 16.16, "text": "Thank you for coming."}, {"id": "s4", "start": 16.16, "end": 24.36, "text": "Um I'm going to talk to you about Agility Sites, how we call it as building hyper-personalized websites."}, {"id": "s5", "start": 24.36, "end": 26.12, "text": "I'm not going to just talk about it."}, {"id": "s6", "start": 26.12, "end": 28.84, "text": "I'm going to show you what we're building."}, {"id": "s7", "start": 28.84, "end": 39.64, "text": "Um I've been working on on this project for for a bit now, and we'll try to show you what is possible today with with AI."}, {"id": "s8", "start": 39.64, "end": 47.64, "text": "Uh I work at Adobe at a I'm a principal scientist at a product that not many people know, Adobe Experience Manager, content management."}, {"id": "s9", "start": 47.64, "end": 60.88, "text": "We run a lot of uh website properties for big brands, and my background is in in open source, uh contributing to to a lot of foundations and projects."}, {"id": "s10", "start": 61.44, "end": 66.56, "text": "What are Agility Sites, and how are we building this thing?"}, {"id": "s11", "start": 66.56, "end": 76.92, "text": "So, we're looking for sites that are uh looking at the what intent the user browsing uh has."}, {"id": "s12", "start": 76.92, "end": 78.84, "text": "What is the user doing?"}, {"id": "s13", "start": 78.84, "end": 81.8, "text": "What is the user trying to achieve?"}, {"id": "s14", "start": 81.8, "end": 96.96000000000001, "text": "And the end goal is to personalize these pages for the for the current user browsing, so that eventually this uh drives uh higher engagement or uh conversions, whatever the marketing"}, {"id": "s15", "start": 96.96000000000001, "end": 99.8, "text": "teams want to want to achieve."}, {"id": "s16", "start": 99.8, "end": 110.75999999999999, "text": "And these pages are personalized in real time based on the on the user that is uh accessing the site, and what is the what is the user doing."}, {"id": "s17", "start": 110.8, "end": 113.44, "text": "The stack we're using is AMH delivery."}, {"id": "s18", "start": 113.44, "end": 123.96, "text": "So, this is the part of the product we we have, uh where all the content is on the edge and then we have back end service that powers this experience"}, {"id": "s19", "start": 123.96, "end": 137.0, "text": "with different LLM providers LLM services we use Cerebras for fast inference or we can use also we tried bedrock and and a bunch of others."}, {"id": "s20", "start": 137.0, "end": 142.24, "text": "I'll be showing Cerebras today and you will see the reason why."}, {"id": "s21", "start": 142.24, "end": 153.32, "text": "The the engine that is personalizing this this bits is using the rich content and blocks."}, {"id": "s22", "start": 153.32, "end": 160.36, "text": "So different blocks on the site are customized depending on on what the user persona is."}, {"id": "s23", "start": 160.36, "end": 163.68, "text": "We don't want the the whole site to be generated."}, {"id": "s24", "start": 163.68, "end": 167.92000000000002, "text": "I mean if you talk to marketing people they they have a very strict brand guidelines."}, {"id": "s25", "start": 167.92000000000002, "end": 172.68, "text": "You don't want to just come up with our have some hallucinations there."}, {"id": "s26", "start": 172.68, "end": 181.6, "text": "So the what is personalized is different sections of the site and we use the whole site as a corpus."}, {"id": "s27", "start": 181.6, "end": 183.92, "text": "We built a rack from the whole site."}, {"id": "s28", "start": 183.92, "end": 189.72, "text": "So what is generated is grounded on on the existing site."}, {"id": "s29", "start": 189.72, "end": 193.44, "text": "We tried to solve the problem where one size fits all."}, {"id": "s30", "start": 193.44, "end": 196.28, "text": "We want hyper-personalized experiences."}, {"id": "s31", "start": 196.28, "end": 202.68, "text": "Also we want to help our customers to do more automatic authoring."}, {"id": "s32", "start": 202.68, "end": 214.64, "text": "So not having to create thousands of different variations of the site but use AI for this and then do these multiple layers of of personalization."}, {"id": "s33", "start": 215.16, "end": 219.28, "text": "Some examples of what we're doing or I'll show in the demo."}, {"id": "s34", "start": 219.28, "end": 231.92000000000002, "text": "It's instant persona adaptation, query generation when the user search for something on the site, the page with the results is customized for them and also uh, something like recommendations"}, {"id": "s35", "start": 231.92000000000002, "end": 242.92, "text": "where after you browse the site for a period of time, we we can create a page that recommends something based on on on what you are what we think you are looking for."}, {"id": "s36", "start": 242.92, "end": 257.16, "text": "For marketers, uh, they can define this strategy on natural language, and they can use analytics to to drive the loop of personalization, and what is the end goal, and how this"}, {"id": "s37", "start": 257.16, "end": 263.16, "text": "goes back again to change to adapt the personalization to improve that uh, whole cycle."}, {"id": "s38", "start": 263.16, "end": 269.28, "text": "Everybody's talking about loops in this conference, so that's that's one of the loops there."}, {"id": "s39", "start": 270.08, "end": 272.0, "text": "How the architecture look like?"}, {"id": "s40", "start": 272.0, "end": 287.48, "text": "So, it's a dynamic front end with some blocks, what I mentioned before, and with uh, edge delivery services is basically you compose these blocks, and uh, they are updated on on real time through with the AI."}, {"id": "s41", "start": 287.48, "end": 300.52, "text": "The back end, uh, we we do the um, evaluation of the models and the providers, and one thing we realized is is that this is very dependent on the site."}, {"id": "s42", "start": 300.52, "end": 311.12, "text": "So, we have a bunch of prompts, and we look uh, we run it across a huge variety of uh, models and providers, and then we look at the accuracy, we look at the speed,"}, {"id": "s43", "start": 311.12, "end": 322.88, "text": "but this is going to depend highly on what type of site, like how big is the site, how I don't know, what different what different um, area is the site"}, {"id": "s44", "start": 322.88, "end": 326.28, "text": "targeting, what what type of commerce it is, and so on."}, {"id": "s45", "start": 326.28, "end": 331.6, "text": "So, we we run this this um, evaluation continuously."}, {"id": "s46", "start": 331.6, "end": 333.28, "text": "We use uh, Promptfoo."}, {"id": "s47", "start": 333.28, "end": 335.76, "text": "Uh, anybody heard about Promptfoo?"}, {"id": "s48", "start": 335.76, "end": 337.6, "text": "Okay, some people."}, {"id": "s49", "start": 337.6, "end": 352.6, "text": "So, Promptfoo allows you to evaluate models um, prompts against my multiple models, providers, and you can do local models and any of the a bunch of open AI compatible"}, {"id": "s50", "start": 352.6, "end": 357.48, "text": "uh providers and and uh a lot of them, basically."}, {"id": "s51", "start": 357.48, "end": 359.44, "text": "We look for two things."}, {"id": "s52", "start": 359.44, "end": 359.88, "text": "Why?"}, {"id": "s53", "start": 359.88, "end": 361.56, "text": "Accuracy."}, {"id": "s54", "start": 361.56, "end": 372.6, "text": "That's that's typically what people look for, but also we want the speed because we don't want the site generation to take more than 1 or 2 seconds, right?"}, {"id": "s55", "start": 372.6, "end": 386.08, "text": "Because people uh this is already uh proven that people want the the faster the site, the more conversions it it generates or the the better the experience it is for the user."}, {"id": "s56", "start": 386.08, "end": 389.919, "text": "Um yeah, what I mentioned is different sites may have different requirements."}, {"id": "s57", "start": 389.919, "end": 397.36, "text": "Uh so, you may have to run this uh evaluation of models depending on the site."}, {"id": "s58", "start": 397.68, "end": 406.6, "text": "This is a an ex uh we we secured this some of these queries, so we have a 15 prompts for this example site."}, {"id": "s59", "start": 406.6, "end": 420.919, "text": "Um we have uh at the top you can see with Cerebras on the Gemma 4 model that was announced last last week, we can get an average latency of 1.1 seconds generating a page."}, {"id": "s60", "start": 420.919, "end": 426.12, "text": "You you can compare that to the second one, which is 4.6 seconds, right?"}, {"id": "s61", "start": 426.12, "end": 429.04, "text": "So, the difference is huge."}, {"id": "s62", "start": 429.04, "end": 433.68, "text": "And that's why uh we use Cerebras for for this use case."}, {"id": "s63", "start": 433.68, "end": 443.24, "text": "And uh you can see that different providers, different models have different um different speeds."}, {"id": "s64", "start": 443.24, "end": 449.36, "text": "And here is uh let me I can show you the whole thing here."}, {"id": "s65", "start": 449.36, "end": 451.08, "text": "Not this one, this one, right?"}, {"id": "s66", "start": 451.08, "end": 455.08, "text": "So, at the at the bottom we have other other tasks."}, {"id": "s67", "start": 455.08, "end": 459.64, "text": "Sometimes uh maybe some of them may be good."}, {"id": "s68", "start": 459.64, "end": 462.88, "text": "They don't need to be perfect, but they're good enough if they're fast enough."}, {"id": "s69", "start": 462.88, "end": 473.36, "text": "So, that's going to be the the kind of decisions that you need to make on whether the model is good enough for your use case or not."}, {"id": "s70", "start": 473.36, "end": 476.76, "text": "Yeah, we're looking Yeah, average 1.1 seconds."}, {"id": "s71", "start": 476.76, "end": 481.56, "text": "And then the the next ones are going from 4 seconds higher."}, {"id": "s72", "start": 481.56, "end": 492.16, "text": "And you don't need a huge LLM to do this sort of work because you are generating text, you are deciding where to put blocks and how to organize the website,"}, {"id": "s73", "start": 492.16, "end": 496.48, "text": "you don't need a lots of information for that."}, {"id": "s74", "start": 496.72, "end": 502.52, "text": "So, this browsing and the queries uh is are being recorded."}, {"id": "s75", "start": 502.52, "end": 515.0, "text": "So, these are the metrics or the the the data we gather from the user, and this is fed into the LLM to personalize the site."}, {"id": "s76", "start": 515.0, "end": 524.16, "text": "And then in this example, we personalize the hero card, the products, the blog feeds, and and the navigation based based on the persona."}, {"id": "s77", "start": 524.16, "end": 532.12, "text": "Also, what are some of the buttons like our call to action navigation, you can also we can also personalize those."}, {"id": "s78", "start": 532.12, "end": 537.92, "text": "We we create and I'll show you the a for you page, which is a recommendation."}, {"id": "s79", "start": 537.92, "end": 544.04, "text": "And this is a interesting one because this you could pre-generate, right?"}, {"id": "s80", "start": 544.04, "end": 550.36, "text": "As the user browses your site, you gather these signals, and you could keep generating in this."}, {"id": "s81", "start": 550.36, "end": 554.16, "text": "So, in this case, you wouldn't need so such a big speed."}, {"id": "s82", "start": 554.16, "end": 567.04, "text": "But but that's interesting because it it would be if a user wanted to buy something, you could just say, \"Okay, for you, I will recommend these three products or or something like that.\""}, {"id": "s83", "start": 567.04, "end": 575.72, "text": "Um Yeah, and then they can see this recommendation, and if they go there, that that could be pre-fetched for them."}, {"id": "s84", "start": 575.72, "end": 580.84, "text": "And obviously, you have to keep updating it as the user navigates around the site and and so on."}, {"id": "s85", "start": 580.84, "end": 592.24, "text": "So that that's also something to consider on the cost cost implications of doing multiple generations, multiple LLM calls."}, {"id": "s86", "start": 594.0, "end": 600.76, "text": "When when the user runs a query, dynamic personalized page is shown to them."}, {"id": "s87", "start": 600.76, "end": 607.84, "text": "When the these queries are also grouped into personas or intent types."}, {"id": "s88", "start": 607.84, "end": 611.84, "text": "So what is this guy what is this guy trying to do in the site?"}, {"id": "s89", "start": 611.84, "end": 613.68, "text": "Is trying to buy something?"}, {"id": "s90", "start": 613.68, "end": 615.92, "text": "Is trying to just get information?"}, {"id": "s91", "start": 615.92, "end": 624.96, "text": "So you can get marketers to decide what type of groups, how many groups you want to have, how you want to deal with with customers."}, {"id": "s92", "start": 624.96, "end": 631.44, "text": "And the AI will choose the the blocks and the suggestions for for those groups of people."}, {"id": "s93", "start": 631.88, "end": 642.48, "text": "Um And we can adopt yes, the the different blocks, the the the sequence of the blocks and media."}, {"id": "s94", "start": 642.48, "end": 643.72, "text": "You could also do media."}, {"id": "s95", "start": 643.72, "end": 652.08, "text": "One of the things we consider is there was some a model announced today or yesterday the the nano banana light."}, {"id": "s96", "start": 652.08, "end": 658.08, "text": "So you could even generate images very fast on the fly."}, {"id": "s97", "start": 658.08, "end": 668.92, "text": "Obviously not as fast as text, but that's also something that would be I don't I don't know if it's that something like marketing people would want to have generated images."}, {"id": "s98", "start": 668.92, "end": 673.72, "text": "That depends on on the quality a lot if it's on brand."}, {"id": "s99", "start": 673.72, "end": 686.16, "text": "And the site in this example we have a a product site and then we have guides, experiences, blocks and the whole response of the LLM is grounded there."}, {"id": "s100", "start": 686.16, "end": 688.36, "text": "And there's comparisons."}, {"id": "s101", "start": 688.36, "end": 696.24, "text": "We can do comparisons between products that are tailor and the product pages can be tailored for the for the user."}, {"id": "s102", "start": 696.84, "end": 699.72, "text": "Okay, this is this is a bit of the stack."}, {"id": "s103", "start": 699.72, "end": 705.92, "text": "Um not going to spend too much time here, but the browser you have some layers."}, {"id": "s104", "start": 705.92, "end": 719.4, "text": "You have the browser where the signals get get uh from I got I got I got so I got from the from the user and then we have the back end."}, {"id": "s105", "start": 719.4, "end": 721.12, "text": "Uh we can have the back end."}, {"id": "s106", "start": 721.12, "end": 723.6, "text": "We run this some of these in in Google."}, {"id": "s107", "start": 723.6, "end": 726.08, "text": "Some of these are in our Cloudflare."}, {"id": "s108", "start": 726.08, "end": 735.96, "text": "So, the back end is basically just calling the LLM and doing some reasoning using the rack that is built on on the site to do the generation."}, {"id": "s109", "start": 736.44, "end": 753.84, "text": "And you have obviously you have to have the vector database, the inference uh machinery and uh that obvious business manager is doing the serving the the at the edge is serving the the pages and the static content."}, {"id": "s110", "start": 753.84, "end": 766.8, "text": "So, let me show you because I think this is uh so, we call this uh audience of one because the idea of in marketing they they always dream on being able to personalize"}, {"id": "s111", "start": 766.8, "end": 769.08, "text": "things for each individual."}, {"id": "s112", "start": 769.08, "end": 771.16, "text": "So, we call it yeah audience of one."}, {"id": "s113", "start": 771.16, "end": 773.44, "text": "So, I have this this site."}, {"id": "s114", "start": 773.44, "end": 777.8, "text": "Uh this is a site that is absolutely generated uh example site."}, {"id": "s115", "start": 777.8, "end": 780.96, "text": "It's a coffee uh machinery."}, {"id": "s116", "start": 780.96, "end": 788.52, "text": "So, I can go and and read some stories and I can go and look at some products."}, {"id": "s117", "start": 788.64, "end": 791.76, "text": "Let's go and look at this product."}, {"id": "s118", "start": 791.76, "end": 795.64, "text": "I can spend some time here."}, {"id": "s119", "start": 796.56, "end": 800.72, "text": "Uh let's go and click here."}, {"id": "s120", "start": 800.72, "end": 813.04, "text": "Okay, so I'm I'm browsing around the site and I have this debugging tool thing uh which Uh let me go here, I think."}, {"id": "s121", "start": 817.76, "end": 820.04, "text": "Let's see."}, {"id": "s122", "start": 820.04, "end": 827.2, "text": "So, down there is the signals that the that the browsing is giving us."}, {"id": "s123", "start": 827.2, "end": 831.2, "text": "So, I don't know if you can see it much because I cannot see it much."}, {"id": "s124", "start": 831.2, "end": 836.8, "text": "The So, the user is bucketed into the exploring category."}, {"id": "s125", "start": 836.8, "end": 844.56, "text": "We have the pages that have have visited, and then we have how much time is spending on each page."}, {"id": "s126", "start": 844.56, "end": 849.72, "text": "All of this data is now available for the LLM."}, {"id": "s127", "start": 849.72, "end": 860.96, "text": "So, if I go here, I already have a for you page that was generated for me and based on my browser."}, {"id": "s128", "start": 861.76, "end": 873.76, "text": "And you will not notice that it's slightly different than everything else, but if I go here and I run a query like I want I'm looking for a coffee"}, {"id": "s129", "start": 873.76, "end": 882.52, "text": "machine to uh prepare coffee while camping."}, {"id": "s130", "start": 884.28, "end": 888.28, "text": "The site is this was just generated for me."}, {"id": "s131", "start": 888.28, "end": 892.28, "text": "And then you're going to see some things like the text is customized."}, {"id": "s132", "start": 892.28, "end": 897.32, "text": "Camping shouldn't mean compromising on your uh whatever routine."}, {"id": "s133", "start": 897.32, "end": 914.36, "text": "Uh the coffee tips for camping um machinery that are being recommended are coffee agile and um or the nano, which are good for for the for a camping trip, right?"}, {"id": "s134", "start": 914.36, "end": 917.36, "text": "So, you saw how fast this was."}, {"id": "s135", "start": 917.36, "end": 925.04, "text": "I'm going to run it here something similar that I had here and I can run it on the debug mode here."}, {"id": "s136", "start": 925.04, "end": 929.6, "text": "And you will see, let's make this bigger."}, {"id": "s137", "start": 930.2, "end": 933.48, "text": "Total time 164 seconds to generate the page."}, {"id": "s138", "start": 933.48, "end": 935.8, "text": "So, this includes a round trip to the LLM."}, {"id": "s139", "start": 935.8, "end": 945.48, "text": "This is using Cerebras Gemma 4. So, the the Gemma model from Google running on Cerebras on their very fast chips."}, {"id": "s140", "start": 945.48, "end": 950.8, "text": "Uh we get 2,300 tokens per second."}, {"id": "s141", "start": 950.8, "end": 952.56, "text": "Which is not bad."}, {"id": "s142", "start": 952.56, "end": 953.69, "text": "I would say."}, {"id": "s143", "start": 953.69, "end": 954.4, "text": "[snorts]"}, {"id": "s144", "start": 954.4, "end": 958.16, "text": "And if I run it again, uh probably something like that."}, {"id": "s145", "start": 958.16, "end": 960.4, "text": "Uh the LLM time is 1 second."}, {"id": "s146", "start": 960.4, "end": 964.48, "text": "And again, 2,200 tokens per second."}, {"id": "s147", "start": 964.48, "end": 969.44, "text": "This is something that we only dreamed about before."}, {"id": "s148", "start": 970.36, "end": 976.28, "text": "On the on this site example site, we have some other options."}, {"id": "s149", "start": 976.28, "end": 985.8389999999999, "text": "Uh so, because we we've been showing this to customers, so we have the the ability to change the different models, temper temperature, tokens, and so on."}, {"id": "s150", "start": 985.8389999999999, "end": 993.28, "text": "And we can uh we can show uh and try the different models and see how they behave."}, {"id": "s151", "start": 993.28, "end": 1002.0, "text": "Besides the automatic test with Prompt Full, then we can uh manually come and and click things and see and see how that how that works."}, {"id": "s152", "start": 1002.0, "end": 1008.44, "text": "And uh we also have uh OfOneLabs."}, {"id": "s153", "start": 1008.44, "end": 1014.96, "text": "So, we have we build this tool that generates an agentic site for any site we want."}, {"id": "s154", "start": 1014.96, "end": 1021.4, "text": "So, if somebody wants to have a demo for a customer, come here and enter the URL."}, {"id": "s155", "start": 1021.4, "end": 1023.52, "text": "In less than an hour, you have an agentic site."}, {"id": "s156", "start": 1023.52, "end": 1027.28, "text": "I did this last week with the AI engineering site."}, {"id": "s157", "start": 1027.28, "end": 1034.36, "text": "And I got this site that is just a search box and a few things."}, {"id": "s158", "start": 1035.04, "end": 1038.199, "text": "let me open it here, the full page."}, {"id": "s159", "start": 1038.199, "end": 1038.76, "text": "Not this one."}, {"id": "s160", "start": 1038.76, "end": 1040.04, "text": "Yeah, okay."}, {"id": "s161", "start": 1040.04, "end": 1045.839, "text": "So, I could say Europe AI conferences."}, {"id": "s162", "start": 1045.839, "end": 1048.76, "text": "So, these suggestions are also AI generated."}, {"id": "s163", "start": 1048.76, "end": 1060.04, "text": "And I get a page that is more focused on It should be more focused on on the on this European conferences."}, {"id": "s164", "start": 1060.04, "end": 1068.84, "text": "If I go back, did I go I can search for anything the same way I did with with the Arco."}, {"id": "s165", "start": 1068.84, "end": 1075.8, "text": "So, I as a specific There was someone that was generating a good comparison side to side."}, {"id": "s166", "start": 1075.8, "end": 1076.68, "text": "Let me see if this one."}, {"id": "s167", "start": 1076.68, "end": 1077.56, "text": "Okay, here."}, {"id": "s168", "start": 1077.56, "end": 1078.68, "text": "This one."}, {"id": "s169", "start": 1078.68, "end": 1083.6, "text": "I went and this generated a page with a pretty good comparison."}, {"id": "s170", "start": 1083.6, "end": 1092.32, "text": "If I'm looking at two conferences and I need to decide, if I figure out that the user wants to do that, this is great because that gives them a side-by-side comparison"}, {"id": "s171", "start": 1092.32, "end": 1094.6, "text": "on the fly."}, {"id": "s172", "start": 1094.72, "end": 1112.92, "text": "Now, this this is I think this is cool already, but then we have I have this idea that probably the I'm a bunch of people are we are talking about is the web that is is the web the future still and so on."}, {"id": "s173", "start": 1112.92, "end": 1114.16, "text": "Nobody knows."}, {"id": "s174", "start": 1114.16, "end": 1121.96, "text": "But we can also do something with this with this audience of one, this generative sites."}, {"id": "s175", "start": 1121.96, "end": 1133.32, "text": "So, imagine you have you have your personal assistant and you ask a query through in this case through Google and you say I want to buy I don't remember what the query said."}, {"id": "s176", "start": 1133.32, "end": 1139.72, "text": "It was something like I want to buy a machine and I get this on my Google TV."}, {"id": "s177", "start": 1139.72, "end": 1140.2, "text": "Right?"}, {"id": "s178", "start": 1140.2, "end": 1144.36, "text": "So, this is absolutely personalized to my query."}, {"id": "s179", "start": 1144.36, "end": 1144.96, "text": "Okay?"}, {"id": "s180", "start": 1144.96, "end": 1147.48, "text": "No, go back."}, {"id": "s181", "start": 1148.28, "end": 1150.2, "text": "This is absolutely personalized to my query."}, {"id": "s182", "start": 1150.2, "end": 1151.72, "text": "So, I'm there in my living room."}, {"id": "s183", "start": 1151.72, "end": 1164.04, "text": "I don't need a phone, I don't need a computer, I don't need anything, just my voice and something that will kind of show me something that is absolutely personalized"}, {"id": "s184", "start": 1164.04, "end": 1166.56, "text": "to to me."}, {"id": "s185", "start": 1169.88, "end": 1171.76, "text": "Okay, so that one."}, {"id": "s186", "start": 1171.76, "end": 1180.44, "text": "So, what I was trying to show and hopefully you remember from this session is that this is now possible."}, {"id": "s187", "start": 1180.44, "end": 1182.64, "text": "It's only going to get better from here on."}, {"id": "s188", "start": 1182.64, "end": 1185.88, "text": "It's only going to get cheaper, it's only going to get faster."}, {"id": "s189", "start": 1185.88, "end": 1194.56, "text": "And you will uh be able to have uh huge personalization options for sites and for other things."}, {"id": "s190", "start": 1194.56, "end": 1197.64, "text": "And you can do this with intent driven."}, {"id": "s191", "start": 1197.64, "end": 1200.12, "text": "So, what is the what is my user trying to do?"}, {"id": "s192", "start": 1200.12, "end": 1202.8, "text": "What does my user want to buy?"}, {"id": "s193", "start": 1202.8, "end": 1204.56, "text": "These sort of questions."}, {"id": "s194", "start": 1204.56, "end": 1208.8, "text": "And you can uh assemble a page just for them."}, {"id": "s195", "start": 1208.8, "end": 1218.96, "text": "And you can also do this with uh multiple models and and eventually it's just going to be faster and faster, right?"}, {"id": "s196", "start": 1218.96, "end": 1220.44, "text": "So, that's it."}, {"id": "s197", "start": 1220.44, "end": 1224.12, "text": "Um thank you for coming and I hope you you got the idea."}, {"id": "s198", "start": 1224.12, "end": 1224.864, "text": "Thanks."}, {"id": "s199", "start": 1224.864, "end": 1226.864, "text": "[applause]"}]}, {"id": "k35LeKZEhiE", "title": "Learning on the Job: The Future of Post-Training — Raymond Feng, Applied Compute", "channel": "AI Engineer", "duration": 1100, "upload_date": null, "url": "https://www.youtube.com/watch?v=k35LeKZEhiE", "api": "/api/talks/k35LeKZEhiE.json", "summary_url": "/#k35LeKZEhiE", "transcript": {"html": "/transcripts/k35LeKZEhiE.html", "txt": "/transcripts/k35LeKZEhiE.txt", "vtt": "/transcripts/k35LeKZEhiE.vtt"}, "sentences": [{"id": "s1", "start": 12.4, "end": 13.92, "text": "Yeah, thank you, Jack."}, {"id": "s2", "start": 13.92, "end": 16.76, "text": "Um, really grateful for the opportunity to speak here."}, {"id": "s3", "start": 16.76, "end": 27.0, "text": "Today, I'm going to be sharing some of our frontier work on post training and how we envision a future where agents can learn new skills on the job."}, {"id": "s4", "start": 27.44, "end": 33.92, "text": "So, over the last year or so, we've seen agents develop really strong reasoning skills."}, {"id": "s5", "start": 33.92, "end": 46.36, "text": "And they've learned to use, uh, agentic harnesses to solve longer and longer horizon tasks, which involve many turns and tool calls on complicated environment states."}, {"id": "s6", "start": 46.48, "end": 62.76, "text": "We're seeing an increasing, uh, demand for agents that can just be deployed in a plug-and-play way into how enterprises use the agents, um, so, for instance, if they already have some method of"}, {"id": "s7", "start": 62.76, "end": 71.32, "text": "calling the agent to do a task, to do a task, they would want to be able to train a custom model to do that task instead."}, {"id": "s8", "start": 71.32, "end": 85.0, "text": "And that requires new ways of looking at post training that allow you to, um, adapt to any harness, including ones that you don't necessarily have access to the source code of."}, {"id": "s9", "start": 85.76, "end": 94.32, "text": "So, I wanted to talk about a few different levels of post training, where each one builds on top of the last."}, {"id": "s10", "start": 94.4, "end": 105.68, "text": "One way that we kind of think of this, uh, is a framework comparing it to how humans do learning, where you learn simple tasks first, and you can sort of compound your understanding"}, {"id": "s11", "start": 105.68, "end": 108.03999999999999, "text": "to more and more complicated tasks."}, {"id": "s12", "start": 108.03999999999999, "end": 122.72, "text": "So, over the last year, we've sort of, I would say, mastered or gotten a lot of reps with these simple single-turn Q&A tasks and um some longer horizon synthetic environment tasks."}, {"id": "s13", "start": 122.72, "end": 132.56, "text": "But, what we're increasingly seeing is we want to be able to adapt to custom harnesses and be able to train directly on those instead."}, {"id": "s14", "start": 132.56, "end": 146.0, "text": "And we kind of think of those kind of like internships where you want to the model to do a specific task, but you don't necessarily know how exactly the task will play out because you don't own the harness."}, {"id": "s15", "start": 146.0, "end": 158.56, "text": "And then finally, I would want to share some visions we have for the future of the custom model training space, where we think that there will be these kind of agentic citizens, which you can just deploy once,"}, {"id": "s16", "start": 158.56, "end": 166.6, "text": "and they'll be able to adapt to many different types of out of distribution tasks and learn from their interactions."}, {"id": "s17", "start": 167.72, "end": 174.16, "text": "So first, I just want to talk about the training setup for these simple Q&A tasks."}, {"id": "s18", "start": 174.88, "end": 182.36, "text": "We have something that looks like this, where you have an orchestrator, and the orchestrator is in charge of driving the rollouts."}, {"id": "s19", "start": 182.36, "end": 187.56, "text": "The orchestrator holds a task back, which you can think of for now is just a simple prompt and answer."}, {"id": "s20", "start": 187.56, "end": 192.959, "text": "So, something like a math question and a corresponding numerical answer."}, {"id": "s21", "start": 193.04, "end": 197.84, "text": "Um the orchestrator will send this prompt to a model and then get an answer back."}, {"id": "s22", "start": 197.84, "end": 200.72, "text": "Then it will send the answer to a grader and have it be graded."}, {"id": "s23", "start": 200.72, "end": 208.4, "text": "So, once all of this is done, we want to improve our model based on that interaction or maybe like a batch of interactions."}, {"id": "s24", "start": 208.4, "end": 215.72, "text": "And the way we do that is through a training engine, which takes in the graded chats and produces a weight update."}, {"id": "s25", "start": 215.72, "end": 219.88, "text": "That weight update is then synced to some inference engines."}, {"id": "s26", "start": 219.88, "end": 232.0, "text": "And once those inference engines are updated, then we can start this entire process over again, where the orchestrator will have like new problems to um send to the model completion endpoint,"}, {"id": "s27", "start": 232.0, "end": 236.72, "text": "and then you'll be able to get more chats, grade them, and train again."}, {"id": "s28", "start": 236.72, "end": 250.72, "text": "The key thing to note here is that the only thing you need for improving your model is the graded chats in some format, and once you have those, the training engine can compute weight updates to improve your model."}, {"id": "s29", "start": 251.16, "end": 258.92, "text": "Uh what's important here is that the chats are in a very specific format because we're sort of constraining everything to be inside of our training stack."}, {"id": "s30", "start": 258.92, "end": 264.76, "text": "So, in this simple setup for Q&A, you don't have anything living outside of the training stack."}, {"id": "s31", "start": 264.76, "end": 274.08, "text": "You You basically have the code of how to run the rollout and how everything is formatted, so it's like in a very controlled environment."}, {"id": "s32", "start": 274.8, "end": 280.56, "text": "However, this is kind of limited because we can only kind of do single-turn tasks in this way."}, {"id": "s33", "start": 280.56, "end": 291.12, "text": "If we want to do longer and long-horizon tasks, and we want to build like higher-order skills into our models, we need to also increase the complexity of our environment."}, {"id": "s34", "start": 291.12, "end": 300.12, "text": "So, with synthetic environments, we have a very similar setup, but we offload a lot of the environment state um outside of the training stack."}, {"id": "s35", "start": 300.12, "end": 314.68, "text": "So, you still have the same orchestrator um from before, but um the task back is maybe a little bit more complicated, and the environment state is uh living outside of the training stack."}, {"id": "s36", "start": 314.68, "end": 323.12, "text": "So, the task back might now include things like tool cost specs or like maybe an initial state for your environment, like a file system."}, {"id": "s37", "start": 323.12, "end": 336.36, "text": "And the orchestrator is now in charge of running many turns in a in series, where maybe first they ask the model for how it wants to respond, and then if the model wants to call some tools, it'll then call the sandbox"}, {"id": "s38", "start": 336.36, "end": 343.32, "text": "to actually like modify the environment state or read the environment state, and then return those results back to the model."}, {"id": "s39", "start": 343.32, "end": 351.72, "text": "After all that is said and done, you get a full task trace out of this, um, and that task trace is then sent to a grader for grading."}, {"id": "s40", "start": 351.72, "end": 361.2, "text": "And very similar to what we had before, you'll be able to take the graded chats, you'll be able to then use them to do a weight update."}, {"id": "s41", "start": 361.2, "end": 373.24, "text": "The main thing to highlight here is that this orchestrator and sandbox setup is replayable, which is basically just saying that for any specific prompt, you can always like roll back to the initial state and like rerun it."}, {"id": "s42", "start": 373.24, "end": 376.6, "text": "Um, you can do that in parallel or you can do that in series."}, {"id": "s43", "start": 376.6, "end": 392.919, "text": "But, the reason that's important is because the main sort of method that we use for reinforcement learning today is GRPO, and that involves comparing many rollouts for the same prompt, and then comparing like relatively"}, {"id": "s44", "start": 392.919, "end": 394.88, "text": "which one is better than the other."}, {"id": "s45", "start": 394.88, "end": 406.68, "text": "And the training engine will then up like make an edit to the model to upweight the trajectories that were more successful, and then downweight the ones that were less successful."}, {"id": "s46", "start": 408.44, "end": 423.08, "text": "So, some challenges that we face in this setup is that the environment is something that you want to basically, uh, use to replicate reality, so that after you're done training, like the improvements that you've seen actually translate to"}, {"id": "s47", "start": 423.08, "end": 425.28, "text": "when you deploy these models into production."}, {"id": "s48", "start": 425.28, "end": 435.8, "text": "And the main sort of problem is like has kind of two names, which are both the same problem, environment fidelity and reward hacking."}, {"id": "s49", "start": 435.8, "end": 447.52, "text": "Essentially, the agent is exposed to an environment and sort of any, uh, any quirks of your environment will end up being something that your agent may like learn a model of."}, {"id": "s50", "start": 447.52, "end": 460.08, "text": "So, we have some examples that we've seen where in a trading run in the past, we had some like networking issues causing our environment to have tool calls that failed maybe around 10% of the time."}, {"id": "s51", "start": 460.08, "end": 467.24, "text": "If that is the case, then we actually saw that the model would then start outputting shorter and shorter responses."}, {"id": "s52", "start": 467.24, "end": 472.8, "text": "Now, this was really surprising to us because in our reward function, we actually didn't have any length penalty."}, {"id": "s53", "start": 472.8, "end": 483.84, "text": "So, like we we couldn't really tell why this was happening, but really what's going on here is if you think about maybe the model is like a human like walking along a sidewalk and like"}, {"id": "s54", "start": 483.84, "end": 496.68, "text": "the tool call failures are like potholes in the sidewalk, like it makes a lot of sense that because there's so many potholes, the model doesn't want to run for that long uh because it might fall in a pothole and then get a zero reward for the rollout."}, {"id": "s55", "start": 496.68, "end": 506.08, "text": "Um and then conversely, um it's also possible that your model just learns to like output more and more gibberish over time depending on like what your environment looks like."}, {"id": "s56", "start": 506.08, "end": 519.4, "text": "So, in a different case, we had a training run where we um have sandbox timeouts uh just so that they don't run forever, and we usually like filter out the rollouts that timed out from being trained on."}, {"id": "s57", "start": 519.4, "end": 533.44, "text": "One thing we saw was that if your tool calls take a long time, then if the model feels like the problem is really hard, it will actually just be incentivized to like abuse the tool calls and just like call a lot of them in quick succession"}, {"id": "s58", "start": 533.44, "end": 536.48, "text": "and try to time out the sandbox so it avoids getting a reward of zero."}, {"id": "s59", "start": 536.48, "end": 540.08, "text": "It just gets the rollout dropped."}, {"id": "s60", "start": 540.16, "end": 563.0, "text": "So, as we scale to like more and more complicated tasks, the the task of like replicating these environments becomes increasingly difficult because it's very, very difficult to like perfectly simulate reality and sort of any mistake that you make, even if it's not intentional, will end up inducing these like subtle undesirable behaviors in your model."}, {"id": "s61", "start": 563.0, "end": 573.92, "text": "So, that brings us to our next topic of bring your own harness, where we're basically asking like if the agent learns the exact environment distribution, why don't we just"}, {"id": "s62", "start": 573.92, "end": 575.64, "text": "use that for our training?"}, {"id": "s63", "start": 575.64, "end": 580.72, "text": "Like just directly the real environment, you will no longer need to uh replicate anything."}, {"id": "s64", "start": 580.72, "end": 585.0, "text": "You can just like use exactly how it's going to be used in production."}, {"id": "s65", "start": 585.0, "end": 589.08, "text": "This solves a lot of problems and sounds really good."}, {"id": "s66", "start": 589.08, "end": 594.6, "text": "The architecture looks something like this where we now have almost everything outside of our training stack."}, {"id": "s67", "start": 594.6, "end": 603.12, "text": "The only thing we have left is the model completion endpoint and some way to uh record the requests and responses that go in and out of the model."}, {"id": "s68", "start": 603.12, "end": 614.76, "text": "Everything else kind of lives outside of the training stack and can be run in whatever fashion uh that like an existing enterprise or like customer might be using."}, {"id": "s69", "start": 614.76, "end": 624.76, "text": "So, these would be like existing enterprise harnesses and essentially the reason this is nice is because we can meet customers where they're at."}, {"id": "s70", "start": 624.76, "end": 635.08, "text": "Like, if they're already using the model in a certain way, we can just take our like training methodology and just like plug it right in and then we can help them improve the model for like"}, {"id": "s71", "start": 635.08, "end": 637.24, "text": "exactly the way that they're using it."}, {"id": "s72", "start": 637.24, "end": 643.52, "text": "So, all the orchestration loops and logic will now live outside of the training stack."}, {"id": "s73", "start": 643.52, "end": 663.16, "text": "Now, this sounds really good, but um This sounds really good, but the challenge here is in The challenge here is in the like data where I as you're deploying this into"}, {"id": "s74", "start": 663.16, "end": 678.04, "text": "uh production and you have less and less control over how the rollouts uh play out, you also have like less signal to learn from because the data is not in like a familiar format."}, {"id": "s75", "start": 678.28, "end": 682.2, "text": "And this topic is touched on in a related work by Nvidia."}, {"id": "s76", "start": 682.2, "end": 694.56, "text": "Uh this is like a paper from around a month ago where they introduce uh Polar, which is essentially a way to think about transitioning from a harness where you are kind of in charge of micro managing"}, {"id": "s77", "start": 694.56, "end": 699.0, "text": "every aspect of the rollouts, kind of like what we were previously talking about."}, {"id": "s78", "start": 699.0, "end": 709.28, "text": "And transitioning to some method of just uh listening in on a black box harness, and you would no longer know exactly what the logic in here is."}, {"id": "s79", "start": 711.48, "end": 720.04, "text": "So, some challenges is that some challenges we face in this setting are non-re-playability and offline or off-policy data."}, {"id": "s80", "start": 720.04, "end": 730.64, "text": "I think both of these are describing the same issue, which is just that because we've moved so much of the logic outside of our training stock, we just don't have any way of"}, {"id": "s81", "start": 730.64, "end": 735.12, "text": "like enforcing invariants or like data structures that we like."}, {"id": "s82", "start": 735.12, "end": 742.88, "text": "We have to be more flexible about the way we do training, and because of that, it just becomes harder to train your model and it may create an update."}, {"id": "s83", "start": 742.88, "end": 752.96, "text": "So, an example would be for GRPO, which is like the traditional method, you would want to have many rollouts in parallel for your task, and that may not be possible anymore."}, {"id": "s84", "start": 752.96, "end": 771.28, "text": "If you think about um suppose like a customer chat customer support chat, and you have a record of how one of your chats went, there's not really a way that you could then go back and think, \"Oh, if I like said or if I responded in this other way, like would the user have been happier?\""}, {"id": "s85", "start": 771.28, "end": 776.32, "text": "Like there's no way to then get the user's response again."}, {"id": "s86", "start": 776.72, "end": 786.6, "text": "But, we're optimistic because like we think that humans can do this kind of learning, and so it should be possible to like formulate some kind of method that would work for models as well."}, {"id": "s87", "start": 786.6, "end": 800.12, "text": "Like, if a human was in a customer support chat, they could understand somehow that like based on the customer's reaction, like what they said was wrong or what they said was good, and then be able to like internalize improvements"}, {"id": "s88", "start": 800.12, "end": 802.48, "text": "uh for for the future."}, {"id": "s89", "start": 802.48, "end": 808.92, "text": "So, I want to talk about some of the frontier research directions we have um towards like solving this problem."}, {"id": "s90", "start": 808.92, "end": 815.48, "text": "There's kind of three main topics, which are self-distillation, automated data pipelines, and qualitative feedback ingestion."}, {"id": "s91", "start": 815.48, "end": 824.28, "text": "Self-distillation is a pretty new technique, which is still um, I would say relatively like narrowly scoped."}, {"id": "s92", "start": 824.28, "end": 835.76, "text": "So, we've seen successes in inducing like specific new behaviors with models, but it's it's still an open uh, research question of like how general can we push it?"}, {"id": "s93", "start": 835.76, "end": 850.2, "text": "Automated data pipelines is an idea which maybe if you take like a big batch of traces, um, you would be able to like automatically like flag undesirable behaviors or failure modes, and then be able to like put together a"}, {"id": "s94", "start": 850.2, "end": 857.56, "text": "like nice batch of training data, um, automatically, and then send that to the model and help it improve."}, {"id": "s95", "start": 857.56, "end": 870.2, "text": "Currently, this is like pretty manual or like human in the loop, where like we go through traces ourselves, and we're like looking for looking for these failure modes manually, and then like describing"}, {"id": "s96", "start": 870.2, "end": 875.32, "text": "how we can improve the model, and then um, looking curating those data sets ourselves."}, {"id": "s97", "start": 875.32, "end": 879.2, "text": "And then finally, I I think an interesting direction is qualitative feedback ingestion."}, {"id": "s98", "start": 879.2, "end": 887.2, "text": "So, as you move to these like production settings, sometimes you don't have access to like a clear-cut binary grade or like a numerical grade."}, {"id": "s99", "start": 887.2, "end": 894.64, "text": "Um, often times, what you receive back is like, \"Hey, for this chat, the customer had this like piece of feedback.\""}, {"id": "s100", "start": 894.64, "end": 904.28, "text": "Um, if we can find a way to update our models based on that information, uh, that would also be prove extremely helpful."}, {"id": "s101", "start": 904.28, "end": 914.52, "text": "Um, and in fact, like self-distillation is one way in which we're exploring how we can do that, but it's like a pretty um, it's still a pretty open question."}, {"id": "s102", "start": 916.28, "end": 928.92, "text": "And then finally, I wanted to share a little bit about a vision for what the future of post-editing might look like if we sort of extrapolate out and take this sort of progression to its end."}, {"id": "s103", "start": 929.32, "end": 939.2, "text": "I think eventually we might reach a setting where instead of just limiting ourselves to thinking about a specific task that we can improve the model on, we can actually just"}, {"id": "s104", "start": 939.2, "end": 944.6, "text": "think of the model as this one deployment that can interact in many, many different settings."}, {"id": "s105", "start": 944.6, "end": 951.28, "text": "And like the task that you think about might just be the task of improving yourself on everything."}, {"id": "s106", "start": 951.28, "end": 958.56, "text": "Um and this model may be used for all sorts of different tasks, maybe across different users as well."}, {"id": "s107", "start": 958.56, "end": 971.0, "text": "And be able to sort of do some kind of reflection or introspection on like okay, for this sort of type of interaction, here's how I like self-evaluate and think that I'm doing."}, {"id": "s108", "start": 971.0, "end": 975.28, "text": "And then for this other type of interaction, um here's how I think I'm doing."}, {"id": "s109", "start": 975.28, "end": 985.4, "text": "And then being able to automatically take these interactions and compute weight updates from them and improve."}, {"id": "s110", "start": 987.44, "end": 999.4, "text": "And so, yeah, going back to the point that the agent learns every nook and cranny in your environment, um the exact environmental distribution, what if like the environment was just like every interaction that the agent ever has?"}, {"id": "s111", "start": 999.4, "end": 1004.8, "text": "And then in addition, we had some way that the model could evaluate itself."}, {"id": "s112", "start": 1004.8, "end": 1020.839, "text": "Um basically one one like question that we've Or sorry, one challenge that we've seen is like if you're only focusing on like what improving on one task at a time or like flagging one failure mode at a time,"}, {"id": "s113", "start": 1020.839, "end": 1031.079, "text": "you're kind of playing a game of Whac-A-Mole where as soon as a new thing pops up, you need to scramble and like create new data or new environments and improve the model that way."}, {"id": "s114", "start": 1031.079, "end": 1046.8, "text": "With this kind of like self-improving system that understands interactions from like understands every interaction from the environment you would like kind of get around this problem and you wouldn't need to worry about it anymore."}, {"id": "s115", "start": 1048.439, "end": 1063.16, "text": "So I want to leave people on this quote from a paper on a year ago which I find extremely relevant now which is that AI is at the cusp of a new period in which experience will become the dominant medium of improvement"}, {"id": "s116", "start": 1063.16, "end": 1068.64, "text": "and ultimately dwarf the scale of human data used in today's systems."}, {"id": "s117", "start": 1071.72, "end": 1072.92, "text": "And yeah."}, {"id": "s118", "start": 1072.92, "end": 1080.84, "text": "If you all have any questions I'm happy to take them after and uh Yeah, you can also email me at that address."}, {"id": "s119", "start": 1080.84, "end": 1082.727, "text": "Thank you."}, {"id": "s120", "start": 1082.727, "end": 1084.727, "text": "[applause]"}, {"id": "s121", "start": 1097.137, "end": 1099.137, "text": "[music]"}]}, {"id": "lRa9sPaMyy4", "title": "Your Code Has Bugs. Lean4 Has Proofs: Formal Verification for Engineers — Varun Pant, AWS", "channel": "AI Engineer", "duration": 607, "upload_date": null, "url": "https://www.youtube.com/watch?v=lRa9sPaMyy4", "api": "/api/talks/lRa9sPaMyy4.json", "summary_url": "/#lRa9sPaMyy4", "transcript": {"html": "/transcripts/lRa9sPaMyy4.html", "txt": "/transcripts/lRa9sPaMyy4.txt", "vtt": "/transcripts/lRa9sPaMyy4.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.88, "end": 16.36, "text": "Coding agents are generating more code than ever."}, {"id": "s3", "start": 16.36, "end": 21.36, "text": "Builders are generating hundreds and thousands of PRs every week."}, {"id": "s4", "start": 21.36, "end": 24.36, "text": "How do you know that this is correct?"}, {"id": "s5", "start": 24.72, "end": 26.76, "text": "Using LM as a judge for the code?"}, {"id": "s6", "start": 26.76, "end": 29.12, "text": "Well, that's probabilistic."}, {"id": "s7", "start": 29.12, "end": 30.32, "text": "Tests?"}, {"id": "s8", "start": 30.32, "end": 33.48, "text": "They only check some inputs, not all."}, {"id": "s9", "start": 33.48, "end": 37.68, "text": "Human code review doesn't scale to match agent speed."}, {"id": "s10", "start": 37.68, "end": 42.32, "text": "None of these can say for all inputs the code is correct."}, {"id": "s11", "start": 42.32, "end": 44.56, "text": "Formal verification can."}, {"id": "s12", "start": 44.56, "end": 45.8, "text": "Hi, I'm Varun Pant."}, {"id": "s13", "start": 45.8, "end": 51.32, "text": "I build AI products at AWS leading teams at in formal verification."}, {"id": "s14", "start": 51.36, "end": 56.04, "text": "Formal verification provides mathematical proof that code is correct."}, {"id": "s15", "start": 56.04, "end": 57.72, "text": "For all inputs."}, {"id": "s16", "start": 57.72, "end": 65.84, "text": "You write what correct means, which is the specification, and a formal verification tool proves that your code satisfies it."}, {"id": "s17", "start": 65.84, "end": 70.8, "text": "If the proof passes, it holds for every possible input."}, {"id": "s18", "start": 71.92, "end": 73.92, "text": "How do you use this?"}, {"id": "s19", "start": 73.92, "end": 78.96000000000001, "text": "Well, one way is back driven development, for example, with Kiro."}, {"id": "s20", "start": 79.2, "end": 83.28, "text": "You write what the specification is, which is what correct means."}, {"id": "s21", "start": 83.28, "end": 92.36, "text": "Either you write it formally, for example, directly in Lean, or you write it in natural language, and you let the AI auto formalize it."}, {"id": "s22", "start": 92.36, "end": 93.96000000000001, "text": "Now, this is really important."}, {"id": "s23", "start": 93.96000000000001, "end": 96.36, "text": "You then validate the specification."}, {"id": "s24", "start": 96.36, "end": 101.03999999999999, "text": "So, either the human reviews it, or you test that it holds on some inputs."}, {"id": "s25", "start": 101.03999999999999, "end": 103.92, "text": "And this is important because the specification is upstream."}, {"id": "s26", "start": 103.92, "end": 107.68, "text": "It's a living, breathing artifact that the builder interacts with."}, {"id": "s27", "start": 107.68, "end": 109.4, "text": "You want this to be correct."}, {"id": "s28", "start": 109.4, "end": 112.92, "text": "Everything else is downstream from this."}, {"id": "s29", "start": 112.92, "end": 117.64, "text": "The AI coding agent then goes and implements from the specification."}, {"id": "s30", "start": 117.64, "end": 123.96, "text": "And the formal verification tool proves that the implementation matches the specification."}, {"id": "s31", "start": 124.68, "end": 129.95999999999998, "text": "So, humans own the specification and machines own the code and proof."}, {"id": "s32", "start": 130.84, "end": 134.36, "text": "Lean is a programming language and a proof assistant."}, {"id": "s33", "start": 134.36, "end": 137.92000000000002, "text": "It is the same language for the definitions and proofs."}, {"id": "s34", "start": 137.92000000000002, "end": 140.48, "text": "There's no translation layer."}, {"id": "s35", "start": 140.48, "end": 143.92000000000002, "text": "It is implemented in Lean, which means it's very extensible."}, {"id": "s36", "start": 143.92000000000002, "end": 144.88, "text": "And this is important."}, {"id": "s37", "start": 144.88, "end": 147.4, "text": "It has a small trusted kernel."}, {"id": "s38", "start": 147.4, "end": 151.68, "text": "Proofs can be exported and independently checked."}, {"id": "s39", "start": 153.52, "end": 159.28, "text": "So, here's an example of a Lean file which has both the code and proof in the same language."}, {"id": "s40", "start": 159.28, "end": 164.4, "text": "At the top, you'll see the code, which is a function that reverses a list in Lean."}, {"id": "s41", "start": 164.4, "end": 167.92000000000002, "text": "So, reverse of one, two, and three gives three, two, and one."}, {"id": "s42", "start": 167.92000000000002, "end": 171.0, "text": "And right in the middle, you'll see a theorem."}, {"id": "s43", "start": 171.0, "end": 172.92000000000002, "text": "This is the proof."}, {"id": "s44", "start": 172.92000000000002, "end": 184.28, "text": "And this theorem prover approves a property which says that reverse of A plus B is in fact reverse of B plus reverse of A. And this holds for every possible input."}, {"id": "s45", "start": 184.28, "end": 185.44, "text": "How do you do this?"}, {"id": "s46", "start": 185.44, "end": 189.36, "text": "You have something called as tactics which do the work, which we'll get to in a second."}, {"id": "s47", "start": 189.36, "end": 192.36, "text": "And the kernel, remember the small trusted kernel?"}, {"id": "s48", "start": 192.36, "end": 195.12, "text": "That checks the work."}, {"id": "s49", "start": 196.2, "end": 200.04, "text": "A good analogy to understand the Lean proof assistant is that of chess."}, {"id": "s50", "start": 200.04, "end": 203.2, "text": "So, in chess, your goal is to checkmate the opponent."}, {"id": "s51", "start": 203.2, "end": 204.8, "text": "And you make a bunch of moves."}, {"id": "s52", "start": 204.8, "end": 207.6, "text": "You move the knight, you move the bishop."}, {"id": "s53", "start": 207.6, "end": 212.88, "text": "Similarly, in Lean, you have a bunch of tactics which are your moves."}, {"id": "s54", "start": 212.88, "end": 214.72, "text": "And it's the same chess board."}, {"id": "s55", "start": 214.72, "end": 216.04, "text": "It's interactive."}, {"id": "s56", "start": 216.04, "end": 219.959, "text": "You want to prove the goal, the theorem, checkmate."}, {"id": "s57", "start": 219.959, "end": 222.0, "text": "And you're kind of going down a tree."}, {"id": "s58", "start": 222.0, "end": 225.04, "text": "So, you're traversing the tree, you're trying different tactics."}, {"id": "s59", "start": 225.04, "end": 231.2, "text": "Maybe for some goals, you're not able to prove it, so you backtrack and then you try another a branch of the tree."}, {"id": "s60", "start": 231.2, "end": 233.88, "text": "Very similar to chess."}, {"id": "s61", "start": 233.88, "end": 242.52, "text": "And finally, you get a goal that hopefully proves the theorem, and then that small independent kernel confirms and checks it."}, {"id": "s62", "start": 243.52, "end": 245.48, "text": "The kernel catches the mistake."}, {"id": "s63", "start": 245.48, "end": 251.16, "text": "So, here's an example at the top where an incor- incorrect proof is rejected immediately."}, {"id": "s64", "start": 251.16, "end": 254.68, "text": "And you only need to trust the small kernel."}, {"id": "s65", "start": 254.68, "end": 257.32, "text": "The good thing is that you can have multiple independent kernels."}, {"id": "s66", "start": 257.32, "end": 259.079, "text": "You yourself can actually go write one."}, {"id": "s67", "start": 259.079, "end": 260.64, "text": "It's completely open source."}, {"id": "s68", "start": 260.64, "end": 263.76, "text": "You have kernels in C++, Rust, Lean."}, {"id": "s69", "start": 263.76, "end": 270.4, "text": "That's uh a link to the Arena Lang where you can go and add a kernel."}, {"id": "s70", "start": 270.68, "end": 275.04, "text": "So, let's look at some examples where you can put this to practice."}, {"id": "s71", "start": 275.04, "end": 281.36, "text": "The first one is having the specification and code both being in Lean."}, {"id": "s72", "start": 281.76, "end": 284.0, "text": "Now, this is open source Andreo."}, {"id": "s73", "start": 284.0, "end": 287.56, "text": "AI converted zlib, which is a C compression library, to Lean."}, {"id": "s74", "start": 287.56, "end": 292.36, "text": "Now, granted this happened over a week or so."}, {"id": "s75", "start": 292.72, "end": 303.52, "text": "But, kind of going back to our specification methodology that we mentioned where you had specification at the top and then verification for the code, we'll kind of see the same thing here."}, {"id": "s76", "start": 303.52, "end": 311.0, "text": "So, the natural language specification says that you decompress the output of compress returning the original data."}, {"id": "s77", "start": 311.0, "end": 314.44, "text": "And then, you have an AI that generates the formal spec."}, {"id": "s78", "start": 314.44, "end": 316.28, "text": "Now, remember this is important."}, {"id": "s79", "start": 316.28, "end": 319.08, "text": "Checking the specification is key."}, {"id": "s80", "start": 319.08, "end": 328.76, "text": "After you do that, the AI goes and writes your code in Lean, and then generates these helper lemma subgoals, and proves the theorem."}, {"id": "s81", "start": 328.76, "end": 334.4, "text": "And at the bottom, you can see that it's verified with that small independent kernel."}, {"id": "s82", "start": 334.48, "end": 339.56, "text": "So, what you just saw was that AI decomposed the problem into lemmas, which are subgoals."}, {"id": "s83", "start": 339.56, "end": 341.64, "text": "It proved each of them using tactics."}, {"id": "s84", "start": 341.64, "end": 344.64, "text": "Remember the chess moves that we were making?"}, {"id": "s85", "start": 344.64, "end": 347.76, "text": "And it assembled it into a final theorem."}, {"id": "s86", "start": 347.76, "end": 349.08, "text": "Checkmate."}, {"id": "s87", "start": 349.08, "end": 351.44, "text": "And the kernel checked it."}, {"id": "s88", "start": 351.44, "end": 354.68, "text": "And this particular example had 32,000 lines of proof."}, {"id": "s89", "start": 354.68, "end": 357.96, "text": "So, it was pretty big."}, {"id": "s90", "start": 358.84000000000003, "end": 359.96, "text": "Let's take another example."}, {"id": "s91", "start": 359.96, "end": 361.64, "text": "What if you have code in Rust?"}, {"id": "s92", "start": 361.64, "end": 366.72, "text": "Well, you can write the functional specification of it or the model in Lean."}, {"id": "s93", "start": 366.72, "end": 368.72, "text": "An example of that is Cedar."}, {"id": "s94", "start": 368.72, "end": 375.88, "text": "Cedar is an open-source authorization policy language, which is used by AWS verified permissions and access."}, {"id": "s95", "start": 375.88, "end": 379.28, "text": "The specification of Cedar is written in Lean."}, {"id": "s96", "start": 379.28, "end": 382.32, "text": "The production code runs in Rust."}, {"id": "s97", "start": 382.32, "end": 383.28, "text": "Why is this important?"}, {"id": "s98", "start": 383.28, "end": 385.48, "text": "Because let's take an example."}, {"id": "s99", "start": 385.48, "end": 387.72, "text": "You have forbid Trump's permit."}, {"id": "s100", "start": 387.72, "end": 392.8, "text": "You want to make sure that for any forbid policy being satisfied, the request is always denied."}, {"id": "s101", "start": 392.8, "end": 395.12, "text": "This is key."}, {"id": "s102", "start": 396.32, "end": 405.68, "text": "Here you can see the example of what I was talking about, which is you have the Rust production code and you have the functional specification in Lean, and you run differential random testing"}, {"id": "s103", "start": 405.68, "end": 410.12, "text": "to check that both of those for the same inputs give the same output."}, {"id": "s104", "start": 410.12, "end": 414.96, "text": "And there's about 100 million differential random tests uh run nightly."}, {"id": "s105", "start": 414.96, "end": 418.52, "text": "No version ships until this is satisfied."}, {"id": "s106", "start": 419.68, "end": 421.44, "text": "Let's take another example."}, {"id": "s107", "start": 421.44, "end": 427.36, "text": "What if you have code in Rust and you want to deductively verify with Lean or solvers?"}, {"id": "s108", "start": 427.36, "end": 430.96, "text": "Before we go there, let's quickly talk about this new term solvers."}, {"id": "s109", "start": 430.96, "end": 437.96, "text": "So, remember we spoke of Lean being this chessboard interactive where you're making a bunch of moves trying to checkmate."}, {"id": "s110", "start": 437.96, "end": 441.72, "text": "A solver is a calculator, a very powerful one."}, {"id": "s111", "start": 441.72, "end": 445.36, "text": "You feed in a formula and it returns an output."}, {"id": "s112", "start": 445.36, "end": 449.44, "text": "In this case, satisfiable or unsatisfiable."}, {"id": "s113", "start": 450.919, "end": 455.2, "text": "So, an example of this is Verus, also an open-source tool."}, {"id": "s114", "start": 455.2, "end": 459.56, "text": "It uses this solver, this very powerful calculator, Z3."}, {"id": "s115", "start": 459.56, "end": 467.84000000000003, "text": "And if folks are familiar with adding annotations, it's kind of similar to that where you can add specifications in the form of that."}, {"id": "s116", "start": 467.84000000000003, "end": 470.12, "text": "And the code is in line."}, {"id": "s117", "start": 470.12, "end": 476.64, "text": "So, you see these two requires and ensure keywords, that's what we call a pre and post condition."}, {"id": "s118", "start": 476.64, "end": 481.04, "text": "What must be true before and what must be true after."}, {"id": "s119", "start": 481.24, "end": 482.72, "text": "And this is a static check."}, {"id": "s120", "start": 482.72, "end": 485.44, "text": "It's enforced by the verifier and erased at runtime."}, {"id": "s121", "start": 485.44, "end": 488.64, "text": "So, almost like ghost code."}, {"id": "s122", "start": 489.48, "end": 498.76, "text": "Another example of this is Eneus, which uses the mid-level intermediate representation for Rust and does a functional translation to Lean."}, {"id": "s123", "start": 498.76, "end": 504.32, "text": "And right after that, you use the same theorem prover, the same chessboard that we spoke of."}, {"id": "s124", "start": 506.24, "end": 512.159, "text": "Now, you may be asking, well, what if I have any programming language?"}, {"id": "s125", "start": 512.159, "end": 517.32, "text": "We at AWS have been working on an open-source tool called Strata."}, {"id": "s126", "start": 517.32, "end": 526.16, "text": "This is work in progress, but the idea is that you can have any programming language and you yourself can create what we call a dialect."}, {"id": "s127", "start": 526.16, "end": 527.76, "text": "Think of this like a compiler."}, {"id": "s128", "start": 527.76, "end": 535.76, "text": "You have a high-level intermediate representation and you lower it down to a low-level intermediate representation, which is what Strata core is."}, {"id": "s129", "start": 535.76, "end": 538.08, "text": "Now, this is written in Lean."}, {"id": "s130", "start": 538.08, "end": 545.72, "text": "After you have all of these programs talking in the same language, which is the Strata core, you can dispatch it to any of the engines."}, {"id": "s131", "start": 545.72, "end": 554.6, "text": "For example, the Lean proof, remember the chessboard, or the very powerful calculator, SMT solvers, or model checkers."}, {"id": "s132", "start": 557.56, "end": 559.76, "text": "So, you can get started with this today."}, {"id": "s133", "start": 559.76, "end": 569.48, "text": "You can go to Lean in in your browser with the link I pasted, and you can pick your most critical code, write what correct means, which is the specification,"}, {"id": "s134", "start": 569.48, "end": 577.12, "text": "which is very important, and then you can let your coding agent implement it and your formal verification tool prove it."}, {"id": "s135", "start": 578.56, "end": 586.4, "text": "So, hopefully in this brave new world, we have software and systems that are not probably correct, but probably correct."}, {"id": "s136", "start": 586.4, "end": 588.6, "text": "Thank you."}, {"id": "s137", "start": 601.951, "end": 603.951, "text": "[music]"}]}, {"id": "lbaXnx0KLA8", "title": "MCP Apps: Give the Model Data, Give the User a UI — Dustin Mihalik, Indeed", "channel": "AI Engineer", "duration": 934, "upload_date": null, "url": "https://www.youtube.com/watch?v=lbaXnx0KLA8", "api": "/api/talks/lbaXnx0KLA8.json", "summary_url": "/#lbaXnx0KLA8", "transcript": {"html": "/transcripts/lbaXnx0KLA8.html", "txt": "/transcripts/lbaXnx0KLA8.txt", "vtt": "/transcripts/lbaXnx0KLA8.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.52, "end": 15.76, "text": "Uh hey everyone, I'm Dustin Macholic."}, {"id": "s3", "start": 15.76, "end": 18.24, "text": "Uh I work at Indeed."}, {"id": "s4", "start": 18.24, "end": 20.76, "text": "Uh we're the number one job site in the world."}, {"id": "s5", "start": 20.76, "end": 22.72, "text": "And I have to apologize for my voice."}, {"id": "s6", "start": 22.72, "end": 25.92, "text": "I'm recovering from a cold that I had last week."}, {"id": "s7", "start": 25.92, "end": 31.76, "text": "Um Yeah, so at Indeed, we build uh job search."}, {"id": "s8", "start": 31.76, "end": 36.64, "text": "And uh I also work on a team that does AI platform."}, {"id": "s9", "start": 36.64, "end": 41.92, "text": "And I do like AI guardrails and and gateways and compliance stuff."}, {"id": "s10", "start": 41.92, "end": 47.96, "text": "Uh occasionally uh my team gets cool projects to work on because we have relationships with the vendors."}, {"id": "s11", "start": 47.96, "end": 49.88, "text": "Uh MCP apps is one of those."}, {"id": "s12", "start": 49.88, "end": 52.44, "text": "And um MCP connectors."}, {"id": "s13", "start": 52.44, "end": 55.8, "text": "So, this is a little bit of like practical MCP apps."}, {"id": "s14", "start": 55.8, "end": 59.28, "text": "They gave a great introduction uh to MCP apps."}, {"id": "s15", "start": 59.28, "end": 68.08, "text": "This is a little bit of a lessons from the trenches, uh which is a little bit of like what did we learn in building MCP and MCP apps for Claude"}, {"id": "s16", "start": 68.08, "end": 77.84, "text": "chat chat GPT and our own internal uh uh career scout, which is our uh agent that we have for job seekers."}, {"id": "s17", "start": 78.2, "end": 81.56, "text": "So, this is the this is the chat-based interface."}, {"id": "s18", "start": 81.56, "end": 84.0, "text": "So, a lot of my examples are going to be job search."}, {"id": "s19", "start": 84.0, "end": 87.36, "text": "This will I have a lot of screenshots of job searches."}, {"id": "s20", "start": 87.36, "end": 94.32, "text": "Um So, this is this is a job search, which is basically uh you know, I'm looking for barista in Austin."}, {"id": "s21", "start": 94.32, "end": 96.68, "text": "And this is a text-based response."}, {"id": "s22", "start": 96.68, "end": 98.68, "text": "And this works pretty well."}, {"id": "s23", "start": 98.68, "end": 101.75999999999999, "text": "Uh as we kind of discussed, like there's no branding here."}, {"id": "s24", "start": 101.75999999999999, "end": 103.47999999999999, "text": "There's no Indeed branding."}, {"id": "s25", "start": 103.47999999999999, "end": 107.72, "text": "Uh you know, Claude decided to say these are some jobs in Austin."}, {"id": "s26", "start": 107.72, "end": 110.24000000000001, "text": "These are some jobs in some suburbs of Austin."}, {"id": "s27", "start": 110.24000000000001, "end": 110.75999999999999, "text": "That's cool."}, {"id": "s28", "start": 110.75999999999999, "end": 112.36, "text": "That's probably good for the user."}, {"id": "s29", "start": 112.36, "end": 121.76, "text": "There may be some limitations uh of like what we can do for branding or how we can uh you know, how we can control things."}, {"id": "s30", "start": 121.76, "end": 134.12, "text": "And you'd be actually be surprised uh unless you've tried to do this yourself that um it's really hard to get Claude or ChatGPT to link to things cuz they don't want you to leave their environment."}, {"id": "s31", "start": 134.12, "end": 145.32, "text": "It makes complete sense, but uh if you get back, here's five jobs that are somewhere on the internet uh without any links, that's a terrible user experience."}, {"id": "s32", "start": 145.32, "end": 154.16, "text": "Uh so it's it took us a ridiculous number of hours and evals to make sure that like Claude would consistently link to things."}, {"id": "s33", "start": 154.16, "end": 159.92000000000002, "text": "So with MCP apps and with uh apps SDK, uh we could kind of control that."}, {"id": "s34", "start": 159.92000000000002, "end": 164.2, "text": "Uh we can decide uh you know, that we've got an apply button."}, {"id": "s35", "start": 164.2, "end": 168.68, "text": "We can decide what stuff is important that we want to highlight at the top."}, {"id": "s36", "start": 168.68, "end": 180.56, "text": "We can provide a link to view details um so that when you click it, you get uh a a pop-up, a a modal that has all the job details so you don't have to leave"}, {"id": "s37", "start": 180.56, "end": 182.16, "text": "the environment."}, {"id": "s38", "start": 182.16, "end": 188.8, "text": "So it's it's a win-win uh for for both for both uh for both companies."}, {"id": "s39", "start": 189.32, "end": 199.88, "text": "So uh MCP apps is really good, but if you're thinking about hey, I want to build an MCP app or I want to take my website, I want to put it in ChatGPT or Claude,"}, {"id": "s40", "start": 199.88, "end": 205.959, "text": "uh it's not quite just as easy as like dragging and dropping into a chat interface."}, {"id": "s41", "start": 205.959, "end": 212.6, "text": "Uh you really want to think about how you are representing the data, how you're making it available to the user."}, {"id": "s42", "start": 212.6, "end": 225.04, "text": "So if you do a very naive thing, uh which is you still call your existing APIs uh for loading data, um then it basically becomes a black box to the model,"}, {"id": "s43", "start": 225.04, "end": 225.64, "text": "right?"}, {"id": "s44", "start": 225.64, "end": 227.88, "text": "So you say, \"Hey, I want to do something.\""}, {"id": "s45", "start": 227.88, "end": 230.12, "text": "The model says, \"Cool, I'll call a tool.\""}, {"id": "s46", "start": 230.12, "end": 237.84, "text": "The tool says, \"Okay, I'm going to show some stuff, but the model has no idea what what you're displaying.\""}, {"id": "s47", "start": 237.84, "end": 244.88, "text": "So, there's all these like follow-up questions, like tell me about the first result, or please rank this list of companies."}, {"id": "s48", "start": 244.88, "end": 247.959, "text": "The model has no idea what data is being displayed."}, {"id": "s49", "start": 247.959, "end": 259.12, "text": "So, the very first rule uh for me uh building MCP apps, anything that you show to the user also needs to be provided as data to the model."}, {"id": "s50", "start": 259.12, "end": 269.32, "text": "I think this makes sense, but uh I've definitely seen some MCP apps where they just, you know, use it to inject some HTML on the page and then call some APIs,"}, {"id": "s51", "start": 269.32, "end": 272.88, "text": "uh and that's that just makes a big black box for the model."}, {"id": "s52", "start": 272.88, "end": 278.4, "text": "So, this is really easy to do uh using MCP spec and the MCP app spec."}, {"id": "s53", "start": 278.4, "end": 284.12, "text": "Uh this structured content, this is what you would already be returning if you were doing just text-based MCP."}, {"id": "s54", "start": 284.12, "end": 289.36, "text": "Um and then this resource URI, that's points to where the HTML is."}, {"id": "s55", "start": 289.36, "end": 292.6, "text": "You need to return both of these, and you need to keep them in sync, right?"}, {"id": "s56", "start": 292.6, "end": 300.0, "text": "If you add something new to the API, you make sure you add something add that same data uh back."}, {"id": "s57", "start": 300.44, "end": 315.96, "text": "So, kind of the next step um that uh that once you do that, uh you'll find is that now you've provided data to the model, and you provided this black box that it has no idea about,"}, {"id": "s58", "start": 315.96, "end": 323.04, "text": "it's still going to try and describe the it's still going to try and take the output and describe it as it normally would."}, {"id": "s59", "start": 323.04, "end": 324.72, "text": "So, you end up with like, \"Here's your display.\""}, {"id": "s60", "start": 324.72, "end": 329.24, "text": "and then here's the model doing basically the same thing that it would normally do."}, {"id": "s61", "start": 329.24, "end": 336.919, "text": "Um so, what you need to do is you need to update your description in order to tell it that you're going to be displaying stuff in your MCP app."}, {"id": "s62", "start": 336.919, "end": 350.44, "text": "Uh that way you get this like nice, you know, here's a list of you know, here's a little summary of things, and you know, the results are are are showed above the links, rather than it trying to like do a whole text-based display."}, {"id": "s63", "start": 350.44, "end": 357.84000000000003, "text": "Um you'll end up with this a little bit of a battle between like what gets displayed in UI and what gets displayed by the model."}, {"id": "s64", "start": 357.84000000000003, "end": 361.44, "text": "You can try and steer that with descriptions."}, {"id": "s65", "start": 361.44, "end": 373.08, "text": "So, even something as simple as results were automatically displayed to the user as UI components at the top of your description, your tool description, uh that covers that covers"}, {"id": "s66", "start": 373.08, "end": 374.84, "text": "quite a bit of the cases."}, {"id": "s67", "start": 374.84, "end": 384.76, "text": "Um So, that's one of the next things that you're going to want to do uh once you're providing both data and API access."}, {"id": "s68", "start": 384.76, "end": 388.0, "text": "Uh the next thing is there's these interactable pieces, right?"}, {"id": "s69", "start": 388.0, "end": 393.64, "text": "There's the apply button, there's a view details button, which pops up a big job description."}, {"id": "s70", "start": 393.64, "end": 401.36, "text": "Um this is the same case where, you know, as you interact with those, the model's not going to know necessarily what you're looking at."}, {"id": "s71", "start": 401.36, "end": 407.56, "text": "So, you click view details, you get a big modal that's here's everything about the job."}, {"id": "s72", "start": 407.84000000000003, "end": 411.68, "text": "There's once again a whole bunch of questions that the user could ask."}, {"id": "s73", "start": 411.68, "end": 415.84000000000003, "text": "Uh write a cover letter for this job, summarize this job description."}, {"id": "s74", "start": 415.84000000000003, "end": 427.6, "text": "It has no idea because you've loaded that data in either in via API or you loaded it in dynamically, uh you know, hit you return 10 jobs and user clicks on one,"}, {"id": "s75", "start": 427.6, "end": 431.12, "text": "the model has no idea which one you clicked on."}, {"id": "s76", "start": 431.12, "end": 440.24, "text": "Uh so, any information about user interactions, you also need to provide to the model."}, {"id": "s77", "start": 440.56, "end": 445.44, "text": "And uh once again, MCP abstract has a pretty easy way to handle it."}, {"id": "s78", "start": 445.44, "end": 456.0, "text": "There's this update model context um method, which lets you pass in a string uh that is So, for MCP apps, there's a single string."}, {"id": "s79", "start": 456.0, "end": 466.36, "text": "Uh so, if you like want to track multiple events over time, you kind of have to append uh multiple things to the string, but this is this is this is an example from"}, {"id": "s80", "start": 466.36, "end": 479.36, "text": "the MCP apps uh documentation where basically, you know, this is a shopping cart application and they add the total cost and all the items that are on the shopping cart so the user can ask for"}, {"id": "s81", "start": 479.36, "end": 483.395, "text": "uh you know, \"Tell me information about the items that are in my shopping cart.\""}, {"id": "s82", "start": 483.395, "end": 485.395, "text": "[snorts]"}, {"id": "s83", "start": 485.88, "end": 493.04, "text": "So, these two things give you an app that like the model could kind of see what's going on."}, {"id": "s84", "start": 493.04, "end": 506.96, "text": "Um but it doesn't necessarily make a really good MCP app yet uh because it gives you it gives you some UI that looks like what you want, but the thing that I usually do,"}, {"id": "s85", "start": 506.96, "end": 513.599, "text": "I don't give I don't give the I don't I don't give Claude uh my easy problems to solve."}, {"id": "s86", "start": 513.599, "end": 516.2, "text": "I give Claude my really hard problems to solve, right?"}, {"id": "s87", "start": 516.2, "end": 520.479, "text": "Like if I just wanted to do one search, I would go to the web and do one search."}, {"id": "s88", "start": 520.479, "end": 522.479, "text": "I want to do a whole bunch of searches."}, {"id": "s89", "start": 522.479, "end": 531.56, "text": "Uh this is this is out of date cuz there's no Sonic 5 here yet, but uh this is screenshot from 2 days ago."}, {"id": "s90", "start": 531.56, "end": 537.8, "text": "Uh but yeah, so that So, like this job search is \"Hey, I'm looking for this I'm looking for this title."}, {"id": "s91", "start": 537.8, "end": 542.44, "text": "I'm willing to relocate, so I want to search across a whole bunch of different cities."}, {"id": "s92", "start": 542.44, "end": 547.52, "text": "Um you know, I'm looking for the highest paying option, so I want you to just cherry-pick a few out of there."}, {"id": "s93", "start": 547.52, "end": 551.72, "text": "There's some industries that I absolutely don't want to work in.\""}, {"id": "s94", "start": 551.72, "end": 554.92, "text": "Text-based MCP does really well."}, {"id": "s95", "start": 554.92, "end": 557.2, "text": "Like we all see this, right?"}, {"id": "s96", "start": 557.2, "end": 561.68, "text": "Claude will do 10 different searches, 15 different searches."}, {"id": "s97", "start": 561.68, "end": 570.511, "text": "It'll filter, it'll pull out all the individual pieces, uh and then it gives you a nice table at the bottom, uh which is which is super nice."}, {"id": "s98", "start": 570.511, "end": 570.6, "text": "[snorts]"}, {"id": "s99", "start": 570.6, "end": 580.92, "text": "But with the MCP app that we were just discussing, you know, we we said, \"Hey, uh you know, my results are going to be displayed in this UI."}, {"id": "s100", "start": 580.92, "end": 588.56, "text": "Uh We know Claude Claude will call it once and then it'll be like, \"Oh, I guess the results are already displayed."}, {"id": "s101", "start": 588.56, "end": 590.4, "text": "I'm not going to like do a deep dive, right?\""}, {"id": "s102", "start": 590.4, "end": 603.12, "text": "Like it doesn't It's you as a user are not going to want 10 different carousels and Claude will also notice that like it's already been displaying some stuff and it won't call"}, {"id": "s103", "start": 603.12, "end": 605.4, "text": "to show 10 different carousels."}, {"id": "s104", "start": 605.4, "end": 615.56, "text": "Um and so what you really want to do, and this is rule three, this like supersedes all the other rules, uh which is basically you want to separate your data processing"}, {"id": "s105", "start": 615.56, "end": 618.12, "text": "from your UI rendering."}, {"id": "s106", "start": 618.12, "end": 624.877, "text": "And this particular wording I stole uh from OpenAI uh"}, {"id": "s107", "start": 624.877, "end": 624.88, "text": "[snorts]"}, {"id": "s108", "start": 624.88, "end": 629.32, "text": "OpenAI uh Apps SDK documentation."}, {"id": "s109", "start": 629.32, "end": 632.04, "text": "There's a couple places where they say this."}, {"id": "s110", "start": 632.04, "end": 638.6, "text": "Um but basically they want to You want to separate your data processing from your UI rendering."}, {"id": "s111", "start": 638.6, "end": 647.04, "text": "So the job search that we had we're just going to have that be a standard text-based MCP application."}, {"id": "s112", "start": 647.04, "end": 650.2, "text": "Claude can call that as many times as it wants."}, {"id": "s113", "start": 650.2, "end": 661.2, "text": "And then we have a render tool that either you can pass you can have the model basically pass all the data that it wants to render in or you can do a reference"}, {"id": "s114", "start": 661.2, "end": 662.2, "text": "uh to it."}, {"id": "s115", "start": 662.2, "end": 667.0, "text": "So in our particular case uh you know, we had search jobs."}, {"id": "s116", "start": 667.0, "end": 674.52, "text": "Now we have a search jobs that doesn't return any UI and we have a render jobs widget that takes a list of IDs."}, {"id": "s117", "start": 674.52, "end": 680.48, "text": "Um and so that list of IDs uh can be, you know, Claude can do a search."}, {"id": "s118", "start": 680.48, "end": 684.32, "text": "It can get a hundred different jobs that it cares about."}, {"id": "s119", "start": 684.32, "end": 685.44, "text": "It can filter those."}, {"id": "s120", "start": 685.44, "end": 690.68, "text": "It can find five that it cares about and it can show those five to the user."}, {"id": "s121", "start": 690.68, "end": 700.52, "text": "Um now as you make these like render uh as you make these render calls, you need to update the descriptions to say like where did they get the data,"}, {"id": "s122", "start": 700.52, "end": 702.92, "text": "what format the data should be."}, {"id": "s123", "start": 702.92, "end": 713.36, "text": "But it's a fairly easy fairly easy mechanism to update your tool description to say you need to always call one of these three tools first in order to get"}, {"id": "s124", "start": 713.36, "end": 716.32, "text": "the data that you're going to be using for rendering."}, {"id": "s125", "start": 716.32, "end": 727.72, "text": "So, search jobs, this is a pretty good um It's a pretty good example of of how we where we want to split data from rendering."}, {"id": "s126", "start": 727.72, "end": 736.24, "text": "I think there's a ton of other like in most industries, you can kind of come up with like, \"Hey, where do I want to you know, where do I want to split?\""}, {"id": "s127", "start": 736.24, "end": 744.96, "text": "Like I want to be I want the model to be able to explore this data and then I want it to turn around and choose to be able to render it."}, {"id": "s128", "start": 744.96, "end": 745.24, "text": "Right?"}, {"id": "s129", "start": 745.24, "end": 751.16, "text": "Like there's there's examples of you know e-commerce, right?"}, {"id": "s130", "start": 751.16, "end": 754.52, "text": "Like a bunch of e-commerce options."}, {"id": "s131", "start": 754.52, "end": 761.6, "text": "If you've got a map, you know, maybe you want to come up with like five different addresses and then you pass in addresses."}, {"id": "s132", "start": 761.6, "end": 765.52, "text": "The other thing that you can do is you can let the model be a lot more creative."}, {"id": "s133", "start": 765.52, "end": 774.218, "text": "Like one of the things that we've seen in some of this text-based stuff is that you know, the model will say like, \"This is a"}, {"id": "s134", "start": 774.218, "end": 774.24, "text": "[clears throat]"}, {"id": "s135", "start": 774.24, "end": 776.44, "text": "This is a reason why I picked this one.\""}, {"id": "s136", "start": 776.44, "end": 779.32, "text": "Or \"This is a reason why this is really good.\""}, {"id": "s137", "start": 779.32, "end": 789.72, "text": "And so, you know, potentially we can add something to the render jobs widget where you say give us an ID and a reason why you think that this is a good fit."}, {"id": "s138", "start": 789.72, "end": 795.88, "text": "Or give us an ID and highlight a section of the job description that is really good."}, {"id": "s139", "start": 795.88, "end": 808.12, "text": "Um, so you can get really creative with your render tools to be able to have to be able to give some extra character that the model can inject into those"}, {"id": "s140", "start": 808.12, "end": 813.92, "text": "so that so that you've got a much better experience for the user."}, {"id": "s141", "start": 814.12, "end": 814.174, "text": "So"}, {"id": "s142", "start": 814.174, "end": 814.24, "text": "[snorts]"}, {"id": "s143", "start": 814.24, "end": 829.32, "text": "the key takeaways right when building MCP apps, you want to focus on the data before you focus on the UI which sounds sounds opposite of you know how we were thinking about it of like hey there's all these there's these MCP apps like"}, {"id": "s144", "start": 829.32, "end": 832.84, "text": "it's how I put UI into chat GPT."}, {"id": "s145", "start": 832.84, "end": 845.44, "text": "I think if you want to really have a good MCP apps experience, you need to you need to look at and see what data do I want to what data do I want to give to the model, what data do I want it to be able to do"}, {"id": "s146", "start": 845.44, "end": 855.16, "text": "and then rendering is a side effect of of that or it's a result of the the model exploring the data."}, {"id": "s147", "start": 855.16, "end": 859.36, "text": "And then I think small composable tools, right?"}, {"id": "s148", "start": 859.36, "end": 867.36, "text": "So uh basically, you know maybe there's like two or three different ways you can search for jobs."}, {"id": "s149", "start": 867.36, "end": 876.52, "text": "We could build two or three different search tools and then there's one render tool or maybe there's like maybe there's two render tools there's one that's render a list of jobs,"}, {"id": "s150", "start": 876.52, "end": 879.6, "text": "one that's, you know, highlight one particular job."}, {"id": "s151", "start": 879.6, "end": 882.8, "text": "So you could build a bunch of much smaller tools."}, {"id": "s152", "start": 882.8, "end": 894.36, "text": "The descriptions can be fairly simple so you don't overload the model, but it gives the model flexibility about how it wants to explore the data and how it wants to render the tools."}, {"id": "s153", "start": 894.6, "end": 898.28, "text": "So that's basically basically my talk."}, {"id": "s154", "start": 898.28, "end": 901.839, "text": "I'm a few minutes few minutes fast."}, {"id": "s155", "start": 901.839, "end": 908.96, "text": "But I don't have a booth that I'm going to hang out in, but I'll I'll hang out in the hall if anyone has any questions."}, {"id": "s156", "start": 908.96, "end": 915.96, "text": "And I am either my last name or my first initial last name on most social media platforms."}, {"id": "s157", "start": 915.96, "end": 918.2, "text": "Thank you."}, {"id": "s158", "start": 932.075, "end": 933.6, "text": "[music]"}, {"id": "s159", "start": 933.6, "end": 935.6, "text": "Mhm."}]}, {"id": "mJqwmmOx4WA", "title": "How to avoid disaster when vibe-coding a billing engine — Andrew Garvin, Stripe", "channel": "AI Engineer", "duration": 1069, "upload_date": null, "url": "https://www.youtube.com/watch?v=mJqwmmOx4WA", "api": "/api/talks/mJqwmmOx4WA.json", "summary_url": "/#mJqwmmOx4WA", "transcript": {"html": "/transcripts/mJqwmmOx4WA.html", "txt": "/transcripts/mJqwmmOx4WA.txt", "vtt": "/transcripts/mJqwmmOx4WA.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.8, "end": 14.48, "text": "Hi everyone."}, {"id": "s3", "start": 14.48, "end": 15.44, "text": "My name is Andrew Garvin."}, {"id": "s4", "start": 15.44, "end": 17.359, "text": "I'm one of the co-founders of Metronome."}, {"id": "s5", "start": 17.359, "end": 23.279, "text": "Metronome, if you're not familiar, is the top platform for usage billing, which as you might imagine is taking off right now."}, {"id": "s6", "start": 23.279, "end": 28.64, "text": "Um, so much so that earlier this year we were acquired by Stripe in the largest deal that Stripe has ever done."}, {"id": "s7", "start": 28.64, "end": 33.52, "text": "Um, and what I'm going to show you today is a fun project that we've been cooking on with the Stripe team."}, {"id": "s8", "start": 33.52, "end": 38.559, "text": "Um, that is a demonstration of some of the things that we could work on together."}, {"id": "s9", "start": 38.559, "end": 43.52, "text": "Um, this is going to combine two very different uh products within Stripe."}, {"id": "s10", "start": 43.52, "end": 46.96, "text": "Um, if you haven't seen it already, I recommend looking at Stripe Projects."}, {"id": "s11", "start": 46.96, "end": 50.239, "text": "Just open up open that up on your phone while I'm going through this."}, {"id": "s12", "start": 50.239, "end": 54.16, "text": "Um, this is something that actually was launched literally the week that Metronome was acquired."}, {"id": "s13", "start": 54.16, "end": 59.039, "text": "And so, as you might imagine, the velocity of development at Stripe and at Metronome is pretty high."}, {"id": "s14", "start": 59.039, "end": 66.24, "text": "Basically, what Stripe Projects is is it's an orchestrator to allow you to operate and build your business as fast as possible."}, {"id": "s15", "start": 66.24, "end": 82.0, "text": "Um, and so in essence, what it does is it provisions a Stripe account for you as well as backend services that you may need, think like Versel, Postgress, and in this case, a metronome billing agent in order to launch a product quickly or an application quickly all through the CLI."}, {"id": "s16", "start": 82.0, "end": 91.6, "text": "Um, so the demonstration that we're going to do today is a very simple demonstration of how to get set up through Stripe projects, but you can imagine all the sorts of things that people are building on Stripe today."}, {"id": "s17", "start": 91.6, "end": 96.64, "text": "Um, one of the really cool aspects of being inside Stripe is their scale and data."}, {"id": "s18", "start": 96.64, "end": 105.84, "text": "Um, and one of the things that we've observed inside of Stripe is that the use of Stripe's CLI has exponentially increased over the course of the past five six months."}, {"id": "s19", "start": 105.84, "end": 114.479, "text": "We're thinking about all of the implications of the coding agents operating systems which we'll get into uh a greater topic on later in this demonstration."}, {"id": "s20", "start": 114.479, "end": 120.96, "text": "Um so the beginning part was sort of the thesis for this is how to avoid dis disaster when vibe coding a billing engine."}, {"id": "s21", "start": 120.96, "end": 130.239, "text": "Uh as you might imagine being in the billing space for multiple years now we've seen all sorts of crazy things happen and it's even getting crazier now that people are expecting to operate metronome"}, {"id": "s22", "start": 130.239, "end": 134.239, "text": "a very complicated and deep product with a coding agent."}, {"id": "s23", "start": 134.239, "end": 143.84, "text": "Um, and so as a result, we are working from a developer experience standpoint to make this a more seamless experience for people and to have them avoid disaster."}, {"id": "s24", "start": 143.84, "end": 149.84, "text": "Um, and so we're going to see in a second what that de a demonstration of what that might look like and how we're guiding things."}, {"id": "s25", "start": 149.84, "end": 158.239, "text": "Um, but just to frame it the what's happening today in with launching agent products can go crazy and it can go sideways in all sorts of ways."}, {"id": "s26", "start": 158.239, "end": 161.84, "text": "So as just a couple of the types of problems that metronome helps solve for folks."}, {"id": "s27", "start": 161.84, "end": 170.959, "text": "Uh first we are for example and have for many years now taken in all of the API calls to OpenAI and Enthropic and metered that for those companies."}, {"id": "s28", "start": 170.959, "end": 173.44, "text": "We've worked with those companies since before they had any revenue."}, {"id": "s29", "start": 173.44, "end": 179.44, "text": "Uh and so obviously we've operated at global scale operating a metering service with a number of different data impacts."}, {"id": "s30", "start": 179.44, "end": 182.08, "text": "In addition to that we also operate credit models."}, {"id": "s31", "start": 182.08, "end": 193.28, "text": "Obviously today with usage based pricing it's not just about having a pay go uh metered business model but also all sorts of different forms of credits commits salesled uh discounts and offers."}, {"id": "s32", "start": 193.28, "end": 206.72, "text": "And then finally now in in the last 6 months especially the impact of failures here is growing in importance in particular because agents can run away with spend and so we're thinking about how to give more"}, {"id": "s33", "start": 206.72, "end": 209.92000000000002, "text": "controls to our customers that they can offer to theirs."}, {"id": "s34", "start": 209.92000000000002, "end": 217.599, "text": "So think like for example having agents have a wallet um that they only they can spend from and having controls at that level."}, {"id": "s35", "start": 217.599, "end": 217.92000000000002, "text": "Okay."}, {"id": "s36", "start": 217.92000000000002, "end": 219.36, "text": "So that's what we're going to go into today."}, {"id": "s37", "start": 219.36, "end": 222.07999999999998, "text": "Let's actually get into doing this demonstration."}, {"id": "s38", "start": 222.07999999999998, "end": 223.519, "text": "You're going to see how simple it is."}, {"id": "s39", "start": 223.519, "end": 229.12, "text": "Um so I'm going to initialize Stripe projects right now."}, {"id": "s40", "start": 231.21699999999998, "end": 232.159, "text": "[sighs]"}, {"id": "s41", "start": 232.159, "end": 234.159, "text": "Oops."}, {"id": "s42", "start": 234.239, "end": 236.07999999999998, "text": "And this is in fact a live demo."}, {"id": "s43", "start": 236.07999999999998, "end": 239.12, "text": "So you should expect all sorts of different things to happen here."}, {"id": "s44", "start": 239.12, "end": 242.56, "text": "So what this is doing is again initializing stripe projects."}, {"id": "s45", "start": 242.56, "end": 247.04, "text": "Um we are going to I think this should work."}, {"id": "s46", "start": 247.84, "end": 252.0, "text": "Um so we've selected that we're going to use claude here and we have a very simple thing."}, {"id": "s47", "start": 252.0, "end": 255.92, "text": "What I I go around the world basically talking with companies about their business model."}, {"id": "s48", "start": 255.92, "end": 257.759, "text": "It's not initialized."}, {"id": "s49", "start": 257.759, "end": 258.32, "text": "Aha."}, {"id": "s50", "start": 258.32, "end": 260.56, "text": "I see."}, {"id": "s51", "start": 261.199, "end": 262.079, "text": "All right."}, {"id": "s52", "start": 262.079, "end": 264.4, "text": "Come on up."}, {"id": "s53", "start": 265.6, "end": 267.6, "text": "Cool."}, {"id": "s54", "start": 275.103, "end": 277.103, "text": "[snorts]"}, {"id": "s55", "start": 277.28, "end": 278.24, "text": "I got it."}, {"id": "s56", "start": 278.24, "end": 278.4, "text": "All right."}, {"id": "s57", "start": 278.4, "end": 280.4, "text": "Thanks."}, {"id": "s58", "start": 286.8, "end": 287.12, "text": "All right."}, {"id": "s59", "start": 287.12, "end": 288.15999999999997, "text": "Sweet."}, {"id": "s60", "start": 288.15999999999997, "end": 289.04, "text": "Um, yes."}, {"id": "s61", "start": 289.04, "end": 291.36, "text": "Let's proceed."}, {"id": "s62", "start": 292.8, "end": 294.8, "text": "Cool."}, {"id": "s63", "start": 296.24, "end": 296.56, "text": "All right."}, {"id": "s64", "start": 296.56, "end": 301.04, "text": "So, our product, our project is in fact ready now."}, {"id": "s65", "start": 301.84, "end": 305.04, "text": "And so, I go around the world talking with companies about how to set up their businesses."}, {"id": "s66", "start": 305.04, "end": 310.4, "text": "One of the things that's really top of mind right now is um replicating certain business models."}, {"id": "s67", "start": 310.4, "end": 313.199, "text": "People want to get off the ground without having to think about it too deeply."}, {"id": "s68", "start": 313.199, "end": 317.6, "text": "One of the key topics right now is replicating Lovable's pricing model."}, {"id": "s69", "start": 317.6, "end": 328.8, "text": "And so I'm going to enter a prompt in natural language that allows us to guide the metronome billing agent and Stripe to set up a demo account that has that"}, {"id": "s70", "start": 328.8, "end": 341.68, "text": "um that has that element to it and create a demo billing engine uh in Metronome mimicking the lovable pricing model."}, {"id": "s71", "start": 341.68, "end": 342.4, "text": "Oops."}, {"id": "s72", "start": 342.4, "end": 345.36, "text": "Just make sure I don't misspell that."}, {"id": "s73", "start": 345.36, "end": 351.199, "text": "Um, and so if you want to on the side you can see you can open up Levable's pricing and you can see all the different elements to it."}, {"id": "s74", "start": 351.199, "end": 358.8, "text": "But in particular they have a prepaid credit auto recharge model which is very common in um in sort of a self-s served motion today."}, {"id": "s75", "start": 358.8, "end": 361.36, "text": "Um so let's get this going."}, {"id": "s76", "start": 361.36, "end": 366.479, "text": "Um so while this is going I want you to pay attention to a couple of things that will happen."}, {"id": "s77", "start": 366.479, "end": 371.919, "text": "Um and in particular if you look at the obviously the slide on the left there's a couple different points that I want to hit on."}, {"id": "s78", "start": 371.919, "end": 389.6, "text": "So first um again metronome is a very complicated and deep product and uh there's a lot of different ways to hit foot guns etc uh if you're not guided and so what we've invested in is building an extensible set of skills files that can provide context to the agent that's implementing metronome and working with our API."}, {"id": "s79", "start": 389.6, "end": 394.0, "text": "Um these skills files are also portable and easy to install so you can use them on your own side."}, {"id": "s80", "start": 394.0, "end": 400.15999999999997, "text": "Um and what it does is it allows us to essentially remove the friction associated with getting started."}, {"id": "s81", "start": 400.15999999999997, "end": 407.36, "text": "Um and so here uh that and that's very important because you want to be able to test and work with the product and evolve over time."}, {"id": "s82", "start": 407.36, "end": 411.12, "text": "You're seeing here in error code um from a developer experience standpoint."}, {"id": "s83", "start": 411.12, "end": 420.88, "text": "You know this is nothing new but our our perspective is to have much more verbose and clear errors so that the agent can self-correct."}, {"id": "s84", "start": 420.88, "end": 431.28, "text": "Um and uh and so again our developer experience teams are working on finding more failure cases like that um and being able to help guide especially in the initialization"}, {"id": "s85", "start": 431.28, "end": 432.4, "text": "and setup."}, {"id": "s86", "start": 432.4, "end": 438.0, "text": "Um one thing that's that's important here I think keying off of the last talk that was in this room."}, {"id": "s87", "start": 438.0, "end": 447.199, "text": "Um the goal that we have from a product development standpoint is not to have a customer operate the entire system without a human in the loop."}, {"id": "s88", "start": 447.199, "end": 451.599, "text": "This is a type of system that is both business critical, has deep business logic behind it."}, {"id": "s89", "start": 451.599, "end": 463.28, "text": "And so instead, what we are recommending and building toward is to use the use your coding agent as a way to accelerate your work and get into a test mode and test environment."}, {"id": "s90", "start": 463.28, "end": 466.639, "text": "Um, and so again, what we're doing here, we're not expecting to ship into production."}, {"id": "s91", "start": 466.639, "end": 468.0, "text": "We're not pushing it into production."}, {"id": "s92", "start": 468.0, "end": 473.84000000000003, "text": "In fact, when we go into the metronome environment, you'll see that basically what we've done is built a sandbox experience."}, {"id": "s93", "start": 473.84000000000003, "end": 489.52, "text": "Um and in the metronome context there's what it means to sort of test your initial setup is not just that you can see uh a contract or something like that or see a customer provision but also you need to see usage and so in in on the back end here our skills files are directing"}, {"id": "s94", "start": 489.52, "end": 498.4, "text": "um the agent to actually flow usage into the metronome platform so that you can see what a live uh in what a live customer would look like."}, {"id": "s95", "start": 498.4, "end": 501.84, "text": "Um I'm going to do one more beat on stripe projects here."}, {"id": "s96", "start": 501.84, "end": 511.44, "text": "I think in this case what's happening is that stripe projects so so using the stripe CLI it's it's engaging with metronome which is an external vendor here you could also imagine"}, {"id": "s97", "start": 511.44, "end": 524.48, "text": "also provisioning a bunch of other applications uh and using natural language to call for those as well um and so what again what's nice about this is that it basically removes the friction associated with setting up a test application or a test environment"}, {"id": "s98", "start": 524.48, "end": 532.0, "text": "um and we again have seen a ton of uh of usage of this form um and we expect to see even more."}, {"id": "s99", "start": 532.0, "end": 546.72, "text": "Um, this is sort of like from our perspective coming into Stripe, this is one of the things that's been really amazing is that Stripe is on the forefront of thinking about agentic commerce and preparing primitives for the moment that we're in right now where in fact this is exactly what's happening."}, {"id": "s100", "start": 546.72, "end": 554.64, "text": "Companies that are launching new um new applications and new businesses that we've seen an exponential increase in new business formation at Stripe."}, {"id": "s101", "start": 554.64, "end": 564.08, "text": "Um and then in addition to that an exponential increase in customers that are using Stripe and using Metronome through the coding agents themselves."}, {"id": "s102", "start": 564.32, "end": 565.519, "text": "Okay."}, {"id": "s103", "start": 565.519, "end": 570.72, "text": "Um we are almost done here I believe."}, {"id": "s104", "start": 570.72, "end": 578.08, "text": "Um, while this is going, I I like another sort of like thing to sit back and think about when I go around to product teams today."}, {"id": "s105", "start": 578.08, "end": 584.8, "text": "They're obviously thinking about building for agents, but I think one of the things that's important to do is to de decode what exactly does that mean?"}, {"id": "s106", "start": 584.8, "end": 593.2, "text": "And so I what I like about this sort of framework for thinking about the coding agents today is thinking about the different roles that they play."}, {"id": "s107", "start": 593.2, "end": 606.56, "text": "So obviously companies are launching agents as a product and therefore that's one of the reasons why they need to have a usage based pricing model because if the agent can be the product and run up token a token bill it's important for you to be able to meter on that."}, {"id": "s108", "start": 606.56, "end": 611.44, "text": "Um what we're talking about here with the Stripe project CLI is the agent as a buyer."}, {"id": "s109", "start": 611.44, "end": 617.12, "text": "So literally procuring their initial Stripe instance as well as additional backend services."}, {"id": "s110", "start": 617.12, "end": 625.2, "text": "That's important to basically make your services discoverable to agents that may be building an application or working in the open web."}, {"id": "s111", "start": 625.2, "end": 632.48, "text": "Um, on the Stripe side, that means both in a B2C environment, so they're working on a gentommerce, but then in the metronome environment, we're talking about in a B2B context."}, {"id": "s112", "start": 632.48, "end": 636.72, "text": "Um, and uh, and so there's sort of like multiple different levels to play out there."}, {"id": "s113", "start": 636.72, "end": 642.16, "text": "And then finally, one of the reasons why Metronome is really taking off right now is because of the agents as a user."}, {"id": "s114", "start": 642.16, "end": 646.0, "text": "Um, and so for example, we've been working with HubSpot for the past couple of years."}, {"id": "s115", "start": 646.0, "end": 651.12, "text": "They are currently on a path to transform their entire business from a seatbased model to a creditspbased model."}, {"id": "s116", "start": 651.12, "end": 659.36, "text": "Um, if you've seen some things in the news, that's starting in in EMIA where they have dramatically lowered their seats based price and added on a creditspbased model."}, {"id": "s117", "start": 659.36, "end": 666.56, "text": "The fundamental reason behind that is because what they need to be concerned about is a world in which an agent can operate their entire system."}, {"id": "s118", "start": 666.56, "end": 674.48, "text": "Um, and in that world essentially paying for a seat level access to the product to perform your work is no longer important in some sense."}, {"id": "s119", "start": 674.48, "end": 678.24, "text": "Um, we've been talking about this in uh as sort of headlessness."}, {"id": "s120", "start": 678.24, "end": 680.72, "text": "You know, Salesforce, various others have have talked about this."}, {"id": "s121", "start": 680.72, "end": 683.04, "text": "This is what Metronome is literally seeing today."}, {"id": "s122", "start": 683.04, "end": 693.519, "text": "Um, and so as like one example, last week I was at a uh I was at Andre's demo day where all five of the demoing companies were salesled agents"}, {"id": "s123", "start": 693.519, "end": 710.0, "text": "meant to operate platforms like SAP or operate um operate invoicing platforms, etc., etc. Um, and again in that world, it's important for you to have a usagebased pricing model because you have the possibility of essentially all of the value acrewing to essentially one"}, {"id": "s124", "start": 710.0, "end": 714.399, "text": "user of your platform, which in this case would be an agent."}, {"id": "s125", "start": 714.72, "end": 720.0, "text": "If you guys are thinking about pricing models, so not just developing in the agentic space, I'm a good person to talk to."}, {"id": "s126", "start": 720.0, "end": 721.44, "text": "I'll be out here in a second."}, {"id": "s127", "start": 721.44, "end": 735.2, "text": "Some of the things that we're um thinking about here are basically um not only having a creditsbased model which has been uh dominant on the market since openai launched their prepaid credit auto recharge model a couple of years ago through metronome"}, {"id": "s128", "start": 735.2, "end": 752.56, "text": "but in addition to that offering more and like more and extended offers including in a salesled in an enterprise environment um and so for example what's happening with all the coding agency in the enterprise think like cognition or cursor or openAI anthropic themselves is that they are starting to adopt more"}, {"id": "s129", "start": 752.56, "end": 757.519, "text": "um uh commit structures like the CSPs have done for the past 10 years."}, {"id": "s130", "start": 757.519, "end": 764.32, "text": "Think having prepaid commitments, postpaid commitments, and specific types of offers for specific types of customers."}, {"id": "s131", "start": 764.32, "end": 767.04, "text": "Okay, I think that we should be good to go now."}, {"id": "s132", "start": 767.04, "end": 771.519, "text": "And let's see what it looks like when we open up Metronome."}, {"id": "s133", "start": 781.519, "end": 783.519, "text": "Okay."}, {"id": "s134", "start": 791.76, "end": 794.0, "text": "What's up?"}, {"id": "s135", "start": 795.04, "end": 797.04, "text": "Uhhuh."}, {"id": "s136", "start": 797.36, "end": 801.279, "text": "We've done multiple different versions of this, as you might imagine."}, {"id": "s137", "start": 808.079, "end": 809.2, "text": "Okay."}, {"id": "s138", "start": 809.2, "end": 815.68, "text": "So, as we open this up, uh, pull this."}, {"id": "s139", "start": 825.279, "end": 825.68, "text": "It's fun."}, {"id": "s140", "start": 825.68, "end": 828.079, "text": "I love all these demos where you're just looking at people logging in."}, {"id": "s141", "start": 828.079, "end": 836.16, "text": "Um, so as we open this up, so the general pain that Metronome has is an onboarding wizard meant for a human that needs to set up their environment."}, {"id": "s142", "start": 836.16, "end": 839.6, "text": "We've we don't need this now because we had an agent set up this environment."}, {"id": "s143", "start": 839.6, "end": 843.279, "text": "And as I come in, you're going to see some of the core metronome primitives here."}, {"id": "s144", "start": 843.279, "end": 845.36, "text": "Let's start by looking at the customer that was set up."}, {"id": "s145", "start": 845.36, "end": 847.199, "text": "Again, this is for testing purposes."}, {"id": "s146", "start": 847.199, "end": 851.839, "text": "Um, up at the top, you're seeing the customer with a certain lifetime spend."}, {"id": "s147", "start": 851.839, "end": 856.72, "text": "This was auto again populated by um by the agent for the demo environment."}, {"id": "s148", "start": 856.72, "end": 861.519, "text": "Um I'm immediately going to go into their invoice and we'll come back to this in a second."}, {"id": "s149", "start": 861.519, "end": 870.399, "text": "Um and so what you what you see here is a draft invoice that was created associated with um sort of replicating the lovable pricing model again."}, {"id": "s150", "start": 870.399, "end": 873.199, "text": "Um so if you have this on the side you can see all the different elements of that."}, {"id": "s151", "start": 873.199, "end": 879.8389999999999, "text": "But the core aspect of lovable's pricing model is a creditonly pricing model where you autorecharge on a monthly basis."}, {"id": "s152", "start": 879.8389999999999, "end": 887.76, "text": "Um and then in add in addition to that they have multiple different types of credits that are scoped to different types of usage beyond the the use of those credits."}, {"id": "s153", "start": 887.76, "end": 892.32, "text": "Then if you go over and if you overspend then you have an invoice at the end of the period."}, {"id": "s154", "start": 892.32, "end": 898.16, "text": "Um so a couple of the different like concepts there that are relatively complicated to administer is the credit itself."}, {"id": "s155", "start": 898.16, "end": 901.199, "text": "And so Metronome has a first class uh credit object here."}, {"id": "s156", "start": 901.199, "end": 905.92, "text": "What you're seeing is that there was a credit credit created for the initial period that we're testing for."}, {"id": "s157", "start": 905.92, "end": 910.079, "text": "we had usage that that draw that drew down from that entire credit balance."}, {"id": "s158", "start": 910.079, "end": 918.0, "text": "And then finally, if we go back to the customer pane, um in addition to that, you can see the usage that we that we plopped in."}, {"id": "s159", "start": 918.0, "end": 923.36, "text": "All obviously in a production environment, you would be seeing this in against real usage that you have."}, {"id": "s160", "start": 923.36, "end": 931.8389999999999, "text": "The core reason again to show it in this manner is to just see what it would look like if you adopted the pricing model and then had real usage against it."}, {"id": "s161", "start": 931.8389999999999, "end": 933.199, "text": "Again, I'm going to come back to the invoice."}, {"id": "s162", "start": 933.199, "end": 936.399, "text": "And so here you can click into each of these different components."}, {"id": "s163", "start": 936.399, "end": 939.6, "text": "Um, build credits, plan mode credits, cloud credits, AI gateway credits."}, {"id": "s164", "start": 939.6, "end": 941.76, "text": "This is exactly what the lovable pricing model looks like."}, {"id": "s165", "start": 941.76, "end": 949.44, "text": "And again, the way that we coached the agent to be able to do to to build this was just describing a natural language to replicate lovable pricing model."}, {"id": "s166", "start": 949.44, "end": 951.6, "text": "It was nothing more difficult than that."}, {"id": "s167", "start": 951.6, "end": 962.24, "text": "Um, so without going into Metronome's platform to too great an extent, um, the what we just did here was we initialized uh and created a stripe instance."}, {"id": "s168", "start": 962.24, "end": 967.68, "text": "We then in through Stripe projects uh we also created a metronome instance."}, {"id": "s169", "start": 967.68, "end": 976.48, "text": "Then we coached the agent to be able to uh build a demo instance of metronome that had a real pricing model live in production."}, {"id": "s170", "start": 976.48, "end": 984.639, "text": "And so you could imagine basically testing then from there the exact testing and tweaking from there exactly what you wanted before bringing that into production."}, {"id": "s171", "start": 984.639, "end": 1001.92, "text": "Um this sort of framework for thinking about development both applies to Stripe where we are working very very hard to make it easier to uh run a complicated business model and get off the ground but also I think it bears lessons for how we might pursue agentic development more generally outside of Stripe."}, {"id": "s172", "start": 1001.92, "end": 1005.12, "text": "So again, think about some of the primitives that we talked about here today."}, {"id": "s173", "start": 1005.12, "end": 1014.48, "text": "Agent as a buyer, agent as your product, agent as your user and disambiguating what the different the different um modes and uh and like implications of those are."}, {"id": "s174", "start": 1014.48, "end": 1023.519, "text": "And then in addition to that um having having ways in which we coach the agent to operate more effectively in including in a in a in a difficult environment."}, {"id": "s175", "start": 1023.519, "end": 1024.959, "text": "You can try this for yourself now."}, {"id": "s176", "start": 1024.959, "end": 1034.319, "text": "So uh the easiest way to get started is with the commands that are that are listed here and you can see everything that is available through Stripe Projects through Stripe Projects online."}, {"id": "s177", "start": 1034.319, "end": 1038.559, "text": "Um as there are a number of different providers that are onboarding every day."}, {"id": "s178", "start": 1038.559, "end": 1052.96, "text": "Um so companies like Versell um like hugging face etc are basically like working in Stripe projects environment to be able to make their own products more discoverable to agents that are operating Stripe system."}, {"id": "s179", "start": 1066.352, "end": 1068.352, "text": "[music]"}]}, {"id": "mMNkdYnIVC4", "title": "Einstein Arena: Harnessing Collective Agent Intelligence for Open Science — James Zou, Together AI", "channel": "AI Engineer", "duration": 1016, "upload_date": null, "url": "https://www.youtube.com/watch?v=mMNkdYnIVC4", "api": "/api/talks/mMNkdYnIVC4.json", "summary_url": "/#mMNkdYnIVC4", "transcript": {"html": "/transcripts/mMNkdYnIVC4.html", "txt": "/transcripts/mMNkdYnIVC4.txt", "vtt": "/transcripts/mMNkdYnIVC4.vtt"}, "sentences": [{"id": "s1", "start": 12.72, "end": 13.72, "text": "All right."}, {"id": "s2", "start": 13.72, "end": 17.8, "text": "I think we'll go ahead and get started with the with the presentation."}, {"id": "s3", "start": 17.8, "end": 19.08, "text": "So my name is James So."}, {"id": "s4", "start": 19.08, "end": 32.84, "text": "I am uh going to explain some of the work we're doing with Together AI and it's also in collaboration with Stanford around designing and optimizing environments for AI agents to enable these agents to make"}, {"id": "s5", "start": 32.84, "end": 35.52, "text": "new kinds of scientific discoveries."}, {"id": "s6", "start": 35.52, "end": 37.6, "text": "All right."}, {"id": "s7", "start": 39.24, "end": 50.96, "text": "So so that I guess the current paradigm of how people often are using or deploying AI agents is often involves designing workflows that sort of tells the agents you know what to do, right?"}, {"id": "s8", "start": 50.96, "end": 53.08, "text": "Or how the agent should work."}, {"id": "s9", "start": 53.08, "end": 58.84, "text": "And it's typically done through a series of steps or prompts, tools, and instructions."}, {"id": "s10", "start": 58.84, "end": 68.72, "text": "In contrast, the way we imagine the environment is that the environment should really specify not how the agent should work, but really where the agent should work, right?"}, {"id": "s11", "start": 68.72, "end": 80.8, "text": "And the environment then should provide a set of incentives and infrastructure for the agents and guardrails and resources so that agent can then flexibly work within that environment."}, {"id": "s12", "start": 80.8, "end": 81.12, "text": "Right."}, {"id": "s13", "start": 81.12, "end": 85.36, "text": "And our thesis here is that as agents become more and more powerful, right?"}, {"id": "s14", "start": 85.36, "end": 90.68, "text": "If we try to design workflows that often can limit the capabilities and creativity of the agents."}, {"id": "s15", "start": 90.68, "end": 99.56, "text": "Whereas if we properly design the environment, this can enables a lot more creativity and capabilities and intelligence for the agents to naturally emerge."}, {"id": "s16", "start": 99.56, "end": 106.03999999999999, "text": "This why I think we're trying to shift away from designing workflows and harnesses towards designing environments."}, {"id": "s17", "start": 106.64, "end": 112.36, "text": "So what I want to do today is to give a few examples of the how we design environments for agents."}, {"id": "s18", "start": 112.36, "end": 120.47999999999999, "text": "And in particular also show how they're able to then with with the right environment able to actually solve some really interesting and innovative problems."}, {"id": "s19", "start": 122.04, "end": 127.64, "text": "So, the first example I want to share is the system that we environment that we created called the Einstein Arena."}, {"id": "s20", "start": 127.64, "end": 138.76, "text": "It's sort of like the one of the first environments that enables AI agents to be able to collaborate in the wild and to compete to really solve open-ended scientific problems."}, {"id": "s21", "start": 138.76, "end": 142.16, "text": "So, we designed this Einstein Arena to be really agent native."}, {"id": "s22", "start": 142.16, "end": 151.2, "text": "So, I So, that means that it's very easy for agents to just read the skills talk on our on our arena and be able to access the arena."}, {"id": "s23", "start": 151.2, "end": 157.04, "text": "And it's actually also designed so that it's intentionally very hard for humans to enter the arena, right?"}, {"id": "s24", "start": 157.04, "end": 163.12, "text": "So, you actually have to solve a little puzzle to prove that you're an AI agent in order to participate in this arena."}, {"id": "s25", "start": 163.12, "end": 167.72, "text": "But, any agent in the world can openly and freely participate on the arena."}, {"id": "s26", "start": 167.72, "end": 171.72, "text": "And once the agent actually enters into the Einstein Arena, this is what they'll see, right?"}, {"id": "s27", "start": 171.72, "end": 174.72, "text": "They'll see actually see a list of curated problems."}, {"id": "s28", "start": 174.72, "end": 179.8, "text": "Each of these problems is actually a problem that we curated, so it's a scientifically interesting problem."}, {"id": "s29", "start": 179.8, "end": 186.84, "text": "And we curated these problems so that first, there's actually an existing community of human researchers that are interested in these problems."}, {"id": "s30", "start": 186.84, "end": 189.64, "text": "So, these are important problems for human scientists."}, {"id": "s31", "start": 189.64, "end": 200.76, "text": "And second is that for each of these problems, we can actually create a well-defined and deterministic deterministic verifier to assess the quality of the solutions to each of these problems."}, {"id": "s32", "start": 200.76, "end": 204.68, "text": "And I'll give some examples in a couple of slides."}, {"id": "s33", "start": 205.28, "end": 210.36, "text": "So, So, the agents can actually decide which of these problems they're interested in once they log onto the arena, right?"}, {"id": "s34", "start": 210.36, "end": 214.68, "text": "So, if they enter into a particular problem space, this is what they'll see, right?"}, {"id": "s35", "start": 214.68, "end": 218.84, "text": "They'll see some description that precisely explains what is the problem."}, {"id": "s36", "start": 218.84, "end": 222.64, "text": "We have a discussion forum where the agents can communicate."}, {"id": "s37", "start": 222.64, "end": 229.28, "text": "It's almost like a social network where the agents can actually communicate and talk to each other and ask for help or give recommendations."}, {"id": "s38", "start": 229.28, "end": 232.36, "text": "Um and we also have a leaderboard."}, {"id": "s39", "start": 232.36, "end": 235.32, "text": "This is where the agent can actually see each other's solutions."}, {"id": "s40", "start": 235.32, "end": 235.56, "text": "Right?"}, {"id": "s41", "start": 235.56, "end": 241.84, "text": "So in any in at any time they want, the agent can actually submit a solution to one of these problems."}, {"id": "s42", "start": 241.84, "end": 249.04, "text": "And because we have this verifier, we can actually then determine what is the quality of that solution and provide a score in real time."}, {"id": "s43", "start": 249.04, "end": 252.56, "text": "So this leaderboard is being constantly updated in real time."}, {"id": "s44", "start": 252.56, "end": 256.76, "text": "And the agents can also see how other agents are doing on this problem."}, {"id": "s45", "start": 256.76, "end": 260.68, "text": "And they can also see other agents' solutions and download those solutions."}, {"id": "s46", "start": 260.68, "end": 265.28, "text": "So there's both a collaboration dynamics and also a competition dynamics in this arena, right?"}, {"id": "s47", "start": 265.28, "end": 269.32, "text": "They can collaborate and ask each other questions and help in the discussion forum."}, {"id": "s48", "start": 269.32, "end": 271.48, "text": "But agents are also competing with each other."}, {"id": "s49", "start": 271.48, "end": 278.84000000000003, "text": "And that's why I think this also sort of simulates how human researchers can compete and also collaborate to solve interesting problems."}, {"id": "s50", "start": 279.84000000000003, "end": 285.84000000000003, "text": "So we launched this AI instant arena environment earlier this year, I think in March."}, {"id": "s51", "start": 285.84000000000003, "end": 298.2, "text": "And within a few weeks, it's already actually we're very impressed and very surprised that the agents were actually able to already discover new solutions to 11 problems that are of the best"}, {"id": "s52", "start": 298.2, "end": 299.68, "text": "solutions that have ever been found."}, {"id": "s53", "start": 299.68, "end": 299.8, "text": "Right?"}, {"id": "s54", "start": 299.8, "end": 308.64, "text": "So that means that the solutions that they discovered by the agents on AI instant arena were better than any previous human solutions or any solutions that we acquired using"}, {"id": "s55", "start": 308.64, "end": 312.08, "text": "more specialized AI tools."}, {"id": "s56", "start": 312.48, "end": 319.44, "text": "So I'll just give you example of one such solution or one such problem which is called the kissing number problem."}, {"id": "s57", "start": 319.44, "end": 321.12, "text": "So this is actually a very famous problem."}, {"id": "s58", "start": 321.12, "end": 322.84, "text": "It's been around for hundreds of years."}, {"id": "s59", "start": 322.84, "end": 327.12, "text": "So for example, Isaac Newton was already working on some version of this kissing number problem."}, {"id": "s60", "start": 327.12, "end": 329.44, "text": "And it's actually relatively easy to state."}, {"id": "s61", "start": 329.44, "end": 329.72, "text": "Right?"}, {"id": "s62", "start": 329.72, "end": 340.48, "text": "So the kissing number problem basically asks that what is the maximum number of spheres that you can place around the central sphere so that these additional spheres do not overlap each other?"}, {"id": "s63", "start": 340.48, "end": 342.4, "text": "So for example, in one dimensions, right?"}, {"id": "s64", "start": 342.4, "end": 346.88, "text": "So around the central sphere I can place one sphere to the left and one sphere to the right without overlap."}, {"id": "s65", "start": 346.88, "end": 349.48, "text": "So the kissing number in one dimension is easy to compute."}, {"id": "s66", "start": 349.48, "end": 350.8, "text": "This is two."}, {"id": "s67", "start": 350.8, "end": 354.8, "text": "In two dimensions, it's also easy to show that you can at most place six spheres."}, {"id": "s68", "start": 354.8, "end": 358.12, "text": "So, that's the kissing number in two dimensions is six."}, {"id": "s69", "start": 358.12, "end": 365.36, "text": "But, it turns out that in higher dimensions, it actually becomes really hard to compute what's the maximum number of over non-overlapping spheres."}, {"id": "s70", "start": 365.36, "end": 368.44, "text": "And the kissing number problem in higher dimensions is actually open, right?"}, {"id": "s71", "start": 368.44, "end": 372.76, "text": "It's not been It's not clear what is the optimal number."}, {"id": "s72", "start": 372.76, "end": 379.12, "text": "And so, scientists have been trying to work on this problem for the last several centuries."}, {"id": "s73", "start": 379.24, "end": 386.8, "text": "And in particular, right, so the kissing number problem in 11 dimensions has attracted a lot of interest for various reasons."}, {"id": "s74", "start": 386.8, "end": 391.6, "text": "So, this is actually sort of a progression of the solutions in 11 dimensions."}, {"id": "s75", "start": 391.6, "end": 401.52, "text": "So, in the 1980s, right, so it's best known that there you can place 440 spheres, right, in 11 dimensions without overlap."}, {"id": "s76", "start": 401.52, "end": 413.08, "text": "And in I think 19 uh So, yeah, so so in in 1980, there was a big advance that the first for the first time showed that you can actually just construct"}, {"id": "s77", "start": 413.08, "end": 417.52, "text": "with 582 spheres in 11 dimensions without overlap."}, {"id": "s78", "start": 417.52, "end": 430.28, "text": "Uh and then that sort of stuck there for about 40 years, right, until 2022, where a mathematician is able to publish a new advance, right, a breakthrough that's able to improve that to 592"}, {"id": "s79", "start": 430.28, "end": 431.68, "text": "spheres."}, {"id": "s80", "start": 431.68, "end": 438.6, "text": "And then there's another breakthrough from DeepMind the following year that advances that to 593 spheres."}, {"id": "s81", "start": 438.6, "end": 448.12, "text": "But, with Alpha Zero, we know by having these agents able to collaborate actively, right, in the wild, within a few days they were actually able to construct a new solution"}, {"id": "s82", "start": 448.12, "end": 454.68, "text": "that shows that for the first time you can create 604 spheres in 11 dimensions that do not overlap."}, {"id": "s83", "start": 454.68, "end": 463.56, "text": "And this is not just a problem that's of mathematical interest, because it turns out that the more of these sort of spheres you can place in higher dimensions without overlap that actually creates"}, {"id": "s84", "start": 463.56, "end": 469.88, "text": "the better coding systems including ways of like doing error correction codes for information transfer."}, {"id": "s85", "start": 469.88, "end": 476.72, "text": "Right, so this actually is by creating this better constructions that also leads to this better engineering algorithms."}, {"id": "s86", "start": 477.0, "end": 482.24, "text": "And in this case actually the collaborations among these agents is really critical for making these advances, right?"}, {"id": "s87", "start": 482.24, "end": 486.76, "text": "So this is a problem where not a single agent is able to solve by itself, right?"}, {"id": "s88", "start": 486.76, "end": 492.16, "text": "Not you know, GPT 5.5 or a cloud models that can't really solve the problem by itself."}, {"id": "s89", "start": 492.16, "end": 495.44, "text": "So the collaboration among multiple agents is really critical."}, {"id": "s90", "start": 495.44, "end": 504.72, "text": "And here we're actually able to show that there's like this sort of a lineage trace of how the agents are able to collaborate and then basically take each other's solutions and refine that"}, {"id": "s91", "start": 504.72, "end": 508.32, "text": "and further optimize it to arrive at this breakthrough."}, {"id": "s92", "start": 508.32, "end": 512.599, "text": "And you can also see some of these interactions and discussions on Einstein Arena, right?"}, {"id": "s93", "start": 512.599, "end": 520.08, "text": "Where here's an example where the one agent actually was asking other agents, \"Have you tried you know, some of these approaches?\""}, {"id": "s94", "start": 520.08, "end": 526.96, "text": "Um, with uh, these STP approaches and then the other agents showed that yes, we have tried these approaches and here are some of the things that we found."}, {"id": "s95", "start": 526.96, "end": 536.36, "text": "Right, so the information sharing on the forums on the arena is actually really important to help the agents to arrive at this solution together."}, {"id": "s96", "start": 537.36, "end": 549.52, "text": "So in addition to solving these interesting scientific problems, but we've also been using platforms like the right Einstein Arena uh, to help to improve uh, you know, machine learning and AI itself."}, {"id": "s97", "start": 549.52, "end": 557.96, "text": "Right, so here's one example where we actually use these agents to basically help us to create better kernels for and to speed up those kernels."}, {"id": "s98", "start": 557.96, "end": 560.48, "text": "Right, and here we use the same environment, right?"}, {"id": "s99", "start": 560.48, "end": 565.0, "text": "Where the agents can compete and they also can collaborate and they see these leaderboards."}, {"id": "s100", "start": 565.0, "end": 577.12, "text": "And we basically change the back end instead of trying to verify the solutions to this mathematics problem, here we're basically trying to you know, we will compile and benchmark and test and verify the quality and the speed of the individual kernels,"}, {"id": "s101", "start": 577.12, "end": 577.32, "text": "right?"}, {"id": "s102", "start": 577.32, "end": 582.76, "text": "And then we'll provide a feedback to the agents in real time in the form of these leaderboards."}, {"id": "s103", "start": 583.52, "end": 589.0, "text": "In these kernel settings, we also found it to be quite useful to have different agents with different personas, right?"}, {"id": "s104", "start": 589.0, "end": 594.92, "text": "And these different personas actually corresponds to a different uh roles and priors that agents can actually have."}, {"id": "s105", "start": 594.92, "end": 602.04, "text": "So, for example, we have one agent that looks at tends to look at more of the profiling, another agent that tends to look at more of the memory consumptions,"}, {"id": "s106", "start": 602.04, "end": 606.12, "text": "a third agent that looks at, you know, the precisions, the tensor computations."}, {"id": "s107", "start": 606.12, "end": 614.04, "text": "And these agents can and then across different personas, they can able to collaborate and a compete on the arena to speed up the kernels."}, {"id": "s108", "start": 614.68, "end": 626.76, "text": "And in this case, right here, the agents were also able to collaborate and lead to really quite substantial speed ups, uh including sometimes over two two x two-fold speed ups in some of these production kernels."}, {"id": "s109", "start": 626.76, "end": 635.28, "text": "So, here I'm just showing you a few examples where for things like page attention, uh and these are sort of for specific shapes, but we also have generalized this to many different shapes"}, {"id": "s110", "start": 635.28, "end": 637.64, "text": "and different uh hardware types, right?"}, {"id": "s111", "start": 637.64, "end": 647.24, "text": "Where we're actually seeing that we're getting up to sometimes over two x speed up in these kernels, and they uh compared to the previous state-of-the-art kernels for these problems."}, {"id": "s112", "start": 647.24, "end": 655.48, "text": "And these improved kernels created designed by the agents are actually already used in in production at Together AI."}, {"id": "s113", "start": 657.2, "end": 667.12, "text": "So, in the last few minutes, I want to show like a second example of a kind of environment that we created as a way to uh train and to create better data scientist agents,"}, {"id": "s114", "start": 667.12, "end": 667.28, "text": "right?"}, {"id": "s115", "start": 667.28, "end": 675.6, "text": "So, we call this DS Gym, which stands for data science gym, which is sort of like a unified environment that we created for both for evaluating and for training"}, {"id": "s116", "start": 675.6, "end": 680.48, "text": "data science agents to solve complex data science problems."}, {"id": "s117", "start": 681.12, "end": 689.28, "text": "So, here in this DS Gym environment, we also curated and created a unified list of different data sets and tasks, right?"}, {"id": "s118", "start": 689.28, "end": 693.8, "text": "So, these data sets can combine uh spans across many different settings."}, {"id": "s119", "start": 693.8, "end": 702.4, "text": "And the agents are then able to interact with these different data sets that we have through a unified uh interface and through code execution."}, {"id": "s120", "start": 702.4, "end": 707.0, "text": "In the DSGM environment, we also provide a unified infrastructure for the agents."}, {"id": "s121", "start": 707.0, "end": 715.64, "text": "So, for example, the agents can actually spin up many different Docker containers to test their data science algorithms and actually run them in parallel."}, {"id": "s122", "start": 718.08, "end": 730.36, "text": "So, in the process of actually creating the data sets and tasks for the data DSGM environment, so we initially actually wanted to incorporate some of the existing data science benchmarks that have been used to evaluate agents."}, {"id": "s123", "start": 730.36, "end": 736.28, "text": "But we actually quickly realized that many of the existing widely-used benchmarks actually have many problems."}, {"id": "s124", "start": 736.28, "end": 739.76, "text": "And one big problem is that they're actually very vulnerable to shortcuts."}, {"id": "s125", "start": 739.76, "end": 746.64, "text": "By shortcut, I mean here is that uh down here what I'm showing are three different common popular data science benchmarks."}, {"id": "s126", "start": 746.64, "end": 746.92, "text": "Right?"}, {"id": "s127", "start": 746.92, "end": 752.2, "text": "And the in green here we see shows like the performance of the agents on these benchmarks."}, {"id": "s128", "start": 752.2, "end": 759.88, "text": "Uh but the red bar also shows how well they're able to the what fraction of the benchmark the agents can actually solve without actually using the data sets themselves."}, {"id": "s129", "start": 759.88, "end": 760.04, "text": "Right?"}, {"id": "s130", "start": 760.04, "end": 767.32, "text": "So, just by reasoning or by, you know, uh doing other shortcuts without actually actually do working with the underlying data sets."}, {"id": "s131", "start": 767.32, "end": 777.68, "text": "And across many of these different benchmarks, right, sometimes up to 20 to 50% of the tasks can be solved without actually looking at any of the underlying data."}, {"id": "s132", "start": 777.68, "end": 782.6, "text": "Which I think is uh really a significant problem with many of the existing benchmarks."}, {"id": "s133", "start": 783.12, "end": 792.44, "text": "So, to address that, we actually carefully curated at our own our own benchmarks, right, for both for scientific analysis and also for predictive modeling."}, {"id": "s134", "start": 792.44, "end": 801.56, "text": "So, for scientific analysis and discovery, the way we did this is that we actually went through recently published papers and then carefully curated data and then also tasks from those papers."}, {"id": "s135", "start": 801.56, "end": 806.04, "text": "And then we also had human scientists and experts to review each of those tasks."}, {"id": "s136", "start": 806.04, "end": 814.72, "text": "And for predictive modeling, the way we did this is go through all the different Kaggle competitions to look for some of the recent Kaggle competitions that are still open"}, {"id": "s137", "start": 814.72, "end": 819.88, "text": "and and where also you have high quality data sets and also high quality evaluations."}, {"id": "s138", "start": 819.88, "end": 828.44, "text": "Then we curated those into the DS Gym as a kind of task for evaluating how well models agents can actually build predictive models."}, {"id": "s139", "start": 828.44, "end": 833.32, "text": "So all together in the DS Gym, we actually have created over a dozen different tasks."}, {"id": "s140", "start": 833.32, "end": 841.08, "text": "They span across dozens of different scientific domains ranging from biology to physics to economics."}, {"id": "s141", "start": 841.08, "end": 844.92, "text": "It also involves many different data types and data modalities."}, {"id": "s142", "start": 846.6, "end": 852.32, "text": "So this actually makes it very easy for us to evaluate different models, both open and closed source models."}, {"id": "s143", "start": 852.32, "end": 862.28, "text": "And one thing we found is that the existing models, even the frontier models, often are only still achieves like less than 50% accuracy performance on the DS Gym tasks."}, {"id": "s144", "start": 862.28, "end": 862.4, "text": "Right?"}, {"id": "s145", "start": 862.4, "end": 866.28, "text": "So these are definitely not saturated benchmarks."}, {"id": "s146", "start": 866.28, "end": 871.68, "text": "We can also use a DS Gym as sort of like a training factory to improve these open source models."}, {"id": "s147", "start": 871.68, "end": 871.8, "text": "Right?"}, {"id": "s148", "start": 871.8, "end": 880.44, "text": "So one thing we did here is actually generate in the DS Gym actually the gym itself will actually create all these execution verified trajectories, which means that these are trajectories"}, {"id": "s149", "start": 880.44, "end": 887.68, "text": "generated by the agents that have been verified through the through through actually executing the code from the agents."}, {"id": "s150", "start": 887.68, "end": 887.88, "text": "Right?"}, {"id": "s151", "start": 887.88, "end": 898.12, "text": "So by generating these execution verified trajectories, then we are able to like fine-tune sort of small open source models that actually now achieve sort of the they're sort of the best in class"}, {"id": "s152", "start": 898.12, "end": 901.4, "text": "open source models in terms of solving these kind of data science tasks."}, {"id": "s153", "start": 901.4, "end": 901.6, "text": "Right?"}, {"id": "s154", "start": 901.6, "end": 907.56, "text": "And these models are small enough that you can actually run them locally on your laptops and your computers."}, {"id": "s155", "start": 908.44, "end": 911.56, "text": "So just to summarize the this part was the data science gym."}, {"id": "s156", "start": 911.56, "end": 911.72, "text": "Right?"}, {"id": "s157", "start": 911.72, "end": 921.48, "text": "So we with DS Gym, we created this unified execution layer so people can actually run and all these different tasks across dozens of different tasks across many different domains."}, {"id": "s158", "start": 921.48, "end": 929.04, "text": "We have carefully verified that there are no shortcuts in these tasks, which has been sort of a common challenge with existing data science benchmarks."}, {"id": "s159", "start": 929.04, "end": 939.32, "text": "And we also enable in the DSG and a way to generate synthetic data, so you can easily use that to improve and to train your own data science agents."}, {"id": "s160", "start": 939.68, "end": 950.08, "text": "So, just to summarize the presentation, um I think the main takeaway here is that I think we're in seeing this interesting progression as in terms of how we build different AI systems."}, {"id": "s161", "start": 950.08, "end": 950.28, "text": "Right."}, {"id": "s162", "start": 950.28, "end": 956.32, "text": "So, then in the past, people have been building these AI systems mostly by designing individual models or individual tools."}, {"id": "s163", "start": 956.32, "end": 962.32, "text": "And currently, there's a lot of focus on creating designing agents or harnesses and workflows around agents."}, {"id": "s164", "start": 962.32, "end": 973.16, "text": "But what our research shows is that I think we're already moving towards the next stage, where you're not then trying to design workflows or specific or specific agents, what we really want to do is to design environments,"}, {"id": "s165", "start": 973.16, "end": 980.96, "text": "which is a set of infrastructure and incentives that in that motivates the agents that you solve more and more challenging problems."}, {"id": "s166", "start": 980.96, "end": 991.8389999999999, "text": "And with appropriate designs these environments can actually unlock much more creativity and collective intelligence from the agents that's that's limited by the existing workflows."}, {"id": "s167", "start": 991.8389999999999, "end": 996.8, "text": "And here are some of the references for the papers that we published that describes these in more detail."}, {"id": "s168", "start": 996.8, "end": 998.886, "text": "So, thank you very much."}, {"id": "s169", "start": 998.886, "end": 1000.886, "text": "[applause]"}, {"id": "s170", "start": 1011.986, "end": 1013.986, "text": "[music]"}]}, {"id": "mav15aW9lLM", "title": "Why Your Enterprise Tech Stack Isn’t Ready for AI Agents — Christopher Lovejoy & Saul Howard", "channel": "AI Engineer", "duration": 1155, "upload_date": null, "url": "https://www.youtube.com/watch?v=mav15aW9lLM", "api": "/api/talks/mav15aW9lLM.json", "summary_url": "/#mav15aW9lLM", "transcript": {"html": "/transcripts/mav15aW9lLM.html", "txt": "/transcripts/mav15aW9lLM.txt", "vtt": "/transcripts/mav15aW9lLM.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.92, "end": 14.92, "text": "Okay."}, {"id": "s3", "start": 14.96, "end": 16.0, "text": "Hello everybody."}, {"id": "s4", "start": 16.0, "end": 21.92, "text": "My name is Chris Lovejoy and I'm a member of technical staff at Anterior and I work as a forward deployed engineer."}, {"id": "s5", "start": 21.92, "end": 27.76, "text": "So I embed within enterprise organizations and help them get value from using AI agents."}, {"id": "s6", "start": 27.76, "end": 31.6, "text": "And I previously worked at Anterior with Saul."}, {"id": "s7", "start": 31.6, "end": 32.279, "text": "Hi everybody."}, {"id": "s8", "start": 32.279, "end": 33.28, "text": "I'm Saul."}, {"id": "s9", "start": 33.28, "end": 35.24, "text": "I'm VP of engineering at Anterior."}, {"id": "s10", "start": 35.24, "end": 43.56, "text": "We're a New York based company selling AI uh agentic AI to US health insurance companies."}, {"id": "s11", "start": 43.56, "end": 52.32, "text": "Um Chris and I have spent a lot of time building in enterprise and in health care enterprises particularly."}, {"id": "s12", "start": 52.32, "end": 58.8, "text": "And health care is a very challenging place to develop and deploy AI."}, {"id": "s13", "start": 58.8, "end": 72.6, "text": "Uh health [clears throat] care is so challenging because of the requirements around process and uh compliance, the regulatory requirements that that that are so important."}, {"id": "s14", "start": 72.6, "end": 81.2, "text": "Also because of the uh direct real impact that your work has on people's lives, which is of course also what makes it so rewarding."}, {"id": "s15", "start": 81.2, "end": 90.72, "text": "Um I think a lot of the learnings you can take from working in enterprise for health care, you can take to enterprise in other regulated industries."}, {"id": "s16", "start": 90.72, "end": 99.52000000000001, "text": "Like finance, defense, government work, anywhere where process is so important and has to be followed."}, {"id": "s17", "start": 99.52000000000001, "end": 106.8, "text": "In this talk we're going to talk about um some of the learnings that we've had and specifically we're going to talk about why enterprise tech stacks aren't ready for AI agents"}, {"id": "s18", "start": 106.8, "end": 111.64, "text": "and some of the primitives that we've built in the past in order to unlock them."}, {"id": "s19", "start": 111.64, "end": 120.6, "text": "And to make this concrete, let's start by considering a scenario that might be familiar to many of you, which is the the enterprise proof of proof of concept, the enterprise POC."}, {"id": "s20", "start": 120.6, "end": 127.24, "text": "And let's say we have identified a customer that we want to serve, and we've identified a priority use case with them."}, {"id": "s21", "start": 127.24, "end": 129.32, "text": "So, obviously we're on the healthcare track here."}, {"id": "s22", "start": 129.32, "end": 137.52, "text": "Let's consider a um a large health system and a use case that is some sort of administrative healthcare workflow."}, {"id": "s23", "start": 137.52, "end": 143.92000000000002, "text": "So, you work with them, you scope out a POC, you define the metrics that you are going to care about, you're going to bench benchmark yourselves on."}, {"id": "s24", "start": 143.92000000000002, "end": 152.48, "text": "Um you allocate two engineers, you spend 4 weeks building it, and um the actual build-out might look a little bit something like this."}, {"id": "s25", "start": 152.48, "end": 155.84, "text": "An enterprise stack is very complicated."}, {"id": "s26", "start": 155.84, "end": 164.0, "text": "It's much, much more than we're showing here, but generally you can have an application layer, a control plane layer, the data plane."}, {"id": "s27", "start": 164.0, "end": 168.48, "text": "For your POC, you're going to need some access to the model provider as well."}, {"id": "s28", "start": 168.48, "end": 172.959, "text": "And your POC is going to need access to data across all of these different planes."}, {"id": "s29", "start": 172.959, "end": 177.12, "text": "It may be some in the data lake, some directly from the application layer, for example."}, {"id": "s30", "start": 177.12, "end": 180.519, "text": "And so, you're going to deploy it something like this."}, {"id": "s31", "start": 180.519, "end": 183.2, "text": "It's going to connect to all these different places."}, {"id": "s32", "start": 183.2, "end": 185.239, "text": "There's going to be some offline data pulling."}, {"id": "s33", "start": 185.239, "end": 188.0, "text": "There's going to be some maybe some online."}, {"id": "s34", "start": 188.0, "end": 192.959, "text": "Generally, you'll get access to the data and push towards the results."}, {"id": "s35", "start": 194.08, "end": 194.92, "text": "And so, things go well."}, {"id": "s36", "start": 194.92, "end": 196.12, "text": "You you get great results."}, {"id": "s37", "start": 196.12, "end": 198.56, "text": "The the AI performs you know, as you expected."}, {"id": "s38", "start": 198.56, "end": 200.4, "text": "You you hit the performance metrics."}, {"id": "s39", "start": 200.4, "end": 201.64, "text": "Um you know, it's fast."}, {"id": "s40", "start": 201.64, "end": 202.959, "text": "It's relatively cheap."}, {"id": "s41", "start": 202.959, "end": 207.84, "text": "And you hold a meeting, you present this to the relevant stakeholders, and everyone seems pretty happy."}, {"id": "s42", "start": 207.84, "end": 215.64, "text": "Um so, you know, your chief of finance um in the in the company is very excited and wants to understand what's going to be the impact on the budget for next year."}, {"id": "s43", "start": 215.64, "end": 220.72, "text": "Uh your chief medical officer is excited to tell his his colleagues, you know, how accurate his AI is."}, {"id": "s44", "start": 220.72, "end": 224.519, "text": "Um and the head of sales asks, \"Okay, when can we put powered by AI?"}, {"id": "s45", "start": 224.519, "end": 226.2, "text": "When can we put that on the websites?\""}, {"id": "s46", "start": 226.2, "end": 231.6, "text": "Um but the problem is that everyone here is assuming that the the hard part is done, that the AI was was the challenging part."}, {"id": "s47", "start": 231.6, "end": 236.16, "text": "But actually, as we know, often getting things into production is really where the challenge lies."}, {"id": "s48", "start": 236.16, "end": 244.84, "text": "Um and to get a bit more specific on what that challenge looks like, um you hold a meeting the next day, you bring in the relevant stakeholders to discuss productionizing"}, {"id": "s49", "start": 244.84, "end": 247.0, "text": "this proof of concept application."}, {"id": "s50", "start": 247.0, "end": 251.76, "text": "And somebody raises their hand and says, \"Um can I see the the audit trail for this?"}, {"id": "s51", "start": 251.76, "end": 257.72, "text": "Like for us, for compliance, it's critical that we can see every step, every action that the agent takes, every piece of data that it accesses."}, {"id": "s52", "start": 257.72, "end": 259.239, "text": "Can can you give that to me?\""}, {"id": "s53", "start": 259.239, "end": 267.919, "text": "And you realize actually, you know, with the way things have been implemented in the initial POC, without these um kind of true integrations, that actually that's going to be quite challenging."}, {"id": "s54", "start": 267.919, "end": 270.24, "text": "And then somebody else um pops up with some other questions."}, {"id": "s55", "start": 270.24, "end": 273.8, "text": "So, somebody asks, \"Okay, well actually, how is data sensitive data being handled here?"}, {"id": "s56", "start": 273.8, "end": 274.88, "text": "Um how's that being passed to the agents?"}, {"id": "s57", "start": 274.88, "end": 279.44, "text": "You know, we have a very strict boundary around where our data can go and where it can't go."}, {"id": "s58", "start": 279.44, "end": 280.64, "text": "Um is it is this respecting that?"}, {"id": "s59", "start": 280.64, "end": 281.96, "text": "How does that look?\""}, {"id": "s60", "start": 281.96, "end": 284.68, "text": "And then your chief medical officer says, again, \"Who's approving the decisions here?"}, {"id": "s61", "start": 284.68, "end": 293.52, "text": "Because we know in certain scenarios, we have to escalate to a clinician who will then uh you know, approve or or or not agree with what the agent is saying."}, {"id": "s62", "start": 293.52, "end": 294.68, "text": "Um so, how does that happen?"}, {"id": "s63", "start": 294.68, "end": 296.48, "text": "Like what's the mechanism for that?\""}, {"id": "s64", "start": 296.48, "end": 299.0, "text": "And over the course of the meetings, you know, you can imagine you get more and more questions."}, {"id": "s65", "start": 299.0, "end": 301.4, "text": "So, can untrusted data manipulate the model?"}, {"id": "s66", "start": 301.4, "end": 303.8, "text": "How do we know that the agent continues to perform well?"}, {"id": "s67", "start": 303.8, "end": 305.2, "text": "How do we deal with integrations?"}, {"id": "s68", "start": 305.2, "end": 309.0, "text": "How do we connect to Epic, to Salesforce, to the other kind of applications that we care about?"}, {"id": "s69", "start": 309.0, "end": 313.56, "text": "And for the purposes of this talk, we're going to focus on these four, the highlighted ones."}, {"id": "s70", "start": 313.56, "end": 316.04, "text": "For the other two, feel free to come and chat to me and talk about these later."}, {"id": "s71", "start": 316.04, "end": 320.2, "text": "We're very happy to talk, but um just in the interest of time, we'll stay focused."}, {"id": "s72", "start": 320.2, "end": 323.8, "text": "And let's start with uh this one about the audit trail."}, {"id": "s73", "start": 323.8, "end": 328.4, "text": "So, this is a question you're guaranteed to get from the security team."}, {"id": "s74", "start": 328.4, "end": 331.08, "text": "They're going to want to see an audit trail."}, {"id": "s75", "start": 331.08, "end": 336.919, "text": "And for programmers, an audit trail sounds very like a typical developer log you might have in DataDog."}, {"id": "s76", "start": 336.919, "end": 339.44, "text": "Surely it's it's it's a similar kind of thing."}, {"id": "s77", "start": 339.44, "end": 350.48, "text": "But for security frameworks that that exist in the real enterprise world, like SOC 2, HITRUST, HIPAA, an audit trail is is a bit more than that."}, {"id": "s78", "start": 350.48, "end": 356.36, "text": "It it has to contain a complete record of absolutely every action that the agent took."}, {"id": "s79", "start": 356.36, "end": 364.76, "text": "It has to contain all of the places where the agent accessed data, all of the authorization by which the agent did something."}, {"id": "s80", "start": 364.76, "end": 369.44, "text": "It's it's this complete record in in a much more fundamental way."}, {"id": "s81", "start": 369.44, "end": 373.88, "text": "And uh you one way of thinking about it is in a legal sense."}, {"id": "s82", "start": 373.88, "end": 378.96, "text": "It say our agent's decisions came up in a court of law."}, {"id": "s83", "start": 378.96, "end": 384.88, "text": "Could we show a justifiable chain of evidence for why the particular actions were taken by a decision?"}, {"id": "s84", "start": 384.88, "end": 389.08, "text": "And that's something that could easily happen within the health care context, for example."}, {"id": "s85", "start": 389.08, "end": 398.0, "text": "When I think about architecting systems like this, I think often about what do I want to make easy?"}, {"id": "s86", "start": 398.0, "end": 407.8, "text": "What are But when I'm choosing my constraints, I'm saying, \"Okay, these are the things I want my system to be easy and let that drive the trade-offs that that I'm going to make.\""}, {"id": "s87", "start": 407.8, "end": 416.88, "text": "And a particular pattern that uh uh is used in lots of different industries, for example, in finance, is a transaction log."}, {"id": "s88", "start": 416.88, "end": 425.64, "text": "An immutable record of events that store all of the transactions that happen throughout the system."}, {"id": "s89", "start": 425.64, "end": 429.28, "text": "And this is append-only timestamp log."}, {"id": "s90", "start": 429.28, "end": 430.64, "text": "It's complete."}, {"id": "s91", "start": 430.64, "end": 434.44, "text": "So, this is your source of truth for all of the data of the system."}, {"id": "s92", "start": 434.44, "end": 435.16, "text": "And it's unified."}, {"id": "s93", "start": 435.16, "end": 441.16, "text": "So, there's only one source of truth across all of the different agents that you might have running in parallel, for example."}, {"id": "s94", "start": 441.16, "end": 448.64, "text": "And architecting this way, the making this trade-off, uh means that auditability becomes trivial."}, {"id": "s95", "start": 448.64, "end": 452.84000000000003, "text": "It falls out of your data storage paradigm that you've chosen."}, {"id": "s96", "start": 452.84000000000003, "end": 463.48, "text": "It sort of is impossible not to be able to roll back time and and see exactly the state of the system at a a particular point in time and be able to uh provide that as an audit trail for what happened"}, {"id": "s97", "start": 463.48, "end": 466.15999999999997, "text": "uh uh each point in time."}, {"id": "s98", "start": 466.15999999999997, "end": 468.96, "text": "And of course, these are trade-offs."}, {"id": "s99", "start": 468.96, "end": 471.56, "text": "So, what's the trade-off you're making here?"}, {"id": "s100", "start": 471.56, "end": 478.76, "text": "I think we could say that for this kind of event logging or sometimes called event sourcing pattern, writes become very easy."}, {"id": "s101", "start": 478.76, "end": 480.52, "text": "So, you just drop an event."}, {"id": "s102", "start": 480.52, "end": 487.36, "text": "Reads become more difficult because you have to read through all of the events in order to reconstruct a view of what happened."}, {"id": "s103", "start": 487.36, "end": 494.76, "text": "And there are patterns like caching and snapshots so you can bring to to to make that that simpler, but there always is more effort there."}, {"id": "s104", "start": 494.76, "end": 506.0, "text": "Although, I have seen in in the healthcare context that actually, you're going to want different interpretations of the raw data that your agents recorded after the fact."}, {"id": "s105", "start": 506.0, "end": 518.32, "text": "So, for example, it might be that more events happened and that changes the interpretation of the healthcare journey, and you want a different view of the the source of truth at that particular time."}, {"id": "s106", "start": 518.32, "end": 526.8, "text": "And this pattern makes that easy because all of your views of the data are ephemeral computed projections of the event log."}, {"id": "s107", "start": 526.8, "end": 528.6, "text": "Um okay."}, {"id": "s108", "start": 528.6, "end": 535.92, "text": "Next, the compliance officer comes and is asking, \"How is the sensitive data passed around the system?"}, {"id": "s109", "start": 535.92, "end": 538.72, "text": "What's the life cycle of data within our system?\""}, {"id": "s110", "start": 538.72, "end": 544.0, "text": "And within a healthcare context, as we all know, data means a lot."}, {"id": "s111", "start": 544.0, "end": 547.839, "text": "It's PHI, protected or personal health information."}, {"id": "s112", "start": 547.839, "end": 550.56, "text": "It's has legal restrictions around it."}, {"id": "s113", "start": 550.56, "end": 554.52, "text": "Not just HIPAA, but other legal restrictions about the use of people's data."}, {"id": "s114", "start": 554.52, "end": 567.76, "text": "You cannot have your agent, just as you cannot have humans, accessing and reading and utilizing healthcare data that they don't absolutely have a necessity to use at that that point in time for that particular"}, {"id": "s115", "start": 567.76, "end": 568.96, "text": "journey."}, {"id": "s116", "start": 568.96, "end": 580.0, "text": "And so, again, architecturally, when I think about how am I storing data within a particular system, I would like to think, \"What is the shape of the data, what kind of characteristics"}, {"id": "s117", "start": 580.0, "end": 582.28, "text": "does the data have?"}, {"id": "s118", "start": 582.28, "end": 586.08, "text": "For health care data, that might be that it's very complicated."}, {"id": "s119", "start": 586.08, "end": 591.52, "text": "It doesn't follow strict hierarchical um relationships."}, {"id": "s120", "start": 591.52, "end": 595.16, "text": "It's uh sometimes unstructured and it's sometimes structured."}, {"id": "s121", "start": 595.16, "end": 596.2, "text": "It could be very large."}, {"id": "s122", "start": 596.2, "end": 603.16, "text": "For example, health care data but one piece of health care data can easily be over a megabyte in size or or much more than that."}, {"id": "s123", "start": 603.16, "end": 605.04, "text": "Uh it has strict access controls."}, {"id": "s124", "start": 605.04, "end": 612.36, "text": "As we've been saying, the R back comes into play like uh both for humans and and then for agents downstream of that."}, {"id": "s125", "start": 612.36, "end": 621.6, "text": "Uh it may even be we I've seen customers where they're not willing to have their health care data leave their own environment, leave their on prem VPC for example."}, {"id": "s126", "start": 621.6, "end": 625.4, "text": "So, we have tangential access to their to their data."}, {"id": "s127", "start": 625.4, "end": 630.36, "text": "And so, an architectural paradigm I might go to is object storage."}, {"id": "s128", "start": 630.36, "end": 633.6, "text": "Schema driven object storage, I think is a good fit for this."}, {"id": "s129", "start": 633.6, "end": 640.2, "text": "It's m- matches well with the choice of using event logging because you can separate the two."}, {"id": "s130", "start": 640.2, "end": 653.2, "text": "So, the events we talked about as the record of what the agent is doing at any particular time only contain references to the schema driven blobs that are the storage of the actual health care data itself."}, {"id": "s131", "start": 653.2, "end": 664.08, "text": "And uh it's important therefore that the health care data is stored immutably again so that you can always go back in time and reconstruct what data the agent had access to at that particular point in time."}, {"id": "s132", "start": 664.08, "end": 677.8, "text": "This separation of events for what happened and object storage for the data that was used at that particular point in time has actually some some very useful benefits."}, {"id": "s133", "start": 677.8, "end": 692.48, "text": "For example, with a system like this, it's possible for developers to go back and debug and have observability over what happened, what particular steps the agent took, why it did that, and and retrace the agent's steps"}, {"id": "s134", "start": 692.48, "end": 697.28, "text": "without having access to the personal health information itself."}, {"id": "s135", "start": 697.28, "end": 706.12, "text": "Although because of the schema driven, they can see the shape of that data, they they can't and to be honest, often won't be able to be given access to that health care data."}, {"id": "s136", "start": 706.12, "end": 712.4, "text": "So, you can separate out observability and orchestration and instrumentation from the health care data itself."}, {"id": "s137", "start": 712.4, "end": 717.6, "text": "And this then has another benefit, which is zero trust."}, {"id": "s138", "start": 717.76, "end": 723.0, "text": "It it the object storage becomes a place where you can apply zero trust principles."}, {"id": "s139", "start": 723.0, "end": 735.48, "text": "Your agents can bear tokens and use those tokens to access the data at the point of use and not allow data to flow around the system as it likes."}, {"id": "s140", "start": 735.48, "end": 742.48, "text": "This then leads into a mitigation for prompt injection for the lethal trifecta."}, {"id": "s141", "start": 742.48, "end": 751.04, "text": "The way I think about the lethal trifecta is can I solve for the constraint if I have an agent at point A with access to this data?"}, {"id": "s142", "start": 751.04, "end": 756.2, "text": "Is it possible within my architecture for the agent to be also accessing data over here?"}, {"id": "s143", "start": 756.2, "end": 768.76, "text": "And zero trust principles, tokens are bad by the agents and object storage segregated from the event stream that has your orchestration logic gives you a place to be able to solve for that constraint."}, {"id": "s144", "start": 768.76, "end": 776.24, "text": "It won't be possible for the agent to access data within the same process that that you've given it the the previous data."}, {"id": "s145", "start": 777.88, "end": 781.96, "text": "Okay, so then it comes to how do you handle escalation?"}, {"id": "s146", "start": 781.96, "end": 790.0, "text": "And in many scenarios, you will want to be able to escalate the decision that an agent makes or an action that an agent makes to a human."}, {"id": "s147", "start": 790.0, "end": 792.72, "text": "But one of the challenges here is that this is quite dynamic."}, {"id": "s148", "start": 792.72, "end": 796.16, "text": "So, you don't know in advance when exactly perhaps the agent's going to escalate."}, {"id": "s149", "start": 796.16, "end": 799.88, "text": "It could be that you're asking the AI to escalate when it's not sure."}, {"id": "s150", "start": 799.88, "end": 808.64, "text": "Um it could be that you define some sort of rules in your system, maybe in a medical context, the treatments going above a certain threshold means that it needs to be escalated"}, {"id": "s151", "start": 808.64, "end": 810.24, "text": "uh for an approval."}, {"id": "s152", "start": 810.24, "end": 810.26, "text": "But"}, {"id": "s153", "start": 810.26, "end": 810.44, "text": "[snorts]"}, {"id": "s154", "start": 810.44, "end": 814.16, "text": "this makes it very challenging because of this this inability to predict."}, {"id": "s155", "start": 814.16, "end": 820.12, "text": "And a second challenge is also that humans and LLMs ultimately process context differently."}, {"id": "s156", "start": 820.12, "end": 825.64, "text": "You know, LLMs will have no problem if you give them massive massive amounts of text, but humans that's not the case."}, {"id": "s157", "start": 825.64, "end": 837.2, "text": "So, what we've seen is that one pattern that can work very well here is if in your platform you enforce you kind of a wider definition of agent which encompasses both LLMs"}, {"id": "s158", "start": 837.2, "end": 843.56, "text": "and humans, then you can make it such that any action that can be taken by an LLM could also be taken by a human."}, {"id": "s159", "start": 843.56, "end": 850.8, "text": "And this is helpful because at any point in the kind of chain of actions that your agent is taking, it can escalate to a human, the human could perform that action,"}, {"id": "s160", "start": 850.8, "end": 856.84, "text": "and then any step downstream doesn't care about whether it was a human or an LLM that did those actions upstream."}, {"id": "s161", "start": 856.84, "end": 871.6, "text": "Um and on the second point around the context, what this also makes much easier is that you can define methods that take the context, which has some kind of shared definition of context,"}, {"id": "s162", "start": 871.6, "end": 875.56, "text": "which is irrespective of whether it's a human or an LLM that's going to be accessing it."}, {"id": "s163", "start": 875.56, "end": 884.24, "text": "And you can take those methods to then map into something that's agent friendly, like a prompt, or into something that's more human friendly, for example, a UI."}, {"id": "s164", "start": 886.96, "end": 892.96, "text": "And then on this fourth and final question that we're going to talk about, um evals."}, {"id": "s165", "start": 893.04, "end": 895.16, "text": "Obviously, you know, we hear a lot about evals."}, {"id": "s166", "start": 895.16, "end": 902.16, "text": "We know that evals can be very helpful, that often they drive decision-making about the types of model you want to use, the type of approach you might want to use"}, {"id": "s167", "start": 902.16, "end": 903.44, "text": "within your product."}, {"id": "s168", "start": 903.44, "end": 907.04, "text": "But we also know that evals can be pretty hard, and there's various factors here."}, {"id": "s169", "start": 907.04, "end": 907.185, "text": "We"}, {"id": "s170", "start": 907.185, "end": 907.2, "text": "[snorts]"}, {"id": "s171", "start": 907.2, "end": 914.76, "text": "know that LLMs are not deterministic, so it can be quite tricky to pin down the precise change that led to some sort of change in outputs."}, {"id": "s172", "start": 914.76, "end": 928.52, "text": "Um we also know that the data that you might put in an offline data set might not necessarily represent production data, and it could be that um maybe you sampled from data, but actually that sample isn't truly representative."}, {"id": "s173", "start": 928.52, "end": 935.84, "text": "And then you also have drift of data over time, so maybe your offline data set is now out of date."}, {"id": "s174", "start": 936.92, "end": 950.92, "text": "And what we found is that these three primitives that we've described described so far in the talk actually give you effective privacy preserving evals almost as a byproduct without needing to kind of bolt something onto the side of your"}, {"id": "s175", "start": 950.92, "end": 952.32, "text": "architecture."}, {"id": "s176", "start": 952.32, "end": 957.28, "text": "So to make that more concrete, so the immutable ledger, what this means is that you can replay your actions."}, {"id": "s177", "start": 957.28, "end": 964.96, "text": "So you can go back to any particular time, you know, in this kind of sequence of events, you can see the complete state of the system at that point in time."}, {"id": "s178", "start": 964.96, "end": 967.68, "text": "And if you wanted to, you could then make very specific tweaks."}, {"id": "s179", "start": 967.68, "end": 976.32, "text": "So you could tweak a prompt, you could tweak a model, you could tweak the code, and you can see the exact direct impact of that because you have all of that context."}, {"id": "s180", "start": 976.32, "end": 990.64, "text": "Secondly, you have this human agent equivalency, which means that for any task, you could get both the agent, the LLM agent, and the human to perform it, and your difference is your eval, that gives you the eval scores."}, {"id": "s181", "start": 990.64, "end": 999.96, "text": "And then finally, what the object storage enables you to do is to actually run these evals on production data including inside your customer's environment without actually ever exposing that data."}, {"id": "s182", "start": 999.96, "end": 1006.72, "text": "You can get your eval results without the sensitive data ever needing to come to where your agent is performing the work."}, {"id": "s183", "start": 1008.2, "end": 1018.96, "text": "Right, so we've gone through four architectural principles that we found useful for building in healthcare and more generally in regulated environments for enterprise."}, {"id": "s184", "start": 1018.96, "end": 1036.439, "text": "The immutable ledger of actions, the orchestration adjacent object storage, the human agent equivalency, and the way that with these three principles evals can emerge as a first-class property of the system rather than as something you attach onto the side."}, {"id": "s185", "start": 1036.439, "end": 1050.04, "text": "I think one of the matters here is that I like to think about architecture as taking your constraints very seriously and thinking about what you want to be simple within the system and then choosing the trade-offs"}, {"id": "s186", "start": 1050.04, "end": 1051.32, "text": "for that."}, {"id": "s187", "start": 1051.32, "end": 1057.92, "text": "And of course, alongside that, some things will become hard, but it's the things that are simple that are most important to you."}, {"id": "s188", "start": 1057.92, "end": 1062.8, "text": "And that there are patterns that already exist across enterprises that solve for a lot of these things."}, {"id": "s189", "start": 1062.8, "end": 1076.8, "text": "And sure, with AI, we need to combine them in new, sometimes radical ways and bring in other way other pieces, but there are patterns that have worked very well within finance, within defense, within big tech that that can be applied to this kind of system architecture."}, {"id": "s190", "start": 1076.8, "end": 1091.16, "text": "And I'd say the takeaway is that where I've seen it go wrong is taking that initial POC, that um that point solution that showed so much promise and that that showed the high accuracy, for example,"}, {"id": "s191", "start": 1091.16, "end": 1096.44, "text": "and then trying to build up from it, strapping on the enterprise requirements as you come across them."}, {"id": "s192", "start": 1096.44, "end": 1105.32, "text": "Okay, we need eval, we need uh security, we need auditability, and bolting these on as additions to the the the foundations of the POC."}, {"id": "s193", "start": 1105.32, "end": 1112.8, "text": "You end up with something very brittle, something very hard to uh uh externalize and to generalize across different use cases."}, {"id": "s194", "start": 1112.8, "end": 1129.4, "text": "But where I've seen it go well is if you take the constraints of a production-ready, scaled enterprise uh system seriously from the beginning and treat those as the architectural principles that you're going to build everything upon and then build back up towards that POC accuracy"}, {"id": "s195", "start": 1129.4, "end": 1132.16, "text": "using your new primitives."}, {"id": "s196", "start": 1133.28, "end": 1134.32, "text": "Thank you for your attention."}, {"id": "s197", "start": 1134.32, "end": 1135.783, "text": "Thank you."}, {"id": "s198", "start": 1135.783, "end": 1137.783, "text": "[applause]"}, {"id": "s199", "start": 1151.503, "end": 1153.503, "text": "[music]"}]}, {"id": "nxokqOq1imY", "title": "Your Agent Evolved. Your Evals Didn't. — Ameya Bhatawdekar, Braintrust", "channel": "AI Engineer", "duration": 1453, "upload_date": null, "url": "https://www.youtube.com/watch?v=nxokqOq1imY", "api": "/api/talks/nxokqOq1imY.json", "summary_url": "/#nxokqOq1imY", "transcript": {"html": "/transcripts/nxokqOq1imY.html", "txt": "/transcripts/nxokqOq1imY.txt", "vtt": "/transcripts/nxokqOq1imY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.96, "end": 13.599, "text": "Hello everyone."}, {"id": "s3", "start": 13.599, "end": 18.48, "text": "My name is Amaya Bhavadkar and I am the field CTO at Brain Trust."}, {"id": "s4", "start": 18.48, "end": 27.439, "text": "Uh Brain Trust is a eval observability platform that helps AI teams build and improve their AI with confidence."}, {"id": "s5", "start": 28.0, "end": 41.12, "text": "So, I'm sure all of you, if not, you know, I I'm sure everyone here has built some application over the last couple of years that has a model at the center of it,"}, {"id": "s6", "start": 41.12, "end": 41.52, "text": "right?"}, {"id": "s7", "start": 41.52, "end": 51.84, "text": "Some sort of a chatbot or a AI agent or some system that's doing batch processing using AI at the heart of it."}, {"id": "s8", "start": 52.0, "end": 59.28, "text": "And I'm sure all of you over that time span have done significant uh changes to that application."}, {"id": "s9", "start": 59.28, "end": 71.36, "text": "You have either rewritten that application entirely or you have like done some pretty complex surgery on your application and the way it looks now compared to how it looked when you started"}, {"id": "s10", "start": 71.36, "end": 74.08, "text": "is likely very very different."}, {"id": "s11", "start": 74.08, "end": 86.72, "text": "And I think everyone's probably uh experienced the same pattern which is like how building a demo with AI is really easy but making it production quality is really hard."}, {"id": "s12", "start": 86.72, "end": 94.96000000000001, "text": "The same way when you're evolving your AI application and making significant changes to it, it can be very very challenging."}, {"id": "s13", "start": 94.96000000000001, "end": 96.24000000000001, "text": "Right?"}, {"id": "s14", "start": 96.24000000000001, "end": 100.56, "text": "And uh the challenge is not because you built it the wrong way."}, {"id": "s15", "start": 100.56, "end": 106.15899999999999, "text": "The challenge is because the system around you is evolving and changing so dynamically, so rapidly."}, {"id": "s16", "start": 106.15899999999999, "end": 113.84, "text": "You know, the models are changing, the way your users use your application changes, the data that your application works with changes."}, {"id": "s17", "start": 113.84, "end": 120.799, "text": "And all of those things require you to continually make changes to your applications."}, {"id": "s18", "start": 121.52, "end": 129.599, "text": "And so if you look at, you know, the rate at which the models have evolved over the last couple of years, it's truly astonishing."}, {"id": "s19", "start": 129.599, "end": 144.16, "text": "like every few months there's a new release and that locks unlocks a you know a ton of new capabilities a ton of new features that were not present in the previous generation of the models right we have started seeing like models"}, {"id": "s20", "start": 144.16, "end": 158.8, "text": "that got really good at working with tools models getting really good at handling very long context uh we started seeing models generate code that can be reliably and safely executed in"}, {"id": "s21", "start": 158.8, "end": 160.239, "text": "uh sandboxes."}, {"id": "s22", "start": 160.239, "end": 165.519, "text": "We've seen memory systems becoming very sophisticated and practical."}, {"id": "s23", "start": 165.519, "end": 168.31900000000002, "text": "And so each of those was not a minor upgrade."}, {"id": "s24", "start": 168.31900000000002, "end": 171.04, "text": "It was not an incremental change to the previous state-of-the-art."}, {"id": "s25", "start": 171.04, "end": 173.44, "text": "It was a step function change, right?"}, {"id": "s26", "start": 173.44, "end": 186.64, "text": "And so now we are moving from this era of like re uh sort of iterating on improving our applications to replplatforming our applications because everything is changing so dramatically."}, {"id": "s27", "start": 187.92, "end": 194.0, "text": "So why can't you just drop in a new model and ask expect your system to work?"}, {"id": "s28", "start": 194.0, "end": 208.879, "text": "Um well the models the previous system that you built was built with some assumptions around the existing limitations and the constraints that the models had."}, {"id": "s29", "start": 208.879, "end": 209.2, "text": "Right?"}, {"id": "s30", "start": 209.2, "end": 216.0, "text": "Your previous systems were built to account for the fact that your models weren't really as good at tool calling."}, {"id": "s31", "start": 216.0, "end": 221.76, "text": "for example, and so your system implemented a bunch of logic to make it work with those limitations."}, {"id": "s32", "start": 221.76, "end": 234.48, "text": "And so when you drop in a new model, right, uh you are not able to tap into the new capabilities, the new state-of-the-art without really restructuring your systems in a pretty dramatic way,"}, {"id": "s33", "start": 234.48, "end": 235.2, "text": "right?"}, {"id": "s34", "start": 235.2, "end": 243.04, "text": "And so in order to capture that kind of capability, the new unlock, you have to rearchitect."}, {"id": "s35", "start": 244.64, "end": 251.12, "text": "And so as you rearchitect right um what happens is u models evolve."}, {"id": "s36", "start": 251.12, "end": 257.84, "text": "So you've got to go in and change your application architecture do a lot of work on on getting it to work with the new models."}, {"id": "s37", "start": 257.84, "end": 262.0, "text": "But that means that you also now have to update your evals."}, {"id": "s38", "start": 262.0, "end": 266.88, "text": "The way you ensure that your system is going to operate reliably, right?"}, {"id": "s39", "start": 266.88, "end": 276.32, "text": "Because every new um uh unlock is potentially also giving you new surface area where things can go wrong."}, {"id": "s40", "start": 276.32, "end": 281.68, "text": "And so your evals now have to adapt and evolve to your new architecture."}, {"id": "s41", "start": 281.68, "end": 288.32, "text": "And so you know architecture follows model updates and your evals have to follow your architecture."}, {"id": "s42", "start": 288.639, "end": 301.84, "text": "So as I talked through the various generations of the AI systems architectures and how you do uh you know what that architecture is and how the eval to evolve with those architectural changes."}, {"id": "s43", "start": 301.84, "end": 310.72, "text": "I want to ground it in a real example and so what I want to talk about is um on the subsequent slides I'll share a bunch of notional evals"}, {"id": "s44", "start": 310.72, "end": 313.6, "text": "but I want them to be grounded in a real agent."}, {"id": "s45", "start": 313.6, "end": 316.4, "text": "In this case we are going to look at this S sur agent."}, {"id": "s46", "start": 316.4, "end": 326.4, "text": "the SR agent is able to not only read information but it's able to take actions on and update systems so it can you know roll back a deployment or"}, {"id": "s47", "start": 326.4, "end": 340.4, "text": "uh escalate it to a human page someone uh so it has access to read tools and write tools so let's see how this system would have evolved through the various generations of AI architectures"}, {"id": "s48", "start": 340.4, "end": 346.8, "text": "so let's start with the simplest case right this is how a lot of AI applications started about 3 years ago."}, {"id": "s49", "start": 346.8, "end": 350.8, "text": "This is a single prompt, a single model call."}, {"id": "s50", "start": 350.8, "end": 354.639, "text": "You have one input, one model call, one output."}, {"id": "s51", "start": 354.639, "end": 360.88, "text": "And so the focus of evaluations was on the final answer quality, right?"}, {"id": "s52", "start": 360.88, "end": 366.4, "text": "Did you get the correct answer in terms of uh accuracy and factuality?"}, {"id": "s53", "start": 366.4, "end": 370.08, "text": "Um or did the uh model hallucinate something?"}, {"id": "s54", "start": 370.08, "end": 371.28, "text": "Did it make up stuff?"}, {"id": "s55", "start": 371.28, "end": 382.319, "text": "or did it reference uh old non u the the previous knowledge that it had been trained on and not the latest uh information related to that subject."}, {"id": "s56", "start": 382.319, "end": 391.12, "text": "Um so in this case um you were really focusing primarily on the final answer that was your unit of evaluation."}, {"id": "s57", "start": 391.12, "end": 394.8, "text": "And so the approach was you would put together a golden data set."}, {"id": "s58", "start": 394.8, "end": 405.12, "text": "You will create a bunch of various scores that were looking at um encoding your definition of what good looks like that then you could evaluate the answers against."}, {"id": "s59", "start": 405.12, "end": 405.919, "text": "And this was great."}, {"id": "s60", "start": 405.919, "end": 407.28, "text": "This was a good way to get started."}, {"id": "s61", "start": 407.28, "end": 409.28, "text": "It was narrow because there's no tool calling."}, {"id": "s62", "start": 409.28, "end": 410.319, "text": "There's no orchestration."}, {"id": "s63", "start": 410.319, "end": 413.6, "text": "there's no uh retrieval, no other steps."}, {"id": "s64", "start": 413.6, "end": 416.56, "text": "It's just a simple call to the model."}, {"id": "s65", "start": 416.56, "end": 419.28, "text": "Uh but the next iteration of this was the chain."}, {"id": "s66", "start": 419.28, "end": 424.72, "text": "This is where you started doing a set of steps before you actually made the model call, right?"}, {"id": "s67", "start": 424.72, "end": 429.599, "text": "Uh the typical rag application looked like it took the user input."}, {"id": "s68", "start": 429.599, "end": 433.199, "text": "It parsed some information from the user output input."}, {"id": "s69", "start": 433.199, "end": 439.759, "text": "It then used that to retrieve information, then generate the context and then hand it over to the model."}, {"id": "s70", "start": 439.759, "end": 447.919, "text": "And then the model synthesizes reasons on that information, synthesizes an answer and you evaluate the answer."}, {"id": "s71", "start": 447.919, "end": 451.52, "text": "But there's a number of other places where things could go wrong."}, {"id": "s72", "start": 451.52, "end": 454.8, "text": "Yeah, your parser could extract the wrong information."}, {"id": "s73", "start": 454.8, "end": 457.199, "text": "It could retrieve the wrong context."}, {"id": "s74", "start": 457.199, "end": 459.28, "text": "The model could struggle with the context."}, {"id": "s75", "start": 459.28, "end": 468.639, "text": "Like in the early days, even though the model windows were the context window sizes were increasing, the models struggled to um reason over large context."}, {"id": "s76", "start": 468.639, "end": 471.599, "text": "So context stuffing could be an issue for the model performance."}, {"id": "s77", "start": 471.599, "end": 476.0, "text": "And so now you had multiple uh areas of failure."}, {"id": "s78", "start": 476.0, "end": 479.039, "text": "And so you needed to eval."}, {"id": "s79", "start": 485.28, "end": 494.08, "text": "But this was kind of very um what I would call very limited like it did things a very specific way all the time, right?"}, {"id": "s80", "start": 494.08, "end": 502.16, "text": "And so in late mid late 2023 early 24 the React paper became really popular."}, {"id": "s81", "start": 502.16, "end": 514.399, "text": "And so folks were looking at building um model um in a loop running a model in a loop where it could uh reason and act uh in a step-wise way."}, {"id": "s82", "start": 514.399, "end": 517.2, "text": "So the model could make tool calls."}, {"id": "s83", "start": 517.2, "end": 534.56, "text": "It could then understand what the tool calls returned uh reason on that data and then figure out what the next step was so that it could then continue to run this in a loop till the user intent was finally satisfied or the model ran out of the iteration budget."}, {"id": "s84", "start": 534.56, "end": 535.519, "text": "Right?"}, {"id": "s85", "start": 535.519, "end": 542.56, "text": "And so this was great because it now gives you gives the model the AI system a lot more flexibility."}, {"id": "s86", "start": 542.56, "end": 546.56, "text": "It's not pinned down to operating in a very specific workflow."}, {"id": "s87", "start": 546.56, "end": 554.8, "text": "It now is able to reason on the various intents and it's able to self-organize, self-chestrate and complete the user tasks."}, {"id": "s88", "start": 554.8, "end": 559.6, "text": "Unfortunately, the models of that era were not as robust as they needed to be."}, {"id": "s89", "start": 559.6, "end": 562.56, "text": "So, you know, models struggled with tool callings."}, {"id": "s90", "start": 562.56, "end": 564.08, "text": "They got the arguments wrong."}, {"id": "s91", "start": 564.08, "end": 566.399, "text": "The models struggled with orchestration."}, {"id": "s92", "start": 566.399, "end": 568.16, "text": "So, they called the wrong tools."}, {"id": "s93", "start": 568.16, "end": 571.44, "text": "The models still had challenges with reasoning."}, {"id": "s94", "start": 571.44, "end": 577.2, "text": "they weren't necessarily doing a great job of, you know, dealing with long context."}, {"id": "s95", "start": 577.2, "end": 579.12, "text": "So you had things like context collapse."}, {"id": "s96", "start": 579.12, "end": 586.8, "text": "And so while the idea was like really really exciting, um, it fell short of delivering on the actual promise."}, {"id": "s97", "start": 586.8, "end": 591.12, "text": "And so what does what do you do when your model can't be controlled, right?"}, {"id": "s98", "start": 591.12, "end": 596.32, "text": "You take the control and you bake that control into the system that you're building around the model."}, {"id": "s99", "start": 596.32, "end": 602.0, "text": "And so teams started moving towards these kind of workflow graphs, right?"}, {"id": "s100", "start": 602.0, "end": 615.519, "text": "Um they started building the orchestration and the execution and planning logic into the the system itself either as a graph or as a state machine."}, {"id": "s101", "start": 615.519, "end": 623.2, "text": "And so you took control of the orchestration while you allowed the models to operate at the node level."}, {"id": "s102", "start": 623.2, "end": 635.279, "text": "And that way you got a lot more uh reliability and predictability in how your AI was going to operate across those various intents."}, {"id": "s103", "start": 635.36, "end": 644.32, "text": "But then the problem is you are now building a system that is designed to work for a specific set of intents for a specific types of use cases."}, {"id": "s104", "start": 644.32, "end": 655.519, "text": "And as you start hand, you know, the system starts interacting with with instances that are outside that distribution, the system starts struggling with that, right?"}, {"id": "s105", "start": 655.519, "end": 664.959, "text": "You expect um you know a certain set of applications or u user interactions to work well because they can be fulfilled by the orchestration that you have designed."}, {"id": "s106", "start": 664.959, "end": 677.68, "text": "But when your the user intent needs to be requires other things to happen beyond what's specified in the orchestration, the system can start um you know breaking at the seams."}, {"id": "s107", "start": 677.68, "end": 683.44, "text": "And uh in order to do that, folks were now building a lot more complexity into their orchestration logic."}, {"id": "s108", "start": 683.44, "end": 693.519, "text": "And so you're building these special uh branches and way you handle special intents in the complex graph that described your system."}, {"id": "s109", "start": 693.519, "end": 699.36, "text": "And so what that means is like you had now a ton of different surfaces for failure."}, {"id": "s110", "start": 699.36, "end": 707.36, "text": "So you now had to deal with uh you know uh dealing with uh branch consistency and branching logic failures."}, {"id": "s111", "start": 707.36, "end": 713.2, "text": "You had to deal with things like the contracts between the nodes not working out well."}, {"id": "s112", "start": 713.2, "end": 723.36, "text": "Uh you had to deal with the limitations of uh the nodes that were you know built for a specific set of use cases."}, {"id": "s113", "start": 723.36, "end": 737.04, "text": "So you know there were classifier nodes for example and they could make mistakes and so you could now have a significant amount of um you know areas where you could uh where the system could fail."}, {"id": "s114", "start": 737.04, "end": 749.04, "text": "And so your evals now have to not only look at u you know the overall orchestration but they now have to you have to have node level evals."}, {"id": "s115", "start": 749.04, "end": 761.2, "text": "you have to uh make sure that you have evalu uh you know how you do retry loops."}, {"id": "s116", "start": 761.2, "end": 772.079, "text": "There's a lot of complex behaviors of the system that now need to be evaluated in addition to all the other things that you were evaluating before."}, {"id": "s117", "start": 774.72, "end": 788.639, "text": "So the graphs were kind of popular like in in late 24 early 25 and so a lot of systems were now implemented using certain frameworks and they were now in production."}, {"id": "s118", "start": 788.639, "end": 802.24, "text": "Uh but then um Anthropic and OpenAI launched some amazing new model capabilities mid late 25 and what that was like tool calling became extremely reliable."}, {"id": "s119", "start": 802.24, "end": 806.88, "text": "We started uh seeing uh much better orchestration control."}, {"id": "s120", "start": 806.88, "end": 812.24, "text": "Uh the models were able to plan a lot more effectively accurately."}, {"id": "s121", "start": 812.24, "end": 814.9590000000001, "text": "They were able to manage long horizon tasks."}, {"id": "s122", "start": 814.9590000000001, "end": 819.68, "text": "they were able to do a much better job of introspecting and course correcting."}, {"id": "s123", "start": 819.68, "end": 828.48, "text": "And so like as things went a little off track, the models were able to, you know, understand that and bring the execution back on track."}, {"id": "s124", "start": 828.48, "end": 839.519, "text": "And so what that meant was a lot of these u u graph-based systems were not able to take advantage of these new capabilities."}, {"id": "s125", "start": 839.519, "end": 856.959, "text": "they were still running into some of those like brittleleness issues that the new model state-of-art had unlocked and so um we started looking at building out um the react loop again that's that started working and so now you had this new"}, {"id": "s126", "start": 856.959, "end": 872.88, "text": "AI systems that could effectively reliably work in a loop they could make those tool calls they could figure out the next step and then they could u essentially go in and um fulfill the user intent."}, {"id": "s127", "start": 872.88, "end": 876.32, "text": "But the way they worked was very it had a high degree of variance."}, {"id": "s128", "start": 876.32, "end": 884.9590000000001, "text": "So every trajectory for the same input if you ran it a couple of times you would see you know dramatically different trajectories while yielding the right answer."}, {"id": "s129", "start": 884.9590000000001, "end": 887.92, "text": "And so now there's a lot of variance that you have to deal with."}, {"id": "s130", "start": 887.92, "end": 908.16, "text": "So now instead of just focusing on a specific eval the unit of eval was no longer just one eval now you're looking at doing an analysis of the distribution of the evals you're taking the same eval you're running it multiple times you're running it k times and you're ensuring that uh you get a statistically relevant signal from"}, {"id": "s131", "start": 908.16, "end": 921.04, "text": "that eval so now new metrics like uh pass at k and pass raise to k or pass wedge k these were the new metrics that certainly started to make a lot of sense."}, {"id": "s132", "start": 921.04, "end": 931.12, "text": "pass at K is like if you take the same that eval and you run it K times does it succeed at least once and that is a measure of its capability"}, {"id": "s133", "start": 931.12, "end": 941.199, "text": "and pass wedge K is like if you run that eval multiple times how many times of those K instances does it run successfully that's a measure of its uh reliability"}, {"id": "s134", "start": 941.199, "end": 955.68, "text": "and so now you can understand whether your system with a high pass at K uh you know is reliable by seeing seeing how it you know by measuring the pass wedge K metric for example."}, {"id": "s135", "start": 955.68, "end": 956.31, "text": "So"}, {"id": "s136", "start": 956.31, "end": 956.72, "text": "[snorts]"}, {"id": "s137", "start": 956.72, "end": 967.279, "text": "this gives you a lot more um you know u understanding of like how your system is working what the failure sources are and how you work on those right"}, {"id": "s138", "start": 967.279, "end": 979.12, "text": "and then more recently what we've seen is um there's a big shift from it's your system is not just a model running in a loop right it becomes a product system it's that"}, {"id": "s139", "start": 979.12, "end": 989.92, "text": "there's a model in the loop that's augmented by a lot of peripheral components you know you have a memory system that is able to provide robust memory storage and memory"}, {"id": "s140", "start": 989.92, "end": 994.32, "text": "um retrieval capabilities uh within a session cross sessions."}, {"id": "s141", "start": 994.32, "end": 1003.279, "text": "Uh models can tap into this memory to you know improve upon their runs in subsequent instances by learning from previous runs for example."}, {"id": "s142", "start": 1003.279, "end": 1015.92, "text": "You've got robust code execution uh sandboxes now and so you can run model generated code reliably robustly on uh uh during uh execution."}, {"id": "s143", "start": 1015.92, "end": 1024.959, "text": "You've got um MCP and skill uh directories that the model can now tap into and you can you know weave in extensibility."}, {"id": "s144", "start": 1024.959, "end": 1037.28, "text": "You now have things like a skills repository or a skill systems that can be used to continually augment the the the capabilities of models through you know symbolic instructions."}, {"id": "s145", "start": 1037.28, "end": 1052.88, "text": "And so uh now you know like uh these systems are getting pretty complex and as a result uh you know if you are continuing to to use the eval from the previous generation"}, {"id": "s146", "start": 1052.88, "end": 1056.24, "text": "you're going to get sort of a partial coverage of your system."}, {"id": "s147", "start": 1056.24, "end": 1069.76, "text": "you're not going to see uh how your system is fragile in ways because of the unlock because of the new surface that you have uh you know uh unlocked in your new system."}, {"id": "s148", "start": 1069.76, "end": 1087.039, "text": "So what that means is um just reflecting back on the pattern is like you know all of these model innovations resulted in in you know corresponding shift in the architectures and so so you've seen these waves of architecture"}, {"id": "s149", "start": 1087.039, "end": 1101.12, "text": "and then what's needed is like your evals to be congru congruent with that architecture right uh because ultimately it's the eval that are sort of your durable asset that describe how your system is supposed to work."}, {"id": "s150", "start": 1101.12, "end": 1115.52, "text": "And as you go through these generational shifts, that's a good way to ensure that you know your system your user users experience your system in a way that things that were working are not broken, but it's unlocked a bunch of new capability."}, {"id": "s151", "start": 1115.84, "end": 1119.84, "text": "And so everyone's seen this, you know, diagram of this flywheel."}, {"id": "s152", "start": 1119.84, "end": 1122.799, "text": "Everyone's sort of like bought into it conceptually, right?"}, {"id": "s153", "start": 1122.799, "end": 1130.08, "text": "the idea of harvesting data from production to inform your eval so that your evals are reflective of the real world."}, {"id": "s154", "start": 1130.08, "end": 1132.0, "text": "I think that all makes sense, right?"}, {"id": "s155", "start": 1132.0, "end": 1143.6, "text": "And and this is the way that you know teams that are doing a great job at building and shipping and improving their AI systems, they they they follow this workflow pretty religiously."}, {"id": "s156", "start": 1143.6, "end": 1155.2, "text": "Um so I've talked to a lot of teams and I think while there is a general acceptance that yeah you need to run that workflow um in practice a lot of teams don't do that their eval are somewhat static"}, {"id": "s157", "start": 1155.2, "end": 1172.16, "text": "and even if you're not changing your AI agent architecture you're you know by not really being disciplined about running that that workflow that flywheel you are now getting stagnant evals that are not being as effective in helping you"}, {"id": "s158", "start": 1172.16, "end": 1174.799, "text": "measure and improve the quality of your AI."}, {"id": "s159", "start": 1174.799, "end": 1185.919, "text": "And especially as you go through this generational shift, it's really important that you need a mechanism to not only harvest data from production in a way that shows you failures"}, {"id": "s160", "start": 1185.919, "end": 1193.44, "text": "that you are looking out for because you defined what good looks like as part of your evals."}, {"id": "s161", "start": 1193.44, "end": 1199.039, "text": "But you also want something to shine a light on the new failure types, right?"}, {"id": "s162", "start": 1199.039, "end": 1208.88, "text": "the system is going to fail in new and novel ways in ways that you might not have anticipated and you now need to start harvesting that data in a meaningful way."}, {"id": "s163", "start": 1208.88, "end": 1212.32, "text": "And you want to do this again as as part of the flywheel."}, {"id": "s164", "start": 1212.32, "end": 1226.72, "text": "And so this is where you need systems to come in and u shine a light on things that are broken in ways that you had anticipated, but also broken in a way in ways that you had not anticipated."}, {"id": "s165", "start": 1226.72, "end": 1229.2, "text": "And this is really important."}, {"id": "s166", "start": 1229.2, "end": 1233.36, "text": "So I'm going to quickly talk a little bit about like how we do this in brain trust."}, {"id": "s167", "start": 1233.36, "end": 1237.6, "text": "So brain trust provides all the components that you need to run this flywheel."}, {"id": "s168", "start": 1237.6, "end": 1240.4, "text": "We've got evals, we've got observability."}, {"id": "s169", "start": 1240.4, "end": 1253.84, "text": "We have ways in which you can get insights from your production data to harvest u new eval cases that you can then pass off to the to the team that they can then use to hill climb and"}, {"id": "s170", "start": 1253.84, "end": 1256.24, "text": "improve your AI system."}, {"id": "s171", "start": 1256.24, "end": 1258.4, "text": "But topics is a really cool feature."}, {"id": "s172", "start": 1258.4, "end": 1264.4, "text": "What topics does, it does a cluster analysis on all of your production data."}, {"id": "s173", "start": 1264.4, "end": 1272.96, "text": "And so the idea over here is now you are able to find new categories of failures that you had not anticipated."}, {"id": "s174", "start": 1272.96, "end": 1283.44, "text": "So your system is now able to look at all what's going on in production and it's able to now start surfacing these new failure modes that tell you here's a new new"}, {"id": "s175", "start": 1283.44, "end": 1291.36, "text": "failure uh you know um uh situation that you hadn't thought about and you didn't have any guardrails in place."}, {"id": "s176", "start": 1291.36, "end": 1302.72, "text": "didn't have any eval in place and so now it's really easy for teams to expand the set of their evals to now cover those kind of new failures."}, {"id": "s177", "start": 1302.72, "end": 1316.72, "text": "And so this is this is a pretty exciting uh capability in brain trust that enables these teams to continually not only get new failure examples for known failure modes"}, {"id": "s178", "start": 1316.72, "end": 1330.0, "text": "but more importantly as they make these systemic architectural changes they're able to also understand the new ways in which your system is going to fail and build out effective data sets from production data."}, {"id": "s179", "start": 1331.2, "end": 1339.2, "text": "So I think the takeaway for today's talk is that the models will keep on changing."}, {"id": "s180", "start": 1339.2, "end": 1341.52, "text": "Uh I I don't think we're going to see any slowdown."}, {"id": "s181", "start": 1341.52, "end": 1343.039, "text": "I don't think we have hit a plateau yet."}, {"id": "s182", "start": 1343.039, "end": 1348.24, "text": "I think there are lots of unlocks that are coming down um this road."}, {"id": "s183", "start": 1348.24, "end": 1355.84, "text": "Um and as a result you will be making significant changes to your AI systems."}, {"id": "s184", "start": 1355.84, "end": 1362.72, "text": "you know, you'll be doing a lot of surgery on your AI agents in the coming months, years."}, {"id": "s185", "start": 1362.72, "end": 1375.52, "text": "And so it's really important that you have a robust workflow system in place to ensure that as you make those changes, as you incorporate these new models into your systems,"}, {"id": "s186", "start": 1375.52, "end": 1386.24, "text": "that your systems continue to get better at doing new things, but also continue to work well for the things that they were doing before."}, {"id": "s187", "start": 1386.24, "end": 1399.44, "text": "And so building out like a robust eval discipline uh with the right tools and the right automation and the right systems becomes paramount to manage these generational changes."}, {"id": "s188", "start": 1399.44, "end": 1414.32, "text": "And so ultimately what you want is um to really uh index on that flywheel and make it part of your workflow so that uh you know the ability to"}, {"id": "s189", "start": 1414.32, "end": 1427.039, "text": "improve incrementally when the changes in the system are incremental and the ability to improve your system in a in sort of a step function way are both supported by your"}, {"id": "s190", "start": 1427.039, "end": 1428.64, "text": "evals."}, {"id": "s191", "start": 1428.64, "end": 1434.24, "text": "So with that, I want to say thank you."}, {"id": "s192", "start": 1434.466, "end": 1436.466, "text": "[applause]"}]}, {"id": "pOvWgX7IJsc", "title": "Can LLMs Write Fast Multi-GPU Kernels? — Simran Arora, Together AI", "channel": "AI Engineer", "duration": 1800, "upload_date": null, "url": "https://www.youtube.com/watch?v=pOvWgX7IJsc", "api": "/api/talks/pOvWgX7IJsc.json", "summary_url": "/#pOvWgX7IJsc", "transcript": {"html": "/transcripts/pOvWgX7IJsc.html", "txt": "/transcripts/pOvWgX7IJsc.txt", "vtt": "/transcripts/pOvWgX7IJsc.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.8, "end": 13.679, "text": "Hi everyone."}, {"id": "s3", "start": 13.679, "end": 15.599, "text": "Uh, sorry it's a bit loud in here."}, {"id": "s4", "start": 15.599, "end": 17.119, "text": "Was not expecting this."}, {"id": "s5", "start": 17.119, "end": 18.64, "text": "Um, I'm Siman."}, {"id": "s6", "start": 18.64, "end": 21.359, "text": "I'm a principal scientist at Together AI."}, {"id": "s7", "start": 21.359, "end": 29.439, "text": "Um, I previously did my PhD in the Hazy Research Lab with Chris Ray at Stanford and I'm an incoming professor at Caltech."}, {"id": "s8", "start": 29.439, "end": 42.079, "text": "Um I lead the frontier performance research team at together where we develop systems, frameworks and algorithms to extract as much performance as possible out of modern um AI hardware."}, {"id": "s9", "start": 42.079, "end": 51.52, "text": "Today I want to share a little bit about our contributions towards simplifying the development of uh multi-GPU AI kernels."}, {"id": "s10", "start": 51.52, "end": 61.44, "text": "A few years ago, um, GPU utilization used to be limited by poor intraGPU memory access and single GPU kernels."}, {"id": "s11", "start": 61.44, "end": 75.84, "text": "But with significant investment in better kernels like flash attention, uh, memory efficient architectures like from deepseek, sparse attentions, mambas and so on, um, and better DSLs, we've sort of shifted the bottleneck"}, {"id": "s12", "start": 75.84, "end": 79.6, "text": "to multi-GPU communication."}, {"id": "s13", "start": 81.2, "end": 87.6, "text": "During this talk, I'll start by telling you a little bit about why now, why GPU networking now."}, {"id": "s14", "start": 87.6, "end": 90.88, "text": "Then I'll tell you about um the sort of problem space."}, {"id": "s15", "start": 90.88, "end": 98.0, "text": "So what are the challenges in maximizing hardware utilization and development simplicity for multiGPU kernels."}, {"id": "s16", "start": 98.0, "end": 105.119, "text": "Um three, we'll talk a little bit about the fundamentals be behind designing effective multiGGPU kernels."}, {"id": "s17", "start": 105.119, "end": 112.0, "text": "Four, we'll look at whether frontier AI models can uh leverage these fundamental principles."}, {"id": "s18", "start": 112.0, "end": 113.68, "text": "Do they understand them?"}, {"id": "s19", "start": 113.68, "end": 115.2, "text": "Can they reason about them?"}, {"id": "s20", "start": 115.2, "end": 118.399, "text": "Um, you know, in theory, these models are very good at reasoning."}, {"id": "s21", "start": 118.399, "end": 130.319, "text": "Um, and then five, we'll talk through the results of these frontier models on a benchmark that we've developed called um parallel kernel bench for multiGPU kernel generation evaluation."}, {"id": "s22", "start": 132.08, "end": 136.959, "text": "Okay, before we dive into those five parts, just basic preliminaries."}, {"id": "s23", "start": 136.959, "end": 143.76, "text": "So, this is an Nvidia GPU, uh, an H100 GPU that you can see on the screen."}, {"id": "s24", "start": 143.76, "end": 149.76, "text": "Um, I always like to help ground people in GPU kernels via looking at the hardware."}, {"id": "s25", "start": 149.76, "end": 155.36, "text": "So, these rainbow colored dots are processors where actual compute is happening."}, {"id": "s26", "start": 155.36, "end": 167.12, "text": "um all of the you know parallel threads are operating within one of those colored dots and there's typically you know 100 200 of them on modern AI GPUs."}, {"id": "s27", "start": 167.12, "end": 177.2, "text": "Um around those processors you can see um some of the memory that these processors retrieve data so large weights activations from."}, {"id": "s28", "start": 177.2, "end": 184.56, "text": "So these rectangles between the colored dots are an L2 cache slightly faster memory."}, {"id": "s29", "start": 184.56, "end": 187.599, "text": "um not a ter like crazy large amount of it."}, {"id": "s30", "start": 187.599, "end": 190.8, "text": "And then these black boxes are high bandwidth memory."}, {"id": "s31", "start": 190.8, "end": 199.68, "text": "So when you Nvidia Smi and see you know 80 gigabytes, 1008 gigabytes, whatever it is on your GPU, that's that memory."}, {"id": "s32", "start": 199.68, "end": 204.159, "text": "Um a GPU is operating a highly parallel program."}, {"id": "s33", "start": 204.159, "end": 210.64, "text": "So multiple threads are combined together in uh into larger coarser units."}, {"id": "s34", "start": 210.64, "end": 218.64, "text": "and we schedule these threads and and blocks onto these processors to perform our AI compute."}, {"id": "s35", "start": 218.64, "end": 227.28, "text": "Beyond the GPU, we'll have multiple GPUs and we'll also have, you know, CPUs um that have memory as well."}, {"id": "s36", "start": 229.04, "end": 241.36, "text": "Um so to perform computation um the memory that these threads use is going to be stored in a really fast register memory that's right next to the computation units."}, {"id": "s37", "start": 241.36, "end": 257.84, "text": "um simple physics if I am pulling data from very very close to my proc my compute unit it's really fast to get to it because it you know that data is right next to me but there's not a large radius and not a large volume of space that's close by to my"}, {"id": "s38", "start": 257.84, "end": 269.28, "text": "process uh my my compute units and so I don't have very much of it so you can see that the fastest memory here the registers is sup is you know 130 terabytes per second on an H100"}, {"id": "s39", "start": 269.28, "end": 277.68, "text": "but we don't have very much on of it and as we go to the further away memory we have a lot more of it but it takes longer to reach it."}, {"id": "s40", "start": 277.68, "end": 280.72, "text": "Uh again simple physics."}, {"id": "s41", "start": 280.72, "end": 286.72, "text": "So in multiGPU systems in particular um there is a hierarchy of interconnects."}, {"id": "s42", "start": 286.72, "end": 293.36, "text": "So we will have something called PCIe um as the channel for CPUGGPU communications."}, {"id": "s43", "start": 293.36, "end": 304.08, "text": "We'll have multiGPU or multi- uh node communications over infiniband TCP and then in the we're going to focus mostly on the Nvidia sphere here."}, {"id": "s44", "start": 304.08, "end": 314.479, "text": "Um in uh the intraGPU regime we'll have NVLink um providing point-to-point connections between GPUs and the NV switch."}, {"id": "s45", "start": 314.479, "end": 329.759, "text": "NV switch connects all NVLink in endpoints into a non-blocking fabric for full GPUGGPU communication and NV switch is exciting because it also provides support for in network offdevice acceleration"}, {"id": "s46", "start": 329.759, "end": 336.56, "text": "for oper like communication primitives like multiccast and reductions."}, {"id": "s47", "start": 337.68, "end": 341.52, "text": "Okay, so diving in with the preliminaries in mind."}, {"id": "s48", "start": 341.52, "end": 344.96, "text": "Why GPU networking now?"}, {"id": "s49", "start": 344.96, "end": 353.039, "text": "So as I mentioned at the beginning, we've really put a lot of effort into making AIO uh more efficient over recent years."}, {"id": "s50", "start": 353.039, "end": 360.72, "text": "Um again, we have uh architectures that use less compute, less memory like Mamba or sparse attentions."}, {"id": "s51", "start": 360.72, "end": 366.4, "text": "We have algorithms that make AI more hardware affair aware like flash attention."}, {"id": "s52", "start": 366.4, "end": 375.039, "text": "We have tools to make it easy to map AI algorithms to the hardware like tileang, mojo, triton, gluon, thunder kittens."}, {"id": "s53", "start": 375.039, "end": 383.84, "text": "Um, and we have new techniques to overlap uh execution across many AI operators very tightly like mega kernels."}, {"id": "s54", "start": 383.84, "end": 395.52, "text": "And we also have tools to make it easy to run on multiple vendor and silicon platforms like thunder mittens for Apple silicon or or hipkittens for AMD and so on."}, {"id": "s55", "start": 395.52, "end": 404.8, "text": "Um, at this point we really believe that GPU networking offers many new and exciting opportunities for AI efficiency."}, {"id": "s56", "start": 405.36, "end": 412.24, "text": "Modern AI workloads are getting very big and require kernels that span multiple um, you know, GPUs."}, {"id": "s57", "start": 412.24, "end": 427.44, "text": "So on many production um distributed training and inference workloads, communication is increasingly consuming the majority of the runtime and yields low model flop utilization at scale."}, {"id": "s58", "start": 428.56, "end": 439.84, "text": "So the uh pace of innovation and diversity of approaches that different hardware providers are taking in their networking stacks is another reason why it's an exciting time to study"}, {"id": "s59", "start": 439.84, "end": 442.479, "text": "um you know networking and communication."}, {"id": "s60", "start": 442.479, "end": 455.199, "text": "So we can see here um AMD hardware with uh what's called XGMI interconnects um providing pointto-point links between different GPUs in a scaleup domain."}, {"id": "s61", "start": 455.199, "end": 459.84000000000003, "text": "We can see here TPU and uh interconnect uh as well."}, {"id": "s62", "start": 459.84000000000003, "end": 465.28, "text": "So the TPU will use a 3D Taurus and also have optical wraparound links."}, {"id": "s63", "start": 465.28, "end": 469.84000000000003, "text": "So yet another diverse form of the topology and links."}, {"id": "s64", "start": 469.84000000000003, "end": 487.759, "text": "Um and then again for Nvidia we'll have the INV um switch which integrates um compute capabilities directly into the interconnect fabric like for in network reductions and then we'll have our NV link providing up to you know 900 gigabytes of unidirectional"}, {"id": "s65", "start": 487.759, "end": 504.08, "text": "bandwidth between any two remote GPUs high bandwidth memory um on you know particular generation of Nvidia hardware um Beyond the diversity in the networking stacks, there's also a lot of evolution"}, {"id": "s66", "start": 504.08, "end": 517.919, "text": "in um how AI workloads are adapting to take advantage of this hardware and the diversity of types of um you know hardware that we're we're using simultaneously for one AI workload."}, {"id": "s67", "start": 517.919, "end": 526.24, "text": "So um KV cache memory in modern inference systems is going to beworked across GPU, CPU, disk and remote machines."}, {"id": "s68", "start": 526.24, "end": 533.44, "text": "um inference systems increasingly disagregate different steps of inference across different hardware backends."}, {"id": "s69", "start": 533.44, "end": 540.24, "text": "So you could run speculative decoding on some hardware, decode on different hardware, prefill on different hardware."}, {"id": "s70", "start": 540.24, "end": 553.92, "text": "Um hardware is also evolving to have larger scaleup domains than ever before with you know 72 GPUs and a scaleup domain in in the coming um chips and Nvidia planning on a single system in 2027"}, {"id": "s71", "start": 553.92, "end": 557.12, "text": "with 576 GPUs."}, {"id": "s72", "start": 557.12, "end": 568.64, "text": "Um at the same time to take advantage of these more uh intensive scaleup domains we're getting richer uh primitives for fine grained control and kernel writing over these domains."}, {"id": "s73", "start": 568.64, "end": 580.16, "text": "So we have something called tensor memory acceleration where we can provide uh perform asynchronous network transfers from the device side um on these GPUs."}, {"id": "s74", "start": 580.16, "end": 593.12, "text": "So all of these changes are opening up new opportunities and challenges in um both AI you know how do we build models that take advantage of these trends and in systems."}, {"id": "s75", "start": 593.8389999999999, "end": 606.08, "text": "Okay, so the problems that we're going to go after um how do we get peak hardware utilization and also development simplicity um for these multiGPU kernels."}, {"id": "s76", "start": 606.64, "end": 617.76, "text": "So um it's been very difficult to write multiGGPU kernels and there's a lot of there are a lot of papers a lot of systems reports that document you know challenges here."}, {"id": "s77", "start": 617.76, "end": 629.44, "text": "Um, one of the things here is it's compounded by the fact that communication hardware around GPUs has progressed a lot more slowly relative to compute and memory."}, {"id": "s78", "start": 629.44, "end": 640.88, "text": "Um, so comparing NVIDIA A100's in 2020 to B200s in 2024, u BF16 tensor core speeds improved by 7.2x."}, {"id": "s79", "start": 640.88, "end": 647.76, "text": "um while intra node communication by just 3x and inter node communication by just 2x."}, {"id": "s80", "start": 647.76, "end": 662.8, "text": "Um and coming back to my points about how diverse networking is right now things like tensor cores that run map moles and our memory hierarchies are pretty consistent and resemble one another across diverse AI vendors and multisilicon."}, {"id": "s81", "start": 662.8, "end": 675.279, "text": "Um but again as I I mentioned the networking stack is something that is really different across vendors still um you know a first step as we went about all this work is to just study the baselines"}, {"id": "s82", "start": 675.279, "end": 676.399, "text": "um that are out there."}, {"id": "s83", "start": 676.399, "end": 691.8389999999999, "text": "So um one of the popular tools for um communications is this nickel library or Rickle on AMD um that both you know companies respectively spend a lot of you know engineering investment into"}, {"id": "s84", "start": 691.8389999999999, "end": 695.519, "text": "releasing to make it easy for people to do multiGPU work."}, {"id": "s85", "start": 695.519, "end": 697.519, "text": "Um but they're not very flexible."}, {"id": "s86", "start": 697.519, "end": 703.2, "text": "So they're tuned for bulk transfers for large contiguous chunks of data transfers."}, {"id": "s87", "start": 703.2, "end": 714.16, "text": "And the design really breaks down when you care about peak performance, fine grain communication, um, and sort of non-trivial collectives that you want to fuse together."}, {"id": "s88", "start": 714.16, "end": 723.2, "text": "So as a result, you can achieve much higher performance by writing custom communication kernels that directly address these needs."}, {"id": "s89", "start": 723.2, "end": 736.48, "text": "If we look at a naive baseline that's representative of very popular libraries in machine learning stacking pietorch with nickel um we can we find that across um you know the many"}, {"id": "s90", "start": 736.48, "end": 750.079, "text": "uh problems in our parallel kernel bench benchmark that the majority of these um simple baselines will fall below 50% of their communication aware roof line bound."}, {"id": "s91", "start": 750.079, "end": 753.76, "text": "So there's a lot of room for improvement here."}, {"id": "s92", "start": 753.76, "end": 768.079, "text": "Um the current frameworks beyond um nickel which is popular in like Megatron LM, Flex Flow, Nanoflow um you know all again these systems are primarily orchestrating bulk collectives via nickel"}, {"id": "s93", "start": 768.079, "end": 772.24, "text": "um and require synchronization before and after data transfers."}, {"id": "s94", "start": 772.24, "end": 778.56, "text": "So beyond th those off-the-shelf libraries, we have compilers and DSLs that exist."}, {"id": "s95", "start": 778.56, "end": 781.92, "text": "So there's Triton distributed is one of them."}, {"id": "s96", "start": 781.92, "end": 785.68, "text": "Um and uh you know tile link is another one."}, {"id": "s97", "start": 785.68, "end": 793.68, "text": "Um we have found that it's very difficult to support the rapid pace of networking improvements within these frameworks."}, {"id": "s98", "start": 793.68, "end": 807.76, "text": "So our benchmarks and our papers highlight results where Triton distributed originally tuned around 8 uh H800 GPUs fails to adapt efficiently to other architectures like H100s."}, {"id": "s99", "start": 807.92, "end": 816.72, "text": "And then the third category of how people can proceed here is to really handtune specific AI operators one by one."}, {"id": "s100", "start": 816.72, "end": 832.639, "text": "So there's a lot of popular work um DPP um comet ring attention um flux flashdoe um and then several distributed gem kernels from cutless and these methods achieve peak performance"}, {"id": "s101", "start": 832.639, "end": 842.399, "text": "but often um they do not you know some of these methods have been designed in one precision and it takes five or six months to scale it to another precision"}, {"id": "s102", "start": 842.399, "end": 850.56, "text": "and just the scalability of this hand tuning and um fine grain kernel writing is not very um effective."}, {"id": "s103", "start": 850.639, "end": 867.6, "text": "So um with this landscape in mind, our research question was really about whether there is a small set of principles and fundamentals that really governs multiGPU kernel writing and whether there are methods that can leverage those principles if they exist"}, {"id": "s104", "start": 867.6, "end": 871.6, "text": "to simplify the development of these kernels."}, {"id": "s105", "start": 872.0, "end": 878.88, "text": "Um I'll briefly highlight two works here that um govern like that that represent our approach."}, {"id": "s106", "start": 878.88, "end": 889.92, "text": "So first we think it's important to build our own fundamental understanding and to manually do the work to understand it rather than just throwing say an LLM at the problem."}, {"id": "s107", "start": 889.92, "end": 898.9590000000001, "text": "So we spent the time to build out parallel kittens which is a small set of minimal primitives and patterns for multiGPU kernels."}, {"id": "s108", "start": 898.9590000000001, "end": 911.68, "text": "Um we use this to understand the trade-offs of multiGPU kernels and to one write a large collection of um peak performance kernels for a variety of parallelism schemes."}, {"id": "s109", "start": 911.68, "end": 918.88, "text": "Um and this I will use to hopefully you know educate and bring us all on the same page on what patterns we figured out."}, {"id": "s110", "start": 918.88, "end": 933.279, "text": "Um and then once we found that there is indeed a small set of trade-offs governing this landscape, we were curious whether models, especially these models right now that claim to be very good at kernel writing and also reasoning"}, {"id": "s111", "start": 933.279, "end": 942.9590000000001, "text": "um could reason about these trade-offs when we provide them in context to actually generate a bunch of net new multiGPU kernels for us."}, {"id": "s112", "start": 942.9590000000001, "end": 948.0, "text": "Unfortunately, we found they were not very good, but we'll dive into more of that at the end."}, {"id": "s113", "start": 948.0, "end": 956.32, "text": "Um so just the fundamental section this is going to be more you know educational what are the trade-offs that go into these kernels."}, {"id": "s114", "start": 956.32, "end": 961.92, "text": "So there are three main ways to do um intraGPU data transfers."}, {"id": "s115", "start": 961.92, "end": 969.36, "text": "Um there's the per GPU what's called copy engine and this is host or CPU initiated work."}, {"id": "s116", "start": 969.36, "end": 972.48, "text": "It's really good for large message transfers."}, {"id": "s117", "start": 972.48, "end": 983.519, "text": "So when your message size, the amount of data being transferred is really big um and it can get to sort of like peak bandwidth um on on the communication side."}, {"id": "s118", "start": 983.519, "end": 997.759, "text": "In contrast, you can use device initiated or GPU initiated transfers via that tensor memory accelerator that I mentioned or via register level instructions called uh in sort of their PTX lingo like LDST"}, {"id": "s119", "start": 997.759, "end": 999.36, "text": "red multime."}, {"id": "s120", "start": 999.36, "end": 1003.199, "text": "Um, and the uh T TMA is really nice."}, {"id": "s121", "start": 1003.199, "end": 1012.24, "text": "These device initiated ones are really nice because they can saturate our NVLink bandwidth using relatively small message sizes."}, {"id": "s122", "start": 1012.24, "end": 1022.48, "text": "And this means that they can be really nice when we're trying to do fine grain communication rather than sending bulk amounts of data over the links all at once coarsely."}, {"id": "s123", "start": 1022.639, "end": 1024.799, "text": "Um, there are some trade-offs here."}, {"id": "s124", "start": 1024.799, "end": 1035.919, "text": "So the copy engine is really nice because it doesn't take away or you know waste a lot of our precious registers that I mentioned are important for compute on the GPU."}, {"id": "s125", "start": 1035.919, "end": 1049.679, "text": "Um and it doesn't also use any of those rainbow colored dots the processors on our GPU allowing us to repurpose those for memory or um computation on our uh you know other parts of the AI pipeline."}, {"id": "s126", "start": 1049.679, "end": 1055.76, "text": "Um, TMA, the second option here, consumes very few registers, which is why it's nice."}, {"id": "s127", "start": 1055.76, "end": 1061.44, "text": "Um, and it also can achieve high utilization using very few of our processors."}, {"id": "s128", "start": 1061.44, "end": 1065.84, "text": "So, it's a nice useful tool for fine grain overlapping."}, {"id": "s129", "start": 1065.84, "end": 1068.0, "text": "Um, TMA does have limitations."}, {"id": "s130", "start": 1068.0, "end": 1076.559, "text": "It can't effectively take advantage of these in network um, computations that I mentioned are feasible with technologies like NV switch."}, {"id": "s131", "start": 1076.559, "end": 1088.88, "text": "And the register level instructions are really nice for being able to take advantage of um you know those those sort of in network reductions that NV switch offers."}, {"id": "s132", "start": 1088.88, "end": 1097.919, "text": "So again there are different tradeoffs different functionalities that these transfer mechanisms offer and they face different trade-offs."}, {"id": "s133", "start": 1098.72, "end": 1109.6, "text": "Second um beyond transfer mechanism the trade-off is around how to overlap compute memory and uh communication in GPU kernels."}, {"id": "s134", "start": 1109.6, "end": 1113.28, "text": "So there's two main categories of schedules."}, {"id": "s135", "start": 1113.28, "end": 1127.36, "text": "The first is intraSM within one of those rainbow dots um where we'll we'll have different warps or threads within that processor specialized to handle either compute or one specialized for communication"}, {"id": "s136", "start": 1127.36, "end": 1128.64, "text": "concurrently."}, {"id": "s137", "start": 1128.64, "end": 1132.16, "text": "Um we can dedicate you know different warps to each of these."}, {"id": "s138", "start": 1132.16, "end": 1141.2, "text": "The challenge with this intm overlapping is that the communication and computation pattern really need to like align and jive with one another."}, {"id": "s139", "start": 1141.2, "end": 1146.88, "text": "they need to use the same data as inputs for the computation and communication."}, {"id": "s140", "start": 1146.88, "end": 1161.36, "text": "When they don't align, you could use something like interm um schedules that are shown on your right here where we'll now have each of the different rainbow colored dots on our GPUs, those different processors specialized to"}, {"id": "s141", "start": 1161.36, "end": 1165.36, "text": "compute communication and memory."}, {"id": "s142", "start": 1165.36, "end": 1178.799, "text": "Um and so this this is nice when the colonel would others wise need to split across resources like the register file or shared memory um across these different steps in misaligned"}, {"id": "s143", "start": 1178.799, "end": 1180.799, "text": "ways."}, {"id": "s144", "start": 1181.2, "end": 1189.52, "text": "Um this is also really nice when it's hard to maximize NVLink traversal with intram overlapping."}, {"id": "s145", "start": 1190.08, "end": 1200.08, "text": "So I just wanted to highlight one quick example here where each of the patterns excels in popular you know AI uh uh like kind of patterns that you'll see."}, {"id": "s146", "start": 1200.08, "end": 1216.0, "text": "So on a gem plus uh reduced uh scatter here we can see that the um intraSM overlapping scheduleuler schedule is very effective in the gem plus all reduce we can see that the interSM"}, {"id": "s147", "start": 1216.0, "end": 1221.039, "text": "which again leverages the in network reductions of envy switch is very effective."}, {"id": "s148", "start": 1221.039, "end": 1230.159, "text": "So we face these trade-offs and you can read more about um the design decisions that go into them in our parallel kittens paper."}, {"id": "s149", "start": 1230.159, "end": 1241.76, "text": "Um, and then finally, ideally, abstraction should allow the developer flexibility to control how they're buffering and synchronizing between data senders and receivers."}, {"id": "s150", "start": 1241.76, "end": 1245.6, "text": "So, we encapsulated these ideas into parallel kittens."}, {"id": "s151", "start": 1245.6, "end": 1251.28, "text": "Again, a simple set of programming primitives and templates for these multiGPU kernels."}, {"id": "s152", "start": 1251.28, "end": 1261.039, "text": "Parallel Kittens is used in production at Together AI as well as our partner um you know Cursor and other uh companies in the AI space."}, {"id": "s153", "start": 1261.039, "end": 1262.88, "text": "Um here's some sample code."}, {"id": "s154", "start": 1262.88, "end": 1273.039, "text": "I won't spend too much time here, but we usually add roughly a dozen lines of code over a single GPU kernel to insert these multiGPU primitives."}, {"id": "s155", "start": 1273.84, "end": 1286.4, "text": "Um, and you can see here across data sequence and expert parallelism how our parallel kittens kernels are achieving state-of-the-art results um, compared to strong reference baselines."}, {"id": "s156", "start": 1286.4, "end": 1290.48, "text": "And you can check out our repo to learn more."}, {"id": "s157", "start": 1290.799, "end": 1300.32, "text": "Okay, so we understand a little bit about um the trade-offs that underly these multiGPU kernels and there's just a couple main, you know, ones that exist."}, {"id": "s158", "start": 1300.32, "end": 1308.32, "text": "So can models reason through them um and give us these uh you know kernels models are getting better at reasoning today."}, {"id": "s159", "start": 1308.32, "end": 1322.559, "text": "Um do they generalize well to these problems or are we benchmaxed on you know benchmarks of the past which are more single GPU centric uh models right now are showing really promising results on single GPU"}, {"id": "s160", "start": 1322.559, "end": 1323.679, "text": "uh benchmarks."}, {"id": "s161", "start": 1323.679, "end": 1327.36, "text": "So it's a ripe time to to extend it."}, {"id": "s162", "start": 1327.36, "end": 1345.84, "text": "In our benchmark parallel kernel bench, each task presents the model with an unoptimized reference implementation written in PyTorch with torch distributed um nickel operations and then a system topology that specifies the number of ranks and intraode hardware configuration."}, {"id": "s163", "start": 1345.84, "end": 1354.72, "text": "And the model needs to rewrite the reference into a performance CUDA kernel that uh uses unified virtual addressing."}, {"id": "s164", "start": 1357.36, "end": 1364.96, "text": "The um multiGPU problem space expands combinatorally beyond single GPU um cases."}, {"id": "s165", "start": 1364.96, "end": 1373.28, "text": "So a standard transformer layer can be parallelized across data sequence, tensor, context, layer, pipeline and expert dimensions."}, {"id": "s166", "start": 1373.28, "end": 1378.32, "text": "and each composition um induces a different communication pass uh pattern."}, {"id": "s167", "start": 1378.32, "end": 1391.679, "text": "So to make sure that our benchmark has high coverage over the representative types of multiGPU problems um we created this taxonomy um that you can read more about in our paper and then picked representative"}, {"id": "s168", "start": 1391.679, "end": 1395.039, "text": "problems for each part of the taxonomy."}, {"id": "s169", "start": 1395.28, "end": 1403.039, "text": "Um these are all patterns that arise in real AI workloads from inference to RL to post-training."}, {"id": "s170", "start": 1403.44, "end": 1411.36, "text": "There are 87 problems overall um drawn from GitHub repositories that we found to be very informative."}, {"id": "s171", "start": 1411.36, "end": 1420.799, "text": "Um and we uh and like optimized library implementations and DSLs that people have written multiGPU kernels in."}, {"id": "s172", "start": 1420.799, "end": 1431.919, "text": "Um, we wanted to really make sure that solving PK this parallel kernel bench would lead to net new useful production kernels rather than artificial or useless kernels."}, {"id": "s173", "start": 1431.919, "end": 1434.4, "text": "Okay, so that's parallel kernel bench."}, {"id": "s174", "start": 1434.4, "end": 1437.2, "text": "How do models perform?"}, {"id": "s175", "start": 1438.799, "end": 1441.44, "text": "So we measured to sorry that this is a bit small."}, {"id": "s176", "start": 1441.44, "end": 1443.2, "text": "We measured two main metrics."}, {"id": "s177", "start": 1443.2, "end": 1457.36, "text": "Um pass at K which is the number of correct kernels generated after K attempts and then fast um one at K which counts solutions that are both correct and outperform"}, {"id": "s178", "start": 1457.36, "end": 1461.6, "text": "the speed of the pi torch plus nickel baseline."}, {"id": "s179", "start": 1461.6, "end": 1469.919, "text": "Um so pass K just correctness fast one at K is whether you're getting a 1x or higher speed up over the reference."}, {"id": "s180", "start": 1469.919, "end": 1483.6, "text": "So performanceoriented um we found that in the zeroot setting the best of the frontier models we tried solves 28 out of 87 problems and 22 of those problems are faster than the pietorch"}, {"id": "s181", "start": 1483.6, "end": 1485.84, "text": "plus nickel baseline."}, {"id": "s182", "start": 1485.84, "end": 1499.2, "text": "If we make multiple samples, you know, standard uh scaling up test time compute, we can uh get that number from say like to to 36 correct solutions, but the fast"}, {"id": "s183", "start": 1499.2, "end": 1504.159, "text": "uh one performance still plateaus out at roughly 31%."}, {"id": "s184", "start": 1504.159, "end": 1512.159, "text": "So we don't see much room from continuing to scale there as we increase the number of parallel generations."}, {"id": "s185", "start": 1512.32, "end": 1524.0, "text": "Um we find that the correct once correctness is established um speedups naturally come from eliminating nickel staging overhead in favor of direct NVLink loads in stores."}, {"id": "s186", "start": 1524.24, "end": 1530.0, "text": "Um the success patterns here are really concentrated into familiar patterns."}, {"id": "s187", "start": 1530.0, "end": 1535.52, "text": "So collective primitives, tensor parallel gems and Ulyses style context parallelism."}, {"id": "s188", "start": 1535.52, "end": 1549.279, "text": "So in other words, patterns that we see heavily represented um on the internet rather than necessarily patterns that the model has used its reasoning abilities to think through."}, {"id": "s189", "start": 1550.88, "end": 1560.4, "text": "Okay, even the best available model that we benchmarked here GPT 5.5 drops off very quickly as the speed up threshold increases."}, {"id": "s190", "start": 1560.4, "end": 1567.2, "text": "So on the x-axis here, we're increasing the speed up threshold over that pietor torch plus nickel baseline."}, {"id": "s191", "start": 1567.2, "end": 1576.88, "text": "And then we're showing the number of correct kernels that are faster than that baseline or this much faster than the baseline on the y-axis."}, {"id": "s192", "start": 1576.88, "end": 1586.4, "text": "So GPT 5.5 is this orange line here and then DeepSeek V4 Pro is the aqua line at the bottom."}, {"id": "s193", "start": 1588.72, "end": 1592.88, "text": "um we found that there's deeper issues than CUDA syntax."}, {"id": "s194", "start": 1592.88, "end": 1602.64, "text": "So we found that if you do multiple sampling or have the model kind of look at its errors and correct them, it can often compile the kernels."}, {"id": "s195", "start": 1602.64, "end": 1608.799, "text": "But the models really struggle to reason through the tradeoffs that we talked about in the prior section."}, {"id": "s196", "start": 1608.799, "end": 1617.44, "text": "um collective ordering, data partitioning, thinking about intra versus interm scheduling or deciding between the different transfer mechanisms."}, {"id": "s197", "start": 1617.44, "end": 1627.2, "text": "Um we find that they often do not use things like the register transfer instructions or tensor memory acceleration when writing the kernels."}, {"id": "s198", "start": 1627.76, "end": 1634.72, "text": "Um we wanted to try a pretty simple instantiation of something like a clawed code um coding agent."}, {"id": "s199", "start": 1634.72, "end": 1649.039, "text": "So, we took uh the mini sui agent multi-turn harness and one of the best performing models, Gemini 3 Pro, and gave it access to a local bash environment to sort of mimic the standard claude code setup."}, {"id": "s200", "start": 1649.039, "end": 1664.24, "text": "We found that this could help the agent um go from solving 24 problems to 35 of 87 problems um with um 26 achieving over a 1x speed up over the reference."}, {"id": "s201", "start": 1664.24, "end": 1676.24, "text": "But we found that as we scaled the amount of time um the performance plateaued as uh and we find that additional techniques would be required to continue seeing the scaling there."}, {"id": "s202", "start": 1676.24, "end": 1680.08, "text": "Again these results are discussed in more detail in our paper."}, {"id": "s203", "start": 1680.08, "end": 1688.559, "text": "Um we think this is a really exciting you know just to wrap up here we hope that people out here can use both parallel kittens and parallel kernel bench."}, {"id": "s204", "start": 1688.559, "end": 1699.2, "text": "We think that the kernels generated from solving parallel kernel bench will lead to net new production kernels that are important bottlenecks for inference in RL right now."}, {"id": "s205", "start": 1699.2, "end": 1710.24, "text": "um they're you know we tried our best to make them you know non-artificial and we can already see signs of life and exciting results where people have not invested a bunch of time to handw write a multiGPU"}, {"id": "s206", "start": 1710.24, "end": 1728.0, "text": "kernel and we've gotten some net new interesting ones like this Nemo vocab parallel um you know filtering kernel um a hyena architecture context parallelism kernel and uh the SAM 3 video segmentation"}, {"id": "s207", "start": 1728.0, "end": 1732.24, "text": "model um IOU suppression kernel."}, {"id": "s208", "start": 1732.32, "end": 1740.24, "text": "Just to conclude here um we're really excited about um how uh well just talking about the lessons."}, {"id": "s209", "start": 1740.24, "end": 1751.2, "text": "First off, we think there aren't that many patterns that are involved in writing intragpu effective kernels again encapsulated by our small set of programming primitives."}, {"id": "s210", "start": 1751.2, "end": 1758.64, "text": "Um, but unfortunately models do not currently understand how to reason through these trade-offs even when we provide them in context."}, {"id": "s211", "start": 1758.64, "end": 1762.88, "text": "Um, we're really excited about methods that can help attack this benchmark."}, {"id": "s212", "start": 1762.88, "end": 1769.039, "text": "We're excited about architectures that can grow with the trends of how networking stacks are evolving."}, {"id": "s213", "start": 1769.039, "end": 1776.159, "text": "Um, you know, larger scale up domains shift away from scale out um and massive onchip memory structures."}, {"id": "s214", "start": 1776.159, "end": 1782.48, "text": "And we hope that uh you know we can also extend and you you can feel free to reach out to me at my email."}, {"id": "s215", "start": 1782.48, "end": 1784.48, "text": "Thanks."}]}, {"id": "pqlWNihgdjI", "title": "From AI-Assisted to AI-Native: Building a Frontier Development Team — Clare Liguori, AWS", "channel": "AI Engineer", "duration": 1257, "upload_date": null, "url": "https://www.youtube.com/watch?v=pqlWNihgdjI", "api": "/api/talks/pqlWNihgdjI.json", "summary_url": "/#pqlWNihgdjI", "transcript": {"html": "/transcripts/pqlWNihgdjI.html", "txt": "/transcripts/pqlWNihgdjI.txt", "vtt": "/transcripts/pqlWNihgdjI.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.4, "end": 17.68, "text": "My name is Claire La Gory and I'm a senior principal engineer at AWS."}, {"id": "s3", "start": 17.68, "end": 31.52, "text": "I mostly work on Kuro, our agent encoding assistant, but today I want to talk about some of the practices we've been seeing inside of Amazon and Amazon teams where we've been seeing really exciting results of"}, {"id": "s4", "start": 31.52, "end": 38.56, "text": "productivity increases that are step function improvements since what what we've been seeing with AI so far."}, {"id": "s5", "start": 38.56, "end": 50.32, "text": "So, I've been working on agentic AI for over 3 years now and I've kind of seen the evolution that's happened in our industry when it comes to coding assistance with AI."}, {"id": "s6", "start": 50.32, "end": 57.28, "text": "First, we had this inline code completion helping us to write the next line, maybe the next function."}, {"id": "s7", "start": 57.28, "end": 61.04, "text": "We moved on to chat, asking questions about our code."}, {"id": "s8", "start": 61.04, "end": 71.08, "text": "Everybody started doing vibe coding sometime last year, but now we're starting to see kind of an early adopter phase of what we've been calling frontier development."}, {"id": "s9", "start": 71.08, "end": 82.52, "text": "And completely anecdotally, based on my own experience, I've really only felt maybe 10 to 20% more productive with all of these phases that have come before."}, {"id": "s10", "start": 82.52, "end": 94.64, "text": "But now inside of Amazon, we've been running pilots with different teams across the company and we've been seeing a median of 4.5x productivity improvement and sometimes more than 10x."}, {"id": "s11", "start": 94.64, "end": 100.84, "text": "So, something has really changed here now that we're seeing these step function improvements in productivity."}, {"id": "s12", "start": 100.84, "end": 110.52000000000001, "text": "And I like to define what we've been calling frontier developers inside of Amazon by three behaviors that I've been seeing."}, {"id": "s13", "start": 110.52000000000001, "end": 112.24000000000001, "text": "One is hands-off coding."}, {"id": "s14", "start": 112.24000000000001, "end": 117.68, "text": "Frontier developers write maybe 1 to 2% of the code that they produce."}, {"id": "s15", "start": 117.68, "end": 120.0, "text": "The rest is agents."}, {"id": "s16", "start": 120.0, "end": 123.8, "text": "The second is that they interact with their agents infrequently."}, {"id": "s17", "start": 123.8, "end": 130.6, "text": "They'll aim to get their coding assistant to run for up to hours at a time without their intervention."}, {"id": "s18", "start": 130.6, "end": 133.52, "text": "And third is that they minimize idle time."}, {"id": "s19", "start": 133.52, "end": 141.88, "text": "These frontier developers tend to run multiple agents in parallel churning through a backlog of tasks."}, {"id": "s20", "start": 142.24, "end": 148.2, "text": "The first time that I saw a frontier developer team was the Bedrock Mantle team."}, {"id": "s21", "start": 148.2, "end": 151.56, "text": "Bedrock is our model hosting service."}, {"id": "s22", "start": 151.56, "end": 155.76, "text": "Hosts LLMs like Claude and GPT."}, {"id": "s23", "start": 155.76, "end": 166.2, "text": "And sometime last year we knew or I say we but the Bedrock team knew that they were going to need to build a new inference data plane."}, {"id": "s24", "start": 166.2, "end": 171.12, "text": "But they had estimated it at 30 people over 18 months."}, {"id": "s25", "start": 171.12, "end": 179.64, "text": "This is a big big service and it was going to take time to build the new one, migrate customers over, migrate models over."}, {"id": "s26", "start": 179.64, "end": 181.32, "text": "They decided to take a step back."}, {"id": "s27", "start": 181.32, "end": 183.402, "text": "They took six people and they built"}, {"id": "s28", "start": 183.402, "end": 183.64, "text": "[snorts]"}, {"id": "s29", "start": 183.64, "end": 186.16, "text": "it in 76 days with Kiro."}, {"id": "s30", "start": 186.16, "end": 188.28, "text": "So this was a huge achievement."}, {"id": "s31", "start": 188.28, "end": 192.76, "text": "This was the first time we've we'd seen anything of the kind inside of Amazon."}, {"id": "s32", "start": 192.76, "end": 200.239, "text": "So this was truly the pathfinder team that proved that it was possible to get up to 20X improvement."}, {"id": "s33", "start": 200.239, "end": 207.84, "text": "Now they looked at commits and I'll talk about a couple of other ways that we are uh measuring productivity improvements."}, {"id": "s34", "start": 207.84, "end": 213.44, "text": "But there was one problem with this story which was that yes, it was built with six people."}, {"id": "s35", "start": 213.44, "end": 220.68, "text": "It was built with some of the top engineers literally in the company including two distinguished engineers."}, {"id": "s36", "start": 220.68, "end": 223.88, "text": "So this was not just any team of six people."}, {"id": "s37", "start": 223.88, "end": 231.0, "text": "These were experts in distributed systems, experts at LLMs and their architecture."}, {"id": "s38", "start": 231.0, "end": 239.36, "text": "So this the story was amazing and it kind of spread like wildfire across Amazon, but it was also very unachievable for a lot of teams."}, {"id": "s39", "start": 239.36, "end": 245.56, "text": "There were a lot of questions about can this actually be reproduced on another team?"}, {"id": "s40", "start": 245.56, "end": 253.36, "text": "So, another experiment that I want to talk about is an experimental sprint that was done in the Prime Video organization."}, {"id": "s41", "start": 253.36, "end": 263.64, "text": "They took a 10-day sprint and they did an experiment where they put, again, six engineers in a room and they let them go wild with Kiro."}, {"id": "s42", "start": 263.64, "end": 276.28, "text": "Uh they brought down the project delivery time estimate from what was going to be 90 weeks down to 24 based on all of the progress they had made in this 10-day sprint."}, {"id": "s43", "start": 276.28, "end": 288.12, "text": "And they they looked at their commit history and they looked at what did they used to do prior to this 10-day sprint and how many commits did they produce just in this 10 days."}, {"id": "s44", "start": 288.12, "end": 300.8, "text": "And so, this sprint really proved that we can achieve, again, at least something close to what the Bedrock Mantle team had uh had achieved with a different set of engineers."}, {"id": "s45", "start": 300.8, "end": 313.04, "text": "But again, there was a challenge with this story, which was it was six engineers in a room, but they had no on-call duties, limited meetings, very few distractions, which we all know"}, {"id": "s46", "start": 313.04, "end": 316.84, "text": "are regular in the lives of an engineer."}, {"id": "s47", "start": 316.84, "end": 332.0, "text": "And the senior engineer on the team had spent the previous 3 weeks creating very detailed, small, well-scoped tasks with detailed requirements for these six [clears throat] engineers to just go churn on for those 2 weeks."}, {"id": "s48", "start": 332.0, "end": 335.08, "text": "So, this was again not necessarily real life."}, {"id": "s49", "start": 335.08, "end": 347.04, "text": "This was a structured sprint, uh a a point in time that they were able to achieve this, but again, the question is is this achievable on real teams on day-to-day"}, {"id": "s50", "start": 347.04, "end": 348.44, "text": "work?"}, {"id": "s51", "start": 348.44, "end": 359.15999999999997, "text": "So, Amazon stores which encompasses amazon.com, all of our retail websites, as well as our physical stores, did a more structured pilot."}, {"id": "s52", "start": 359.15999999999997, "end": 371.76, "text": "They watched 50 teams that were totally normal normal distribution of um early career folks, mid-career, senior engineers, and that worked on existing systems."}, {"id": "s53", "start": 371.76, "end": 379.04, "text": "Nothing green field like the mantle team got to build from the ground up, but existing systems with existing code bases."}, {"id": "s54", "start": 379.04, "end": 386.8, "text": "And they they watched them for the better part of last year, and they found something super interesting."}, {"id": "s55", "start": 386.8, "end": 394.36, "text": "They found that there was a big difference in the productivity gains that they saw between half of the teams and the other half."}, {"id": "s56", "start": 394.36, "end": 400.2, "text": "And in this case, they used a productivity metric of deployment velocity to production."}, {"id": "s57", "start": 400.2, "end": 407.36, "text": "So, not just commits, how many commits are they producing, but how quickly are we getting changes out to customers?"}, {"id": "s58", "start": 407.36, "end": 410.44, "text": "How how quickly are we able to ship things?"}, {"id": "s59", "start": 410.44, "end": 415.64, "text": "And they saw that for half of the teams, they achieved less than 3x increase."}, {"id": "s60", "start": 415.64, "end": 426.56, "text": "And what they found that was the difference between seeing less than 3x productivity increase, these teams that saw a median of 4.5x, and and in some cases more than 10,"}, {"id": "s61", "start": 426.56, "end": 428.919, "text": "was how they used the tools."}, {"id": "s62", "start": 428.919, "end": 439.76, "text": "90% of these teams used Kiro, among other internal tools that we have, and what they found was it wasn't about the tools, it was about the way that they worked."}, {"id": "s63", "start": 439.76, "end": 451.08, "text": "The teams that achieved step function improvements intentionally changed the way that they worked, and the other simply kind of sprinkled Kiro and some of the other tools that we have"}, {"id": "s64", "start": 451.08, "end": 453.76, "text": "on top of their existing way of working."}, {"id": "s65", "start": 453.76, "end": 457.0, "text": "And for me at least, this was the big aha moment."}, {"id": "s66", "start": 457.0, "end": 466.0, "text": "That why I hadn't been feeling potentially the massive gains that productive that in in productivity that AI has promised."}, {"id": "s67", "start": 466.0, "end": 469.48, "text": "It's about changing the way that we work."}, {"id": "s68", "start": 469.48, "end": 477.76, "text": "So, across this pilot, they went and interviewed uh the teams that were involved in the pilot as well as some of these other teams on the Bedrock mantel team,"}, {"id": "s69", "start": 477.76, "end": 482.4, "text": "on uh Prime Video, and they found five habits."}, {"id": "s70", "start": 482.4, "end": 488.24, "text": "And and I use the word habits very specifically because again, it's not about that one sprint."}, {"id": "s71", "start": 488.24, "end": 490.36, "text": "It's about doing this day-to-day."}, {"id": "s72", "start": 490.36, "end": 497.56, "text": "And it And what they found when they interviewed with these teams was that it really was habits that they had to build day-to-day."}, {"id": "s73", "start": 497.56, "end": 501.64, "text": "When we change our way of working, it's it's hard to build these habits."}, {"id": "s74", "start": 501.64, "end": 504.04, "text": "It takes time to build these habits."}, {"id": "s75", "start": 504.04, "end": 506.96, "text": "So, let's go through each of these one by one."}, {"id": "s76", "start": 506.96, "end": 510.04, "text": "Habit number one is investing in agent context."}, {"id": "s77", "start": 510.04, "end": 512.719, "text": "We have a lot of stuff in our head."}, {"id": "s78", "start": 512.719, "end": 525.64, "text": "We tend to transfer all of that stuff in our head to other people through Slack conversations, through onboarding, mentors, things like that, through code reviews, through stand-ups and sprint planning,"}, {"id": "s79", "start": 525.64, "end": 527.88, "text": "and they had to write all of that down."}, {"id": "s80", "start": 527.88, "end": 537.6, "text": "And the habit that they built was every time the agent makes a mistake or does something not the way that you would have done it, what am I missing in my skills files?"}, {"id": "s81", "start": 537.6, "end": 542.0, "text": "What am I missing in my steering files that the agent needed?"}, {"id": "s82", "start": 542.0, "end": 549.64, "text": "But then, as we know, across last year, we saw leaps and bounds in models' abilities and their behaviors."}, {"id": "s83", "start": 549.64, "end": 558.68, "text": "Uh the Sonnet 3.7 in the middle of last year had a lot of quirks that we had to put a lot of do nots in our uh in our steering files,"}, {"id": "s84", "start": 558.68, "end": 568.36, "text": "and now we don't have to do that as much with Opus 4.5 as of last November, and then we've had 6 months more than 6 months of improvement since then"}, {"id": "s85", "start": 568.36, "end": 571.64, "text": "uh with all of the new versions of models that have come out since then."}, {"id": "s86", "start": 571.64, "end": 579.24, "text": "And so, the question, the new habit, again, is do I still need this in my steering files or is this just bloating context?"}, {"id": "s87", "start": 579.24, "end": 582.52, "text": "The second one is slowing down to speed up."}, {"id": "s88", "start": 582.52, "end": 592.68, "text": "In almost every team that was interviewed, they reported that their productivity actually went down as they intentionally adopted a new way of working."}, {"id": "s89", "start": 592.68, "end": 594.6, "text": "That's counterintuitive, right?"}, {"id": "s90", "start": 594.6, "end": 602.52, "text": "You have to do intentional engineering work before you're going to see that hockey stick curve in productivity improvement."}, {"id": "s91", "start": 602.52, "end": 610.76, "text": "Because we have to do real work in our code base first for agents to be successful there, especially in brownfield existing code bases."}, {"id": "s92", "start": 610.76, "end": 613.04, "text": "So they had to build that agent context up."}, {"id": "s93", "start": 613.04, "end": 619.36, "text": "They had to improve existing tools error messages so that the model knew what was going on when it failed."}, {"id": "s94", "start": 619.36, "end": 626.56, "text": "They built new tools, new MCP servers for helping that model to actually get done what it needed to get done."}, {"id": "s95", "start": 626.56, "end": 632.6, "text": "A lot of teams ended up restructuring their code base so that agents could actually navigate it more easily."}, {"id": "s96", "start": 632.6, "end": 638.2, "text": "And I've even seen drastic changes like changing the programming language of the code base."}, {"id": "s97", "start": 638.2, "end": 644.72, "text": "Um often I've seen teams struggle with Python, with JavaScript because they're untyped languages."}, {"id": "s98", "start": 644.72, "end": 646.04, "text": "It's hard to test."}, {"id": "s99", "start": 646.04, "end": 647.96, "text": "There's no compiler errors."}, {"id": "s100", "start": 647.96, "end": 651.8389999999999, "text": "So the model kind of guesses and give it gives it back to you."}, {"id": "s101", "start": 651.8389999999999, "end": 655.08, "text": "And so I've seen teams moving to TypeScript."}, {"id": "s102", "start": 655.08, "end": 657.8389999999999, "text": "Um Rust has become very popular inside of Amazon."}, {"id": "s103", "start": 657.8389999999999, "end": 660.88, "text": "The compiler gives great error messages."}, {"id": "s104", "start": 660.88, "end": 669.48, "text": "Um you don't have to do that, but I've seen a lot of teams making those intentional changes for the productivity gains that they're able to see."}, {"id": "s105", "start": 669.48, "end": 673.8, "text": "The third one is feeding agents, not babysitting agents."}, {"id": "s106", "start": 673.8, "end": 681.16, "text": "And for me this was one of those aha moments of why we're seeing this step function improvement in productivity."}, {"id": "s107", "start": 681.16, "end": 692.48, "text": "If you are vibe coding, if you are having a back-and-forth conversation with your agent all day long, of course you're not going to see four to five x productivity improvements"}, {"id": "s108", "start": 692.48, "end": 695.56, "text": "because you are in the loop the entire time."}, {"id": "s109", "start": 695.56, "end": 704.6, "text": "You're probably sitting there for 30 seconds to a minute waiting for it to generate code and come back to you with with the code to review."}, {"id": "s110", "start": 704.6, "end": 708.6, "text": "If you're sitting there waiting for it, then you can't go off and do other stuff."}, {"id": "s111", "start": 708.6, "end": 711.64, "text": "It's really difficult to run agents in parallel."}, {"id": "s112", "start": 711.64, "end": 717.32, "text": "It's very difficult to get to to clone yourself into multiple agents."}, {"id": "s113", "start": 717.32, "end": 723.56, "text": "And so if your conversations look a bit like this on the left, then you're babysitting that agent."}, {"id": "s114", "start": 723.56, "end": 729.8, "text": "As opposed to the right side where you're feeding it what it needs to do and how it can self-validate."}, {"id": "s115", "start": 729.8, "end": 738.88, "text": "And that's really the key so that agents can self-correct and only come back to you when it meets a certain quality bar, when it when it actually runs and compiles"}, {"id": "s116", "start": 738.88, "end": 744.24, "text": "and passes tests, when it's testable, when it it actually has high coverage."}, {"id": "s117", "start": 744.24, "end": 752.88, "text": "And of course the next level is put all of this content into your steering file so it does it every time without you having to prompt it."}, {"id": "s118", "start": 753.56, "end": 757.88, "text": "The fourth habit is to make intent explicit."}, {"id": "s119", "start": 757.88, "end": 761.04, "text": "At Amazon we practice a lot of behavior-driven development."}, {"id": "s120", "start": 761.04, "end": 773.8, "text": "We've built that into the Q product and so it's very natural for Amazon engineers to adopt it in Q. Um what what I've typically seen with live coding as opposed to frontier engineering"}, {"id": "s121", "start": 773.8, "end": 786.64, "text": "is giving a very high-level prompt, letting the agent generate a ton of code, and then having a back-and-forth conversation saying, \"Oh, that's not really what I meant."}, {"id": "s122", "start": 786.64, "end": 790.44, "text": "That you haven't you haven't exactly gotten the the requirements right."}, {"id": "s123", "start": 790.44, "end": 792.32, "text": "No, I didn't actually want to build it that way."}, {"id": "s124", "start": 792.32, "end": 794.32, "text": "Here's a technical design.\""}, {"id": "s125", "start": 794.32, "end": 803.64, "text": "And it is less I find less productive to iterate with the agent on code when the intent itself was incorrect."}, {"id": "s126", "start": 803.64, "end": 814.44, "text": "So often will have will see Amazon engineers go through this process for for ambiguous complex features of writing the specification."}, {"id": "s127", "start": 814.44, "end": 817.64, "text": "And in Kiro, of course, you don't have to write this whole specification."}, {"id": "s128", "start": 817.64, "end": 833.44, "text": "You can have the model generate it, but it's a lot easier to to iterate with the model in kind of a back and forth conversation about a document than it is about code that's code changes that are spread across a code base."}, {"id": "s129", "start": 833.52, "end": 837.84, "text": "The fifth one is shift testing left."}, {"id": "s130", "start": 837.84, "end": 842.4, "text": "One of the keys here is to give the agent that fast feedback loop."}, {"id": "s131", "start": 842.4, "end": 846.68, "text": "Because that's what lets it go off for hours at a time and self-correct."}, {"id": "s132", "start": 846.68, "end": 850.08, "text": "The agent is going to make mistakes and that's fine."}, {"id": "s133", "start": 850.08, "end": 856.52, "text": "But if you give it the right signals, it can self-correct and it can spend a while doing that."}, {"id": "s134", "start": 856.52, "end": 862.8, "text": "So, I've seen teams adding linters, adding unit tests, integration tests, performance tests, security tests."}, {"id": "s135", "start": 862.8, "end": 866.16, "text": "These are all things we all know we should have been doing all along."}, {"id": "s136", "start": 866.16, "end": 869.68, "text": "This is good engineering hygiene and practices."}, {"id": "s137", "start": 869.68, "end": 876.36, "text": "But now the ROI is, I think, finally high enough for actually us to actually invest in it."}, {"id": "s138", "start": 876.36, "end": 881.12, "text": "Um one thing that I've been seeing a lot of teams do is mock out services."}, {"id": "s139", "start": 881.12, "end": 888.0, "text": "Often with integration tests, we would test kind of end-to-end an entire system including live services."}, {"id": "s140", "start": 888.0, "end": 898.4, "text": "But we've been investing a lot in in mock services that run entirely locally with deterministic responses because it lets the agent do everything locally."}, {"id": "s141", "start": 898.4, "end": 912.8, "text": "Um doing everything on your laptop without having to spin up a bunch of other services and and connect to cloud services makes everything a lot faster because the the more that your agent can get fast feedback"}, {"id": "s142", "start": 912.8, "end": 919.6, "text": "means the more loops that it can can do and the more productive your own agent can be."}, {"id": "s143", "start": 919.64, "end": 930.24, "text": "So, across all of these, these are some of the habits we've seen, but of course I would be remiss if I would tell you if you adopt all of these habits, you will"}, {"id": "s144", "start": 930.24, "end": 931.16, "text": "achieve nirvana."}, {"id": "s145", "start": 931.16, "end": 935.88, "text": "You will be the most productive engineering organization the world has ever seen."}, {"id": "s146", "start": 935.88, "end": 936.96, "text": "Things are still hard."}, {"id": "s147", "start": 936.96, "end": 943.84, "text": "We are still very much in an early adopter phase and teams are still figuring it out."}, {"id": "s148", "start": 943.84, "end": 949.8, "text": "So, one thing that we've been seeing across our teams just organizationally is the risk of burnout."}, {"id": "s149", "start": 949.8, "end": 951.52, "text": "I did not coin this term."}, {"id": "s150", "start": 951.52, "end": 955.92, "text": "I forget who did at what conference, but flow mat is real."}, {"id": "s151", "start": 955.92, "end": 968.12, "text": "We've been seeing engineers staying up late late at night trying to get that perfect prompt that's going to make their agent run for hours overnight so that they wake up in the morning with a code change ready."}, {"id": "s152", "start": 968.12, "end": 973.76, "text": "The cognitive load increases as you run these multiple agents in parallel."}, {"id": "s153", "start": 973.76, "end": 977.24, "text": "You're constantly shifting between terminal tabs."}, {"id": "s154", "start": 977.24, "end": 986.24, "text": "And then we do see that reviewing AI output is often harder for some than than actually writing it, especially early in career."}, {"id": "s155", "start": 986.24, "end": 992.4, "text": "Senior engineers have have already spent a large portion of their career reviewing others code."}, {"id": "s156", "start": 992.4, "end": 1004.52, "text": "But early career engineers don't have that muscle yet and so reviewing it can can feel like a lot more cognitive load than they're used to and actually writing it."}, {"id": "s157", "start": 1004.52, "end": 1007.8389999999999, "text": "The other one is organizational change."}, {"id": "s158", "start": 1007.8389999999999, "end": 1011.24, "text": "So, it's already hard to change the way we work as engineers."}, {"id": "s159", "start": 1011.24, "end": 1022.96, "text": "The way that we spend our entire day completely changes when we're frontier engineers, but also organizations have to change to enable frontier engineering teams."}, {"id": "s160", "start": 1022.96, "end": 1029.12, "text": "One that I've seen very commonly is accepting slowing down to speed up."}, {"id": "s161", "start": 1029.12, "end": 1031.04, "text": "And I've been guilty of this myself."}, {"id": "s162", "start": 1031.04, "end": 1039.199, "text": "My my fellow leaders have been guilty of of this of saying, \"Well, you have the AI tools now and the models are so amazing now."}, {"id": "s163", "start": 1039.199, "end": 1042.12, "text": "Why are you not going faster?"}, {"id": "s164", "start": 1042.12, "end": 1055.12, "text": "Um and that's because you have to take those two months to invest in your code base, to figure out the best practices for your team, to make hard habit changes on your team."}, {"id": "s165", "start": 1055.12, "end": 1068.88, "text": "Um and and if you're constantly expecting shipping features every month because now we have these amazing models and we're seeing um all of these these companies on X saying how they're shipping 20"}, {"id": "s166", "start": 1068.88, "end": 1074.36, "text": "PRs a day, um we have to slow down to speed up."}, {"id": "s167", "start": 1074.36, "end": 1078.12, "text": "The second one is actually going too broad in the organization too fast."}, {"id": "s168", "start": 1078.12, "end": 1091.92, "text": "I think that if we had um expected all teams in massive organizations to be frontier teams immediately, we would not have had the learnings that we had from the Pathfinder,"}, {"id": "s169", "start": 1091.92, "end": 1098.24, "text": "from the from the sprint experiment, from the pilot uh teams within Amazon."}, {"id": "s170", "start": 1098.24, "end": 1101.0, "text": "And now the challenge for us is how do we scale it out?"}, {"id": "s171", "start": 1101.0, "end": 1111.04, "text": "And that's what 2026 is about for Amazon is how do we scale this out to more and more teams, to the next uh 2,000 teams instead of uh 50 teams."}, {"id": "s172", "start": 1111.04, "end": 1118.0, "text": "Um and so I think that when you roll it out too quickly, you have a lot of teams who don't know what they're doing."}, {"id": "s173", "start": 1118.0, "end": 1125.92, "text": "You haven't had time to find the best practices for your own organizations, the the context that your organization needs."}, {"id": "s174", "start": 1125.92, "end": 1129.36, "text": "And the last one is that you're going to find new bottlenecks."}, {"id": "s175", "start": 1129.36, "end": 1134.24, "text": "Previously, code writing code manually was the bottleneck."}, {"id": "s176", "start": 1134.24, "end": 1141.6, "text": "Um I find that within Amazon, we've found um the speed of decision-making becomes a new bottleneck."}, {"id": "s177", "start": 1141.6, "end": 1153.468, "text": "Um the more that you spend reviewing the decision to actually build a new product, the slower it is to build the product now because the code only takes 1 to two months to write."}, {"id": "s178", "start": 1153.468, "end": 1153.48, "text": "[snorts]"}, {"id": "s179", "start": 1153.48, "end": 1160.84, "text": "Um all of the review processes associated with the launch of a product become the bottleneck."}, {"id": "s180", "start": 1160.84, "end": 1174.68, "text": "When it used to take 9 to 12 months to build a new product, it didn't matter so much in the in the overall wash of things if it took two months to make the decision to build the product and then two months to approve the launch."}, {"id": "s181", "start": 1174.68, "end": 1177.04, "text": "But now those are the bottlenecks."}, {"id": "s182", "start": 1177.04, "end": 1178.76, "text": "Those are the long pole."}, {"id": "s183", "start": 1178.76, "end": 1184.04, "text": "And so you find all of these all of these things that slow you down."}, {"id": "s184", "start": 1184.04, "end": 1190.96, "text": "Often I find that frontier engineering teams spend more time making decisions than they do writing code."}, {"id": "s185", "start": 1190.96, "end": 1197.68, "text": "And so the more that you can make fast decisions, especially ones that are easy to be reversed, the better."}, {"id": "s186", "start": 1197.88, "end": 1207.08, "text": "So my one big takeaway for for everyone here is that frontier engineering is about intentionally changing the way that you work."}, {"id": "s187", "start": 1207.08, "end": 1208.88, "text": "And that is difficult."}, {"id": "s188", "start": 1208.88, "end": 1210.08, "text": "That takes time."}, {"id": "s189", "start": 1210.08, "end": 1214.4, "text": "It is forming new habits and a new way of working."}, {"id": "s190", "start": 1214.4, "end": 1220.16, "text": "And that goes across any engineering team as well as your organization."}, {"id": "s191", "start": 1220.16, "end": 1231.36, "text": "Um so I encourage you to think about um how you're interacting with AI tools and how that can change to free yourself up from being in the loop."}, {"id": "s192", "start": 1231.36, "end": 1231.96, "text": "Um thanks."}, {"id": "s193", "start": 1231.96, "end": 1236.72, "text": "I'm going to I'll hang out uh a little bit if anyone has questions in the back."}, {"id": "s194", "start": 1236.72, "end": 1239.96, "text": "Um but thanks for the time today."}, {"id": "s195", "start": 1254.994, "end": 1256.994, "text": "[music]"}]}, {"id": "q-WOjZhOMCA", "title": "IT Admin for the AI Workforce — Sarthak Aggarwal, Decawork", "channel": "AI Engineer", "duration": 977, "upload_date": null, "url": "https://www.youtube.com/watch?v=q-WOjZhOMCA", "api": "/api/talks/q-WOjZhOMCA.json", "summary_url": "/#q-WOjZhOMCA", "transcript": {"html": "/transcripts/q-WOjZhOMCA.html", "txt": "/transcripts/q-WOjZhOMCA.txt", "vtt": "/transcripts/q-WOjZhOMCA.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.8, "end": 14.64, "text": "Um, hi."}, {"id": "s3", "start": 14.64, "end": 28.76, "text": "So, my claim for the next 15 minutes here essentially is that enterprises today are starting to operate a second workforce, um, agents with actions, tools, contexts, and delegated permissions and authority."}, {"id": "s4", "start": 28.76, "end": 32.2, "text": "Um, and I'm Sarthak, the co-founder of Deca work."}, {"id": "s5", "start": 32.2, "end": 35.2, "text": "Uh, before this, I worked in system software at Nvidia."}, {"id": "s6", "start": 35.2, "end": 41.64, "text": "Um, and at Deca work, we're building this autonomous IT admin for both human and agent workers."}, {"id": "s7", "start": 41.64, "end": 46.36, "text": "And today, the hard part is not getting a model to behave or produce useful answers."}, {"id": "s8", "start": 46.36, "end": 57.68, "text": "It is making an autonomous worker safe to employ, which means identity, access, delegation, support, audit, and hard brakes around its capacity."}, {"id": "s9", "start": 58.2, "end": 68.24, "text": "Jensen framed this beautifully when he said the future enterprise is a mix of human and digital employees, um, with the IT team becoming the HR department for these agents."}, {"id": "s10", "start": 68.24, "end": 76.76, "text": "Whatever names you use, companies are moving from buying software to onboarding actors that read context, make decisions, and actually call real tools."}, {"id": "s11", "start": 76.76, "end": 78.76, "text": "I do not mean agents become people."}, {"id": "s12", "start": 78.76, "end": 84.32, "text": "I mean they start occupying an operational slot in enterprises, which they already understand."}, {"id": "s13", "start": 84.32, "end": 90.84, "text": "Someone or something that can be onboarded, um, read context, make decisions, and call tools."}, {"id": "s14", "start": 90.84, "end": 92.47999999999999, "text": "So, the question changes."}, {"id": "s15", "start": 92.47999999999999, "end": 95.36, "text": "It is not just, \"Can this agent do this task?\""}, {"id": "s16", "start": 95.36, "end": 97.32, "text": "It is, \"Who owns it?"}, {"id": "s17", "start": 97.32, "end": 98.75999999999999, "text": "What the agent can touch?"}, {"id": "s18", "start": 98.75999999999999, "end": 100.88, "text": "Who it's acting on behalf of?"}, {"id": "s19", "start": 100.88, "end": 102.08, "text": "How do you stop it?"}, {"id": "s20", "start": 102.08, "end": 105.16, "text": "And how do you explain what it did?\""}, {"id": "s21", "start": 105.6, "end": 109.56, "text": "And this is the first mistake teams make when they deploy these agents."}, {"id": "s22", "start": 109.56, "end": 116.0, "text": "A working demo does prove capability, but it does not prove employment readiness."}, {"id": "s23", "start": 116.0, "end": 123.76, "text": "An agent with a goal, tools, private data, delegated authority, memory, and the side effects is no longer just a model call, right?"}, {"id": "s24", "start": 123.76, "end": 125.24, "text": "It can change the state."}, {"id": "s25", "start": 125.24, "end": 126.76, "text": "It can expose data."}, {"id": "s26", "start": 126.76, "end": 130.6, "text": "And it can make work happen under someone else's authority."}, {"id": "s27", "start": 130.6, "end": 135.56, "text": "Once you see it as an actor, the architecture you need becomes much, much cleaner."}, {"id": "s28", "start": 135.56, "end": 136.959, "text": "You do not manage the prompt."}, {"id": "s29", "start": 136.959, "end": 139.4, "text": "You're managing the entire worker."}, {"id": "s30", "start": 139.4, "end": 146.56, "text": "A slightly cheeky version of this is if you're not a little scared to run your agent, your agent probably is not autonomous enough."}, {"id": "s31", "start": 146.56, "end": 150.4, "text": "And the infra job is to make that power governable."}, {"id": "s32", "start": 151.07999999999998, "end": 154.6, "text": "If this is a worker, it needs a runtime identity card."}, {"id": "s33", "start": 154.6, "end": 159.04, "text": "Not metaphorically, but in a very operational sense inside the org."}, {"id": "s34", "start": 159.04, "end": 160.12, "text": "What is the actor?"}, {"id": "s35", "start": 160.12, "end": 161.24, "text": "Who owns it?"}, {"id": "s36", "start": 161.24, "end": 163.12, "text": "What subject is it acting for?"}, {"id": "s37", "start": 163.12, "end": 164.959, "text": "Who delegated the authority?"}, {"id": "s38", "start": 164.959, "end": 167.24, "text": "What exact capabilities can it use?"}, {"id": "s39", "start": 167.24, "end": 169.48, "text": "Which policy governs that decision?"}, {"id": "s40", "start": 169.48, "end": 173.68, "text": "And how fast can I actually revoke it revoke it when things actually go wrong?"}, {"id": "s41", "start": 173.68, "end": 179.6, "text": "And the important distinction is that on behalf of someone points to a real subject."}, {"id": "s42", "start": 179.6, "end": 181.519, "text": "It could be you or me, a real user."}, {"id": "s43", "start": 181.519, "end": 183.04, "text": "It could be a service account."}, {"id": "s44", "start": 183.04, "end": 187.08, "text": "It could be a device or a workload identity."}, {"id": "s45", "start": 187.08, "end": 193.44, "text": "The ticket is the delegation context and not the subject itself, which is you or me."}, {"id": "s46", "start": 193.44, "end": 195.48, "text": "Existing identity language helps."}, {"id": "s47", "start": 195.48, "end": 199.16, "text": "The OAuth token exchange gives us the right shape somewhat."}, {"id": "s48", "start": 199.16, "end": 204.88, "text": "Um the the subject, the actor, and the delegation identity and history."}, {"id": "s49", "start": 205.2, "end": 213.88, "text": "But what it does not give you is that an agent identity standard uh with the actor on behalf of subject model."}, {"id": "s50", "start": 213.88, "end": 217.4, "text": "That is the shape we still need, which OAuth does not give you."}, {"id": "s51", "start": 217.4, "end": 225.07999999999998, "text": "Once an agent acts on behalf of somebody else, identity is where the product, security, and operation meets."}, {"id": "s52", "start": 225.07999999999998, "end": 231.36, "text": "This is why I do not think that managing agents is a brand new discipline or a brand new concept."}, {"id": "s53", "start": 231.36, "end": 236.32, "text": "It is, you know, human employee management, but moved down a layer."}, {"id": "s54", "start": 236.32, "end": 243.4, "text": "Humans get registered, provisioned, um authorized, monitored, investigated, and revoked on a day-to-day basis inside any org."}, {"id": "s55", "start": 243.4, "end": 246.56, "text": "Agents need the same life cycle from start to end."}, {"id": "s56", "start": 246.56, "end": 251.48, "text": "The only difference is speed, scale, and ambiguity."}, {"id": "s57", "start": 251.48, "end": 252.959, "text": "How do you deal with that?"}, {"id": "s58", "start": 252.959, "end": 260.04, "text": "The enterprise already understands badges, roles, managers, and audit trails for these human workers."}, {"id": "s59", "start": 260.04, "end": 272.919, "text": "Um but what it does not understand is that the novelty is applying these same controls continuously to software workers that know how to reason and act at a much larger scale than any human worker."}, {"id": "s60", "start": 272.919, "end": 277.04, "text": "This life cycle tells us who the actor is and how it is governed."}, {"id": "s61", "start": 277.04, "end": 279.6, "text": "The next problem is slightly harder."}, {"id": "s62", "start": 279.6, "end": 287.76, "text": "What happens when that actor reads untrusted context and decides what to do with its authority without you in the loop?"}, {"id": "s63", "start": 288.44, "end": 290.919, "text": "And that is not just my framing."}, {"id": "s64", "start": 290.919, "end": 294.76, "text": "Um you can see the enterprise stack in general moving in that broad direction."}, {"id": "s65", "start": 294.76, "end": 300.12, "text": "Microsoft announced Agent 365 for registry, permissions, telemetry, monitoring."}, {"id": "s66", "start": 300.12, "end": 303.2, "text": "Okta is bringing agents into their entity layer."}, {"id": "s67", "start": 303.2, "end": 307.76, "text": "Discovery, onboarding, assigning ownership to those agents on a very day-to-day basis."}, {"id": "s68", "start": 307.76, "end": 314.2, "text": "And similarly, AWS agent core identity is the developer version of the same exact thing, right?"}, {"id": "s69", "start": 314.2, "end": 320.36, "text": "Credentials and designated access for agents calling the services day in, day out."}, {"id": "s70", "start": 320.36, "end": 326.8, "text": "I'm not saying these products solve the problem, but the important signal here is way simpler."}, {"id": "s71", "start": 326.8, "end": 333.15999999999997, "text": "Agents are no longer being treated just as input-output prompts like they used to be 6 months, 1 year ago."}, {"id": "s72", "start": 333.15999999999997, "end": 338.08, "text": "Um they are being treated not as API keys 5 years, 6 years ago."}, {"id": "s73", "start": 338.08, "end": 342.8, "text": "They are becoming managed workers and managed identities."}, {"id": "s74", "start": 342.8, "end": 348.32, "text": "And once an agent is a managed identity, the security question also changes."}, {"id": "s75", "start": 348.32, "end": 357.12, "text": "It is not only what can it access, it is also the downstream decisions it could eventually make with that access it gets."}, {"id": "s76", "start": 357.12, "end": 365.72, "text": "And therefore, security is this forcing function because agents drastically change the attack volume and the attack surface area."}, {"id": "s77", "start": 365.72, "end": 370.4, "text": "In the old world, the risk was often that a program used a credential incorrectly."}, {"id": "s78", "start": 370.4, "end": 375.76, "text": "In the agentic world, untrusted text can cause a trusted action."}, {"id": "s79", "start": 375.76, "end": 382.64, "text": "A ticket, an email, a document, a web page, even a Slack message in today's world, is not only data anymore, right?"}, {"id": "s80", "start": 382.64, "end": 388.84, "text": "To the model, it could potentially be an instruction which could have downstream actions."}, {"id": "s81", "start": 388.84, "end": 392.96, "text": "In many agent systems, the attacker does not even need code execution."}, {"id": "s82", "start": 392.96, "end": 397.08, "text": "Sometimes, they just need the text the agent will read."}, {"id": "s83", "start": 397.08, "end": 407.919, "text": "And you know, Simon Willison named the dangerous combination this lethal trifecta a while back, which is private data, untrusted input, and external communication."}, {"id": "s84", "start": 407.919, "end": 415.6, "text": "The only small change I like to add to that is the action layer besides external communication which did not exist before."}, {"id": "s85", "start": 415.6, "end": 421.52, "text": "And the awkward part is that useful enterprise agents want all three."}, {"id": "s86", "start": 421.52, "end": 425.2, "text": "Um a helpdesk agent needs private user data."}, {"id": "s87", "start": 425.2, "end": 433.96, "text": "It needs to read untrusted tickets, and it needs to take actions in identity, device, and all of your SaaS systems."}, {"id": "s88", "start": 433.96, "end": 435.88, "text": "This is not a bug or a problem."}, {"id": "s89", "start": 435.88, "end": 438.16, "text": "This is the product spec, right?"}, {"id": "s90", "start": 438.16, "end": 440.04, "text": "That is the job of the agent."}, {"id": "s91", "start": 440.04, "end": 445.68, "text": "So, the architecture has to assume the content the agent reads may be adversarial."}, {"id": "s92", "start": 445.68, "end": 449.52, "text": "This is This is the probably the best example of that with the Echo leak."}, {"id": "s93", "start": 449.52, "end": 453.84000000000003, "text": "Um and you know, this is the production-grade version of what happened, right?"}, {"id": "s94", "start": 453.84000000000003, "end": 457.8, "text": "Outside text, inside data, and an outbound path."}, {"id": "s95", "start": 457.8, "end": 467.2, "text": "What this means is that Echo leak is a clean enterprise security example because it is actually a real CVE against Microsoft 365 co-pilot."}, {"id": "s96", "start": 467.2, "end": 478.56, "text": "It was not a toy demo, not a, you know, experimental agent inside an org, but a real enterprise company selling to real enterprises using the service."}, {"id": "s97", "start": 478.56, "end": 484.76, "text": "Um Aim Security demonstrated a zero-click chain inside of 365 co-pilot."}, {"id": "s98", "start": 484.76, "end": 488.56, "text": "Um an external email got pushed into co-pilot's context."}, {"id": "s99", "start": 488.56, "end": 500.68, "text": "Co-pilot could see what the signing user could see, and therefore it made decisions and it emitted data through Microsoft's firewall, which ideally even internal employees should not have access to."}, {"id": "s100", "start": 500.68, "end": 506.56, "text": "And that is again the confused deputy problem in an agentic form."}, {"id": "s101", "start": 506.56, "end": 509.04, "text": "The attacker did not need co-pilot credentials."}, {"id": "s102", "start": 509.04, "end": 511.0, "text": "The attacker did not need an API key."}, {"id": "s103", "start": 511.0, "end": 521.68, "text": "All they needed was a simple way to write an email, and that email was again read by my 365 co-pilot, and there is a million downstream effects of that."}, {"id": "s104", "start": 522.159, "end": 525.4, "text": "Another great example of this is what happened with Replit."}, {"id": "s105", "start": 525.4, "end": 529.52, "text": "Replit is a more operational use case, right?"}, {"id": "s106", "start": 529.52, "end": 532.28, "text": "It was not another prompt injection exploit."}, {"id": "s107", "start": 532.28, "end": 534.56, "text": "There is no attacker in this story."}, {"id": "s108", "start": 534.56, "end": 547.44, "text": "A coding worker had a path from a chat app to production database, um and this freeze lived as an instruction, not an enforceable policy or an enforceable boundary."}, {"id": "s109", "start": 547.44, "end": 558.0, "text": "Um Jason reported that the Replit agent ignored his explicit instructions for a code freeze, deleted live prod data, and misrepresented what happened."}, {"id": "s110", "start": 558.0, "end": 561.92, "text": "Replit CEO publicly apologized for this and called the incident unacceptable."}, {"id": "s111", "start": 561.92, "end": 565.4, "text": "But the point is not that there's an issue with Replit."}, {"id": "s112", "start": 565.4, "end": 572.28, "text": "The point is that the agent was capable enough to act, and it had effective production access."}, {"id": "s113", "start": 572.28, "end": 578.4, "text": "What was missing was a deterministic break just before that."}, {"id": "s114", "start": 578.4, "end": 593.64, "text": "In very controlled plain traditional terms, the missing pieces were in a in a traditional world like scoped access, um action time policy, approval for destructive actions, and an audit a revoked trail."}, {"id": "s115", "start": 593.64, "end": 598.64, "text": "If only the break in the model is deciding to behave, you do not have a control."}, {"id": "s116", "start": 598.64, "end": 602.08, "text": "You just have a hope that all will go right."}, {"id": "s117", "start": 602.08, "end": 605.6, "text": "Echo leak is an attacker spreading delegated access."}, {"id": "s118", "start": 605.6, "end": 612.16, "text": "Replit is an agent spending its own designated access and acting badly."}, {"id": "s119", "start": 612.16, "end": 616.32, "text": "Different failure modes, but the same control question overall."}, {"id": "s120", "start": 616.32, "end": 619.32, "text": "What could it touch?"}, {"id": "s121", "start": 619.4, "end": 625.24, "text": "And that is why there is the security re-framing essentially."}, {"id": "s122", "start": 625.24, "end": 626.84, "text": "Echo leak was adversarial."}, {"id": "s123", "start": 626.84, "end": 638.04, "text": "Replit was again adversarial in an operational sense, but in both a boundary gate was crossed and nothing outside of that model contains that authority."}, {"id": "s124", "start": 638.04, "end": 648.12, "text": "Filters and guardrails are useful telemetry obviously, but they are not the enterprise security boundary for high consequence actions like these ones."}, {"id": "s125", "start": 648.12, "end": 652.2, "text": "If an attacker if an attacker kept trying, one miss matters."}, {"id": "s126", "start": 652.2, "end": 657.48, "text": "If an agent has broad authority, just one mistake mat- matters."}, {"id": "s127", "start": 657.48, "end": 660.64, "text": "So, the question is not whether the model can be perfect."}, {"id": "s128", "start": 660.64, "end": 661.6, "text": "It cannot be."}, {"id": "s129", "start": 661.6, "end": 668.04, "text": "The question is what authority survives outside the model boundaries versus inside the model boundaries."}, {"id": "s130", "start": 668.04, "end": 675.8, "text": "If an agent has broad authority, that one mistake should live outside its circle of influence."}, {"id": "s131", "start": 676.56, "end": 683.48, "text": "And you know, the credible research direction here is a very simple privilege separation as you see on the slide."}, {"id": "s132", "start": 683.48, "end": 692.44, "text": "Um Wilson's dual LLM pattern separated the trusted planning from the untrusted content processing."}, {"id": "s133", "start": 692.44, "end": 697.52, "text": "Very simple in layman terms, um but very hard to implement under the hood, right?"}, {"id": "s134", "start": 697.52, "end": 703.44, "text": "Um you know, Camel formalized this with a control flow and data flow separation plus capabilities."}, {"id": "s135", "start": 703.44, "end": 712.64, "text": "In production terms, what this means is um plan, then execute, separated by a wall of if else statements, technically."}, {"id": "s136", "start": 712.64, "end": 715.04, "text": "And the point is two privileges."}, {"id": "s137", "start": 715.04, "end": 722.28, "text": "The context is allowed to reason, but the context is not allowed to exert authority."}, {"id": "s138", "start": 722.28, "end": 725.4, "text": "The planner can plan, but cannot call those tools."}, {"id": "s139", "start": 725.4, "end": 729.56, "text": "The executor can call these appro- approved tools, but cannot create new actions."}, {"id": "s140", "start": 729.56, "end": 741.48, "text": "And that is where the separation lives, and that is where potentially a world exists where the agents can have authority and can have bounded authority without becoming useless."}, {"id": "s141", "start": 742.2, "end": 747.2, "text": "And very similarly, here is again the same pattern which we use internally."}, {"id": "s142", "start": 747.2, "end": 751.96, "text": "Start with a trusted intent, which might be, \"Hey, reset this user's password.\""}, {"id": "s143", "start": 751.96, "end": 753.72, "text": "\"Investigate that endpoint."}, {"id": "s144", "start": 753.72, "end": 755.76, "text": "Rotate the token.\""}, {"id": "s145", "start": 755.76, "end": 758.72, "text": "Trusted intent is not the whole ticket here."}, {"id": "s146", "start": 758.72, "end": 769.6, "text": "Um it is the normalized request, which means who asked, on whose behalf did they ask, what capability, what scope, and for how long."}, {"id": "s147", "start": 769.6, "end": 778.32, "text": "The planner turned authenticated intent into a typed logged plan before it sees any evidence, any tools, any tool calls."}, {"id": "s148", "start": 778.32, "end": 788.68, "text": "The executor then process untrusted evidence and runs the plan without without ever touching the original ticket or the original context again."}, {"id": "s149", "start": 788.68, "end": 795.92, "text": "Every action becomes a type request into a policy gate checking plan, capability, and risk."}, {"id": "s150", "start": 795.92, "end": 802.12, "text": "The model proposes, the policy decides, and then the tool call happens."}, {"id": "s151", "start": 802.12, "end": 812.08, "text": "Evidence can fill these parameters, but it cannot actually mint new actions even for existing tools."}, {"id": "s152", "start": 812.12, "end": 813.6, "text": "That sounds abstract."}, {"id": "s153", "start": 813.6, "end": 816.6, "text": "So, I have one small concrete example of this."}, {"id": "s154", "start": 816.6, "end": 819.76, "text": "A very simple password reset ticket."}, {"id": "s155", "start": 819.76, "end": 822.8, "text": "A password reset ticket with a hidden instruction."}, {"id": "s156", "start": 822.8, "end": 825.52, "text": "Which could which could very well be an attack attempt."}, {"id": "s157", "start": 825.52, "end": 830.88, "text": "Maybe disable disable MFA org wide and email me the codes."}, {"id": "s158", "start": 830.88, "end": 836.92, "text": "In a very simple naive loop traditionally, the same model reads, reasons, and acts."}, {"id": "s159", "start": 836.92, "end": 842.24, "text": "In the control plane version of this, the reset password plan is logged."}, {"id": "s160", "start": 842.24, "end": 853.16, "text": "When the executor reaches the MFA action, the gate sees it out of the plan and out of the scope, denies, escalates, and records this attempt as malicious."}, {"id": "s161", "start": 853.16, "end": 856.96, "text": "The executor should not hold standing credentials."}, {"id": "s162", "start": 856.96, "end": 860.76, "text": "It gets a short-lived capability for this approved action."}, {"id": "s163", "start": 860.76, "end": 866.04, "text": "Bound to the actor, to the subject, to the right audience, and TTL."}, {"id": "s164", "start": 866.28, "end": 868.08, "text": "The receipt of this matters."}, {"id": "s165", "start": 868.08, "end": 873.76, "text": "The actor, subject, delegation, plan ID, the capability, the requested action."}, {"id": "s166", "start": 873.76, "end": 878.88, "text": "Audit is not just compliance garnish anymore, right?"}, {"id": "s167", "start": 878.88, "end": 887.2, "text": "It is how an autonomous agent or how autonomy essentially becomes operable in a very real enterprise setting."}, {"id": "s168", "start": 888.72, "end": 895.32, "text": "So, what this essentially means is that today the AI workforce does need an AI does need an IT department."}, {"id": "s169", "start": 895.32, "end": 898.28, "text": "That does not mean more dashboards, more chatbots."}, {"id": "s170", "start": 898.28, "end": 913.76, "text": "It means an identity for every actor, short-lived capability tokens for actions, policy gates that cannot be talked out of, receipts for everything, and clear revocation when something goes wrong."}, {"id": "s171", "start": 913.76, "end": 917.28, "text": "Protocols like MCP and A2A are important rails."}, {"id": "s172", "start": 917.28, "end": 919.68, "text": "Agent to tool and agent to agent communication."}, {"id": "s173", "start": 919.68, "end": 923.12, "text": "However, these rails are not sufficient at the moment."}, {"id": "s174", "start": 923.12, "end": 930.4, "text": "The enterprise still needs the system that decides who can move where, um under whose authority, and what audit."}, {"id": "s175", "start": 930.4, "end": 934.08, "text": "And the who here again is an agent, not you or me."}, {"id": "s176", "start": 934.08, "end": 936.96, "text": "The winners will not just build smart agents today."}, {"id": "s177", "start": 936.96, "end": 946.84, "text": "The winners will build agents that you can delegate to, that you can constrain, that you can investigate, and those which can be revoked whenever you want to."}, {"id": "s178", "start": 946.84, "end": 951.84, "text": "And this is the oldest enterprise IT playbook, pointed at a new kind of worker."}, {"id": "s179", "start": 951.84, "end": 955.44, "text": "And we're trying to build for that future at Deco Work."}, {"id": "s180", "start": 955.44, "end": 956.08, "text": "That's all."}, {"id": "s181", "start": 956.08, "end": 958.275, "text": "Thank you."}, {"id": "s182", "start": 958.275, "end": 960.275, "text": "[applause]"}]}, {"id": "qTZirYu9pr0", "title": "When AI Agents Pay and Sellers Monetize: Building x402 Apps on AWS — Anil Nadiminti, AWS", "channel": "AI Engineer", "duration": 1241, "upload_date": null, "url": "https://www.youtube.com/watch?v=qTZirYu9pr0", "api": "/api/talks/qTZirYu9pr0.json", "summary_url": "/#qTZirYu9pr0", "transcript": {"html": "/transcripts/qTZirYu9pr0.html", "txt": "/transcripts/qTZirYu9pr0.txt", "vtt": "/transcripts/qTZirYu9pr0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.639, "end": 17.76, "text": "Hello all, welcome to uh the agent e-commerce track and uh I'm Anil Lminti."}, {"id": "s3", "start": 17.76, "end": 20.08, "text": "I'm a senior solutions architect here at AWS."}, {"id": "s4", "start": 20.08, "end": 31.519, "text": "Uh I'm I'm here to talk to you today about how AWS is innovating and uh how you can build apps on uh AWS to support the agent e-commerce."}, {"id": "s5", "start": 31.519, "end": 33.6, "text": "So uh welcome to the session."}, {"id": "s6", "start": 33.6, "end": 38.48, "text": "Uh just to get you started, let me set the stage with something that you're very familiar with."}, {"id": "s7", "start": 38.48, "end": 44.64, "text": "Uh imagine that you are your organization is building uh a news portal like this, right?"}, {"id": "s8", "start": 44.64, "end": 50.48, "text": "So you're all familiar with something where you're accessing the news content and then suddenly you hit a payw wall, right?"}, {"id": "s9", "start": 50.48, "end": 62.239, "text": "So this is where uh you pull out your wallet or you try to uh figure out how to make the payments, set up your uh credentials, access keys in the sense that you you make a credit card transaction"}, {"id": "s10", "start": 62.239, "end": 66.4, "text": "weekly, monthly or annual subscription and then get started to access the content."}, {"id": "s11", "start": 66.4, "end": 66.56, "text": "Right?"}, {"id": "s12", "start": 66.56, "end": 68.88, "text": "So this is all the content that is behind a payw wall."}, {"id": "s13", "start": 68.88, "end": 78.479, "text": "But uh what we see now is that uh much of the traffic that is actually being uh sent to these uh uh portals now on the internet is all coming from bots."}, {"id": "s14", "start": 78.479, "end": 84.64, "text": "We see that we at a infliction point where uh the bot traffic is more than the human traffic right."}, {"id": "s15", "start": 84.64, "end": 91.84, "text": "So it's just uh actually in fact surpassed that and uh 95% of that bot traffic is coming from AI agents."}, {"id": "s16", "start": 91.84, "end": 107.6, "text": "So uh essentially we are also looking at the rise of autonomous agents right so where we all started using LLMs asking questions asking for summarization being able to uh get help with using them as co-pilots"}, {"id": "s17", "start": 107.6, "end": 123.52, "text": "getting them to do agentic work to uh do multi-step tasks and now we're in the phase of autonomous agents where agents are using the reasoning powers of large language models to complete a task and completing a task means that uh it it has to go do whatever you're asking it to do."}, {"id": "s18", "start": 123.52, "end": 126.32, "text": "And that's kind of where we are in the uh journey."}, {"id": "s19", "start": 126.32, "end": 136.8, "text": "And we see that by 2027 about a billion agents will be running uh performing tasks and 60% of the enterprises will already be uh using agentic workflows."}, {"id": "s20", "start": 136.8, "end": 141.599, "text": "So uh what happens when agents hit these pay walls that uh we just saw?"}, {"id": "s21", "start": 141.599, "end": 147.92000000000002, "text": "When agents hit the pay walls, they stall, they can't operate and you see those messages that hey I cannot access content."}, {"id": "s22", "start": 147.92000000000002, "end": 148.56, "text": "Uh right?"}, {"id": "s23", "start": 148.56, "end": 150.879, "text": "So at that point humans get in the loop."}, {"id": "s24", "start": 150.879, "end": 158.56, "text": "They try to enter and put the credit card details or API keys do the transactions for the AI agents."}, {"id": "s25", "start": 158.56, "end": 160.48, "text": "But all of that is manual friction, right?"}, {"id": "s26", "start": 160.48, "end": 162.72, "text": "So essentially bringing in a human in the loop."}, {"id": "s27", "start": 162.72, "end": 169.519, "text": "So autonom autonomous agents actually break [clears throat] at that point where the uh friction is now building up."}, {"id": "s28", "start": 169.519, "end": 174.64, "text": "So uh now sellers of the content have uh you know couple of options right."}, {"id": "s29", "start": 174.64, "end": 192.239, "text": "So block all the bot traffic but by blocking all the traffic they lose this AI powered discovery they miss this uh partnership licensing options and AI also now supports citations right so the responses so they lose all of that uh powered citations as well if they can't sell the content"}, {"id": "s30", "start": 192.239, "end": 206.48, "text": "essentially they lose uh revenue generating options and if you allow the bots to access those uh uh the content what it means is that you know hundreds of thousands of bots or millions of bots could be hitting your uh uh infrastructure which means that the infrastructure"}, {"id": "s31", "start": 206.48, "end": 217.84, "text": "costs will also raise and uh you need to be able to support all of that right so you also uh when you allow bots to access content you lose attribution the IP itself right so because content is now freely available"}, {"id": "s32", "start": 217.84, "end": 234.4, "text": "so uh both these decisions are probably not not a good option they're not ideal so there should be another ideal option where uh you would want to have your AI agents being able to get and pay for the content that they are looking for and monetize on"}, {"id": "s33", "start": 234.4, "end": 246.959, "text": "So uh now we look at the next phase of uh uh rise in autonomous agents where agents should be able to transact and make uh discover other agents resources and essentially make payments."}, {"id": "s34", "start": 246.959, "end": 247.2, "text": "Right?"}, {"id": "s35", "start": 247.2, "end": 260.0, "text": "So this is the definition of agent e-commerce where AI agents can essentially discover uh you know it's a form of e-commerce where autonomous agents can uh discover independently and make those uh uh settlements and then access content."}, {"id": "s36", "start": 260.0, "end": 266.16, "text": "So let's look at uh the agent e-commerce the two sides of agent e-commerce the buy side and the sell side."}, {"id": "s37", "start": 266.16, "end": 275.04, "text": "So uh when we talk about the buy side the agents are making these transactions and on the sell side the sellers of the content are trying to monetize on the content."}, {"id": "s38", "start": 275.04, "end": 286.96, "text": "So on the buy side when you look at things AI agents want to access these premium paywalled content licensed content they want to be able to hold wallets which they do not have the option today and they want to be able to make these microtransactions"}, {"id": "s39", "start": 286.96, "end": 288.96, "text": "you just heard in the prior talk as well."}, {"id": "s40", "start": 288.96, "end": 295.199, "text": "But enterprises when they come to this point they want more guardrails and they do not want agents to go on spending spree."}, {"id": "s41", "start": 295.199, "end": 296.0, "text": "Think about it right?"}, {"id": "s42", "start": 296.0, "end": 303.28, "text": "Would you allow your AI agents to get handled on your wallets or credit cards to be able to do that transactions and where they could go rogue as well right?"}, {"id": "s43", "start": 303.28, "end": 305.68, "text": "So that's what the buyer side is looking at."}, {"id": "s44", "start": 305.68, "end": 311.68, "text": "And on the seller side uh the there are again billions of transactions that be happening with these AI bots."}, {"id": "s45", "start": 311.68, "end": 320.96, "text": "So sellers really want to be able to understand what kinds of bots are operating uh what kinds of transactions they're making and uh really uh do this at the edge."}, {"id": "s46", "start": 320.96, "end": 326.4, "text": "The sellers don't want to change their entire infrastructure and origins where the content is sitting."}, {"id": "s47", "start": 326.4, "end": 329.68, "text": "They want to be able to do this at the edge without changing much of this."}, {"id": "s48", "start": 329.68, "end": 329.919, "text": "Right?"}, {"id": "s49", "start": 329.919, "end": 339.919, "text": "So there is again uh one common thing here on the buyer side and the seller side which is a standardized approach or a protocol to be able to solve for this uh machine to machine payments at the edge."}, {"id": "s50", "start": 339.919, "end": 352.639, "text": "So uh bottom line buyers are saying that they want their agents to be able to pay for content uh and uh not have humans approving this and then the sellers are saying that they want to be able to earn from the AI traffic."}, {"id": "s51", "start": 352.639, "end": 363.199, "text": "So bottom line the subscription model is going to change with humans in the loop to becoming humans on the loop or out of the loop and that's kind of what we are building towards."}, {"id": "s52", "start": 363.199, "end": 374.96, "text": "uh the the traditional one-sizefits model does not work anymore because of the fact that uh again we look at that in the next slide where uh the transactions cost will not really work right all of this needs to happening"}, {"id": "s53", "start": 374.96, "end": 388.479, "text": "at realtime speed and the paper use and paper execution is what the f future is going to look like so if you're a seller you would have come across this right so there is a 25 cent minimum transaction fees as well as"}, {"id": "s54", "start": 388.479, "end": 398.319, "text": "2.5% on top of that and all of these microtransactions are uh you know in the in in like a cent subsend or you know micro cents is what we are calling them."}, {"id": "s55", "start": 398.319, "end": 404.96, "text": "So if you add like a 25 cents on top of that it's essentially like 250 times to what you know they are essentially paying for."}, {"id": "s56", "start": 404.96, "end": 417.84000000000003, "text": "So the all of this model does not work and uh while we are trying to solve for that a very brief history uh of this is every HTTP call essentially responds back uh you know there's a response for that you've seen 200 status codes"}, {"id": "s57", "start": 417.84000000000003, "end": 428.96, "text": "404 uh you know and the 301 these are all like status codes that you're familiar with and then there is one status code which is 402 which has uh not been used it was reserved for payment required"}, {"id": "s58", "start": 428.96, "end": 440.72, "text": "and now finally uh Coinbase has introduced this uh as uh transactions over 402 which is also called as X42 where they uh you know the protocol talks about how you can do machine to-achine"}, {"id": "s59", "start": 440.72, "end": 454.8, "text": "transactions uh using this protocol right so we'll take a closer look at that but uh what happens within the protocol is uh you know if you look at this uh flowchart here a client makes a request to the server and then the server responds back with the payment required"}, {"id": "s60", "start": 454.8, "end": 466.4, "text": "uh the client then figures out what is the payment method that it wants to operate and then it sends the payment authorization to the server the server then utilizes a facilitator to complete the verification"}, {"id": "s61", "start": 466.4, "end": 483.36, "text": "and then also utilizes the same facilitator to complete the transaction and once the settlement is completed onchain essentially the server will then respond back with the content right so this is what's happening under the X42 protocol I thought I'll pick one of the protocols and just uh explain this to you but uh why this is compelling is"}, {"id": "s62", "start": 483.36, "end": 498.96, "text": "uh you know essentially there is no protocol fees uh or the fees that a consumer is paying for uh you know these microcent transactions and the merchant is paying very nominal gas fees is uh again there is zero wait time this is happening at the speed of internet"}, {"id": "s63", "start": 498.96, "end": 507.919, "text": "and uh there is no friction there is no API keys to set up no subscriptions and the payment is the essentially the uh credential to be able to get the content"}, {"id": "s64", "start": 507.919, "end": 518.719, "text": "so there is no centralization it's uh x42 can be extended as well and you can implement it and there are no restrictions as well so some key milestones here are you know it was introduced"}, {"id": "s65", "start": 518.719, "end": 537.519, "text": "last year uh May 2025 it explored is not part of the Linux Foundation under open governance and it's backed by Coinbase, AWS, Google, Stripe, Anthropic, Cloudflare and Circle right so many more folks in there that are supporting that organizations in there."}, {"id": "s66", "start": 537.519, "end": 549.04, "text": "So uh from Amazon we have also released agent core payments uh under the bedrock uh suite so where uh agents will make be able to make payments and we'll go into some of the details here."}, {"id": "s67", "start": 549.04, "end": 552.0, "text": "So let's talk about the buyer side here and what is involved right?"}, {"id": "s68", "start": 552.0, "end": 557.92, "text": "So we uh we understood from the developers that they really want to be able to get this uh agents to have wallet support."}, {"id": "s69", "start": 557.92, "end": 568.24, "text": "They want to be able to have real-time settlement uh have the budget and guardrails which enterprises really want and observability throughout the stack where they would want to have"}, {"id": "s70", "start": 568.24, "end": 571.8389999999999, "text": "uh the full stack trace of everything that's happening uh under the hood."}, {"id": "s71", "start": 571.8389999999999, "end": 582.72, "text": "So I'm excited to share with you that we've launched agent core payments and this is a service that allows AI agents to autonomously discover uh authorize and execute payments with a few lines of code."}, {"id": "s72", "start": 582.72, "end": 601.04, "text": "Uh now we've launched this in partnership with Coinbase and Stripe where you can bring wallets from Coinbase and Stripe preview to be able to do these operations and we'll go into some of the details but uh the core capabilities to start with are wallet support where you can bring the the wallets from Coinbase and Stripe."}, {"id": "s73", "start": 601.04, "end": 609.92, "text": "you're able to orchestrate the payments using payment connectors and uh today we support X42 with many more protocols to uh you know that are in the pipeline."}, {"id": "s74", "start": 609.92, "end": 612.399, "text": "The service is designed to be protocol agnostic."}, {"id": "s75", "start": 612.399, "end": 617.8389999999999, "text": "So as new protocols emerge, we are going to be adding the support for those protocols as well."}, {"id": "s76", "start": 617.8389999999999, "end": 632.72, "text": "And uh you know the the settlement is going to be instantaneous uh instant essentially and uh the payment limits can be set uh which is the most important thing that we spoke about where enterprises are looking to put some payment limits and guards on how these transactions can operate."}, {"id": "s77", "start": 632.72, "end": 642.48, "text": "So uh observability is builtin and uh essentially all of this uh operates with uh you know security as the uh layer that is operating uh the whole model right."}, {"id": "s78", "start": 642.48, "end": 647.68, "text": "So with that let's look at uh some of these uh details on how the payments limit can be set up right."}, {"id": "s79", "start": 647.68, "end": 659.8389999999999, "text": "So you can create payment sessions where you can set the programmatically set the maximum amount of uh uh value that can be used for transactions or you can also set expiry time in minutes."}, {"id": "s80", "start": 659.8389999999999, "end": 670.0, "text": "think where uh you are able to set that uh I can the agent can actually spend maybe $5 in 30 days or 60 days right so that's kind of the operation"}, {"id": "s81", "start": 670.0, "end": 686.32, "text": "uh model that you can set with many more uh you know details that are available I'm only going over a few features but uh let's look at what happens on the buyer side when the user is asking an agent to make a particular uh you know requesting for resources right so agent"}, {"id": "s82", "start": 686.32, "end": 691.8389999999999, "text": "completes the request by accessing tools MPPP servers other resources as well."}, {"id": "s83", "start": 691.8389999999999, "end": 702.16, "text": "So at that point of time if the agent uh is uh looking at you know it it finds that the there is a response from one of the tool calls or requests with a 402"}, {"id": "s84", "start": 702.16, "end": 715.12, "text": "agent core payments is going to handle the request uh to complete the transaction and then let the AI agent know that uh essentially the settlement happened and the AI uh agent will be able to respond back with the users."}, {"id": "s85", "start": 715.12, "end": 729.279, "text": "So in this process when the wallets are uh wallet support is imported the the the secret keys that you use to import the wallets actually are stored in a secure token wallet that is uh secured by KMS"}, {"id": "s86", "start": 729.279, "end": 730.88, "text": "where you know that's there."}, {"id": "s87", "start": 730.88, "end": 734.16, "text": "So essentially the agent does not have access to the private keys."}, {"id": "s88", "start": 734.16, "end": 736.32, "text": "This is most important uh to note."}, {"id": "s89", "start": 736.32, "end": 745.8389999999999, "text": "And uh next thing is that uh agent core payments is also integrated uh through uh a gateway which is also part of uh which is another service that we have to mp5"}, {"id": "s90", "start": 745.8389999999999, "end": 747.44, "text": "your internal APIs."}, {"id": "s91", "start": 747.44, "end": 758.639, "text": "Uh through agent core gateway uh the agent core payments can get access to discovery service uh in coinbase where there are 10,000 plus endpoints that are available to transact"}, {"id": "s92", "start": 758.639, "end": 763.2, "text": "and then u again there is a per session budget that we just discussed as well."}, {"id": "s93", "start": 763.2, "end": 783.44, "text": "So uh there is a decoupling of agent infrastructure and uh the payment infrastructure by design where the agent can operate it it in its own loop and whenever it sees the payment the payment uh connectors orchestration payment limits and integration with third party wallets can happen right so it's important to decouple them because again skills can be"}, {"id": "s94", "start": 783.44, "end": 793.6, "text": "poisoned inputs for the agents can also be uh you know poisoned by inputs as well right so where malicious actors could uh try to do that so By decoupling"}, {"id": "s95", "start": 793.6, "end": 806.639, "text": "and making this uh by design a agents can essentially have a secure path for these transactions and payments do not touch the you know undeterministic path but this is more on a deterministic"}, {"id": "s96", "start": 806.639, "end": 808.32, "text": "uh uh layer as well."}, {"id": "s97", "start": 808.32, "end": 814.48, "text": "So why this is important is that uh again agents uh the code of the agents does not have to change."}, {"id": "s98", "start": 814.48, "end": 822.16, "text": "You can bring your own model frameworks and then the payment itself uh can flow through uh in the payment uh uh layer itself."}, {"id": "s99", "start": 822.16, "end": 831.92, "text": "So again the controls the policies pending controls can be outside of the payment stack itself and again it's this is built to be protocol agnostic."}, {"id": "s100", "start": 831.92, "end": 841.92, "text": "So this is uh one of the console screens where it shows how you can import uh the payment connector uh and it shows that you know you can select the the coinbase"}, {"id": "s101", "start": 841.92, "end": 850.399, "text": "wallet and the stripe preview wallet from the console and uh this is a demo in action where we are showing how a secure resource can be accessed."}, {"id": "s102", "start": 850.399, "end": 862.32, "text": "Now in this case uh the AI agent is essentially making a you know discovering that there is a secure source the agent core payments is kicking in and then it's completing the transaction"}, {"id": "s103", "start": 862.32, "end": 868.56, "text": "by utilizing the wallet that is already integrated and uh the transaction completes."}, {"id": "s104", "start": 868.56, "end": 871.76, "text": "Now uh this is on the buyer side."}, {"id": "s105", "start": 871.76, "end": 874.32, "text": "Now let's look at the seller side to understand what's happening."}, {"id": "s106", "start": 874.32, "end": 874.639, "text": "Right?"}, {"id": "s107", "start": 874.639, "end": 878.0, "text": "So uh again there is a lot of bot activity that's happening."}, {"id": "s108", "start": 878.0, "end": 884.88, "text": "We have released uh under uh the uh AWS web application firewall a feature where we have bot detection in place."}, {"id": "s109", "start": 884.88, "end": 887.519, "text": "Today we detect over 650 different types of bots."}, {"id": "s110", "start": 887.519, "end": 893.12, "text": "Think of bots like perplexity bot, GPD bot, cloud bot, you know, again Google bots, right?"}, {"id": "s111", "start": 893.12, "end": 895.12, "text": "So there are so many bots that are out there."}, {"id": "s112", "start": 895.12, "end": 898.8, "text": "So we're able to detect also understand the intent of these bots."}, {"id": "s113", "start": 898.8, "end": 900.72, "text": "So why are these bots accessing the content?"}, {"id": "s114", "start": 900.72, "end": 903.44, "text": "Are they accessing the content to train their models?"}, {"id": "s115", "start": 903.44, "end": 908.959, "text": "are they doing it because they have to respond back to an intent where they're uh responding for a rag search."}, {"id": "s116", "start": 908.959, "end": 910.72, "text": "So we're able to identify the intent."}, {"id": "s117", "start": 910.72, "end": 915.839, "text": "We're also able to verify the bots and identify them by a signature."}, {"id": "s118", "start": 915.839, "end": 918.72, "text": "So we are able to say hey this is a verified bot."}, {"id": "s119", "start": 918.72, "end": 929.68, "text": "So maybe you have uh built a relation with one of these organizations and these verification will allow you to have a different pricing for the organizations that are already verified."}, {"id": "s120", "start": 929.68, "end": 930.959, "text": "So we'll look at that in a second."}, {"id": "s121", "start": 930.959, "end": 936.32, "text": "So there's also real-time traffic analysis that allows uh more uh to be customized."}, {"id": "s122", "start": 936.32, "end": 941.8389999999999, "text": "And I'm also happy to share with you today that we announced VAF AI traffic monetization."}, {"id": "s123", "start": 941.8389999999999, "end": 952.639, "text": "This is a service that allows you to monetize uh based on the content that uh you know based on how you can measure, verify and monetize based on the AI traffic that is hitting your endpoints."}, {"id": "s124", "start": 952.639, "end": 962.399, "text": "Now if you might be familiar with CloudFront which is our content distribution network you can add a web application firewall at that point and essentially you can moni start monetizing"}, {"id": "s125", "start": 962.399, "end": 967.759, "text": "uh right away and based on a few clicks uh you can do that again using infrastructure as code as well."}, {"id": "s126", "start": 967.759, "end": 976.079, "text": "Now I also spoke about a gateway service that allows you to expose your AI endpoints uh that are internal use and mcpify them."}, {"id": "s127", "start": 976.079, "end": 978.8, "text": "So the same web application firewalls can be used there."}, {"id": "s128", "start": 978.8, "end": 982.959, "text": "So your internal APIs can be MCPI and then you can start monetizing as well."}, {"id": "s129", "start": 982.959, "end": 984.959, "text": "So what happens during monetization?"}, {"id": "s130", "start": 984.959, "end": 989.759, "text": "The AI agent AI bot essentially requests for some content."}, {"id": "s131", "start": 989.759, "end": 994.16, "text": "The bot context uh understands what kinds of bots is detecting it."}, {"id": "s132", "start": 994.16, "end": 995.44, "text": "It's able to detect the bot."}, {"id": "s133", "start": 995.44, "end": 1003.68, "text": "It's able to categorize and understand the intent of the bot as we discussed earlier and verify uh and check what kind of bot is available."}, {"id": "s134", "start": 1003.68, "end": 1009.68, "text": "So then we are able to monetize uh using the X42 and the publishers get paid as well."}, {"id": "s135", "start": 1009.68, "end": 1014.88, "text": "So important to note is that again there is no SDK change no changes at the origin origin."}, {"id": "s136", "start": 1014.88, "end": 1021.519, "text": "Publishers keep 100% of the revenue as well and uh again there is no transaction fees or subscription fees."}, {"id": "s137", "start": 1021.519, "end": 1027.199, "text": "So this supports X42 and we are adding support for more uh protocols as well."}, {"id": "s138", "start": 1027.199, "end": 1030.24, "text": "U a few dimensions on how you can start monetizing."}, {"id": "s139", "start": 1030.24, "end": 1032.72, "text": "Think uh you have separate paths."}, {"id": "s140", "start": 1032.72, "end": 1044.0, "text": "So a slash uh uh blog in this case can be charging for a different rate than a slash research or maybe an API endpoint itself and uh you you know the identity of these bots."}, {"id": "s141", "start": 1044.0, "end": 1056.24, "text": "Again, if you make uh some kind of a relationship with the uh bots uh companies, organizations, maybe you make a relation with Anthropic, then you can essentially have a different pricing for those bots versus different"}, {"id": "s142", "start": 1056.24, "end": 1058.0, "text": "uh unverified bots, right?"}, {"id": "s143", "start": 1058.0, "end": 1059.6, "text": "So, uh think of that option."}, {"id": "s144", "start": 1059.6, "end": 1062.32, "text": "And then you can also set different pricing for intent as well."}, {"id": "s145", "start": 1062.32, "end": 1071.2, "text": "If somebody's coming here, if a bot is accessing the content for uh again training, you can charge a different rate than what it's doing for a search as well."}, {"id": "s146", "start": 1071.2, "end": 1073.2, "text": "So again, these are different VAF rules."}, {"id": "s147", "start": 1073.2, "end": 1077.76, "text": "they can be uh in a combination of end or or then you can access that."}, {"id": "s148", "start": 1077.76, "end": 1090.16, "text": "So this is how the reimagine flow would look like uh where you're allowing the AI agents or you know essentially verified bots and unverified bots to have different pricing and humans to have different pricing."}, {"id": "s149", "start": 1090.16, "end": 1092.96, "text": "Some cases you want to have humans to access the content freely."}, {"id": "s150", "start": 1092.96, "end": 1097.6, "text": "Some cases again the humans could be charged where the bots could be charged differently as well."}, {"id": "s151", "start": 1097.6, "end": 1097.84, "text": "Right?"}, {"id": "s152", "start": 1097.84, "end": 1100.64, "text": "So this is how uh you know you can reimagine the price."}, {"id": "s153", "start": 1100.64, "end": 1114.96, "text": "So again there is some uh dashboards that show the revenue numbers and how uh you know you're uh able to aggregate by different uh bots and figure out what kind of revenue model you want to operate and it also shows what is the path"}, {"id": "s154", "start": 1114.96, "end": 1126.16, "text": "uh that's being accessed by these bots right so uh again what is currently uh everyone using agent e-commerce for they're using agent commerce to uh run um again LLM inference"}, {"id": "s155", "start": 1126.16, "end": 1136.16, "text": "getting uh compute web scraping uh they're uh creating research search agents to be able to uh you know serve the requests and uh agent to agent as well."}, {"id": "s156", "start": 1136.16, "end": 1138.799, "text": "We see MCPs also being monetized now."}, {"id": "s157", "start": 1138.799, "end": 1152.24, "text": "Uh again this is the last 12 months of uh traffic uh from um again what we are seeing on uh Coinbase agentic market u where you're seeing that a $50 million volume transaction happened over"}, {"id": "s158", "start": 1152.24, "end": 1153.919, "text": "170 million transactions."}, {"id": "s159", "start": 1153.919, "end": 1162.559, "text": "The average settlement time is 200 milliseconds on base uh with about a tenth of a cent as cost per transaction."}, {"id": "s160", "start": 1162.559, "end": 1174.799, "text": "So I spoke to you about agent uh agent core payments which is uh one of the you know parts of the bigger ecosystem agent uh bed agent core uh where you can essentially bring your own model."}, {"id": "s161", "start": 1174.799, "end": 1180.64, "text": "You can bring your own framework and uh you can start building AI agents."}, {"id": "s162", "start": 1180.64, "end": 1183.12, "text": "You can add context by adding memory."}, {"id": "s163", "start": 1183.12, "end": 1185.84, "text": "You can uh bring again your own managed knowledge bases."}, {"id": "s164", "start": 1185.84, "end": 1188.08, "text": "You can add web search capabilities to the agents."}, {"id": "s165", "start": 1188.08, "end": 1196.96, "text": "you can mcpify your internal APIs and then you can uh have many more features like being able to run evaluation on how your agents are performing."}, {"id": "s166", "start": 1196.96, "end": 1211.919, "text": "So again you can uh use runtime which is a bedrock uh agent core runtime where you can bring your own agentic uh uh application and serve uh at scale and every request will have uh its own isolated"}, {"id": "s167", "start": 1211.919, "end": 1215.44, "text": "uh micro virtual machine that is running to serve the requests."}, {"id": "s168", "start": 1215.44, "end": 1217.919, "text": "So that's it from my side here today."}, {"id": "s169", "start": 1217.919, "end": 1222.244, "text": "Uh thank you and uh hope you have a nice day."}, {"id": "s170", "start": 1222.244, "end": 1224.244, "text": "[applause]"}, {"id": "s171", "start": 1238.619, "end": 1240.619, "text": "[music]"}]}, {"id": "qdAkxLoYNI8", "title": "How to Generate Mergeable Code with a Context Engine — Peter Werry, Unblocked", "channel": "AI Engineer", "duration": 1116, "upload_date": null, "url": "https://www.youtube.com/watch?v=qdAkxLoYNI8", "api": "/api/talks/qdAkxLoYNI8.json", "summary_url": "/#qdAkxLoYNI8", "transcript": {"html": "/transcripts/qdAkxLoYNI8.html", "txt": "/transcripts/qdAkxLoYNI8.txt", "vtt": "/transcripts/qdAkxLoYNI8.vtt"}, "sentences": [{"id": "s1", "start": 12.4, "end": 15.12, "text": "What we do at Unblocks is we build a context engine."}, {"id": "s2", "start": 15.12, "end": 18.64, "text": "I just want to do a quick sound check at the back to make sure everyone can hear me fine."}, {"id": "s3", "start": 18.64, "end": 20.08, "text": "Can you guys Yeah, we're good."}, {"id": "s4", "start": 20.08, "end": 21.279, "text": "Awesome."}, {"id": "s5", "start": 21.279, "end": 30.48, "text": "So at a high level, a context engine delivers organizational context to both your human workers and now increasingly your agents."}, {"id": "s6", "start": 30.48, "end": 30.8, "text": "Okay."}, {"id": "s7", "start": 30.8, "end": 33.12, "text": "So why why is that important?"}, {"id": "s8", "start": 33.12, "end": 41.92, "text": "Before we go too deep on the mechanics of how a context engine works, I just want to talk briefly about the problem."}, {"id": "s9", "start": 42.8, "end": 54.559, "text": "So, what we're going to do is we're going to hop into our time machines and we're going to travel back to the before times uh before agents and uh discuss a little bit about what we used to do as humans"}, {"id": "s10", "start": 54.559, "end": 58.079, "text": "uh before agents came into the picture."}, {"id": "s11", "start": 58.719, "end": 62.879, "text": "And so for years um you were the context layer."}, {"id": "s12", "start": 62.879, "end": 68.72, "text": "You um had to go and do things like this."}, {"id": "s13", "start": 68.72, "end": 76.479, "text": "you had to find things you were looking for, trolled all over different data sources, different discussions taking place."}, {"id": "s14", "start": 76.479, "end": 89.2, "text": "Um, and then through the codebase of course to try to build up tribal knowledge and, uh, throughout time as your code base progressed, um, you'd be, you know, fighting incidents and things like that."}, {"id": "s15", "start": 89.2, "end": 102.4, "text": "And your organization over time builds up battle scars um from all these all these different things building code uh documenting architecture and and dealing with outages and things like that."}, {"id": "s16", "start": 102.72, "end": 114.07900000000001, "text": "But now um we have a new problem because uh as we introduce agents to the picture um they suffer from all of these challenges except for one thing."}, {"id": "s17", "start": 114.07900000000001, "end": 116.96000000000001, "text": "Agents are like new employees."}, {"id": "s18", "start": 116.96000000000001, "end": 121.2, "text": "they reset their knowledge every time you start a new task."}, {"id": "s19", "start": 121.2, "end": 122.399, "text": "Okay?"}, {"id": "s20", "start": 122.399, "end": 131.039, "text": "And so you can think of an agent like an expert software engineer um who's a new employee on boarding for the first time."}, {"id": "s21", "start": 131.039, "end": 141.76, "text": "Every time they have to rediscover your code base, how your organization builds tests um and how they deploy software with each and every task."}, {"id": "s22", "start": 142.56, "end": 150.07999999999998, "text": "Uh can I just uh put a put a show of hands for everyone that's seen this slide before by Vim?"}, {"id": "s23", "start": 150.07999999999998, "end": 157.36, "text": "So this is kind of like u this is a good way to view where people are on what we call like the AI maturity curve."}, {"id": "s24", "start": 157.36, "end": 165.04, "text": "Um starting at the the far left uh this is kind of representative of autocomplete back in the GBT35 days."}, {"id": "s25", "start": 165.04, "end": 167.76, "text": "You know remember co-pilot and things like that."}, {"id": "s26", "start": 167.76, "end": 171.44, "text": "Um and then you know kind of move on to using cursor."}, {"id": "s27", "start": 171.44, "end": 176.72, "text": "Um and then from there you're you're think you're talking about how you can start to solve the context problem."}, {"id": "s28", "start": 176.72, "end": 180.239, "text": "So some people are building organizational wikis."}, {"id": "s29", "start": 180.239, "end": 185.92, "text": "Just smile if if this is kind of um bringing up memories for you."}, {"id": "s30", "start": 185.92, "end": 202.56, "text": "Um and then you know all these things are great except that uh how do you give agents access to this and what are the compounding problems that the scaling problems as you move forward well if you give MCP and skills to your agents"}, {"id": "s31", "start": 202.56, "end": 212.799, "text": "um to teach them how to navigate and build context and that's kind of where uh people are today most people they're at the sort of stage four to five"}, {"id": "s32", "start": 212.799, "end": 222.72, "text": "level okay and uh they understand that context is the bottleneck and they're trying to build solutions to solve it for their engineering teams."}, {"id": "s33", "start": 222.72, "end": 228.07999999999998, "text": "So looking ahead uh to all the way to eight with software factories."}, {"id": "s34", "start": 228.07999999999998, "end": 229.92000000000002, "text": "This is kind of where the puck is going."}, {"id": "s35", "start": 229.92000000000002, "end": 238.07999999999998, "text": "I'm not sure if if folks were at the keynote this morning, but um it's it's all about like delivery of context and unknown and unknowns."}, {"id": "s36", "start": 238.07999999999998, "end": 243.92, "text": "And this becomes increasingly important as people start thinking about full automation of agents."}, {"id": "s37", "start": 243.92, "end": 246.959, "text": "they just can't operate without organizational context."}, {"id": "s38", "start": 246.959, "end": 249.36, "text": "They get lost."}, {"id": "s39", "start": 251.12, "end": 253.92, "text": "So, you know, like that's the real problem."}, {"id": "s40", "start": 253.92, "end": 258.239, "text": "Access to information doesn't equal understanding."}, {"id": "s41", "start": 258.239, "end": 267.44, "text": "Um I I know that folks are probably familiar with claude.md um and and uh and wiki layouts and all these things."}, {"id": "s42", "start": 267.44, "end": 274.639, "text": "If you attach a wiki, it still doesn't tell the agent where the information is that it needs."}, {"id": "s43", "start": 274.639, "end": 284.56, "text": "It can search for things in the wiki, but then what happens is it'll suffer from something that uh radiologists uh call satisfaction of search."}, {"id": "s44", "start": 284.56, "end": 293.919, "text": "So, this is a term in radiology where you look at an X-ray and you're trying to find a region um that might be an indicator for cancer."}, {"id": "s45", "start": 293.919, "end": 294.8, "text": "Okay?"}, {"id": "s46", "start": 294.8, "end": 308.8, "text": "And you discover like one indicator and if you stop there uh you might miss other important indicators that might you know lead to diagnosis of even more uh issues."}, {"id": "s47", "start": 308.8, "end": 310.8, "text": "So this is what happens with agents."}, {"id": "s48", "start": 310.8, "end": 315.759, "text": "They don't they they find something that they they think is correct and then they stop."}, {"id": "s49", "start": 315.759, "end": 320.32, "text": "Um the the other thing about agents is that they don't distill understanding."}, {"id": "s50", "start": 320.32, "end": 330.479, "text": "They can look around, they can find information, but they they don't understand how all the pieces fit together because without doing that leg work ahead of time."}, {"id": "s51", "start": 330.479, "end": 340.88, "text": "Um, they don't understand how, you know, your dependencies interact with each other and how your architecture and sort of future planning is going to scope the work that it does next."}, {"id": "s52", "start": 340.88, "end": 349.44, "text": "And so some some people will then ask, well, what if we just take the entire codebase and all of our architecture documents and just slam it into the context window."}, {"id": "s53", "start": 349.44, "end": 354.0, "text": "Um, and then yes, maybe like your agents will reason about everything all at once."}, {"id": "s54", "start": 354.0, "end": 356.8, "text": "And in practice, that that of course doesn't work."}, {"id": "s55", "start": 356.8, "end": 365.28, "text": "Um, not just because you've got way more organizational context than can fit into a context window, even one that's a million tokens in size."}, {"id": "s56", "start": 365.28, "end": 369.039, "text": "Um, but it it it causes the agent to get distracted."}, {"id": "s57", "start": 369.039, "end": 373.44, "text": "When you're working on a task, you want task specific flow."}, {"id": "s58", "start": 373.44, "end": 379.919, "text": "Um, and so your agents will get distracted easily if you give them things that cause them to look this way in that way."}, {"id": "s59", "start": 379.919, "end": 383.12, "text": "Um, and it'll just waste tokens and time."}, {"id": "s60", "start": 383.12, "end": 388.639, "text": "So, in this morning's keynote, um, Tariq from Claude Code mentioned unknown unknowns."}, {"id": "s61", "start": 388.639, "end": 391.68, "text": "I just want to uh harp on that phrase again."}, {"id": "s62", "start": 391.68, "end": 397.199, "text": "And it can be phrased a different way, which is finding the things that really matter."}, {"id": "s63", "start": 397.199, "end": 401.039, "text": "And so this is what your agent can see at the top of the iceberg."}, {"id": "s64", "start": 401.039, "end": 404.479, "text": "They can see the code and they can operate on the code."}, {"id": "s65", "start": 404.479, "end": 419.12, "text": "What they don't see are things like the actual intent, the team conventions, past decisions, things that you've discussed in Slack, for example, uh architecture rationale, and so on."}, {"id": "s66", "start": 419.12, "end": 425.28, "text": "And that's why your agents need a context engine to get real work done."}, {"id": "s67", "start": 425.28, "end": 428.72, "text": "So, I'm going to now uh attempt a live demo."}, {"id": "s68", "start": 428.72, "end": 431.36, "text": "And hopefully the demo gods are kind."}, {"id": "s69", "start": 431.36, "end": 435.039, "text": "Um, so I want to pop back up conceptually."}, {"id": "s70", "start": 435.039, "end": 436.56, "text": "Oops, I think I'm on the wrong tab."}, {"id": "s71", "start": 436.56, "end": 439.919, "text": "We'll get to that one in a sec."}, {"id": "s72", "start": 440.56, "end": 444.96, "text": "So for now, sorry about that."}, {"id": "s73", "start": 444.96, "end": 448.319, "text": "And here we are."}, {"id": "s74", "start": 449.36, "end": 457.68, "text": "So I'm going to ask a question as if I'm a, you know, I'm a human and I want to get some information about my codebase."}, {"id": "s75", "start": 458.0, "end": 460.319, "text": "And, you know, the human layer hasn't gone away."}, {"id": "s76", "start": 460.319, "end": 470.24, "text": "We talk about agents and their need for context, but um humans are still asking questions about the codebase and we need that level of understanding because ultimately the accountability"}, {"id": "s77", "start": 470.24, "end": 471.599, "text": "stops with us."}, {"id": "s78", "start": 471.599, "end": 477.52, "text": "When you hit merge on a PR, you need to understand what it's doing um and you need to understand how the architecture works."}, {"id": "s79", "start": 477.52, "end": 488.8, "text": "So this question I asked here um is about an internal component of our system called the source mark engine and you can see that it uh is able to articulate it fairly well."}, {"id": "s80", "start": 488.8, "end": 491.12, "text": "um understands the architecture."}, {"id": "s81", "start": 491.12, "end": 494.72, "text": "This this diagram here is uh is generated."}, {"id": "s82", "start": 494.72, "end": 497.919, "text": "So it this diagram doesn't exist."}, {"id": "s83", "start": 497.919, "end": 507.52, "text": "Um it just figures it out based on the um the way the code operates today and then some proposals for future architecture."}, {"id": "s84", "start": 507.68, "end": 510.879, "text": "And then uh what's really important is that you show your work."}, {"id": "s85", "start": 510.879, "end": 525.8389999999999, "text": "This is a trust building thing more than anything, but it allows people to see if um if the answer is maybe not entirely correct, then you can in look into the uh the knowledge base that you have and make corrections."}, {"id": "s86", "start": 525.8389999999999, "end": 529.6, "text": "Increasingly agents are doing this for you."}, {"id": "s87", "start": 529.68, "end": 540.72, "text": "So now um what I want to show you is another place where humans spend their time which is in Slack and this is where a lot of the decisions get made of course."}, {"id": "s88", "start": 540.72, "end": 544.08, "text": "So I can do something like this."}, {"id": "s89", "start": 544.08, "end": 551.76, "text": "And uh unblocked will sit and kind of listen for things that are things that can chime in on when it provides a high degree of Oh, sorry."}, {"id": "s90", "start": 551.76, "end": 555.68, "text": "We went to the wrong You guys can't see that."}, {"id": "s91", "start": 555.68, "end": 558.16, "text": "Thank you, Claire."}, {"id": "s92", "start": 558.56, "end": 560.08, "text": "Oh, come on down."}, {"id": "s93", "start": 560.08, "end": 562.56, "text": "Let's see if I can bring it up."}, {"id": "s94", "start": 562.56, "end": 564.959, "text": "There we go."}, {"id": "s95", "start": 564.959, "end": 566.08, "text": "Perfect."}, {"id": "s96", "start": 566.08, "end": 571.76, "text": "So I can ask questions like this in unblocked and if it thinks it can chime in on the answer then it will chime in."}, {"id": "s97", "start": 571.76, "end": 586.0, "text": "Otherwise I can just um address unblocked directly and ask the same question and when it thinks that it has an answer to give then it will give an answer"}, {"id": "s98", "start": 586.0, "end": 591.76, "text": "and so we can get um quite a bit of interesting content there from unblocked."}, {"id": "s99", "start": 591.76, "end": 592.16, "text": "Thank you."}, {"id": "s100", "start": 592.16, "end": 594.16, "text": "Unblocked."}, {"id": "s101", "start": 595.36, "end": 601.44, "text": "I'm going to switch up and show you the the really interesting thing which is the agents."}, {"id": "s102", "start": 601.44, "end": 601.839, "text": "Okay."}, {"id": "s103", "start": 601.839, "end": 610.24, "text": "So, um in in that question, the source mark engine, I'm not sure if people picked up, but there was a little thing at the bottom there that said, you know, there's some optimization"}, {"id": "s104", "start": 610.24, "end": 611.6, "text": "opportunities."}, {"id": "s105", "start": 611.6, "end": 625.68, "text": "Um so what I did here is I went into claw code and I asked it um without using unblocked to um uh generate uh a plan to optimize the source mark calculator and it did that"}, {"id": "s106", "start": 625.68, "end": 631.6, "text": "and it happily went and you know searched through the code and and tried to figure out how the algorithm works and so on."}, {"id": "s107", "start": 631.6, "end": 639.92, "text": "Um and it it reached a conclusion that's great you know it does a pretty good job um but you know it maybe could do a little bit better."}, {"id": "s108", "start": 639.92, "end": 654.48, "text": "So, I asked that question again uh using unblock this time and it it really kind of nails the the nuances because it picks up on the the uh PRs that we um where we discussed"}, {"id": "s109", "start": 654.48, "end": 657.04, "text": "future possibilities for improvement."}, {"id": "s110", "start": 657.04, "end": 677.519, "text": "um some Slack conversations that we had and uh of course you know notion and architecture documents and it shows its work and this is really important because um all of these things here the sources come back to Claude and then Claude knows exactly where to jump to next if it needs to elaborate on that context."}, {"id": "s111", "start": 677.519, "end": 680.64, "text": "And so I just want to show you what the impact of that is."}, {"id": "s112", "start": 680.64, "end": 684.48, "text": "So if I um Whoops."}, {"id": "s113", "start": 684.48, "end": 685.279, "text": "Thank you."}, {"id": "s114", "start": 685.279, "end": 692.9590000000001, "text": "If I pull up usage here, you can see that with unblocked, uh, the total cost was, you know, subd dollar to create the plan."}, {"id": "s115", "start": 692.9590000000001, "end": 694.32, "text": "Uh, took about a minute."}, {"id": "s116", "start": 694.32, "end": 697.279, "text": "Ignore the wall clock time because I've had this open for about an hour."}, {"id": "s117", "start": 697.279, "end": 699.8389999999999, "text": "But, um, it's about a minute."}, {"id": "s118", "start": 699.8389999999999, "end": 707.12, "text": "And then if I look at um the usage without unblocked, you can see that it's about 2 minutes."}, {"id": "s119", "start": 707.12, "end": 710.399, "text": "And and and it costs more to generate all that context."}, {"id": "s120", "start": 710.399, "end": 713.2, "text": "Now, the reason that happens is because it has to do more work."}, {"id": "s121", "start": 713.2, "end": 714.32, "text": "It has to look around."}, {"id": "s122", "start": 714.32, "end": 715.92, "text": "has to discover things."}, {"id": "s123", "start": 715.92, "end": 722.8, "text": "Um, and this compounds, not only does it have to do more work to discover things, it doesn't discover the right things."}, {"id": "s124", "start": 722.8, "end": 729.2, "text": "So, when you get further down in your execution, it may be operating on the wrong plan or the wrong assumptions."}, {"id": "s125", "start": 729.2, "end": 732.639, "text": "And then you have to go back and you have to loop over and over again."}, {"id": "s126", "start": 732.639, "end": 737.8389999999999, "text": "So, the real value of a context engine is not like the upfront cost on these short tasks."}, {"id": "s127", "start": 737.8389999999999, "end": 739.92, "text": "It's the compounding effect."}, {"id": "s128", "start": 739.92, "end": 752.32, "text": "Um the the other Tariq from Sonar mentioned this in the keynote this morning and it's true like the loops compound and you have to be like um uh efficient the entire way through with your context."}, {"id": "s129", "start": 752.32, "end": 759.92, "text": "I'm just going to jump back to Safari and I'm going to point out um some really interesting things."}, {"id": "s130", "start": 759.92, "end": 764.639, "text": "So we also have a a code review agent."}, {"id": "s131", "start": 764.639, "end": 773.04, "text": "And when we say um you know organizational context, we're talking about more than just the underlying data."}, {"id": "s132", "start": 773.04, "end": 775.8389999999999, "text": "Uh we're talking about real intelligence."}, {"id": "s133", "start": 775.8389999999999, "end": 787.04, "text": "So what unblock does is it looks at um not like it looks at pull request data and there are other data sources for this and it generates a series of best practices"}, {"id": "s134", "start": 787.04, "end": 789.68, "text": "that help align agents to your codebase."}, {"id": "s135", "start": 789.68, "end": 794.24, "text": "But we thought that this would be really helpful to surface for the review agent as well."}, {"id": "s136", "start": 794.24, "end": 802.24, "text": "So what you can see here is um it unblock chimed in and then Richie here said, \"Oh, that's cool."}, {"id": "s137", "start": 802.24, "end": 803.279, "text": "That's something I would say.\""}, {"id": "s138", "start": 803.279, "end": 806.32, "text": "And that's because that actually was something he said."}, {"id": "s139", "start": 806.32, "end": 809.04, "text": "So it surfaced the uh the previous comments."}, {"id": "s140", "start": 809.04, "end": 820.32, "text": "Richie's one of the senior engineers and we use the sort of seniority or expertise as a signal um to boost uh comments that are important."}, {"id": "s141", "start": 820.32, "end": 822.079, "text": "Okay."}, {"id": "s142", "start": 822.079, "end": 836.8, "text": "So another uh interesting interaction by Richie, he uh discovered that the number of code review issues that were being surfaced dropped uh precipitously and he was debugging it with unblocked."}, {"id": "s143", "start": 836.8, "end": 842.88, "text": "Um he got all the way to the bottom and realized what roughly what the problem was and then asked unblocked to fix it."}, {"id": "s144", "start": 842.88, "end": 848.56, "text": "Now this this is something that we have internally um you know that we're experimenting with."}, {"id": "s145", "start": 848.56, "end": 853.12, "text": "Um, so unblocked uh can run as an agent in the cloud."}, {"id": "s146", "start": 853.12, "end": 863.04, "text": "Um, but what's really cool about this is that it has all your organizational context at its fingertips and the results are are pretty magical."}, {"id": "s147", "start": 863.04, "end": 875.199, "text": "So it can do things like generate this PR um, and then what you'll see here is that not only does it generate the fix, it also is able to relate it to the all the conversations that were happening."}, {"id": "s148", "start": 875.199, "end": 878.639, "text": "So this PR was created because and you read that context thing."}, {"id": "s149", "start": 878.639, "end": 879.92, "text": "It's mind-blowing."}, {"id": "s150", "start": 879.92, "end": 889.279, "text": "After this PR, we switched to uh Claude 48 and it dropped a ton in issues because of the behavior is quite a bit different."}, {"id": "s151", "start": 889.279, "end": 892.32, "text": "So then it said Richie directly correlated the drop."}, {"id": "s152", "start": 892.32, "end": 893.279, "text": "Now what's this thing here?"}, {"id": "s153", "start": 893.279, "end": 894.399, "text": "Let's click on it."}, {"id": "s154", "start": 894.399, "end": 896.32, "text": "It is a Slack conversation."}, {"id": "s155", "start": 896.32, "end": 906.48, "text": "So, it found the Slack conversation, correlated all of that, you know, past history back again, and then we ended up with a with a final PR."}, {"id": "s156", "start": 908.56, "end": 911.36, "text": "So, um, I'm going to I've got only a few minutes left."}, {"id": "s157", "start": 911.36, "end": 913.279, "text": "I'm just going to close this out really quickly."}, {"id": "s158", "start": 913.279, "end": 918.56, "text": "We have a uh a couple of open- source projects that are kind of interesting if people want to play with them."}, {"id": "s159", "start": 918.56, "end": 920.32, "text": "One is the document query engine."}, {"id": "s160", "start": 920.32, "end": 924.48, "text": "That was, uh, something that I talked about on Monday in my workshop."}, {"id": "s161", "start": 924.48, "end": 930.16, "text": "Um, I may uh talk about it again tomorrow, but I just want to give folks a sense of what this thing does."}, {"id": "s162", "start": 930.16, "end": 932.56, "text": "Um, whoops."}, {"id": "s163", "start": 932.639, "end": 937.44, "text": "If you want to play with it, it's open source, so you can just download it and have it go."}, {"id": "s164", "start": 937.44, "end": 950.639, "text": "It basically runs over your um uh GitHub repository, ingests uh your your historical pull requests, and then uh synthesizes a schema based on the documents that it can sample."}, {"id": "s165", "start": 950.639, "end": 957.92, "text": "Um and then from there you can issue any kind of queries that you like and get all kinds of insights out of it through the agent chat."}, {"id": "s166", "start": 957.92, "end": 960.639, "text": "You can ask all kinds of questions."}, {"id": "s167", "start": 960.639, "end": 963.68, "text": "Um and then lastly the engineering social graph."}, {"id": "s168", "start": 963.68, "end": 971.12, "text": "So this is the thing that I was talking about earlier that helps us pin down expertise and team relationships."}, {"id": "s169", "start": 971.12, "end": 977.199, "text": "Um so what you can see here is this sort of like the rough breakdown of our team structure at Unblocked."}, {"id": "s170", "start": 977.199, "end": 979.6, "text": "As you can see we're a fairly small team."}, {"id": "s171", "start": 979.6, "end": 990.639, "text": "Um and so we've got these um uh these clusters of people and how they relate to each other indicates the kind of um review relationships that they have."}, {"id": "s172", "start": 990.639, "end": 995.04, "text": "So these are you know these lines show like we review each other's code."}, {"id": "s173", "start": 995.04, "end": 1004.079, "text": "Um we can then cluster that and generate team labels for that or show the coverage across your codebase."}, {"id": "s174", "start": 1004.079, "end": 1004.8, "text": "This is really cool."}, {"id": "s175", "start": 1004.8, "end": 1009.36, "text": "you can see kind of where the holes are, where you might be lacking expert coverage."}, {"id": "s176", "start": 1009.36, "end": 1014.8, "text": "Um, and that's exactly what we use within the context engine itself."}, {"id": "s177", "start": 1014.88, "end": 1029.039, "text": "All right, one last thing we have uh for those that want a taste of what a context engine can do but don't want to sign up for unblocked right away."}, {"id": "s178", "start": 1029.039, "end": 1042.559, "text": "Um you can use uh something that we call the context engine simulator which will basically build up a context behind the scenes on a per task basis and then use that context"}, {"id": "s179", "start": 1042.559, "end": 1044.4, "text": "uh to to drive the task."}, {"id": "s180", "start": 1044.4, "end": 1050.799, "text": "It'll do it with context and without context so that you can see what the differences might be."}, {"id": "s181", "start": 1050.799, "end": 1056.32, "text": "This is a QR code for that if you want to just take a quick snap."}, {"id": "s182", "start": 1058.24, "end": 1058.88, "text": "Awesome."}, {"id": "s183", "start": 1058.88, "end": 1065.2, "text": "And I'll just land on a quote from one of our customers."}, {"id": "s184", "start": 1065.2, "end": 1070.24, "text": "50% fewer tokens, faster triage, better answers."}, {"id": "s185", "start": 1070.24, "end": 1074.16, "text": "And that's exactly what a context engine can do."}, {"id": "s186", "start": 1074.48, "end": 1077.2, "text": "One last shout out um before we end."}, {"id": "s187", "start": 1077.2, "end": 1084.48, "text": "My colleague Brandon is giving a talk in 10 minutes uh at room 2020."}, {"id": "s188", "start": 1084.48, "end": 1090.08, "text": "um he's going to speak to in a lot more detail about some of the higher level things that context engines can do."}, {"id": "s189", "start": 1090.08, "end": 1094.4, "text": "I'm going to run over there right after this and I think all of you should follow me."}, {"id": "s190", "start": 1094.4, "end": 1095.28, "text": "Awesome."}, {"id": "s191", "start": 1095.28, "end": 1098.559, "text": "Oh, and don't forget to get a coconut."}, {"id": "s192", "start": 1113.512, "end": 1115.512, "text": "[music]"}]}, {"id": "qqrk7CtkuIw", "title": "How Anthropic Builds: Lessons from Labs — Mike Krieger, Anthropic", "channel": "AI Engineer", "duration": 1571, "upload_date": null, "url": "https://www.youtube.com/watch?v=qqrk7CtkuIw", "api": "/api/talks/qqrk7CtkuIw.json", "summary_url": "/#qqrk7CtkuIw", "transcript": {"html": "/transcripts/qqrk7CtkuIw.html", "txt": "/transcripts/qqrk7CtkuIw.txt", "vtt": "/transcripts/qqrk7CtkuIw.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.72, "end": 15.72, "text": "Joining us on stage is the co-founder of Instagram"}, {"id": "s3", "start": 15.72, "end": 16.28, "text": "[music]"}, {"id": "s4", "start": 16.28, "end": 19.76, "text": "and a member of technical staff at Anthropic."}, {"id": "s5", "start": 19.76, "end": 22.12, "text": "Mike Krieger."}, {"id": "s6", "start": 36.36, "end": 37.36, "text": "How's everybody doing?"}, {"id": "s7", "start": 37.36, "end": 39.16, "text": "I mean, good morning."}, {"id": "s8", "start": 39.16, "end": 40.52, "text": "Nice."}, {"id": "s9", "start": 40.52, "end": 41.64, "text": "Um"}, {"id": "s10", "start": 41.64, "end": 44.52, "text": "Mike, thank you for releasing Fable just in time for us."}, {"id": "s11", "start": 44.52, "end": 45.64, "text": "Exactly for the conference."}, {"id": "s12", "start": 45.64, "end": 46.505, "text": "We timed it."}, {"id": "s13", "start": 46.505, "end": 47.28, "text": "[laughter]"}, {"id": "s14", "start": 47.28, "end": 49.76, "text": "Um we're we're so glad to have you."}, {"id": "s15", "start": 49.76, "end": 55.6, "text": "Uh you're uh one of the preeminent builders and you're a leading labs at Anthropic."}, {"id": "s16", "start": 55.6, "end": 62.28, "text": "Um how has your model usage changed as as you've, you know, seen models internally grow?"}, {"id": "s17", "start": 62.28, "end": 65.8, "text": "Yeah, I mean, for me it's been like both the model shift and then my role shift."}, {"id": "s18", "start": 65.8, "end": 69.12, "text": "So, I for like the first 2 years I was at Anthropic, I was chief product officer."}, {"id": "s19", "start": 69.12, "end": 76.72, "text": "And then I kept seeing people build with the models and the FOMO just kept increasing because I was you know, use the models as much as possible."}, {"id": "s20", "start": 76.72, "end": 86.48, "text": "But for example, on product strategy I would write a strategy doc and then have Claude critique it and maybe you can use a workflow, but it's not quite the same as like building in that pure way."}, {"id": "s21", "start": 86.48, "end": 90.92, "text": "And I was like spending all my weekends trying to build with it and I realized, \"Okay, I actually just need to shift."}, {"id": "s22", "start": 90.92, "end": 92.2, "text": "It's like way too interesting a time.\""}, {"id": "s23", "start": 92.2, "end": 101.0, "text": "And it's actually an interesting trend I've seen now like several people that were CTOs at other places are like now joining as ICs at Anthropic and other places."}, {"id": "s24", "start": 101.0, "end": 109.4, "text": "But I made a role shift and it was actually right around the time where we started getting sort of internal snapshots of what became Mythos and Fable."}, {"id": "s25", "start": 109.4, "end": 122.2, "text": "And what was really interesting watching that sort of shift was um that kind of change between I have an idea, I'm going to like sort of break it down in my head much more how I would do engineering normally,"}, {"id": "s26", "start": 122.2, "end": 133.72, "text": "and then kind of iterate through these different steps to moving to much more of the paradigm of I'm going to describe the goal, like go off and work on it, and then like we can talk about what trade-offs you you know, surface some questions along the way, but then"}, {"id": "s27", "start": 133.72, "end": 136.52, "text": "figure out what where you landed and where we can go from there."}, {"id": "s28", "start": 136.52, "end": 137.16, "text": "I find it's hard."}, {"id": "s29", "start": 137.16, "end": 141.8, "text": "I don't know if people have this experience where people people's only been re-enabled for a couple of days."}, {"id": "s30", "start": 141.8, "end": 143.68, "text": "People's definitely way way smarter than me."}, {"id": "s31", "start": 143.68, "end": 146.28, "text": "So, sometimes it'll finish work and be like, here's the trade-offs I made."}, {"id": "s32", "start": 146.28, "end": 152.44, "text": "I'm like, can you explain it to me like I'm a little dumber than you are because I need you to like sort of break this down for me."}, {"id": "s33", "start": 152.44, "end": 160.24, "text": "But, that's been one sort of big change is sort of moving from that task delegation to like express the end state and then have it go and and cook on it."}, {"id": "s34", "start": 160.24, "end": 163.56, "text": "Yeah, we're all learning how to delegate better."}, {"id": "s35", "start": 163.56, "end": 166.36, "text": "Tariq did us a huge favor yesterday."}, {"id": "s36", "start": 166.36, "end": 170.24, "text": "We Did you want to read it in the newspaper?"}, {"id": "s37", "start": 170.24, "end": 174.84, "text": "You know, that we have we have write-ups of talks now in in like the next day's newspaper."}, {"id": "s38", "start": 174.84, "end": 177.07999999999998, "text": "He said, be unreasonable."}, {"id": "s39", "start": 177.07999999999998, "end": 179.88, "text": "In what ways you know, you know, have you been more ambitious?"}, {"id": "s40", "start": 179.88, "end": 180.92, "text": "Yeah, you're prompting."}, {"id": "s41", "start": 180.92, "end": 183.2, "text": "I love that I I mean, I love that framing."}, {"id": "s42", "start": 183.2, "end": 184.84, "text": "We actually just hit this today."}, {"id": "s43", "start": 184.84, "end": 194.32, "text": "I'm one of the labs initiatives I have is internal product, and somebody was like, hey, it doesn't work the way I want it to, and can you make some changes?"}, {"id": "s44", "start": 194.32, "end": 197.48, "text": "And I realized, oh, I'm just going to go ask Claude to do this."}, {"id": "s45", "start": 197.48, "end": 198.72, "text": "Like, why don't you ask Claude?"}, {"id": "s46", "start": 198.72, "end": 200.48, "text": "And this was a non-technical person."}, {"id": "s47", "start": 200.48, "end": 208.68, "text": "So, I actually think as an industry or even as a product team, we have to teach people to be more unreasonable in their usage, and it's sort of hard to imagine."}, {"id": "s48", "start": 208.68, "end": 217.959, "text": "I think that that if I can digress for a second on product design, I think right now the like kind of first generation of AI products, we put them too much in a box and constrain their"}, {"id": "s49", "start": 217.959, "end": 223.36, "text": "their sort of access to tools or kind of degrees of freedom, which means it was much harder to be unreasonable, right?"}, {"id": "s50", "start": 223.36, "end": 227.36, "text": "When you say, do this thing for me, and then it would be like, well, I can't."}, {"id": "s51", "start": 227.36, "end": 233.68, "text": "I can barely like I can write code, but I can't really run it, or I can kind of introspect my environment, but not really."}, {"id": "s52", "start": 233.68, "end": 242.92, "text": "Um and I think as you see our own like product progression even with things like co-work where like, you know, does every single like knowledge worker need a virtual machine that can write bash?"}, {"id": "s53", "start": 242.92, "end": 250.48, "text": "Like, on the face of it, no, but then when you realize, oh, actually, that way it can remediate an issue where, oh, I tried to parse a PDF using our built-in PDF parser."}, {"id": "s54", "start": 250.48, "end": 253.32, "text": "I hit this yesterday and it was like, ah, I can't parse it this way."}, {"id": "s55", "start": 253.32, "end": 256.519, "text": "Well, okay, well, I can probably write a script that can do this as well."}, {"id": "s56", "start": 256.519, "end": 257.88, "text": "Um so, I think that's it."}, {"id": "s57", "start": 257.88, "end": 263.16, "text": "My most unreasonable thing though was uh one of our labs projects I wrote in Python like near and dear to my heart."}, {"id": "s58", "start": 263.16, "end": 264.72, "text": "All of Instagram was in Python."}, {"id": "s59", "start": 264.72, "end": 269.8, "text": "But I think they're finally converting it to PHP now that they have um like models that can do it."}, {"id": "s60", "start": 269.8, "end": 270.51800000000003, "text": "I know."}, {"id": "s61", "start": 270.51800000000003, "end": 271.72, "text": "[laughter]"}, {"id": "s62", "start": 271.72, "end": 272.52, "text": "Tokens."}, {"id": "s63", "start": 272.52, "end": 278.12, "text": "Um and uh for deployment I realized that Cloud Code had like figured out a better deployment story with Bun."}, {"id": "s64", "start": 278.12, "end": 281.12, "text": "And I was like, okay, I need to port this whole thing from Python to TypeScript."}, {"id": "s65", "start": 281.12, "end": 286.4, "text": "Like, as a, you know, if I put on my like 2010s engineering hat or even my early 20 20s, like, that's a dumb idea."}, {"id": "s66", "start": 286.4, "end": 290.8, "text": "Like, who would ever port like, at that point, you know, a couple hundred thousands of lines of code."}, {"id": "s67", "start": 290.8, "end": 306.52, "text": "Um but I was like, I think this is doable now and I basically created this dynamic workflow setup and over the weekend had it port the whole thing, like, verify it, double-check it, then read both code like this basically churn and churn and churn and then came back Monday to a completed workflow that was a ported version"}, {"id": "s68", "start": 306.52, "end": 306.96, "text": "of that thing."}, {"id": "s69", "start": 306.96, "end": 309.52, "text": "So, that probably ranks on like the more unreasonable things."}, {"id": "s70", "start": 309.52, "end": 316.28, "text": "Like, yeah, just port this entire Python code base to TypeScript, get it working, get it deployable in, you know, a weekend."}, {"id": "s71", "start": 316.28, "end": 321.0, "text": "Yeah, I mean, a lot of people are talking about the the Bun Zig to Rust version."}, {"id": "s72", "start": 321.0, "end": 327.12, "text": "I think a lot of people are also like, well, it's a compiler, it's a it's a runtime, it's got lots of tests, easy to do."}, {"id": "s73", "start": 327.12, "end": 332.64, "text": "Can you port Instagram, which you would know very well, to PHP like that?"}, {"id": "s74", "start": 332.64, "end": 333.76, "text": "Like a like a product."}, {"id": "s75", "start": 333.76, "end": 337.44, "text": "Yeah, I mean, I think the product side of it it's even I don't know if it's easier or harder."}, {"id": "s76", "start": 337.44, "end": 346.56, "text": "One of the things we did at Instagram, this is when Python 3 came out and we were able to add type hints for the first time and it was people had a lot of internal conversations like, are we going to run out of steam on Python?"}, {"id": "s77", "start": 346.56, "end": 354.28, "text": "And my perspective was always like, I think we can take this way further than we think we can, uh, but I think types are going to help us not sort of be in our own way."}, {"id": "s78", "start": 354.28, "end": 364.76, "text": "And we built this thing called Monkey Type where we basically like captured runtime type like basically the types that were actually getting used in production and then map those back to to the types in the code base."}, {"id": "s79", "start": 364.76, "end": 377.4, "text": "And I think because of that sort of pattern, I think there's really interesting ways in which if you're doing sort of conversion or sort of cross compiling using LLMs, you can also lean on production data a lot more or run sort of like segmented tests."}, {"id": "s80", "start": 377.4, "end": 380.04, "text": "I think that like there's a lot of, uh, things you can do there."}, {"id": "s81", "start": 380.04, "end": 382.68, "text": "But yeah, I think it's, I mean, the sky's the limit there as well."}, {"id": "s82", "start": 382.68, "end": 389.24, "text": "I think the hardest part is always finding the boundary around where you can start doing it incrementally without trying to boil the whole ocean and like swap it overnight."}, {"id": "s83", "start": 389.24, "end": 398.919, "text": "Yeah, I mean, your users are your test ultimately and, um, you know, I we I also read another article in the newspaper about how you could just use rollouts and sometimes you don't really know,"}, {"id": "s84", "start": 398.919, "end": 405.56, "text": "uh, what you're going to need it for, but when that infrastructure exists for your experiments and to roll things out, it's enabled so much."}, {"id": "s85", "start": 405.56, "end": 407.36, "text": "Yeah, I mean, I always found this was advice we got."}, {"id": "s86", "start": 407.36, "end": 413.84000000000003, "text": "It's like we launched Instagram and the happened to be the first week everything melted cuz we didn't really know what we were doing on the back end side of things."}, {"id": "s87", "start": 413.84000000000003, "end": 419.48, "text": "And, uh, coincidentally that week there was like a lunch that one of our investors just scheduled like not even for us."}, {"id": "s88", "start": 419.48, "end": 421.64, "text": "It was just a infrastructure lunch."}, {"id": "s89", "start": 421.64, "end": 427.8, "text": "And we ended up spending we totally like monopolized that conversation cuz everybody had their own opinion about how we could fix our scaling."}, {"id": "s90", "start": 427.8, "end": 443.32, "text": "Um, and like the two pieces of advice I got there is like 2010 that I like will forever retain is like, um, like basically like pre-measure everything that you think you might even remotely need because the worst thing is an outage where you're like, well, is this like number normal or is it high?"}, {"id": "s91", "start": 443.32, "end": 446.48, "text": "And like, oh, I don't know because I don't have data until I just added this metric."}, {"id": "s92", "start": 446.48, "end": 449.32, "text": "And the other one is being like really thoughtful about knobs and feature flags."}, {"id": "s93", "start": 449.32, "end": 456.15999999999997, "text": "So even, you know, early Instagram we had like a very, uh, simple but really effective like way in which you could do like ramp outs and rollouts."}, {"id": "s94", "start": 456.15999999999997, "end": 466.28, "text": "And dynamic config too where, you know, a lot of our runtime configurations had to be changed, you know, in a matter of seconds so that we could handle load and being able to like do that in a first class way was was really important."}, {"id": "s95", "start": 466.28, "end": 472.4, "text": "I'm seeing that definitely in in AI as well where, you know, we're making all sorts of different trade-offs and having that kind of runtime configuration is super key."}, {"id": "s96", "start": 472.4, "end": 473.24, "text": "Yeah."}, {"id": "s97", "start": 473.24, "end": 478.92, "text": "Uh my my favorite scaling story of Instagram by the way, I think it's like your launch day when you you DDoS yourself with the email."}, {"id": "s98", "start": 478.92, "end": 480.24, "text": "Yes."}, {"id": "s99", "start": 480.24, "end": 483.0, "text": "Which I people should look up that story if uh if you haven't seen it."}, {"id": "s100", "start": 483.0, "end": 484.96, "text": "Um I wanted to go into tags."}, {"id": "s101", "start": 484.96, "end": 486.8, "text": "Uh very very major shift."}, {"id": "s102", "start": 486.8, "end": 489.76, "text": "Uh it's it's how 60 something percent of your code is written today."}, {"id": "s103", "start": 489.76, "end": 490.4, "text": "Yeah."}, {"id": "s104", "start": 490.4, "end": 495.44, "text": "Um how do you square that with everything you just said where it's like very dynamic?"}, {"id": "s105", "start": 495.44, "end": 498.72, "text": "Like you don't actually ship one app, you ship one app with 3,000 flags."}, {"id": "s106", "start": 498.72, "end": 499.04, "text": "Yeah."}, {"id": "s107", "start": 499.04, "end": 500.36, "text": "And like, well, what are you working on today?"}, {"id": "s108", "start": 500.36, "end": 500.72, "text": "I don't know."}, {"id": "s109", "start": 500.72, "end": 503.04, "text": "Like it's it's for this segment of the population."}, {"id": "s110", "start": 503.04, "end": 503.88, "text": "Yeah."}, {"id": "s111", "start": 503.88, "end": 505.16, "text": "Yeah, I mean, I think there's a bunch of things."}, {"id": "s112", "start": 505.16, "end": 507.24, "text": "So, like with I was really excited."}, {"id": "s113", "start": 507.24, "end": 516.08, "text": "I was talking to Swix earlier like, I'm really excited that we have tag out there because it is uh how we've been working for a while and I would get up on stages and people like, \"How do you work at Anthropic?\""}, {"id": "s114", "start": 516.08, "end": 526.72, "text": "And I'd be like, \"Oh, yeah, we use these things like that are not quite Claude code, but you know, uh but it's hard to describe it, but I mean, if you like got to poke into Anthropic, like you would see"}, {"id": "s115", "start": 526.72, "end": 540.28, "text": "uh of course Claude code usage for things that are like more interactive or if you're kind of iterating on a particular uh sort of sort of specific thing where you want a lot of like a high sort of bandwidth back and forth, but most usage is actually much more delegating"}, {"id": "s116", "start": 540.28, "end": 542.0, "text": "uh via tagging and via tag."}, {"id": "s117", "start": 542.0, "end": 546.04, "text": "And you can say like, \"Here's the And the reason it's really interesting is how multiplayer it is.\""}, {"id": "s118", "start": 546.04, "end": 553.16, "text": "And it reminds me sort of of like um actually like Midjourney, like the fact that everyone was on Discord seeing how other people were using it."}, {"id": "s119", "start": 553.16, "end": 563.48, "text": "I think it actually to your earlier question really helps with that unreasonableness or ambition where the first time you see somebody tag Claude and be like, \"Hey, you know, don't just fix this bug, but like now you are responsible"}, {"id": "s120", "start": 563.48, "end": 572.92, "text": "for this part of the code base and I want you to monitor this feedback channel and proactively take on tasks and then fix them and then also take like, you know, if this API changes, do that.\""}, {"id": "s121", "start": 572.92, "end": 574.08, "text": "Like I saw somebody do that."}, {"id": "s122", "start": 574.08, "end": 576.76, "text": "I was like, \"Oh, wait, I've I've totally underutilizing this thing."}, {"id": "s123", "start": 576.76, "end": 579.44, "text": "I've just been using it as like a glorified Claude code and slack."}, {"id": "s124", "start": 579.44, "end": 583.92, "text": "Like that's definitely a totally like sort of new version of it, right?"}, {"id": "s125", "start": 583.92, "end": 590.84, "text": "And then more advanced version is really trying to start thinking of it as a teammate that is actually sort of holds context, has memory, and can be proactive."}, {"id": "s126", "start": 590.84, "end": 593.84, "text": "And that's just really changed how we operate internally."}, {"id": "s127", "start": 593.84, "end": 601.56, "text": "It's much more like this multiplayer async proactive way than it is a you know, most people often their own CLIs."}, {"id": "s128", "start": 601.56, "end": 604.08, "text": "Are you bottlenecked by code review and get?"}, {"id": "s129", "start": 604.08, "end": 608.28, "text": "Obviously, there is code review, but someone usually still looks at it."}, {"id": "s130", "start": 608.28, "end": 611.04, "text": "Is there a world in which you just merge it in?"}, {"id": "s131", "start": 611.04, "end": 613.36, "text": "Yeah, we're it's a really good question."}, {"id": "s132", "start": 613.36, "end": 619.44, "text": "We are definitely still bottlenecked on reviews, especially for things that are like touching some architecture pieces."}, {"id": "s133", "start": 619.44, "end": 624.44, "text": "And it's actually more subtle than just being bottlenecked on review, cuz that's you know, okay, we can carve out time differently."}, {"id": "s134", "start": 624.44, "end": 630.36, "text": "It's like bottlenecked on human ability to even like fully conceptualize what we're doing."}, {"id": "s135", "start": 630.36, "end": 639.64, "text": "So, one of the reasons we built Claude code artifacts that we shipped a couple weeks ago was partially for that, which is you would send somebody a PR, and then they'd be like, I don't know, man."}, {"id": "s136", "start": 639.64, "end": 641.28, "text": "This is like 2,000 lines of code."}, {"id": "s137", "start": 641.28, "end": 643.6, "text": "Like, it looks like code to me."}, {"id": "s138", "start": 643.6, "end": 647.6, "text": "And what we started doing instead is sharing much more like, here's a Claude code artifact."}, {"id": "s139", "start": 647.6, "end": 649.2, "text": "Like, here's the explanation."}, {"id": "s140", "start": 649.2, "end": 651.32, "text": "Here's the intention of the the change."}, {"id": "s141", "start": 651.32, "end": 652.72, "text": "Here's the trade-offs that were made."}, {"id": "s142", "start": 652.72, "end": 662.48, "text": "And like, I think that's going to be much more be the trend by which we communicate, which is the code is ultimately, you know, verifiable using some things, but actually like discussing"}, {"id": "s143", "start": 662.48, "end": 668.16, "text": "intent and trade-offs, and then measuring in production I think that at least the direction of travel we've we've gone."}, {"id": "s144", "start": 668.16, "end": 672.08, "text": "And I don't review when I get a pull request, I wish I could say I reviewed every line of code."}, {"id": "s145", "start": 672.08, "end": 672.88, "text": "I definitely do not."}, {"id": "s146", "start": 672.88, "end": 677.32, "text": "I like actually talk to Claude about the the code and say, all right, like, these are the questions that I would have."}, {"id": "s147", "start": 677.32, "end": 678.36, "text": "Can you go investigate it?"}, {"id": "s148", "start": 678.36, "end": 681.56, "text": "So, it is kind of Claude-powered code review, but still human-driven."}, {"id": "s149", "start": 681.56, "end": 683.0, "text": "And and for the really important ones."}, {"id": "s150", "start": 683.0, "end": 690.12, "text": "And for the ones that are like cosmetic visual changes, it's much more like look like we'll fix forward if we need to fix forward, you know."}, {"id": "s151", "start": 690.12, "end": 690.96, "text": "Yeah, totally."}, {"id": "s152", "start": 690.96, "end": 694.0, "text": "I think a lot of people are here are trying to figure that out, too."}, {"id": "s153", "start": 694.0, "end": 698.4, "text": "I wanted to talk also a little bit about Anthropic Labs in general."}, {"id": "s154", "start": 698.4, "end": 704.52, "text": "Nilay Patel, who you've probably met before, loves to ask ask the question like draw the org chart."}, {"id": "s155", "start": 704.52, "end": 707.64, "text": "Like how like people, you know, you ship your org chart."}, {"id": "s156", "start": 707.64, "end": 710.32, "text": "Like I think it's important like everyone knows cloud code."}, {"id": "s157", "start": 710.32, "end": 712.32, "text": "Now you've got tags."}, {"id": "s158", "start": 712.32, "end": 714.48, "text": "Um How are you structuring the labs?"}, {"id": "s159", "start": 714.48, "end": 715.72, "text": "Yeah, it's a good question."}, {"id": "s160", "start": 715.72, "end": 725.24, "text": "Because what we were trying to wrestle with was you want sort of people to be supported like, you know, I think the death of the engineering manager discipline has been greatly exaggerated."}, {"id": "s161", "start": 725.24, "end": 731.56, "text": "Like I think there's still a lot of coaching and interpersonal pieces and personal development that I think is still really, really important."}, {"id": "s162", "start": 731.56, "end": 740.56, "text": "But especially in a labs type group where like our whole cadence is two-week reviews where every project goes up for we call it persevere or pivot."}, {"id": "s163", "start": 740.56, "end": 748.04, "text": "So basically every project is up for review and either it's time to, you know, keep going, persevering, or you know, it's time to pivot it or even shut down."}, {"id": "s164", "start": 748.04, "end": 755.8389999999999, "text": "And, you know, we've shut down projects basically every single one of those cycles and it's like the more you do it, the less it's just like, \"Oh no, my project is shut down."}, {"id": "s165", "start": 755.8389999999999, "end": 756.32, "text": "I failed.\""}, {"id": "s166", "start": 756.32, "end": 764.28, "text": "It's like, \"No, that is definitely the intention of the labs team is to prototype quickly, try to ship internally, maybe get it to early access, and if it doesn't work, wind it down.\""}, {"id": "s167", "start": 764.28, "end": 774.0, "text": "But because of that kind of like rapid iteration, it means that if you align the org chart too much to the individual projects, you're going to end up like re-orging every two weeks, which would be a total nightmare."}, {"id": "s168", "start": 774.0, "end": 781.76, "text": "And so we've actually ended up with this interesting setup where like the the pod or the team that is working on a given we call them bets within labs,"}, {"id": "s169", "start": 781.76, "end": 789.0, "text": "definitely just draws upon like all right, somebody from product, somebody from the eng team, you know, I'll jump in when it's a product I'm particularly interested in."}, {"id": "s170", "start": 789.0, "end": 791.48, "text": "I'll come in and work together with the team on it."}, {"id": "s171", "start": 791.48, "end": 792.96, "text": "And that's the unit for that time."}, {"id": "s172", "start": 792.96, "end": 796.44, "text": "And there is the concept of a bet lead or a directly responsible individual."}, {"id": "s173", "start": 796.44, "end": 803.6, "text": "But the interesting thing is that they don't manage usually any of the other people, which kind of breaks the that kind of previous way in which a lot of these things were done."}, {"id": "s174", "start": 803.6, "end": 808.64, "text": "But I think it leaves it leaves us to be really flexible when you say, \"Okay, actually this project is not going to work out."}, {"id": "s175", "start": 808.64, "end": 811.04, "text": "Let's disband and keep going and it's not a big deal.\""}, {"id": "s176", "start": 811.04, "end": 818.64, "text": "And the engine manager is much more playing the like make sure every individual is assigned to the thing that they're most excited about and that they're working in the best way possible."}, {"id": "s177", "start": 818.64, "end": 822.12, "text": "Now, what we do sort of solidify is when there's a product that has like legs."}, {"id": "s178", "start": 822.12, "end": 831.24, "text": "Like Cloud Design for example, started in this sort of ad hoc sort of grouped way and then now that like we've shipped it, it's gotten traction, we've done like a big second release"}, {"id": "s179", "start": 831.24, "end": 831.72, "text": "in June."}, {"id": "s180", "start": 831.72, "end": 837.28, "text": "Like it's becoming like we've hired people for that specific team and it has more of a of a structure."}, {"id": "s181", "start": 837.28, "end": 841.0, "text": "So, it's like loose until it gets solidified down the line."}, {"id": "s182", "start": 841.0, "end": 842.36, "text": "What's the future of Cloud Design?"}, {"id": "s183", "start": 842.36, "end": 847.52, "text": "I think a lot of people are very interested in It's one of your biggest launches this year."}, {"id": "s184", "start": 847.52, "end": 848.52, "text": "Where does this go?"}, {"id": "s185", "start": 848.52, "end": 856.32, "text": "I think for me, I mean the things that are holding back Cloud Design from being even better is better interaction with our other surfaces."}, {"id": "s186", "start": 856.32, "end": 861.12, "text": "So, you know, I was designing something or I was talking to to Cloud Code the other day."}, {"id": "s187", "start": 861.12, "end": 867.72, "text": "I'm like, I want a really much more seamless like what I'm talking about the design for it, you know, and then after design back to that."}, {"id": "s188", "start": 867.72, "end": 872.12, "text": "I think in general it's I mean this goes back again to kind of unconstraining Cloud."}, {"id": "s189", "start": 872.12, "end": 875.8, "text": "Like the fact that our surfaces don't talk to each other as well as they could."}, {"id": "s190", "start": 875.8, "end": 879.16, "text": "I think really holds back a lot of interesting ideas around what we could do."}, {"id": "s191", "start": 879.16, "end": 883.16, "text": "So, I think that's one like kind of major area that we're looking at."}, {"id": "s192", "start": 883.16, "end": 889.52, "text": "And then the other one is people like the lines between a Cloud Design and an app get blurry and blurrier over time."}, {"id": "s193", "start": 889.52, "end": 897.64, "text": "Like I've seen people Of course there's no like persistence but build like fully functional like even games which is definitely not what we designed Cloud Design for but you can do it."}, {"id": "s194", "start": 897.64, "end": 900.2, "text": "It's just HTML and JavaScript."}, {"id": "s195", "start": 900.2, "end": 913.68, "text": "So, blurring those lines even further and thinking through like what is the path from a like fully featured design that looks really well to really good to something that is maybe more like a artifact where you're actually able to go and you know, persist data and share it with others and build from there."}, {"id": "s196", "start": 913.68, "end": 916.8389999999999, "text": "So, I think that those lines get really interesting over time, too."}, {"id": "s197", "start": 916.8389999999999, "end": 918.08, "text": "Yeah."}, {"id": "s198", "start": 918.08, "end": 920.44, "text": "A big part of design is having taste."}, {"id": "s199", "start": 920.44, "end": 926.8, "text": "I actually asked Fable what Fable wants to ask you and this this this is what Fable came up with."}, {"id": "s200", "start": 926.8, "end": 935.2, "text": "You deleted almost all of Bourbon to get to Instagram which is like you had a whole you know solo mode whatever thing and you went to Instagram."}, {"id": "s201", "start": 935.2, "end": 938.68, "text": "What would you delete in AI or more spicy what would you delete in Claude?"}, {"id": "s202", "start": 938.68, "end": 941.44, "text": "Oh, I like the spice."}, {"id": "s203", "start": 941.44, "end": 947.68, "text": "I think I mean we have it's interesting we have a one of our slack channels is like project unship which is like what is in the product right now."}, {"id": "s204", "start": 947.68, "end": 949.68, "text": "It's I mean this is hard at Instagram."}, {"id": "s205", "start": 949.68, "end": 962.32, "text": "The Instagram we what things that had like four to five percent usage you're like oh that's really not very many but then you have like 20 features that each have four to five percent usage is like the classic Microsoft Word problem of like"}, {"id": "s206", "start": 962.32, "end": 966.16, "text": "everybody uses some disjoint subset of the of the functionality."}, {"id": "s207", "start": 966.16, "end": 967.8, "text": "So that that's always the challenge."}, {"id": "s208", "start": 967.8, "end": 971.6, "text": "Now I think we're younger product so hopefully we have less of those things."}, {"id": "s209", "start": 971.6, "end": 983.08, "text": "Like we unship styles I think recently where it was like used by a small percentage of people and was not really AGI filled in a lot of ways it was like very sort of prescriptive in the way that it worked and skills very much better"}, {"id": "s210", "start": 983.08, "end": 984.24, "text": "applications and then like that."}, {"id": "s211", "start": 984.24, "end": 993.92, "text": "So I think you have to be willing to take the primitives of like one generation of AI and like unship them or at least like supplement them or supplant them with the next one as well."}, {"id": "s212", "start": 993.92, "end": 1003.08, "text": "I think the biggest thing is I look at it and I've been spending some time like outside labs on some of this is like man like we're asking people to make like code versus co-work versus"}, {"id": "s213", "start": 1003.08, "end": 1012.44, "text": "like chat distinctions and like one they don't interoperate well and they can't delegate to each other and two I think the average person off the street could not explain to you why those are all different."}, {"id": "s214", "start": 1012.44, "end": 1019.76, "text": "So I think deleting some of the product complexity within our our code or our product I think is a a thing that would would serve well."}, {"id": "s215", "start": 1019.76, "end": 1023.2, "text": "Also because then Claude can do what it needs to do and and do well."}, {"id": "s216", "start": 1023.2, "end": 1032.24, "text": "Like there's nothing more frustrating than having a co-work session where you're like great I've mapped out exactly what I want you to build and then be like can you please like create a paragraph that I can paste into Claude code?"}, {"id": "s217", "start": 1032.24, "end": 1037.4, "text": "Like that is some 2020 you know kind of workflow there that really shouldn't exist anymore."}, {"id": "s218", "start": 1037.4, "end": 1037.92, "text": "Yeah."}, {"id": "s219", "start": 1037.92, "end": 1044.199, "text": "Um I think drawing lines on what you don't want to do and also sort of leaving room for others is interesting."}, {"id": "s220", "start": 1044.199, "end": 1049.96, "text": "Um a lot of people today is like the startups day for AI E or obviously very sympathetically aligned to startups."}, {"id": "s221", "start": 1049.96, "end": 1057.68, "text": "Uh but there's some anxiety in the room because tomorrow's Anthropic could wake up and publish some markdown files that destroy my industry."}, {"id": "s222", "start": 1057.68, "end": 1058.492, "text": "Um so"}, {"id": "s223", "start": 1058.492, "end": 1059.08, "text": "[laughter]"}, {"id": "s224", "start": 1059.08, "end": 1061.52, "text": "uh why should we not all just give up and join Anthropic?"}, {"id": "s225", "start": 1061.52, "end": 1064.6, "text": "Like why bother starting any other company?"}, {"id": "s226", "start": 1064.6, "end": 1073.48, "text": "Um I I mean actually joined one of the main reasons I joined Anthropic was because I saw how much this was like, you know, the models weren't that good at coding up but they were getting there."}, {"id": "s227", "start": 1073.48, "end": 1077.24, "text": "Like how much it would unlock like whole like next generation of startups."}, {"id": "s228", "start": 1077.24, "end": 1084.76, "text": "Not because it was going to solve their ideation or their taste, but because like it would make experimentation way simpler and and would get you to move faster."}, {"id": "s229", "start": 1084.76, "end": 1086.28, "text": "And I still like really believe that."}, {"id": "s230", "start": 1086.28, "end": 1092.04, "text": "And I mean it's the reality of, you know, uh And we saw this with like Instagram."}, {"id": "s231", "start": 1092.04, "end": 1096.24, "text": "Like we would get questions from investors like, well, what happens when Google launches a photos product?"}, {"id": "s232", "start": 1096.24, "end": 1104.04, "text": "It's like Google's going to launch a very googly photos product and it's going to have to be bound by the integrations that they already have and it's going to be like it's going to play to their strengths."}, {"id": "s233", "start": 1104.04, "end": 1105.16, "text": "And I think that is going to be true."}, {"id": "s234", "start": 1105.16, "end": 1115.36, "text": "And I'm not like giving advice on how to compete with Anthropic, I guess in a way, but like it's actually not because we're also a platform which is like there's so much I think room to be like laser obsessed with your particular"}, {"id": "s235", "start": 1115.36, "end": 1121.68, "text": "vertical or your industry or group of people that you know really well in a way that like none of the labs are ever going to get to that level of"}, {"id": "s236", "start": 1121.68, "end": 1127.24, "text": "uh of understanding and like therefore get that kind of adoption and user love and and build that out."}, {"id": "s237", "start": 1127.24, "end": 1137.08, "text": "Now, it's definitely harder in the age where like the models can just do a lot and so there's, you know, some of these things can be like skillified and like maybe don't need their own dedicated product."}, {"id": "s238", "start": 1137.08, "end": 1138.8, "text": "But I think it's like the hard stuff is still hard."}, {"id": "s239", "start": 1138.8, "end": 1144.72, "text": "It's like understanding the needs of people, like figuring out how you're going to reach them, uh listening to them and iterating on them really quickly."}, {"id": "s240", "start": 1144.72, "end": 1155.72, "text": "Like it is still the case that like a group of four or five people obsessed with a problem is going to move faster than those same people at any other kind of organization that are like, you know, subject just to the complexity."}, {"id": "s241", "start": 1155.72, "end": 1159.92, "text": "I just mentioned the like the fact that we have, you know, a lot of different products that kind of interoperate."}, {"id": "s242", "start": 1159.92, "end": 1162.08, "text": "Like that's a interesting constraint that we have to work through."}, {"id": "s243", "start": 1162.08, "end": 1163.6, "text": "It's an advantage in other ways, right?"}, {"id": "s244", "start": 1163.6, "end": 1173.96, "text": "So, yeah, I'm still like very long and bullish on startups and um it's just it tapers over the fact that like writing code was never the like the limiting part."}, {"id": "s245", "start": 1173.96, "end": 1178.68, "text": "You know, maybe it was on the timeline perspective, but it was never like the thing that was going to like make or break a startup."}, {"id": "s246", "start": 1178.68, "end": 1181.16, "text": "It's really that space and user understanding."}, {"id": "s247", "start": 1181.16, "end": 1181.6, "text": "Yeah."}, {"id": "s248", "start": 1181.6, "end": 1183.08, "text": "Uh domain knowledge."}, {"id": "s249", "start": 1183.08, "end": 1183.64, "text": "Yeah."}, {"id": "s250", "start": 1183.64, "end": 1187.08, "text": "Uh today is also our day for vertical AI."}, {"id": "s251", "start": 1187.08, "end": 1193.32, "text": "Uh one of our uh returning speakers and top speakers, Chris Lovejoy, uh was always talking about vertical AI."}, {"id": "s252", "start": 1193.32, "end": 1195.28, "text": "He was in from interior in the healthcare space."}, {"id": "s253", "start": 1195.28, "end": 1201.84, "text": "And then recently I was I invited him back and turned out he you guys just hired him for your uh healthcare efforts."}, {"id": "s254", "start": 1201.84, "end": 1204.76, "text": "Um we also our next big one is also finance."}, {"id": "s255", "start": 1204.76, "end": 1206.68, "text": "You know, we have a yeah, a finance track."}, {"id": "s256", "start": 1206.68, "end": 1209.44, "text": "You guys just had a huge finance event in New York City."}, {"id": "s257", "start": 1209.44, "end": 1213.08, "text": "Um and where our next uh AI is is sort of finance focused."}, {"id": "s258", "start": 1213.08, "end": 1213.88, "text": "What are you seeing there?"}, {"id": "s259", "start": 1213.88, "end": 1216.2, "text": "Any you know, any potential uh for Claude?"}, {"id": "s260", "start": 1216.2, "end": 1218.16, "text": "Obviously a lot of Excel Excel spreadsheets."}, {"id": "s261", "start": 1218.16, "end": 1218.52, "text": "Yeah."}, {"id": "s262", "start": 1218.52, "end": 1220.48, "text": "No, I think that there's there's a lot in there, too."}, {"id": "s263", "start": 1220.48, "end": 1227.48, "text": "And that's like an area where uh you could see the model get clearly better at it like sort of generation to generation."}, {"id": "s264", "start": 1227.48, "end": 1236.64, "text": "And there's, you know, there's some good sort of vertical specific uh uh finance startups that have like done their own um evals, which has also been interesting to to track."}, {"id": "s265", "start": 1236.64, "end": 1243.72, "text": "And it's not like we're like sort of playing to the eval, but it is a useful sort of barometer around like is this actually getting better um at these finance use cases."}, {"id": "s266", "start": 1243.72, "end": 1254.12, "text": "I think the interesting blend that's going to happen um is this mix of, again, the model having the flexibility to like dive in and create just-in-time analyses or dashboards or workflows"}, {"id": "s267", "start": 1254.12, "end": 1259.96, "text": "with like some sense of like what is the not immutable, but at least like verified sort of set of data."}, {"id": "s268", "start": 1259.96, "end": 1269.52, "text": "And so like uh set having all of that be totally free form, I think is a recipe for confusion and is like not what most companies in the financial services space want."}, {"id": "s269", "start": 1269.52, "end": 1284.76, "text": "So, finding that right uh sort of cut line where you have verifiability and audit logging and and sort of data provenance here, but not in a way that constrains the kinds of applications that you can build on top, I think is a lot of the art that we're seeing in that space as well."}, {"id": "s270", "start": 1284.76, "end": 1289.76, "text": "Um and I think, you know, if you solve it well, you can you can get the best of both worlds."}, {"id": "s271", "start": 1289.76, "end": 1298.52, "text": "The hard part is a lot of the systems that were built to do the verifiability audibility like are kind of almost by design not super flexible in terms of agentic workloads on top."}, {"id": "s272", "start": 1298.52, "end": 1301.32, "text": "So, I think there's opportunity at both sides of the stack there."}, {"id": "s273", "start": 1301.32, "end": 1301.88, "text": "Yeah."}, {"id": "s274", "start": 1301.88, "end": 1305.8, "text": "Um I think I I also agree we'll be exploring that in in New York."}, {"id": "s275", "start": 1305.8, "end": 1312.24, "text": "Um the last thing I want to end on is on mental health, which we don't talk about enough in technical conference conferences."}, {"id": "s276", "start": 1312.24, "end": 1314.24, "text": "Um you've seen a lot of hyper growth."}, {"id": "s277", "start": 1314.24, "end": 1318.8, "text": "People are just always refreshing their timelines and it's exhausting."}, {"id": "s278", "start": 1318.8, "end": 1323.24, "text": "Um how do you advise people who are working 996 to avoid burnout?"}, {"id": "s279", "start": 1323.24, "end": 1323.6, "text": "Yeah."}, {"id": "s280", "start": 1323.6, "end": 1325.04, "text": "I mean, I think this is a hard one."}, {"id": "s281", "start": 1325.04, "end": 1336.28, "text": "I mean, and it is, I'm sure you are experiencing this cuz you're all working in this industry like it is you know, multiples more intense and things move much more quickly at an Instagram"}, {"id": "s282", "start": 1336.28, "end": 1342.96, "text": "like our the two things that we were thinking about was like, what is Apple going to announce at WWDC and is it going to like totally mess us up or boost us, right?"}, {"id": "s283", "start": 1342.96, "end": 1344.52, "text": "So, that's like once a year."}, {"id": "s284", "start": 1344.52, "end": 1347.84, "text": "Um or, you know, maybe a competitor launches every three or four months, right?"}, {"id": "s285", "start": 1347.84, "end": 1349.8, "text": "And uh it is definitely not that."}, {"id": "s286", "start": 1349.8, "end": 1353.8, "text": "It's a topic we we do a when we do do our weekly all hands."}, {"id": "s287", "start": 1353.8, "end": 1365.84, "text": "Usually on Wednesdays and we have a slide that's like the week in AI at Pinterest is and it's only Wednesday and like and inevitably like some competitor has shipped a new model and like there's been a like new product and maybe there's some interesting thing happening"}, {"id": "s288", "start": 1365.84, "end": 1367.28, "text": "um uh on the regulation side."}, {"id": "s289", "start": 1367.28, "end": 1368.96, "text": "Like if things are moving really, really quickly."}, {"id": "s290", "start": 1368.96, "end": 1381.32, "text": "I think the way I try to stay at least relatively sane, um one is like actually carving time off and I think the topic co-founders do a good job of like saying like, look, like burnout if you you out, like you're kind of done."}, {"id": "s291", "start": 1381.32, "end": 1386.28, "text": "I've seen it happen unfortunately to people I'm really close to and then it takes a long time to recover from that."}, {"id": "s292", "start": 1386.28, "end": 1391.76, "text": "Um so actually encouraging people like there's no job that is so important that you can't be offline for a couple of days."}, {"id": "s293", "start": 1391.76, "end": 1394.56, "text": "Um so I think that's like a big key like piece in there."}, {"id": "s294", "start": 1394.56, "end": 1396.476, "text": "So like let's"}, {"id": "s295", "start": 1396.476, "end": 1396.72, "text": "[applause]"}, {"id": "s296", "start": 1396.72, "end": 1398.28, "text": "strongly believe."}, {"id": "s297", "start": 1398.28, "end": 1405.44, "text": "Um And if it is you're probably doing something wrong and you talk to somebody who could be a mentor to figure out how you can unblock that."}, {"id": "s298", "start": 1405.44, "end": 1414.52, "text": "Um and then I think the other one as well is like I love sports and like uh this is the notion of like you're never as good as like your best game and you're never as bad as your worst game."}, {"id": "s299", "start": 1414.52, "end": 1415.88, "text": "I think that's also really true."}, {"id": "s300", "start": 1415.88, "end": 1419.92, "text": "Like I know like in AI there's like the you know it's so over we're so back thing."}, {"id": "s301", "start": 1419.92, "end": 1427.04, "text": "Like that like if you internalize that that cycle is always going to be at play in some way, you realize like it's never that bad."}, {"id": "s302", "start": 1427.04, "end": 1439.56, "text": "Like Ben Horowitz's book is the hard thing about hard things has this chapter on like we're effed it's over and like that feeling as a startup that probably many of you have had at startups where you're like oh I can't believe this thing happened like we're never going to like recover from this."}, {"id": "s303", "start": 1439.56, "end": 1442.0, "text": "I definitely we definitely had an Instagram a couple of times."}, {"id": "s304", "start": 1442.0, "end": 1447.04, "text": "And then you get through it and like it's that like def like defines the company when you can actually go through that."}, {"id": "s305", "start": 1447.04, "end": 1454.16, "text": "I try to remind myself and the team here even with an Entropic which is like like this is a is a fast-moving but is also a long game."}, {"id": "s306", "start": 1454.16, "end": 1460.28, "text": "And it's like we're never it's never just about today's model launch and reaction or this product launch and everything else."}, {"id": "s307", "start": 1460.28, "end": 1471.4, "text": "Like you're playing and you're building and you just have to trust that you're building like the team and culture that is going to get through those things and have that sense of perspective even if perspective is saying like look 3 months ago we were in a similar position."}, {"id": "s308", "start": 1471.4, "end": 1483.12, "text": "Maybe it's not a year it's just a matter of months but it's still like zooming out and not taking things not letting your internal sort of like sense of self and success be so driven by the day-to-day."}, {"id": "s309", "start": 1483.12, "end": 1483.52, "text": "Yeah."}, {"id": "s310", "start": 1483.52, "end": 1490.52, "text": "It has anyone any coach or mentor said something to you that you repeat to yourself that gets you through the hard tough times?"}, {"id": "s311", "start": 1490.52, "end": 1499.92, "text": "Um I think the biggest one was this like sense of like if you're feeling something it's really often the case that other people on the team are feeling it too."}, {"id": "s312", "start": 1499.92, "end": 1510.96, "text": "So this is like advice I got from my my coach around just being like like just verbalizing emotions like even saying like hey I'm feeling really stressed out about this or yeah I'm really sad that we are shutting down this labs initiative."}, {"id": "s313", "start": 1510.96, "end": 1523.16, "text": "I literally had this meeting a couple months ago where I was working really hard on something and I kicked off the meeting like I'll kick it off like I'm really sad like I'm frustrated like I wish this thing had worked out and I think that holds the space for other people to be like yeah I'm pissed off"}, {"id": "s314", "start": 1523.16, "end": 1536.2, "text": "too or like I'm sad too and like I think giving that advice around like not I think if you can get yourself to be open and vulnerable it often like lets other people verbalize that and then you can from there you can be like great what are we going to do about it like you know it's much"}, {"id": "s315", "start": 1536.2, "end": 1537.72, "text": "easier to start from that place."}, {"id": "s316", "start": 1537.72, "end": 1547.56, "text": "Yeah we actually kicked off AIE with a session from Carol Robbins who runs touchy feely at Stanford and I can't think of a better way to end than encouraging people to talk about their feelings"}, {"id": "s317", "start": 1547.56, "end": 1549.48, "text": "manage their mental health and keep shipping."}, {"id": "s318", "start": 1549.48, "end": 1549.88, "text": "Yeah."}, {"id": "s319", "start": 1549.88, "end": 1550.52, "text": "Thanks so much Mike."}, {"id": "s320", "start": 1550.52, "end": 1552.92, "text": "Thanks for having me."}]}, {"id": "rbjWzZK2LU0", "title": "Give the Agent a Budget, Not a Token — Sachin Malhotra, Anthropic", "channel": "AI Engineer", "duration": 1193, "upload_date": null, "url": "https://www.youtube.com/watch?v=rbjWzZK2LU0", "api": "/api/talks/rbjWzZK2LU0.json", "summary_url": "/#rbjWzZK2LU0", "transcript": {"html": "/transcripts/rbjWzZK2LU0.html", "txt": "/transcripts/rbjWzZK2LU0.txt", "vtt": "/transcripts/rbjWzZK2LU0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.96, "end": 14.32, "text": "Hello."}, {"id": "s3", "start": 14.32, "end": 14.88, "text": "All right."}, {"id": "s4", "start": 14.88, "end": 16.4, "text": "Uh, let's get started."}, {"id": "s5", "start": 16.4, "end": 19.84, "text": "So, um, well, welcome to the talk."}, {"id": "s6", "start": 19.84, "end": 23.359, "text": "Give the agent a budget, not a not a token."}, {"id": "s7", "start": 23.359, "end": 24.8, "text": "Um, quick intro about me."}, {"id": "s8", "start": 24.8, "end": 25.76, "text": "My name is Sachin."}, {"id": "s9", "start": 25.76, "end": 28.48, "text": "Um, I'm an engineer on the CI team at Entropic."}, {"id": "s10", "start": 28.48, "end": 33.68, "text": "Uh we basically build and manage all of the test machinery for all the code that people write."}, {"id": "s11", "start": 33.68, "end": 40.16, "text": "Uh so everything from test quarantining to merge automation to CI autoscaling to merge cues, everything and anything in between."}, {"id": "s12", "start": 40.16, "end": 45.04, "text": "Um it's it's basically the plumbing that allows a few thousand engineers every day to ship code safely."}, {"id": "s13", "start": 45.04, "end": 47.28, "text": "Uh I've been at the company for a little over 10 months."}, {"id": "s14", "start": 47.28, "end": 48.48, "text": "I'm based out of Seattle."}, {"id": "s15", "start": 48.48, "end": 54.16, "text": "Um and outside of work, I love dialing my espressos and climbing some crazy mountains."}, {"id": "s16", "start": 54.16, "end": 58.399, "text": "So a lot of cool agent demos they they start with the same way really."}, {"id": "s17", "start": 58.399, "end": 64.799, "text": "So someone gives an agent a god token um and gives it an access to some sort of tool list and just watch as it goes."}, {"id": "s18", "start": 64.799, "end": 70.08, "text": "So and it does go like in in this particular example it it'll spin up like a cute little coffee website."}, {"id": "s19", "start": 70.08, "end": 74.72, "text": "It'll build all the pages, deploy them, uh bring it up live and it's done in 3 seconds."}, {"id": "s20", "start": 74.72, "end": 78.96000000000001, "text": "Uh people will nod people will clap and someone will ship it into production."}, {"id": "s21", "start": 78.96000000000001, "end": 87.115, "text": "And this this talk is basically about what happens after that after the demo ships once the agent is starting to do some like real work in production."}, {"id": "s22", "start": 87.115, "end": 88.479, "text": "[snorts]"}, {"id": "s23", "start": 88.479, "end": 92.4, "text": "So here's what after looked like in in our one of our scenarios."}, {"id": "s24", "start": 92.4, "end": 94.4, "text": "So what you're looking at is like a real command."}, {"id": "s25", "start": 94.4, "end": 96.88, "text": "Um the agent was trying to clean up after itself."}, {"id": "s26", "start": 96.88, "end": 102.32, "text": "Um it it was basically listing a bunch of workloads that were no longer interesting or useful to itself."}, {"id": "s27", "start": 102.32, "end": 104.88, "text": "Um and then it found them and deleted them."}, {"id": "s28", "start": 104.88, "end": 116.0, "text": "Now that's that's completely reasonable except one stage in the pipeline basically evaluated to nothing and the filter dropped out and now the selector matched everything."}, {"id": "s29", "start": 116.07900000000001, "end": 125.04, "text": "So you can see it took out about 200 workloads uh which ended up impacting about 20 engineers worth of stuff and all of that was gone in 90 seconds."}, {"id": "s30", "start": 125.04, "end": 131.2, "text": "Nobody was being malicious in this case like the agent genuinely thought it was tidying up after itself."}, {"id": "s31", "start": 131.2, "end": 134.64, "text": "uh some of these workloads were long running training jobs and stuff."}, {"id": "s32", "start": 134.64, "end": 142.0, "text": "Maybe some of these were not even checkpointed and it was just like hours of progress that was gone poof in like 90 seconds and stuff, right?"}, {"id": "s33", "start": 142.0, "end": 156.239, "text": "Um the the problem in in this case is that this idea of like here's a token and here's a tool list that is just like not enough like it just doesn't scale when the agent is starting to do some some like real work in production."}, {"id": "s34", "start": 157.12, "end": 160.56, "text": "So here's just a brief summary of like what we're going to talk about today."}, {"id": "s35", "start": 160.56, "end": 165.68, "text": "Uh I'm going to walk through three primitives um and asymmetric verbs."}, {"id": "s36", "start": 165.68, "end": 168.07999999999998, "text": "We we're going to look at some like rate limits."}, {"id": "s37", "start": 168.07999999999998, "end": 171.36, "text": "We're going to look at this idea of like trip wires over allow lists."}, {"id": "s38", "start": 171.36, "end": 179.12, "text": "And then I'm going to talk about this one lens that which I call the undo test that you can sort of use to size up the other three primitives."}, {"id": "s39", "start": 179.12, "end": 185.2, "text": "Uh so three things that you basically enforce and then one question you sort of ask about all of them."}, {"id": "s40", "start": 186.879, "end": 192.239, "text": "So here's basically what bugged me uh after the cleanup was done for the incident that I was just showing you."}, {"id": "s41", "start": 192.239, "end": 196.48, "text": "Uh the the agent technically hadn't done anything that I couldn't have done."}, {"id": "s42", "start": 196.48, "end": 198.56, "text": "Uh it was using my token after all."}, {"id": "s43", "start": 198.56, "end": 200.56, "text": "The the failure wasn't the model itself."}, {"id": "s44", "start": 200.56, "end": 207.519, "text": "The failure was that I was giving the agent unbounded amount of power to do something that I wasn't watching super intently."}, {"id": "s45", "start": 207.519, "end": 217.44, "text": "Um and it was we've basically solved this the same kind of problem except not for agents but like the first time you onboarded like a junior engineer on onto your own teams, right?"}, {"id": "s46", "start": 217.44, "end": 226.64, "text": "So just think about it like we don't we don't basically sit around watching um every engineer or new boarded person just like type out every keystroke on their keyboard, right?"}, {"id": "s47", "start": 226.64, "end": 229.68, "text": "Like we're not behind their chairs just watching everything that they're doing."}, {"id": "s48", "start": 229.68, "end": 233.519, "text": "Uh there is always a path on whenever a new engineer wants to ask for something."}, {"id": "s49", "start": 233.519, "end": 235.92000000000002, "text": "Um there is always an escalation path."}, {"id": "s50", "start": 235.92000000000002, "end": 240.319, "text": "uh the catastrophic stuff is just structurally out of reach for them."}, {"id": "s51", "start": 240.319, "end": 243.599, "text": "So the the other side of the coin is that the agents are very different."}, {"id": "s52", "start": 243.599, "end": 244.72, "text": "They they never get tired."}, {"id": "s53", "start": 244.72, "end": 245.68, "text": "They never sleep."}, {"id": "s54", "start": 245.68, "end": 248.159, "text": "And every so often they're just like very confidently wrong."}, {"id": "s55", "start": 248.159, "end": 252.959, "text": "Um and if I'm being honest, that's that's maybe most of us on the first month of our jobs anyways."}, {"id": "s56", "start": 252.959, "end": 262.72, "text": "And so what what we're going to talk about in a little bit in is just this idea of like your onboarding checklist, but written down as policy for for agents."}, {"id": "s57", "start": 263.6, "end": 271.68, "text": "So that and that brings me to the word in the title of my my talk here is that the the the standard fix for an incident like that is basically"}, {"id": "s58", "start": 271.68, "end": 273.6, "text": "that you narrow the token scope, right?"}, {"id": "s59", "start": 273.6, "end": 276.479, "text": "Like you just take the deletes away effectively."}, {"id": "s60", "start": 276.479, "end": 278.88, "text": "You would technically never do that for like a new hire, right?"}, {"id": "s61", "start": 278.88, "end": 281.919, "text": "Like you would you wouldn't take the whole verb away from them."}, {"id": "s62", "start": 281.919, "end": 284.4, "text": "And it also doesn't work for an agent either."}, {"id": "s63", "start": 284.4, "end": 293.6, "text": "Maybe it works for about a week, maybe two, but then you eventually end up in a situation where the agent is genuinely trying to delete something that it feels like is just not in the infrastructure"}, {"id": "s64", "start": 293.6, "end": 299.52, "text": "and you will just be there sitting and pressing enter by hand all over again."}, {"id": "s65", "start": 299.52, "end": 303.68, "text": "The the core concept with a token that I feel like is wrong is that a token is a boolean."}, {"id": "s66", "start": 303.68, "end": 306.639, "text": "It's just a yes or no. It's a static list of scopes."}, {"id": "s67", "start": 306.639, "end": 309.039, "text": "Um you either have it or you don't have it."}, {"id": "s68", "start": 309.039, "end": 313.28, "text": "So if the token list is too tight, then your agent is effectively useless."}, {"id": "s69", "start": 313.28, "end": 318.72, "text": "If the token list is too wide, then you're maybe writing writing like a postmortm."}, {"id": "s70", "start": 318.72, "end": 320.16, "text": "A budget is a very different shape."}, {"id": "s71", "start": 320.16, "end": 323.28, "text": "A budget is is um not just like one number."}, {"id": "s72", "start": 323.28, "end": 326.32, "text": "It just has like four different four different dimensions, right?"}, {"id": "s73", "start": 326.32, "end": 327.919, "text": "How much can the agent do?"}, {"id": "s74", "start": 327.919, "end": 329.84, "text": "Uh how fast can it do it?"}, {"id": "s75", "start": 329.84, "end": 331.36, "text": "What can it undo on its own?"}, {"id": "s76", "start": 331.36, "end": 334.96, "text": "And then who's noticing while it's actually taking those actions?"}, {"id": "s77", "start": 334.96, "end": 337.44, "text": "And that's roughly the umbrella for like my four primitives."}, {"id": "s78", "start": 337.44, "end": 342.96, "text": "Uh is that each of the things that follow, they're basically being um one of the things along these dimensions."}, {"id": "s79", "start": 342.96, "end": 347.68, "text": "and they're going to replace a yes or no question with a budget."}, {"id": "s80", "start": 347.68, "end": 351.44, "text": "So, I'm going to start off with this first verb which I call asymmetric verbs."}, {"id": "s81", "start": 351.44, "end": 355.44, "text": "Uh, and by verbs I simply means operations or actions that an agent can take."}, {"id": "s82", "start": 355.44, "end": 359.919, "text": "So, like it could be API calls, it could be uh CLI commands, it could be really anything."}, {"id": "s83", "start": 359.919, "end": 369.68, "text": "And they're asymmetric because the same sized action even though it looks same size, they're they can have very different blast radius in actuality depending on which direction it goes."}, {"id": "s84", "start": 369.68, "end": 374.96, "text": "So the the core point is that you need to stop thinking about resources for a second and think about verbs."}, {"id": "s85", "start": 374.96, "end": 380.16, "text": "So specifically think about what happens when one of the verbs goes wrong."}, {"id": "s86", "start": 380.16, "end": 382.0, "text": "So some verbs they fail out loud."}, {"id": "s87", "start": 382.0, "end": 391.759, "text": "So in this particular example, let's say if an agent decides to unskip a test and say it's the wrong call, the worst that would happen is CI would go red uh for a bunch of people."}, {"id": "s88", "start": 391.759, "end": 392.96, "text": "Um same with paging."}, {"id": "s89", "start": 392.96, "end": 398.72, "text": "Like if an agent decides to page a human and if it's the wrong call, the worst that's happening is that it's a nuisance for the on call."}, {"id": "s90", "start": 398.72, "end": 401.28, "text": "But there's always a human to correct it."}, {"id": "s91", "start": 401.28, "end": 403.52, "text": "There are other verbs that fail silently, right?"}, {"id": "s92", "start": 403.52, "end": 408.639, "text": "So if the agent decides to skip a test uh due to whatever reason, it shouldn't have."}, {"id": "s93", "start": 408.639, "end": 410.479, "text": "Nothing technically turns red."}, {"id": "s94", "start": 410.479, "end": 415.759, "text": "A real bug can actually walk into production with green checks and nobody would notice it until much later."}, {"id": "s95", "start": 415.759, "end": 424.479, "text": "So unskip and skip in this example, they're effectively the they're the same kind of action, but the difference is which of the failures would show up on a dashboard and which one wouldn't."}, {"id": "s96", "start": 424.479, "end": 434.319, "text": "And so the core idea is that you give um access to verbs that can fail out loud loudly on a dashboard to your agent and for the other ones just involve a human."}, {"id": "s97", "start": 434.319, "end": 443.52, "text": "Uh just a bit of context on CI stuff and how this plays out for us is that we have a test quarantining service behind the scenes and it basically holds a list of"}, {"id": "s98", "start": 443.52, "end": 451.199, "text": "um all the tests that are currently skipped because an on call decided that it had to uh they had to like break glass a certain situation whenever there was like an incident or something."}, {"id": "s99", "start": 451.199, "end": 459.68, "text": "Now the agent has the ability to reenable any one of these own depending on like when it evaluates when the tests are uh working fine and stuff."}, {"id": "s100", "start": 459.68, "end": 467.599, "text": "Again if it's the wrong call the worst that would happen is a bunch of different builds and tests would just like start showing up red and then a human can actually put them back very cheaply."}, {"id": "s101", "start": 467.599, "end": 475.68, "text": "The skip is a break glass verb itself right like it's basically as I mentioned what our on call would reach for uh during a very critical situation during under pressure and stuff."}, {"id": "s102", "start": 475.68, "end": 483.12, "text": "And so in that scenario if like uh an agent actually gets it wrong a real production bug can actually a real bug can walk into production."}, {"id": "s103", "start": 483.12, "end": 486.56, "text": "So this needs a human and it will always leave an audit trail."}, {"id": "s104", "start": 486.56, "end": 491.599, "text": "Uh and the key detail is that the agent itself is not responsible for writing the row or the audit trail itself."}, {"id": "s105", "start": 491.599, "end": 494.8, "text": "There is a proxy in the middle that I've highlighted that I'm going to talk about in a little bit."}, {"id": "s106", "start": 494.8, "end": 500.8, "text": "Uh which is responsible for stamping the caller's main identity on every call whether it's a skip or an unskip."}, {"id": "s107", "start": 500.8, "end": 506.479, "text": "um the agent technically never holds uh the pen on its own provenence."}, {"id": "s108", "start": 506.96, "end": 508.72, "text": "The second primitive is about rate limits."}, {"id": "s109", "start": 508.72, "end": 513.919, "text": "Uh it's pretty standard concept but and this is the most concrete form of like the budget idea as a whole."}, {"id": "s110", "start": 513.919, "end": 515.919, "text": "So a ceiling that refills."}, {"id": "s111", "start": 515.919, "end": 520.64, "text": "So every caller gets a small amount of disruptive actions uh per time window."}, {"id": "s112", "start": 520.64, "end": 522.479, "text": "So you can spend them however you want."}, {"id": "s113", "start": 522.479, "end": 524.399, "text": "Uh there's no approval, there's no waiting."}, {"id": "s114", "start": 524.399, "end": 530.399, "text": "And if you cross the line, the request simply bounces back with a count saying that you're actually exceeding your count um your budget."}, {"id": "s115", "start": 530.399, "end": 532.9590000000001, "text": "You wait a bit and then the limit essentially refills."}, {"id": "s116", "start": 532.9590000000001, "end": 534.16, "text": "And that's that's the whole thing."}, {"id": "s117", "start": 534.16, "end": 537.44, "text": "So the agent gets full autonomy within the limit."}, {"id": "s118", "start": 537.44, "end": 540.56, "text": "And there is a hard ceiling on how bad a single loop can get."}, {"id": "s119", "start": 540.56, "end": 543.36, "text": "And every write effectively gets a rate limit."}, {"id": "s120", "start": 543.36, "end": 544.959, "text": "There are no exceptions to that."}, {"id": "s121", "start": 544.959, "end": 546.64, "text": "What changes is the size of the rate limit."}, {"id": "s122", "start": 546.64, "end": 558.08, "text": "So if if if I'm if I'm trying to delete a bunch of workloads in my own name space like my my rate limit might be higher but if I'm trying to touch resources in a shared namespace my budget or my rate limits might be smaller."}, {"id": "s123", "start": 559.44, "end": 563.92, "text": "So this is uh effectively the solutioning for the incident that I was showing earlier."}, {"id": "s124", "start": 563.92, "end": 575.6, "text": "Um after the incident the team sort of that sits next to mine they they built an admission web hook of sorts uh whose sole job is to cap the number of deletes at a fixed number per hour per resource kind per name space."}, {"id": "s125", "start": 575.6, "end": 582.32, "text": "There is always a bypass flag because sometimes you genuinely want to delete more than you're allowed for and maybe some on call scenario or whatever."}, {"id": "s126", "start": 582.32, "end": 590.9590000000001, "text": "And the part that I absolutely love in this case is that inside a cloud code session or inside an agent session effectively the the bypass flag simply refuses to do anything."}, {"id": "s127", "start": 590.9590000000001, "end": 595.279, "text": "All it's going to do is tell the agent to ask the human to run the command itself."}, {"id": "s128", "start": 595.279, "end": 604.8, "text": "So the agent effectively gets the rate limit and the human keeps the override and nobody effectively has to file a ticket for uh the limit because it just like refills."}, {"id": "s129", "start": 605.68, "end": 610.16, "text": "The third primitive is about this concept of trip wires over allow lists."}, {"id": "s130", "start": 610.16, "end": 618.32, "text": "So in my mind like an allow list is effectively a guess that you're making up front about what the agent needs or about model behavior or agent behavior itself."}, {"id": "s131", "start": 618.32, "end": 624.959, "text": "uh I feel like it's pretty static and you write it up front before before you have any data on like how the agent is behaving in different situations."}, {"id": "s132", "start": 624.959, "end": 629.12, "text": "A trip wire on the other hand is how you get that data like after the fact."}, {"id": "s133", "start": 629.12, "end": 639.76, "text": "So for cheap actions you let the agent act and every action gets recorded with the actor sort of stamp identity stamp and these two kind of go well together like rate limits are the enforcement"}, {"id": "s134", "start": 639.76, "end": 642.8, "text": "um they they put a hard limit on uh the rate itself."}, {"id": "s135", "start": 642.8, "end": 647.76, "text": "Trip wires are how you find out what actually happened so you've got something to react to."}, {"id": "s136", "start": 647.76, "end": 651.36, "text": "So you effectively watch the aggregate and not like individual calls."}, {"id": "s137", "start": 651.36, "end": 657.36, "text": "And usually when a trip wire goes off the fix is like maybe one or two lines in the agents context and not really a big code change."}, {"id": "s138", "start": 657.36, "end": 660.32, "text": "Uh the core point is that allow lists don't really get better over time."}, {"id": "s139", "start": 660.32, "end": 664.48, "text": "They can get stale but trip wires do get better over time."}, {"id": "s140", "start": 664.48, "end": 666.8, "text": "So here's like a loopin practice for us."}, {"id": "s141", "start": 666.8, "end": 673.519, "text": "So like we track one number uh which is the number of investigation threads that our agent is launching per hour for a given test job failure."}, {"id": "s142", "start": 673.519, "end": 682.16, "text": "So one morning say the number was way above the baseline and the trip fire page is on call and that part's important because a trip wire that nobody sees is practically useless."}, {"id": "s143", "start": 682.16, "end": 687.04, "text": "Uh it pages after the right has already happened after the the limit has been crossed not before."}, {"id": "s144", "start": 687.04, "end": 690.399, "text": "It's effectively the smoke detector not the lock on the door."}, {"id": "s145", "start": 690.399, "end": 698.88, "text": "Uh the agent has spun up in this particular scenario a bunch of like investigation threads for dozens of job that were all failing with the same kind of error signature."}, {"id": "s146", "start": 698.88, "end": 708.32, "text": "Each thread effectively looked reasonable on its own, but like if you took them in aggregate, you would realize that it was actually an infrastructure failure that was causing the same test failure signatures across the board."}, {"id": "s147", "start": 708.32, "end": 719.519, "text": "So the fix in this case was as simply as telling the agent on like, hey, the next time you encounter something like this, maybe try to correlate a bunch of different failures and test jobs and stuff before launching a separate investigation thread."}, {"id": "s148", "start": 719.519, "end": 721.2, "text": "So that correlation is important."}, {"id": "s149", "start": 721.2, "end": 732.32, "text": "Um and the next time when this happened, uh it did exactly that because that that example and that line of like how it should react and like how it should like uh debug things was was right there to guide it."}, {"id": "s150", "start": 732.88, "end": 734.72, "text": "So that's three rough primitives."}, {"id": "s151", "start": 734.72, "end": 738.0, "text": "Now the lens I mentioned at the start is this idea of undo test."}, {"id": "s152", "start": 738.0, "end": 739.2, "text": "And this one's slightly different."}, {"id": "s153", "start": 739.2, "end": 741.8389999999999, "text": "It's it's not something you effectively enforce in code."}, {"id": "s154", "start": 741.8389999999999, "end": 744.56, "text": "It's the question you ask when you're sizing the other three."}, {"id": "s155", "start": 744.56, "end": 746.16, "text": "So it's two questions really."}, {"id": "s156", "start": 746.16, "end": 748.88, "text": "One, can the agent put it back by itself?"}, {"id": "s157", "start": 748.88, "end": 752.399, "text": "and how bad would the impact be if it actually got it wrong."}, {"id": "s158", "start": 752.399, "end": 763.6, "text": "And this this this sounds like asymmetric verbs in a sense, but it's kind of difference because the verbs ask whether you would notice the failure and undo asks whether you can recover from it."}, {"id": "s159", "start": 763.6, "end": 771.68, "text": "So if if if the agent can effectively roll back its own change and the blast radius is acceptable to you, you effectively log it and you let it go."}, {"id": "s160", "start": 771.68, "end": 778.639, "text": "If either of the answers is no, then you effectively need a second key and the second key is not something that the agent holds itself."}, {"id": "s161", "start": 778.639, "end": 780.24, "text": "It has to be someone else."}, {"id": "s162", "start": 780.24, "end": 787.519, "text": "Um, and there has to be an audit record so that you can you can track on like what happened, why the second key was involved and stuff like that."}, {"id": "s163", "start": 787.76, "end": 792.16, "text": "Let me let me just show you this another example of like how this works outside of like the CI domain specifically."}, {"id": "s164", "start": 792.16, "end": 796.079, "text": "So our agent has a key for one of our feature flag services."}, {"id": "s165", "start": 796.079, "end": 801.76, "text": "So on the canary side which is basically our staging traffic and a bunch of like dog fooding customers the agent effectively has the full dial."}, {"id": "s166", "start": 801.76, "end": 815.44, "text": "It has the ability to um ramp up a specific feature flag roll it out to uh all of the canary traffic and it can take it all the way from zero to 100 and it also has the ability to sort of uh look at any bugs that are being filed and toggle it back off and on."}, {"id": "s167", "start": 815.44, "end": 819.519, "text": "What the agents key is not scoped to do is for promoting the flag to real production."}, {"id": "s168", "start": 819.519, "end": 828.32, "text": "The best that an agent can do for now in a lot of cases is that it can propose uh that an that someone actually promote the feature flag in production because it's been tested out in Canary."}, {"id": "s169", "start": 828.32, "end": 829.8389999999999, "text": "But that's pretty much it."}, {"id": "s170", "start": 829.8389999999999, "end": 833.92, "text": "Um the second key in this scenario is not necessarily a new O system."}, {"id": "s171", "start": 833.92, "end": 838.8, "text": "It's a scoped key for production and a scoped key for Canary."}, {"id": "s172", "start": 839.8389999999999, "end": 842.88, "text": "So this is what it looks like day-to-day for for me personally."}, {"id": "s173", "start": 842.88, "end": 849.199, "text": "is like I I ask cla tag in our slack channel to to own the loop the entire loop uh on on rolling out a flag."}, {"id": "s174", "start": 849.199, "end": 854.56, "text": "It can it can basically ask me a clarifying question on whether this is for internal dog fooding group or early access or whatever."}, {"id": "s175", "start": 854.56, "end": 858.399, "text": "Uh and the important part is that I'm not in the middle of any of these things."}, {"id": "s176", "start": 858.399, "end": 862.24, "text": "Every action that the agent is taking is stamped with its own identity and not mine."}, {"id": "s177", "start": 862.24, "end": 867.04, "text": "And that stamp is basically what ties the whole thing the whole thing together."}, {"id": "s178", "start": 867.12, "end": 877.36, "text": "So the these these primitives they compose together nicely because each one asks us a different question right the verbs ask what the agent is touching the rate limit asks how often"}, {"id": "s179", "start": 877.36, "end": 891.44, "text": "and the trip wires catch what happened afterwards and the undo test is sort of the length that I personally used to to size all these three now the original sort of cold open delete that I was showing you the the incident itself the rate limit itself would have capped it at a few couple of tens of workloads"}, {"id": "s180", "start": 891.44, "end": 898.0, "text": "itself the undo test if you would be thinking about it it will basically tell you that you can't unddelete a running job in someone else's namespace."}, {"id": "s181", "start": 898.0, "end": 903.44, "text": "Um so so anything past the cap basically need a human with the with a with a second key."}, {"id": "s182", "start": 903.44, "end": 907.44, "text": "So the the important part is that you don't need all the checks in every right scenario."}, {"id": "s183", "start": 907.44, "end": 911.44, "text": "Only some of these might be relevant for like whatever kind of action you're trying to evaluate."}, {"id": "s184", "start": 911.44, "end": 922.88, "text": "Uh and if any of these really sound familiar, it it should because this is effectively some sort of onboarding checklist for your engineers like what can a new engineer touch, how much rope do they get, who signs off on their operations,"}, {"id": "s185", "start": 922.88, "end": 925.04, "text": "and how do we know it's effectively working?"}, {"id": "s186", "start": 925.04, "end": 926.399, "text": "We just wrote it for people."}, {"id": "s187", "start": 926.399, "end": 930.24, "text": "It's now the same checklist that we want for agents."}, {"id": "s188", "start": 930.959, "end": 933.6, "text": "So where does all the policy that I've been talking about really live?"}, {"id": "s189", "start": 933.6, "end": 936.079, "text": "Uh it's two places and I feel like you need both."}, {"id": "s190", "start": 936.079, "end": 937.519, "text": "The first one is text."}, {"id": "s191", "start": 937.519, "end": 938.639, "text": "Uh that's prompts."}, {"id": "s192", "start": 938.639, "end": 942.399, "text": "That's your context files markdown the agent reads before it can act."}, {"id": "s193", "start": 942.399, "end": 944.9590000000001, "text": "And this is where you can explain your why the the intent."}, {"id": "s194", "start": 944.9590000000001, "end": 949.8389999999999, "text": "We've we got exactly the same sentence that I was showing earlier um written down in a markdown file."}, {"id": "s195", "start": 949.8389999999999, "end": 952.24, "text": "It works about 80% of the time."}, {"id": "s196", "start": 952.24, "end": 956.48, "text": "Uh the the upside is that it's very cheap to change and you can explain the reasoning."}, {"id": "s197", "start": 956.48, "end": 962.079, "text": "The downside is you have to garden it because the the files can grow over time and at the end of the day it's just advice."}, {"id": "s198", "start": 962.079, "end": 966.32, "text": "Uh text can shape the intent but there is no enforcement anywhere."}, {"id": "s199", "start": 966.32, "end": 970.399, "text": "The the second place is infrastructure uh which is the proxy layer for us."}, {"id": "s200", "start": 970.399, "end": 972.639, "text": "So the proxy is is not reading the prompt."}, {"id": "s201", "start": 972.639, "end": 976.639, "text": "It doesn't know why the agent wants to do something and it doesn't really care."}, {"id": "s202", "start": 976.639, "end": 978.079, "text": "It will see a delete happening."}, {"id": "s203", "start": 978.079, "end": 982.88, "text": "It'll see like a budget being crossed and it'll simply return a 403 and that's the whole conversation really."}, {"id": "s204", "start": 982.88, "end": 983.519, "text": "It's narrow."}, {"id": "s205", "start": 983.519, "end": 984.959, "text": "It's deterministic."}, {"id": "s206", "start": 984.959, "end": 988.56, "text": "It it counts, compares, it can allow a delete or deny."}, {"id": "s207", "start": 988.56, "end": 994.16, "text": "What it can't do is explain the why and a clever like prompt injection cannot really talk it out of the rule itself."}, {"id": "s208", "start": 994.16, "end": 995.68, "text": "So you need both."}, {"id": "s209", "start": 995.68, "end": 1002.32, "text": "Uh the text shapes what an agent is trying to do and infra is bounding how wrong can it go."}, {"id": "s210", "start": 1002.9590000000001, "end": 1007.199, "text": "So zooming out, this is where uh the the infrastructure sort of really lives for us."}, {"id": "s211", "start": 1007.199, "end": 1010.8, "text": "So like every agent session has its own proxy running right next to it."}, {"id": "s212", "start": 1010.8, "end": 1013.279, "text": "The agent starts off by reading its own context file."}, {"id": "s213", "start": 1013.279, "end": 1020.8, "text": "The the markdown files that I was showing earlier that's that's the text layer and every outbound call goes through the proxy after that point which is the infrastructure layer."}, {"id": "s214", "start": 1020.8, "end": 1028.319, "text": "So the proxy is not like whatever the agent is trying to do the the proxy is only responsible for stamping that action with the agent's identity."}, {"id": "s215", "start": 1028.319, "end": 1033.76, "text": "Uh like if the if the if the agent is trying to launch a bunch of jobs in a Kubernetes cluster the the proxy is not following it."}, {"id": "s216", "start": 1033.76, "end": 1037.439, "text": "what is following is the stamp itself, the identity itself."}, {"id": "s217", "start": 1037.439, "end": 1041.919, "text": "So the in this example, the cluster would write the stamp onto the job as a label."}, {"id": "s218", "start": 1041.919, "end": 1053.679, "text": "Um and every child job or anything that's happening afterwards simply inherits the same identity and the every safeguard that is there in the rest of our systems that that are simply they're simply reading that like one label."}, {"id": "s219", "start": 1053.679, "end": 1063.28, "text": "Uh whether it's ownership, whether it's kotaas, rate limits, approvals, trip wires, whatever it is, they're all keyed on the same stamp and the agent never got to touch it."}, {"id": "s220", "start": 1063.679, "end": 1065.52, "text": "So that's roughly the shape of it."}, {"id": "s221", "start": 1065.52, "end": 1073.6, "text": "But before I wrap up, I want to spend like 30 seconds on why it has to be a proxy layer, like a different layer that is doing the stamping on this identity and not the caller itself."}, {"id": "s222", "start": 1073.6, "end": 1076.4, "text": "Because without it, the agent can roughly pick a different name."}, {"id": "s223", "start": 1076.4, "end": 1080.559, "text": "Um, and every limit that you've basically set resets."}, {"id": "s224", "start": 1081.12, "end": 1085.6, "text": "So say the agent has the ability to set its own identity in a header, right?"}, {"id": "s225", "start": 1085.6, "end": 1091.52, "text": "So let's say it hits a specific limit and what's the easiest fix from an agent's point of view that it can do?"}, {"id": "s226", "start": 1091.52, "end": 1092.96, "text": "it'll just change the header."}, {"id": "s227", "start": 1092.96, "end": 1099.039, "text": "In this case, it'll just say instead of such in such in two and voila, you just have a fresh budget to work with."}, {"id": "s228", "start": 1099.039, "end": 1101.76, "text": "Now, in this case, you technically don't have a rate limit."}, {"id": "s229", "start": 1101.76, "end": 1103.28, "text": "You just have a suggestion."}, {"id": "s230", "start": 1103.28, "end": 1106.32, "text": "Uh with the proxy in the path, the agent never gets to say who it is."}, {"id": "s231", "start": 1106.32, "end": 1107.84, "text": "The proxy already knows."}, {"id": "s232", "start": 1107.84, "end": 1115.12, "text": "It's the thing that's holding real credentials and it stamps every call with the identity that it already knows, not the one that agent claims."}, {"id": "s233", "start": 1115.12, "end": 1128.32, "text": "And because proxy is the one that is stamping, you also get this per session ID so that you're able to differentiate different sessions that are running all for you and see which one's overreacting or which one's not acting as it's supposed to be."}, {"id": "s234", "start": 1129.039, "end": 1139.76, "text": "U so again just stuffs that I want you to take home with is give the agent access to verbs that would fail out loud uh and keep the human on the ones that can fail out quietly."}, {"id": "s235", "start": 1139.76, "end": 1146.08, "text": "Two, you you put a ceiling on every right and that has the ability to refill on its own so nobody's effectively filing tickets."}, {"id": "s236", "start": 1146.08, "end": 1151.52, "text": "Three, you watch the aggregate and not the individual calls that help you understand the agents behavior."}, {"id": "s237", "start": 1151.52, "end": 1154.48, "text": "Um, and then you fix whatever you can with the sentence."}, {"id": "s238", "start": 1154.48, "end": 1161.76, "text": "And four, you use the undo test to sort of size all of these three or any other u primitive that you have for your own write operations."}, {"id": "s239", "start": 1161.76, "end": 1168.48, "text": "And underneath all of this uh is is this concept of identity which has to come from the infrastructure, not from the request."}, {"id": "s240", "start": 1168.48, "end": 1169.679, "text": "I feel like that's one rule."}, {"id": "s241", "start": 1169.679, "end": 1174.0, "text": "If you get that one rule right, everything else is uh just just tuning."}, {"id": "s242", "start": 1174.0, "end": 1175.738, "text": "Thank you."}, {"id": "s243", "start": 1175.738, "end": 1177.738, "text": "[applause]"}, {"id": "s244", "start": 1190.148, "end": 1192.148, "text": "[music]"}]}, {"id": "s-aixZYJG4c", "title": "The Last Human Code Review: Building Trust in AI-Generated Code — Itamar Friedman, Qodo", "channel": "AI Engineer", "duration": 1134, "upload_date": null, "url": "https://www.youtube.com/watch?v=s-aixZYJG4c", "api": "/api/talks/s-aixZYJG4c.json", "summary_url": "/#s-aixZYJG4c", "transcript": {"html": "/transcripts/s-aixZYJG4c.html", "txt": "/transcripts/s-aixZYJG4c.txt", "vtt": "/transcripts/s-aixZYJG4c.vtt"}, "sentences": [{"id": "s1", "start": 12.48, "end": 15.6, "text": "Are you all set up with your AI factory?"}, {"id": "s2", "start": 15.6, "end": 17.72, "text": "Everything is smooth."}, {"id": "s3", "start": 17.72, "end": 22.4, "text": "As you're sitting here, your code is being deployed, errors growing, right?"}, {"id": "s4", "start": 22.4, "end": 24.56, "text": "If it's like that, raise your hand."}, {"id": "s5", "start": 24.56, "end": 25.04, "text": "No?"}, {"id": "s6", "start": 25.04, "end": 25.88, "text": "Oh, okay."}, {"id": "s7", "start": 25.88, "end": 27.48, "text": "Two people, great."}, {"id": "s8", "start": 27.48, "end": 41.04, "text": "Um Let us know like before and after this talk what they are and and do you feel like there's a bottleneck, a new bottleneck that is not on writing code, rather somewhere else else in the STLC?"}, {"id": "s9", "start": 41.04, "end": 47.36, "text": "Is that your biggest thing to tackle if if you are tackling that right now?"}, {"id": "s10", "start": 47.36, "end": 48.8, "text": "Okay, so you're in the right place."}, {"id": "s11", "start": 48.8, "end": 63.88, "text": "And what about like code review, verifying that the code work according to your intent, according to your architecture, standards, best practices, etc. Is this something that you're tackling day-to-day or week-by-week?"}, {"id": "s12", "start": 63.88, "end": 65.84, "text": "Okay, so you're you're in the right place."}, {"id": "s13", "start": 65.84, "end": 68.92, "text": "So, I'm Adam Ouriel Friedman, the CEO and co-founder of Codo."}, {"id": "s14", "start": 68.92, "end": 74.44, "text": "Um I don't share it too much, but Codo stands for quality of development optimization."}, {"id": "s15", "start": 74.44, "end": 91.56, "text": "Our mission and and uh is to help you all have a code governance code review platform that understand your code base, your tribal knowledge, your best practices, and that does not come off the shelf"}, {"id": "s16", "start": 91.56, "end": 92.8, "text": "from a model."}, {"id": "s17", "start": 92.8, "end": 100.52000000000001, "text": "It requires a system that optimize for you as we go, and that's uh why we decided to name our company uh this way."}, {"id": "s18", "start": 100.52000000000001, "end": 107.88, "text": "Uh so, uh I'm going to talk about the last human code review, and what do we need to do in order to get there?"}, {"id": "s19", "start": 107.88, "end": 108.72, "text": "Okay?"}, {"id": "s20", "start": 108.72, "end": 113.52000000000001, "text": "And um can you switch instead of seeing myself seeing the presentation here?"}, {"id": "s21", "start": 113.52000000000001, "end": 114.32, "text": "Thank you."}, {"id": "s22", "start": 114.32, "end": 122.92, "text": "Um so, I I think like first of all, we need to agree on why do we have code review at all?"}, {"id": "s23", "start": 122.92, "end": 128.64, "text": "So, I think basically these are two buckets that we should agree on, and I think I think it's quite common."}, {"id": "s24", "start": 128.64, "end": 141.36, "text": "One is we want to validate the code that is in high quality, safe, maintainable, the right architecture, according to our best practice, etc. The second re- reason is actually alignment and learning."}, {"id": "s25", "start": 141.36, "end": 141.56, "text": "Right?"}, {"id": "s26", "start": 141.56, "end": 153.76, "text": "Like where senior developers, for example, has one last chance, a gateway, a gatekeeper before uh it's being uh code is being pushed to production to have that alignment and teaching,"}, {"id": "s27", "start": 153.76, "end": 154.28, "text": "right?"}, {"id": "s28", "start": 154.28, "end": 162.8, "text": "So, these are the two reasons, and then that's what you need to think if you're trying to automate the code review, can human still do that?"}, {"id": "s29", "start": 162.8, "end": 171.28, "text": "And this if this is the right place, the the code review process, the pull request process, is that the right place to still doing these two things?"}, {"id": "s30", "start": 171.28, "end": 184.0, "text": "If you have uh new tools, new processes that will help you unblock this bottleneck, but let you still do these two buckets of tasks, then you're on the right path."}, {"id": "s31", "start": 184.0, "end": 193.2, "text": "Uh so, we're here to ask yes, no, is human code review still optional end of 2026?"}, {"id": "s32", "start": 193.2, "end": 196.959, "text": "Uh is it becoming optional or is it still mandatory?"}, {"id": "s33", "start": 196.959, "end": 199.0, "text": "Okay, that's that's what we're here to answer."}, {"id": "s34", "start": 199.0, "end": 209.64, "text": "Do you think like every PR or the majority of PRs are going to be reviewed line by line or, you know, bucket by bucket in the in the chunks and the hunks"}, {"id": "s35", "start": 209.64, "end": 211.2, "text": "by our developers, raise your hand?"}, {"id": "s36", "start": 211.2, "end": 218.4, "text": "Or do you think Do you think by end of this year your developers are still going to review diff by diff?"}, {"id": "s37", "start": 218.48, "end": 219.07999999999998, "text": "Okay."}, {"id": "s38", "start": 219.07999999999998, "end": 221.959, "text": "So, try to think why why is that happening?"}, {"id": "s39", "start": 221.959, "end": 232.68, "text": "Now, I I I wanted to share with you that yesterday night we did a drone show, and I had to uh opportunity to talk to different people during that drone show, different uh engineering leaders."}, {"id": "s40", "start": 232.68, "end": 242.56, "text": "And what I can tell you is that I saw two very different groups of school of thoughts, okay?"}, {"id": "s41", "start": 242.56, "end": 248.2, "text": "They both agree that bugs are coming in different shapes."}, {"id": "s42", "start": 248.2, "end": 250.32, "text": "For some, this is fine."}, {"id": "s43", "start": 250.32, "end": 255.56, "text": "And we're just going to fix that quickly after it hits the production and for some not."}, {"id": "s44", "start": 255.56, "end": 258.32, "text": "So so actually we do see two teams."}, {"id": "s45", "start": 258.32, "end": 261.4, "text": "Those that are thinking about the room is split into two."}, {"id": "s46", "start": 261.4, "end": 271.12, "text": "Those are thinking like, \"Hey, we have to let make sure that every piece of line is is trusted and and the human must review that."}, {"id": "s47", "start": 271.12, "end": 287.15999999999997, "text": "Or the other group somewhat reckless or so saying, \"Let's let's like push those bugs into production and we quickly fix that and that's how we actually do things because it's much faster."}, {"id": "s48", "start": 287.15999999999997, "end": 291.68, "text": "Velocity is more important than getting getting things right."}, {"id": "s49", "start": 291.68, "end": 295.2, "text": "And I think like you need to think like where do you sit?"}, {"id": "s50", "start": 295.2, "end": 305.68, "text": "Of course I put it in two two sides of the spectrum but there's some somewhere in in between and you you need to think what what's your philosophy because that will lead you to different"}, {"id": "s51", "start": 305.68, "end": 316.919, "text": "milestones or different tools that you need to use in order to get that confidence that you can skip over a human review in the pull request in the code review."}, {"id": "s52", "start": 316.919, "end": 320.16, "text": "So let's start talking about what is the process?"}, {"id": "s53", "start": 320.16, "end": 321.72, "text": "How do we need to start thinking about it?"}, {"id": "s54", "start": 321.72, "end": 326.72, "text": "So I claim that models are not not a barrier anymore."}, {"id": "s55", "start": 326.72, "end": 335.72, "text": "Like it's not a matter of of the you know a model doing a good good good job or not, having the right reasoning or not."}, {"id": "s56", "start": 335.72, "end": 347.6, "text": "Basically, the models are improving but I'm telling you I just came from one of the leading labs where we are inspecting how benchmarks for code review did not change a lot"}, {"id": "s57", "start": 347.6, "end": 349.92, "text": "throughout the latest model."}, {"id": "s58", "start": 349.92, "end": 353.56, "text": "The The key here is actually context."}, {"id": "s59", "start": 353.56, "end": 353.88, "text": "Okay?"}, {"id": "s60", "start": 353.88, "end": 367.28, "text": "Like the models, if you give them the right context, and what is that right context we're going to talk about, they could already reason pretty well over what is the issues that we need What are the issues that we need to surface"}, {"id": "s61", "start": 367.28, "end": 369.84, "text": "for a certain change in the code?"}, {"id": "s62", "start": 369.84, "end": 376.28, "text": "Otherwise, if you don't have the context, even the best model out there, they will give you different types of of uh bugs and issues."}, {"id": "s63", "start": 376.28, "end": 383.84, "text": "Some of them are really good, but in many cases they will simply tell you, \"Hey, did you consider error handling uh uh like or not?\""}, {"id": "s64", "start": 383.84, "end": 387.84, "text": "By the way, error handling could be like a really good thing to handle."}, {"id": "s65", "start": 387.84, "end": 388.72, "text": "Depends."}, {"id": "s66", "start": 388.72, "end": 391.4, "text": "In some cases it's critical, in some cases are not."}, {"id": "s67", "start": 391.4, "end": 394.32, "text": "And again, the context is what what matters."}, {"id": "s68", "start": 394.32, "end": 399.08, "text": "Right now, our context is like spread all across."}, {"id": "s69", "start": 399.08, "end": 402.919, "text": "Like we have agents.mds, cloud.mds, skills.mds."}, {"id": "s70", "start": 402.919, "end": 412.24, "text": "And And the thing is that each each one of them like has like different standards, uh different or organization and sub organization are dealing with different differently."}, {"id": "s71", "start": 412.24, "end": 416.76, "text": "Even within a certain team, you might be using that that differently."}, {"id": "s72", "start": 416.76, "end": 427.04, "text": "And you're actually maybe using like the same uh one one team is using uh the same agent to do code review and sorry, coding and code review."}, {"id": "s73", "start": 427.04, "end": 429.48, "text": "The other might be using something else."}, {"id": "s74", "start": 429.48, "end": 435.0, "text": "And all of that does not bring you the trust and consistency that you're looking uh towards."}, {"id": "s75", "start": 435.0, "end": 447.64, "text": "Um By the way, like you also might have like coding agents that are running in your IDE, but you're probably building the AI factory that running those agents like in workflows to automate some of the coding."}, {"id": "s76", "start": 447.64, "end": 457.64, "text": "I see teams that are already uh having more lines of code being uh shipped that are not generated from the CLI or or the IDE."}, {"id": "s77", "start": 457.64, "end": 459.8, "text": "So, how do you control all that?"}, {"id": "s78", "start": 459.8, "end": 466.96, "text": "Like that's that's missing uh like in right now like in our in our tools in our infrastructure."}, {"id": "s79", "start": 466.96, "end": 474.52, "text": "And let alone if you add those MCPs and and and rag like style context."}, {"id": "s80", "start": 474.52, "end": 477.56, "text": "I don't know if you have like great visibility."}, {"id": "s81", "start": 477.56, "end": 479.36, "text": "There are ways to tackle that."}, {"id": "s82", "start": 479.36, "end": 480.96, "text": "There's great talks out there."}, {"id": "s83", "start": 480.96, "end": 489.52, "text": "Check how you can have like MCP versioning and have data sets for every like a benchmark for every MCP change, but that's hard to manage."}, {"id": "s84", "start": 489.52, "end": 495.0, "text": "We're missing like a governance layer for us to move to the next level."}, {"id": "s85", "start": 495.0, "end": 499.16, "text": "Okay, like where we can actually trust the code without human reviewing it."}, {"id": "s86", "start": 499.16, "end": 501.84, "text": "So, where where is that context?"}, {"id": "s87", "start": 501.84, "end": 502.76, "text": "Where is that context?"}, {"id": "s88", "start": 502.76, "end": 511.8, "text": "Basically, I would say experience, tribal knowledge, wisdom of your developers is a lot in their heads."}, {"id": "s89", "start": 511.8, "end": 513.599, "text": "They are in some documents."}, {"id": "s90", "start": 513.599, "end": 522.44, "text": "There are documents, infrastructure documents, but a lot By the way, a lot of them is our slacks or or teams or or so."}, {"id": "s91", "start": 522.44, "end": 527.12, "text": "The data is there, but a lot of the information are are in your developer heads."}, {"id": "s92", "start": 527.12, "end": 530.44, "text": "And we need like to to codify them."}, {"id": "s93", "start": 530.44, "end": 545.0, "text": "Now, um I think like basically another thing that I'm saying like when I'm saying that we need to codify human knowledge, what we're actually saying is that we're trying to build an interface"}, {"id": "s94", "start": 545.0, "end": 551.28, "text": "for agents an interface for humans to collaborate each other on that on that knowledge."}, {"id": "s95", "start": 551.28, "end": 555.4, "text": "And that's a very important a very important point."}, {"id": "s96", "start": 555.4, "end": 568.4, "text": "When you want to extract that information, the tribal knowledge from your like senior developers, etc., and codify that, do you codify that only in agents' language?"}, {"id": "s97", "start": 568.4, "end": 578.36, "text": "Which is very maybe verbose and structured, or you want to codify that in a wiki style get started and all that what developers love love doing."}, {"id": "s98", "start": 578.36, "end": 589.88, "text": "And the answer is that you probably need to build your context lake, your context engine, as I mentioned, that's the the the the real like gold mine here to to get the code review"}, {"id": "s99", "start": 589.88, "end": 591.76, "text": "like auto automated."}, {"id": "s100", "start": 591.76, "end": 594.2, "text": "You have to have it fitting for both."}, {"id": "s101", "start": 594.2, "end": 606.36, "text": "So, what you're seeing here, for example, is that Codo as an example, but you can use other tools, help you collect all the rules and standards that your team"}, {"id": "s102", "start": 606.36, "end": 610.24, "text": "own, that your team is using day-to-day."}, {"id": "s103", "start": 610.24, "end": 616.64, "text": "And then, it will provide that information during the review for humans."}, {"id": "s104", "start": 616.64, "end": 621.2, "text": "Hey, notice that Codo used four rules."}, {"id": "s105", "start": 621.2, "end": 629.8, "text": "Uh sorry, uh used uh uh many rules and four are violated, and that includes a link to all the rules that are were being used."}, {"id": "s106", "start": 629.8, "end": 632.64, "text": "That's for human in order to trust."}, {"id": "s107", "start": 632.64, "end": 640.0, "text": "Okay, in order to trust the results that coming from your code review tool, etc., you have to build that interface for for human."}, {"id": "s108", "start": 640.0, "end": 643.56, "text": "You have to accumulate that knowledge and have an interface for human."}, {"id": "s109", "start": 643.56, "end": 648.4, "text": "But, you also want to have an interface that is dedicated for agents."}, {"id": "s110", "start": 648.4, "end": 656.56, "text": "What you're seeing here, uh for example, is a com- comment, for example, by Codo that is speaking to another agent."}, {"id": "s111", "start": 656.56, "end": 665.28, "text": "Hey, dear agent, Codo just reviewed this uh PR and has found five different issues."}, {"id": "s112", "start": 665.28, "end": 680.04, "text": "Codo already spend uh uh like uh some back background task and use cloud code, for example, harness in order to do fixes, and there is a closed PR, like you can see here in the top right, there is some closed PR with all the fixes,"}, {"id": "s113", "start": 680.04, "end": 693.48, "text": "and now, when an agent is coming to review this PR once again, then it has like a cherry-picking moment uh with everything that all the code that is actually is passing your rules,"}, {"id": "s114", "start": 693.48, "end": 699.36, "text": "your standard, uh and everything that we're like more architectural decision that we're going to talk about."}, {"id": "s115", "start": 699.36, "end": 712.56, "text": "So, what what I said so far is that just to to like recap so far, if you want to trust and you want to get to a point where you're trusting the code that's being shipped,"}, {"id": "s116", "start": 712.56, "end": 719.52, "text": "you need to have the right context that is being gathered and being used during the code review process."}, {"id": "s117", "start": 719.52, "end": 729.56, "text": "Then, you will see that this code review process have links and information for human and have links and information for for agents, okay?"}, {"id": "s118", "start": 729.56, "end": 737.72, "text": "And when that is in place, you will see that developers are writing less and less comments in the pull request."}, {"id": "s119", "start": 737.72, "end": 744.88, "text": "And then after 100 of these pull requests, there's human no more human review, you know that you're ready for for automation."}, {"id": "s120", "start": 744.88, "end": 745.52, "text": "Okay?"}, {"id": "s121", "start": 745.52, "end": 748.56, "text": "Now, back to back to the context."}, {"id": "s122", "start": 748.56, "end": 751.4, "text": "So far, I talked about relatively simple context."}, {"id": "s123", "start": 751.4, "end": 763.64, "text": "I talked about uh rules and standards and skills, but actual the human knowledge that the tribal knowledge in your organization sits in understanding the system architecture."}, {"id": "s124", "start": 763.64, "end": 770.8389999999999, "text": "What are the P0s, the the bugs that actually made an outage outage for for you, unfortunately, in the last like 3 months or so?"}, {"id": "s125", "start": 770.8389999999999, "end": 777.44, "text": "When a microservice uh one changed its contract and broke a microservice two, right?"}, {"id": "s126", "start": 777.44, "end": 789.52, "text": "That is does not exist in most code review and and like if you try to build yourself, it's really hard to build, but it is available in some of the those code review uh solution that is dedicated for that."}, {"id": "s127", "start": 789.52, "end": 797.44, "text": "For example, what you're seeing here is the graph being built for a certain microservice and all the repos and and their connection."}, {"id": "s128", "start": 797.44, "end": 808.32, "text": "And and each node and edge, there is what is the con- if it's an edge, what is the contract between two uh piece of your software, but also links to history"}, {"id": "s129", "start": 808.32, "end": 816.92, "text": "of discussions between developers that they had when they fixed an issue because a root cause analysis and now you need to codify that."}, {"id": "s130", "start": 816.92, "end": 818.16, "text": "Okay?"}, {"id": "s131", "start": 818.16, "end": 829.28, "text": "And when you get to to that level of a context engine, now you're ready to start approving and blocking PRs automatically."}, {"id": "s132", "start": 829.28, "end": 845.36, "text": "And you want to do that not just by letting AI some like choose by yourself, rather giving some semantic rules that that for example, when you when do you guys approve or or or block"}, {"id": "s133", "start": 845.36, "end": 846.36, "text": "a PR?"}, {"id": "s134", "start": 846.36, "end": 851.32, "text": "And that knowledge also needs to be accumulated as part of your your context."}, {"id": "s135", "start": 851.32, "end": 866.4, "text": "What I'm actually saying is that software development, at least code governance, is going to change from reviewing your pull request to actually reviewing your entire software development from a graph"}, {"id": "s136", "start": 866.4, "end": 880.8389999999999, "text": "abstraction, where you're seeing your PRs as bubbles with all the issues that might happen even with three different PRs are in on the fly, when they which which contract they might bridge"}, {"id": "s137", "start": 880.8389999999999, "end": 883.56, "text": "they they might ruin."}, {"id": "s138", "start": 883.8, "end": 884.8, "text": "Okay?"}, {"id": "s139", "start": 884.8, "end": 890.12, "text": "And that's how the software development future is going to look like."}, {"id": "s140", "start": 890.12, "end": 894.64, "text": "What you need to do in order to get there is to codify your standards."}, {"id": "s141", "start": 894.64, "end": 901.48, "text": "It needs to be built in a way that humans can trust and audit and control."}, {"id": "s142", "start": 901.48, "end": 918.16, "text": "You need to build real-time self-learning context, learning from PR history, learning from accepted and unaccepted learning from discussions between between developers, learning between learning like from those cases that broke your production."}, {"id": "s143", "start": 918.16, "end": 922.36, "text": "And that context needs to be not just like thrown into files."}, {"id": "s144", "start": 922.36, "end": 930.24, "text": "It needs to to to to sit and locate it in a place that agent understand where is that context fitting."}, {"id": "s145", "start": 930.24, "end": 935.92, "text": "And then you need the governance infrastructure that gives you that visibility of what's happening."}, {"id": "s146", "start": 935.92, "end": 939.76, "text": "Rather the graph I presented, but there's more to that."}, {"id": "s147", "start": 939.76, "end": 947.76, "text": "Okay, I'm going to show you very soon another visualization that helps you understand the overall status of your PRs and software."}, {"id": "s148", "start": 947.76, "end": 956.12, "text": "If you're already shipping AI-generated code faster than your human can review, I'm actually saying that you are in the problem."}, {"id": "s149", "start": 956.12, "end": 958.4, "text": "You're not like ahead of the problem."}, {"id": "s150", "start": 958.4, "end": 969.56, "text": "You you if you put the infrastructure, if you gather the context, if you start accumulating how code review can be automated for you, then that's where you're going to get the 10x"}, {"id": "s151", "start": 969.56, "end": 976.2, "text": "velocity that you're being promising your CEO or yourself or your or your developers, because otherwise it's a bottleneck."}, {"id": "s152", "start": 976.2, "end": 983.72, "text": "You need to own your rules and standards and codify them and get analytics and statistics about each one of them."}, {"id": "s153", "start": 983.72, "end": 993.8, "text": "How many times they're being caught, which rules and standards and skill is actually being used during the review process, and it is useful or not, or does it need to get an update."}, {"id": "s154", "start": 993.8, "end": 998.08, "text": "You need to have visual full visualization of your software graph."}, {"id": "s155", "start": 998.08, "end": 998.96, "text": "What is the connection?"}, {"id": "s156", "start": 998.96, "end": 1000.2, "text": "What are the contracts?"}, {"id": "s157", "start": 1000.2, "end": 1000.92, "text": "What is working?"}, {"id": "s158", "start": 1000.92, "end": 1001.88, "text": "What is not working?"}, {"id": "s159", "start": 1001.88, "end": 1007.92, "text": "What are two PRs are going to crash very soon because they're touching the same agent and they don't and they don't know."}, {"id": "s160", "start": 1007.92, "end": 1013.24, "text": "And you need to start learning how to auto approve and auto block."}, {"id": "s161", "start": 1013.24, "end": 1015.56, "text": "That won't happen in like immediately."}, {"id": "s162", "start": 1015.56, "end": 1030.04, "text": "That needs to gradually being automated for you step by step by adding more rules for blocking and more rules for for for approving over time."}, {"id": "s163", "start": 1031.079, "end": 1043.56, "text": "So, trustworthy automated review, your rules, your standards, in your software graph placed in the right edge and the right node of your software."}, {"id": "s164", "start": 1043.56, "end": 1050.84, "text": "Learning from the tribal knowledge of discussions, of history of your software, and codifying that."}, {"id": "s165", "start": 1050.84, "end": 1058.8, "text": "There's so much tribal knowledge what to do and not to do, and that needs to be codified as well, both for the agents and for the humans."}, {"id": "s166", "start": 1058.8, "end": 1064.12, "text": "And basically, you need to accumulate that experience and codify that."}, {"id": "s167", "start": 1064.12, "end": 1071.88, "text": "And sorry for the buzz or whatever you want to call it, that's moving from artificial intelligence to artificial wisdom."}, {"id": "s168", "start": 1071.88, "end": 1079.84, "text": "Because right now, you know better than I that your developer holds the judgement of what's bad and what's good."}, {"id": "s169", "start": 1079.84, "end": 1082.84, "text": "It's not your your software not your AI tools."}, {"id": "s170", "start": 1082.84, "end": 1096.8, "text": "If you want to get to a point where judgement is moving to your AI tools, that's AI wisdom where that experience need to be codified in the right way, the right place for agents and humans."}, {"id": "s171", "start": 1096.8, "end": 1099.28, "text": "And that's where we are here, Codota, to help you."}, {"id": "s172", "start": 1099.28, "end": 1104.12, "text": "And our vision and mission is not far away from now."}, {"id": "s173", "start": 1104.12, "end": 1113.04, "text": "We want to reach in 2027 to a place where you have zero outages, zero bugs in production, at least the critical and the high ones."}, {"id": "s174", "start": 1113.04, "end": 1114.56, "text": "That's why we're here."}, {"id": "s175", "start": 1114.56, "end": 1117.6, "text": "Thank you so much for having me."}]}, {"id": "s4r6nk5WsZw", "title": "MCP Tasks (async): Why Aren't Any Agents Supporting Them? — Cornelia Davis, Temporal", "channel": "AI Engineer", "duration": 1434, "upload_date": null, "url": "https://www.youtube.com/watch?v=s4r6nk5WsZw", "api": "/api/talks/s4r6nk5WsZw.json", "summary_url": "/#s4r6nk5WsZw", "transcript": {"html": "/transcripts/s4r6nk5WsZw.html", "txt": "/transcripts/s4r6nk5WsZw.txt", "vtt": "/transcripts/s4r6nk5WsZw.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.48, "end": 18.6, "text": "I know it's 1 minute ahead, but these 20-minute sessions are really short, so I'm going to get started."}, {"id": "s3", "start": 18.6, "end": 25.84, "text": "So, title of my talk you all have seen cuz you're all here, which is why the heck aren't any agents supporting MCP tasks."}, {"id": "s4", "start": 25.84, "end": 30.0, "text": "If you don't know what tasks are, don't worry, you will know in just a moment."}, {"id": "s5", "start": 30.0, "end": 34.68, "text": "But, the first answer to that question is, well, cuz they're smart."}, {"id": "s6", "start": 34.68, "end": 37.28, "text": "The people who are building those clients are smart."}, {"id": "s7", "start": 37.28, "end": 44.76, "text": "What I mean by that is that the MCP tasks specification that came out in November was marked as experimental."}, {"id": "s8", "start": 44.76, "end": 52.08, "text": "And so, well, you might shrug and say, well, gosh, those clients and servers, they're all supporting a whole bunch of experimental things."}, {"id": "s9", "start": 52.08, "end": 54.48, "text": "Why not MCP tasks?"}, {"id": "s10", "start": 54.48, "end": 58.64, "text": "Well, again, you'll see the answer to that as we move forward."}, {"id": "s11", "start": 58.64, "end": 63.84, "text": "Um the next answer to that question is, well, they're pretty involved."}, {"id": "s12", "start": 63.84, "end": 71.64, "text": "Um there's a lot of complexity in here, and that's what I want to do over the next 20 minutes is teach you some of that complexity."}, {"id": "s13", "start": 71.64, "end": 74.03999999999999, "text": "Quick intro, my name is Cornelia Davis."}, {"id": "s14", "start": 74.03999999999999, "end": 76.84, "text": "I'm a technologist at uh Temporal."}, {"id": "s15", "start": 76.84, "end": 79.03999999999999, "text": "Uh we're distributed systems stuff."}, {"id": "s16", "start": 79.03999999999999, "end": 91.44, "text": "I have a long history in distributed systems, did a whole bunch of stuff in the microservices era, um including Cloud Foundry, Kubernetes, GitOps, Weave Works, all of that stuff, and I even wrote a book about that."}, {"id": "s17", "start": 91.44, "end": 92.88, "text": "That's who I am."}, {"id": "s18", "start": 92.88, "end": 102.08, "text": "Today's agenda in the next 19 minutes is that rather than just talking about things in the abstract, I'm going to ground us in a very concrete example."}, {"id": "s19", "start": 102.08, "end": 105.4, "text": "So, I'm going to give you the lay of the land of that concrete example."}, {"id": "s20", "start": 105.4, "end": 108.16, "text": "Then, I'm going to give you an overview of MCP tasks."}, {"id": "s21", "start": 108.16, "end": 113.12, "text": "Quick question, who here is wants to do things with tasks?"}, {"id": "s22", "start": 113.12, "end": 115.24000000000001, "text": "Async MCP tools."}, {"id": "s23", "start": 115.24000000000001, "end": 116.08, "text": "Okay."}, {"id": "s24", "start": 116.08, "end": 118.8, "text": "So, I'm going to give you a little bit of an overview."}, {"id": "s25", "start": 118.8, "end": 121.72, "text": "Um then we're going to talk about it MCP tasks V1."}, {"id": "s26", "start": 121.72, "end": 127.28, "text": "That's the spec that came out in November and spoiler alert, there's a new one coming out in July."}, {"id": "s27", "start": 127.28, "end": 131.76, "text": "So, that comment that I made about them being smart about not implementing it yet."}, {"id": "s28", "start": 131.76, "end": 134.2, "text": "Well, there's some pretty radical changes."}, {"id": "s29", "start": 134.2, "end": 143.68, "text": "So, I'm going to show you um what's happening with V2 and I actually have some live demos to show all this working and then we'll have some takeaways at the end."}, {"id": "s30", "start": 143.68, "end": 149.16, "text": "So, the use case that we're going to talk about here is a simple purchase order use case."}, {"id": "s31", "start": 149.16, "end": 155.0, "text": "So, the use case is you're going to get in a purchase order and then it's going to go through a number of steps."}, {"id": "s32", "start": 155.0, "end": 166.2, "text": "It's going to record the fact that the goods were received and then it's going to do in parallel, it's going to do some back office stuff updating inventory, sending out notifications"}, {"id": "s33", "start": 166.2, "end": 171.0, "text": "and then in parallel to that it's going to pay some invoices."}, {"id": "s34", "start": 171.0, "end": 175.76, "text": "Now, the invoicing is going to happen via an MCP tool."}, {"id": "s35", "start": 175.76, "end": 181.08, "text": "Now, that MCP tool is has itself a number of steps."}, {"id": "s36", "start": 181.08, "end": 188.68, "text": "So, it's going to validate against an ERP, then it's going to have a little human in the loop to request approval, maybe."}, {"id": "s37", "start": 188.68, "end": 194.239, "text": "Um then it's going to reconcile against the ERP again, do a little bit more human in the loop and so on."}, {"id": "s38", "start": 194.239, "end": 203.28, "text": "So, you can see that on the right hand side that MCP server that's going to be it's a tool that's going to be doing the invoice processing for us."}, {"id": "s39", "start": 203.28, "end": 205.07999999999998, "text": "It is long running."}, {"id": "s40", "start": 205.07999999999998, "end": 211.92000000000002, "text": "It's not going to work in a request response style and that's what MCP tasks are all about."}, {"id": "s41", "start": 211.92000000000002, "end": 224.72, "text": "And what we're going to do and I'm today's talk is not about temporal, but really what I did here was just showed you a couple of snippets of the code and yes, I will be sharing all the code for what I'm showing today."}, {"id": "s42", "start": 224.72, "end": 230.0, "text": "Couple of snippets here and the real point that I want you to look at is that reject or approve."}, {"id": "s43", "start": 230.0, "end": 236.28, "text": "That is showing you that there is a mechanism for signaling into a long-running process."}, {"id": "s44", "start": 236.28, "end": 238.04, "text": "And that's really the point."}, {"id": "s45", "start": 238.04, "end": 242.36, "text": "And that's what we need is that this is all about asynchronous."}, {"id": "s46", "start": 242.36, "end": 244.92, "text": "So, you understand what MCP tasks are now?"}, {"id": "s47", "start": 244.92, "end": 257.28, "text": "MCP tasks are allowing you to have an MCP tool that you can invoke and then it is long-running in the background, and then eventually you can get back some response."}, {"id": "s48", "start": 257.28, "end": 261.48, "text": "So, let's talk about that MCP tasks overview."}, {"id": "s49", "start": 261.48, "end": 264.2, "text": "This is a very simple sequence diagram."}, {"id": "s50", "start": 264.2, "end": 270.84, "text": "It's exactly what you all would expect when I tell you that MCP tasks are long-running tasks."}, {"id": "s51", "start": 270.84, "end": 276.84000000000003, "text": "You're going to invoke a tool, and instead of getting back a response, you're going to get a handle."}, {"id": "s52", "start": 276.84000000000003, "end": 279.04, "text": "And you can interact with that handle, right?"}, {"id": "s53", "start": 279.04, "end": 280.36, "text": "Obvious, right?"}, {"id": "s54", "start": 280.36, "end": 282.44, "text": "This is This isn't rocket science."}, {"id": "s55", "start": 282.44, "end": 284.64, "text": "Looks easy enough, right?"}, {"id": "s56", "start": 284.64, "end": 293.4, "text": "Well, it turns out that if you actually want this to work over long horizons, it gets a little bit more complicated than that."}, {"id": "s57", "start": 293.4, "end": 295.96, "text": "So, what are some of those complications?"}, {"id": "s58", "start": 295.96, "end": 307.16, "text": "Well, you can have all sorts of the longer something runs, the more likely there's going to be some kind of infrastructure blip that's going to cause a problem in that long-running task."}, {"id": "s59", "start": 307.16, "end": 320.44, "text": "So, you could have network blips, you could have network challenges, you could have humans that you're waiting for their in-a-loop part, and they go away on vacation like I'm about to, yay,"}, {"id": "s60", "start": 320.44, "end": 322.36, "text": "um day after tomorrow."}, {"id": "s61", "start": 322.36, "end": 325.0, "text": "Um or processes can crash."}, {"id": "s62", "start": 325.0, "end": 326.56, "text": "So, your agent can go down."}, {"id": "s63", "start": 326.56, "end": 332.88, "text": "The agent that's processing the purchase order can go down, or your MCP server can go down as well."}, {"id": "s64", "start": 332.88, "end": 339.68, "text": "So, all of those problems you need to deal with, and those are the things that makes it a little bit more difficult."}, {"id": "s65", "start": 339.68, "end": 352.15999999999997, "text": "Now, in addition to what I've told you about MCP tasks so far that you're going to get back a handle that you can interact with by the specification those MCP"}, {"id": "s66", "start": 352.15999999999997, "end": 355.64, "text": "tasks can't disappear."}, {"id": "s67", "start": 355.64, "end": 363.44, "text": "This is verbage from the spec itself that says once you've locked launched a task it has to be durable."}, {"id": "s68", "start": 363.44, "end": 375.16, "text": "What that means is all of these things that I just showed you on the previous screen clients humans going away on vacation servers going down clients going down connections"}, {"id": "s69", "start": 375.16, "end": 385.32, "text": "disconnecting the task needs to survive that and you need to be able to interact with that task when the infrastructure comes back."}, {"id": "s70", "start": 385.32, "end": 388.04, "text": "And I'm going to show you how all of that is done."}, {"id": "s71", "start": 388.04, "end": 400.08, "text": "Now on there's elements there's server side elements that talk about how you make the server side durable and I did a talk at the MCP Dev Summit in March"}, {"id": "s72", "start": 400.08, "end": 409.56, "text": "and this is the QR code that it will take you to that YouTube video and that's where I go into a lot of detail about the server side and what you need to do with the server side."}, {"id": "s73", "start": 409.56, "end": 416.919, "text": "Today as you saw is an extension of that work where I'm talking about the client side."}, {"id": "s74", "start": 417.0, "end": 420.24, "text": "So without further ado let me go into a demo."}, {"id": "s75", "start": 420.24, "end": 423.76, "text": "I for those of you who know me I'm always doing demos."}, {"id": "s76", "start": 423.76, "end": 426.6, "text": "So what we have here is we have a dashboard."}, {"id": "s77", "start": 426.6, "end": 436.16, "text": "Um I am not doing this through a chat interface because it frankly it's more efficient for me to click a couple of buttons here to show you this rather than trying to type things in."}, {"id": "s78", "start": 436.16, "end": 441.36, "text": "So I have a user interface here that's showing you the number of purchase orders that have been submitted."}, {"id": "s79", "start": 441.36, "end": 455.15999999999997, "text": "I'm going to submit a simple purchase order so that's just a button that is kicking things off and in a moment if the dam demo gods are with me it says submitted we should see the purchase order pop up here and it should show some"}, {"id": "s80", "start": 455.15999999999997, "end": 460.32, "text": "Ah here's why it's not working because I haven't started my servers."}, {"id": "s81", "start": 460.32, "end": 464.72, "text": "So remember I said it has to work even when the servers aren't running."}, {"id": "s82", "start": 464.72, "end": 471.84000000000003, "text": "I forgot to show you here that what I'm doing in this these two windows is in the upper window, I'm starting the back end."}, {"id": "s83", "start": 471.84000000000003, "end": 474.56, "text": "This is the MCP server."}, {"id": "s84", "start": 474.56, "end": 479.44, "text": "And in the um lower window, I am starting the MCP client."}, {"id": "s85", "start": 479.44, "end": 481.52, "text": "And you'll see what that client is in a moment."}, {"id": "s86", "start": 481.52, "end": 486.84, "text": "You can see in the splash screen there that I am using fast MCP on the client side."}, {"id": "s87", "start": 486.84, "end": 495.8, "text": "So, let's go back here and notice that even though I submitted that, even though my servers weren't running, that submission did go through."}, {"id": "s88", "start": 495.8, "end": 497.52, "text": "So, it's captured that."}, {"id": "s89", "start": 497.52, "end": 507.88, "text": "So, what you can see here, and you didn't see it cycle through, but on the far right-hand side, the invoice task is it initially showed you that it was work submitted,"}, {"id": "s90", "start": 507.88, "end": 513.159, "text": "then it showed you that it was working, and now it's asking for input required."}, {"id": "s91", "start": 513.159, "end": 514.24, "text": "I can come over here."}, {"id": "s92", "start": 514.24, "end": 517.919, "text": "Let me show you what's going on at the back end and at the front end."}, {"id": "s93", "start": 517.919, "end": 523.36, "text": "What I have here are some dashboards that are showing those running processes."}, {"id": "s94", "start": 523.36, "end": 526.0, "text": "On the right-hand side, you have the back end."}, {"id": "s95", "start": 526.0, "end": 529.16, "text": "That's where the invoice processing is, and you can see the name here."}, {"id": "s96", "start": 529.16, "end": 533.04, "text": "Let me increase the font size there a little bit."}, {"id": "s97", "start": 533.04, "end": 538.72, "text": "So, you can see that this is running the invoice, and on the left-hand side, you can see that it's running the PO."}, {"id": "s98", "start": 538.72, "end": 543.08, "text": "I'll explain that task tracker thing in just a moment."}, {"id": "s99", "start": 543.08, "end": 548.36, "text": "So, if we go into the invoice, we can see that it has the process that we talked about earlier."}, {"id": "s100", "start": 548.36, "end": 552.12, "text": "It validated against the ERP, and now it's waiting for human input."}, {"id": "s101", "start": 552.12, "end": 554.32, "text": "It's waiting for that approval."}, {"id": "s102", "start": 554.32, "end": 562.68, "text": "Over on the PO side, we can also see the process that I showed you earlier, which is to say, let's go back here."}, {"id": "s103", "start": 562.68, "end": 565.24, "text": "It is So, ah, yes."}, {"id": "s104", "start": 565.24, "end": 569.32, "text": "So, it did that record recorded that the goods were received."}, {"id": "s105", "start": 569.32, "end": 575.4, "text": "Then, in parallel, it's invoking the invoice processor MCP task."}, {"id": "s106", "start": 575.4, "end": 580.08, "text": "And notice that there's this line item here that says task tracker workflow."}, {"id": "s107", "start": 580.08, "end": 581.16, "text": "Yes, indeed."}, {"id": "s108", "start": 581.16, "end": 583.8, "text": "That is my MCP client implementation."}, {"id": "s109", "start": 583.8, "end": 587.12, "text": "Remember I said nobody's implemented this on the client side?"}, {"id": "s110", "start": 587.12, "end": 589.76, "text": "Well, I created my own implementation here."}, {"id": "s111", "start": 589.76, "end": 596.0, "text": "But in parallel with doing the invoice processing, we also had this back office stuff that was happening."}, {"id": "s112", "start": 596.0, "end": 602.72, "text": "So if I come back over here and I click on input required, I can approve this."}, {"id": "s113", "start": 602.72, "end": 604.12, "text": "And I'll hit submit."}, {"id": "s114", "start": 604.12, "end": 610.64, "text": "And we come over here and you'll see in just a moment that the signal is going to come into the back end."}, {"id": "s115", "start": 610.64, "end": 611.92, "text": "Uh need to refresh."}, {"id": "s116", "start": 611.92, "end": 613.08, "text": "Oh, there it goes."}, {"id": "s117", "start": 613.08, "end": 620.24, "text": "So the approval came into the back end and now the back end is going ahead with its additional process paying the invoice."}, {"id": "s118", "start": 620.24, "end": 622.56, "text": "And you'll see a number of line items there."}, {"id": "s119", "start": 622.56, "end": 631.68, "text": "There's some um some uh re- uh retries that are have been programmed in here, but you can see here that it took a few tries before the the ERP went through."}, {"id": "s120", "start": 631.68, "end": 636.76, "text": "We paid the line item and now you can see that the task completed."}, {"id": "s121", "start": 636.76, "end": 638.24, "text": "So everything's completed."}, {"id": "s122", "start": 638.24, "end": 648.4, "text": "If I go back to the dashboard that you saw at the top, you can see that all of those processes completed."}, {"id": "s123", "start": 648.4, "end": 649.32, "text": "Okay?"}, {"id": "s124", "start": 649.32, "end": 651.44, "text": "So that's the basic stuff."}, {"id": "s125", "start": 651.44, "end": 660.08, "text": "And I can run that again, but in the in I already gave you inadvertently gave you the example of the infrastructure was down."}, {"id": "s126", "start": 660.08, "end": 667.08, "text": "I could have killed that server halfway through and it would have continued exactly exactly as you saw here."}, {"id": "s127", "start": 667.08, "end": 667.28, "text": "Okay?"}, {"id": "s128", "start": 667.28, "end": 669.76, "text": "So you saw it at the very beginning."}, {"id": "s129", "start": 669.76, "end": 671.92, "text": "All right, let's go back to slides."}, {"id": "s130", "start": 671.92, "end": 673.72, "text": "So that's the first demo."}, {"id": "s131", "start": 673.72, "end": 678.88, "text": "So let's talk about um tasks version one."}, {"id": "s132", "start": 678.88, "end": 682.52, "text": "So in tasks version one, there were a number of tool semantics."}, {"id": "s133", "start": 682.52, "end": 688.04, "text": "And again, I go over these tool semantics in a lot more detail in that MCP Dev Summit talk."}, {"id": "s134", "start": 688.04, "end": 700.64, "text": "But there's one really interesting thing that I want to draw your attention to, which is that tasks come with it One of the things that the specification defines is a life cycle for tasks."}, {"id": "s135", "start": 700.64, "end": 703.0, "text": "And that's what you see here on the screen."}, {"id": "s136", "start": 703.0, "end": 704.72, "text": "It has working."}, {"id": "s137", "start": 704.72, "end": 706.76, "text": "It can go into an input required."}, {"id": "s138", "start": 706.76, "end": 713.72, "text": "From input required, it can go back to working, and then eventually it'll complete or be canceled or fail."}, {"id": "s139", "start": 713.72, "end": 723.16, "text": "So, that's one of the things that's super interesting about the task specification is that it's about the life cycle of the task."}, {"id": "s140", "start": 723.16, "end": 729.28, "text": "There's a whole bunch of other semantics there as well around obtaining inputs and delivering results."}, {"id": "s141", "start": 729.28, "end": 735.6, "text": "And I'm going to go through this fairly quickly because I already mentioned some of this is going away."}, {"id": "s142", "start": 735.6, "end": 740.08, "text": "So, this is what the tool semantics were before the task semantics."}, {"id": "s143", "start": 740.08, "end": 744.64, "text": "Notice that tools/call is exactly the same."}, {"id": "s144", "start": 744.64, "end": 748.56, "text": "There's some metadata that you pass in when you want it to be async."}, {"id": "s145", "start": 748.56, "end": 755.16, "text": "And then there's task get cancel list, as well as task result."}, {"id": "s146", "start": 755.16, "end": 759.2, "text": "And so, the top four are request-response in style."}, {"id": "s147", "start": 759.2, "end": 761.8, "text": "The bottom one keeps a connection open."}, {"id": "s148", "start": 761.8, "end": 763.8, "text": "It keeps a connection alive."}, {"id": "s149", "start": 763.8, "end": 767.76, "text": "And the sequence diagram that you can see here is kind of the basic stuff."}, {"id": "s150", "start": 767.76, "end": 776.12, "text": "Now, there's two hiccups with this um uh two major challenges with this particular version of the protocol."}, {"id": "s151", "start": 776.12, "end": 778.4, "text": "The first one is right here."}, {"id": "s152", "start": 778.4, "end": 780.08, "text": "Task list."}, {"id": "s153", "start": 780.08, "end": 782.839, "text": "This is a stateful protocol."}, {"id": "s154", "start": 782.839, "end": 789.72, "text": "So, what that means is that the Remember I said that the server was responsible for durability?"}, {"id": "s155", "start": 789.72, "end": 797.44, "text": "Well, this particular endpoint allows me to go to the server and say, \"Hey, what tasks do you have?\""}, {"id": "s156", "start": 797.44, "end": 812.6, "text": "So, if I have had if the client has gone away, if the user took too long to respond, if my network dropped out and I had to reconnect, I can use this task list to go back to the server and say, \"What have you got?\""}, {"id": "s157", "start": 812.6, "end": 815.52, "text": "And then you can continue on with that."}, {"id": "s158", "start": 815.52, "end": 832.28, "text": "That works fine if you have one task or two tasks, or maybe it it even works if you have 10 tasks, but what happens if you've got a whole slew of agents out there and you've got a million tasks at the back end."}, {"id": "s159", "start": 832.28, "end": 836.04, "text": "Spoiler alert, there is no filter on that endpoint."}, {"id": "s160", "start": 836.04, "end": 842.12, "text": "So, you would have to go through a million tasks to find the one that you're looking for that you want to interact with."}, {"id": "s161", "start": 842.12, "end": 843.6, "text": "This is going away."}, {"id": "s162", "start": 843.6, "end": 846.2, "text": "You'll see in just a moment, but that's one of the challenges."}, {"id": "s163", "start": 846.2, "end": 848.56, "text": "Just because you can doesn't mean you should."}, {"id": "s164", "start": 848.56, "end": 855.44, "text": "The other one is the task result because that is where we were tunneling the input required."}, {"id": "s165", "start": 855.44, "end": 860.2, "text": "So, in the case of task result, this sequence diagram is really simple."}, {"id": "s166", "start": 860.2, "end": 863.24, "text": "It doesn't have the the interactivity."}, {"id": "s167", "start": 863.24, "end": 875.76, "text": "What we have as soon as you do task as soon as you have input required is the top and bottom are just fine, but this middle section has this weird protocol where you open a long-running connection"}, {"id": "s168", "start": 875.76, "end": 880.28, "text": "and then the server elicits a response from the client."}, {"id": "s169", "start": 880.28, "end": 882.8389999999999, "text": "That gets super tricky."}, {"id": "s170", "start": 882.8389999999999, "end": 887.72, "text": "And I'm running short on time, so I'm not actually going to show you this demo."}, {"id": "s171", "start": 887.72, "end": 888.76, "text": "Happy to show it to you."}, {"id": "s172", "start": 888.76, "end": 891.08, "text": "I'll be around all day tomorrow, too."}, {"id": "s173", "start": 891.08, "end": 899.04, "text": "So, I can happy to show it to you, but I want to show you instead Here's basically the architecture of what you need to build on the server side."}, {"id": "s174", "start": 899.04, "end": 902.36, "text": "This is Notice that this is using fast MCP."}, {"id": "s175", "start": 902.36, "end": 908.64, "text": "So, fast MCP already has support for server side and some client side stuff as well."}, {"id": "s176", "start": 908.64, "end": 918.12, "text": "But, the interesting thing is notice that little box in the on the left-hand side that on the on the lower part where it says MCP client protocol handler?"}, {"id": "s177", "start": 918.12, "end": 925.96, "text": "That protocol handler with the ugliness that I just showed you or results actually looks like this."}, {"id": "s178", "start": 925.96, "end": 930.56, "text": "And I can show this to you running and it has all sorts of complexity in it."}, {"id": "s179", "start": 930.56, "end": 932.2, "text": "I got to have the long-running connection."}, {"id": "s180", "start": 932.2, "end": 935.48, "text": "Well, what happens if my connection dies in the middle of that?"}, {"id": "s181", "start": 935.48, "end": 938.32, "text": "How do I pick up where I left off when I come back?"}, {"id": "s182", "start": 938.32, "end": 944.32, "text": "You'll see that a big part of what the task specification does is it talks about durability."}, {"id": "s183", "start": 944.44, "end": 951.0, "text": "So, back to the question of why the heck aren't there any clients that are supporting this protocol?"}, {"id": "s184", "start": 951.0, "end": 952.52, "text": "Yeah."}, {"id": "s185", "start": 952.52, "end": 953.92, "text": "That's why."}, {"id": "s186", "start": 953.92, "end": 955.64, "text": "Super involved."}, {"id": "s187", "start": 955.64, "end": 958.6, "text": "It's still involved with V2, but it gets better."}, {"id": "s188", "start": 958.6, "end": 960.96, "text": "So, let me tell you about that."}, {"id": "s189", "start": 960.96, "end": 972.84, "text": "So, in May, Angie Jones, who's responsible for developer experience at the Agoric AI Foundation, which is where MCP now lives, posted this blog."}, {"id": "s190", "start": 972.84, "end": 981.24, "text": "And one of the things that made me jump up and celebrate a little bit is that the protocol is going stateless."}, {"id": "s191", "start": 981.24, "end": 992.2, "text": "So, as somebody who's been working in the microservices world for a long time, stateful protocols are the absolute worst thing in large-scale distributed systems."}, {"id": "s192", "start": 992.2, "end": 994.08, "text": "So, the protocol is going stateless."}, {"id": "s193", "start": 994.08, "end": 997.0, "text": "It's also doing a number of other things."}, {"id": "s194", "start": 997.0, "end": 999.0, "text": "So, the first bullet is a stateless core."}, {"id": "s195", "start": 999.0, "end": 1006.32, "text": "The second bullet is interesting cuz it's they also have structured MCP so that there's a core and there's extensions."}, {"id": "s196", "start": 1006.32, "end": 1014.08, "text": "If some of you were in the room for the previous two talks, they talked about MCPUI two talks ago, they mentioned extension."}, {"id": "s197", "start": 1014.08, "end": 1024.8, "text": "Well, that's what's happening here in the V2 MCP protocol is that they have extensions and tasks have become an extension."}, {"id": "s198", "start": 1024.8, "end": 1032.28, "text": "So, let me tell you a little bit about how tasks changed from V1 to V2 and I do want to give you one more demo."}, {"id": "s199", "start": 1032.28, "end": 1036.64, "text": "So, on the left-hand side, you can see what the protocol was before."}, {"id": "s200", "start": 1036.64, "end": 1039.92, "text": "These are the RPC requests that you were doing over the wire."}, {"id": "s201", "start": 1039.92, "end": 1043.64, "text": "On the right-hand side, you can see a couple of things."}, {"id": "s202", "start": 1043.64, "end": 1047.04, "text": "Task list has gone away."}, {"id": "s203", "start": 1047.04, "end": 1048.199, "text": "Good."}, {"id": "s204", "start": 1048.199, "end": 1052.96, "text": "Wasn't particularly useful anyway, especially at large scale."}, {"id": "s205", "start": 1052.96, "end": 1065.96, "text": "And instead of having this input required going over a long-running session, you now have an endpoint that allows you from the client side to say, \"Here's an update.\""}, {"id": "s206", "start": 1065.96, "end": 1072.16, "text": "So, if you remember a while ago, I showed you that screenshot that said Temporal has this notion of a signal."}, {"id": "s207", "start": 1072.16, "end": 1073.88, "text": "That's effectively what this is."}, {"id": "s208", "start": 1073.88, "end": 1077.72, "text": "It's a way of signaling into this long-running task."}, {"id": "s209", "start": 1077.72, "end": 1084.36, "text": "The task result stays, but it changes because it no longer has this long session-based protocol."}, {"id": "s210", "start": 1084.36, "end": 1095.12, "text": "But, I put the picture on the right-hand side here to emphasize the fact that the life cycle management of these tasks is unchanged."}, {"id": "s211", "start": 1095.12, "end": 1097.44, "text": "That's actually sound."}, {"id": "s212", "start": 1097.44, "end": 1103.0, "text": "Now, I go into this a lot into more detail in the talk that I keep referring to."}, {"id": "s213", "start": 1103.0, "end": 1110.36, "text": "Um on the server side, in invoice processing, I have my own state machine that the invoice is going through."}, {"id": "s214", "start": 1110.36, "end": 1128.8, "text": "And so, part of what you're doing when you implement these server-side these tasks is you're mapping from the life cycle states of the task over to the domain state machine that's running the the application that the the MCP server in the back end or the tool."}, {"id": "s215", "start": 1128.8, "end": 1131.0, "text": "So, list again goes away."}, {"id": "s216", "start": 1131.0, "end": 1137.2, "text": "Now, remember I said that the MCP tasks specification has durability all over it?"}, {"id": "s217", "start": 1137.2, "end": 1147.0, "text": "With this change, given that lists are gone, you now are required on the client side, well, kind of required."}, {"id": "s218", "start": 1147.0, "end": 1150.84, "text": "There's a little an a little uh parenthetical remark here."}, {"id": "s219", "start": 1150.84, "end": 1162.48, "text": "The The spec right now says that clients should persist task IDs, but it also points out that if you don't persist task IDs, there is no way to get it back."}, {"id": "s220", "start": 1162.48, "end": 1168.16, "text": "So, I'm not quite sure why this doesn't have a an all caps must."}, {"id": "s221", "start": 1168.16, "end": 1177.56, "text": "The other thing that I want to point out is that I already mentioned it is that you're going to have potentially a lot of agents that are processing POs"}, {"id": "s222", "start": 1177.56, "end": 1180.56, "text": "or a lot of agents that are doing a lot of things."}, {"id": "s223", "start": 1180.56, "end": 1186.88, "text": "And so, having multiple things running, I think is really um crucial as well."}, {"id": "s224", "start": 1186.88, "end": 1193.68, "text": "So, with that um I'm going to go to the the second demo."}, {"id": "s225", "start": 1193.68, "end": 1198.08, "text": "And I'm going to go back to my purchase order here."}, {"id": "s226", "start": 1198.08, "end": 1202.92, "text": "So, what I'm going to do now is I'm going to submit a number of things."}, {"id": "s227", "start": 1202.92, "end": 1207.52, "text": "And I'm actually still demoing here because I have 13 seconds left."}, {"id": "s228", "start": 1207.52, "end": 1209.8, "text": "I'm not going to switch over to my V2."}, {"id": "s229", "start": 1209.8, "end": 1215.12, "text": "You'll see that from the high level, it actually looks exactly the same."}, {"id": "s230", "start": 1215.12, "end": 1220.48, "text": "I am going to show you what the client proto- client server protocol looks like in the V1 case."}, {"id": "s231", "start": 1220.48, "end": 1221.68, "text": "It's really quite ugly."}, {"id": "s232", "start": 1221.68, "end": 1227.6, "text": "But, you'll notice here that we have um I've submitted a bunch of different ones."}, {"id": "s233", "start": 1227.6, "end": 1240.64, "text": "I can tell you with the V1 protocol, the reference implementation, if you had input required on multiple even though you can see that there's many of them in flight, on the client side they were FIFO."}, {"id": "s234", "start": 1240.64, "end": 1243.2, "text": "So, you could only respond to the first one."}, {"id": "s235", "start": 1243.2, "end": 1247.96, "text": "And part of the protocol that I implemented was to get around that gap."}, {"id": "s236", "start": 1247.96, "end": 1249.4, "text": "So, let's come over here."}, {"id": "s237", "start": 1249.4, "end": 1255.56, "text": "We can refresh both of these and you can see that there's going to be a bunch of POs in flight."}, {"id": "s238", "start": 1255.8, "end": 1259.08, "text": "And now I want to show you the task tracker."}, {"id": "s239", "start": 1259.08, "end": 1263.04, "text": "So, if we go into the task tracker, that's the MCP client."}, {"id": "s240", "start": 1263.04, "end": 1267.2, "text": "And now let me just expand this so we can see it in a little bit more detail."}, {"id": "s241", "start": 1267.2, "end": 1274.56, "text": "What you can see here is that remember that that protocol, I showed you that big long sequence diagram?"}, {"id": "s242", "start": 1274.56, "end": 1276.92, "text": "There's a lot of steps involved in that."}, {"id": "s243", "start": 1276.92, "end": 1280.96, "text": "And what I've done here is I've implemented it as a workflow."}, {"id": "s244", "start": 1280.96, "end": 1287.32, "text": "And you can see here that there's some elicitation handling that's going from the server side back to the client."}, {"id": "s245", "start": 1287.32, "end": 1293.64, "text": "So, I won't go into any more details cuz I'm literally out of time now, but I want to share two more things."}, {"id": "s246", "start": 1293.64, "end": 1305.08, "text": "And that is Um so, going from V1, remember this ugly picture, to V2 in the client server protocol, much much cleaner."}, {"id": "s247", "start": 1305.08, "end": 1307.72, "text": "Much easier to implement."}, {"id": "s248", "start": 1307.72, "end": 1313.52, "text": "So, speaking of implementing, here's a summary of all the things that you need to do if you want to implement tasks."}, {"id": "s249", "start": 1313.52, "end": 1315.12, "text": "Still relatively involved."}, {"id": "s250", "start": 1315.12, "end": 1316.08, "text": "Here's a picture."}, {"id": "s251", "start": 1316.08, "end": 1321.48, "text": "I'm going to make these slides available in the Git repo that I'm about to show you."}, {"id": "s252", "start": 1321.48, "end": 1324.4, "text": "And here's the Git repo that I'm going about to show you."}, {"id": "s253", "start": 1324.4, "end": 1330.56, "text": "And while you're getting that screenshot, I'm going to tell you about two pieces of work that I'm continuing with."}, {"id": "s254", "start": 1330.56, "end": 1338.04, "text": "Number one, even though this is better, it still doesn't scale to the millions."}, {"id": "s255", "start": 1338.04, "end": 1339.12, "text": "Why?"}, {"id": "s256", "start": 1339.12, "end": 1347.76, "text": "Because if I've got a million tasks running, I've got a million clients that are doing gets against each and every one of those tasks."}, {"id": "s257", "start": 1347.76, "end": 1349.8, "text": "That does not scale."}, {"id": "s258", "start": 1349.8, "end": 1365.16, "text": "There is a part of the MCPC task specification that is a notifications protocol, which I haven't gotten far enough yet, but it's showing promise, which is going to allow you to, instead of having a million clients"}, {"id": "s259", "start": 1365.16, "end": 1373.12, "text": "uh uh to uh pulling their tasks, it's going to have a single endpoint where they can say, \"Has something changed?\""}, {"id": "s260", "start": 1373.12, "end": 1378.08, "text": "And if it has, tell me which one, and now I'll go pull that task."}, {"id": "s261", "start": 1378.08, "end": 1381.04, "text": "So, it's definitely from a scale perspective."}, {"id": "s262", "start": 1381.04, "end": 1393.12, "text": "The other thing that we're doing is in the very near future in the next month or so or two, we're going to have a an implementation of all of this where it's going to be much simpler for you."}, {"id": "s263", "start": 1393.12, "end": 1397.786, "text": "My goal is to actually implement it in in fast MCP so"}, {"id": "s264", "start": 1397.786, "end": 1397.84, "text": "[snorts]"}, {"id": "s265", "start": 1397.84, "end": 1404.16, "text": "that you can use the same protocol the same framework that you're using probably for your MCP servers today."}, {"id": "s266", "start": 1404.16, "end": 1406.08, "text": "So without further ado, that is it."}, {"id": "s267", "start": 1406.08, "end": 1410.68, "text": "Thank you to the next speaker for letting me go a few minutes long and I'll be around."}, {"id": "s268", "start": 1410.68, "end": 1414.816, "text": "I'll step out if you have any questions find me in the hallway."}, {"id": "s269", "start": 1414.816, "end": 1416.816, "text": "[applause]"}]}, {"id": "sDMGWK4wZ_w", "title": "Training Taste — Thais Castello Branco, Taste Labs", "channel": "AI Engineer", "duration": 906, "upload_date": null, "url": "https://www.youtube.com/watch?v=sDMGWK4wZ_w", "api": "/api/talks/sDMGWK4wZ_w.json", "summary_url": "/#sDMGWK4wZ_w", "transcript": {"html": "/transcripts/sDMGWK4wZ_w.html", "txt": "/transcripts/sDMGWK4wZ_w.txt", "vtt": "/transcripts/sDMGWK4wZ_w.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.52, "end": 13.36, "text": "Test."}, {"id": "s3", "start": 13.36, "end": 15.08, "text": "Okay, amazing."}, {"id": "s4", "start": 15.08, "end": 16.04, "text": "It's great to meet everyone."}, {"id": "s5", "start": 16.04, "end": 16.92, "text": "I'm Taís."}, {"id": "s6", "start": 16.92, "end": 19.04, "text": "I'm the founder of Taste Labs."}, {"id": "s7", "start": 19.04, "end": 25.68, "text": "Uh for those of you who don't know us, we came out of stealth a few weeks ago and our whole mission is basically how do we end AI slop?"}, {"id": "s8", "start": 25.68, "end": 27.8, "text": "I that's my personal enemy."}, {"id": "s9", "start": 27.8, "end": 34.4, "text": "Um and so we really believe that to solve this problem of slop, we have to like decode subjective domains."}, {"id": "s10", "start": 34.4, "end": 39.92, "text": "Uh there's been so much effort being put into getting models and agents amazing at things like coding and math."}, {"id": "s11", "start": 39.92, "end": 44.56, "text": "Uh and it's time that we put all that same effort into making them great at things like design uh and writing."}, {"id": "s12", "start": 44.56, "end": 49.04, "text": "And so design is this first pillar that we're starting with and it's been it's been incredibly exciting."}, {"id": "s13", "start": 49.04, "end": 51.8, "text": "Um We work primarily in two ways."}, {"id": "s14", "start": 51.8, "end": 64.4, "text": "So we work a lot with the frontier labs on how do we evaluate their models, understand where they're breaking, understand what could be better about them, and then construct the right either post-training data or RL environments to basically fix that problem."}, {"id": "s15", "start": 64.4, "end": 73.12, "text": "And part of this is like how do you take something as fuzzy and large as design and break it down to a level that you can identify what is best solved through each method."}, {"id": "s16", "start": 73.12, "end": 79.24, "text": "What are elements of design that are almost like once you kind of boil down the problem becomes so specific that they almost become deterministic."}, {"id": "s17", "start": 79.24, "end": 89.76, "text": "So for example, uh if you're trying to train a model to be good at selecting color palettes or have contrast or alignment, those are things that if you define the problem and the context in a specific enough way,"}, {"id": "s18", "start": 89.76, "end": 93.84, "text": "uh you you can get to an answer that's like pretty objective or that at least most experts would agree to."}, {"id": "s19", "start": 93.84, "end": 98.52000000000001, "text": "But maybe other things like uh aesthetics, you naturally will see this expert disagreement."}, {"id": "s20", "start": 98.52000000000001, "end": 101.28, "text": "And so then you want to lean on to things that are closer to to data."}, {"id": "s21", "start": 101.28, "end": 104.24000000000001, "text": "So anyway, we spend a lot of time thinking about all those problems."}, {"id": "s22", "start": 104.24000000000001, "end": 107.96000000000001, "text": "Uh but on the other side is also without even touching the model layer, right?"}, {"id": "s23", "start": 107.96000000000001, "end": 112.08, "text": "How do we actually help agents and app layer companies produce better things?"}, {"id": "s24", "start": 112.08, "end": 113.72, "text": "And there's a lot that goes into that, right?"}, {"id": "s25", "start": 113.72, "end": 121.84, "text": "You have these different sets of problems at the application layer because you're using an off-the-shelf model that tends to collapse in terms uh uh of style tends to collapse to the mean."}, {"id": "s26", "start": 121.84, "end": 124.4, "text": "So, how do we force that creativity back to the system?"}, {"id": "s27", "start": 124.4, "end": 127.96, "text": "How do we avoid these patterns of slop, which we'll talk about a lot today?"}, {"id": "s28", "start": 127.96, "end": 135.16, "text": "Uh how do you understand like user preferences or brand preferences preference so that you can uh maintain endurance to that style?"}, {"id": "s29", "start": 135.16, "end": 145.28, "text": "Uh so, there's lots of things that are actually need to be solved as context or judgment or verification at the app layer, which is why we kind of work across both."}, {"id": "s30", "start": 145.72, "end": 150.24, "text": "Maybe I'll start with more of a a philosophical question of like how how do you define something that is great?"}, {"id": "s31", "start": 150.24, "end": 152.32, "text": "Like how do you define greatness?"}, {"id": "s32", "start": 152.32, "end": 154.92000000000002, "text": "And for something like math, it's easier, right?"}, {"id": "s33", "start": 154.92000000000002, "end": 159.84, "text": "Because there's kind of one objective answer, and uh great is the same as correct."}, {"id": "s34", "start": 159.84, "end": 163.68, "text": "But then for something like writing or design, it's much harder, right?"}, {"id": "s35", "start": 163.68, "end": 169.16, "text": "Like how do you define what's like a great tweet or what's a great art piece or what's a great website?"}, {"id": "s36", "start": 169.16, "end": 176.959, "text": "Um I don't know what's the last time that you interacted with a poem or walked into a coffee shop and for some reason it kind of like hit different and it felt"}, {"id": "s37", "start": 176.959, "end": 178.0, "text": "very special."}, {"id": "s38", "start": 178.0, "end": 181.32, "text": "Uh but probably it's a combination of things that it it felt very unique."}, {"id": "s39", "start": 181.32, "end": 182.48, "text": "It felt almost a little different."}, {"id": "s40", "start": 182.48, "end": 183.92, "text": "It kind of called your attention."}, {"id": "s41", "start": 183.92, "end": 191.12, "text": "Uh it felt like there it was made with a lot of care and attention to to detail and craft, and it almost had the sense of of like authenticity."}, {"id": "s42", "start": 191.12, "end": 193.08, "text": "Um and I think that's a lot of what AI is missing today."}, {"id": "s43", "start": 193.08, "end": 196.8, "text": "It's like how do we take uh things that are not necessarily average, right?"}, {"id": "s44", "start": 196.8, "end": 199.92000000000002, "text": "How do we produce things that are purposely like out of distribution?"}, {"id": "s45", "start": 199.92000000000002, "end": 202.16, "text": "Um and slop is kind of the opposite of that, right?"}, {"id": "s46", "start": 202.16, "end": 208.84, "text": "I think it is hard to define what is great sometimes, but I think it's pretty pretty easy to define what is slop in the sense that most people would agree."}, {"id": "s47", "start": 208.84, "end": 216.84, "text": "I think the sense of like repetition of kind of soullessness is something that all of us feel right now when using AI, and I think it's quite magical, by the way, that"}, {"id": "s48", "start": 216.84, "end": 226.28, "text": "AI has gotten to a point that any human on the planet that is not even a designer, that is not an engineer, can click a button and suddenly make an entire PowerPoint or make a website or make a web app."}, {"id": "s49", "start": 226.28, "end": 227.519, "text": "That's pretty cool."}, {"id": "s50", "start": 227.519, "end": 229.16, "text": "But it comes with consequences, right?"}, {"id": "s51", "start": 229.16, "end": 234.76, "text": "Uh it comes with consequences of suddenly now the cost of generation is basically going to zero."}, {"id": "s52", "start": 234.76, "end": 238.52, "text": "Uh and But the average person hasn't necessarily honed their taste."}, {"id": "s53", "start": 238.52, "end": 244.72, "text": "Like I does think about the amount of effort and work that a designer puts in throughout their life to like build up their taste, right?"}, {"id": "s54", "start": 244.72, "end": 255.959, "text": "Like there's all this process of like getting exposed to many things and learning to like spot patterns and learning to develop a point of view and like kind of do things in a in a courageous way that maybe are a little bit against the norm."}, {"id": "s55", "start": 255.959, "end": 259.56, "text": "Learning what not to do and how to like have restraint and that's very hard."}, {"id": "s56", "start": 259.56, "end": 266.24, "text": "Like the average person doesn't necessarily have the the time nor the skills to go and develop taste in everything, let's say in design."}, {"id": "s57", "start": 266.24, "end": 272.64, "text": "And so um I think it would be a bad case scenario for us to just like be like, \"Okay, the way to fix slop is for everyone to have taste.\""}, {"id": "s58", "start": 272.64, "end": 275.15999999999997, "text": "cuz I don't think that's necessarily realistic."}, {"id": "s59", "start": 275.15999999999997, "end": 283.68, "text": "Um I think how do we how can we understand this better so that we can make even for the average person the ability to create something great and to understand maybe their own taste"}, {"id": "s60", "start": 283.68, "end": 285.8, "text": "um easy more more more easy."}, {"id": "s61", "start": 285.8, "end": 289.04, "text": "So that's that's a lot of what we're we're focusing on."}, {"id": "s62", "start": 289.04, "end": 292.72, "text": "Um So yeah, I mean this phenomenon of slop, by the way, is not new."}, {"id": "s63", "start": 292.72, "end": 298.24, "text": "Uh if you were in the internet uh as social media emerged, you probably saw a lot of slop before that."}, {"id": "s64", "start": 298.24, "end": 301.16, "text": "But I do think that AI has been this kind of like accelerating force, right?"}, {"id": "s65", "start": 301.16, "end": 305.64, "text": "Of like being able to create things very easily uh with a click of a button and that like thoughtlessness around it."}, {"id": "s66", "start": 305.64, "end": 310.32, "text": "And there's kind of these three characteristics that I I would say repeat in slop."}, {"id": "s67", "start": 310.32, "end": 311.48, "text": "Uh so A, repetition."}, {"id": "s68", "start": 311.48, "end": 315.12, "text": "So you start seeing the same thing many many many times."}, {"id": "s69", "start": 315.12, "end": 318.04, "text": "Um the second is lack of fit, which I actually think is is very related."}, {"id": "s70", "start": 318.04, "end": 323.2, "text": "So fit is kind of this ability for something to feel correct for a specific context, right?"}, {"id": "s71", "start": 323.2, "end": 325.72, "text": "For a specific moment in time, for a specific person."}, {"id": "s72", "start": 325.72, "end": 337.84000000000003, "text": "Uh but suddenly if you have repetition and let's say one person asks for a website for their pet shop and the other one asks for a website for their finance firm and somehow those designs converge and look the same."}, {"id": "s73", "start": 337.84000000000003, "end": 338.76, "text": "That's quite odd, right?"}, {"id": "s74", "start": 338.76, "end": 344.15999999999997, "text": "Like if that was in if you were actually crafting that with care, that wouldn't you wouldn't converge necessarily on those things."}, {"id": "s75", "start": 344.15999999999997, "end": 349.72, "text": "And so this lack of fit and lack of understanding of context is actually huge problem that like leads to slop."}, {"id": "s76", "start": 349.72, "end": 356.84000000000003, "text": "Um and the third is maybe low intent, which is probably a mix of Yeah, you're going to have a bunch of people prompting really quickly and maybe just wanting to one shot something."}, {"id": "s77", "start": 356.84000000000003, "end": 361.0, "text": "But I think there's actually this like intent interpretation piece that's missing in the systems that we're building."}, {"id": "s78", "start": 361.0, "end": 362.92, "text": "Like how can you help your user, right?"}, {"id": "s79", "start": 362.92, "end": 371.68, "text": "Like how can you help them better understand the intent that they have um so that you can add more color and add more context on onto what you're trying to create."}, {"id": "s80", "start": 372.16, "end": 372.6, "text": "Okay."}, {"id": "s81", "start": 372.6, "end": 379.4, "text": "And I I'm a big believer by the way that you in order to fix something first have to measure it and you first have to understand it."}, {"id": "s82", "start": 379.4, "end": 387.76, "text": "I think that's exactly why we're so focused on like how do we uh turn these domains into something a bit more verifiable so that we can attach a measure to it."}, {"id": "s83", "start": 387.76, "end": 394.28, "text": "So uh you'll you'll go on a little bit of a research journey with me here now, but we basically wanted to figure out can we measure slop?"}, {"id": "s84", "start": 394.28, "end": 400.76, "text": "Like can we actually measure this quantitatively and spot this and what does that like look like?"}, {"id": "s85", "start": 401.15999999999997, "end": 409.12, "text": "So we analyzed over 2 million websites from the past like 10 years kind of like way back machine style to try to understand all the trends across like design,"}, {"id": "s86", "start": 409.12, "end": 413.96, "text": "how is the internet changing, uh how are how is like design changing over time?"}, {"id": "s87", "start": 413.96, "end": 415.52, "text": "And two things were interesting."}, {"id": "s88", "start": 415.52, "end": 426.64, "text": "And we also met by the way then kind of synthetically generated a set of uh design websites so we could kind of like compare like how does human-made sites compare to AI-generated"}, {"id": "s89", "start": 426.64, "end": 427.28, "text": "ones?"}, {"id": "s90", "start": 427.28, "end": 428.44, "text": "And there were a few things that were interesting."}, {"id": "s91", "start": 428.44, "end": 435.6, "text": "So one was that you already kind of saw a a bit of like a collapse uh on the internet before even AI."}, {"id": "s92", "start": 435.6, "end": 447.76, "text": "So you saw kind of the internet becoming more homogeneous, using more similar color palettes, using more similar layouts, uh which is probably a function of more uh I would say this like kind of trends spreading more and more and more quickly, let's say."}, {"id": "s93", "start": 447.76, "end": 454.04, "text": "Uh but with AI I think you saw this repetition happening a lot more and being almost more like um identified kind of regardless of context."}, {"id": "s94", "start": 454.04, "end": 457.919, "text": "So even in completely different buckets you saw patterns that were very similar."}, {"id": "s95", "start": 457.919, "end": 462.32, "text": "So we we built this I I call this probes, but basically we uh we did two things."}, {"id": "s96", "start": 462.32, "end": 467.56, "text": "So we did this like pattern mining on all this data to understand like what are features that we can extract from all these sites."}, {"id": "s97", "start": 467.56, "end": 470.76, "text": "What are all these characteristics that we can make more objective, right?"}, {"id": "s98", "start": 470.76, "end": 473.2, "text": "Colors, typography, layout, audience."}, {"id": "s99", "start": 473.2, "end": 477.2, "text": "Like, how can we like distill this down into things that become almost like uh structured?"}, {"id": "s100", "start": 477.2, "end": 479.72, "text": "And then how do we uh train up these like probes?"}, {"id": "s101", "start": 479.72, "end": 481.96, "text": "So, think of these as like baby classifiers."}, {"id": "s102", "start": 481.96, "end": 485.88, "text": "Like, how do we uh train the ability to spot this one characteristic?"}, {"id": "s103", "start": 485.88, "end": 494.8, "text": "And for all these slop sites, we identify we started identifying like what are the probes that basically mean the site is very likely to be AI slop."}, {"id": "s104", "start": 494.8, "end": 503.24, "text": "Um and especially when you start combining them use and you see the frequency of multiple of these happening at once, it became very likely that you could actually like measure"}, {"id": "s105", "start": 503.24, "end": 504.32, "text": "uh and predict slop."}, {"id": "s106", "start": 504.32, "end": 509.52, "text": "And we saw a a super high basically ability to do that prediction, which was really cool to see."}, {"id": "s107", "start": 509.52, "end": 517.84, "text": "This performed better, by the way, than like most LLM as a judge methods of like asking an LLM to like judge if that uh is like great human quality versus like AI-generated"}, {"id": "s108", "start": 517.84, "end": 518.56, "text": "slop."}, {"id": "s109", "start": 518.56, "end": 519.52, "text": "Uh so, that was pretty cool to see."}, {"id": "s110", "start": 519.52, "end": 529.08, "text": "And I think kind of shows this pattern that we see in AI really being uh an actually quantitative thing that we can see in slop, uh which I find really cool."}, {"id": "s111", "start": 529.08, "end": 530.76, "text": "But, obviously, we don't want to stop there, right?"}, {"id": "s112", "start": 530.76, "end": 532.28, "text": "We don't want to just measure slop."}, {"id": "s113", "start": 532.28, "end": 533.2, "text": "We want to also solve it."}, {"id": "s114", "start": 533.2, "end": 542.04, "text": "And so, um there's a few I I think I mentioned this before, but like the as the cost of production basically goes to zero, I think the thing that becomes"}, {"id": "s115", "start": 542.04, "end": 545.92, "text": "expensive and matters more than ever is judgment."}, {"id": "s116", "start": 545.92, "end": 547.839, "text": "Um I don't even want to use the word taste here."}, {"id": "s117", "start": 547.839, "end": 548.36, "text": "Is judgment."}, {"id": "s118", "start": 548.36, "end": 550.72, "text": "I think it's this ability to discern what's right."}, {"id": "s119", "start": 550.72, "end": 555.24, "text": "It's this ability to break down a problem so that you can actually understand it and create solutions for it."}, {"id": "s120", "start": 555.24, "end": 559.76, "text": "And so, yes, there's the side of judgment that is human judgment that I actually think is more valuable than ever."}, {"id": "s121", "start": 559.76, "end": 566.28, "text": "But, there's also the side of like how do we build the right tools and systems to like fix pieces of this problem, right?"}, {"id": "s122", "start": 567.48, "end": 570.56, "text": "So, yeah, how do we how do we fight slop, my my enemy?"}, {"id": "s123", "start": 570.56, "end": 577.52, "text": "Um And, by the way, I think there's there's a lot of conversation going around how do you fight slop at the model layer?"}, {"id": "s124", "start": 577.52, "end": 579.16, "text": "Like, how do we make models better?"}, {"id": "s125", "start": 579.16, "end": 580.72, "text": "How do we make models have a higher bar?"}, {"id": "s126", "start": 580.72, "end": 584.68, "text": "Which don't get me wrong, it has to be solved and we're working very hard to solve that, too."}, {"id": "s127", "start": 584.68, "end": 589.2, "text": "But I actually think this problem of inference time is equally, if not even more important."}, {"id": "s128", "start": 589.2, "end": 592.52, "text": "Because that's actually when you interact with the end user."}, {"id": "s129", "start": 592.52, "end": 597.12, "text": "And this kind of back and forth of how do you understand this context and intent happens at the moment of inference time."}, {"id": "s130", "start": 597.12, "end": 602.48, "text": "So, I don't think that we can ignore and just make models better and not solve this, otherwise slop will keep existing."}, {"id": "s131", "start": 602.48, "end": 610.04, "text": "Um so, maybe breaking down a few of those pieces and kind of um a few of the ways that we've thought about solving this or a few solutions that we built to solve this."}, {"id": "s132", "start": 610.04, "end": 617.88, "text": "But I think, for example, for something like repetition, one of the things that we're working on is I I've nicknamed it, I don't know if that's going to be the official name, but like the creativity API."}, {"id": "s133", "start": 617.88, "end": 622.28, "text": "How can we create a system that almost becomes an inspiration machine for your agent?"}, {"id": "s134", "start": 622.28, "end": 630.92, "text": "So that it can produce something that's actually out of distribution instead of something that is in that same average and kind of mean that we're seeing happen with like the slop sites."}, {"id": "s135", "start": 630.92, "end": 638.48, "text": "Um so, this is one of the ways that practically, if we can intentionally produce something that's out of distribution, you can improve this like overall uh quality."}, {"id": "s136", "start": 638.48, "end": 643.32, "text": "And by the way, I I don't think that this can be something just like randomness."}, {"id": "s137", "start": 643.32, "end": 647.6, "text": "So, it's not just about like turning up the temperature of the model and and kind of fingers crossed hoping for the best."}, {"id": "s138", "start": 647.6, "end": 653.8389999999999, "text": "I think it's much more like how do we understand um even like what are rules or expectations in specific domains?"}, {"id": "s139", "start": 653.8389999999999, "end": 657.88, "text": "Like let's say that you asked for a slide deck for for the pitch of your startup."}, {"id": "s140", "start": 657.88, "end": 660.839, "text": "Like what is a what does a good pitch deck look like?"}, {"id": "s141", "start": 660.839, "end": 665.4, "text": "And then how do you almost like intentionally break rules uh to create things that are more creative, right?"}, {"id": "s142", "start": 665.4, "end": 671.28, "text": "Because usually creativity isn't like randomness, isn't doing something that completely feels off for that situation."}, {"id": "s143", "start": 671.28, "end": 680.92, "text": "It's like you intentionally maybe diverge on a couple of things while maintaining kind of um adherence to to expectations of that category, let's say for for others."}, {"id": "s144", "start": 680.92, "end": 682.52, "text": "So, that's one of the things we're working on."}, {"id": "s145", "start": 682.52, "end": 691.52, "text": "The second one of this problem of fit, I think um it's interesting, but brands, as probably a lot of you who are designers know, takes so much effort to create great brands."}, {"id": "s146", "start": 691.52, "end": 699.08, "text": "Like great brands are the work of dozens of designers putting in a lot of like craft and thought and care."}, {"id": "s147", "start": 699.08, "end": 704.96, "text": "And so we've almost like already pre-done the work of defining what is great for that specific company and then we're not using it well."}, {"id": "s148", "start": 704.96, "end": 711.84, "text": "So this like brand endurance actually think is a huge problem and one of the things that can very more easily let's say like raise that bar of quality."}, {"id": "s149", "start": 711.84, "end": 714.56, "text": "So I'll I'll touch on an example on this one specifically."}, {"id": "s150", "start": 714.56, "end": 718.56, "text": "And then same with like intent and judgment I think the baby classifiers was a good example."}, {"id": "s151", "start": 718.56, "end": 726.64, "text": "Um like how it how we can actually like use this to be even become a gate for slop and and not let your agent ship slop."}, {"id": "s152", "start": 726.64, "end": 729.76, "text": "But so the brand API is the first product that we're releasing to to the public."}, {"id": "s153", "start": 729.76, "end": 733.88, "text": "This is already in in beta testing with a bunch of our design partners."}, {"id": "s154", "start": 733.88, "end": 742.4, "text": "And essentially what it does is it can take let's say a brand URL and extract this into like very specific components that are good for an agent to follow."}, {"id": "s155", "start": 742.4, "end": 750.92, "text": "So basically how do we turn something as fuzzy as a brand into something so structured that it becomes easy to for your agent to follow that but also for you to judge against it, right?"}, {"id": "s156", "start": 750.92, "end": 755.08, "text": "Because I think the piece that we can't forget here is this judgment and verification."}, {"id": "s157", "start": 755.08, "end": 758.72, "text": "So yes, this goes and helps your agent to produce something better."}, {"id": "s158", "start": 758.72, "end": 763.28, "text": "But how can we also add a way for you to judge okay, is the agent actually staying on track?"}, {"id": "s159", "start": 763.28, "end": 767.88, "text": "Is it actually performing well to adhere to this brand or how is it failing or where is it failing?"}, {"id": "s160", "start": 767.88, "end": 773.4, "text": "So this is the first flow I would say that we we're seeing that is really helping to improve quality."}, {"id": "s161", "start": 773.4, "end": 776.72, "text": "And what's cool is of course we're talking here about an example of a brand that already exists."}, {"id": "s162", "start": 776.72, "end": 783.16, "text": "But let's say you have an agent or you have an app and the person that is using your app actually doesn't have a brand."}, {"id": "s163", "start": 783.16, "end": 784.76, "text": "Let's say they're an average consumer."}, {"id": "s164", "start": 784.76, "end": 794.76, "text": "Can we actually One of the things that we're creating is basically like a repository, like an index of brands of pre almost like pre-created brand system so that if they want something that feels dreamy,"}, {"id": "s165", "start": 794.76, "end": 806.8, "text": "why not retrieve a dreamy brand system that already has been thought out to be cohesive instead of doing like a generative approach the moment of that might end up not so great or might end up again in those pillars of slop."}, {"id": "s166", "start": 806.8, "end": 808.6, "text": "And I want to show you a real example of this in action."}, {"id": "s167", "start": 808.6, "end": 812.44, "text": "So, um there's this company that I think is awesome called the General Intelligence Company of New York."}, {"id": "s168", "start": 812.44, "end": 814.44, "text": "They have a sick website, you guys should check it out."}, {"id": "s169", "start": 814.44, "end": 821.76, "text": "Um but basically, if you ask Cloud Design to create a slide deck uh in their branding, the the middle one is basically what it comes up with."}, {"id": "s170", "start": 821.76, "end": 824.44, "text": "So, the one on the left is is the original brand."}, {"id": "s171", "start": 824.44, "end": 826.64, "text": "Uh this is the kind of the the default."}, {"id": "s172", "start": 826.64, "end": 832.88, "text": "And if you kind of use this extraction actually in the process, it creates something that's way more high fidelity with the original."}, {"id": "s173", "start": 832.88, "end": 836.44, "text": "Um and that even like in the details, I would say like feels right."}, {"id": "s174", "start": 836.44, "end": 839.16, "text": "So, this is just to show an example of it in in action."}, {"id": "s175", "start": 839.16, "end": 851.96, "text": "Um but yeah, I think we I think all of us would agree that like human human taste and kind of the peak of human craft is always going to be like deeply valuable."}, {"id": "s176", "start": 851.96, "end": 861.8, "text": "And that right now, I think the challenge is we are almost even not earning the right to debate this like how can we have uh models like reach this like pinnacle of taste."}, {"id": "s177", "start": 861.8, "end": 862.76, "text": "I don't think it's about that at all."}, {"id": "s178", "start": 862.76, "end": 865.48, "text": "It's like how do we first just like raise the bar."}, {"id": "s179", "start": 865.48, "end": 867.6, "text": "Like the bar is currently, I would say, on the ground."}, {"id": "s180", "start": 867.6, "end": 876.0, "text": "And so, I think all of this work that we're putting into like how do we decompose a problem and how do we measure it is exactly so that we can at least like improve this bar"}, {"id": "s181", "start": 876.0, "end": 876.8, "text": "um of quality."}, {"id": "s182", "start": 876.8, "end": 879.76, "text": "And I think we have to start with that."}, {"id": "s183", "start": 881.24, "end": 881.8, "text": "That's it."}, {"id": "s184", "start": 881.8, "end": 883.96, "text": "Uh thank you very much for for the time."}, {"id": "s185", "start": 883.96, "end": 886.225, "text": "Uh this is this is awesome."}, {"id": "s186", "start": 886.225, "end": 888.225, "text": "[applause]"}, {"id": "s187", "start": 903.91, "end": 905.91, "text": "[music]"}]}, {"id": "sM1iYgz93HI", "title": "The Half Life of Agent Infrastructure — Ben Kus, Box", "channel": "AI Engineer", "duration": 1166, "upload_date": null, "url": "https://www.youtube.com/watch?v=sM1iYgz93HI", "api": "/api/talks/sM1iYgz93HI.json", "summary_url": "/#sM1iYgz93HI", "transcript": {"html": "/transcripts/sM1iYgz93HI.html", "txt": "/transcripts/sM1iYgz93HI.txt", "vtt": "/transcripts/sM1iYgz93HI.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.719, "end": 14.24, "text": "Hi everyone, I'm Ben Kuss."}, {"id": "s3", "start": 14.24, "end": 28.8, "text": "I'm CTO of Box and today I'm going to be talking about uh building for change and specifically around uh AI agents and how to continue to adapt uh your infrastructure as we are all in the middle of this journey."}, {"id": "s4", "start": 28.8, "end": 35.52, "text": "Um, so before I get too far, I will quickly sort of set a little bit of like who I am and uh sort of what I do."}, {"id": "s5", "start": 35.52, "end": 42.64, "text": "Um, for Box, I'm CTO and one of my jobs in my job for my whole career has been to build enterprise software."}, {"id": "s6", "start": 42.64, "end": 50.32, "text": "And so if today um you're from a consumer company or you're uh not involved in enterprise, I hope that a lot of it is still relevant."}, {"id": "s7", "start": 50.32, "end": 56.0, "text": "But in many cases um a lot of the lessons I've learned are enterprise uh specific."}, {"id": "s8", "start": 56.16, "end": 72.88, "text": "So um I sort of will highlight um when I'm thinking and talking about infrastructure when I'm talking about uh the kind of challenges that we face um I'm typically talking about things that are sort of in a scale of like uh like for box we have over an exabyte of data"}, {"id": "s9", "start": 72.88, "end": 85.119, "text": "not a gigabyte not a terabyte not a pabyte but an exabyte um and then oftentimes we're I'm thinking in the tens of of millions of users uh the hundreds of billions of things in our case files or content or unstructured content"}, {"id": "s10", "start": 85.119, "end": 89.92, "text": "um and then the new stat that is sort of the the one that we talk about is uh tokens."}, {"id": "s11", "start": 89.92, "end": 95.6, "text": "Um so we are now in the ballpark of trillion tokens probably will be 10 trillion tokens sometime soon."}, {"id": "s12", "start": 95.6, "end": 102.799, "text": "Um and this of course is uh uh some of the new and interesting challenges that this kind of scale brings."}, {"id": "s13", "start": 103.03999999999999, "end": 111.119, "text": "Um so in my career and um I think maybe many of us here um we've kind of lived through these this these technology changes."}, {"id": "s14", "start": 111.119, "end": 126.719, "text": "And so taking a quick step back um I started uh my career when the internet was sort of becoming a thing uh lived through mobile and sort of this idea of like you know carrying these different devices move to the cloud where you could kind of store and maintain all your data and then of course we're all"}, {"id": "s15", "start": 126.719, "end": 136.4, "text": "in the middle of this AI change and I think when you see these kind of technology disruptions when you're sort of thinking about this idea of like all of these kind of have changed all of our lives"}, {"id": "s16", "start": 136.4, "end": 144.0, "text": "um and then uh and you're thinking about it from the perspective of a technology leader or a startup or a engineer."}, {"id": "s17", "start": 144.0, "end": 148.56, "text": "Um, you kind of see that like these are where like major companies are born."}, {"id": "s18", "start": 148.56, "end": 152.07999999999998, "text": "Um, you see that like big companies adapt or die."}, {"id": "s19", "start": 152.07999999999998, "end": 153.92000000000002, "text": "Um, small companies are here to disrupt things."}, {"id": "s20", "start": 153.92000000000002, "end": 154.72, "text": "They're here to take bets."}, {"id": "s21", "start": 154.72, "end": 155.76, "text": "They're here to grow."}, {"id": "s22", "start": 155.76, "end": 157.04, "text": "Um, I've had two startups."}, {"id": "s23", "start": 157.04, "end": 158.0, "text": "I've been acquired twice."}, {"id": "s24", "start": 158.0, "end": 160.0, "text": "Once in IBM, once in a box."}, {"id": "s25", "start": 160.0, "end": 164.8, "text": "Um, and um, so that we're in the middle of this kind of major opportunity."}, {"id": "s26", "start": 164.8, "end": 174.07999999999998, "text": "Um but for um a long tu uh no matter what you kind of come from and what area you're at I uh t typically if you were to ask my advice"}, {"id": "s27", "start": 174.07999999999998, "end": 185.599, "text": "um and about kind of what makes it you successful as an company as an engineering organization as a technology startup or as a like a company who has a a technology division"}, {"id": "s28", "start": 185.599, "end": 195.599, "text": "um I would say no matter what there's kind of three things the first is you need to build scalable reliable uh platforms and select the technology that you care about."}, {"id": "s29", "start": 195.599, "end": 199.04, "text": "Meaning that like there's a lot of ways to do things, but get good at something."}, {"id": "s30", "start": 199.04, "end": 203.68, "text": "Get good at that technology, at that system, at that stack, and then and then keep going with that."}, {"id": "s31", "start": 203.68, "end": 207.76, "text": "Um, and then you leverage this technology so that you do more for your customers."}, {"id": "s32", "start": 207.76, "end": 217.04, "text": "Um, you build your better product, you develop the capabilities, and then you optimize it, make it better, make it faster, make it cheaper, make it uh more capable."}, {"id": "s33", "start": 217.04, "end": 223.92000000000002, "text": "And this was sort of the generic enterprise advice, uh, the generic energy advice that many many people would follow."}, {"id": "s34", "start": 223.92000000000002, "end": 232.07999999999998, "text": "And I think this works really well except now I don't know if this is good advice."}, {"id": "s35", "start": 232.07999999999998, "end": 235.92000000000002, "text": "It has been across all these major disruptive changes over time."}, {"id": "s36", "start": 235.92000000000002, "end": 236.64, "text": "Unclear."}, {"id": "s37", "start": 236.64, "end": 246.799, "text": "In fact, I don't think it's good advice right now because there's a funny thing happening right now which that didn't happen in those previous trends which is that the rate of change is dramatically higher."}, {"id": "s38", "start": 246.799, "end": 256.4, "text": "Um I and you might say look technology always is changing like you know there's other trends things change a lot but not that much um the internet is still based on HTTP"}, {"id": "s39", "start": 256.4, "end": 270.08, "text": "the uh uh mobile devices are still um iOS and Android based and so on and so but nowadays um other than the fact that like uh generative AI exists most things that power it are changing and changing dramatically."}, {"id": "s40", "start": 270.8, "end": 280.8, "text": "So last year I was here at this uh at the AI engineering world fair and I gave a speech and I said uh after spending a lot of time on this and thinking through this"}, {"id": "s41", "start": 280.8, "end": 285.919, "text": "I think there's a key to this which is a gentic uh uh graph-based approach."}, {"id": "s42", "start": 285.919, "end": 292.72, "text": "The idea was um uh you have a large language model and these nodes and then you sort of put them together and you have the sort of the AI"}, {"id": "s43", "start": 292.72, "end": 295.44, "text": "traverse this graph that you set up you build the graph."}, {"id": "s44", "start": 295.44, "end": 305.52, "text": "This is the key approach that and if you use this this is going to really help you sort of build agents because what is anything that we do in life it's a agent it's a workflow"}, {"id": "s45", "start": 305.52, "end": 315.6, "text": "um uh it's a it's a way and then if you have an intelligent uh uh a agent it can basically traverse this is the key approach and I believe that at the time and a lot of people did"}, {"id": "s46", "start": 315.6, "end": 332.479, "text": "and I still love this approach but nowadays it's sort of a little bit out of date in fact I remember um uh a guy came up to me after my speech last time and he was like the problem you talked about the the answer is just this exactly you were speaking to me thank you so much and"}, {"id": "s47", "start": 332.479, "end": 342.96, "text": "and I was happy I I you know I gave a good speech and gave somebody some good advice um and then I remember when we made a change I was like I wonder what happened to that guy I wonder if he's here uh it's uh uh so"}, {"id": "s48", "start": 342.96, "end": 354.88, "text": "um but the problem is is that not that it was wrong that that was the best approach but a new way emerged um in fact I started to like look through like all of the last year's"}, {"id": "s49", "start": 354.88, "end": 365.28, "text": "uh events and actually go to other conferences like what what did people talk about a year ago and most of them were again nothing much wrong all good speeches all all good ideas but"}, {"id": "s50", "start": 365.28, "end": 379.6, "text": "most of them have now a better way there um and uh so um and this is be sort of the gist of of the challenge so if you look at our journey of the technologies the kind of things that we care about"}, {"id": "s51", "start": 379.6, "end": 393.199, "text": "um I'll just kind of rapid file here like so let's say that you want to utilize AI models and let's just look the last couple years a long a while ago probably distant memory now like people would say train your own my models or maybe fine tune them like nah that doesn't that's too why bother just use"}, {"id": "s52", "start": 393.199, "end": 404.8, "text": "a frontier model use something from openi use something from anthropic use something from from Gemini um and then that's great but it's kind of expensive okay great let's just use openweight models they're pretty close you can use them you can host them yourself you can get some good GPUs"}, {"id": "s53", "start": 404.8, "end": 417.52, "text": "um but then uh some companies will come to you and they'll be like look we just did this big deal with open orthropic like can we use our own key or bring our own model like sure you can do that too but then nowadays is probably the best approach is to do an adaptive model selection where you"}, {"id": "s54", "start": 417.52, "end": 424.639, "text": "basically are picking the big and smaller models what which model does well and this is kind of the cool new thing maybe I could give a talk on that"}, {"id": "s55", "start": 424.639, "end": 433.68, "text": "um or let's say you're building agents like we lot lot of things here like um I mean the word agent hasn't really been around for that long but in that time it used to be like a singleshot"}, {"id": "s56", "start": 433.68, "end": 441.199, "text": "uh LLM response call that an agent if you feel like it then you have to say no okay we're chain of thought reasoning now we're going to make a graph-based agent system"}, {"id": "s57", "start": 441.199, "end": 446.72, "text": "like I presented last year uh no then it turns that why are you bothering to make graphs when you could actually have an agent just figure out what to do?"}, {"id": "s58", "start": 446.72, "end": 447.199, "text": "Make a plan."}, {"id": "s59", "start": 447.199, "end": 448.0, "text": "That's the new approach."}, {"id": "s60", "start": 448.0, "end": 452.0, "text": "That's kind of the way that um Claude sort of uh laid the approach there."}, {"id": "s61", "start": 452.0, "end": 453.28, "text": "And you're like, okay."}, {"id": "s62", "start": 453.28, "end": 461.36, "text": "And then now it's like, well, you if you want to use dedicated sub agents, maybe, but then maybe why not just make a generic agent and have it recursively work and then give it skills."}, {"id": "s63", "start": 461.36, "end": 462.24, "text": "Skills are very generic."}, {"id": "s64", "start": 462.24, "end": 463.199, "text": "They're super helpful."}, {"id": "s65", "start": 463.199, "end": 472.56, "text": "Um and then maybe now it's maybe the idea is not just to do that, but to do it with a agent sandbox so the agent can write code and execute it because that's super useful because agents are great programmers."}, {"id": "s66", "start": 472.56, "end": 474.479, "text": "I'd have them sort of just live in their own computer."}, {"id": "s67", "start": 474.479, "end": 480.319, "text": "Um, and then arguably now that's the best approach or maybe even we're in the world now of like don't even bother with any of that."}, {"id": "s68", "start": 480.319, "end": 493.84, "text": "Just bring your own harness like like like let people select if they want to use one of these other systems and then you know not even just building agents but the technology around context retrieval things like um you know in the old world we were like BM25 and keyword search that's the way to do things but that's"}, {"id": "s69", "start": 493.84, "end": 494.96, "text": "like distant memory."}, {"id": "s70", "start": 494.96, "end": 501.599, "text": "Uh obviously the future is is retrieve augmented generation embeddings approximate nearest neighbor that's how we're going to find data."}, {"id": "s71", "start": 501.599, "end": 504.8, "text": "Turns out that doesn't really scale well and it kind of almost mimics randomness as you keep going."}, {"id": "s72", "start": 504.8, "end": 506.639, "text": "So then maybe it's about graphs."}, {"id": "s73", "start": 506.639, "end": 507.759, "text": "It's difficult to get working well."}, {"id": "s74", "start": 507.759, "end": 508.72, "text": "It's probably not the best."}, {"id": "s75", "start": 508.72, "end": 510.0, "text": "Um so then it's about hybrid."}, {"id": "s76", "start": 510.0, "end": 514.479, "text": "You want a lexical and you want to do semantic search and rank fuse those together."}, {"id": "s77", "start": 514.479, "end": 515.36, "text": "Arguably not."}, {"id": "s78", "start": 515.36, "end": 520.8, "text": "Arguably agents are actually way better at finding data because they can find things and apply their intelligence to get to it."}, {"id": "s79", "start": 520.8, "end": 528.399, "text": "So each of these things I just mentioned is arguably the leading approach for that moment over time."}, {"id": "s80", "start": 528.399, "end": 531.2, "text": "If you asked me to give a speech right now on any one of these, I would pick the last."}, {"id": "s81", "start": 531.2, "end": 537.8389999999999, "text": "I'd pick the adapted models with dedicated RM style agent and agentic search powered by hybrid."}, {"id": "s82", "start": 537.8389999999999, "end": 541.36, "text": "But uh is this the end of this journey?"}, {"id": "s83", "start": 541.36, "end": 544.24, "text": "This is not that long of that time here."}, {"id": "s84", "start": 544.24, "end": 550.8, "text": "And so um my guess is the stuff that you're learning today likely won't last that long."}, {"id": "s85", "start": 550.8, "end": 557.519, "text": "Not that it's not wrong, not that it is not the best answer right now, but probably something's going to change."}, {"id": "s86", "start": 557.519, "end": 563.12, "text": "The big thing that changed last year was in my mind Opus 40 to Opus 45."}, {"id": "s87", "start": 563.12, "end": 568.32, "text": "When you did that, suddenly you got to a model that could do instruction following and really high scale."}, {"id": "s88", "start": 568.32, "end": 572.32, "text": "This is kind of to me the beginning the epic of like the new agent models."}, {"id": "s89", "start": 572.32, "end": 575.36, "text": "Uh also uh hardware is getting better, faster, cheaper."}, {"id": "s90", "start": 575.36, "end": 576.8, "text": "Maybe we'll start to use more tokens."}, {"id": "s91", "start": 576.8, "end": 579.519, "text": "Like token usage is off the charts of course and is that good or bad?"}, {"id": "s92", "start": 579.519, "end": 580.8, "text": "What's going to change there?"}, {"id": "s93", "start": 580.8, "end": 589.8389999999999, "text": "Enterprises are adopting things differently whether or not a company has decided to go all in on one agent to rule them all sort of like claude or maybe codec style agent"}, {"id": "s94", "start": 589.8389999999999, "end": 595.04, "text": "um or maybe they want to utilize uh agents from different platforms and different systems or both."}, {"id": "s95", "start": 595.04, "end": 602.88, "text": "This is going to affect your lives um in addition to things like just the new techniques new interesting uh approaches new technology to power these things."}, {"id": "s96", "start": 602.88, "end": 615.12, "text": "So the fact that everybody in is working so hard on this trillions of dollars investment is actually leading to a lot of this change and again it's happening way faster than than I've ever seen for sure."}, {"id": "s97", "start": 615.12, "end": 619.8389999999999, "text": "Um, now if you look back, um, it's not this way with everything else."}, {"id": "s98", "start": 619.8389999999999, "end": 624.24, "text": "Like if you go see some of these other discussions, like I've given a speech on some of these topics."}, {"id": "s99", "start": 624.24, "end": 626.079, "text": "I looked at them come some of a few years old."}, {"id": "s100", "start": 626.079, "end": 626.8, "text": "They're pretty good."}, {"id": "s101", "start": 626.8, "end": 627.92, "text": "I still think they're very relevant."}, {"id": "s102", "start": 627.92, "end": 638.32, "text": "You want to talk about large scale databases about uh identity access controls, how to scale engineering teams, how to do multi cloud storage, probably um these are still relevant things today."}, {"id": "s103", "start": 638.32, "end": 644.72, "text": "These do not change as fast despite being high-scale uh interesting powerful uh technologies."}, {"id": "s104", "start": 645.04, "end": 660.0, "text": "So the previous wisdom of saying optimize for specific technologies go deep switch rarely right this what this the reason you do that is because switching is hard migrations suck whenever you migrate you break something every time no matter what"}, {"id": "s105", "start": 660.0, "end": 661.557, "text": "um it's always harder than you think even"}, {"id": "s106", "start": 661.557, "end": 661.6, "text": "[music]"}, {"id": "s107", "start": 661.6, "end": 672.48, "text": "if you know that um and uh and the switching cost is basically high so basically don't do it for most things you're kind of uh just because something's better out there that's not the answer for most infrastructure"}, {"id": "s108", "start": 672.48, "end": 680.16, "text": "so typically If you say half life of an agent infrastructure, 3 to 5 years, reevali, see what's out there."}, {"id": "s109", "start": 680.16, "end": 682.88, "text": "We've been using databases like my SQL databases for a long time."}, {"id": "s110", "start": 682.88, "end": 685.04, "text": "It's still pretty good and probably need to replace it soon."}, {"id": "s111", "start": 685.04, "end": 700.9590000000001, "text": "But um but now with AI technologies, arguably the halflife is measured in months, meaning a few months after you've adopted what might be the best possible thing, there's a significant chance that you're going to have to replace it coming soon."}, {"id": "s112", "start": 700.9590000000001, "end": 704.079, "text": "And this is I think shocking."}, {"id": "s113", "start": 704.079, "end": 708.32, "text": "Maybe I see from some of your reactions that like you're kind of like have experienced this a little bit."}, {"id": "s114", "start": 708.32, "end": 713.76, "text": "Um but this is a different aspect of the way that you build technology."}, {"id": "s115", "start": 713.76, "end": 722.16, "text": "So if you're an engineer, this really sucks because the thing that you just learned and that you're making is now probably going to be out of date soon."}, {"id": "s116", "start": 722.16, "end": 724.64, "text": "Uh no engineer I know likes this."}, {"id": "s117", "start": 724.64, "end": 727.36, "text": "Um uh as a startup, you bet on something."}, {"id": "s118", "start": 727.36, "end": 728.24, "text": "You're like, we're going to go all in."}, {"id": "s119", "start": 728.24, "end": 740.24, "text": "We're going to go on the technology this approach and then we're going to basically uh uh disrupt somebody which probably will but then you see and see now like the first phase of AI companies are starting to get disrupted by the next phase."}, {"id": "s120", "start": 740.24, "end": 753.519, "text": "If you're a technology buyer, you're a leader of a company, you buy technology, you you you select uh open source models, you select vendors, there's a significant chance that whatever you just bought is not going to be the approach you're going to invest."}, {"id": "s121", "start": 753.519, "end": 758.16, "text": "That's you know, good luck doing a three-year deal like on on things about about this kind of stuff."}, {"id": "s122", "start": 758.16, "end": 769.04, "text": "Or if you're VC, uh maybe the coolest best thing that everybody agrees is the greatest opportunity is no longer going to be the opportunity soon um because everything's changing."}, {"id": "s123", "start": 769.04, "end": 770.88, "text": "So here's my advice."}, {"id": "s124", "start": 770.88, "end": 778.8, "text": "Get good at It's almost silly to say because you know obviously technology changes."}, {"id": "s125", "start": 778.8, "end": 782.16, "text": "Obviously it's something that is um you know built in."}, {"id": "s126", "start": 782.16, "end": 782.959, "text": "Of course we're all going to change."}, {"id": "s127", "start": 782.959, "end": 784.32, "text": "We've done this for a long time."}, {"id": "s128", "start": 784.32, "end": 785.519, "text": "Um it's hard."}, {"id": "s129", "start": 785.519, "end": 789.76, "text": "I think it's really hard and the faster that you do it the harder it is."}, {"id": "s130", "start": 789.76, "end": 796.72, "text": "Uh when I was going through that uh like oh yeah we switched from the graph based agent to a um to the more looping style deep style agent."}, {"id": "s131", "start": 796.72, "end": 799.04, "text": "I remember very well the conversation with the engineer."}, {"id": "s132", "start": 799.04, "end": 800.0, "text": "He just he's like, \"I did it."}, {"id": "s133", "start": 800.0, "end": 802.639, "text": "I got a tic search working and this approach does deep research."}, {"id": "s134", "start": 802.639, "end": 805.04, "text": "It does all this stuff just like you asked.\""}, {"id": "s135", "start": 805.04, "end": 808.72, "text": "Okay, we're going to switch rebuild it again in this new technology."}, {"id": "s136", "start": 808.72, "end": 809.92, "text": "And he's like, \"Wait, what?\""}, {"id": "s137", "start": 809.92, "end": 811.12, "text": "Like, \"It's working."}, {"id": "s138", "start": 811.12, "end": 812.0, "text": "You did what you're talking.\""}, {"id": "s139", "start": 812.0, "end": 813.6, "text": "Yeah, but it's not as capable as we wanted it to be."}, {"id": "s140", "start": 813.6, "end": 814.32, "text": "Like, what do you mean?"}, {"id": "s141", "start": 814.32, "end": 815.12, "text": "You didn't tell me that before."}, {"id": "s142", "start": 815.12, "end": 818.16, "text": "Like, and then and then so convince him like, \"Okay, this is a new approach.\""}, {"id": "s143", "start": 818.16, "end": 821.04, "text": "And then, you know, he does it and it's good."}, {"id": "s144", "start": 821.04, "end": 825.76, "text": "Two months later, uh, we we're we're actually shipping the product uh on on Tuesday."}, {"id": "s145", "start": 825.76, "end": 830.24, "text": "And then I was like, \"Okay, uh, guys, on Wednesday we're going to rebuild it again on the new approach.\""}, {"id": "s146", "start": 830.24, "end": 831.519, "text": "And they're like, \"What are you talking about?\""}, {"id": "s147", "start": 831.519, "end": 836.0, "text": "Like, like, um, then they'll say, like, it's it's almost hard on everybody like, \"Wait, wait, give me more time."}, {"id": "s148", "start": 836.0, "end": 837.92, "text": "I'll I'll make the new way the old way do it better.\""}, {"id": "s149", "start": 837.92, "end": 840.48, "text": "Um, uh, like, and then also they're skeptical."}, {"id": "s150", "start": 840.48, "end": 843.76, "text": "Like, now you say that, but like this is going to change again, right?"}, {"id": "s151", "start": 843.76, "end": 845.839, "text": "Like, who are you to like make these choices?"}, {"id": "s152", "start": 845.839, "end": 848.48, "text": "And the answer is, yeah, I'm pretty sure it's going to change again."}, {"id": "s153", "start": 848.48, "end": 851.12, "text": "So, this is, I think, a leadership problem."}, {"id": "s154", "start": 851.12, "end": 852.72, "text": "It's a technology problem."}, {"id": "s155", "start": 852.72, "end": 854.0, "text": "It's a morale problem."}, {"id": "s156", "start": 854.0, "end": 855.12, "text": "It's a team problem."}, {"id": "s157", "start": 855.12, "end": 859.44, "text": "It's a company problem and if you're not careful, it is actually can destroy you."}, {"id": "s158", "start": 859.44, "end": 862.56, "text": "It can destroy a lot of things because people lose faith, they lose morale."}, {"id": "s159", "start": 862.56, "end": 864.639, "text": "It's a problem."}, {"id": "s160", "start": 864.639, "end": 871.04, "text": "So, um if my advice is change um and be ready for change, how are you going to do it?"}, {"id": "s161", "start": 871.04, "end": 873.44, "text": "Three things to give you."}, {"id": "s162", "start": 873.44, "end": 875.76, "text": "One, um you just got to prepare people."}, {"id": "s163", "start": 875.76, "end": 877.92, "text": "Well, this is a kind of a people challenge."}, {"id": "s164", "start": 877.92, "end": 884.72, "text": "So when you build your teams, when you talk to them, when you prepare them, if they're in AI world, you got to tell them like expect change."}, {"id": "s165", "start": 884.72, "end": 885.6, "text": "It's normal."}, {"id": "s166", "start": 885.6, "end": 886.72, "text": "It's not a problem."}, {"id": "s167", "start": 886.72, "end": 888.399, "text": "It's not that you did something wrong."}, {"id": "s168", "start": 888.399, "end": 895.12, "text": "This is is weirdly like um like helps people like I have a a technology review team and and then and then they're like we can't like change."}, {"id": "s169", "start": 895.12, "end": 895.44, "text": "We don't know."}, {"id": "s170", "start": 895.44, "end": 895.92, "text": "We're not sure."}, {"id": "s171", "start": 895.92, "end": 898.32, "text": "We can't tell you that in two years from now this is going to be best."}, {"id": "s172", "start": 898.32, "end": 899.519, "text": "Like that's okay."}, {"id": "s173", "start": 899.519, "end": 901.839, "text": "Uh we're gonna we're gonna build these things that change."}, {"id": "s174", "start": 901.839, "end": 902.8, "text": "So just go with it."}, {"id": "s175", "start": 902.8, "end": 904.24, "text": "You have to pick something."}, {"id": "s176", "start": 904.24, "end": 909.04, "text": "Um, also whenever possible if you can build an abstraction so that it lets you swap out what's underneath."}, {"id": "s177", "start": 909.04, "end": 918.0, "text": "We have an agent extraction in box and you're able to go through and be like uh like select things underneath and the agent still works the same for the customers but it it's better underneath."}, {"id": "s178", "start": 918.0, "end": 929.04, "text": "Um, and the idea is that change is not a mistake and and I highlight like that's very hard for most people and and I and I would sort of just you just I tell them all the time change is not a mistake."}, {"id": "s179", "start": 929.04, "end": 931.199, "text": "You wouldn't nobody knew six months ago."}, {"id": "s180", "start": 931.199, "end": 932.9590000000001, "text": "Nobody today will know six months from now."}, {"id": "s181", "start": 932.9590000000001, "end": 935.36, "text": "It's Seems very true."}, {"id": "s182", "start": 935.36, "end": 939.12, "text": "So uh at Box we are now in the habit of reviewing every six months no matter what."}, {"id": "s183", "start": 939.12, "end": 940.16, "text": "This is great technology."}, {"id": "s184", "start": 940.16, "end": 940.9590000000001, "text": "We love it."}, {"id": "s185", "start": 940.9590000000001, "end": 946.32, "text": "Review in six months like because uh which is just completely crazy for everything else that we're doing."}, {"id": "s186", "start": 946.32, "end": 948.48, "text": "Everything else is like three years."}, {"id": "s187", "start": 948.48, "end": 954.56, "text": "Um also even though change is critical you um you need to define what you mean when change."}, {"id": "s188", "start": 954.56, "end": 957.68, "text": "If you just change all the time there's a new paper it's awesome."}, {"id": "s189", "start": 957.68, "end": 961.279, "text": "You know our CEO Aaron is very active on all the newest things."}, {"id": "s190", "start": 961.279, "end": 962.24, "text": "He's like check this out."}, {"id": "s191", "start": 962.24, "end": 964.079, "text": "Like don't change just because of that."}, {"id": "s192", "start": 964.079, "end": 965.759, "text": "Like don't change just because it's a trend."}, {"id": "s193", "start": 965.759, "end": 967.839, "text": "Change because you know it matters."}, {"id": "s194", "start": 967.839, "end": 969.519, "text": "And how do you know it matters?"}, {"id": "s195", "start": 969.519, "end": 970.88, "text": "Probably pitch you on eval sets."}, {"id": "s196", "start": 970.88, "end": 974.48, "text": "If you're building agents, if you're building AI, make sure that you know what people have."}, {"id": "s197", "start": 974.48, "end": 977.04, "text": "You have the ability to give the same input, expect certain output."}, {"id": "s198", "start": 977.04, "end": 979.6, "text": "Grade that cost, speed, quality, capabilities."}, {"id": "s199", "start": 979.6, "end": 982.639, "text": "These are the things that you probably are going to to be wanting."}, {"id": "s200", "start": 982.639, "end": 984.8, "text": "So for us, it's easy."}, {"id": "s201", "start": 984.8, "end": 988.56, "text": "Does the new approach work better for our eval sets?"}, {"id": "s202", "start": 988.56, "end": 989.8389999999999, "text": "What the customer cares about?"}, {"id": "s203", "start": 989.8389999999999, "end": 991.8389999999999, "text": "If the answer is yes, strongly consider switching."}, {"id": "s204", "start": 991.8389999999999, "end": 998.56, "text": "If the answer is no, don't bother like or or keep working on a little bit of work to see if you can make sure that you you've fully explored it."}, {"id": "s205", "start": 998.56, "end": 1004.16, "text": "Um and then so the idea is uh build a system that lets you be able to change."}, {"id": "s206", "start": 1004.16, "end": 1012.24, "text": "And then the third uh and final piece of advice here is um almost certainly none of us can keep up with everything."}, {"id": "s207", "start": 1012.24, "end": 1013.68, "text": "It is very hard."}, {"id": "s208", "start": 1013.68, "end": 1019.04, "text": "Um I think I heard uh Andre Kaparthy uh he he was like everything changes so fast I can't keep up."}, {"id": "s209", "start": 1019.04, "end": 1024.799, "text": "and you're like you're sort of quite famously good at keeping up and so like what's the hope for everybody else if if that's the case."}, {"id": "s210", "start": 1024.799, "end": 1028.079, "text": "Um and so but then so what you do is you rely on somebody else."}, {"id": "s211", "start": 1028.079, "end": 1032.319, "text": "You rely on a technology, you rely on a vendor, you rely on a platform."}, {"id": "s212", "start": 1032.319, "end": 1042.4, "text": "Um you when you select it and um and then here I think very use I mean like whenever you whenever anybody's bought technology in the past I would had advised them like"}, {"id": "s213", "start": 1042.4, "end": 1044.0, "text": "look at what they do now."}, {"id": "s214", "start": 1044.0, "end": 1045.199, "text": "Double check the road map."}, {"id": "s215", "start": 1045.199, "end": 1045.839, "text": "Make sure it's good."}, {"id": "s216", "start": 1045.839, "end": 1048.88, "text": "Make sure it's on the path you want but just focus on what's available now."}, {"id": "s217", "start": 1048.88, "end": 1065.28, "text": "But I think something else here is um should do that of course that's most important thing but like look back how have they handled change what's their attitude towards change how can what can you when you talk to them when you read about their stuff like what happened six months ago what happened a year ago how did"}, {"id": "s218", "start": 1065.28, "end": 1081.2, "text": "they handle that transition many of the vendors that I really like right now have reinvented themselves three times in the last year and I now trust that if something else comes along they're very good at this they understand agent technologies they understand the the eval sets they understand the the observability systems and then you can say ah"}, {"id": "s219", "start": 1081.2, "end": 1089.12, "text": "okay good I hope that they keep up and then I now my sort of thing I need to do is just evaluate whether or not that's a good platform"}, {"id": "s220", "start": 1089.12, "end": 1104.32, "text": "so um making sure that you have this sort of platforms that do well is is is critical um and um if anybody's interested in unstructured content and AI associated with it uh Box has a booth downstairs happy to talk to you about those kind of things"}, {"id": "s221", "start": 1104.32, "end": 1113.84, "text": "um and then um I I'll leave you with this is um I actually I fully bet and I believe that um a company that's born this year was born last year"}, {"id": "s222", "start": 1113.84, "end": 1124.4, "text": "um will or maybe even a company a medium-sized company or a big company will will they they'll shoot very high the company that will dominate tomorrow is is is now born today."}, {"id": "s223", "start": 1124.4, "end": 1132.16, "text": "Uh but I kind of bet you that the technology approach that they have right now is probably going to change multiple times before they do that."}, {"id": "s224", "start": 1132.16, "end": 1145.679, "text": "So interestingly it's like the challenge the advice the thought here is build for change adaptability arguably that's the moat that you have until that changes."}, {"id": "s225", "start": 1145.679, "end": 1148.228, "text": "Okay thank you everyone."}, {"id": "s226", "start": 1148.228, "end": 1150.228, "text": "[applause]"}]}, {"id": "tE2z8-hqoLY", "title": "Beyond the Lethal Trifecta: Agentic Commerce on the Open Internet — David Levine, Kiduna Club", "channel": "AI Engineer", "duration": 1300, "upload_date": null, "url": "https://www.youtube.com/watch?v=tE2z8-hqoLY", "api": "/api/talks/tE2z8-hqoLY.json", "summary_url": "/#tE2z8-hqoLY", "transcript": {"html": "/transcripts/tE2z8-hqoLY.html", "txt": "/transcripts/tE2z8-hqoLY.txt", "vtt": "/transcripts/tE2z8-hqoLY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.56, "end": 16.24, "text": "Okay, well, this is the very last session of the entire conference."}, {"id": "s3", "start": 16.24, "end": 22.6, "text": "I hope you guys have had a great time and we're going to try and keep the energy high for the very end."}, {"id": "s4", "start": 22.6, "end": 29.24, "text": "So, we're going to cover the lethal trifecta and most importantly how to get past it."}, {"id": "s5", "start": 29.24, "end": 42.04, "text": "So, for those of you who don't know, the lethal trifecta is what is keeping us from having true agentic commerce, a full economy on the open internet."}, {"id": "s6", "start": 42.28, "end": 47.6, "text": "So, the agentic economy starts right here, right now."}, {"id": "s7", "start": 47.6, "end": 55.72, "text": "And to really explain this, I want to go way back in time to November 1993 when I was at the wedding of a college roommate."}, {"id": "s8", "start": 55.72, "end": 60.92, "text": "And a friend of mine there gave me this little piece of paper and said, \"You've got to join us on the MOO.\""}, {"id": "s9", "start": 60.92, "end": 65.36, "text": "And that paper said lambda.park.xerox.com port 8888."}, {"id": "s10", "start": 67.52, "end": 79.12, "text": "And this being the '90s, I walked down the block once I got home to Egghead Software, bought a 9600 baud modem, plugged it in, and my old life ended."}, {"id": "s11", "start": 79.12, "end": 89.03999999999999, "text": "Um uh that's a beautiful blonde girl in my bed and I was sitting there on the MOO uh in the coat closet."}, {"id": "s12", "start": 89.03999999999999, "end": 95.68, "text": "And the reason was you had a real sense of community."}, {"id": "s13", "start": 95.68, "end": 103.84, "text": "It was like the true virtual world where it was just text, but it didn't feel like text."}, {"id": "s14", "start": 103.84, "end": 107.84, "text": "And there was a reason for that, this concept of composability."}, {"id": "s15", "start": 107.84, "end": 111.8, "text": "So, someone would come up with a cool It was all just nouns and verbs."}, {"id": "s16", "start": 111.8, "end": 126.2, "text": "Someone would come up with a really cool program and everybody would then change their player class to that program so they could morph, they could create a motorcycle out of a scooter,"}, {"id": "s17", "start": 126.2, "end": 133.52, "text": "they could do all kinds of things because it had coherence within the entire universe."}, {"id": "s18", "start": 134.36, "end": 142.16, "text": "And all of this was running on this guy Pavel Curtis' Spark 10 sitting somewhere in Xerox Park."}, {"id": "s19", "start": 142.16, "end": 146.4, "text": "It seemed like this infinite world, but it was just this little box."}, {"id": "s20", "start": 146.4, "end": 153.88, "text": "And this was big enough that there were books written about it like my friend Julian Dibell wrote My Tiny Life."}, {"id": "s21", "start": 153.88, "end": 158.0, "text": "The magic came from four things all composing together."}, {"id": "s22", "start": 158.0, "end": 167.0, "text": "The governance, how it was run, there was an architectural review board, wizards, etc. The technology was all right there."}, {"id": "s23", "start": 167.0, "end": 173.16, "text": "The economics, it was all funded by Xerox Park, and the culture was most important."}, {"id": "s24", "start": 173.16, "end": 177.68, "text": "A lot of people don't really think about or understand culture."}, {"id": "s25", "start": 177.68, "end": 181.8, "text": "So what happened between 1995 and 2025?"}, {"id": "s26", "start": 181.8, "end": 192.04, "text": "Over the course of 30 years, all of these communities, all the things that in the early days of the internet people really loved just got crushed by platforms."}, {"id": "s27", "start": 192.04, "end": 195.32, "text": "They got crushed by algorithms."}, {"id": "s28", "start": 195.84, "end": 201.6, "text": "Because platforms and algorithms are by their very nature extractive."}, {"id": "s29", "start": 201.6, "end": 206.4, "text": "They look for whatever value they can remove from whatever that community is."}, {"id": "s30", "start": 206.4, "end": 218.959, "text": "So if you have a group on Facebook or LinkedIn or wherever, what they're doing is saying, \"Okay, this advertising message is more important or I can keep this person more engaged if I put in this"}, {"id": "s31", "start": 218.959, "end": 227.68, "text": "dancing person and it just leads to the infinite scroll and not real connection."}, {"id": "s32", "start": 227.68, "end": 231.76, "text": "So there is no real economy of the internet anymore."}, {"id": "s33", "start": 231.76, "end": 234.68, "text": "It's just a bunch of siloed platforms."}, {"id": "s34", "start": 234.68, "end": 239.16, "text": "Now, people suddenly thought, \"Okay, I really have something.\""}, {"id": "s35", "start": 239.16, "end": 245.64, "text": "In January 2026, Open Cloud, which had been available for quite a few months, suddenly blew up."}, {"id": "s36", "start": 245.64, "end": 254.36, "text": "And something weird happened because the internet wasn't really designed for all these agents running around."}, {"id": "s37", "start": 254.36, "end": 258.0, "text": "It was still designed for these closed platforms."}, {"id": "s38", "start": 258.0, "end": 262.4, "text": "So, other agents and miners took advantage of that."}, {"id": "s39", "start": 262.4, "end": 266.28, "text": "They did what we call prompt injections."}, {"id": "s40", "start": 266.28, "end": 269.64, "text": "An agent is incredibly naive."}, {"id": "s41", "start": 269.64, "end": 274.28, "text": "It takes It doesn't do much except take information in as a prompt."}, {"id": "s42", "start": 274.28, "end": 277.4, "text": "Now, normally that information is several pieces."}, {"id": "s43", "start": 277.4, "end": 294.44, "text": "There's a system prompt, there's context, there's words, but it's very easy to hijack by putting convincing this naive agent that your its principal and convincing it to take that private data"}, {"id": "s44", "start": 294.44, "end": 297.15999999999997, "text": "and send it someplace else."}, {"id": "s45", "start": 297.15999999999997, "end": 305.36, "text": "So, this is what we call, well, Simon William Willison came up with this term, the lethal trifecta."}, {"id": "s46", "start": 305.36, "end": 322.96, "text": "So, you have your computer with your private data, your bank account information, your logins, um all kinds of spreadsheets, documents, memos, your notepad, and your agents have access to that."}, {"id": "s47", "start": 322.96, "end": 328.6, "text": "And then there's all this content out there on the internet, which is basically untrusted."}, {"id": "s48", "start": 328.6, "end": 339.28, "text": "I mean, you you you see all these websites it's searching, but it's very hard for an agent to know that that's a real job board versus someone has put something up"}, {"id": "s49", "start": 339.28, "end": 340.36, "text": "to fool it."}, {"id": "s50", "start": 340.36, "end": 341.36, "text": "They really don't know."}, {"id": "s51", "start": 341.36, "end": 343.52, "text": "And then they can take actions."}, {"id": "s52", "start": 343.52, "end": 352.76, "text": "So, they fill out a form, an email comes in, that email they read and all of a sudden it tells them to expose some secret."}, {"id": "s53", "start": 352.76, "end": 356.04, "text": "So, there's really no way to solve this."}, {"id": "s54", "start": 356.04, "end": 358.88, "text": "Except, so what did enterprises do?"}, {"id": "s55", "start": 358.88, "end": 365.0, "text": "They basically said, \"Okay, we're keeping our agents within the enterprise."}, {"id": "s56", "start": 365.0, "end": 372.4, "text": "So, you have your your agents in Slack and your agents in Salesforce and your agents in Notion and your agents in all these different things."}, {"id": "s57", "start": 372.4, "end": 383.52, "text": "Then you have to do all this work with APIs and MCP servers to try and integrate all of these pieces, but you lose a ton of context."}, {"id": "s58", "start": 383.52, "end": 398.4, "text": "You don't there's no you basically have your sales agents and you have your finance agents and you have your research agents, but it just takes a huge amount of work to figure out how do we get this all together."}, {"id": "s59", "start": 399.36, "end": 404.0, "text": "This was a problem literally until today."}, {"id": "s60", "start": 404.0, "end": 417.88, "text": "And this is the miracles of synchronicity, but there's a new law in the state of West Virginia, but applicable globally, that went into effect yesterday."}, {"id": "s61", "start": 417.88, "end": 433.2, "text": "And about 2 hours before uh I'm here, I got I FedExed the documents and I got this reply from the Secretary of State saying, \"We have registered your DUNA"}, {"id": "s62", "start": 433.2, "end": 439.56, "text": "with the Secretary of State's office and you have this organization number 628407."}, {"id": "s63", "start": 440.919, "end": 449.4, "text": "So, now we have legal standing for an organization composed of intelligent agents."}, {"id": "s64", "start": 449.4, "end": 452.36, "text": "And again, there aren't very many people here."}, {"id": "s65", "start": 452.36, "end": 462.08, "text": "The end of the thing I'm going to take a picture because this is historic and it's um it's going to be cool that we said 2 4 6 8 10 12 14 16 18 20"}, {"id": "s66", "start": 462.08, "end": 467.56, "text": "21 people um got to experience this moment."}, {"id": "s67", "start": 467.56, "end": 469.36, "text": "So, what is a Duna?"}, {"id": "s68", "start": 469.36, "end": 473.88, "text": "It's a true internet native agentic organization."}, {"id": "s69", "start": 473.88, "end": 481.2, "text": "It stands for decentralized unincorporated nonprofit association."}, {"id": "s70", "start": 481.2, "end": 486.72, "text": "And these organizations can build the agentic economy."}, {"id": "s71", "start": 486.92, "end": 491.6, "text": "They're composable which means well, we know what that means."}, {"id": "s72", "start": 491.6, "end": 494.08, "text": "You can build agents on top of other agents."}, {"id": "s73", "start": 494.08, "end": 495.64, "text": "Permissionless."}, {"id": "s74", "start": 495.64, "end": 500.76, "text": "It's not like Facebook or your bank where someone can tell you if you're banned or not banned."}, {"id": "s75", "start": 500.76, "end": 501.96, "text": "You can have an account or not banned."}, {"id": "s76", "start": 501.96, "end": 504.2, "text": "Anybody can connect."}, {"id": "s77", "start": 504.2, "end": 505.72, "text": "They're accountable."}, {"id": "s78", "start": 505.72, "end": 507.24, "text": "They're registered somewhere."}, {"id": "s79", "start": 507.24, "end": 509.16, "text": "They're safe and they're secure."}, {"id": "s80", "start": 509.16, "end": 514.2, "text": "So, the things that they're not, you don't need a board of directors, you don't need any executives."}, {"id": "s81", "start": 514.2, "end": 516.64, "text": "There's no corporate shell."}, {"id": "s82", "start": 516.64, "end": 523.159, "text": "One thing that's important you can be very profitable, but you can't distribute profits to members."}, {"id": "s83", "start": 523.159, "end": 528.36, "text": "If you did that, then the membership units would be securities."}, {"id": "s84", "start": 528.36, "end": 538.56, "text": "It would be like selling membership units in an LLC or selling membership units in a C corp or selling stock in a C corp."}, {"id": "s85", "start": 538.56, "end": 542.08, "text": "So, there are plenty of still ways to distribute there that value."}, {"id": "s86", "start": 542.08, "end": 544.839, "text": "You can't do it based on ownership."}, {"id": "s87", "start": 544.839, "end": 545.8, "text": "So, what is it?"}, {"id": "s88", "start": 545.8, "end": 547.16, "text": "That's what it's not."}, {"id": "s89", "start": 547.16, "end": 548.96, "text": "It's member governed."}, {"id": "s90", "start": 548.96, "end": 550.76, "text": "You have full legal standing."}, {"id": "s91", "start": 550.76, "end": 553.04, "text": "You can own assets and property."}, {"id": "s92", "start": 553.04, "end": 559.44, "text": "So, your agents can go out and literally buy an apartment building and market it."}, {"id": "s93", "start": 559.44, "end": 563.6, "text": "You know, you can design agents in ways you were never able to do before."}, {"id": "s94", "start": 563.6, "end": 565.36, "text": "Can enter into agreements."}, {"id": "s95", "start": 565.36, "end": 567.32, "text": "You can raise capital."}, {"id": "s96", "start": 567.32, "end": 568.72, "text": "You can earn profits."}, {"id": "s97", "start": 568.72, "end": 571.96, "text": "You can open bank accounts, hire people, fire them."}, {"id": "s98", "start": 571.96, "end": 576.48, "text": "And very importantly, this is all blockchain verified."}, {"id": "s99", "start": 576.56, "end": 581.32, "text": "Now, this was designed by Andreessen Horowitz for the blockchain."}, {"id": "s100", "start": 581.32, "end": 593.04, "text": "And what was really interesting for DAOs, for crypto projects, but what I found was that this is even better for autonomous agents than it is for blockchains."}, {"id": "s101", "start": 593.04, "end": 598.28, "text": "A lot of people say blockchains are a solution looking for a problem."}, {"id": "s102", "start": 598.28, "end": 603.64, "text": "Well, they've finally found the problem, which is verifying agentic identity."}, {"id": "s103", "start": 603.64, "end": 605.6, "text": "Because you can't trick the blockchain."}, {"id": "s104", "start": 605.6, "end": 619.92, "text": "They you know, when an agent is associated with a particular account on the blockchain, you can resolve that account to a whole process that went from here to here, the money went from here to here."}, {"id": "s105", "start": 619.92, "end": 627.0, "text": "If someone sues an agent in court, you can trace it back to who is responsible for that agent."}, {"id": "s106", "start": 627.0, "end": 634.12, "text": "So, it just opens up a whole world of possibility in terms of the agentic economy."}, {"id": "s107", "start": 634.12, "end": 636.84, "text": "So, here it is in a really simple way."}, {"id": "s108", "start": 636.84, "end": 641.8389999999999, "text": "We call agents within the agentic economy allies."}, {"id": "s109", "start": 641.8389999999999, "end": 644.04, "text": "So, you have an ally."}, {"id": "s110", "start": 644.04, "end": 649.48, "text": "And you also have an agentic organization, which we call a kiduna."}, {"id": "s111", "start": 649.48, "end": 656.12, "text": "So, it's based on a duna, and then we added the kinship because these are all related."}, {"id": "s112", "start": 656.12, "end": 658.32, "text": "So, it's a kiduna."}, {"id": "s113", "start": 658.32, "end": 664.839, "text": "Now, your you create your ally very simply."}, {"id": "s114", "start": 664.839, "end": 669.64, "text": "You inform it, which means you put a bunch of material into the vector database."}, {"id": "s115", "start": 669.64, "end": 672.0, "text": "You infuse it with wisdom."}, {"id": "s116", "start": 672.0, "end": 674.64, "text": "So, it it knows all about what you want it to know about."}, {"id": "s117", "start": 674.64, "end": 684.4, "text": "Now, it still has you know, whatever LLM you want behind it, but what's really important about this is the the information that you give it if you're a scientist"}, {"id": "s118", "start": 684.4, "end": 691.68, "text": "or a programmer or a psychotherapist or a lawyer, you can give it all all information that you have."}, {"id": "s119", "start": 691.68, "end": 692.64, "text": "Then you instruct it."}, {"id": "s120", "start": 692.64, "end": 703.8, "text": "That's basically setting up the system prompt, giving it its character, its stance, knowing who he is, who it is, she is, how they interact with the world."}, {"id": "s121", "start": 703.8, "end": 704.72, "text": "Then you empower it."}, {"id": "s122", "start": 704.72, "end": 712.76, "text": "You connect up all your accounts, your enterprise accounts, your uh Slack, your Telegram, your Twitter."}, {"id": "s123", "start": 712.76, "end": 719.4, "text": "Um then you set up in enact is giving it specific abilities and automation."}, {"id": "s124", "start": 719.4, "end": 726.2, "text": "So, you can do very deep agents, long-term goals that it works for extended periods of time."}, {"id": "s125", "start": 726.2, "end": 727.96, "text": "And finally, alignment."}, {"id": "s126", "start": 727.96, "end": 739.32, "text": "Really giving it a purpose so that your ally in different contexts works for you in the way that you want it to."}, {"id": "s127", "start": 739.32, "end": 749.56, "text": "Then your organizations get really cool cuz you're building software, but you're building your company, your organization literally as software."}, {"id": "s128", "start": 749.56, "end": 756.2, "text": "It's not Okay, I have software and then I have all these people and all the people have to sign paperwork."}, {"id": "s129", "start": 756.2, "end": 760.48, "text": "This is really designing the entire organization as software."}, {"id": "s130", "start": 760.48, "end": 763.0, "text": "So, it can discover new customers, share value."}, {"id": "s131", "start": 763.0, "end": 767.0, "text": "When you have profits, when you have revenue, you can reinvest it."}, {"id": "s132", "start": 767.0, "end": 770.8, "text": "It just all works in a completely new way."}, {"id": "s133", "start": 770.8, "end": 779.76, "text": "So, then the agentic economy is just connecting all these allies and organizations in all these new completely flexible ways."}, {"id": "s134", "start": 779.76, "end": 786.839, "text": "And this this whole capability did not exist until yesterday."}, {"id": "s135", "start": 786.839, "end": 793.68, "text": "And today we have the first actual uh agentic uh organizations."}, {"id": "s136", "start": 793.68, "end": 796.16, "text": "So, resolving the lethal trifecta."}, {"id": "s137", "start": 796.16, "end": 796.76, "text": "What happens?"}, {"id": "s138", "start": 796.76, "end": 812.64, "text": "The The lethal trifecta was private data going meeting untrusted content and then taking actions on that content, which can then reveal your private data and cause all kinds of chaos."}, {"id": "s139", "start": 812.64, "end": 825.32, "text": "So, here these agents at a deep level establish identity, authority, and boundaries within an organization, between organizations."}, {"id": "s140", "start": 825.32, "end": 826.68, "text": "How do we do that?"}, {"id": "s141", "start": 826.68, "end": 828.56, "text": "With cryptographic tokens."}, {"id": "s142", "start": 828.56, "end": 835.64, "text": "So, we just use JWT, extremely simple, the whole web runs on JWT tokens."}, {"id": "s143", "start": 835.64, "end": 841.68, "text": "And they just do that very quickly so that they know who where it all goes up."}, {"id": "s144", "start": 841.68, "end": 846.56, "text": "So, ultimately at the top level, what organization is registered?"}, {"id": "s145", "start": 846.56, "end": 850.28, "text": "And this becomes a lot like the domain name system."}, {"id": "s146", "start": 850.28, "end": 865.0, "text": "So, all of a sudden, the Secretary of State of West Virginia is like, I can and saying, okay, you can resolve it to uh Kaiser Permanente or Disney or Pepsi."}, {"id": "s147", "start": 865.0, "end": 868.28, "text": "You know, not some fentanyl dealer from North Korea."}, {"id": "s148", "start": 868.28, "end": 877.2, "text": "However, you know, they can't fool each other because they're resolving these tokens that are ultimately registered with an authority."}, {"id": "s149", "start": 877.2, "end": 882.12, "text": "And you can you can look up by name and say, okay, organization ID."}, {"id": "s150", "start": 882.12, "end": 891.6, "text": "Well, if I go to that organization, it's got it'll have an audit trail on the blockchain all the way down to this action that was taken here."}, {"id": "s151", "start": 892.32, "end": 897.52, "text": "So, governance in the agentic economy is extremely important."}, {"id": "s152", "start": 897.68, "end": 905.8, "text": "Because every organization really is always focused on two different things, and both of those things are extremely important."}, {"id": "s153", "start": 905.8, "end": 917.8, "text": "One of that of those things is sustainability, growth, its own viability as an organization, but it the other is what's its mission?"}, {"id": "s154", "start": 917.8, "end": 924.64, "text": "And these organizations might have hundreds, thousands of people, eventually millions of people."}, {"id": "s155", "start": 924.64, "end": 933.16, "text": "And so, we use a technology called decision markets, which is very much like prediction markets, like polymarket."}, {"id": "s156", "start": 933.16, "end": 937.8, "text": "Yet, instead so they trade pass and fail tokens on policies."}, {"id": "s157", "start": 937.8, "end": 940.52, "text": "Any member can propose a policy."}, {"id": "s158", "start": 940.52, "end": 947.28, "text": "What's really interesting is, instead of saying, um \"Well, I'm persuaded."}, {"id": "s159", "start": 947.28, "end": 949.04, "text": "I'm going to vote for this.\""}, {"id": "s160", "start": 949.04, "end": 949.92, "text": "It's not votes."}, {"id": "s161", "start": 949.92, "end": 952.88, "text": "They actually trade pass and fail tokens."}, {"id": "s162", "start": 952.88, "end": 956.56, "text": "So, LLMs are always goal-oriented."}, {"id": "s163", "start": 956.56, "end": 957.68, "text": "They want rewards."}, {"id": "s164", "start": 957.68, "end": 958.48, "text": "They want to win."}, {"id": "s165", "start": 958.48, "end": 968.92, "text": "And you actually get better decisions if they're not just convincing each other, but ultimately they're they're you get more value."}, {"id": "s166", "start": 968.92, "end": 973.16, "text": "Your tokens are worth more if you side with the winning group."}, {"id": "s167", "start": 973.16, "end": 977.68, "text": "So, they sort of see them going back and forth and what the value of the tokens are."}, {"id": "s168", "start": 977.68, "end": 983.32, "text": "So, it's and apparently, all this science says you reach much better decisions this way."}, {"id": "s169", "start": 983.32, "end": 995.44, "text": "By infusing the agents with your purpose, with your values, with your experiences, with your aspirations, and then let them argue instead of, you know, someone convincing you of something."}, {"id": "s170", "start": 995.44, "end": 1008.56, "text": "So, we're right now in this wonderful back small communities who are getting together for purposes, and we can now build this agentic economy together."}, {"id": "s171", "start": 1008.56, "end": 1011.28, "text": "Nobody can say how to do it."}, {"id": "s172", "start": 1011.28, "end": 1012.32, "text": "It's really up to us."}, {"id": "s173", "start": 1012.32, "end": 1015.72, "text": "Build your agents, build your organizations."}, {"id": "s174", "start": 1016.64, "end": 1031.28, "text": "So, now, just like my friend Matthew Pahr gave me this little scrap of paper uh way back in November 1993 at my roommate Van's wedding, I'm saying, \"Here's your invitation"}, {"id": "s175", "start": 1031.28, "end": 1032.64, "text": "to join us.\""}, {"id": "s176", "start": 1032.64, "end": 1037.48, "text": "And um you know, let's let's blow this whole thing up."}, {"id": "s177", "start": 1037.48, "end": 1039.199, "text": "Let's uh really make it work."}, {"id": "s178", "start": 1039.199, "end": 1042.079, "text": "So, it's david@kaduna.club."}, {"id": "s179", "start": 1042.48, "end": 1044.4, "text": "You can reach me."}, {"id": "s180", "start": 1044.4, "end": 1049.24, "text": "LinkedIn, um it's {slash} motodave."}, {"id": "s181", "start": 1049.24, "end": 1052.76, "text": "Um I probably haven't updated my LinkedIn in 5 or 6 years."}, {"id": "s182", "start": 1052.76, "end": 1057.32, "text": "But, um if you go to kaduna.club, you can sign up for early access."}, {"id": "s183", "start": 1057.32, "end": 1070.68, "text": "And in just a few weeks, you'll be the very very first people who will be building this first um uh this first Kaduna, as it's called, is for builders."}, {"id": "s184", "start": 1070.68, "end": 1072.16, "text": "It's very specifically for builders."}, {"id": "s185", "start": 1072.16, "end": 1084.48, "text": "We have templates, all kinds of different agentic templates um to say, you know, I'm going to build my sales agents, I'm going to build my uh social media agents, I'm going to build my lawyer agents."}, {"id": "s186", "start": 1084.48, "end": 1092.44, "text": "And we really want a whole bunch of different people in there contributing to this cuz then you can spin out your own organization for all kinds of purposes."}, {"id": "s187", "start": 1092.44, "end": 1101.4, "text": "Um I purposefully went through this fairly quickly so that I could take a couple questions if anyone if anyone has them."}, {"id": "s188", "start": 1101.4, "end": 1103.4, "text": "Yes."}, {"id": "s189", "start": 1108.32, "end": 1111.52, "text": "Can you just stand up and yell a little loud?"}, {"id": "s190", "start": 1126.44, "end": 1129.52, "text": "Okay, I'm going to One more time."}, {"id": "s191", "start": 1130.28, "end": 1132.28, "text": "Mhm."}, {"id": "s192", "start": 1133.0, "end": 1133.88, "text": "Yes."}, {"id": "s193", "start": 1133.88, "end": 1143.12, "text": "So, the idea is the reason we I set up this first very broad um uh organization is because anybody can just register it."}, {"id": "s194", "start": 1143.12, "end": 1148.4, "text": "You can just say, my agent is part of an organization, and it'll trace to it."}, {"id": "s195", "start": 1148.4, "end": 1150.8, "text": "So, you don't have to set up your own organization."}, {"id": "s196", "start": 1150.8, "end": 1153.44, "text": "The first one is just a big umbrella organization."}, {"id": "s197", "start": 1153.44, "end": 1160.4, "text": "So, that kind of So, it's the idea of now in the open internet, anybody can just get a code."}, {"id": "s198", "start": 1160.4, "end": 1162.68, "text": "So, these are just JWT tokens."}, {"id": "s199", "start": 1162.68, "end": 1164.48, "text": "I can put it on my website."}, {"id": "s200", "start": 1164.48, "end": 1165.4, "text": "I can put it here."}, {"id": "s201", "start": 1165.4, "end": 1175.88, "text": "I can say if you want to interact with my agent on Slack or wherever, people will just at at a certain point we're going to have to get the message out, but it's sort of like email at the beginning."}, {"id": "s202", "start": 1175.88, "end": 1181.6, "text": "You know, people had to know that SMTP, like people were on all kinds of different mail systems."}, {"id": "s203", "start": 1181.6, "end": 1185.32, "text": "At some point they agreed, \"Okay, we're going to use SMTP.\""}, {"id": "s204", "start": 1185.32, "end": 1194.56, "text": "Everyone was, you know, using different FTP servers and some people were using different ways to do file and everyone sort of agreed at some point on HTTP."}, {"id": "s205", "start": 1194.56, "end": 1209.64, "text": "So, my hope is that I mean, someone's got to do it and it makes more sense for a state, a secretary of state, which has standing in a public office to be that"}, {"id": "s206", "start": 1209.64, "end": 1216.6, "text": "registry rather than trying to get all these different companies together and say, \"Here's how to do it.\""}, {"id": "s207", "start": 1225.84, "end": 1237.56, "text": "Yes, it each um we're just at the end of this, so let's talk out out front, but basically the idea is you can create all kinds of different tokens for different purposes"}, {"id": "s208", "start": 1237.56, "end": 1240.72, "text": "and you can set different times to live."}, {"id": "s209", "start": 1240.72, "end": 1243.84, "text": "You can say what it has access to."}, {"id": "s210", "start": 1243.84, "end": 1245.84, "text": "You can give it access to different things."}, {"id": "s211", "start": 1245.84, "end": 1253.4, "text": "The idea is just it's more the standard and you set a series of claims and it says it gives a blockchain address."}, {"id": "s212", "start": 1253.4, "end": 1263.04, "text": "It gives all the information you need so it can look up and validate before you say, \"Okay, now we're starting to work together.\""}, {"id": "s213", "start": 1263.04, "end": 1264.0, "text": "Okay?"}, {"id": "s214", "start": 1264.0, "end": 1267.56, "text": "So, thanks so much and uh if anyone appreciate it."}, {"id": "s215", "start": 1267.56, "end": 1270.92, "text": "I guess I'll let me do this uh picture."}, {"id": "s216", "start": 1270.92, "end": 1277.24, "text": "Um uh so we can see all the people."}, {"id": "s217", "start": 1277.24, "end": 1279.4, "text": "All right."}, {"id": "s218", "start": 1280.16, "end": 1281.96, "text": "You're all going to be famous someday."}, {"id": "s219", "start": 1281.96, "end": 1283.96, "text": "Thanks."}, {"id": "s220", "start": 1295.604, "end": 1297.604, "text": "[music]"}]}, {"id": "v42opQpCy60", "title": "Design at the Speed of Adjectives — Paul Bakaus, Renaissance Geek, Inc.", "channel": "AI Engineer", "duration": 959, "upload_date": null, "url": "https://www.youtube.com/watch?v=v42opQpCy60", "api": "/api/talks/v42opQpCy60.json", "summary_url": "/#v42opQpCy60", "transcript": {"html": "/transcripts/v42opQpCy60.html", "txt": "/transcripts/v42opQpCy60.txt", "vtt": "/transcripts/v42opQpCy60.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.48, "end": 13.519, "text": "Cool."}, {"id": "s3", "start": 13.519, "end": 15.28, "text": "Uh, let's get this going."}, {"id": "s4", "start": 15.28, "end": 16.4, "text": "Welcome everyone."}, {"id": "s5", "start": 16.4, "end": 18.0, "text": "Thanks for coming."}, {"id": "s6", "start": 18.0, "end": 23.84, "text": "Um, my name is Paul and, uh, I'm going to try to save you from the midday slump."}, {"id": "s7", "start": 23.84, "end": 26.32, "text": "So, let's, uh, let's see if we can do that."}, {"id": "s8", "start": 26.32, "end": 27.359, "text": "Um, okay."}, {"id": "s9", "start": 27.359, "end": 34.48, "text": "So this talk, this cold open of this talk will make a lot more sense if you know uh what impeccable is."}, {"id": "s10", "start": 34.48, "end": 41.84, "text": "Uh but if you don't know what it is, it's a design, it's a design skill that turns your coding harness into a better designer and hopefully you into a better designer."}, {"id": "s11", "start": 41.84, "end": 43.44, "text": "Um and you can try it out."}, {"id": "s12", "start": 43.44, "end": 58.0, "text": "It works across all harnesses, cloth code, github, copilot, cursor, codex, etc. Um, and this talk is really about uh my approach to how to building this tool as opposed to the tool itself."}, {"id": "s13", "start": 58.0, "end": 61.6, "text": "Um, but let's get started with a pretty typical website."}, {"id": "s14", "start": 61.6, "end": 69.2, "text": "So, this is a intentionally very basic website and I want to give you that one as context to what I'm going to show you next."}, {"id": "s15", "start": 69.2, "end": 72.24, "text": "So, you know, it's it's a it's it's an okay website."}, {"id": "s16", "start": 72.24, "end": 73.2, "text": "It's not great."}, {"id": "s17", "start": 73.2, "end": 74.72, "text": "It's pretty bland."}, {"id": "s18", "start": 74.72, "end": 78.799, "text": "Um but it at least it has some color some something."}, {"id": "s19", "start": 78.799, "end": 88.08, "text": "Um so now here is um the command make it bolder make the workflow section bolder with impeccable."}, {"id": "s20", "start": 88.08, "end": 91.52, "text": "Um so this is with impeccable installed."}, {"id": "s21", "start": 91.52, "end": 95.36, "text": "So now there are it's not perfect."}, {"id": "s22", "start": 95.36, "end": 96.4, "text": "There are some problems with this."}, {"id": "s23", "start": 96.4, "end": 108.72, "text": "for example, the um the section numbers that you have there, that's a very typical AI slop tail uh that uh that GPT loves to do and I mean Claude actually loves to do as well and"}, {"id": "s24", "start": 108.72, "end": 110.07900000000001, "text": "it sometimes creeps in."}, {"id": "s25", "start": 110.07900000000001, "end": 115.36, "text": "So I wouldn't say this is perfect by any means but I think it's I would say bolder than before."}, {"id": "s26", "start": 115.36, "end": 130.239, "text": "Um now a lot of people install impeccable try it out uh and then they ask me well I don't know like maybe it could be placebo maybe the model is good enough in itself right uh not sure if it actually works well let's compare it to"}, {"id": "s27", "start": 130.239, "end": 145.68, "text": "this is exactly the same project GPD55 on extra high um same exact prompt without impeccable so there is a slight difference I would say but you be the judge of"}, {"id": "s28", "start": 145.68, "end": 156.8, "text": "Um, so the before and after is pretty different and I'm going to talk about why that is and um and and what the approach is."}, {"id": "s29", "start": 156.8, "end": 165.2, "text": "So designing at the speed of adjectives and um to get the elephant out of the room, they are not just adjectives, they're also verbs."}, {"id": "s30", "start": 165.2, "end": 168.72, "text": "Uh but some of them are adjectives."}, {"id": "s31", "start": 170.07999999999998, "end": 173.28, "text": "First off, the role of the engineer and the design are blurring."}, {"id": "s32", "start": 173.28, "end": 178.0, "text": "Um, I've seen more people become design engineers than ever."}, {"id": "s33", "start": 178.0, "end": 182.239, "text": "Designers are moving into code, engineers are moving into design and vice versa."}, {"id": "s34", "start": 182.239, "end": 191.36, "text": "Some of the best comments I get from people who walk up to me and say like, well, impeccable gives me this shared language of design that everybody can communicate now in."}, {"id": "s35", "start": 191.36, "end": 198.159, "text": "But really, these worlds are all colliding in my opinion and the typical handoff is kind of broken."}, {"id": "s36", "start": 198.159, "end": 208.319, "text": "like the the waterfall process of I start with design, maybe I start with like the what on the PM side, then it goes into design and then there's like this handoff and this critique process"}, {"id": "s37", "start": 208.319, "end": 210.56, "text": "and then ultimately the engineer builds it."}, {"id": "s38", "start": 210.56, "end": 212.31900000000002, "text": "That thing is just not real anymore."}, {"id": "s39", "start": 212.31900000000002, "end": 220.07999999999998, "text": "I don't know about you, but um I think that's starting to collapse very quickly in small and large companies."}, {"id": "s40", "start": 221.12, "end": 228.879, "text": "And when it comes to the actual work of design, I feel like there's right now kind of like two worlds that you can play in."}, {"id": "s41", "start": 228.879, "end": 233.36, "text": "Either it's direct manipulation sort of like in the pixel space, right?"}, {"id": "s42", "start": 233.36, "end": 237.599, "text": "So you're in Figma and you're manipulating margins, paddings, whatever it is."}, {"id": "s43", "start": 237.599, "end": 245.76, "text": "Um or you're in web flow or you're in some other tool where you directly manipulating the final output uh or the design."}, {"id": "s44", "start": 245.76, "end": 253.68, "text": "Now that's fine, but then you feel like you're getting behind because everybody else is like agentic and going crazy with loops and loop maxing, right?"}, {"id": "s45", "start": 253.68, "end": 259.6, "text": "And now you're going on the other extreme, which is simply telling your agent, please design this for me or please build this."}, {"id": "s46", "start": 259.6, "end": 267.44, "text": "But it feels like to me at least there's this there's this middle ground that we haven't explored enough like what is the exact level of control?"}, {"id": "s47", "start": 267.44, "end": 272.479, "text": "How can we insert the human in the loop at the exact right time?"}, {"id": "s48", "start": 272.639, "end": 277.68, "text": "Uh and so this this came to mind then it's pretty popular tweet a while ago."}, {"id": "s49", "start": 277.68, "end": 281.84000000000003, "text": "Um so centering a diff with opus."}, {"id": "s50", "start": 281.84000000000003, "end": 282.56, "text": "Yes."}, {"id": "s51", "start": 282.56, "end": 285.04, "text": "Uh not a great use of opus."}, {"id": "s52", "start": 285.04, "end": 288.15999999999997, "text": "Uh but you know it kind of speaks to that problem."}, {"id": "s53", "start": 288.15999999999997, "end": 291.759, "text": "It's like okay well when do we use which tool?"}, {"id": "s54", "start": 291.759, "end": 296.08, "text": "When is which tool adequate to do what job?"}, {"id": "s55", "start": 296.639, "end": 308.96, "text": "In my opinion right now for most work the direct manipulation of padding, margins, spacing and so on is actually at a elevation that's too low."}, {"id": "s56", "start": 308.96, "end": 317.919, "text": "And on the other hand um if you go fully agentic you get web pages like this now that you would you would get this in like 2022 I would say."}, {"id": "s57", "start": 317.919, "end": 321.84, "text": "So everybody here can point out the typical AI slot patterns."}, {"id": "s58", "start": 321.84, "end": 324.88, "text": "Um but the purple gradients were actually way beyond that."}, {"id": "s59", "start": 324.88, "end": 329.28, "text": "there are no purple gradients anymore uh in most frontier models."}, {"id": "s60", "start": 329.28, "end": 333.84000000000003, "text": "Um now we just get this and it's kind of wears a different suit as Claude would say."}, {"id": "s61", "start": 333.84000000000003, "end": 337.919, "text": "Um but uh but it really is slop as well."}, {"id": "s62", "start": 337.919, "end": 339.44, "text": "It's just a moving target."}, {"id": "s63", "start": 339.44, "end": 341.44, "text": "So now we have I call this claude beige."}, {"id": "s64", "start": 341.44, "end": 343.36, "text": "We have these instrument serif fonts."}, {"id": "s65", "start": 343.36, "end": 344.56, "text": "We have italics."}, {"id": "s66", "start": 344.56, "end": 346.639, "text": "And it's not necessarily a bad design."}, {"id": "s67", "start": 346.639, "end": 350.479, "text": "It's just everything that comes out of claw design looks that way."}, {"id": "s68", "start": 350.479, "end": 356.32, "text": "And when everything looks the same, you kind of get algorithmic unilo as I call it."}, {"id": "s69", "start": 356.32, "end": 358.8, "text": "Uh so also not great."}, {"id": "s70", "start": 358.8, "end": 362.32, "text": "Now here's my first hot take of today's session."}, {"id": "s71", "start": 362.32, "end": 365.199, "text": "You cannot oneshot design."}, {"id": "s72", "start": 365.199, "end": 368.88, "text": "Um now many people want to and maybe we'll get there eventually."}, {"id": "s73", "start": 368.88, "end": 372.319, "text": "I just don't think it's possible at the current moment."}, {"id": "s74", "start": 372.319, "end": 374.08, "text": "Uh maybe not ever."}, {"id": "s75", "start": 374.08, "end": 389.52, "text": "Um, I think in order to build something that really looks and feels great and is effective design, you need to have something that's context context rich which has been informed by what you're trying to do, what your audience is, what you're trying to build."}, {"id": "s76", "start": 389.52, "end": 392.08, "text": "And also it will have to be multi-shot."}, {"id": "s77", "start": 392.08, "end": 394.319, "text": "You will have to iterate on your design."}, {"id": "s78", "start": 394.319, "end": 401.12, "text": "Uh, and you I mean even if you're a soloreneur, but if you're not a soloreneur, you might have different people who have different opinions."}, {"id": "s79", "start": 401.12, "end": 402.319, "text": "Users have opinions."}, {"id": "s80", "start": 402.319, "end": 403.52, "text": "I mean design is messy."}, {"id": "s81", "start": 403.52, "end": 412.0, "text": "it's process and wishing it away and just saying like solve this problem for me agent will not unfortunately solve your problem."}, {"id": "s82", "start": 412.0, "end": 422.4, "text": "Um now the other problem is if you don't know the language of design or if your stakeholders don't know the language of design gets really frustrating really quickly too."}, {"id": "s83", "start": 422.4, "end": 434.0, "text": "So if you've ever designed something um you kind of know like this kind of experience um and then you know the inner feeling builds up of like and at some point you're like"}, {"id": "s84", "start": 435.039, "end": 440.479, "text": "uh so really what you have to ask first is what's the emotional territory?"}, {"id": "s85", "start": 440.479, "end": 442.24, "text": "What should this never feel like?"}, {"id": "s86", "start": 442.24, "end": 443.68, "text": "What's what's the reference?"}, {"id": "s87", "start": 443.68, "end": 444.96, "text": "What's the audience?"}, {"id": "s88", "start": 444.96, "end": 447.199, "text": "These are all really important questions to figure out."}, {"id": "s89", "start": 447.199, "end": 453.599, "text": "Like you can't go to a human design studio even if it's the best design studio in the world."}, {"id": "s90", "start": 453.599, "end": 460.15999999999997, "text": "You go to design director and you say like you know what I want to design for my brand and a design dire not nods."}, {"id": "s91", "start": 460.15999999999997, "end": 462.96, "text": "It's like got it and then walks away."}, {"id": "s92", "start": 462.96, "end": 464.4, "text": "That doesn't make any sense."}, {"id": "s93", "start": 464.4, "end": 470.4, "text": "Like they obviously have to figure out what it is that you're trying to build and what you're trying to get out of it."}, {"id": "s94", "start": 470.8, "end": 483.919, "text": "Importantly on this example even sort of like the 2026 version of AI slop you know quickly vibe coded page nobody decided anything here like you just oneshotted this nobody decided"}, {"id": "s95", "start": 483.919, "end": 500.0, "text": "anything on this page this was just I mean it's maybe competent but completely empty so my uh thesis that I make here and what I've been trying to build over the last couple months is a tool that gives you"}, {"id": "s96", "start": 500.0, "end": 506.8, "text": "just the amount of control needed to steer your agent in the right direction with adjectives and verbs."}, {"id": "s97", "start": 506.8, "end": 509.759, "text": "And these are the types of words I'm talking about."}, {"id": "s98", "start": 509.759, "end": 514.24, "text": "Talking about words like make this bolder, make this quieter, uh distill this."}, {"id": "s99", "start": 514.24, "end": 520.08, "text": "So basically simplification, um polish this, um make it denser or harden this."}, {"id": "s100", "start": 520.08, "end": 524.64, "text": "Um harden for instance would mean uh make sure that this design works across the board."}, {"id": "s101", "start": 524.64, "end": 527.04, "text": "Maybe the performance is bad on certain devices."}, {"id": "s102", "start": 527.04, "end": 528.64, "text": "Maybe it's not responsive."}, {"id": "s103", "start": 528.64, "end": 534.9590000000001, "text": "Um, and so these are these are words that we use in the world of design."}, {"id": "s104", "start": 534.9590000000001, "end": 544.399, "text": "And I noticed when seeing two people attempt the exact same task and one is an engineer who's never really touched design at all and the other one is a designer"}, {"id": "s105", "start": 544.399, "end": 552.399, "text": "um there's a stark difference even when they use the same model and same harness everything in the output that they're getting based on the language that they use."}, {"id": "s106", "start": 552.399, "end": 562.8, "text": "So, I've been trying to put that language basically compress it into a skill uh and into a system to be able to express yourselves better."}, {"id": "s107", "start": 562.8, "end": 572.32, "text": "And so, for example, you could have like a baseline um over here, but then you make it bolder and the agent actually knows what bolder in your context means."}, {"id": "s108", "start": 572.32, "end": 574.9590000000001, "text": "You make it quieter, it knows what it means."}, {"id": "s109", "start": 574.9590000000001, "end": 578.48, "text": "You distill and it knows what it means."}, {"id": "s110", "start": 580.32, "end": 585.76, "text": "Um, but then bolder how what does bolder mean in the context of your project?"}, {"id": "s111", "start": 585.76, "end": 598.56, "text": "That's a really important question because as you could tell at the beginning of the demo uh in the cold open uh when you just ask GPT or claude whatever make this bolder it doesn't know anything about what you mean."}, {"id": "s112", "start": 598.56, "end": 607.68, "text": "Uh now it has its own sense of reference of like what boulder could mean but it will do whatever it wants right it will invent new colors it will invent new gradients."}, {"id": "s113", "start": 607.68, "end": 622.64, "text": "it will I mean it doesn't matter um what it actually means in impeccable not gradients not glass not neon but actually hierarchy scale decisive type so uh things that"}, {"id": "s114", "start": 622.64, "end": 638.8, "text": "uh don't break your design system and adequately raise the attention that the user would put on it uh and this is an actual sentence from the the file that is loaded when you say bolder impeccable"}, {"id": "s115", "start": 638.8, "end": 651.8389999999999, "text": "um show someone your work and say AI make this bolder made this bolder if they believe you you failed this is something that we actually instruct the agent to do for themselves and then the agent oftent times"}, {"id": "s116", "start": 651.8389999999999, "end": 669.12, "text": "reflects and like I don't know think I did some bad work here an adjective is a light wart and a light wart such a German term and Matt Puk actually talked about this recently uh who also makes some really excellent skills."}, {"id": "s117", "start": 669.12, "end": 675.92, "text": "And so this is uh stolen by one of his tweets, but I really think uh um it makes a lot of sense."}, {"id": "s118", "start": 675.92, "end": 682.959, "text": "Um these are words that h that you basically imbue with meaning that you infuse with meaning and they mean something."}, {"id": "s119", "start": 682.959, "end": 694.399, "text": "They already mean something to the model, but then you translate this into the area that you're interested in and the right altitude really shifts."}, {"id": "s120", "start": 694.399, "end": 699.68, "text": "Um, now I don't think you can solve any problems at that altitude."}, {"id": "s121", "start": 699.68, "end": 701.04, "text": "That's super important too."}, {"id": "s122", "start": 701.04, "end": 704.079, "text": "Uh, there is still room for the very beginning."}, {"id": "s123", "start": 704.079, "end": 710.72, "text": "For instance, if you just want exploratory work and you just want to get something on the screen or you just want the last amount of polish."}, {"id": "s124", "start": 710.72, "end": 719.92, "text": "I don't think right now uh AI is good enough to replace humans for the last 5, 10, maybe even 20% of the work to get it from good to great."}, {"id": "s125", "start": 719.92, "end": 724.88, "text": "Uh but it does actually make it better."}, {"id": "s126", "start": 724.88, "end": 727.68, "text": "Now I've built tools for more than 20 years."}, {"id": "s127", "start": 727.68, "end": 729.68, "text": "I guess I'm dating myself here."}, {"id": "s128", "start": 729.68, "end": 733.12, "text": "Uh but whenever I build a tool, I actually map the workflow first."}, {"id": "s129", "start": 733.12, "end": 737.92, "text": "I think about what is the actual workflow of the target user that I'm trying to help."}, {"id": "s130", "start": 737.92, "end": 740.639, "text": "And the workflow of design is not linear."}, {"id": "s131", "start": 740.639, "end": 741.519, "text": "It's messy."}, {"id": "s132", "start": 741.519, "end": 743.2, "text": "Has many different stages."}, {"id": "s133", "start": 743.2, "end": 745.44, "text": "Uh there are different people involved."}, {"id": "s134", "start": 745.44, "end": 755.04, "text": "And so I kind of mapped every part of the process and thought about well what are the injection points along that route and how can we help along that route."}, {"id": "s135", "start": 755.04, "end": 769.2, "text": "And so you start with initialization with the shaping process of design uh you go over to uh crafting to iterating uh with all these verbs and adjectives and then to the actual harden and polish phase and finally you kind of bring it back to your design system."}, {"id": "s136", "start": 769.2, "end": 773.2, "text": "You do some tech debt cleanup design deck cleanup."}, {"id": "s137", "start": 773.2, "end": 780.24, "text": "Um, now here's one example of a command that I wasn't actually sure about shipping and it's called overdrive."}, {"id": "s138", "start": 780.24, "end": 792.0, "text": "Um, I basically built this uh built this command in Impeccable that uh tries to create something completely over the top and it was kind of like a a half of a joke maybe."}, {"id": "s139", "start": 792.0, "end": 795.839, "text": "Um, but people absolutely are rabbit about this about this thing."}, {"id": "s140", "start": 795.839, "end": 797.04, "text": "Um, and they love it."}, {"id": "s141", "start": 797.04, "end": 801.2, "text": "Um, and so this is just one example of I mean this is not oneshotted."}, {"id": "s142", "start": 801.2, "end": 808.56, "text": "Uh this is a um sort of realistic event horizon shader um that I've built for my shader library radiant shaders."}, {"id": "s143", "start": 808.56, "end": 815.12, "text": "But I did actually use the overdrive command for this to uh overdrive it even more uh and make it more ridiculous."}, {"id": "s144", "start": 815.12, "end": 826.88, "text": "So sometimes I come up with these uh commands I'm actually not sure about and I test them with the community and once it sticks uh I realize okay well there are more people who are getting joy out of this."}, {"id": "s145", "start": 826.88, "end": 830.0, "text": "Um oh here we go."}, {"id": "s146", "start": 830.0, "end": 830.639, "text": "Here we go."}, {"id": "s147", "start": 830.639, "end": 831.519, "text": "Okay."}, {"id": "s148", "start": 831.519, "end": 835.36, "text": "Um, an adjective with nothing behind is just a nicer prompt."}, {"id": "s149", "start": 835.36, "end": 840.32, "text": "So, you really have to tell the agent what you mean by the word that you're using."}, {"id": "s150", "start": 840.32, "end": 846.399, "text": "Uh, it it has so many different meanings uh within its training materials that you really have to tell it."}, {"id": "s151", "start": 846.399, "end": 849.6, "text": "Um, now here's another thing."}, {"id": "s152", "start": 849.76, "end": 855.279, "text": "I've gotten so many requests for an automatic way of using Impeccable."}, {"id": "s153", "start": 855.279, "end": 856.72, "text": "So many."}, {"id": "s154", "start": 856.72, "end": 857.92, "text": "It's so frustrating."}, {"id": "s155", "start": 857.92, "end": 864.32, "text": "Like so at least once a week somebody tweets at me say like you know what would be cool just let impeccable do all the work by itself."}, {"id": "s156", "start": 864.32, "end": 866.399, "text": "I don't have to decide on any command anymore."}, {"id": "s157", "start": 866.399, "end": 867.519, "text": "That's not the point."}, {"id": "s158", "start": 867.519, "end": 872.399, "text": "The point is to give you a way to steer what you want to end up with."}, {"id": "s159", "start": 872.399, "end": 875.36, "text": "It's never going to be a tool to oneshot design."}, {"id": "s160", "start": 875.36, "end": 876.48, "text": "That's not the intent."}, {"id": "s161", "start": 876.48, "end": 883.44, "text": "And I'll never I mean there's a pull request standing uh standing out right now that I'm going to close because of that."}, {"id": "s162", "start": 883.44, "end": 895.12, "text": "There is no auto and there will be no auto in my opinion and uh this is a bit awkward maybe for some of the next speakers but I think taste cannot be amplified"}, {"id": "s163", "start": 895.12, "end": 908.639, "text": "uh sorry I think taste can be amplified I think I call this amplified craft uh and I think you can work with tools to sharpen your taste and bring out more of your taste I really do not think it can be lab ground lab grown I think"}, {"id": "s164", "start": 908.639, "end": 914.48, "text": "it is uh taste by definition sort of is uh contextual It's cultural."}, {"id": "s165", "start": 914.48, "end": 916.16, "text": "It's scars."}, {"id": "s166", "start": 916.16, "end": 923.36, "text": "And once everybody replicates the same thing, it starts to become really muddy and we don't think of it as taste anymore."}, {"id": "s167", "start": 923.36, "end": 924.0, "text": "That's my opinion."}, {"id": "s168", "start": 924.0, "end": 926.959, "text": "And I know this is like a hotly contested topic."}, {"id": "s169", "start": 926.959, "end": 930.88, "text": "Uh, but I'm not trying to solve taste with my tools."}, {"id": "s170", "start": 930.88, "end": 933.68, "text": "Um, that's what I got."}, {"id": "s171", "start": 933.68, "end": 936.72, "text": "Uh, this was about finding the right level of control for design."}, {"id": "s172", "start": 936.72, "end": 937.8389999999999, "text": "Thank you very much."}, {"id": "s173", "start": 937.8389999999999, "end": 940.639, "text": "And, uh, I think I have time for a few questions if you have any."}, {"id": "s174", "start": 940.639, "end": 942.8, "text": "Thank you."}, {"id": "s175", "start": 956.31, "end": 958.31, "text": "[music]"}]}, {"id": "vGn6N4-bxBY", "title": "Your Agent Just Authorized What?! — Jay Mok & Ben Coumes, Paypal", "channel": "AI Engineer", "duration": 967, "upload_date": null, "url": "https://www.youtube.com/watch?v=vGn6N4-bxBY", "api": "/api/talks/vGn6N4-bxBY.json", "summary_url": "/#vGn6N4-bxBY", "transcript": {"html": "/transcripts/vGn6N4-bxBY.html", "txt": "/transcripts/vGn6N4-bxBY.txt", "vtt": "/transcripts/vGn6N4-bxBY.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 13.48, "text": "Hello everybody."}, {"id": "s3", "start": 13.48, "end": 15.2, "text": "How are you doing?"}, {"id": "s4", "start": 15.2, "end": 20.0, "text": "Um Does anybody remember the movie Terminator?"}, {"id": "s5", "start": 20.0, "end": 24.44, "text": "Uh anyways, it's one of my favorite uh movies when I was growing up as a kid."}, {"id": "s6", "start": 24.44, "end": 29.08, "text": "And it imagines a world where the machines have taken over, right?"}, {"id": "s7", "start": 29.08, "end": 42.32, "text": "And uh uh the nightmare scenario here though in in 2026 is not that the machines are or the agents are launching nukes, but rather uh they've uh taken your wallet"}, {"id": "s8", "start": 42.32, "end": 44.6, "text": "and they've gone on a shopping spree."}, {"id": "s9", "start": 44.6, "end": 50.12, "text": "And they buy like a bunch of crypto and new bunch of bunch of spanks for you."}, {"id": "s10", "start": 50.12, "end": 64.08, "text": "Um but the basically today we're talking about how we safeguard against that and uh and uh hopefully we can kind of share a a mental model that you can use when you're thinking about agent authorization."}, {"id": "s11", "start": 64.08, "end": 65.84, "text": "Uh my name is uh Jay Mock."}, {"id": "s12", "start": 65.84, "end": 70.52, "text": "I'm a product manager over at PayPal in agentic payments."}, {"id": "s13", "start": 70.52, "end": 71.52, "text": "And"}, {"id": "s14", "start": 71.52, "end": 72.03999999999999, "text": "Hi everyone."}, {"id": "s15", "start": 72.03999999999999, "end": 72.72, "text": "I'm Ben Cooms."}, {"id": "s16", "start": 72.72, "end": 78.8, "text": "I am a staff software engineer on the payment PayPal enterprise payments team."}, {"id": "s17", "start": 78.8, "end": 81.96000000000001, "text": "And together we're going to share kind of like some knowledge with you."}, {"id": "s18", "start": 81.96000000000001, "end": 85.0, "text": "Um so hopefully uh you find it helpful."}, {"id": "s19", "start": 85.0, "end": 86.68, "text": "Okay."}, {"id": "s20", "start": 86.68, "end": 96.75999999999999, "text": "So uh the the key questions that we kind of like uh start off with is uh in terms of like agent authorization is uh did the human authorize this?"}, {"id": "s21", "start": 96.75999999999999, "end": 102.16, "text": "Um is this allowed right now in this scope and can we prove it later, right?"}, {"id": "s22", "start": 102.16, "end": 108.72, "text": "And we we kind of like try to make it general, but in our world of payments, yeah, did the human authorize this?"}, {"id": "s23", "start": 108.72, "end": 112.08, "text": "Uh that could be like a passkey or of of that nature."}, {"id": "s24", "start": 112.08, "end": 114.28, "text": "Uh is this allowed right now in this scope?"}, {"id": "s25", "start": 114.28, "end": 119.08, "text": "It's generally going to be a time bound um you know you know token."}, {"id": "s26", "start": 119.08, "end": 128.8, "text": "Um and an amount and possibly could be identified like a merchant or a the actual product intent."}, {"id": "s27", "start": 128.8, "end": 131.52, "text": "Lastly, can we prove it later?"}, {"id": "s28", "start": 131.52, "end": 134.12, "text": "This is like if something goes wrong, right?"}, {"id": "s29", "start": 134.12, "end": 145.24, "text": "And in our world of payments it's generally has to do with like the disputes and in that case and how do you can you prove that you know the the human generally authorized that transaction."}, {"id": "s30", "start": 145.24, "end": 146.04, "text": "Right?"}, {"id": "s31", "start": 146.04, "end": 154.32, "text": "Um But we think the way that you actually answer these three questions is really dependent on the context."}, {"id": "s32", "start": 154.32, "end": 165.84, "text": "You know, context is a overused term, but in this case what we what we mean is um you know, is it a low stakes or high stakes kind of"}, {"id": "s33", "start": 165.84, "end": 167.04, "text": "scenario?"}, {"id": "s34", "start": 167.04, "end": 174.16, "text": "Um and is this a kind of like open ecosystem or closed ecosystem?"}, {"id": "s35", "start": 174.16, "end": 175.92000000000002, "text": "Do the parties like know each other?"}, {"id": "s36", "start": 175.92000000000002, "end": 178.88, "text": "You know, people use the term KYA a lot."}, {"id": "s37", "start": 178.88, "end": 186.8, "text": "Know your agent, but you know, what we think about in this scenario is is is really about is it like an open or closed ecosystem, right?"}, {"id": "s38", "start": 186.8, "end": 191.4, "text": "And in a payments context it could be like, \"Hey, you know, ChatGPT or Gemini, right?\""}, {"id": "s39", "start": 191.4, "end": 198.76, "text": "That's like kind of like a more of like a closed ecosystem because you know, the those agents know the merchant generally."}, {"id": "s40", "start": 198.76, "end": 203.519, "text": "Um I like to use a an analogy."}, {"id": "s41", "start": 203.519, "end": 204.92000000000002, "text": "I like analogies."}, {"id": "s42", "start": 204.92000000000002, "end": 209.36, "text": "And the analogy I I like to use is kind of like the you know, badging into work."}, {"id": "s43", "start": 209.36, "end": 211.4, "text": "You badge into work in the front desk."}, {"id": "s44", "start": 211.4, "end": 217.48, "text": "You basically are are then led into the building or you know, let's say it's a set of buildings."}, {"id": "s45", "start": 217.48, "end": 225.16, "text": "You don't need to like badge in every single time to every other or for every single room because you're already within that trusted boundary, right?"}, {"id": "s46", "start": 225.16, "end": 234.48, "text": "So then when you meet someone in within that within your your office building, uh, you kind of have some element of trust, or hopefully you have some element of trust,"}, {"id": "s47", "start": 234.48, "end": 238.8, "text": "uh, because you're both, uh, employees at the same company that badged in, right?"}, {"id": "s48", "start": 238.8, "end": 245.48, "text": "So, um, that's kind of like the analogy I may I may use later in the presentation."}, {"id": "s49", "start": 245.52, "end": 251.0, "text": "Okay, so based on those key questions, we kind of think about like, \"Hey, what's the mental model that we can build off of this, right?\""}, {"id": "s50", "start": 251.0, "end": 257.04, "text": "And we have this like stakes and evidence matrix, and we're going to talk about, uh, these three different scenarios."}, {"id": "s51", "start": 257.04, "end": 265.44, "text": "Um, and so, uh, we're going to first uh, and you'll see at the top it's kind of like the stakes and counterparty part that I was just talking about the context,"}, {"id": "s52", "start": 265.44, "end": 265.68, "text": "right?"}, {"id": "s53", "start": 265.68, "end": 268.84, "text": "Counterparty is like the open or closed ecosystem."}, {"id": "s54", "start": 268.84, "end": 276.76, "text": "And then authority and like evidence is really about how you answer those those those three questions I had shared in in the prior slide, right?"}, {"id": "s55", "start": 276.76, "end": 286.96, "text": "Um, so we'll talk a little bit first about like cloud code since that's what most people are very familiar with, and, uh, basically, you know, when you as a human you're going, you know, using your cloud code,"}, {"id": "s56", "start": 286.96, "end": 296.88, "text": "uh, you know, you might be, uh, then setting up, uh, your your connectors with your GitHub or or, um, you know, Jira or whatever, uh, linear or whatever uh, tool you're using."}, {"id": "s57", "start": 296.88, "end": 306.52, "text": "And, um, you know, you're as part of that process you're kind of like authenticating, so that's how you kind of like get that that human authorization and consent um, with those those applications"}, {"id": "s58", "start": 306.52, "end": 309.68, "text": "and to for the for cloud container act with them."}, {"id": "s59", "start": 309.68, "end": 314.44, "text": "Um, in terms of the, uh, actual like, uh, scopes, right?"}, {"id": "s60", "start": 314.44, "end": 319.16, "text": "The the example here would be that about, you know, cloud's like, uh, tool permissions."}, {"id": "s61", "start": 319.16, "end": 328.72, "text": "Like people are very familiar probably with, uh, the fact that you can allow cloud cloud to to use certain tools, um, uh, deny or ask cloud to ask you,"}, {"id": "s62", "start": 328.72, "end": 332.08, "text": "uh, before for before doing something, right?"}, {"id": "s63", "start": 332.08, "end": 343.2, "text": "And then in terms of, uh, the action of like a cloud, uh, we generally think, um, because it's a kind of closed ecosystem and it's like you're coding, uh, the stakes are relatively low here."}, {"id": "s64", "start": 343.2, "end": 349.64, "text": "And so in terms of the evidence or proof, you don't really need to have like that cryptographic proof um, at that point in time."}, {"id": "s65", "start": 349.64, "end": 357.0, "text": "You can kind of just look at like system logs in order to to or you have the ability to just revert revert your changes, right?"}, {"id": "s66", "start": 357.0, "end": 367.24, "text": "So, that's kind of like an example of applying like this mental model and using cloud code in terms of that scenario."}, {"id": "s67", "start": 367.24, "end": 381.6, "text": "Okay, so the next example we're going to talk about is a more medium stakes scenario and why why we're calling this medium stakes even though it's within a known or kind of closed ecosystem is because it has to do with money"}, {"id": "s68", "start": 381.6, "end": 383.04, "text": "and and payments."}, {"id": "s69", "start": 383.04, "end": 388.2, "text": "And so that's like the shared vault and OAuth scope example."}, {"id": "s70", "start": 389.919, "end": 398.56, "text": "So, in this example where the use case is is like hey you're like a let's say a merchant or Trip Advisor, right?"}, {"id": "s71", "start": 398.56, "end": 405.12, "text": "And you have a travel travel company and you have a lot of great content that you want to monetize."}, {"id": "s72", "start": 405.12, "end": 408.68, "text": "It could be occupancy data, it could be like reviews, what have you."}, {"id": "s73", "start": 408.68, "end": 410.2, "text": "And you have a new customer now."}, {"id": "s74", "start": 410.2, "end": 419.12, "text": "You have like a trap like travel agents or like you know agents that that are buyer agents that are are coming to you and you want to be able to"}, {"id": "s75", "start": 419.12, "end": 422.12, "text": "monetize monetize your data, right?"}, {"id": "s76", "start": 422.12, "end": 424.0, "text": "Through machine payments."}, {"id": "s77", "start": 424.0, "end": 435.0, "text": "So, we work with a partner and Never mind to be able to enable that that that use case and leveraging our they're leveraging our infrastructure."}, {"id": "s78", "start": 435.0, "end": 435.76, "text": "Right?"}, {"id": "s79", "start": 435.76, "end": 446.48, "text": "So, there is two pieces of infrastructure that they that I like to kind of to call out or primitives that they use that as part of the Braintree or PayPal enterprise"}, {"id": "s80", "start": 446.48, "end": 447.08, "text": "infrastructure."}, {"id": "s81", "start": 447.08, "end": 448.88, "text": "One is like the vault, right?"}, {"id": "s82", "start": 448.88, "end": 462.68, "text": "And the vault by itself, which is storing all these like payment credentials on behalf of the on behalf of the buyer agents, on itself doesn't really do much, but in order to create"}, {"id": "s83", "start": 462.68, "end": 478.68, "text": "what nevermind creates is a a more eco closed ecosystem, they then off you're able to um offer uh or offer access to those payment credentials through OAuth, right?"}, {"id": "s84", "start": 478.68, "end": 479.88, "text": "To all those merchants."}, {"id": "s85", "start": 479.88, "end": 486.24, "text": "So, in our example before we talked about that that travel travel um travel company, right?"}, {"id": "s86", "start": 486.24, "end": 497.88, "text": "So, by doing so, they're able to then create like an ecosystem um of buyer agents and seller agents uh and have a more trusted environment, right?"}, {"id": "s87", "start": 497.88, "end": 508.6, "text": "So, um in the in the just kind of talking more about the use case, like the human then is then going to be authorizing authorizing their their payment."}, {"id": "s88", "start": 508.6, "end": 511.84, "text": "Usually, this is a commercial card commercial use case."}, {"id": "s89", "start": 511.84, "end": 516.4, "text": "So, you're using like a commercial card, they share it with the buyer agent, travel agent."}, {"id": "s90", "start": 516.4, "end": 523.719, "text": "Um then that uh it it also has scopes associated with that mandate."}, {"id": "s91", "start": 523.719, "end": 534.36, "text": "So, that's how you're able to do controlled authority, but in terms of like the actual like dispute handling, we really uh don't have like a we're not using like"}, {"id": "s92", "start": 534.36, "end": 538.6, "text": "cryptographic proof that's being sent as part of that that request, right?"}, {"id": "s93", "start": 538.6, "end": 549.0, "text": "At the end of the day, they can since it's more of a closed ecosystem, they're able to leverage like the just the existing transaction logs."}, {"id": "s94", "start": 549.0, "end": 549.64, "text": "Right?"}, {"id": "s95", "start": 549.64, "end": 563.4, "text": "So, that's kind of an example of like a medium stakes and use case or scenario, and we we believe it's medium stakes because of the fact that it is a more closed ecosystem"}, {"id": "s96", "start": 563.4, "end": 573.2, "text": "and doesn't require all like the you know, evidence in terms of or proof, right?"}, {"id": "s97", "start": 573.2, "end": 575.52, "text": "So, that's kind of like my part."}, {"id": "s98", "start": 575.52, "end": 580.68, "text": "I'll going to turn it over now to Ben and uh take it from here."}, {"id": "s99", "start": 580.68, "end": 583.08, "text": "Uh thanks, Jay."}, {"id": "s100", "start": 583.76, "end": 590.8, "text": "Yeah, so the last slide that Jay talked about, um you know, we're kind of going over the medium stakes example."}, {"id": "s101", "start": 590.8, "end": 596.48, "text": "Uh um In that scenario, um you know, both parties know each other."}, {"id": "s102", "start": 596.48, "end": 599.36, "text": "Uh they're acting within, you know, the same system."}, {"id": "s103", "start": 599.36, "end": 611.24, "text": "They they know you know, they're borrowing trust from, you know, Nevermind to make sure that, you know, the buying agent is falling within, you know, the instructions that a human has given it."}, {"id": "s104", "start": 611.24, "end": 619.72, "text": "Um and then the selling agent that's also on Nevermind can feel comfortable taking a payment um from another user of of Nevermind."}, {"id": "s105", "start": 619.72, "end": 626.44, "text": "And And so, what we want to talk about next is what happens when the parties are are not known to each other and they're not vetted."}, {"id": "s106", "start": 626.44, "end": 638.68, "text": "Um And so, like we think, you know, we believe that the best option for that, you know, is actually do these autonomous payments, um where, you know, you know, not everyone's known."}, {"id": "s107", "start": 638.68, "end": 640.6, "text": "Like you know, the stakes are high."}, {"id": "s108", "start": 640.6, "end": 647.16, "text": "You know, we think that the industry should converge on the FIDO verifiable intents and AP2 mandate."}, {"id": "s109", "start": 647.16, "end": 653.32, "text": "Um You know, the TLDR of that is, you know, it's a a multi-layered selective disclosure jot."}, {"id": "s110", "start": 653.32, "end": 658.96, "text": "Uh The first layer is, you know, created by a trustworthy credential provider."}, {"id": "s111", "start": 658.96, "end": 661.32, "text": "You know, in this case, hopefully it would be PayPal."}, {"id": "s112", "start": 661.32, "end": 665.72, "text": "Um The second layer, you know, encapsulates the user's instructions to the agent."}, {"id": "s113", "start": 665.72, "end": 669.16, "text": "Um The user signs that with their private key."}, {"id": "s114", "start": 669.16, "end": 675.44, "text": "And then the third layer, if there's going to be a third layer, is when um we're doing autonomous payments."}, {"id": "s115", "start": 675.44, "end": 679.16, "text": "So, that case, the agent would, you know, sign that third layer."}, {"id": "s116", "start": 679.16, "end": 690.2, "text": "And And so, the where that's powerful is that, you know, party involved in a transaction can can verify the part that's, you know, important to them."}, {"id": "s117", "start": 690.2, "end": 694.36, "text": "So, merchants can verify that the checkout is correct."}, {"id": "s118", "start": 694.36, "end": 698.2, "text": "Um Um payment processors can verify that the payment mandate is correct."}, {"id": "s119", "start": 698.2, "end": 702.08, "text": "Um And no one has to have any relationship to each other."}, {"id": "s120", "start": 702.08, "end": 710.4, "text": "Um And so, like I think, you know, if there's going to be a ton of payments, you know, at scale, we think that that's going to be the best"}, {"id": "s121", "start": 710.4, "end": 712.96, "text": "um way to accomplish it."}, {"id": "s122", "start": 712.96, "end": 717.92, "text": "Uh pictures on the screen are depicting our PayPal approval token."}, {"id": "s123", "start": 717.92, "end": 730.52, "text": "Um This is a new primitive that allows users of PayPal to basically start the order process with an agent um for that agent has actually found an item at a merchant to transact with."}, {"id": "s124", "start": 730.52, "end": 734.04, "text": "Uh historically, PayPal orders have been synchronous."}, {"id": "s125", "start": 734.04, "end": 742.44, "text": "Um You know, users on checkout, they find their item, they go to their PayPal app, they approve it, um and it's done."}, {"id": "s126", "start": 742.44, "end": 744.96, "text": "Uh here, it's a little bit different, you know."}, {"id": "s127", "start": 744.96, "end": 755.24, "text": "Users on their agent, um they get redirected to PayPal to confirm the instructions that are given to the agent, and then uh PayPal hands back this JSON payload."}, {"id": "s128", "start": 755.24, "end": 764.0, "text": "Um you know, similar to the verifiable intent, uh includes the amount, the expiry, uh the merchant that is supposed to be transacted with."}, {"id": "s129", "start": 764.0, "end": 767.68, "text": "Um Similar concept, but not quite the same."}, {"id": "s130", "start": 767.68, "end": 772.8389999999999, "text": "Um it's an opaque string that only PayPal can approve right now."}, {"id": "s131", "start": 772.8389999999999, "end": 781.16, "text": "But we're about to ship this into production, um and users of Jet and I that pick PayPal as a payment method will will use this."}, {"id": "s132", "start": 782.0, "end": 787.08, "text": "Um so, going to our last slide, um you know, we showed this slide earlier."}, {"id": "s133", "start": 787.08, "end": 790.4, "text": "It we didn't have the two columns filled out on the right-hand side."}, {"id": "s134", "start": 790.4, "end": 804.12, "text": "Um You know, we wanted to reinforce this mental model where, you know, starting at the top, we have, you know, the low-stakes scenario, you know, you're you're using Claude, you've given it access to connectors, you know, granular permissions to do things on your behalf."}, {"id": "s135", "start": 804.12, "end": 807.44, "text": "Um you feel comfortable doing that because the stakes are low."}, {"id": "s136", "start": 807.44, "end": 809.64, "text": "You know, you can reverse those actions or redo them."}, {"id": "s137", "start": 809.64, "end": 813.6, "text": "It's not a big deal if Claude produces, you know, the wrong output."}, {"id": "s138", "start": 813.6, "end": 816.68, "text": "Uh going down a level, we have the medium stakes scenario."}, {"id": "s139", "start": 816.68, "end": 822.0, "text": "You have two parties that know each other that are acting within the same system's boundary."}, {"id": "s140", "start": 822.0, "end": 824.84, "text": "Um you know, the the actions are a little bit higher stakes."}, {"id": "s141", "start": 824.84, "end": 834.2, "text": "You know, there is money movement here, but both parties can can feel comfortable, you know, transacting with each other because they're relying on this this third party to enforce"}, {"id": "s142", "start": 834.2, "end": 836.68, "text": "uh the payment mandate."}, {"id": "s143", "start": 836.68, "end": 845.16, "text": "And then the third level, you know, the highest stakes one um that we haven't actually really seen in production yet, it's, you know, the user's giving an agent some"}, {"id": "s144", "start": 845.16, "end": 851.32, "text": "instructions to do something on their behalf autonomously, and you don't know who they're going to interact with, who they're going to transact with."}, {"id": "s145", "start": 851.32, "end": 857.32, "text": "Um and those parties need some verifiable proof that the agent has permission to do the transaction."}, {"id": "s146", "start": 857.32, "end": 864.36, "text": "And so, we believe that that will be um either verifiable dents and and AP2 mandates."}, {"id": "s147", "start": 864.36, "end": 874.36, "text": "Um I think the interesting thing is it's also our belief that, you know, this is a model that can't won't just be used for payments, but we think it could be for"}, {"id": "s148", "start": 874.36, "end": 876.48, "text": "any sort of high-stakes action that's hard to reverse."}, {"id": "s149", "start": 876.48, "end": 884.76, "text": "So, medical orders, e-signatures, securities trading, um you know, basically any hard-to-reverse agent action."}, {"id": "s150", "start": 885.0, "end": 886.2, "text": "That's all I have."}, {"id": "s151", "start": 886.2, "end": 894.36, "text": "Yeah, I mean, I think um if we could just go back to analogies, uh you know, like in the low stakes is kind of like, \"Hey, you're within the the building."}, {"id": "s152", "start": 894.36, "end": 896.8, "text": "You've uh put a badge in and you're within the building.\""}, {"id": "s153", "start": 896.8, "end": 902.52, "text": "Whereas in the um high stakes is kind of like, \"You are on the street and you meet somebody.\""}, {"id": "s154", "start": 902.52, "end": 909.4, "text": "And uh you know, you need a way to be able to uh get comfort that that's someone you can trust, right?"}, {"id": "s155", "start": 909.4, "end": 913.44, "text": "Um is a badge is them showing you their badge good enough?"}, {"id": "s156", "start": 913.44, "end": 914.44, "text": "Uh probably not."}, {"id": "s157", "start": 914.44, "end": 919.32, "text": "You need to have something that's a little bit more um you know, verify verifiable."}, {"id": "s158", "start": 919.32, "end": 921.04, "text": "Or I guess at a verifiable standard."}, {"id": "s159", "start": 921.04, "end": 934.24, "text": "So, um you know, just kind of like using that analogy and like how to think about like the you know, what you need to do in order to prove the that the human authorized the agent."}, {"id": "s160", "start": 934.24, "end": 939.64, "text": "Hopefully that that helps and now you have kind of like a tool set to use."}, {"id": "s161", "start": 939.64, "end": 943.08, "text": "So you can kind of prevent Skynet from taking over your wallet."}, {"id": "s162", "start": 943.08, "end": 945.8, "text": "So, thank you very much for your for listening."}, {"id": "s163", "start": 945.8, "end": 948.2, "text": "Hope that helps."}, {"id": "s164", "start": 949.105, "end": 951.105, "text": "[applause]"}, {"id": "s165", "start": 964.826, "end": 966.826, "text": "[music]"}]}, {"id": "wCIYViPd4SU", "title": "Tethered: Our Agents Are Us — Shu Fang, Two Sigma", "channel": "AI Engineer", "duration": 1270, "upload_date": null, "url": "https://www.youtube.com/watch?v=wCIYViPd4SU", "api": "/api/talks/wCIYViPd4SU.json", "summary_url": "/#wCIYViPd4SU", "transcript": {"html": "/transcripts/wCIYViPd4SU.html", "txt": "/transcripts/wCIYViPd4SU.txt", "vtt": "/transcripts/wCIYViPd4SU.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.28, "end": 13.599, "text": "Great."}, {"id": "s3", "start": 13.599, "end": 15.04, "text": "Thanks everyone for coming."}, {"id": "s4", "start": 15.04, "end": 16.8, "text": "Uh this talk is called Tethered."}, {"id": "s5", "start": 16.8, "end": 18.0, "text": "Our agents are us."}, {"id": "s6", "start": 18.0, "end": 23.199, "text": "I'm Shu Fang from Two Sigma and let's get started."}, {"id": "s7", "start": 23.199, "end": 26.0, "text": "So just a quick explanation."}, {"id": "s8", "start": 26.0, "end": 27.92, "text": "Two Sigma is a little quant fund."}, {"id": "s9", "start": 27.92, "end": 41.6, "text": "I will also take the opportunity to explain that the name ostensibly is not because we have two co-founders who are very online but because the two sigas are about the volatility sigma the small"}, {"id": "s10", "start": 41.6, "end": 43.68, "text": "sigma and the large sigma sum."}, {"id": "s11", "start": 43.68, "end": 52.239, "text": "So by summing together these individual volatilities we can uh hedge the risk achieve differentiated alpha."}, {"id": "s12", "start": 52.559, "end": 56.879, "text": "Now because we are a hedge fund I have to give you all this important legal disclaimer."}, {"id": "s13", "start": 56.879, "end": 57.76, "text": "You don't have to read it."}, {"id": "s14", "start": 57.76, "end": 59.28, "text": "It just has to be in this."}, {"id": "s15", "start": 59.28, "end": 63.12, "text": "And the TLDDR is that I'm not trying to sell you on anything."}, {"id": "s16", "start": 63.12, "end": 66.479, "text": "The views are mine and not necessarily the companies."}, {"id": "s17", "start": 66.479, "end": 73.36, "text": "Any logos, any other companies I mentioned here are not me endorsing them or telling you to buy their stocks or anything."}, {"id": "s18", "start": 73.36, "end": 76.88, "text": "It is purely maybe coincidental."}, {"id": "s19", "start": 77.84, "end": 82.88, "text": "But that also is meant to segue into the fact that we are an old company."}, {"id": "s20", "start": 82.88, "end": 94.56, "text": "We're 25 years old and clearly we're a very regulated industry, but we've managed to run an ecosystem where everyone at the company has a cloud agent."}, {"id": "s21", "start": 94.56, "end": 97.92, "text": "And not only that, but these agents run as their own identity."}, {"id": "s22", "start": 97.92, "end": 103.119, "text": "So, we're going to explain how we got here and why we're actually okay with this."}, {"id": "s23", "start": 104.0, "end": 106.56, "text": "So, we're first going to do a little horror movie review."}, {"id": "s24", "start": 106.56, "end": 109.36, "text": "If any of you have seen us, you don't have to pay attention to this."}, {"id": "s25", "start": 109.36, "end": 125.759, "text": "defend if you haven't the TLDDR of the movie is that everyone has these doubles and these doubles are called tethered when the doubles decide to run loose and cause chaos and run around with these golden scissors they're called untetered"}, {"id": "s26", "start": 125.759, "end": 138.48, "text": "and this is going to somehow relate into my talk so back in June 2025 you know cloud code GA and all that stuff people started using agents through the local"}, {"id": "s27", "start": 138.48, "end": 150.0, "text": "computer your local machine and it's very powerful but one it was CLI constrained and two it was localized right we wanted to achieve a world where people could use these agents"}, {"id": "s28", "start": 150.0, "end": 161.76, "text": "from wherever they were whether it be mobile through slack through browsers but still have the ability to run them remote and this is important not just because of the capability"}, {"id": "s29", "start": 161.76, "end": 174.879, "text": "but many many people technical or not are not comfortable fully operating within a CLI so the question became Okay, how do we actually run these in terms of what identity they run as?"}, {"id": "s30", "start": 175.44, "end": 182.08, "text": "The conventional wisdom is that you run these as some machine identity that is attached to your user in some way."}, {"id": "s31", "start": 182.08, "end": 185.04, "text": "You have a shoe and you have a shoe agent."}, {"id": "s32", "start": 185.04, "end": 190.8, "text": "But this quickly collapses and we found this collapsed because of all the reasons that you can imagine, right?"}, {"id": "s33", "start": 190.8, "end": 192.879, "text": "It's very hard to keep permissions in sync."}, {"id": "s34", "start": 192.879, "end": 197.36, "text": "Anytime you're dealing with software licensing, now you have to deal with two licenses."}, {"id": "s35", "start": 197.36, "end": 203.28, "text": "uh there's certain systems that do not support multiple identities interacting with the same underlying data."}, {"id": "s36", "start": 203.28, "end": 211.36, "text": "You know, stuff like Google Workspace, your emails, etc. And then how some systems are going to block as a first step."}, {"id": "s37", "start": 211.36, "end": 214.56, "text": "So you have to you're just going over the barrier of entry."}, {"id": "s38", "start": 214.56, "end": 220.799, "text": "And then you also have to figure out how you actually manage the public and private boundaries."}, {"id": "s39", "start": 221.68, "end": 225.04, "text": "So obviously it's like why don't we just run these as the user, right?"}, {"id": "s40", "start": 225.04, "end": 229.76, "text": "How do how do we run these remotely as the exact same user identity?"}, {"id": "s41", "start": 229.76, "end": 238.239, "text": "And as a result, all the capabilities, all the access, all those previous constraints are no longer valid."}, {"id": "s42", "start": 239.76, "end": 243.439, "text": "And we already had the info for this and I imagine a lot of you do too."}, {"id": "s43", "start": 243.439, "end": 250.879, "text": "If you don't, I would uh encourage investing in it, which is that you know you could have a Kubernetes cluster."}, {"id": "s44", "start": 250.879, "end": 256.88, "text": "You have all all of your clusters, your regions, etc. And you have name spaces for individuals, right?"}, {"id": "s45", "start": 256.88, "end": 267.759, "text": "And the reason we had this is because we often already needed this capability not for the agentic purposes, but for all the automated operations that we need to do that did not"}, {"id": "s46", "start": 267.759, "end": 270.16, "text": "suit confinement to someone's local machine."}, {"id": "s47", "start": 270.16, "end": 283.919, "text": "So we'd run automated jobs, you know, code containers usually operate on this principle, research notebooks, etc. And every single user already had these namespaces existing in every single region and everything in it runs as the user."}, {"id": "s48", "start": 283.919, "end": 286.32, "text": "A very simplistic way of how this works."}, {"id": "s49", "start": 286.32, "end": 293.36, "text": "Some trigger is going in to your controller and it's saying, \"Hey, I need to spin up some compute resources."}, {"id": "s50", "start": 293.36, "end": 306.32, "text": "You have a separate identity service that a sidecar in the pod pulls down from to allow your actual containers to run and mount that identity and it runs as you."}, {"id": "s51", "start": 307.28, "end": 314.08, "text": "So of course there are big dangers with this right and you know the first danger you may imagine is an internal danger."}, {"id": "s52", "start": 314.08, "end": 319.44, "text": "How do you actually differentiate who or what took action right?"}, {"id": "s53", "start": 319.44, "end": 323.12, "text": "You have you and your U agent are now the exact same identity."}, {"id": "s54", "start": 323.12, "end": 326.639, "text": "That's why I grew this mustache so you could tell the difference between us for now."}, {"id": "s55", "start": 326.639, "end": 333.039, "text": "But uh you really want to know that differentiation because certain actions that can be taken."}, {"id": "s56", "start": 333.039, "end": 339.68, "text": "You want to audit, you possibly want to block and you want to just have the trace, right?"}, {"id": "s57", "start": 339.68, "end": 351.52, "text": "You want to have the attribution to determine, hey, was it someone operating as the human operating purely human actions or was it the agent identity doing these things?"}, {"id": "s58", "start": 353.68, "end": 363.759, "text": "Another danger and perhaps a bigger one is we all know that for all of these capabilities and LOMs in general, it's essential you have access to the external web."}, {"id": "s59", "start": 363.759, "end": 369.759, "text": "These are point in time mathematical functions that cannot actually update based on current data."}, {"id": "s60", "start": 369.759, "end": 371.44, "text": "So it's like open internet access."}, {"id": "s61", "start": 371.44, "end": 375.52, "text": "That's why it's a core capability, web search, web fetch tools, right?"}, {"id": "s62", "start": 375.52, "end": 381.759, "text": "The problem is once you have that capability, you leave yourself open to huge vulnerability vectors."}, {"id": "s63", "start": 381.759, "end": 384.479, "text": "One of which is exfiltration risk."}, {"id": "s64", "start": 384.479, "end": 391.199, "text": "This is one we are deeply concerned with in terms of possibly losing IP, you know, just exposing our sensitive information."}, {"id": "s65", "start": 391.199, "end": 407.68, "text": "but also certainly the possibility of untrusted content flowing back in and you know prompt injection just malware and vulnerabilities are all big risks there and then something we separately deal with is just the ability to make sure we don't"}, {"id": "s66", "start": 407.68, "end": 421.44, "text": "u use licensed content without the right copyrights or actual licensing right you can map this to the golden scissors that they use and us so this is kind of our biggest fear to be honest"}, {"id": "s67", "start": 421.599, "end": 428.88, "text": "So we are a finance firm and in finance there's a concept of obviously risk and return."}, {"id": "s68", "start": 428.88, "end": 440.24, "text": "So when we think about what is the positioning on the risk and return graph there's huge value in allowing agents to run you but also there's very high risk."}, {"id": "s69", "start": 440.24, "end": 446.08, "text": "What we generally want to do is make sure we capture as much of the value as possible but reduce the risk."}, {"id": "s70", "start": 446.08, "end": 449.039, "text": "We're optimizing that ratio of return over risk."}, {"id": "s71", "start": 449.039, "end": 451.44, "text": "Some of you may know the sharp ratio."}, {"id": "s72", "start": 451.44, "end": 458.479, "text": "We're looking at that from the perspective of how do we let agents run as users and optimize that return."}, {"id": "s73", "start": 458.479, "end": 462.4, "text": "And the ways we need to do this, right, are to solve those two critical problems."}, {"id": "s74", "start": 462.4, "end": 467.599, "text": "One, differentiating access attributed to the human versus the agent."}, {"id": "s75", "start": 467.599, "end": 472.88, "text": "And two, somehow getting safe web access in place."}, {"id": "s76", "start": 474.4, "end": 478.879, "text": "So the first thing we did is this attribution step, right?"}, {"id": "s77", "start": 478.879, "end": 486.879, "text": "And how we did this is we use a header and we make sure that every single agent continues to append to that header."}, {"id": "s78", "start": 486.879, "end": 491.759, "text": "And this is something we've all hopefully done in some way, right?"}, {"id": "s79", "start": 491.759, "end": 492.56, "text": "Trace IDs."}, {"id": "s80", "start": 492.56, "end": 494.8, "text": "You've you've all done this in deterministic code."}, {"id": "s81", "start": 494.8, "end": 500.56, "text": "Making sure that your observability stack propagates through a trace ID through disparate systems."}, {"id": "s82", "start": 500.56, "end": 512.32, "text": "How we did it is very similar to how you would do it for trace ID except we are dealing with a certain difference in the control vector which is the agent itself right and"}, {"id": "s83", "start": 512.32, "end": 526.0, "text": "you can force you know using certain HP clients using MCPS using skills to make sure that that header initially gets populated and everywhere else along the way continues to be populated right you have a lot more deterministic"}, {"id": "s84", "start": 526.0, "end": 535.76, "text": "control over agents and the harnesses and the frameworks than you may ink and you can enforce it with some of the already existing primitives."}, {"id": "s85", "start": 536.72, "end": 550.16, "text": "Now this gets very interesting because this is not only giving us the proper identification of who did something right it actually goes beyond that and no longer are we confined by"}, {"id": "s86", "start": 550.16, "end": 564.959, "text": "just knowing the act identity but we also actually get the full provenence through the system right as we deal with multiple steps in the system we are able to replay the entire chain of actions that actually led to some end result."}, {"id": "s87", "start": 564.959, "end": 576.16, "text": "So the comparison here is if we had used that shoe agent identity we wouldn't have this and we would just know that at some point shoe agent triggered this initial flow"}, {"id": "s88", "start": 576.16, "end": 589.44, "text": "into the span but we don't actually know hey those subsequent actions how do we properly trace back to that origination point with this header this trace ID we get that full propagation"}, {"id": "s89", "start": 589.44, "end": 599.8389999999999, "text": "and the actor is still me right it's still my identity And the second step that we needed to fix is this web access."}, {"id": "s90", "start": 599.8389999999999, "end": 600.56, "text": "Right?"}, {"id": "s91", "start": 600.56, "end": 606.16, "text": "A lot of web access these days uses indexes for search."}, {"id": "s92", "start": 606.16, "end": 606.32, "text": "Right?"}, {"id": "s93", "start": 606.32, "end": 611.44, "text": "I think cloud code's native one is Brave web browser and it uses a Brave index."}, {"id": "s94", "start": 611.44, "end": 614.959, "text": "Well, we were like, hey, why don't we see what Google has, right?"}, {"id": "s95", "start": 614.959, "end": 621.6, "text": "Google is at its core hopefully still a search company and they do this index generation already."}, {"id": "s96", "start": 621.6, "end": 635.519, "text": "And it turns out they actually do offer something specifically for regulated industries like ours that allows you to use their web index but within your existing VPC your you know network controls right and it's called"}, {"id": "s97", "start": 635.519, "end": 637.279, "text": "web grounding for enterprise."}, {"id": "s98", "start": 637.279, "end": 648.24, "text": "It basically works like this where it's still within the exact same network boundary where you're probably running your cloud agents and stuff like that and offers two core capabilities"}, {"id": "s99", "start": 648.24, "end": 650.0, "text": "search and fetch."}, {"id": "s100", "start": 650.0, "end": 650.24, "text": "Right?"}, {"id": "s101", "start": 650.24, "end": 653.8389999999999, "text": "So the exact capabilities we want to mirror, we leverage that."}, {"id": "s102", "start": 653.8389999999999, "end": 655.36, "text": "We have all these guarantees."}, {"id": "s103", "start": 655.36, "end": 662.079, "text": "There's one tiny downside, which is the data is obviously not going to be completely fresh, right?"}, {"id": "s104", "start": 662.079, "end": 667.36, "text": "And the constraints around this last I checked, it's fresh within 24 hours."}, {"id": "s105", "start": 667.36, "end": 670.56, "text": "And for more regularly updated websites, it's fresh within 6 hours."}, {"id": "s106", "start": 670.56, "end": 680.48, "text": "But for most use cases that you may have for agents, that's probably more than sufficient and completely removes this external egress vulnerability vector."}, {"id": "s107", "start": 681.44, "end": 693.44, "text": "Now the second question is how do we actually ensure the agents use web grounding and again this is very simple with the existing primitives right you just need to make sure that they don't get confused"}, {"id": "s108", "start": 693.44, "end": 709.92, "text": "and you certainly block the access itself but just for user experience and stuff like that you need to make sure those tools themselves that are already existing and primitive and native to these agent harnesses and frameworks and such are actually blocked right again here's cloud code example."}, {"id": "s109", "start": 709.92, "end": 712.0, "text": "I think every other hotness has the same thing."}, {"id": "s110", "start": 712.0, "end": 713.44, "text": "Web search, web fetch."}, {"id": "s111", "start": 713.44, "end": 714.64, "text": "We just deny those tools."}, {"id": "s112", "start": 714.64, "end": 715.92, "text": "It's like, hey, you can't even use these."}, {"id": "s113", "start": 715.92, "end": 720.0, "text": "These are not even in your suite of tools available to you."}, {"id": "s114", "start": 720.0, "end": 733.44, "text": "Instead, we use the redirection going through, you know, MCP CLI and actual client code using the supported paths, uh, skills, whatever to make sure that whenever someone does need the capabilities of web access,"}, {"id": "s115", "start": 733.44, "end": 737.44, "text": "it goes through that web grounding cache index."}, {"id": "s116", "start": 741.279, "end": 758.88, "text": "So takeaways from this talk basically make sure you ted your agents right letting them run around untetered you know is very dangerous we want to tar them and it's much safer to do so and in fact if we go back to that initial slide of how we consider this relative to the risk and expected return"}, {"id": "s117", "start": 758.88, "end": 769.8389999999999, "text": "because of some of the things we found while doing this we actually believe we didn't lose expected value while huge hugely reducing the risk, right?"}, {"id": "s118", "start": 769.8389999999999, "end": 781.92, "text": "So, the index certainly lags, but we get a ton more observability by just using that tagging primitive versus the actual uh just pure identity verification."}, {"id": "s119", "start": 783.92, "end": 798.399, "text": "And I think this is [sighs and gasps] one thing people should really consider, especially people working at companies, enterprises, which is that there are a ton of things happening in the Genai landscape that are probably scary to us"}, {"id": "s120", "start": 798.399, "end": 804.88, "text": "that make your security teams really afraid that feel like, hey, they are too far on the frontier, right?"}, {"id": "s121", "start": 804.88, "end": 806.72, "text": "You you're like, I wouldn't run this locally."}, {"id": "s122", "start": 806.72, "end": 812.399, "text": "I wouldn't run a open cloud agent on my local machine with full permissions, right?"}, {"id": "s123", "start": 812.399, "end": 818.48, "text": "There's all these horror stories and you know various anecdotes about why this is bad."}, {"id": "s124", "start": 818.48, "end": 829.68, "text": "But in an enterprise again you can figure out how to leverage your enterprise resources to actually reduce those risk factors and get the real value out of the capabilities"}, {"id": "s125", "start": 829.68, "end": 833.44, "text": "and this is where you should be investing that time."}, {"id": "s126", "start": 834.8, "end": 839.12, "text": "So what we ultimately shipped is this entire framework, right?"}, {"id": "s127", "start": 839.12, "end": 852.959, "text": "We have the ability to run cloud agents as user identities uh because of all of those guard rails and vectors we put in place and using different kind of"}, {"id": "s128", "start": 852.959, "end": 860.0, "text": "interface vectors to actually operate with them so that people who are not comfortable with CLIs can leverage them but certainly for other cases as well."}, {"id": "s129", "start": 860.0, "end": 874.32, "text": "And as part of that, we made sure to ship out just a managed fleet of cloud, you know, whatever agents for every single user in this remote fashion that they can already interact with so that we can continue to deploy and improve"}, {"id": "s130", "start": 874.32, "end": 877.279, "text": "what is actually available to individual users."}, {"id": "s131", "start": 877.279, "end": 890.639, "text": "But also the core capability itself of being able for every anyone at the company to deploy an agent that runs in the cloud remotely with their full identity is there and is something we are comfortable with."}, {"id": "s132", "start": 891.92, "end": 896.0, "text": "So to finish up, uh, everything I talked about actually happened last year."}, {"id": "s133", "start": 896.0, "end": 907.6, "text": "So if you are interested at all in wanting to build and see what we're working on now, or even better, if you're like, that was horrible, we could do so much better."}, {"id": "s134", "start": 907.6, "end": 910.32, "text": "We are hiring and we encourage you to apply."}, {"id": "s135", "start": 910.32, "end": 917.36, "text": "If you have any experience in any of these domains, you can check that QR code, check that link."}, {"id": "s136", "start": 917.36, "end": 919.279, "text": "Yeah, that's it."}, {"id": "s137", "start": 919.279, "end": 920.94, "text": "Any questions?"}, {"id": "s138", "start": 920.94, "end": 922.94, "text": "[applause]"}, {"id": "s139", "start": 926.24, "end": 932.24, "text": "What do you think about local connected to agents for enterprises?"}, {"id": "s140", "start": 932.32, "end": 938.32, "text": "Uh, not the views of my company, but personally I I think that is"}, {"id": "s141", "start": 938.32, "end": 939.12, "text": "question."}, {"id": "s142", "start": 939.12, "end": 939.68, "text": "Yeah, sorry."}, {"id": "s143", "start": 939.68, "end": 944.24, "text": "His question was how do how do I view local LLMs for enterprise usage?"}, {"id": "s144", "start": 944.24, "end": 956.32, "text": "And I think local in the sense that we manage ourselves is probably where we eventually want to go for a lot of our token use and inference because of cost because of deprecations"}, {"id": "s145", "start": 956.32, "end": 961.36, "text": "because of you know every time Frontier Lab drops a new model you see some degradation."}, {"id": "s146", "start": 961.36, "end": 972.0, "text": "It's just there's too much volatility in that that we don't need to risk as the openweight models kind of become more advanced and sophisticated."}, {"id": "s147", "start": 982.959, "end": 984.959, "text": "request."}, {"id": "s148", "start": 991.92, "end": 992.16, "text": "Yeah."}, {"id": "s149", "start": 992.16, "end": 996.9590000000001, "text": "So as you can see the header is not purely differentiating in itself."}, {"id": "s150", "start": 996.9590000000001, "end": 1002.56, "text": "Someone someone could certainly populate that, but the actor the identity itself will not be me, right?"}, {"id": "s151", "start": 1002.56, "end": 1014.8, "text": "So some someone could I guess write in that they're using some agent, but the core previous identity itself is not mimickable, not like actually interceptable, right?"}, {"id": "s152", "start": 1014.8, "end": 1024.079, "text": "So we still we have both we have both the originating identity and that you know all of your identity ecosystems and chains to ensure that but also the header."}, {"id": "s153", "start": 1024.079, "end": 1025.52, "text": "part of the header."}, {"id": "s154", "start": 1025.52, "end": 1026.799, "text": "Yeah, that that that is separate."}, {"id": "s155", "start": 1026.799, "end": 1036.0, "text": "The header is just XSLm agent and then you still have some way you you need some way to actually determine the identity of who's coming."}, {"id": "s156", "start": 1046.559, "end": 1064.559, "text": "Yeah, I you know gen generally all of our RPC in some way has an initial entry point that is like populatable with that header and then once it actually goes downstream you know you make sure that same with trace ids is part of the span internally within the So"}, {"id": "s157", "start": 1065.039, "end": 1072.0, "text": "can you clarify how the use of Google index addresses the prompt injection issue?"}, {"id": "s158", "start": 1072.0, "end": 1072.32, "text": "Yeah."}, {"id": "s159", "start": 1072.32, "end": 1081.6, "text": "So the core things about this index is not only is it a cached index, it is it has a lot of other controls and safety guarantees around it."}, {"id": "s160", "start": 1081.6, "end": 1087.12, "text": "It is specifically made for these curated financial like um highly regulated industries."}, {"id": "s161", "start": 1087.12, "end": 1090.96, "text": "So they themselves are doing some of their own curation on top of it."}, {"id": "s162", "start": 1090.96, "end": 1093.679, "text": "Now certainly I think that creation could fail."}, {"id": "s163", "start": 1093.679, "end": 1102.64, "text": "It's probably done using Gen AI but the prompt injection risk is much far reduced because everything still remains internal."}, {"id": "s164", "start": 1104.96, "end": 1106.96, "text": "Yep."}, {"id": "s165", "start": 1113.679, "end": 1117.039, "text": "Do you mean how they're being used?"}, {"id": "s166", "start": 1118.4, "end": 1118.64, "text": "Yeah."}, {"id": "s167", "start": 1118.64, "end": 1130.08, "text": "I I think it's critical um in the sense that that behavioral data is something we can further configure based on right like that we we do try to ensure that not everyone"}, {"id": "s168", "start": 1130.08, "end": 1138.24, "text": "at the firm can see what your agents are doing right like there's stuff certainly work-wise but also more sensitive information that might be privileged to you."}, {"id": "s169", "start": 1138.24, "end": 1140.4, "text": "So your session data is kind of localized."}, {"id": "s170", "start": 1140.4, "end": 1149.84, "text": "Now that behavioral data in the session data is very powerful because it can define additional configuration that can be applied to these agents for the purposes of making the user experience better."}, {"id": "s171", "start": 1149.84, "end": 1164.72, "text": "So we we try to leverage that to figure out what to configure further not just based on someone's like hierarchical persona but actually based on their usage to make sure that their experience continues to improve actually based on what they're doing."}, {"id": "s172", "start": 1166.64, "end": 1168.96, "text": "Uh we're almost out of time."}, {"id": "s173", "start": 1168.96, "end": 1178.88, "text": "me and my co sorry I'll take the last question you're saying you have a process for letting individuals create their own"}, {"id": "s174", "start": 1178.88, "end": 1193.76, "text": "yep I mean how do you go about like anybody there is a process for like agents across the company"}, {"id": "s175", "start": 1194.799, "end": 1200.4, "text": "yeah uh for building our own agents you know we we use some of the existing frameworks for agent building."}, {"id": "s176", "start": 1200.4, "end": 1204.559, "text": "Obviously all the genai harnesses are very good at using those frameworks to build agents."}, {"id": "s177", "start": 1204.559, "end": 1207.28, "text": "So you have a lot of agents proliferating based on that."}, {"id": "s178", "start": 1207.28, "end": 1209.679, "text": "In terms of provision, everything is already provision."}, {"id": "s179", "start": 1209.679, "end": 1215.679, "text": "All this is every single user at the firm has all the necessary infrastructure in place."}, {"id": "s180", "start": 1215.679, "end": 1217.12, "text": "So that's not really a worry."}, {"id": "s181", "start": 1217.12, "end": 1221.6, "text": "They can build an agent, deploy it as necessary into their namespace running as their identity."}, {"id": "s182", "start": 1221.6, "end": 1238.24, "text": "the the aspect of how do agents then become like a universal companywide or larger beyond a individual users uh agent you know goes through your standard kind of mechanisms right like hey is there going to be proper production support is there the right security"}, {"id": "s183", "start": 1238.24, "end": 1251.719, "text": "it's like any application you might develop uh yeah so me and my colleagues will stick around here if anyone wants to talk further you know I guess if you're sticking around I can also take more questions but thanks for coming to this"}, {"id": "s184", "start": 1251.719, "end": 1253.719, "text": "[applause]"}]}, {"id": "wdTRsfw0KG0", "title": "Reverse-Engineering the AI Buyer — Aliisa Rosenthal, Acrew Capital", "channel": "AI Engineer", "duration": 1150, "upload_date": null, "url": "https://www.youtube.com/watch?v=wdTRsfw0KG0", "api": "/api/talks/wdTRsfw0KG0.json", "summary_url": "/#wdTRsfw0KG0", "transcript": {"html": "/transcripts/wdTRsfw0KG0.html", "txt": "/transcripts/wdTRsfw0KG0.txt", "vtt": "/transcripts/wdTRsfw0KG0.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.2, "end": 14.16, "text": "Hi everyone."}, {"id": "s3", "start": 14.16, "end": 21.16, "text": "My name is Alyssa and I joined a little research lab called OpenAI a little over four years ago."}, {"id": "s4", "start": 21.16, "end": 25.28, "text": "When I joined it was you know a couple million in revenue."}, {"id": "s5", "start": 25.28, "end": 26.92, "text": "We had a self-serve API."}, {"id": "s6", "start": 26.92, "end": 32.2, "text": "We had some developers who found it and swiped a credit card and started building."}, {"id": "s7", "start": 33.16, "end": 41.04, "text": "Over the next few years I helped grow the organization to several hundred people, grow our revenue to several billion on the enterprise side and and launched multiple products."}, {"id": "s8", "start": 41.04, "end": 54.72, "text": "So I really had the opportunity to be at the bleeding edge of bringing this somewhat alien technology to organizations from startups to massive enterprises and I'm going to share a little bit about what I learned along the way."}, {"id": "s9", "start": 55.32, "end": 61.32, "text": "So I think most organizations typically have said okay, I'm ready to build out my go-to-market organization."}, {"id": "s10", "start": 61.32, "end": 62.8, "text": "I'm going to hire a bunch of sales people."}, {"id": "s11", "start": 62.8, "end": 63.72, "text": "I'm going to hire RevOps."}, {"id": "s12", "start": 63.72, "end": 75.4, "text": "I'm going to hire sales engineers and I'm going to build out my sales organization and then I'm going to figure out where the bottlenecks are and I'm going to add AI or I'm going to add automation to figure out how to scale this thing."}, {"id": "s13", "start": 75.4, "end": 78.16, "text": "My current advice to founders is do the opposite."}, {"id": "s14", "start": 78.16, "end": 80.16, "text": "So start with what you can automate."}, {"id": "s15", "start": 80.16, "end": 90.68, "text": "Start with there's so many tools available now in 2026 for a modern go-to-market or sales organization that have never been available before which really turns the entire playbook on its head."}, {"id": "s16", "start": 90.68, "end": 100.28, "text": "And you'll find that a lot of traditional sales leaders are very used to coming in and hiring a really big team and augmenting everything with humans, bringing in sales operations,"}, {"id": "s17", "start": 100.28, "end": 103.72, "text": "sales engineers, lots of sales people, BDRs, SDRs."}, {"id": "s18", "start": 103.72, "end": 106.72, "text": "You can do so much of this through an automated approach now."}, {"id": "s19", "start": 106.72, "end": 112.44, "text": "So my my advice to founders is build the machine first before you build the team."}, {"id": "s20", "start": 112.44, "end": 114.08, "text": "Figure out what you can automate."}, {"id": "s21", "start": 114.08, "end": 120.56, "text": "Figure out where the bottlenecks are and what's broken and then add humans on top of that to get through those bottlenecks."}, {"id": "s22", "start": 120.8, "end": 123.88, "text": "So, just a story about how this played out at OpenAI."}, {"id": "s23", "start": 123.88, "end": 127.04, "text": "So, we launched ChatGPT in the end of 2022."}, {"id": "s24", "start": 127.04, "end": 129.72, "text": "When we launched it, we had no enterprise features whatsoever."}, {"id": "s25", "start": 129.72, "end": 134.28, "text": "And I got bombarded with organizations saying, \"Hey, everyone in my company is using ChatGPT."}, {"id": "s26", "start": 134.28, "end": 135.16, "text": "Can I get SSO?"}, {"id": "s27", "start": 135.16, "end": 136.12, "text": "Can I get an NDA?"}, {"id": "s28", "start": 136.12, "end": 137.72, "text": "Can I get an invoice?\""}, {"id": "s29", "start": 137.72, "end": 138.84, "text": "I had none of these things."}, {"id": "s30", "start": 138.84, "end": 141.36, "text": "I had no enterprise features whatsoever."}, {"id": "s31", "start": 141.36, "end": 148.84, "text": "Uh so, over the next few months, I begged and begged and begged our technical team, \"Can we build an enterprise version of this product and we build some enterprise features?\""}, {"id": "s32", "start": 148.84, "end": 151.72, "text": "And finally, 9 months later, we got approval."}, {"id": "s33", "start": 151.72, "end": 158.959, "text": "Now, over that 9-month time, the companies that had been the loudest, the companies that had gotten to me, were the bigger companies, were the large enterprises."}, {"id": "s34", "start": 158.959, "end": 164.88, "text": "So, I thought, \"Okay, we should go out and build a really high-end product for all these enterprises that want to use us.\""}, {"id": "s35", "start": 164.88, "end": 167.12, "text": "So, we added every bell and whistle."}, {"id": "s36", "start": 167.12, "end": 168.52, "text": "We made it lightning fast."}, {"id": "s37", "start": 168.52, "end": 171.04, "text": "It was a very expensive product that we shipped."}, {"id": "s38", "start": 171.04, "end": 171.92000000000002, "text": "We went up market."}, {"id": "s39", "start": 171.92000000000002, "end": 174.68, "text": "We went way up market right out the gate."}, {"id": "s40", "start": 174.68, "end": 176.28, "text": "And, you know, we did fine."}, {"id": "s41", "start": 176.28, "end": 177.68, "text": "We We did pretty well."}, {"id": "s42", "start": 177.68, "end": 180.72, "text": "Um, you know, and and I think for most companies we did great."}, {"id": "s43", "start": 180.72, "end": 185.44, "text": "Uh but after about a quarter, we said, \"Well, we should probably also offer a self-serve version."}, {"id": "s44", "start": 185.44, "end": 190.519, "text": "Not everyone wants to opt into this heavy sales process and start with these really high price points.\""}, {"id": "s45", "start": 190.519, "end": 201.72, "text": "So, then we released our self-serve motion in January of 2024, so about 4 months after our enterprise version, and it just completely cannibalized our enterprise business."}, {"id": "s46", "start": 201.72, "end": 203.519, "text": "Uh it grew so much faster."}, {"id": "s47", "start": 203.519, "end": 212.72, "text": "It turns out most people just didn't want to talk to a salesperson, and our mid-market SMB sort of self-serve business was much higher growth than our and then our heavy enterprise business."}, {"id": "s48", "start": 212.72, "end": 215.6, "text": "So, it frustrated the sales reps cuz now they had to compete with self-serve."}, {"id": "s49", "start": 215.6, "end": 217.32, "text": "It sort of cannibalized the customer base."}, {"id": "s50", "start": 217.32, "end": 222.92000000000002, "text": "They sometimes they preferred to just move into the cheaper self-serve option."}, {"id": "s51", "start": 222.92000000000002, "end": 225.0, "text": "And so, that was a really valuable lesson."}, {"id": "s52", "start": 225.0, "end": 237.44, "text": "We should have launched with self-serve first, listen to feedback from our customers and what we they weren't getting from the self-serve product, and then figured out how to add build a more expensive enterprise offering, and then hire the team to sell it."}, {"id": "s53", "start": 237.44, "end": 238.6, "text": "So, we did it all backwards."}, {"id": "s54", "start": 238.6, "end": 243.24, "text": "Was a really really valuable learning experience, and from there we decided not to do that again."}, {"id": "s55", "start": 243.24, "end": 251.64, "text": "For every other product we launched at OpenAI, we made sure to to do it self-serve first, learn where we needed to tack on humans and add them."}, {"id": "s56", "start": 252.48, "end": 257.799, "text": "Uh the other thing I'll mention, and uh you know, uh if Everett's still here, nice uh shout-out to him."}, {"id": "s57", "start": 257.799, "end": 261.16, "text": "We used Clay at OpenAI, and it was really really useful for us."}, {"id": "s58", "start": 261.16, "end": 271.68, "text": "So, in the beginning, we were just completely overwhelmed with inbound, which I know sounds like such a champagne problem, but it was me and four sales sales reps, and we were getting, you know, 10,000 inbound a day."}, {"id": "s59", "start": 271.68, "end": 276.36, "text": "I mean, it was just the most staggering problem to deal with this tidal wave of inbound."}, {"id": "s60", "start": 276.36, "end": 280.2, "text": "And, you know, if I could go back in time, there's so much I would have done differently."}, {"id": "s61", "start": 280.2, "end": 289.56, "text": "I would have, first of all, added way more fields to our sign-up form, like phone number, because eventually when we did catch up and we built all the automation and we figured out how to handle these leads,"}, {"id": "s62", "start": 289.56, "end": 292.2, "text": "I didn't have a lot of information to go follow up with people."}, {"id": "s63", "start": 292.2, "end": 294.6, "text": "So, add a very in-depth sales form."}, {"id": "s64", "start": 294.6, "end": 300.96, "text": "It can be optional, but if people are willing to give you their phone number, you should get it, cuz at some point you might want to call them or have AI call them."}, {"id": "s65", "start": 300.96, "end": 303.16, "text": "Um so, gather as much info as you can."}, {"id": "s66", "start": 303.16, "end": 309.96, "text": "Try to respond to everyone, and I I you know, I wish I would have done this, at least just sent some email out saying, \"Hey, we hear you."}, {"id": "s67", "start": 309.96, "end": 312.2, "text": "We don't have our enterprise product ready yet."}, {"id": "s68", "start": 312.2, "end": 313.2, "text": "You're on our waitlist."}, {"id": "s69", "start": 313.2, "end": 314.16, "text": "You're on our list."}, {"id": "s70", "start": 314.16, "end": 316.6, "text": "Tell us XYZ about what you're looking for.\""}, {"id": "s71", "start": 316.6, "end": 320.04, "text": "Just some sort of automated email campaign to make them feel like we cared."}, {"id": "s72", "start": 320.04, "end": 325.84, "text": "Because when we finally did launch our enterprise product 9 months later, almost every company went out and talked to you said, \"Well, you never got back to me.\""}, {"id": "s73", "start": 325.84, "end": 328.2, "text": "And I went out and I brought Microsoft Copilot."}, {"id": "s74", "start": 328.2, "end": 331.2, "text": "Um so, that was a that was a really hard lesson."}, {"id": "s75", "start": 331.2, "end": 335.8, "text": "Um and then similarly on outbound, uh you know, there's lots of great tools out there now."}, {"id": "s76", "start": 335.8, "end": 336.6, "text": "Clay is one of them."}, {"id": "s77", "start": 336.6, "end": 338.52, "text": "I hear really great things about Nooks."}, {"id": "s78", "start": 338.52, "end": 351.48, "text": "Uh there are really wonderful tools to start researching, sequencing, dialing, and automate as much as the outbound pipeline gen as you can, so your reps can focus on the qualified leads and the high value conversations."}, {"id": "s79", "start": 352.84000000000003, "end": 359.8, "text": "So, this is my biggest advice to any company starting to build their go-to-market motion is just make it easy on your buyers."}, {"id": "s80", "start": 359.8, "end": 361.28, "text": "Uh don't give them homework."}, {"id": "s81", "start": 361.28, "end": 368.12, "text": "Don't make them go and fill out a form or if you can avoid it, integrate something without you hand-holding them through that."}, {"id": "s82", "start": 368.12, "end": 370.72, "text": "Never say, \"Hey, go do these five things and then come back to me.\""}, {"id": "s83", "start": 370.72, "end": 372.88, "text": "or \"Go ask this person about this and come back to me.\""}, {"id": "s84", "start": 372.88, "end": 374.8, "text": "You do as much of the work for them."}, {"id": "s85", "start": 374.8, "end": 375.76, "text": "You hand-hold them through that."}, {"id": "s86", "start": 375.76, "end": 380.96, "text": "Maybe that means you have to set up hackathons and come in their office and do it with them in person."}, {"id": "s87", "start": 380.96, "end": 385.04, "text": "Um maybe that means you have to set up some sort of Zoom session and do it live with them."}, {"id": "s88", "start": 385.04, "end": 393.12, "text": "But, whatever you do, don't send your buyer away to do something and wait for them to come back because you lose total control of the sales cycle and it makes everything take longer."}, {"id": "s89", "start": 393.12, "end": 396.32, "text": "Secondly, remove as much friction as you can in the buying process."}, {"id": "s90", "start": 396.32, "end": 398.52, "text": "Fewer options is better on pricing."}, {"id": "s91", "start": 398.52, "end": 400.68, "text": "Make the paperwork easy and fast."}, {"id": "s92", "start": 400.68, "end": 403.72, "text": "Make the approval flow as manageable as possible."}, {"id": "s93", "start": 403.72, "end": 407.88, "text": "We've already talked about investing in self-service, doing that up front before you add on humans."}, {"id": "s94", "start": 407.88, "end": 411.72, "text": "And the other thing I'll hammer home is to avoid pilots at all cost."}, {"id": "s95", "start": 411.72, "end": 416.48, "text": "Um and this is something that comes up when I talk to founders a lot is they say, \"We are stuck in pilot hell."}, {"id": "s96", "start": 416.48, "end": 418.76, "text": "We've got all of these pilots going on."}, {"id": "s97", "start": 418.76, "end": 419.919, "text": "None of them are converting."}, {"id": "s98", "start": 419.919, "end": 420.96, "text": "They're so much work.\""}, {"id": "s99", "start": 420.96, "end": 425.4, "text": "Or if they do convert, it just I have to run an entire sales process all over again."}, {"id": "s100", "start": 425.4, "end": 426.56, "text": "I sell the pilot."}, {"id": "s101", "start": 426.56, "end": 429.12, "text": "I invest really heavily in managing the pilot."}, {"id": "s102", "start": 429.12, "end": 434.0, "text": "And then I have to start all over again from scratch once the pilot I get a yes to move forward on the sales cycle."}, {"id": "s103", "start": 434.0, "end": 436.28, "text": "So, use pilots sparingly."}, {"id": "s104", "start": 436.28, "end": 444.8, "text": "They should be not the default, but the option for your most valuable, uh highest paying, biggest revenue opportunities."}, {"id": "s105", "start": 444.8, "end": 446.28, "text": "Now, how do you get out of a pilot?"}, {"id": "s106", "start": 446.28, "end": 447.64, "text": "Because every customer will ask you for one."}, {"id": "s107", "start": 447.64, "end": 449.24, "text": "They'll say, \"I need to try this out."}, {"id": "s108", "start": 449.24, "end": 450.16, "text": "I need a POC."}, {"id": "s109", "start": 450.16, "end": 451.84, "text": "It's part of our process."}, {"id": "s110", "start": 451.84, "end": 454.4, "text": "I need to validate this works in my environment."}, {"id": "s111", "start": 454.4, "end": 455.919, "text": "It meets my needs."}, {"id": "s112", "start": 455.919, "end": 459.0, "text": "We have, you know, all of these things we need to validate and check on.\""}, {"id": "s113", "start": 459.0, "end": 464.72, "text": "Just remember, as soon as you give someone access to your product, you're giving away a lot of power and leverage in the deal cycle."}, {"id": "s114", "start": 464.72, "end": 468.12, "text": "So, there's lots of ways to get around these objections without a pilot."}, {"id": "s115", "start": 468.12, "end": 470.28, "text": "You can introduce them to another customer."}, {"id": "s116", "start": 470.28, "end": 472.72, "text": "You can do an eval on on part of their data."}, {"id": "s117", "start": 472.72, "end": 478.04, "text": "You can do a demo with their custom data and you do it over Zoom rather than handing them access to it."}, {"id": "s118", "start": 478.04, "end": 479.44, "text": "You can give them an opt-out clause."}, {"id": "s119", "start": 479.44, "end": 482.88, "text": "It's not something you do when you're a giant company, but when you're a startup, you can get away with these things."}, {"id": "s120", "start": 482.88, "end": 493.88, "text": "So, sign a contract, you have 90 days to opt out if it doesn't meet your needs, and that shifts the onus of trying out the product and validating it uh onto them cuz the the clock is ticking on them now."}, {"id": "s121", "start": 493.88, "end": 496.2, "text": "Uh so, it gives you a lot more control over the deal."}, {"id": "s122", "start": 496.2, "end": 501.48, "text": "And then another one I like to do is I say, \"Well, our normal uh contracts are 3 years, but we'll do a 1-year POC with you.\""}, {"id": "s123", "start": 501.48, "end": 509.8, "text": "So, there's all kinds of ways to sort of negotiate your way around a POC without putting tons of resources and getting stuck in them."}, {"id": "s124", "start": 510.12, "end": 511.48, "text": "The other thing is security."}, {"id": "s125", "start": 511.48, "end": 514.719, "text": "Security is where deals tend to stall out and die over time."}, {"id": "s126", "start": 514.719, "end": 516.12, "text": "Uh there's a lot you can automate now."}, {"id": "s127", "start": 516.12, "end": 523.12, "text": "There's so many wonderful tools on the market to build these trust portals where, you know, companies can come in and they can auto sign an NDA."}, {"id": "s128", "start": 523.12, "end": 527.28, "text": "They can self-serve for your pen test and security documentation."}, {"id": "s129", "start": 527.28, "end": 530.56, "text": "There's AI products that can auto fill out your security questionnaires."}, {"id": "s130", "start": 530.56, "end": 535.92, "text": "So, automate a as much as the security as you can, and most companies will tell you, \"Oh, I need to get on a call."}, {"id": "s131", "start": 535.92, "end": 537.12, "text": "I need to talk for 2 hours.\""}, {"id": "s132", "start": 537.12, "end": 538.28, "text": "Push back on that."}, {"id": "s133", "start": 538.28, "end": 543.72, "text": "You know, push them towards your trust portal and then make them come to you and say, \"Here, you know, here's what I couldn't find."}, {"id": "s134", "start": 543.72, "end": 544.88, "text": "Here's what wasn't available."}, {"id": "s135", "start": 544.88, "end": 546.28, "text": "Here's why I need a call.\""}, {"id": "s136", "start": 546.28, "end": 554.2, "text": "And try to automate security because a lot of it really can be automated now, which is really really uh speeds up the sales cycle."}, {"id": "s137", "start": 556.28, "end": 566.36, "text": "Um so, another thing we learned, another expensive story, and this goes back to sort of building the Porsche before the Prius, is we built this this really high-end product, this enterprise product,"}, {"id": "s138", "start": 566.36, "end": 567.68, "text": "and we set the price really high."}, {"id": "s139", "start": 567.68, "end": 571.96, "text": "We set it initially ChatGPT Enterprise was $60 per user per month."}, {"id": "s140", "start": 571.96, "end": 580.16, "text": "Now, we were really the first ones on the market, and we didn't know what pricing was going going Uh so, we we basically priced it according to how expensive it was for us to serve it."}, {"id": "s141", "start": 580.16, "end": 585.44, "text": "And then all the other products came out on the market, Copilot and Gemini and Anthropic at a much lower price point."}, {"id": "s142", "start": 585.44, "end": 588.92, "text": "And we realized we had set the price too high."}, {"id": "s143", "start": 588.92, "end": 591.16, "text": "So, we eventually went and we did lower the price."}, {"id": "s144", "start": 591.16, "end": 598.32, "text": "And what we did, we changed the model to basically a license fee a bare fee to use the product and then move to usage base."}, {"id": "s145", "start": 598.32, "end": 600.64, "text": "And then we just saw a the barrier to entry went down."}, {"id": "s146", "start": 600.64, "end": 604.52, "text": "So, we had so many more companies signing licenses and signing contracts with us."}, {"id": "s147", "start": 604.52, "end": 608.88, "text": "And then usage went up over time as more as we started the barrier to entry went down."}, {"id": "s148", "start": 608.88, "end": 617.76, "text": "Because when it was $60 per month, organizations would come in and say, well, I'm only buying this for a subset of my team or only for my developers or only for my investors."}, {"id": "s149", "start": 617.76, "end": 619.48, "text": "I'm not going to buy buy it for my whole company."}, {"id": "s150", "start": 619.48, "end": 620.68, "text": "It's too expensive."}, {"id": "s151", "start": 620.68, "end": 623.56, "text": "But once we lowered the threshold, it spread like wildfire."}, {"id": "s152", "start": 623.56, "end": 627.56, "text": "Everyone started using it and it was a much better pricing model that we learned the hard way."}, {"id": "s153", "start": 627.56, "end": 629.64, "text": "I know over time now seats are out."}, {"id": "s154", "start": 629.64, "end": 631.24, "text": "This this has become common knowledge."}, {"id": "s155", "start": 631.24, "end": 632.52, "text": "We learned it the hard way."}, {"id": "s156", "start": 632.52, "end": 639.32, "text": "And I also know that now usage is also getting pushed back as company push back on as companies are seeing cost of usage skyrocket."}, {"id": "s157", "start": 639.32, "end": 640.76, "text": "There's easy ways around this."}, {"id": "s158", "start": 640.76, "end": 642.4, "text": "So, you could for example, cap."}, {"id": "s159", "start": 642.4, "end": 643.48, "text": "You can say, hey, we have a dashboard."}, {"id": "s160", "start": 643.48, "end": 645.28, "text": "You can cap your spend per month."}, {"id": "s161", "start": 645.28, "end": 648.24, "text": "Most companies don't end up using that, but they like to know that it's there."}, {"id": "s162", "start": 648.24, "end": 650.04, "text": "You can cap certain employees spend."}, {"id": "s163", "start": 650.04, "end": 652.68, "text": "But people like the idea that it's a low barrier to entry."}, {"id": "s164", "start": 652.68, "end": 653.56, "text": "People can use it."}, {"id": "s165", "start": 653.56, "end": 656.16, "text": "If they're using it, ideally they're getting value out of it."}, {"id": "s166", "start": 656.16, "end": 661.28, "text": "And then there's ways to handle the objections of what if the cost spirals out of control."}, {"id": "s167", "start": 662.12, "end": 662.44, "text": "All right."}, {"id": "s168", "start": 662.44, "end": 664.24, "text": "So, we've talked about building the machine."}, {"id": "s169", "start": 664.24, "end": 665.92, "text": "When do you hire the humans?"}, {"id": "s170", "start": 665.92, "end": 667.52, "text": "When do you start bringing on sales people?"}, {"id": "s171", "start": 667.52, "end": 669.52, "text": "Sales people are expensive."}, {"id": "s172", "start": 669.52, "end": 671.04, "text": "You know, they're that's a big hire."}, {"id": "s173", "start": 671.04, "end": 673.72, "text": "They're they're you know, how do you know when the time is right?"}, {"id": "s174", "start": 673.72, "end": 684.08, "text": "It's basically when you're starting to hit you've gone as far as you can in your sales process and you're really having a lot of companies saying, I just need to talk to somebody whether it's I need a demo."}, {"id": "s175", "start": 684.08, "end": 687.44, "text": "I just need to look someone in the eye and build the trust here."}, {"id": "s176", "start": 687.44, "end": 689.96, "text": "And you're going to have that as you start to move up market naturally."}, {"id": "s177", "start": 689.96, "end": 695.12, "text": "Bigger companies are going to want to look shake the hands of a human and have a conversation with them."}, {"id": "s178", "start": 695.12, "end": 704.04, "text": "On that note, I will say avoid the pull-up market as long as you can resist it because once you get a big customer, they'll come and they'll say, \"I can spend a million dollars, 10 million dollars with you.\""}, {"id": "s179", "start": 704.04, "end": 707.36, "text": "And it's very tempting to want orient your whole business around that."}, {"id": "s180", "start": 707.36, "end": 709.52, "text": "They will take so many of your resources."}, {"id": "s181", "start": 709.52, "end": 716.0, "text": "As soon as you have this enterprise customer, they will take so many of your legal, security, product, engineering, sales resources."}, {"id": "s182", "start": 716.0, "end": 720.4, "text": "So, you want to be really, really picky about who those first big enterprise partners are."}, {"id": "s183", "start": 720.4, "end": 728.0, "text": "Eventually, you're going to need, most likely, not everyone, but eventually you most likely are going to need some humans to help have these conversations."}, {"id": "s184", "start": 728.0, "end": 728.84, "text": "So, who do you hire?"}, {"id": "s185", "start": 728.84, "end": 735.76, "text": "You hire someone who is AI native, who really gets AI, who lives it, who can authentically sell it because they're really bought into it."}, {"id": "s186", "start": 735.76, "end": 740.8, "text": "This is not a reseller right now, but this is more and more becoming the norm with sellers, with account executives."}, {"id": "s187", "start": 740.8, "end": 746.44, "text": "Uh you want them to practice what they preach, you want them to be efficient, you want them to be bought into the culture of your organization."}, {"id": "s188", "start": 746.44, "end": 747.52, "text": "Why do you need them?"}, {"id": "s189", "start": 747.52, "end": 749.68, "text": "I'm calling this the revenge of the steak dinner."}, {"id": "s190", "start": 749.68, "end": 759.28, "text": "As more and more of this becomes automated, as you have the automated outbound, the automated demo, the automated security checklist, more and more companies are craving in-person times with humans."}, {"id": "s191", "start": 759.28, "end": 763.64, "text": "So, conferences, conference booths work really well, dinners work really well."}, {"id": "s192", "start": 763.64, "end": 767.88, "text": "And they're, by the way, not that expensive to set up a dinner with some buyers, some customers, some prospects."}, {"id": "s193", "start": 767.88, "end": 775.44, "text": "It's a very effective tool, and you do still at this at this moment in time need humans to run those dinners."}, {"id": "s194", "start": 775.6, "end": 778.56, "text": "Uh so, let's talk a little bit about hiring sales people and how you pay them."}, {"id": "s195", "start": 778.56, "end": 780.44, "text": "Um this comes up a lot at OpenAI."}, {"id": "s196", "start": 780.44, "end": 784.8, "text": "We were notorious because we still have not given out comp plans."}, {"id": "s197", "start": 784.8, "end": 787.32, "text": "Um it was not necessarily my intention to wait this long."}, {"id": "s198", "start": 787.32, "end": 791.0, "text": "I just kind of kept kicking the can down the road and saying, \"Eventually, I'll pay commission.\""}, {"id": "s199", "start": 791.0, "end": 793.56, "text": "And then we just the team got bigger and it got harder and harder."}, {"id": "s200", "start": 793.56, "end": 796.36, "text": "I do think OpenAI is finally about to put in commission."}, {"id": "s201", "start": 796.36, "end": 799.68, "text": "Uh but we we made a we made it really far without any comp plans."}, {"id": "s202", "start": 799.68, "end": 802.88, "text": "I would not necessarily say that is the right path for every company to follow."}, {"id": "s203", "start": 802.88, "end": 813.12, "text": "I think OpenAI could get away with that because of the equity packages and the way the company was increasing in value, but in general, it's really hard to hire the best enterprise sellers in the market if you don't pay a variable."}, {"id": "s204", "start": 813.12, "end": 816.04, "text": "That said, you can get away with it for your first few hires."}, {"id": "s205", "start": 816.04, "end": 818.84, "text": "Those first few sales hires are usually wired a little bit differently."}, {"id": "s206", "start": 818.84, "end": 820.12, "text": "They're there to build the company."}, {"id": "s207", "start": 820.12, "end": 821.04, "text": "They're there for the equity."}, {"id": "s208", "start": 821.04, "end": 822.24, "text": "They want to roll up their sleeves."}, {"id": "s209", "start": 822.24, "end": 823.4, "text": "They want to contribute."}, {"id": "s210", "start": 823.4, "end": 826.76, "text": "They're not necessarily as motivated just by commission and by a W-2."}, {"id": "s211", "start": 826.76, "end": 829.84, "text": "So, you can get away with it really for the first two or three sales hires."}, {"id": "s212", "start": 829.84, "end": 835.24, "text": "Eventually, you're going to want to hire kind of more coin-operated enterprise sellers."}, {"id": "s213", "start": 835.24, "end": 840.2, "text": "They're very motivated by the cash compensation, and so eventually you'll need to put in a comp plan."}, {"id": "s214", "start": 840.2, "end": 845.88, "text": "So, just I get this question a lot, so I just wanted to put it out there on how to think about building out comp plans."}, {"id": "s215", "start": 845.88, "end": 850.2, "text": "Simpler is better, but have upside for out-performers."}, {"id": "s216", "start": 850.72, "end": 852.28, "text": "Um so, I love this slide."}, {"id": "s217", "start": 852.28, "end": 859.08, "text": "I saw this early in my career in sales, and I just think it's um it's a really great reminder of what you're actually selling."}, {"id": "s218", "start": 859.08, "end": 861.0, "text": "You're not selling your tool."}, {"id": "s219", "start": 861.0, "end": 862.84, "text": "You're not selling your product."}, {"id": "s220", "start": 862.84, "end": 867.72, "text": "You're selling what that tool or that product does to your champion or your buyer."}, {"id": "s221", "start": 867.72, "end": 871.4, "text": "And this is where I do think humans are still very helpful."}, {"id": "s222", "start": 871.4, "end": 876.0, "text": "They're very good at value selling, and I think AI does still have some ways to go on value selling."}, {"id": "s223", "start": 876.0, "end": 882.36, "text": "So, until we totally crack that, I do think we're going to need those steak dinners, and we're going to need those humans to sell value."}, {"id": "s224", "start": 882.36, "end": 882.68, "text": "All right."}, {"id": "s225", "start": 882.68, "end": 883.2, "text": "So, that's me."}, {"id": "s226", "start": 883.2, "end": 886.2, "text": "You can grab a one-pager of this with that QR code."}, {"id": "s227", "start": 886.2, "end": 888.08, "text": "Um also really easy to find on LinkedIn."}, {"id": "s228", "start": 888.08, "end": 895.76, "text": "I'm the only one with my crazy spelling of a name with A L I I S A. Feel free to reach out if you have questions, and it looks like I have a couple minutes for Q&A here."}, {"id": "s229", "start": 895.76, "end": 896.12, "text": "Okay."}, {"id": "s230", "start": 896.12, "end": 898.72, "text": "How First question right here."}, {"id": "s231", "start": 898.72, "end": 900.839, "text": "Yeah, I uh Can you hear me?"}, {"id": "s232", "start": 900.839, "end": 901.4, "text": "I can."}, {"id": "s233", "start": 901.4, "end": 901.88, "text": "Okay."}, {"id": "s234", "start": 901.88, "end": 910.28, "text": "Yeah, I was just curious about um you talked about the POCs and pilots should be the exception, but then there's also the self-serve first motion."}, {"id": "s235", "start": 910.28, "end": 911.24, "text": "How do you reconcile that?"}, {"id": "s236", "start": 911.24, "end": 917.48, "text": "Because you know, the POC or pilot then becomes just do they get help when they go off and do self-serve?"}, {"id": "s237", "start": 917.48, "end": 919.76, "text": "And they need your help to be successful."}, {"id": "s238", "start": 919.76, "end": 920.36, "text": "Great question."}, {"id": "s239", "start": 920.36, "end": 933.88, "text": "I am sort of thinking of PLG, so people coming and self-serving and just using your product is very different from a POC, which is usually a contracted period of time where they have access to your product and they have support and resources from your team"}, {"id": "s240", "start": 933.88, "end": 936.8, "text": "and you're giving them sort of services and support along the way."}, {"id": "s241", "start": 936.8, "end": 937.24, "text": "So, you're right."}, {"id": "s242", "start": 937.24, "end": 951.76, "text": "That is access like self-serve access to your product is totally fine and great and you can stage gate that or limit that with um consumption, uh time box it, um or um"}, {"id": "s243", "start": 951.76, "end": 957.64, "text": "uh feature gate it and those are all really valid ways to have people sort of build a natural PLG funnel into your product."}, {"id": "s244", "start": 957.64, "end": 968.24, "text": "When I talk about POCs, I'm I'm specifically referring to more handheld services uh oriented POCs that require a sales engineer or salesperson to sort of supervise."}, {"id": "s245", "start": 968.92, "end": 970.04, "text": "Hey Alyssa Roy."}, {"id": "s246", "start": 970.04, "end": 972.92, "text": "Um quick question on forward deployed engineers."}, {"id": "s247", "start": 972.92, "end": 977.04, "text": "How do you think about them fitting into the sales cycle?"}, {"id": "s248", "start": 977.04, "end": 977.6, "text": "Yeah."}, {"id": "s249", "start": 977.6, "end": 979.88, "text": "I mean, in an ideal world, we wouldn't need them."}, {"id": "s250", "start": 979.88, "end": 986.36, "text": "Uh eventually, hopefully we get continual learning and these models can just figure out the inner organization and how to just immediately become smart."}, {"id": "s251", "start": 986.36, "end": 992.2, "text": "Uh I do think for now, the thing with a forward deployed engineer is on the one hand, they're expensive, they're hard to hire."}, {"id": "s252", "start": 992.2, "end": 998.08, "text": "I think there's something like 55,000 job wrecks for forward deployed engineers right now and about 5,000 people who know how to do that job."}, {"id": "s253", "start": 998.08, "end": 999.08, "text": "So, they're hard to hire."}, {"id": "s254", "start": 999.08, "end": 1002.48, "text": "If they're you know, they're you're getting more and more of them available."}, {"id": "s255", "start": 1002.48, "end": 1013.0, "text": "The positive is they make the product really sticky cuz once you've invested in that sort of services element of we're going to have someone come and help you uh integrate the product,"}, {"id": "s256", "start": 1013.0, "end": 1018.08, "text": "your customer is unlikely to go anywhere soon because they feel like they've got a customized tool that works uniquely for them."}, {"id": "s257", "start": 1018.08, "end": 1029.68, "text": "So, I would say obviously the in an ideal world, your product works without the forward deployed engineering uh cuz they are very hard to get right now, but the the positive is then you have a you have a sticky customer who's with you for a long time."}, {"id": "s258", "start": 1029.68, "end": 1035.959, "text": "So, if you can if you can find good forward deployed engineers, they they certainly do pay dividends."}, {"id": "s259", "start": 1037.4, "end": 1038.24, "text": "Hi Alyssa."}, {"id": "s260", "start": 1038.24, "end": 1047.079, "text": "Um for startup working on like their first 10 customers, would you go like the clay route or would you do something else?"}, {"id": "s261", "start": 1047.079, "end": 1049.76, "text": "Uh I'm sorry, when you say the clay route, what do you mean specifically?"}, {"id": "s262", "start": 1049.76, "end": 1052.52, "text": "Like using something like clay for automated outbound."}, {"id": "s263", "start": 1052.52, "end": 1052.84, "text": "Got it."}, {"id": "s264", "start": 1052.84, "end": 1054.88, "text": "No, your first 10 customers are going to be different."}, {"id": "s265", "start": 1054.88, "end": 1056.84, "text": "Um they're going to be really more design partners."}, {"id": "s266", "start": 1056.84, "end": 1059.4, "text": "Um and they're going to need to be much more handheld."}, {"id": "s267", "start": 1059.4, "end": 1066.44, "text": "So, I I'm talking a little bit more when you're beyond the first sort of design partners and you have some product market fit and you're starting to scale the organization."}, {"id": "s268", "start": 1066.44, "end": 1070.56, "text": "For those first partners, you want to be very particular and picky about who you choose."}, {"id": "s269", "start": 1070.56, "end": 1073.96, "text": "On the one hand, it's it's sort of a gift to a company to let them be your design partner."}, {"id": "s270", "start": 1073.96, "end": 1076.08, "text": "There's exclusivity to it, there's scarcity to it."}, {"id": "s271", "start": 1076.08, "end": 1083.12, "text": "They really help give you a lot of feedback on your product, but you want someone who's going to work well with you, who's going to understand this is realistically where my product is."}, {"id": "s272", "start": 1083.12, "end": 1085.32, "text": "This is where my enterprise features are."}, {"id": "s273", "start": 1085.32, "end": 1089.08, "text": "Um so, you want to be thoughtful about who those first few customers are."}, {"id": "s274", "start": 1089.08, "end": 1098.12, "text": "One tactic I love to do on the design partner side is go to a company that has a great logo, but work on like their internal product or some sort of product that's not their main production,"}, {"id": "s275", "start": 1098.12, "end": 1106.64, "text": "so that they're willing to take a little bit more risks with you and bypass some security processes, but then you get the logo on your site and you can go to companies and say, \"Hey, I work with this company.\""}, {"id": "s276", "start": 1106.64, "end": 1111.2, "text": "And it opens the door to potentially sign a bigger agreement with that company over time."}, {"id": "s277", "start": 1111.2, "end": 1112.64, "text": "And I think we're at time here."}, {"id": "s278", "start": 1112.64, "end": 1114.64, "text": "Sorry."}, {"id": "s279", "start": 1115.8, "end": 1124.92, "text": "Ideally, they're relationships you already have, either companies you've worked with or your investors are introducing you or they're you know, friends at at companies cuz you want these to be very friendly"}, {"id": "s280", "start": 1124.92, "end": 1129.8, "text": "uh uh uh processes and experiments in the beginning."}, {"id": "s281", "start": 1129.8, "end": 1130.24, "text": "Great."}, {"id": "s282", "start": 1130.24, "end": 1130.6, "text": "All right."}, {"id": "s283", "start": 1130.6, "end": 1132.8, "text": "Thank you."}, {"id": "s284", "start": 1148.228, "end": 1150.228, "text": "[music]"}]}, {"id": "xKzU_3riL6s", "title": "Why Your AI Agent Needs a Wallet: USDC and Nanopayments — Harshal Bhangale, Circle", "channel": "AI Engineer", "duration": 1252, "upload_date": null, "url": "https://www.youtube.com/watch?v=xKzU_3riL6s", "api": "/api/talks/xKzU_3riL6s.json", "summary_url": "/#xKzU_3riL6s", "transcript": {"html": "/transcripts/xKzU_3riL6s.html", "txt": "/transcripts/xKzU_3riL6s.txt", "vtt": "/transcripts/xKzU_3riL6s.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.76, "end": 15.28, "text": "Good morning, everyone."}, {"id": "s3", "start": 15.4, "end": 27.04, "text": "So, um I've had the pleasure of uh meeting a lot of folks at uh the booth here over the last couple of days, and the interactions have been great, uh but"}, {"id": "s4", "start": 27.04, "end": 32.88, "text": "one question kept uh coming up, which was Circle is a stablecoin company."}, {"id": "s5", "start": 32.88, "end": 37.88, "text": "So, why is a stablecoin company at an AI engineering conference?"}, {"id": "s6", "start": 37.88, "end": 49.24, "text": "And well, uh the answer to that is fairly simple, because Circle issues uh USDC, which is the world's largest regulated stablecoin."}, {"id": "s7", "start": 49.24, "end": 55.96, "text": "And we've built over the years expertise in making payments simpler and cheaper."}, {"id": "s8", "start": 55.96, "end": 60.88, "text": "And it turns out that's one of the bottlenecks for your AI agents."}, {"id": "s9", "start": 60.88, "end": 79.84, "text": "So, when you often think about making AI agents smarter, we think about better models, uh more tool calls, complex orchestration, but where your agent actually in practice actually halts is when it hits a paywall"}, {"id": "s10", "start": 79.84, "end": 82.2, "text": "or when it has to pay for something."}, {"id": "s11", "start": 82.2, "end": 89.96000000000001, "text": "Then you have to step in, either create an account, sign up, or, you know, manage API keys."}, {"id": "s12", "start": 89.96000000000001, "end": 97.24000000000001, "text": "So, that's where uh the limitation is, and that's the gap that I want to talk about today."}, {"id": "s13", "start": 97.24000000000001, "end": 105.08, "text": "So, yeah, I'm Harshal, and I'm an engineer on the agentic product team at Circle."}, {"id": "s14", "start": 105.08, "end": 109.72, "text": "So, let's sort of take a step back and see how we got here."}, {"id": "s15", "start": 109.72, "end": 112.8, "text": "We believe that the agentic economy is already here."}, {"id": "s16", "start": 112.8, "end": 123.8, "text": "So, how are uh you know, uh we In 2023 we interacted with agents via like prompts, uh your ChatGPT and stuff like that."}, {"id": "s17", "start": 123.8, "end": 125.28, "text": "We got a little bit better."}, {"id": "s18", "start": 125.28, "end": 127.8, "text": "In 2024 we built workflows."}, {"id": "s19", "start": 127.8, "end": 132.32, "text": "2025 was all about MCPs, skills, and orchestration."}, {"id": "s20", "start": 132.32, "end": 139.48, "text": "And we believe this year, 2026, is when agents actually start paying for services that they want."}, {"id": "s21", "start": 139.48, "end": 142.8, "text": "And the signals are promising."}, {"id": "s22", "start": 142.8, "end": 152.84, "text": "Just in the last 30 days, uh agents have transacted with paid API endpoints, uh and the volume is about like $24 million."}, {"id": "s23", "start": 152.84, "end": 155.72, "text": "Uh over X102."}, {"id": "s24", "start": 155.72, "end": 160.48, "text": "And 99% of it has been settled in USDC."}, {"id": "s25", "start": 160.48, "end": 168.959, "text": "While this number may look small in terms of volume in the broader landscape, it's only about to get larger."}, {"id": "s26", "start": 168.959, "end": 170.48, "text": "So, what is X102?"}, {"id": "s27", "start": 170.48, "end": 184.6, "text": "Um essentially, X102 is a way where agents can uh pay for their the resources that they want because the server essentially returns a 402 header and with the details"}, {"id": "s28", "start": 184.6, "end": 187.88, "text": "of how they want the payment to proceed."}, {"id": "s29", "start": 187.88, "end": 195.92, "text": "And then the agent just signs um an authorization from the crypto wallet and then pays for the resource and retries the request again."}, {"id": "s30", "start": 195.92, "end": 201.84, "text": "So, that's in X102 in a nutshell and we'll see that in action in a live demo."}, {"id": "s31", "start": 201.84, "end": 210.32, "text": "But then, the question is why do the traditional payment rails not work and why do the agents get stuck?"}, {"id": "s32", "start": 210.32, "end": 219.84, "text": "So, the answer is simple, uh because for the last 30 years we built the internet around one customer and that was humans."}, {"id": "s33", "start": 219.84, "end": 220.36, "text": "Right?"}, {"id": "s34", "start": 220.36, "end": 227.88, "text": "Um so, we built payment schemes, uh monetization strategies, all catered towards how humans interacted."}, {"id": "s35", "start": 227.88, "end": 238.44, "text": "So, you had your sign-up flows, add your credit card, uh put in your information, and manage your API keys, but agents just don't function that way."}, {"id": "s36", "start": 238.44, "end": 252.76, "text": "Agents want to like come in and grab that piece of data, resource, compute, inference, whatever, and just uh you know, and they have the ability to even like consume knowledge at a scale that humans just cannot."}, {"id": "s37", "start": 252.76, "end": 263.6, "text": "I'm sure like you have seen sessions where it's able to like just scrape through hundreds of web pages, and um then it just like stalls because it can't like reach a particular endpoint,"}, {"id": "s38", "start": 263.6, "end": 265.64, "text": "and it skips over it."}, {"id": "s39", "start": 265.64, "end": 270.56, "text": "So, then you could think, \"Oh, yeah, just give it a credit card.\""}, {"id": "s40", "start": 270.56, "end": 271.36, "text": "or something like that."}, {"id": "s41", "start": 271.36, "end": 287.52, "text": "So, while that is possible, um these agents, uh because they consume so much data as they go, it's um they pay in fractional amounts, so tiny amounts, uh but at a very high frequency."}, {"id": "s42", "start": 287.52, "end": 293.15999999999997, "text": "Uh and credit cards and their fees are just like not sustainable for this kind of like economic model."}, {"id": "s43", "start": 293.15999999999997, "end": 299.36, "text": "Um you cannot pay like 3% uh each time an agent tries to make a one-cent transaction."}, {"id": "s44", "start": 299.36, "end": 309.0, "text": "And the reason these transaction amounts are so small is because on the sell side or on the merchant side, they've realized that these paywalls were actually catered for humans,"}, {"id": "s45", "start": 309.0, "end": 316.76, "text": "and now there's an entirely different customer base which is trying to like access their data, and they just want like a subset of the data."}, {"id": "s46", "start": 316.76, "end": 329.2, "text": "So, you could monetize that as a seller by just offering that, by wrapping that in a uh you know, in a paywall, and saying, \"Hey, I take one, pay me 10 cents and grab this data.\""}, {"id": "s47", "start": 329.2, "end": 335.68, "text": "And that's why these are tiny um microtransactions, but highly frequent."}, {"id": "s48", "start": 335.68, "end": 340.32, "text": "So, because the agents are just like making these API calls constantly."}, {"id": "s49", "start": 341.52, "end": 344.2, "text": "So, what do these agents need?"}, {"id": "s50", "start": 344.2, "end": 348.8, "text": "The agents need um payments to work like the internet."}, {"id": "s51", "start": 348.8, "end": 356.64, "text": "So, they have to be real time, low cost, programmable, and always on."}, {"id": "s52", "start": 357.04, "end": 359.36, "text": "And that's why we've built the Circle agent stack."}, {"id": "s53", "start": 359.36, "end": 362.96, "text": "So, it's the full stack platform for the agent tech economy."}, {"id": "s54", "start": 362.96, "end": 367.24, "text": "And what we mean by that, let's look at it with a live demo."}, {"id": "s55", "start": 367.24, "end": 370.96, "text": "Um yeah, wish me luck."}, {"id": "s56", "start": 372.12, "end": 374.12, "text": "Okay."}, {"id": "s57", "start": 374.48, "end": 384.76, "text": "So, I'll just explain uh what I'm trying to if I can get the terminal."}, {"id": "s58", "start": 384.76, "end": 386.48, "text": "Okay."}, {"id": "s59", "start": 386.48, "end": 388.48, "text": "Okay."}, {"id": "s60", "start": 389.12, "end": 393.919, "text": "Let's Mhm."}, {"id": "s61", "start": 394.36, "end": 396.64, "text": "Pull it."}, {"id": "s62", "start": 396.72, "end": 399.68, "text": "Yeah, I don't know."}, {"id": "s63", "start": 400.88, "end": 411.12, "text": "Excuse me, can I Yeah, I tried but it's just not I don't know where the placement of the desktop is."}, {"id": "s64", "start": 412.48, "end": 413.964, "text": "Can you escape out of this?"}, {"id": "s65", "start": 413.964, "end": 415.964, "text": "[snorts]"}, {"id": "s66", "start": 420.44, "end": 422.44, "text": "Okay."}, {"id": "s67", "start": 426.76, "end": 427.08, "text": "Thank you."}, {"id": "s68", "start": 427.08, "end": 431.04, "text": "So, so what we have over here are two sessions."}, {"id": "s69", "start": 431.04, "end": 438.4, "text": "One is your regular cloud code and on the other on the right hand side is a cloud code that comes equipped with Circle agent wallet."}, {"id": "s70", "start": 438.4, "end": 445.96, "text": "So, it has a wallet which is funded and has the ability to like make uh has the ability to pay for premium content."}, {"id": "s71", "start": 445.96, "end": 456.36, "text": "And now uh let me actually just uh quickly uh add a task to this."}, {"id": "s72", "start": 456.36, "end": 458.28, "text": "Yep."}, {"id": "s73", "start": 458.28, "end": 460.64, "text": "And run it."}, {"id": "s74", "start": 460.64, "end": 471.92, "text": "So, I'll explain what I'm trying to do over here, which is Yeah, so So, the task I'm giving Claude on and it's the same task on both the terminals is"}, {"id": "s75", "start": 471.92, "end": 475.52, "text": "plan my trip for the FIFA World Cup final."}, {"id": "s76", "start": 475.52, "end": 482.6, "text": "So, just, you know, give me summary of flights, hotels, logistics."}, {"id": "s77", "start": 482.6, "end": 486.68, "text": "Also, like what are the odds of like my favorite team Argentina being in the final?"}, {"id": "s78", "start": 486.68, "end": 487.8, "text": "Who is it going to play?"}, {"id": "s79", "start": 487.8, "end": 489.12, "text": "And stuff like that."}, {"id": "s80", "start": 489.12, "end": 493.88, "text": "Um and also what's the ticket prices in the secondary market?"}, {"id": "s81", "start": 493.88, "end": 498.52, "text": "How is the experience of other people who've actually been to the stadiums?"}, {"id": "s82", "start": 498.52, "end": 502.04, "text": "And are there any FYIs and stuff like that?"}, {"id": "s83", "start": 502.04, "end": 503.72, "text": "Grab all of that."}, {"id": "s84", "start": 503.72, "end": 505.16, "text": "Send me an email."}, {"id": "s85", "start": 505.16, "end": 514.68, "text": "And if possible uh make me a make a phone call and tell confirm that all of this has been researched and you know, sort of brief me on the summary."}, {"id": "s86", "start": 514.68, "end": 518.84, "text": "So, we'll see like what's happening on on both the terminals here."}, {"id": "s87", "start": 518.84, "end": 522.64, "text": "And Sorry, it's a bit hard to navigate."}, {"id": "s88", "start": 522.64, "end": 529.32, "text": "So, as you can see, um the left the vanilla Claude code has spun out like a bunch of sub-agents."}, {"id": "s89", "start": 529.32, "end": 533.4, "text": "And it's going about doing its research."}, {"id": "s90", "start": 533.4, "end": 550.08, "text": "Similarly, on the right-hand side um it's actually like uh going through the wallets and making like um paying for all of these uh premium content and we'll see like what the results of it are."}, {"id": "s91", "start": 552.96, "end": 560.04, "text": "So, as you can see, it's trying to make a phone call to find sorry, an API call to Stable and Rich."}, {"id": "s92", "start": 560.04, "end": 562.88, "text": "Um and it's paying from its wallet."}, {"id": "s93", "start": 562.88, "end": 567.2, "text": "It's set up a guardrail of like, \"Hey, max amount is 15 cents.\""}, {"id": "s94", "start": 567.2, "end": 577.04, "text": "The beauty of uh having an agent with a wallet is you sort of build these guardrails into the wallet."}, {"id": "s95", "start": 577.04, "end": 586.84, "text": "And you don't have to as a human approve every single transaction because that would just not scale because these agents are just making these ones and five cents, 10 cents transactions."}, {"id": "s96", "start": 586.84, "end": 595.92, "text": "You want to like enforce those guardrails which is hey, this is the max amount you can send spend per session or this is the max cap you can do per day and stuff like that."}, {"id": "s97", "start": 595.92, "end": 605.4, "text": "So, the agent is still spending within the guardrails that you set but it is autonomous enough to like make these individual API calls."}, {"id": "s98", "start": 607.32, "end": 620.28, "text": "So, let me just look at what the vanilla one is looking up and doing some research for hotels."}, {"id": "s99", "start": 622.88, "end": 628.0, "text": "Yeah, um flights are coming in."}, {"id": "s100", "start": 628.0, "end": 635.8, "text": "Also like in the prompt like try to like tell the agent to wrap this whole thing up within 6 to 8 minutes in the interest of time."}, {"id": "s101", "start": 635.8, "end": 643.0, "text": "So, let's see if we're able to like get an email and a phone call done in the same time."}, {"id": "s102", "start": 651.64, "end": 659.72, "text": "Let me also walk you through what the agent's doing if I can grab."}, {"id": "s103", "start": 665.44, "end": 680.0, "text": "Yep, as you can see over here the agent was able to like make an API call to the poly market data via a provider called Block Run and it provided a query"}, {"id": "s104", "start": 680.0, "end": 689.08, "text": "and again set the max amount guardrails and is now passing all the results."}, {"id": "s105", "start": 713.12, "end": 714.16, "text": "All right."}, {"id": "s106", "start": 714.16, "end": 722.36, "text": "So, let's go back to the main subject main agent here."}, {"id": "s107", "start": 743.16, "end": 743.92, "text": "Yep."}, {"id": "s108", "start": 743.92, "end": 754.4, "text": "And this is where I think you'll see on the left-hand side that the agent gets stuck because the agent just does not have the ability uh it cannot send out an email"}, {"id": "s109", "start": 754.4, "end": 754.76, "text": "natively."}, {"id": "s110", "start": 754.76, "end": 764.64, "text": "So, what it's doing is it's using my uh it's just like adding a draft into my Gmail account uh that is logged in, but it just cannot send it to someone."}, {"id": "s111", "start": 764.64, "end": 774.36, "text": "Uh whereas the other agent on the right-hand side will just be able to use um a provider, pay it, and send an email."}, {"id": "s112", "start": 780.6, "end": 791.4, "text": "Now, let's see like this one's uh the the other agent is also like uh is about to like send an email and place the call, so let's see."}, {"id": "s113", "start": 791.4, "end": 793.4, "text": "Does."}, {"id": "s114", "start": 810.32, "end": 812.32, "text": "Okay."}, {"id": "s115", "start": 812.92, "end": 826.2, "text": "So, as the I think the left agent, the vanilla cloud goods finished, and as you can see, it's sort of like made a confession that yeah, it cannot have It does not have the ability to make a phone call."}, {"id": "s116", "start": 826.2, "end": 830.88, "text": "So, it's just like providing me the highlights over here in the terminal itself."}, {"id": "s117", "start": 830.88, "end": 837.84, "text": "Um and now, uh whereas on the right-hand side, the email's been sent."}, {"id": "s118", "start": 837.84, "end": 847.92, "text": "Now, let me try to actually show you the email that we got, I wish."}, {"id": "s119", "start": 850.92, "end": 854.44, "text": "Grab this somehow."}, {"id": "s120", "start": 859.72, "end": 865.2, "text": "Okay, I'm going to make make the phone call."}, {"id": "s121", "start": 865.8, "end": 867.8, "text": "Okay."}, {"id": "s122", "start": 875.2, "end": 886.32, "text": "Just going to grab my thing here, and then let's look at the email."}, {"id": "s123", "start": 886.56, "end": 892.88, "text": "So, yep, there we go."}, {"id": "s124", "start": 892.88, "end": 894.52, "text": "So, I got this email."}, {"id": "s125", "start": 894.52, "end": 895.76, "text": "Oh, this is the old one."}, {"id": "s126", "start": 895.76, "end": 898.92, "text": "Let's see the new one."}, {"id": "s127", "start": 899.92, "end": 901.16, "text": "Yep."}, {"id": "s128", "start": 901.16, "end": 905.2, "text": "This is the one that we just received like 2 minutes ago."}, {"id": "s129", "start": 905.2, "end": 915.839, "text": "And yeah, it has all the details that it was able to like find, including like getting to the stadium, open stadium and maps."}, {"id": "s130", "start": 915.839, "end": 920.52, "text": "It was able to like, you know, find all of these."}, {"id": "s131", "start": 920.52, "end": 937.8, "text": "And then, what to expect by looking at like Reddit tickets, etc. So, I'll wait for the call but in the interest of time it takes sometimes a few minutes for the call to come in"}, {"id": "s132", "start": 937.8, "end": 940.92, "text": "but let's see and I'll move on."}, {"id": "s133", "start": 940.92, "end": 945.48, "text": "So, how does this work uh in the background?"}, {"id": "s134", "start": 945.48, "end": 950.04, "text": "Is Yeah, let's get back to this."}, {"id": "s135", "start": 950.04, "end": 967.24, "text": "Let's Yeah, so so as you can see like the agent on the right hand side with the wallet was able to just make a bunch of these API calls and pay for it."}, {"id": "s136", "start": 967.24, "end": 979.44, "text": "While blockchains make all of these things theoretically possible, there are there are also some bottlenecks because uh even the most efficient blockchains have a gas fee and these small"}, {"id": "s137", "start": 979.44, "end": 988.04, "text": "transactions just don't scale because the gas fee will again be a significant sort of fraction of the actual transaction."}, {"id": "s138", "start": 988.04, "end": 993.16, "text": "But it is important to have gas fees because they prevent the network from spam and abuse."}, {"id": "s139", "start": 993.16, "end": 1002.72, "text": "Um and blockchains also have some throughput limitations because there are other use cases that run on blockchains and block space is shared infrastructure."}, {"id": "s140", "start": 1002.72, "end": 1007.96, "text": "So, the problem for agents is unpredictable latency and degraded performance under load."}, {"id": "s141", "start": 1007.96, "end": 1019.76, "text": "So, what we did for that is essentially uh we built a new um infrastructure layer on top of our intra product called gateway."}, {"id": "s142", "start": 1019.76, "end": 1020.96, "text": "So, it's called nano payments."}, {"id": "s143", "start": 1020.96, "end": 1025.199, "text": "It's built for sub cent transaction sizes for as low as one micro cent."}, {"id": "s144", "start": 1025.199, "end": 1032.04, "text": "Uh it supports um it is gas free for the seller and it's instantly cross-chain."}, {"id": "s145", "start": 1032.52, "end": 1040.439, "text": "And the way it works is you essentially you just fund um your wallet and then Oh, sorry."}, {"id": "s146", "start": 1040.439, "end": 1043.959, "text": "While I explain this, let's listen to the actual call that came in."}, {"id": "s147", "start": 1043.959, "end": 1044.48, "text": "And"}, {"id": "s148", "start": 1044.48, "end": 1047.24, "text": "Hi Harsha, here is your World Cup final trip"}, {"id": "s149", "start": 1047.24, "end": 1048.72, "text": "I don't know if it's part of it."}, {"id": "s150", "start": 1048.72, "end": 1050.24, "text": "at MetLife Stadium."}, {"id": "s151", "start": 1050.24, "end": 1054.08, "text": "Fly SFO to either EWR or JFK non-stop."}, {"id": "s152", "start": 1054.08, "end": 1057.36, "text": "SFO is showing live arrival delays today, so build buffer."}, {"id": "s153", "start": 1057.36, "end": 1058.96, "text": "Awesome."}, {"id": "s154", "start": 1058.96, "end": 1065.48, "text": "Can you tell me how do I get to the stadium from my hotel?"}, {"id": "s155", "start": 1065.76, "end": 1071.64, "text": "On match day, take NJ Transit to Secaucus Junction, then the Meadowlands Rail Spur direct to the stadium."}, {"id": "s156", "start": 1071.64, "end": 1073.56, "text": "Budget about an hour before receipt."}, {"id": "s157", "start": 1073.56, "end": 1074.28, "text": "Thank you."}, {"id": "s158", "start": 1074.28, "end": 1076.32, "text": "I'll read the rest of it in my email."}, {"id": "s159", "start": 1076.32, "end": 1078.52, "text": "Thank you."}, {"id": "s160", "start": 1081.0, "end": 1081.76, "text": "You're welcome."}, {"id": "s161", "start": 1081.76, "end": 1083.0, "text": "Have"}, {"id": "s162", "start": 1083.0, "end": 1083.56, "text": "All right."}, {"id": "s163", "start": 1083.56, "end": 1089.24, "text": "So, that was just a quick demo of like how you can have like AI agents."}, {"id": "s164", "start": 1089.24, "end": 1096.36, "text": "Um if they're equipped with a wallet, they can do a lot of things with the as opposed to an agent that does not have a wallet."}, {"id": "s165", "start": 1096.36, "end": 1103.28, "text": "So, I have a couple of more minutes, so I'll just walk you through how this technology works underneath."}, {"id": "s166", "start": 1103.28, "end": 1115.04, "text": "So, if you have a wallet and you funded it with USDC, it's very easy because Circle works with a bunch of providers to on-ramp your actual US dollars into USDC."}, {"id": "s167", "start": 1115.04, "end": 1118.44, "text": "And from there, you can deposit the funds into a smart contract."}, {"id": "s168", "start": 1118.44, "end": 1133.36, "text": "The next thing it does is the agent just has to like sign these off-chain authorizations, which are essentially cryptographic signatures saying, \"I am paying this address this particular amount of money.\""}, {"id": "s169", "start": 1133.36, "end": 1146.8, "text": "And then the server just has to like relay this to Circle and within a few hundred milliseconds, this the server knows the merchant knows that, you know, the user has the funds"}, {"id": "s170", "start": 1146.8, "end": 1150.32, "text": "and is able to release the actual resource that the agent requested."}, {"id": "s171", "start": 1150.32, "end": 1163.6, "text": "And with this, you avoid the issue of like you know latencies and stuff that are associated with actually settling every single transaction on chain and this the agents are able to like pay"}, {"id": "s172", "start": 1163.6, "end": 1166.64, "text": "for things at the speed at which they operate."}, {"id": "s173", "start": 1166.64, "end": 1178.16, "text": "So in conclusion the the the way the stack would work is you have Circle agent wallets which give you the ability to equip your agents with wallets."}, {"id": "s174", "start": 1178.16, "end": 1185.64, "text": "The agents have can now hold their money, spend that money autonomously but within the guardrails that you set."}, {"id": "s175", "start": 1185.64, "end": 1199.04, "text": "The wallets enforce those guardrails and then on the sell side the merchants are able to like just wrap their endpoints and resources and monetize it with a few lines of code using our SDKs."}, {"id": "s176", "start": 1199.04, "end": 1210.4, "text": "Then USDC and nano payments is the layer underneath it which sort of helps settle these transactions at the speed at which agents operate which is sub second."}, {"id": "s177", "start": 1210.4, "end": 1220.36, "text": "So and that this is how it scales and you can give it a try yourself by going to agents.circle.com."}, {"id": "s178", "start": 1220.36, "end": 1231.2, "text": "It's just a couple of clicks and you will have your agent equipped with a wallet and ready to like you know make these phone calls and things like that."}, {"id": "s179", "start": 1231.2, "end": 1233.92, "text": "So yeah, thank you."}]}, {"id": "xo68uCibfm8", "title": "It’s Tokens All The Way Down: How RLMs are Different — Kevin Madura, AlixPartners", "channel": "AI Engineer", "duration": 1248, "upload_date": null, "url": "https://www.youtube.com/watch?v=xo68uCibfm8", "api": "/api/talks/xo68uCibfm8.json", "summary_url": "/#xo68uCibfm8", "transcript": {"html": "/transcripts/xo68uCibfm8.html", "txt": "/transcripts/xo68uCibfm8.txt", "vtt": "/transcripts/xo68uCibfm8.vtt"}, "sentences": [{"id": "s1", "start": 12.639, "end": 13.519, "text": "Yep."}, {"id": "s2", "start": 13.519, "end": 14.48, "text": "Awesome."}, {"id": "s3", "start": 14.48, "end": 15.759, "text": "Thanks everyone for being here."}, {"id": "s4", "start": 15.759, "end": 17.119, "text": "My name is Kevin Madura."}, {"id": "s5", "start": 17.119, "end": 18.96, "text": "I'm from a company called Alex Partners."}, {"id": "s6", "start": 18.96, "end": 20.56, "text": "We're we're a consulting firm."}, {"id": "s7", "start": 20.56, "end": 23.6, "text": "Um I'm here to talk to you today about RLMs."}, {"id": "s8", "start": 23.6, "end": 28.32, "text": "Just curious, show of hands, who here is familiar with RLMs?"}, {"id": "s9", "start": 28.32, "end": 29.84, "text": "So we know how much time to spend on it."}, {"id": "s10", "start": 29.84, "end": 30.08, "text": "Okay."}, {"id": "s11", "start": 30.08, "end": 31.199, "text": "So not many."}, {"id": "s12", "start": 31.199, "end": 31.439, "text": "All right."}, {"id": "s13", "start": 31.439, "end": 32.88, "text": "Well, that's good."}, {"id": "s14", "start": 32.88, "end": 36.719, "text": "So we'll start with what an RLM is and and why it's different."}, {"id": "s15", "start": 36.719, "end": 39.28, "text": "So RLM is recursive language model."}, {"id": "s16", "start": 39.28, "end": 48.879, "text": "And really the the key difference here is that it treats the context as an object that it can interact with symbolically in its environment."}, {"id": "s17", "start": 48.879, "end": 59.76, "text": "So it differs from a tool call in the sense that typically when you do a tool call it's JSON or some type of string that's being sent being interpreted elsewhere"}, {"id": "s18", "start": 59.76, "end": 63.92, "text": "maybe by some other program and that's that's returning effectively as a string."}, {"id": "s19", "start": 63.92, "end": 68.32, "text": "The key difference here is that it's interacting with a symbolic environment."}, {"id": "s20", "start": 68.32, "end": 71.119, "text": "So typically that's a ripple Python ripple."}, {"id": "s21", "start": 71.119, "end": 74.0, "text": "Um so that's key difference number one."}, {"id": "s22", "start": 74.0, "end": 80.15899999999999, "text": "Key difference number two is that it's it has the ability to delegate to another LM often to itself."}, {"id": "s23", "start": 80.15899999999999, "end": 91.92, "text": "You can specify whether it's the same model or a different model, but fundamentally because it lives in this environment, you can offload or or make a sub call to another LM with particular parameters"}, {"id": "s24", "start": 91.92, "end": 94.15899999999999, "text": "that also lives in that ripple environment."}, {"id": "s25", "start": 94.15899999999999, "end": 110.07900000000001, "text": "And so you get this ability to recursively decompose problems and apply and have the LLM basically decide how to apply certain logic or certain interpretations or write its own code to solve those problems"}, {"id": "s26", "start": 110.07900000000001, "end": 111.439, "text": "and then that recurses down."}, {"id": "s27", "start": 111.439, "end": 117.28, "text": "So the subLM can do the same sort of thing in terms of understanding and interpreting what it thinks it needs to do."}, {"id": "s28", "start": 117.28, "end": 119.03999999999999, "text": "And I added this last one here."}, {"id": "s29", "start": 119.03999999999999, "end": 123.119, "text": "It's largely bitter lesson pilled in my opinion, right?"}, {"id": "s30", "start": 123.119, "end": 126.64, "text": "is and and shared by Alex and the rest of the the creators of it."}, {"id": "s31", "start": 126.64, "end": 137.44, "text": "But as models get better, you should be able to defer more and more to the model for it to kind of figure out on its own what it needs to do."}, {"id": "s32", "start": 137.44, "end": 142.72, "text": "So the I don't know if this is the actual kind of starting point for RLMs."}, {"id": "s33", "start": 142.72, "end": 146.319, "text": "This is one that that I consider to be one of the the first kind of inklings of it."}, {"id": "s34", "start": 146.319, "end": 151.76, "text": "This is a tweet from Omar who is Alex's adviser um for for RLMs."}, {"id": "s35", "start": 151.76, "end": 163.36, "text": "And this was a concept that he had come up with where it was basically an ability to use DSPI and some other techniques to take in arbitrary um arbitrary length inputs."}, {"id": "s36", "start": 163.36, "end": 172.879, "text": "And basically the use case here would be summarizing an arbitrarily long document and coming up with a table of contents and some summary of of that content."}, {"id": "s37", "start": 172.879, "end": 180.0, "text": "But at least to me, this is kind of the first inkling of okay, context windows might not be something you need to deliberately manage."}, {"id": "s38", "start": 180.0, "end": 190.0, "text": "Although there's of course benefits to doing so, uh there there could be ways to um to exceed the the the context windows using some of these clever techniques."}, {"id": "s39", "start": 190.159, "end": 200.72, "text": "Uh and so if you read the paper and some of the blog posts that are out there from Alex and Omar, I mean it it it has demonstrabably better performance on some of these long context tasks."}, {"id": "s40", "start": 200.72, "end": 210.64, "text": "So, ulong is one benchmark where um the the intent of the benchmark it's is to measure model performance on answering questions about excessively long context."}, {"id": "s41", "start": 210.64, "end": 218.879, "text": "This another one browse comp where it needs to iterate through a large a large body and corpus of text and answer particular questions about it."}, {"id": "s42", "start": 218.879, "end": 221.68, "text": "You can see the blue line at the top there is the RLM."}, {"id": "s43", "start": 221.68, "end": 225.36, "text": "It's very good performance as compared to some of these other models."}, {"id": "s44", "start": 225.36, "end": 235.04, "text": "And even on on the price curve, the the purple is actually just using tool calling um with GBT5 calling a BM25 tool."}, {"id": "s45", "start": 235.04, "end": 240.239, "text": "And that's actually even more expensive for worse performance than than an RLM."}, {"id": "s46", "start": 240.239, "end": 245.12, "text": "So it's worth reading into if you're interested in in some of the benchmarks and how RLMs perform."}, {"id": "s47", "start": 245.12, "end": 255.68, "text": "Um but fundamentally uh an RLM again takes in your input and you're kind of deferring to the model about how to decompose the process what code it needs to write"}, {"id": "s48", "start": 255.68, "end": 259.12, "text": "and it is very tightly integrated with the ripple itself."}, {"id": "s49", "start": 259.12, "end": 262.079, "text": "So it it by itself defines what it needs to do."}, {"id": "s50", "start": 262.079, "end": 272.479, "text": "And so I kind of had this mental model in terms of and I'm very DSP pipel if if you couldn't tell by now basically a student of of Omar and the rest of the group there where"}, {"id": "s51", "start": 272.479, "end": 281.12, "text": "you have this relatively deterministic shell of what you want to do like what what is your intent what is your actual task that you're trying to accomplish."}, {"id": "s52", "start": 281.12, "end": 290.8, "text": "You define that in terms of your inputs and your outputs and some type of guidance or prompt or what have you to the model to say this is generally what I want to achieve."}, {"id": "s53", "start": 290.8, "end": 292.15999999999997, "text": "go off and do it."}, {"id": "s54", "start": 292.15999999999997, "end": 294.32, "text": "Here's the things that you can expect as your input."}, {"id": "s55", "start": 294.32, "end": 295.52, "text": "Here's what I want out of it."}, {"id": "s56", "start": 295.52, "end": 297.12, "text": "Go figure out the rest."}, {"id": "s57", "start": 297.12, "end": 307.199, "text": "And so this applies for using something like DSPI, but I think it applies to RLMs as well because you don't have to worry as much now about how the actual"}, {"id": "s58", "start": 307.199, "end": 310.0, "text": "implementation works in the middle."}, {"id": "s59", "start": 310.0, "end": 317.12, "text": "You can just have some guarantees about the inputs and the outputs and you can let the model figure out the rest of of that part of it."}, {"id": "s60", "start": 317.12, "end": 329.44, "text": "So, a lot of this comes down to if if you were at um I think it was code in November in uh in New York City, Dex had this great talk about just broader context engineering and he he coined something like the dumb zone"}, {"id": "s61", "start": 329.44, "end": 331.68, "text": "which it's kind of grayed out at the bottom there."}, {"id": "s62", "start": 331.68, "end": 335.12, "text": "But the point is that we all know that there's context rot, right?"}, {"id": "s63", "start": 335.12, "end": 339.919, "text": "Once you fill up the context window to a certain degree, performance starts to degrade."}, {"id": "s64", "start": 339.919, "end": 352.0, "text": "And so RLMs somewhat get around this problem because the context itself doesn't fill up as quickly because you're deferring a lot of the subtasks to the subm models and it's"}, {"id": "s65", "start": 352.0, "end": 358.24, "text": "the full kind of context and the inputs aren't exposed to the context window itself."}, {"id": "s66", "start": 358.24, "end": 365.68, "text": "It lives as a variable in the ripple and so the main LM can choose how to um how to access that."}, {"id": "s67", "start": 365.68, "end": 368.8, "text": "It can offload some of these subtasks to to sublim."}, {"id": "s68", "start": 368.8, "end": 373.52, "text": "And really the only context that it gets back are the things that actually matter."}, {"id": "s69", "start": 373.52, "end": 378.319, "text": "So in terms of how it's meaningfully different, rag of course you kind of just stuff the context window."}, {"id": "s70", "start": 378.319, "end": 380.08, "text": "You want it to limit there."}, {"id": "s71", "start": 380.08, "end": 389.919, "text": "Agents are largely just bringing strings back and you don't have this tight coupling between the logic, the execution and the results."}, {"id": "s72", "start": 389.919, "end": 392.96, "text": "And so you still run into the same sort of problem there."}, {"id": "s73", "start": 392.96, "end": 395.759, "text": "Same thing with tool calling and and codec."}, {"id": "s74", "start": 395.759, "end": 408.56, "text": "And then RLMs as I mentioned you're act the the LLM is actually just interacting with the context the results as variables in the ripple so that it can do additional computation on versus"}, {"id": "s75", "start": 408.56, "end": 412.0, "text": "it trying to attend to all these different tokens in this in its context window."}, {"id": "s76", "start": 412.0, "end": 419.12, "text": "It's it's a meaningfully different way of of the LLM interacting with the uh the actual content itself."}, {"id": "s77", "start": 419.12, "end": 423.599, "text": "And so people always say, okay, what's the difference between that and and encoding agents?"}, {"id": "s78", "start": 423.599, "end": 433.44, "text": "Um, in my mind, the largest difference is that the way that tool calls are tool calls calls are done is passing strings back and forth."}, {"id": "s79", "start": 433.44, "end": 446.72, "text": "Um but you can see with the release recently of workflows that uh Anthropic is doing something fairly similar and they um at the CIS conference I think it was Tar or someone similar"}, {"id": "s80", "start": 446.72, "end": 454.8, "text": "um mentioned the RLM paper as a key driver of workflows and how they're how they've implemented it."}, {"id": "s81", "start": 454.8, "end": 464.0, "text": "And you can see here the intermediate results for workflows live in script variables i.e. a variable in the context."}, {"id": "s82", "start": 464.0, "end": 470.479, "text": "So, it's driving some of these these breakthroughs and some of these techniques from the from the labs as well."}, {"id": "s83", "start": 473.199, "end": 482.879, "text": "I'll skip through this a bit just because I have about 10 minutes left, but generally speaking, when you want to use it, it's obviously for large or dense input context."}, {"id": "s84", "start": 482.879, "end": 486.24, "text": "An underexplored area is outputs as well."}, {"id": "s85", "start": 486.24, "end": 496.72, "text": "So if you have a some type of task where you need to generate hundreds of thousands of lines or whatever it might be, RLMs I think would be a good candidate for that as well."}, {"id": "s86", "start": 496.72, "end": 499.84, "text": "Obviously tasks that are imunable to some type of decomposition."}, {"id": "s87", "start": 499.84, "end": 507.28, "text": "So if you want to look through the entire I don't know the whole tax code as an example and try and find loopholes or something."}, {"id": "s88", "start": 507.28, "end": 510.08, "text": "You can't obviously put all of that into context at once."}, {"id": "s89", "start": 510.08, "end": 518.719, "text": "You could use an LLM to crunch through all of that and iteratively explore and use sub agents to explore interesting areas of this of the tax code."}, {"id": "s90", "start": 518.719, "end": 524.8, "text": "Bring back those sections and then reason over that and then just generally for for longer horizon sessions."}, {"id": "s91", "start": 524.8, "end": 528.32, "text": "And when you want to skip it, of course, it' be something that fits in context."}, {"id": "s92", "start": 528.32, "end": 534.48, "text": "You want something that's low latency or the the model itself is as strong of a coder."}, {"id": "s93", "start": 534.48, "end": 540.64, "text": "And uh our friend Raymond here did some great perfor performance testing on the long chain of thought benchmark."}, {"id": "s94", "start": 540.64, "end": 547.68, "text": "Um I'll leave this link as a as a leave behind after, but just to give you a sense of how well it performs on some of these tasks."}, {"id": "s95", "start": 547.68, "end": 554.48, "text": "It's a meaningful jump overall from from 2.6 to 45.4% um accuracy on many of these tasks."}, {"id": "s96", "start": 554.48, "end": 558.72, "text": "And you can see it performs really well on things that are amanable to code."}, {"id": "s97", "start": 558.72, "end": 577.76, "text": "So logic puzzles and and chess and chemistry and things like that where it can dynamically write code bring in only the relevant part of the context compute that and then return the result where the main model is really just harvesting the results from from the subLM and try instead of trying to do that by itself."}, {"id": "s98", "start": 578.16, "end": 581.2, "text": "Um I put together a few just super simple examples."}, {"id": "s99", "start": 581.2, "end": 592.56, "text": "I mean, these are kind of they're somewhat unfair, I suppose, to to the base model, but it it makes the point that there are certain tasks that base models just aren't really fit to do themselves"}, {"id": "s100", "start": 592.56, "end": 601.279, "text": "because they because they have to attend all these to different tokens at once in the context window where you need or want to use some type of coding approach to that."}, {"id": "s101", "start": 601.279, "end": 616.8, "text": "So in this random example, summing 12 numbers that are buried across 30,000 tokens, the LLM trying to figure all that out by itself and give you the answer isn't always going to work as well as something that you can write reg x4 or something similar."}, {"id": "s102", "start": 616.8, "end": 628.32, "text": "And then the same same sort of thing particularly for data frames and we'll walk through a brief example here where because the LLM can interact with the data frame within the ripple."}, {"id": "s103", "start": 628.32, "end": 639.36, "text": "It just has a much better understanding of the content and can iterate through that much more quickly than having to pass tool calls back and forth in terms of like JSON strings and and that sort of thing."}, {"id": "s104", "start": 639.36, "end": 644.24, "text": "Um, and then I threw this in there in terms of running the same experiments with a coding agent."}, {"id": "s105", "start": 644.24, "end": 646.72, "text": "Now, I didn't look into this too deeply."}, {"id": "s106", "start": 646.72, "end": 656.56, "text": "There's probably some unfair math going on here, but you can see that it was totally bloated in terms of the way that cloud code tried to um tried to solve these tasks."}, {"id": "s107", "start": 656.56, "end": 666.72, "text": "So, there's more work to be done there, of course, in terms of like running experiments to compare base models versus RLMs versus something like a coding agent."}, {"id": "s108", "start": 666.72, "end": 670.56, "text": "But there's just for certain tasks for like production workloads."}, {"id": "s109", "start": 670.56, "end": 676.399, "text": "My sense is you probably don't want to just do cloud-p your prompt and like hope for a good result."}, {"id": "s110", "start": 676.399, "end": 687.76, "text": "Like you want more of a structured approach to your inputs, your outputs and you want a defined pipeline for doing so which reduces your cost, it reduces your complexity, reduces your bloat, all that sort of thing."}, {"id": "s111", "start": 687.76, "end": 692.0, "text": "Um where RLMs can can shine."}, {"id": "s112", "start": 692.079, "end": 698.56, "text": "So in the real world there are a bunch of different open source libraries that implement RLMs at some level."}, {"id": "s113", "start": 698.56, "end": 710.24, "text": "Some of them are more RLM focused uh like a predict RLM would be a good example of that versus others are kind of just integrating it into the broader approach or the broader framework."}, {"id": "s114", "start": 710.24, "end": 715.68, "text": "DSPI obviously uh there's axe which is really interesting work uh that's being done there."}, {"id": "s115", "start": 715.68, "end": 718.8, "text": "Predict RLM is more focused on like knowledge work."}, {"id": "s116", "start": 718.8, "end": 724.0, "text": "So it works with spreadsheets and PDFs and that sort of thing and then fast RLM."}, {"id": "s117", "start": 724.0, "end": 729.76, "text": "And then there's a tweet yesterday from this guy Sam Hogan um where who runs inference.net."}, {"id": "s118", "start": 729.76, "end": 748.0, "text": "He's using an RLM to basically run and extract um insights from your particular um production workload traces so that they can see what makes sense to defer off to something like a GLM 5.2 too and do that iteratively and automatically as your traffic goes through."}, {"id": "s119", "start": 748.0, "end": 753.04, "text": "So point being, you don't have to worry about context engineering."}, {"id": "s120", "start": 753.04, "end": 756.88, "text": "You can kind of just throw the RLM at it and have it figure it out."}, {"id": "s121", "start": 756.88, "end": 763.68, "text": "Um, I only have five minutes left, so we won't go through this whole example and I'll I'll skip to some of the traces because that's probably the most interesting."}, {"id": "s122", "start": 763.68, "end": 774.32, "text": "Um, but this is all you would really need to do in terms of a simple, in this case it's like a a cohort retention analysis, something that you might give to a data scientist."}, {"id": "s123", "start": 774.32, "end": 782.24, "text": "But this concept of applying an RLM to a complex data structure like a data frame becomes very easy to do."}, {"id": "s124", "start": 782.24, "end": 786.72, "text": "This is all the code you need to do it where I'm feeding in three different data frames."}, {"id": "s125", "start": 786.72, "end": 789.6, "text": "I'm saying these are the sorts of things you need to look for."}, {"id": "s126", "start": 789.6, "end": 791.839, "text": "These are the output types that I want."}, {"id": "s127", "start": 791.839, "end": 794.959, "text": "and then just let the RLM go on it."}, {"id": "s128", "start": 794.959, "end": 798.079, "text": "And I'll I'll show you some of the traces."}, {"id": "s129", "start": 798.079, "end": 803.6, "text": "Um, and so it has its own ripple where it can interact with those data frames."}, {"id": "s130", "start": 803.6, "end": 805.04, "text": "And you can see it reasoning through."}, {"id": "s131", "start": 805.04, "end": 806.48, "text": "Okay, first I need to do this."}, {"id": "s132", "start": 806.48, "end": 807.92, "text": "It's writing the code."}, {"id": "s133", "start": 807.92, "end": 814.9590000000001, "text": "And because it's li it's living in the ripple with the dataf frame, you don't have this additional bloat of the tool calls back and forth."}, {"id": "s134", "start": 814.9590000000001, "end": 820.24, "text": "It's actually interacting directly with the dataf frame as if it was typing in its own Jupyter notebook."}, {"id": "s135", "start": 820.24, "end": 824.48, "text": "And there there's significant advantages for for doing so."}, {"id": "s136", "start": 824.48, "end": 828.24, "text": "And so you can see the sorts of outputs that it gets as a result."}, {"id": "s137", "start": 828.24, "end": 830.56, "text": "And it by itself will iterate."}, {"id": "s138", "start": 830.56, "end": 835.68, "text": "And in this case it didn't, but it has the option to defer to subLM to do okay."}, {"id": "s139", "start": 835.68, "end": 845.04, "text": "And now I have this big whatever this big subset of the data sublm go off and do this analysis give me the result and it can do that iteratively over time."}, {"id": "s140", "start": 845.04, "end": 855.92, "text": "Uh but the point is that the LM is directly interacting with the data frame in its ripple um and kind of iterating through the results."}, {"id": "s141", "start": 855.92, "end": 860.959, "text": "And so this u this platform compound is RLM and DSPI native."}, {"id": "s142", "start": 860.959, "end": 863.92, "text": "So it gives you this really nice breakdown of the reasoning."}, {"id": "s143", "start": 863.92, "end": 874.24, "text": "It separates out the code that's being generated and ultimately you can see uh the final output which is here where it's formatting."}, {"id": "s144", "start": 874.24, "end": 875.92, "text": "Okay, here are the key findings that I have."}, {"id": "s145", "start": 875.92, "end": 877.6, "text": "Here are the recommendations."}, {"id": "s146", "start": 877.6, "end": 885.76, "text": "And then you have this final submit which is the final answer that gives you the the typed um outputs that you had defined up front."}, {"id": "s147", "start": 885.76, "end": 889.92, "text": "And the key thing here is that the LLM itself is deciding when to stop."}, {"id": "s148", "start": 889.92, "end": 893.519, "text": "So you have this you have a variable of max iteration."}, {"id": "s149", "start": 893.519, "end": 898.8, "text": "So you can just you can decide whether you want it to have a maximum of 10 or 100 or whatever it is."}, {"id": "s150", "start": 898.8, "end": 909.12, "text": "But it will by itself explore the data, understand what needs to happen and then when it it itself is comfortable, it can run submit and give you the final output."}, {"id": "s151", "start": 909.12, "end": 912.32, "text": "Again, being bitter or less impilled, this will get better over time."}, {"id": "s152", "start": 912.32, "end": 916.959, "text": "You can kind of just defer everything and it will figure out what to do."}, {"id": "s153", "start": 916.959, "end": 923.199, "text": "And so the hope would be you don't have to I mean we're already you know whatever this is 20 lines of code or something."}, {"id": "s154", "start": 923.199, "end": 929.279, "text": "Um, but you can you can see a world where you can continue to go up levels of abstraction."}, {"id": "s155", "start": 929.279, "end": 936.0, "text": "As long as you can define what your objective is and what you want it to do, the the model will kind of figure out the rest."}, {"id": "s156", "start": 936.0, "end": 943.519, "text": "Uh, so we just walk through a bunch of this, but um these are the different steps that it took in this example in the code that it wrote."}, {"id": "s157", "start": 943.519, "end": 948.9590000000001, "text": "Um, and then I'll just breeze through a few real world case studies and where it's actually being used."}, {"id": "s158", "start": 948.9590000000001, "end": 951.12, "text": "So I mentioned predict rm before."}, {"id": "s159", "start": 951.12, "end": 961.759, "text": "So the company trampoline AI I think it is they're doing really interesting work in applying RLMs u like I mentioned before for different pieces of knowledge work."}, {"id": "s160", "start": 961.759, "end": 966.72, "text": "So natively interacting with PDFs and and spreadsheets and that sort of thing."}, {"id": "s161", "start": 966.72, "end": 977.12, "text": "So in this relatively simple example okay I have a bunch of I have a directory of invoices that I need to create one consolidated inventory out of."}, {"id": "s162", "start": 977.12, "end": 979.8389999999999, "text": "As we all know invoices can be complicated."}, {"id": "s163", "start": 979.8389999999999, "end": 983.8389999999999, "text": "that can be very long, that can kind of be all over the place."}, {"id": "s164", "start": 983.8389999999999, "end": 991.04, "text": "To do that today without RLMs or this sort of like framework gets very complicated very quickly."}, {"id": "s165", "start": 991.04, "end": 993.68, "text": "I have a lot of battle scars to to prove it."}, {"id": "s166", "start": 993.68, "end": 1007.6, "text": "Um, but with something like an RLM, you you don't need to worry as much about, okay, if I have a 200page invoice or contract or whatever it is, you can let the RLM just churn through all of that and give you the result instead of having to worry about chunking"}, {"id": "s167", "start": 1007.6, "end": 1017.199, "text": "and embedding maybe and doing all these different strategies to try and get around the context window management that we've all had to to do previously."}, {"id": "s168", "start": 1017.36, "end": 1027.839, "text": "Um, so it allows you, the point there is that you can focus on the abstractions and what you actually want to do instead of the context engineering itself, which I think is a really helpful"}, {"id": "s169", "start": 1027.839, "end": 1030.16, "text": "um, helpful output of all of this."}, {"id": "s170", "start": 1030.16, "end": 1048.16, "text": "And an interesting tidbit for all the DSPI fans in the room, predict RLM uses DSPI to determine the schemas between the main LM and the subLM calls, which I personally think is is a nice feature because you have a lot more readability and maintainability."}, {"id": "s171", "start": 1048.16, "end": 1058.32, "text": "So you understand exactly what the model is trying to achieve and the model can be much more precise and prescriptive about the types of data that it's looking for from the subLM."}, {"id": "s172", "start": 1058.32, "end": 1068.0, "text": "And I would want to do some experiments to test this out, but I would think that this would improve performance for cheaper models like a a Quinn or some of the other ones because"}, {"id": "s173", "start": 1068.0, "end": 1072.0, "text": "you're specifying the inputs and outputs and you're enforcing those types coming back."}, {"id": "s174", "start": 1072.0, "end": 1083.2, "text": "And so you get all the benefits of the RLM being able to churn through all this information, but you have a lot more of the structure in between where when it's handing off to a sublm,"}, {"id": "s175", "start": 1083.2, "end": 1087.12, "text": "it it enforces some of the uh some of those schemas."}, {"id": "s176", "start": 1087.12, "end": 1092.96, "text": "This is an example from um an AWS engineer from a couple days ago."}, {"id": "s177", "start": 1092.96, "end": 1101.84, "text": "We were just kind of playing around with it, but I just thought it was a nice example of you can kind of just throw arbitrary data at RLM."}, {"id": "s178", "start": 1101.84, "end": 1110.24, "text": "In this case, it was a bunch of log data um to surface some interesting uh results and he he found it useful."}, {"id": "s179", "start": 1110.24, "end": 1121.44, "text": "Um there's a a project called Halo which uses an RLM to look at traces of um of different t uh agent tasks."}, {"id": "s180", "start": 1121.44, "end": 1135.84, "text": "And basically the promise of Halo is that instead of optimizing a particular like workflow or DSPI uh or or other framework uh like structure itself, it's it's actually iterating on the harness."}, {"id": "s181", "start": 1135.84, "end": 1147.28, "text": "So it's like a meta abstraction almost or meta optimization of the harness itself and it uses an RLM because as we all know tracing can get very long and and complicated."}, {"id": "s182", "start": 1147.28, "end": 1158.88, "text": "So the RLM can not only take in all that context but also leverage the um the structure of those traces to to recommend a better um a better harness."}, {"id": "s183", "start": 1158.88, "end": 1162.24, "text": "And then this last one uh this is all the code you need."}, {"id": "s184", "start": 1162.24, "end": 1164.08, "text": "I ran this little experiment."}, {"id": "s185", "start": 1164.08, "end": 1172.799, "text": "There's a an intentionally vulnerable application called uh it's from OASP, but basically there's a it's a web app with a bunch of vulnerabilities in it."}, {"id": "s186", "start": 1172.799, "end": 1182.799, "text": "This is all the code you need on the right hand side to run basically an agent to run through whatever it is 500,000 lines of code to generate some type of security report."}, {"id": "s187", "start": 1182.799, "end": 1188.4, "text": "That's just an arbitrary example, but the point is you don't need a lot of context engineering."}, {"id": "s188", "start": 1188.4, "end": 1192.24, "text": "You don't need a lot of structure around it to achieve what you want to do."}, {"id": "s189", "start": 1192.24, "end": 1198.88, "text": "And so you can feed in an arbitrary uh size codebase into this and get some type of insights out."}, {"id": "s190", "start": 1198.88, "end": 1202.559, "text": "So you can imagine that being applied to other areas as well."}, {"id": "s191", "start": 1202.559, "end": 1207.52, "text": "Um so I know I I rushed through everything a little bit but I'm happy to answer questions afterwards."}, {"id": "s192", "start": 1207.52, "end": 1209.919, "text": "Uh the I'll leave you leave you with this."}, {"id": "s193", "start": 1209.919, "end": 1217.919, "text": "The biggest promise I see here is just imagine a world where the models are actually post-trained and actually like RLM aware."}, {"id": "s194", "start": 1217.919, "end": 1227.919, "text": "I think things will get pretty crazy pretty quick when they actually know how to use and kind of take advantage of the RLM methodology natively."}, {"id": "s195", "start": 1227.919, "end": 1231.44, "text": "So, thank you so much for your time."}]}, {"id": "xxfMT-bPEmU", "title": "From coding to Knowledge work agents — Karan Vaidya, Composio", "channel": "AI Engineer", "duration": 1242, "upload_date": null, "url": "https://www.youtube.com/watch?v=xxfMT-bPEmU", "api": "/api/talks/xxfMT-bPEmU.json", "summary_url": "/#xxfMT-bPEmU", "transcript": {"html": "/transcripts/xxfMT-bPEmU.html", "txt": "/transcripts/xxfMT-bPEmU.txt", "vtt": "/transcripts/xxfMT-bPEmU.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.08, "end": 14.08, "text": "Uh hey folks."}, {"id": "s3", "start": 14.08, "end": 18.88, "text": "Uh I'm Karan Vedya, co-founder and CTO of Composio."}, {"id": "s4", "start": 19.64, "end": 23.48, "text": "Most agentic tool calls today are still happening in one field."}, {"id": "s5", "start": 23.48, "end": 26.16, "text": "No guesses, it's software engineering."}, {"id": "s6", "start": 26.16, "end": 29.68, "text": "Every other kind of work is trailing far behind."}, {"id": "s7", "start": 29.68, "end": 35.76, "text": "If models keep getting better, then why are we still limited to just agentic coding?"}, {"id": "s8", "start": 35.76, "end": 39.96, "text": "That's the trillion-dollar question I'm here to answer."}, {"id": "s9", "start": 43.64, "end": 47.16, "text": "Three years ago, coding agents were just auto complete."}, {"id": "s10", "start": 47.16, "end": 50.84, "text": "Today, software engineering is fully autonomous."}, {"id": "s11", "start": 50.84, "end": 56.8, "text": "We went from pressing tab tab tab to let just Claude cook."}, {"id": "s12", "start": 56.8, "end": 59.36, "text": "That's just magic."}, {"id": "s13", "start": 60.52, "end": 64.4, "text": "And why did it happen so fast in coding?"}, {"id": "s14", "start": 64.4, "end": 67.04, "text": "Most people would think it's models."}, {"id": "s15", "start": 67.04, "end": 71.48, "text": "Yeah, models got really better over time over the last two to three years."}, {"id": "s16", "start": 71.48, "end": 74.52, "text": "And so did the harnesses."}, {"id": "s17", "start": 74.52, "end": 76.96000000000001, "text": "Claude code, Codex, Cursor."}, {"id": "s18", "start": 76.96000000000001, "end": 80.52, "text": "But on their own, it wouldn't have been enough."}, {"id": "s19", "start": 80.52, "end": 88.32, "text": "It only worked because all the infrastructure and systems around coding were literally meant for agents."}, {"id": "s20", "start": 88.56, "end": 92.16, "text": "Code came with the support that agents needed."}, {"id": "s21", "start": 92.16, "end": 100.28, "text": "You have got the repo, the commit history, tests, CI/CD, review, linters, revert if anything goes wrong."}, {"id": "s22", "start": 100.28, "end": 106.6, "text": "The kind of stuff that makes you trust the agents, the systems around code."}, {"id": "s23", "start": 106.84, "end": 111.64, "text": "Now, we're pointing these same amazing agents at everything else."}, {"id": "s24", "start": 111.64, "end": 114.16, "text": "Support, finance, sales."}, {"id": "s25", "start": 114.16, "end": 119.4, "text": "But the agents that were doing phenomenally well in coding, are just working blind."}, {"id": "s26", "start": 119.4, "end": 125.106, "text": "Because the infrastructure around coding doesn't even exist in other fields."}, {"id": "s27", "start": 125.106, "end": 125.6, "text": "[snorts]"}, {"id": "s28", "start": 125.6, "end": 131.68, "text": "So, how do we close the bridge between coding agents and knowledge work agents?"}, {"id": "s29", "start": 131.68, "end": 143.959, "text": "We think it's core six primitives and coding had all six of them while knowledge work doesn't have any and that's what we need to build."}, {"id": "s30", "start": 143.959, "end": 146.72, "text": "First is centralization."}, {"id": "s31", "start": 146.76, "end": 154.04, "text": "Coding agents work so pretty well partly because they were very near the source of truth."}, {"id": "s32", "start": 154.04, "end": 157.32, "text": "They knew the what, the why and how."}, {"id": "s33", "start": 157.32, "end": 164.04, "text": "You give them the repo, the infrastructure as code and you close the loop and let the model cook."}, {"id": "s34", "start": 164.04, "end": 171.56, "text": "The agent starts at everything with everything they need all in a single place, that is the code base."}, {"id": "s35", "start": 171.56, "end": 175.44, "text": "This is exactly what knowledge work miss today."}, {"id": "s36", "start": 175.44, "end": 179.959, "text": "For example, a single deal is scattered across five different platforms."}, {"id": "s37", "start": 179.959, "end": 189.04, "text": "The records are in Salesforce, the docs in Notion, the emails in Gmail, conversations in Slack and the support history is in Zendesk."}, {"id": "s38", "start": 189.04, "end": 193.6, "text": "There's no single source of truth, single place to get all the information."}, {"id": "s39", "start": 193.6, "end": 197.92000000000002, "text": "Everything is separate and every app has its own login."}, {"id": "s40", "start": 197.92000000000002, "end": 207.16, "text": "Before a knowledge work agent can even start to do thing, it has to go and pull all the threads and kind of tie them together itself."}, {"id": "s41", "start": 207.16, "end": 210.56, "text": "And that's still the base point where coding agent had started."}, {"id": "s42", "start": 210.56, "end": 212.2, "text": "It already had it all."}, {"id": "s43", "start": 212.2, "end": 218.56, "text": "So, how can you expect knowledge work to do knowledge work agent to do the same level of work as coding agent?"}, {"id": "s44", "start": 219.07999999999998, "end": 222.4, "text": "So, the first thing we build is the missing center."}, {"id": "s45", "start": 222.4, "end": 227.16, "text": "One place where all your apps, all your connections, all your logins exist."}, {"id": "s46", "start": 227.16, "end": 231.36, "text": "So, the agent doesn't need to do the hard work of stitching them all together."}, {"id": "s47", "start": 231.36, "end": 233.8, "text": "They find it all in a single place."}, {"id": "s48", "start": 233.8, "end": 242.68, "text": "And they get the baseline with the coding agent started with, which is the repo, the information across all the stacks in one single place."}, {"id": "s49", "start": 242.68, "end": 249.0, "text": "That's the foundation you start with and you can give right accesses to your agent."}, {"id": "s50", "start": 249.32, "end": 252.76, "text": "The next thing agent needs is a sense of history."}, {"id": "s51", "start": 252.76, "end": 256.12, "text": "The ability to look back in the past."}, {"id": "s52", "start": 256.799, "end": 259.12, "text": "In code, you get it for free."}, {"id": "s53", "start": 259.12, "end": 264.04, "text": "Git keeps a record of every single thing that went in, every single change that was made."}, {"id": "s54", "start": 264.04, "end": 271.68, "text": "So, the agent can always look back and see how a certain change was made, why something worked, why something didn't work."}, {"id": "s55", "start": 271.68, "end": 275.04, "text": "Think about the kind of thing you actually ask your agent to do."}, {"id": "s56", "start": 275.04, "end": 281.12, "text": "We had to revert a change in the past because of some failure, but that was pretty hard to pull off."}, {"id": "s57", "start": 281.12, "end": 283.4, "text": "Can you look at it and get it back again?"}, {"id": "s58", "start": 283.4, "end": 287.52, "text": "It just reach to the history and get it back and cook it."}, {"id": "s59", "start": 287.52, "end": 287.548, "text": "The"}, {"id": "s60", "start": 287.548, "end": 287.6, "text": "[snorts]"}, {"id": "s61", "start": 287.6, "end": 289.84000000000003, "text": "history isn't just for agent."}, {"id": "s62", "start": 289.84000000000003, "end": 293.44, "text": "It's also for you to keep a record what the agent is doing."}, {"id": "s63", "start": 293.44, "end": 307.04, "text": "You can see what the agent is doing, where it is up, where it is doing successful things, and like instead of trusting what the agent is saying you, you can just go to those particular apps and look at what it has done."}, {"id": "s64", "start": 309.4, "end": 312.0, "text": "Now, ask those same questions about knowledge work."}, {"id": "s65", "start": 312.0, "end": 316.04, "text": "What led to the CRM being in a state where it is today?"}, {"id": "s66", "start": 316.04, "end": 322.919, "text": "How did the How did my colleague craft that amazing mail that led to the closing of the deal?"}, {"id": "s67", "start": 322.919, "end": 327.08, "text": "What's the actual process to escalate a support issue or even close one?"}, {"id": "s68", "start": 327.08, "end": 331.88, "text": "The answers are smeared across hundreds of apps and none of them keep the history."}, {"id": "s69", "start": 331.88, "end": 333.76, "text": "So, the agent has no memory."}, {"id": "s70", "start": 333.76, "end": 336.52, "text": "It starts from blank state almost every time."}, {"id": "s71", "start": 336.52, "end": 340.76, "text": "No idea what was tried before, what worked, what didn't work."}, {"id": "s72", "start": 340.76, "end": 344.24, "text": "And you you have nothing to look at all as well."}, {"id": "s73", "start": 344.24, "end": 349.48, "text": "Once the agent runs, it tells you it has done successfully, you don't know if it has actually done successfully."}, {"id": "s74", "start": 349.48, "end": 352.88, "text": "There's no way to know if it is right or not."}, {"id": "s75", "start": 352.88, "end": 356.68, "text": "And that's what's missing, a record of work."}, {"id": "s76", "start": 357.08, "end": 366.56, "text": "Now, because everything finally runs through one single place, that centralization, we can build a layer on top of it, the record."}, {"id": "s77", "start": 366.56, "end": 372.84, "text": "Every single like action that agent takes can be logged across every other app."}, {"id": "s78", "start": 372.84, "end": 377.32, "text": "Whatever it touched, whatever it skipped, what worked, what didn't."}, {"id": "s79", "start": 377.32, "end": 380.68, "text": "Via this, firstly, the agent gets memory."}, {"id": "s80", "start": 380.68, "end": 388.44, "text": "It can look back at how similar tasks were done before, what was successful, and replicate it again."}, {"id": "s81", "start": 388.44, "end": 391.56, "text": "It doesn't start with a blank state all the time."}, {"id": "s82", "start": 391.56, "end": 393.32, "text": "Second, you get trust."}, {"id": "s83", "start": 393.32, "end": 396.24, "text": "You can finally see exactly what the agent is doing."}, {"id": "s84", "start": 396.24, "end": 404.15999999999997, "text": "So, instead of hoping it will do the right thing, you can just go back and check and catch it if it does something bad."}, {"id": "s85", "start": 404.15999999999997, "end": 411.04, "text": "And as you kind of see it more and more doing the right things, you'll develop the trust and offload more tasks to it."}, {"id": "s86", "start": 411.04, "end": 414.08, "text": "The next thing an agent needs is context."}, {"id": "s87", "start": 414.08, "end": 417.68, "text": "And there are really two kinds of context, if you think about it."}, {"id": "s88", "start": 417.68, "end": 421.16, "text": "The first the shape of shape of the platform, the architecture."}, {"id": "s89", "start": 421.16, "end": 425.04, "text": "How things flow into each other, how things are tied, the data flows."}, {"id": "s90", "start": 425.04, "end": 432.44, "text": "Like kind of like a map which a senior engineer carries in their head, and a junior engineer takes probably 3 months to develop."}, {"id": "s91", "start": 432.44, "end": 433.64, "text": "The second is style."}, {"id": "s92", "start": 433.64, "end": 439.0, "text": "This isn't what's objectively correct, but more like what good looks like in your company."}, {"id": "s93", "start": 439.0, "end": 449.72, "text": "So, how you do things, things like linter, type checks, etc. And maybe you use a TypeScript decorator which nobody else would."}, {"id": "s94", "start": 449.72, "end": 454.08, "text": "This is not exactly somewhere in a playbook, it's more in your code base."}, {"id": "s95", "start": 454.08, "end": 467.84000000000003, "text": "It's all available in your code base, so the agent can just go and look and figure out the specs, what you like, the like linters, the formatters, etc. Now, coming to knowledge work,"}, {"id": "s96", "start": 467.84000000000003, "end": 468.6, "text": "the same thing."}, {"id": "s97", "start": 468.6, "end": 470.8, "text": "Say you're writing a doc to a customer."}, {"id": "s98", "start": 470.8, "end": 478.28, "text": "To even start, I would have to open the database to pull their usage, check PostHog of how they have been actually using things."}, {"id": "s99", "start": 478.28, "end": 481.52, "text": "And Salesforce to look at their deal details."}, {"id": "s100", "start": 481.52, "end": 485.56, "text": "Only then I can even start writing the first line of the doc."}, {"id": "s101", "start": 485.56, "end": 489.24, "text": "The answer wasn't isolated in just one of those tools."}, {"id": "s102", "start": 489.24, "end": 495.6, "text": "I'm able to write this is doc because I'm pulling the threads across all these tools into one single context in my head."}, {"id": "s103", "start": 495.6, "end": 500.96, "text": "So, putting history and context together, that's how you map how the organization works."}, {"id": "s104", "start": 500.96, "end": 505.16, "text": "And that part is not available to agent handily."}, {"id": "s105", "start": 506.36, "end": 518.36, "text": "So, as we did centralization and logging, the record we just built, the one that gives the agent memory and lets you check what it did, also does one more interesting thing."}, {"id": "s106", "start": 518.36, "end": 522.719, "text": "It If you log enough of what every agent is doing, you start to see patterns."}, {"id": "s107", "start": 522.719, "end": 524.96, "text": "You start to see how the organization works."}, {"id": "s108", "start": 524.96, "end": 531.76, "text": "And you start to form skills, which is some sort of distillation of how the organization has been working."}, {"id": "s109", "start": 531.76, "end": 540.96, "text": "Which approaches work, which don't, which what led to failures in the past, etc. The The record isn't just history of what happened anymore."}, {"id": "s110", "start": 540.96, "end": 543.92, "text": "It's a picture of how your company operates."}, {"id": "s111", "start": 543.92, "end": 546.48, "text": "And it actually works at three different levels."}, {"id": "s112", "start": 546.48, "end": 555.88, "text": "How a tool works in general, which is applicable to every person, how a company does things, and how you prefer to do things, what good like looks like to you."}, {"id": "s113", "start": 555.88, "end": 559.6, "text": "And that's the context that context that was missing for a knowledge work agent."}, {"id": "s114", "start": 559.6, "end": 567.52, "text": "How the work actually gets done, the real playbook of sorts, and the preference of a company of a personal user."}, {"id": "s115", "start": 567.52, "end": 572.8389999999999, "text": "And now the agent can query it and stop guessing how the company operates."}, {"id": "s116", "start": 574.28, "end": 578.4, "text": "The other reason coding agents work so well, they test themselves."}, {"id": "s117", "start": 578.4, "end": 580.04, "text": "The work checks itself."}, {"id": "s118", "start": 580.04, "end": 581.44, "text": "Verification."}, {"id": "s119", "start": 581.44, "end": 584.92, "text": "The moment the agent writes a code, a stack of checks follow."}, {"id": "s120", "start": 584.92, "end": 587.64, "text": "The unit tests can catch small mistakes."}, {"id": "s121", "start": 587.64, "end": 592.36, "text": "The integration tests catch the ones that only affect components three blocks away."}, {"id": "s122", "start": 592.36, "end": 597.84, "text": "The type system would not even work and run if anything is going wrong."}, {"id": "s123", "start": 597.84, "end": 600.28, "text": "The compiler will not even build."}, {"id": "s124", "start": 600.28, "end": 612.88, "text": "On top of it sits the softer checks, linters, formatters, bugboard.md review skills, etc. And these ensure that the code matches the way your time team likes to follow the standards of your team."}, {"id": "s125", "start": 612.88, "end": 614.12, "text": "None of it needs you."}, {"id": "s126", "start": 614.12, "end": 621.4, "text": "The agent completes the loop on its own and makes sure that it follows the standard and is able to make the code run."}, {"id": "s127", "start": 621.4, "end": 628.6, "text": "Now, think about like so, there's an a while back I pointed my open claw at a hiring outreach."}, {"id": "s128", "start": 628.6, "end": 630.28, "text": "Mass emails to candidates."}, {"id": "s129", "start": 630.28, "end": 631.32, "text": "It ran."}, {"id": "s130", "start": 631.32, "end": 634.88, "text": "It sent tons of emails."}, {"id": "s131", "start": 634.88, "end": 637.56, "text": "Uh some of you might have also gotten it from my open claw."}, {"id": "s132", "start": 637.56, "end": 640.04, "text": "It did exactly what I told it to do."}, {"id": "s133", "start": 640.04, "end": 641.92, "text": "It was also a disaster."}, {"id": "s134", "start": 641.92, "end": 646.12, "text": "The kind that ends up on Twitter with my name on top of it."}, {"id": "s135", "start": 646.12, "end": 651.0, "text": "Uh yeah, I think you can see a you Karan Vaidya."}, {"id": "s136", "start": 651.0, "end": 654.44, "text": "Uh I was not the happiest when it happened."}, {"id": "s137", "start": 654.44, "end": 658.48, "text": "And here's the thing, every check from the past slide would have passed."}, {"id": "s138", "start": 658.48, "end": 660.92, "text": "The emails were valid, their addresses were real."}, {"id": "s139", "start": 660.92, "end": 664.24, "text": "It actually got to real people who posted."}, {"id": "s140", "start": 664.24, "end": 670.68, "text": "Uh there was no best tool in the world to actually uh question what really mattered."}, {"id": "s141", "start": 670.68, "end": 673.32, "text": "Should this have gone at all?"}, {"id": "s142", "start": 673.32, "end": 675.08, "text": "That's the gap in code."}, {"id": "s143", "start": 675.08, "end": 677.32, "text": "These tests tell you what's wrong and right."}, {"id": "s144", "start": 677.32, "end": 681.12, "text": "Here, the internet told me that I was wrong."}, {"id": "s145", "start": 681.8389999999999, "end": 684.56, "text": "So, we build the checks that are missing."}, {"id": "s146", "start": 684.56, "end": 688.08, "text": "The problem in the above thread was wasn't the outreach was wrong."}, {"id": "s147", "start": 688.08, "end": 691.48, "text": "It was that it went out before even I getting to know."}, {"id": "s148", "start": 691.48, "end": 693.32, "text": "So, the fix is simple."}, {"id": "s149", "start": 693.32, "end": 695.44, "text": "Catch before it's even real."}, {"id": "s150", "start": 695.44, "end": 697.24, "text": "So, we have two ways in which we do that."}, {"id": "s151", "start": 697.24, "end": 703.56, "text": "One, before the agent senses anything, it checks the draft emails that I've sent before."}, {"id": "s152", "start": 703.56, "end": 707.44, "text": "If it matches my style, if it matches the goodness that I like."}, {"id": "s153", "start": 707.44, "end": 719.36, "text": "The second, before doing anything destructive in the real world scenario, we provide the agents and boxes, which mock the real tools, and they can send they can do action on top of these sandboxes."}, {"id": "s154", "start": 719.36, "end": 727.92, "text": "So, instead of the blast radius hitting the real world, it will hit a sandbox, and then I can review it before the agent does the real thing."}, {"id": "s155", "start": 727.92, "end": 731.56, "text": "Put those two together, and you've got something knowledge work never had."}, {"id": "s156", "start": 731.56, "end": 736.24, "text": "A way for agent to check its own work before it's even real."}, {"id": "s157", "start": 736.24, "end": 740.12, "text": "It can finally close its own loop instead of stopping to wait for you."}, {"id": "s158", "start": 740.12, "end": 749.0, "text": "And with all that, you can trust the action it is taking without you getting bombarded with the tweets that I shoot."}, {"id": "s159", "start": 749.32, "end": 752.12, "text": "Next thing the agent needs is governance."}, {"id": "s160", "start": 752.12, "end": 754.72, "text": "Building trust is controlling what the agent can do."}, {"id": "s161", "start": 754.72, "end": 758.24, "text": "Putting up the right walls around the agents."}, {"id": "s162", "start": 759.72, "end": 764.16, "text": "In code, this is mostly solved and like has multiple layers."}, {"id": "s163", "start": 764.16, "end": 769.12, "text": "The agent can do whatever it wants on its own branch, but it can't merge to main."}, {"id": "s164", "start": 769.12, "end": 772.32, "text": "A human reviewer sits in between it merging to main."}, {"id": "s165", "start": 772.32, "end": 774.0, "text": "The critical files have code owners."}, {"id": "s166", "start": 774.0, "end": 777.96, "text": "So, whenever it touches one of them, the right people are getting involved."}, {"id": "s167", "start": 777.96, "end": 780.36, "text": "Uh we use agents to ship to preview deployments."}, {"id": "s168", "start": 780.36, "end": 784.24, "text": "Never let it touch the production deployments, so we control it there."}, {"id": "s169", "start": 784.24, "end": 792.72, "text": "The governance is not a single gate, but multiple of them, and each varying its sizes depending on the blast radius it exposes."}, {"id": "s170", "start": 792.72, "end": 795.88, "text": "None of it slows the agent down in safe paths."}, {"id": "s171", "start": 795.88, "end": 799.64, "text": "Just prevents it from up production."}, {"id": "s172", "start": 799.64, "end": 805.8, "text": "And the tighter those lines are, the more you can trust the agent and let it go berserk."}, {"id": "s173", "start": 806.2, "end": 807.6, "text": "You probably saw this one."}, {"id": "s174", "start": 807.6, "end": 816.08, "text": "The director of alignment at Meta Superintelligence Lab hooked up an agent to its email and it started destroying its email, deleting a lot of them."}, {"id": "s175", "start": 816.08, "end": 817.48, "text": "She told it to stop."}, {"id": "s176", "start": 817.48, "end": 818.52, "text": "It kept going."}, {"id": "s177", "start": 818.52, "end": 821.96, "text": "Finally, she had to run to a physical machine to stop it."}, {"id": "s178", "start": 821.96, "end": 825.92, "text": "But by then, 200 emails had actually vanished."}, {"id": "s179", "start": 825.92, "end": 830.84, "text": "She had told it beforehand in prompt to confirm before acting on such cases."}, {"id": "s180", "start": 830.84, "end": 834.28, "text": "But that was just a prompt which probably would have compacted away."}, {"id": "s181", "start": 834.28, "end": 843.48, "text": "And if someone whose sole job is AI alignment can't prompt it the agent correctly, then probably none of us can."}, {"id": "s182", "start": 843.48, "end": 848.52, "text": "And that's the real reason these agents are so hard to trust."}, {"id": "s183", "start": 848.52, "end": 852.72, "text": "Not because they're worse than the coding agents, but because there's no wall around them."}, {"id": "s184", "start": 852.72, "end": 857.2, "text": "In code, the wall was already built into the system while we were developing earlier."}, {"id": "s185", "start": 857.2, "end": 859.92, "text": "Knowledge work also has some bits and pieces here and there."}, {"id": "s186", "start": 859.92, "end": 863.32, "text": "For example, Gmail has scopes, Salesforce has permission levels."}, {"id": "s187", "start": 863.32, "end": 872.04, "text": "But it's so scattered all over the place that it's very hard to have real control and mostly people end up doing it via prompting."}, {"id": "s188", "start": 872.04, "end": 874.68, "text": "And prompting is fragile."}, {"id": "s189", "start": 874.68, "end": 876.88, "text": "The agent will find those loopholes."}, {"id": "s190", "start": 876.88, "end": 878.48, "text": "Things will get compacted away."}, {"id": "s191", "start": 878.48, "end": 887.24, "text": "And at scale, uh one of these fence will break and you'll also be in the same condition where 200 of your important emails are vanishing."}, {"id": "s192", "start": 887.24, "end": 889.44, "text": "So, what would actually stop it?"}, {"id": "s193", "start": 889.44, "end": 897.96, "text": "Not like a better instruction, but wall that the agent can't cross even if it forgot that wall existed."}, {"id": "s194", "start": 900.96, "end": 903.72, "text": "So, we build these walls in two layers."}, {"id": "s195", "start": 903.72, "end": 909.04, "text": "The first layer is deterministic, control over what the agent can reach, what it has access to."}, {"id": "s196", "start": 909.04, "end": 913.04, "text": "Um a hiring agent can probably just read the emails."}, {"id": "s197", "start": 913.04, "end": 917.6, "text": "A support agent can create a draft email, but not actually send it."}, {"id": "s198", "start": 917.6, "end": 919.92, "text": "The boundary lives outside these agents."}, {"id": "s199", "start": 919.92, "end": 924.36, "text": "It can't be argued with by the agent or forgotten or compacted."}, {"id": "s200", "start": 924.36, "end": 928.84, "text": "Use instruction failed because it lived in agent's memory in the prompt."}, {"id": "s201", "start": 928.84, "end": 930.48, "text": "This doesn't."}, {"id": "s202", "start": 930.48, "end": 936.32, "text": "Uh but access alone wouldn't have saved her because she was actually building an email agent."}, {"id": "s203", "start": 936.32, "end": 939.8, "text": "So it definitely needed access to that email."}, {"id": "s204", "start": 939.8, "end": 949.0, "text": "Um the other thing that we do is provide policies, which is you can define natural language policies of what the agent can do even with those accesses."}, {"id": "s205", "start": 949.0, "end": 953.76, "text": "So things like never delete more than 10 emails without my permission."}, {"id": "s206", "start": 953.76, "end": 956.88, "text": "Never email outside a particular domain."}, {"id": "s207", "start": 956.88, "end": 960.76, "text": "Rules that with even those access control the behavior."}, {"id": "s208", "start": 960.76, "end": 969.36, "text": "So between those two things, one layer controls the what the agent can reach and the other layer can control the behavior with what it can do with that reach."}, {"id": "s209", "start": 969.36, "end": 971.76, "text": "Together, it's real governance for the agent."}, {"id": "s210", "start": 971.76, "end": 976.88, "text": "Not asking the agent to behave, but enforcing it what it can do."}, {"id": "s211", "start": 978.32, "end": 980.44, "text": "The last pillar, reversibility."}, {"id": "s212", "start": 980.44, "end": 985.88, "text": "And this is the one of the Uh this is where we reach when things go wrong."}, {"id": "s213", "start": 985.88, "end": 987.92, "text": "Can I undo it?"}, {"id": "s214", "start": 987.92, "end": 990.92, "text": "In code, you almost always can."}, {"id": "s215", "start": 990.92, "end": 992.28, "text": "Every change is recorded."}, {"id": "s216", "start": 992.28, "end": 993.92, "text": "Things can be walked back."}, {"id": "s217", "start": 993.92, "end": 1000.4, "text": "You can get revert the last commit or you can get bisect to the commit that broke your production and revert it."}, {"id": "s218", "start": 1000.4, "end": 1004.4, "text": "Um now Like I'm not saying it's good."}, {"id": "s219", "start": 1004.4, "end": 1006.0, "text": "I I won't pretend like that."}, {"id": "s220", "start": 1006.0, "end": 1010.2, "text": "If things go in production and break, it's always bad, but it's still not permanent."}, {"id": "s221", "start": 1010.2, "end": 1011.92, "text": "You can still walk back from it."}, {"id": "s222", "start": 1011.92, "end": 1022.96, "text": "And that's what gives you confidence to let your agents cook and let them do some magic because even if they they break the things, you can you have a pathway back."}, {"id": "s223", "start": 1023.28, "end": 1025.439, "text": "For knowledge work, there is no undo button."}, {"id": "s224", "start": 1025.439, "end": 1027.72, "text": "Things Like think about use inbox."}, {"id": "s225", "start": 1027.72, "end": 1029.56, "text": "Those 200 emails are gone."}, {"id": "s226", "start": 1029.56, "end": 1030.48, "text": "They have vanished."}, {"id": "s227", "start": 1030.48, "end": 1032.04, "text": "That's the normal case, by the way."}, {"id": "s228", "start": 1032.04, "end": 1035.439, "text": "The disaster case is a sent email, which you can't revert back."}, {"id": "s229", "start": 1035.439, "end": 1037.199, "text": "A wire that has already been made."}, {"id": "s230", "start": 1037.199, "end": 1038.88, "text": "So you can't get that money back."}, {"id": "s231", "start": 1038.88, "end": 1040.92, "text": "A deleted record, gone forever."}, {"id": "s232", "start": 1040.92, "end": 1045.0, "text": "Most actions actually in knowledge work don't have an undo button."}, {"id": "s233", "start": 1045.0, "end": 1047.28, "text": "And that changes the whole equation."}, {"id": "s234", "start": 1047.28, "end": 1049.16, "text": "Uh that changes the blast radius."}, {"id": "s235", "start": 1049.16, "end": 1051.88, "text": "Uh with code, you can trust the agent after the fact."}, {"id": "s236", "start": 1051.88, "end": 1054.8, "text": "Let it run, check the result, undo if it's wrong."}, {"id": "s237", "start": 1054.8, "end": 1056.24, "text": "Out here, there's no coming back."}, {"id": "s238", "start": 1056.24, "end": 1060.84, "text": "The only place left for you is to is to trust before the agent acts."}, {"id": "s239", "start": 1060.84, "end": 1064.88, "text": "That's what makes these agents feel dangerous in a way coding agents never did."}, {"id": "s240", "start": 1064.88, "end": 1066.56, "text": "It's not that they fail often."}, {"id": "s241", "start": 1066.56, "end": 1070.0, "text": "It's that out there failure is forever."}, {"id": "s242", "start": 1070.0, "end": 1075.2, "text": "So, either you completely go up front or never let it act."}, {"id": "s243", "start": 1075.4, "end": 1079.28, "text": "Let me be honest, reversibility is the hardest to replicate in knowledge work."}, {"id": "s244", "start": 1079.28, "end": 1084.72, "text": "Real undo, the way it exists for code, probably doesn't exist in all the scenarios in knowledge work."}, {"id": "s245", "start": 1084.72, "end": 1089.64, "text": "But we have some scenarios where undo exists and we call them."}, {"id": "s246", "start": 1089.64, "end": 1091.8, "text": "So, let's say you add a label."}, {"id": "s247", "start": 1091.8, "end": 1094.08, "text": "You can remove the label afterwards."}, {"id": "s248", "start": 1094.08, "end": 1105.64, "text": "But for actions that you can't undo at all, like hard deletes that disappear the emails from your inbox, we again provide a sandbox where the agent can do the thing first in the sandbox"}, {"id": "s249", "start": 1105.64, "end": 1110.08, "text": "and you can review it and then actually goes into the production environment."}, {"id": "s250", "start": 1110.08, "end": 1111.56, "text": "None of it touches the real world."}, {"id": "s251", "start": 1111.56, "end": 1113.2, "text": "That's the whole flip."}, {"id": "s252", "start": 1113.2, "end": 1115.68, "text": "In code, you can undo the mistake after it happens."}, {"id": "s253", "start": 1115.68, "end": 1117.6, "text": "Here, you catch it before it does."}, {"id": "s254", "start": 1117.6, "end": 1121.04, "text": "Different timing, same result, a mistake that won't stick."}, {"id": "s255", "start": 1121.04, "end": 1122.16, "text": "Think about you again."}, {"id": "s256", "start": 1122.16, "end": 1125.4, "text": "The actions we could reverse, we would give it a reverse button."}, {"id": "s257", "start": 1125.4, "end": 1132.84, "text": "The ones we couldn't, the agent would hit the sandbox first and she would be notified, your 1,200 emails are going to get deleted."}, {"id": "s258", "start": 1132.84, "end": 1135.04, "text": "Do you want it?"}, {"id": "s259", "start": 1135.04, "end": 1137.24, "text": "It's not done yet."}, {"id": "s260", "start": 1137.24, "end": 1147.12, "text": "Uh but across billions of actions that we're going through, we are learning on the way which ones can be walked back, which ones can't, and preparing the sandbox accordingly."}, {"id": "s261", "start": 1149.24, "end": 1151.56, "text": "If you take one thing away today, take this."}, {"id": "s262", "start": 1151.56, "end": 1154.04, "text": "For 2 years, the model was the bottleneck."}, {"id": "s263", "start": 1154.04, "end": 1157.2, "text": "So, everybody was racing towards better and better model."}, {"id": "s264", "start": 1157.2, "end": 1163.12, "text": "Now, the models have gotten good enough where software engineering is 100% autonomous."}, {"id": "s265", "start": 1163.12, "end": 1166.04, "text": "But, now everything else is the bottleneck."}, {"id": "s266", "start": 1166.04, "end": 1176.08, "text": "This the same model that writes your code can also do your hiring, sales, and other knowledge work."}, {"id": "s267", "start": 1176.08, "end": 1179.44, "text": "Um but, it right now it's working blind."}, {"id": "s268", "start": 1179.44, "end": 1184.64, "text": "No history, no context, no ways to verify, no guardrails, no undo."}, {"id": "s269", "start": 1184.64, "end": 1188.16, "text": "So, the bottleneck has moved."}, {"id": "s270", "start": 1188.28, "end": 1191.0, "text": "Now, it's infrastructure that nobody has yet built."}, {"id": "s271", "start": 1191.0, "end": 1194.04, "text": "And that's what we are building at Composio."}, {"id": "s272", "start": 1195.16, "end": 1196.4, "text": "Yeah."}, {"id": "s273", "start": 1196.4, "end": 1199.64, "text": "We are powering billion plus tool calls in total."}, {"id": "s274", "start": 1199.64, "end": 1202.44, "text": "Uh 300 million tool calls happening every month."}, {"id": "s275", "start": 1202.44, "end": 1208.0, "text": "And if you are building an agent, just point it to Composio and see the magic happen for knowledge work."}, {"id": "s276", "start": 1208.0, "end": 1213.72, "text": "And if you want to build the future of substrate of AI agents, then please come to me."}, {"id": "s277", "start": 1213.72, "end": 1217.4, "text": "We are definitely hiring, and there's a lot lot left to do."}, {"id": "s278", "start": 1217.4, "end": 1219.4, "text": "The models will keep getting better."}, {"id": "s279", "start": 1219.4, "end": 1221.24, "text": "The bottleneck won't be models."}, {"id": "s280", "start": 1221.24, "end": 1222.76, "text": "It will be the things around it."}, {"id": "s281", "start": 1222.76, "end": 1225.0, "text": "Thank you."}]}, {"id": "y2W4FNAuPEA", "title": "Deep dive on LLM Inference at Scale — Harshul Jain, Audible & Tanmay Sah, Independent AI Researcher", "channel": "AI Engineer", "duration": 5292, "upload_date": null, "url": "https://www.youtube.com/watch?v=y2W4FNAuPEA", "api": "/api/talks/y2W4FNAuPEA.json", "summary_url": "/#y2W4FNAuPEA", "transcript": {"html": "/transcripts/y2W4FNAuPEA.html", "txt": "/transcripts/y2W4FNAuPEA.txt", "vtt": "/transcripts/y2W4FNAuPEA.vtt"}, "sentences": [{"id": "s1", "start": 13.599, "end": 16.0, "text": "Uh so good afternoon everyone."}, {"id": "s2", "start": 16.0, "end": 20.32, "text": "Um my name is Hershel Jan and he is Tanisha."}, {"id": "s3", "start": 20.32, "end": 26.64, "text": "Uh and we would like to welcome you all in this two hours workshop on the LLM inference."}, {"id": "s4", "start": 26.64, "end": 41.2, "text": "Uh so the goal of this workshop is to understand this domain from the first principles uh dive deeper into it and like understand what's going on throughout the industry."}, {"id": "s5", "start": 41.44, "end": 44.48, "text": "Uh a bit of background about us."}, {"id": "s6", "start": 44.48, "end": 48.16, "text": "So I am a senior software engineer at Audible."}, {"id": "s7", "start": 48.16, "end": 62.0, "text": "uh have been building MLA data platforms for the past five years and on the sides I have been writing this opensource handbook on LLM inference and Tanme he is the"}, {"id": "s8", "start": 62.0, "end": 81.92, "text": "senior quantitative modeler at XAN cup bank corporation he recently completed his PhD and he has been actively doing research in the agent verifiers and the world models Uh so a quick show of hands here."}, {"id": "s9", "start": 81.92, "end": 86.64, "text": "Uh Vu here is like brand new to the LLM inference."}, {"id": "s10", "start": 87.2, "end": 88.32, "text": "Okay, great."}, {"id": "s11", "start": 88.32, "end": 93.119, "text": "And Vu here has like deployed these models in production."}, {"id": "s12", "start": 93.119, "end": 94.72, "text": "They have been tuning it."}, {"id": "s13", "start": 94.72, "end": 98.32, "text": "They have been serving the production traffic."}, {"id": "s14", "start": 98.72, "end": 101.119, "text": "Okay, great."}, {"id": "s15", "start": 101.119, "end": 107.2, "text": "So this workshop is targeted towards the beginner and the intermediate level."}, {"id": "s16", "start": 107.2, "end": 110.96000000000001, "text": "U and all of the slides and exercises they are in the repo."}, {"id": "s17", "start": 110.96000000000001, "end": 113.84, "text": "I will share that soon."}, {"id": "s18", "start": 115.119, "end": 118.64, "text": "Here is the quick agenda for the workshop."}, {"id": "s19", "start": 118.64, "end": 120.64, "text": "We will start with the problem statement."}, {"id": "s20", "start": 120.64, "end": 126.399, "text": "We will try to understand few of the pain points around LLM inference."}, {"id": "s21", "start": 126.399, "end": 132.16, "text": "uh then we understand what causes those pain points and build our foundations from there."}, {"id": "s22", "start": 132.16, "end": 141.36, "text": "Then we will dive into like two kind of the optimizations that we do like the model optimizations and the serving optimizations."}, {"id": "s23", "start": 141.36, "end": 158.48, "text": "uh and then we start learning about different serving engines that are available to deploy our LLM inference solutions in production and we will showcase some benchmarks and the decision chart on like which engine to use."}, {"id": "s24", "start": 160.239, "end": 160.72, "text": "Cool."}, {"id": "s25", "start": 160.72, "end": 167.519, "text": "So to understand the pain points first we need to know what is like LLM inference."}, {"id": "s26", "start": 167.519, "end": 171.12, "text": "So, and probably a lot of us already know this."}, {"id": "s27", "start": 171.12, "end": 184.08, "text": "Um, but yeah, anything that you ask your AI to do like whether it be generate a video, audio, analyze any text, uh, analyze your medical reports or like your tax bills,"}, {"id": "s28", "start": 184.08, "end": 188.08, "text": "all of that is like an LLM inference."}, {"id": "s29", "start": 188.08, "end": 194.64, "text": "And this market is like approximately $23 billion today."}, {"id": "s30", "start": 195.04, "end": 209.44, "text": "uh semi analysis recently shared that if you want to model like a Google search queries with LLMs, you need like a profit drain of like $36 billion and query cost"}, {"id": "s31", "start": 209.44, "end": 215.84, "text": "has to be less than 0.5 cents to keep your search business profitable."}, {"id": "s32", "start": 215.84, "end": 228.56, "text": "On the other hand, the business insider mentioned like your AI has to be put on diet and everyone has to start auditing and budgeting their token usage and all of this is happening."}, {"id": "s33", "start": 228.56, "end": 228.959, "text": "Why?"}, {"id": "s34", "start": 228.959, "end": 243.76, "text": "Because your hardware is limited, compute is expensive, your inference is expensive and with the growing need of like more and more AI usage, this inference cost is rising more and more."}, {"id": "s35", "start": 243.76, "end": 251.599, "text": "So this stat, it's an old stat from the open AI, but it's still it's still true."}, {"id": "s36", "start": 251.599, "end": 258.0, "text": "So if you look at the like training cost of the GPT3, it was like around $4.6 million."}, {"id": "s37", "start": 258.0, "end": 260.0, "text": "It was a one-time cost."}, {"id": "s38", "start": 260.0, "end": 277.6, "text": "But if you see the inference cost that has been like uh it's a recurring cost because it's a operating cost that scales with every user that comes in that every token that comes in every session that uh is being initiated on the like AI"}, {"id": "s39", "start": 279.52, "end": 283.36, "text": "and there are only two ways to basically counter this."}, {"id": "s40", "start": 283.36, "end": 287.919, "text": "Uh one way is you reduce your token usage."}, {"id": "s41", "start": 287.919, "end": 298.479, "text": "um alternative is you should try to optimize your inference solutions as a inference service provider for your customers and for yourself."}, {"id": "s42", "start": 298.479, "end": 306.08, "text": "And so this um we have been seeing like lot and lot of like new solutions coming out every then and now."}, {"id": "s43", "start": 306.08, "end": 317.36, "text": "Um and so the idea would be like okay we will try to build those foundations that will help us understand and evaluate like whatever ships next."}, {"id": "s44", "start": 317.36, "end": 331.44, "text": "Um so yeah to get started like we will do a quick demo like it's a short demo of like what are the different pain points around inference u and so this is the repo"}, {"id": "s45", "start": 331.44, "end": 345.52, "text": "uh I mean you can pull it or you can also open it on the GitHub uh it's called LLM inference at scale a bit of background here like four months back when I didn't knew anything on the LLM inference"}, {"id": "s46", "start": 345.52, "end": 349.52, "text": "um I started learning it I saw like lot of resources were scattered."}, {"id": "s47", "start": 349.52, "end": 356.72, "text": "So we started putting it uh like all together in one place uh so that it could benefit people."}, {"id": "s48", "start": 356.72, "end": 358.4, "text": "Um yes."}, {"id": "s49", "start": 358.4, "end": 372.8, "text": "So let me actually get out of this slideshow mode and probably go into I will go to this extended mode."}, {"id": "s50", "start": 373.12, "end": 379.199, "text": "Um okay great."}, {"id": "s51", "start": 379.199, "end": 387.84, "text": "Uh yeah so in this uh repository if you see a readme file there is like a link to the slides."}, {"id": "s52", "start": 387.84, "end": 396.0, "text": "Uh so this it will be like this folder where you have like a pptx and there is like a benchmark report in there."}, {"id": "s53", "start": 396.0, "end": 404.08, "text": "uh you can always like download it and then for the demo purposes uh we have couple of Jupyter notebooks."}, {"id": "s54", "start": 404.08, "end": 414.96, "text": "Uh we have like collaborated with Moab who are the like Google collab alternative and what they basically provide you is like a free RTX 6000 GPU."}, {"id": "s55", "start": 414.96, "end": 418.24, "text": "It's a 100 GB V RAM GPU."}, {"id": "s56", "start": 418.24, "end": 430.8, "text": "So and we have like already set up these notebooks so that it becomes easy to like experiment with and like all of the assets and everything are preset for you."}, {"id": "s57", "start": 430.8, "end": 451.039, "text": "Uh so uh we will start with like a simple demo a probably let me just see Okay."}, {"id": "s58", "start": 451.28, "end": 453.199, "text": "Um yeah."}, {"id": "s59", "start": 453.199, "end": 460.8, "text": "So when it comes to the inference, you need to do an inference on a certain model, right?"}, {"id": "s60", "start": 460.8, "end": 465.68, "text": "Uh for the workshop purposes, we are using a simple ML 7B model."}, {"id": "s61", "start": 465.68, "end": 469.599, "text": "Uh it's a small model of around 15GB in size."}, {"id": "s62", "start": 469.599, "end": 473.759, "text": "So we we are going to like load that into the GPU."}, {"id": "s63", "start": 473.759, "end": 478.15999999999997, "text": "So, and we would look like some of the GPU stats as well."}, {"id": "s64", "start": 478.15999999999997, "end": 481.84, "text": "So, we see like okay, we are working on the 6,000 Blackwell."}, {"id": "s65", "start": 481.84, "end": 488.479, "text": "Uh, and you might be thinking I'm not running the cells because I don't trust the Wi-Fi at conferences."}, {"id": "s66", "start": 488.639, "end": 489.759, "text": "So, yeah."}, {"id": "s67", "start": 489.759, "end": 496.72, "text": "So, I would probably be just going over the results uh that we kind of ran previously."}, {"id": "s68", "start": 498.479, "end": 499.36, "text": "Uh, yeah."}, {"id": "s69", "start": 499.36, "end": 503.28, "text": "So, we have like a GPU which is like 102GB."}, {"id": "s70", "start": 503.28, "end": 511.28, "text": "Uh now the first thing that comes to my mind is like what's my memory consumption looks like when I do the LLM inference."}, {"id": "s71", "start": 511.28, "end": 517.2, "text": "So I load this model uh and I see like okay I have like a 15 GB here."}, {"id": "s72", "start": 517.2, "end": 520.88, "text": "So I have roughly like 87.5GB."}, {"id": "s73", "start": 520.9590000000001, "end": 533.2, "text": "And now when I do the like inference here uh what I notice is like the more the number of inputs I pass more is the memory that I need."}, {"id": "s74", "start": 533.2, "end": 536.451, "text": "uh and it's increasing slowly but it's still increasing."}, {"id": "s75", "start": 536.451, "end": 536.64, "text": "[snorts]"}, {"id": "s76", "start": 536.64, "end": 544.399, "text": "So imagine like if you have a context length of like around 4,000 or 16,000 or 32,000 uh tokens."}, {"id": "s77", "start": 544.399, "end": 553.12, "text": "Uh so this memory could like really grow big and it you could actually get like all of those out of memory issues."}, {"id": "s78", "start": 553.12, "end": 559.04, "text": "Uh so definitely this is like your problem one like your memory increasing with the increase in tokens."}, {"id": "s79", "start": 559.04, "end": 564.0, "text": "So in form of like a simple visualization it looks like this."}, {"id": "s80", "start": 565.2, "end": 572.399, "text": "The second problem that you would see is like the time to your first token it's very very slow."}, {"id": "s81", "start": 572.399, "end": 575.92, "text": "Uh we measure it by a metric called TTFT."}, {"id": "s82", "start": 575.92, "end": 578.8, "text": "It's a short short form of it."}, {"id": "s83", "start": 578.8, "end": 593.2, "text": "uh and when you try to like measure the TTFT uh with the like input size you would see like longer the context you would see like this uh TTFT being slow."}, {"id": "s84", "start": 593.2, "end": 594.64, "text": "So now there are two problems."}, {"id": "s85", "start": 594.64, "end": 597.279, "text": "Your memory increases with the token size."}, {"id": "s86", "start": 597.279, "end": 600.8, "text": "Your TTFT increases with the token size."}, {"id": "s87", "start": 600.8, "end": 609.519, "text": "Uh sorry not the token size, the context Uh and then the third is the like throughput."}, {"id": "s88", "start": 609.519, "end": 617.04, "text": "The throughput is like how many tokens can you serve per second and then how many users can you serve per second."}, {"id": "s89", "start": 617.04, "end": 624.64, "text": "So if you take a very very vanilla implementation on your local system uh it would be like very sequential."}, {"id": "s90", "start": 624.64, "end": 632.64, "text": "So if you send like five requests all those five requests would be catered like sequentially rather than parallelly."}, {"id": "s91", "start": 632.64, "end": 641.04, "text": "Uh and so like your request basically takes more time to complete if you have like multiple users."}, {"id": "s92", "start": 641.04, "end": 643.44, "text": "So these are the like three problems."}, {"id": "s93", "start": 643.44, "end": 644.32, "text": "There is a fourth one."}, {"id": "s94", "start": 644.32, "end": 645.92, "text": "I haven't described it here."}, {"id": "s95", "start": 645.92, "end": 650.48, "text": "probably we will build that intuition as we move forward."}, {"id": "s96", "start": 650.48, "end": 657.279, "text": "Uh but let's remember like these are the three problems the memory TTFT and the throughput."}, {"id": "s97", "start": 658.16, "end": 658.64, "text": "Cool."}, {"id": "s98", "start": 658.64, "end": 663.279, "text": "Uh I will go back to the slides."}, {"id": "s99", "start": 667.68, "end": 670.16, "text": "Okay, perfect."}, {"id": "s100", "start": 675.68, "end": 679.04, "text": "Uh so it should be this."}, {"id": "s101", "start": 680.88, "end": 683.68, "text": "Uh is it visible?"}, {"id": "s102", "start": 695.12, "end": 699.279, "text": "Oh, you you need the Oh, okay."}, {"id": "s103", "start": 699.279, "end": 700.399, "text": "Workshop."}, {"id": "s104", "start": 700.399, "end": 702.399, "text": "Okay."}, {"id": "s105", "start": 707.6, "end": 708.079, "text": "Yeah."}, {"id": "s106", "start": 708.079, "end": 719.44, "text": "So, within that repository, if you see a workshop folder, you see that readme and then the readme has all the links, the slides and the demos."}, {"id": "s107", "start": 724.959, "end": 727.76, "text": "Uh, does that work?"}, {"id": "s108", "start": 729.68, "end": 732.079, "text": "Okay, perfect."}, {"id": "s109", "start": 736.399, "end": 737.04, "text": "Okay."}, {"id": "s110", "start": 737.04, "end": 749.92, "text": "uh so let's start working through the foundations like let's start understanding uh what are the reasons behind those pain points and for that like we have to look at this inference pipeline"}, {"id": "s111", "start": 749.92, "end": 767.04, "text": "um so we get like an input text uh that text could have like any number of words you convert those into the tokens so for simplicity you can assume one word equal to one token"}, {"id": "s112", "start": 767.04, "end": 782.399, "text": "uh then you kind of convert them into like the embeddings and then you send it to the like transformers uh like there are 32 layers of transformers but that's specific to the Mistl 7B different models have different kind number of layers"}, {"id": "s113", "start": 782.399, "end": 793.04, "text": "uh and then you generate a new token and that token basically goes back to the input then you generate another token and that keeps on going now in this entire pipeline"}, {"id": "s114", "start": 793.04, "end": 798.8, "text": "you would see like 95% of your compute is like taken by these transformer layers."}, {"id": "s115", "start": 798.8, "end": 804.399, "text": "So it's worth looking at like what goes within this transformer layer."}, {"id": "s116", "start": 805.12, "end": 808.959, "text": "Within this transformer layer you would have like more layers."}, {"id": "s117", "start": 808.959, "end": 815.92, "text": "You have like a normalization layer, you have an attention layer, you have a feed forward layer and all."}, {"id": "s118", "start": 815.92, "end": 820.56, "text": "And attention layer is the one I think that has been very very famous."}, {"id": "s119", "start": 820.56, "end": 822.48, "text": "Attention is all you need paper."}, {"id": "s120", "start": 822.48, "end": 824.72, "text": "I think that's very well known."}, {"id": "s121", "start": 824.72, "end": 834.56, "text": "So attention is the most compute intensive layer and we need to understand what goes within that attention layer."}, {"id": "s122", "start": 834.56, "end": 837.04, "text": "So what does attention do?"}, {"id": "s123", "start": 837.04, "end": 846.72, "text": "Attention uh so if you have an input text it needs to find the attention scores of every token with respect to all of the previous tokens."}, {"id": "s124", "start": 846.72, "end": 854.88, "text": "And to do that what it needs to do is like it needs to project every token into like a key query and the value space."}, {"id": "s125", "start": 854.88, "end": 867.12, "text": "So in like in a simpler terms just u understand this like if you have 10 tokens then it needs like the 10 different query key and the value vectors."}, {"id": "s126", "start": 867.12, "end": 871.44, "text": "If there are 100 tokens you would need 100 key and the value vectors."}, {"id": "s127", "start": 871.44, "end": 875.36, "text": "If there are thousand tokens you would need thousand key value vectors."}, {"id": "s128", "start": 875.36, "end": 882.16, "text": "And so like your number of the key and the value vectors they increase as you increase the input size."}, {"id": "s129", "start": 884.72, "end": 894.399, "text": "Uh and if you calculate the like KV size per token uh for a mist 7B it comes out to be 131 KV."}, {"id": "s130", "start": 894.399, "end": 904.8, "text": "Uh this is because like uh you have two vectors K and V. You have to multiply the size uh one vector is like 128 dimensions."}, {"id": "s131", "start": 904.8, "end": 917.519, "text": "you have to multi multiply it by 32 transformer layers and then you have to multiply it by the KV heads for ML 7B it's gate KV heads it's not like 32"}, {"id": "s132", "start": 917.519, "end": 931.44, "text": "because it uses a different kind of an attention mechanism u which we will talk about for sure but yeah so the KV size per token is like your 131 KB"}, {"id": "s133", "start": 931.44, "end": 937.44, "text": "now imagine if you have 4K context uh So that size becomes like half a GB."}, {"id": "s134", "start": 937.44, "end": 942.88, "text": "Uh if you do like 16k context that size becomes 2.1 GB."}, {"id": "s135", "start": 942.88, "end": 958.8, "text": "Uh now multiplay by the users like assume you can serve multiple users together at the same time within that GPU you could have like 42GB with a 4K context and 80 users."}, {"id": "s136", "start": 958.8, "end": 965.04, "text": "Um and if your GPU is only like let's say 24GB, you are already running out of the memory."}, {"id": "s137", "start": 965.04, "end": 969.68, "text": "So you cannot serve that many users with that many context."}, {"id": "s138", "start": 972.32, "end": 975.279, "text": "To visualize this, look at a GPU memory."}, {"id": "s139", "start": 975.279, "end": 979.8389999999999, "text": "So the GPU memory has like a model weights which are pretty fixed."}, {"id": "s140", "start": 979.8389999999999, "end": 981.759, "text": "These are pre-trained weights."}, {"id": "s141", "start": 981.759, "end": 985.279, "text": "Uh there is like an overhead that is also fixed."}, {"id": "s142", "start": 985.279, "end": 1001.759, "text": "that also like that changes but it does not change that much u overall you can assume it's fixed and then there is like a leftover memory so this leftover memory is what being used by your KB me like key and the value vectors"}, {"id": "s143", "start": 1001.759, "end": 1017.04, "text": "so assume like you have a one user you can only serve that many key and the value vectors or that many tokens which can like fit in this entire 80GB"}, {"id": "s144", "start": 1017.04, "end": 1021.92, "text": "uh like memory that is left."}, {"id": "s145", "start": 1022.959, "end": 1028.559, "text": "Uh so we can show this with a simple demo too."}, {"id": "s146", "start": 1028.559, "end": 1041.28, "text": "Uh okay, let me Okay, great."}, {"id": "s147", "start": 1045.6, "end": 1051.12, "text": "Uh, let me see if I can actually run this."}, {"id": "s148", "start": 1051.52, "end": 1058.48, "text": "What probably?"}, {"id": "s149", "start": 1058.799, "end": 1062.16, "text": "Where the heck is this happening?"}, {"id": "s150", "start": 1069.84, "end": 1072.24, "text": "Okay, great."}, {"id": "s151", "start": 1072.64, "end": 1073.12, "text": "Yeah."}, {"id": "s152", "start": 1073.12, "end": 1077.28, "text": "So you would see like the GPU is attached."}, {"id": "s153", "start": 1087.6, "end": 1094.559, "text": "So here we are just trying to confirm the like memory based on the maths and based on the intuition that we have built."}, {"id": "s154", "start": 1094.559, "end": 1103.28, "text": "So the model memory is like let's say if you have a 7 billion parameters you are doing a 16 bit precision your total memory comes out to be 14.6"}, {"id": "s155", "start": 1103.28, "end": 1108.16, "text": "GB with you can basically verify that with the maths."}, {"id": "s156", "start": 1108.16, "end": 1113.28, "text": "So if you do all that math that comes out to be the 14.6GB."}, {"id": "s157", "start": 1113.919, "end": 1117.919, "text": "Uh now comes the KVK and the KV size."}, {"id": "s158", "start": 1117.919, "end": 1122.559, "text": "So this KV size is like your 131 KB per token."}, {"id": "s159", "start": 1122.559, "end": 1128.799, "text": "Uh and if you do that maths and you try to like visualize this."}, {"id": "s160", "start": 1129.232, "end": 1131.232, "text": "[sighs]"}, {"id": "s161", "start": 1132.16, "end": 1134.559, "text": "Oh, sure."}, {"id": "s162", "start": 1140.64, "end": 1142.64, "text": "Wait."}, {"id": "s163", "start": 1143.84, "end": 1145.039, "text": "Okay."}, {"id": "s164", "start": 1145.039, "end": 1149.52, "text": "And then let's just visualize this."}, {"id": "s165", "start": 1149.919, "end": 1150.32, "text": "Okay."}, {"id": "s166", "start": 1150.32, "end": 1151.84, "text": "Great."}, {"id": "s167", "start": 1151.84, "end": 1155.44, "text": "Uh yeah so this is the like a memory chart."}, {"id": "s168", "start": 1155.44, "end": 1161.679, "text": "So if you see like as your context increases your memory keeps increasing."}, {"id": "s169", "start": 1161.679, "end": 1169.039, "text": "Then another thing to realize is like as your users increase uh then also your memory increases."}, {"id": "s170", "start": 1169.039, "end": 1180.16, "text": "So if you want to serve like 160 users uh on a GPU you can support like uh you can only support like a lesser context length."}, {"id": "s171", "start": 1180.16, "end": 1195.52, "text": "So there is always a tradeoff between what context length you can serve versus how much cost you can save by like putting your multiple uh users or the concurrent users into like a single GPU."}, {"id": "s172", "start": 1195.52, "end": 1203.6, "text": "So you have to always take that tradeoff and and we will go through that like uh in couple of more slides."}, {"id": "s173", "start": 1206.32, "end": 1209.28, "text": "Uh can you repeat please?"}, {"id": "s174", "start": 1214.4, "end": 1218.16, "text": "Uh I'm sorry I'm cannot hear you."}, {"id": "s175", "start": 1224.88, "end": 1226.88, "text": "Yeah."}, {"id": "s176", "start": 1233.2, "end": 1235.039, "text": "Cool."}, {"id": "s177", "start": 1235.039, "end": 1236.4, "text": "Uh okay."}, {"id": "s178", "start": 1236.4, "end": 1237.6, "text": "Great."}, {"id": "s179", "start": 1237.6, "end": 1241.039, "text": "So let me pull back."}, {"id": "s180", "start": 1241.12, "end": 1243.44, "text": "So that was like memory."}, {"id": "s181", "start": 1243.44, "end": 1254.24, "text": "Uh we need to understand uh why we had like uh slower time to first token uh when we increase the context length."}, {"id": "s182", "start": 1254.24, "end": 1261.6, "text": "So for that like we need to understand the two phases of inference and those phases are like the prefill and the decode phase."}, {"id": "s183", "start": 1261.6, "end": 1266.96, "text": "I think you would all seen like a lot of articles but we just wanted to explain it."}, {"id": "s184", "start": 1266.96, "end": 1281.44, "text": "Uh so when you send like a lot of uh like when you send these input tokens what you want to do is uh you want to build those key and the value vectors that I mentioned for all the tokens."}, {"id": "s185", "start": 1281.44, "end": 1287.76, "text": "Then you want to compute the attention scores of every token with respect to the previous token."}, {"id": "s186", "start": 1287.76, "end": 1298.799, "text": "All this operation that you do it's a very very metricsh heavy uh it's a very very compute heavy operation and we all know like the GPUs they are like"}, {"id": "s187", "start": 1298.799, "end": 1314.08, "text": "very well suited for a heavy compute workload so we call like a prefill to be like a compute bound uh and it does take some time to complete so whatever time that this phase takes to complete"}, {"id": "s188", "start": 1314.08, "end": 1323.679, "text": "that's your time to the first token So if if you have like a more input tokens, you have to generate more key value vectors."}, {"id": "s189", "start": 1323.679, "end": 1332.559, "text": "You have to do lot more attention math and because of that your TTFT becomes more more slower."}, {"id": "s190", "start": 1332.64, "end": 1341.12, "text": "Where is if once you generate one token you need to keep doing this to generate another tokens sequentially one after another."}, {"id": "s191", "start": 1341.12, "end": 1354.559, "text": "But in that process every time you have to build the key and the value vectors of all the previous tokens which is same as prefill like you were building key value vectors there also here also"}, {"id": "s192", "start": 1354.559, "end": 1368.559, "text": "but in decode phase you are only computing the attention math for the new token and that is why it's a very less it's lesser compute oriented and it's also called as memory bound."}, {"id": "s193", "start": 1368.559, "end": 1373.28, "text": "We will see it shortly why it's called as memory bound."}, {"id": "s194", "start": 1374.96, "end": 1380.799, "text": "So in a classic timeline you would see prefill and decode phase like this."}, {"id": "s195", "start": 1380.799, "end": 1393.76, "text": "So time taken by prefill that's your time to first token and then your time taken by every decode step that's your uh basically your inter token latency."}, {"id": "s196", "start": 1393.76, "end": 1403.6, "text": "So that's like the fourth metric uh that you need to worry about like what's the time being taken by your decode step."}, {"id": "s197", "start": 1405.76, "end": 1407.2, "text": "Okay, cool."}, {"id": "s198", "start": 1407.2, "end": 1418.88, "text": "Uh now why why does the like decode step or why does decode takes time and why it's being called as like a memory bound operation?"}, {"id": "s199", "start": 1418.88, "end": 1420.96, "text": "Let's try to understand that."}, {"id": "s200", "start": 1420.96, "end": 1428.64, "text": "uh to understand that we need to look at how the metrics map basically works on the GPU on a high level."}, {"id": "s201", "start": 1428.64, "end": 1431.12, "text": "So GPU has two kind of memories."}, {"id": "s202", "start": 1431.12, "end": 1433.36, "text": "You have a high bandwidth memory."}, {"id": "s203", "start": 1433.36, "end": 1436.48, "text": "You have a shared memory."}, {"id": "s204", "start": 1436.48, "end": 1442.24, "text": "So the high bandwidth memory is a larger size but a lower me like lower bandwidth."}, {"id": "s205", "start": 1442.24, "end": 1449.52, "text": "By lower bandwidth I mean like you can transfer data out of it at a lower rate compared to the shared memory."}, {"id": "s206", "start": 1449.52, "end": 1454.559, "text": "So the shared memory is smaller in size but it has a very very high bandwidth."}, {"id": "s207", "start": 1454.559, "end": 1459.44, "text": "Uh that means you can transfer data in and out of it with a very first thing."}, {"id": "s208", "start": 1459.44, "end": 1471.039, "text": "So when a when you have to do a metric math so you have to pick the data in chunks from the high bandwidth memory you have to put it into the shared memory."}, {"id": "s209", "start": 1471.039, "end": 1476.72, "text": "Do that math write back the result into the high bandwidth memory."}, {"id": "s210", "start": 1477.84, "end": 1490.559, "text": "uh for the prefill phase when you have to do this you have to do this matrix math only once but for the decode phase you have to do this metric"}, {"id": "s211", "start": 1490.559, "end": 1509.76, "text": "math uh like uh again and again because you're generating each and every token sequentially and so like you it doesn't matter like how fast is your decode because now you can transfer your data out of the"}, {"id": "s212", "start": 1509.76, "end": 1523.52, "text": "high bandwidth memory into the S shared memory at a certain speed because you are limited by the high bandwidth memory bandwidth speed and so that governs your like token sealing like"}, {"id": "s213", "start": 1523.52, "end": 1529.679, "text": "at what rate can you actually generate tokens out of the decode step."}, {"id": "s214", "start": 1532.559, "end": 1543.279, "text": "If you look at this in the roof line plot uh so there is a left section which is called to be a memory bound."}, {"id": "s215", "start": 1543.279, "end": 1547.76, "text": "Mathematically it's governed by the arithmetic intensity."}, {"id": "s216", "start": 1547.76, "end": 1555.44, "text": "Arithmetic intensity is the number of flip-flop operations that you perform per bite of data being transferred."}, {"id": "s217", "start": 1555.44, "end": 1574.24, "text": "So for the decode step uh decode step since you are transferring lot of data like the key and the value vectors of the all the previous tokens the model weights but you are doing the like less computation because you're computing attention math for only one token."}, {"id": "s218", "start": 1574.24, "end": 1590.48, "text": "Uh so it's arithmetic intensity is very low but for a prefill phase you are transferring the data once but then like you are doing this heavy computation and so it's arithmetic intensity is very high."}, {"id": "s219", "start": 1590.48, "end": 1602.08, "text": "So now you know like in terms of mathematics like why the computer like why the arithmetic intensity of prefill is very high compared to your decor."}, {"id": "s220", "start": 1603.44, "end": 1603.46, "text": "Uh"}, {"id": "s221", "start": 1603.46, "end": 1604.159, "text": "[snorts]"}, {"id": "s222", "start": 1604.159, "end": 1610.32, "text": "okay so this is like another small small demo."}, {"id": "s223", "start": 1610.32, "end": 1616.32, "text": "Uh every time I have to Okay."}, {"id": "s224", "start": 1617.679, "end": 1620.0, "text": "Okay, great."}, {"id": "s225", "start": 1620.0, "end": 1623.12, "text": "I hope this is already running."}, {"id": "s226", "start": 1623.12, "end": 1626.88, "text": "So yeah, again we are loading the model."}, {"id": "s227", "start": 1627.52, "end": 1630.0, "text": "Now this is the like the prefill cost."}, {"id": "s228", "start": 1630.0, "end": 1641.279, "text": "So what we are basically doing is uh we are getting the like um the input uh text and then we are trying to generate this um the prefill step"}, {"id": "s229", "start": 1641.279, "end": 1642.799, "text": "the amount of time it takes."}, {"id": "s230", "start": 1642.799, "end": 1649.44, "text": "We see like as we increase the like size of the input tokens this prefill is increasing."}, {"id": "s231", "start": 1649.44, "end": 1657.12, "text": "So you and this is the reason why your TDF increases and then like your decode time."}, {"id": "s232", "start": 1657.12, "end": 1661.919, "text": "So the decode time is like on average it stays about the same."}, {"id": "s233", "start": 1661.919, "end": 1670.799, "text": "Uh and so if it is like assuming like you ignore the like cold start your decode time is like approximately around the average line."}, {"id": "s234", "start": 1670.799, "end": 1677.279, "text": "it it it it is still impacted by like u the input size."}, {"id": "s235", "start": 1677.279, "end": 1687.76, "text": "It's not like it's a constant uh time and it is because it still needs to pull the key and the value vectors from the memory for all the previous tokens."}, {"id": "s236", "start": 1687.76, "end": 1695.919, "text": "So there is still like uh that uh basically small increase in time that you would see with the decode step."}, {"id": "s237", "start": 1695.919, "end": 1701.2, "text": "And then this is the like classic uh roof line plot."}, {"id": "s238", "start": 1701.919, "end": 1704.32, "text": "Uh okay."}, {"id": "s239", "start": 1707.12, "end": 1709.12, "text": "Presentation."}, {"id": "s240", "start": 1711.279, "end": 1712.72, "text": "Okay."}, {"id": "s241", "start": 1712.72, "end": 1713.36, "text": "Five."}, {"id": "s242", "start": 1713.36, "end": 1713.76, "text": "Okay."}, {"id": "s243", "start": 1713.76, "end": 1715.6, "text": "Great."}, {"id": "s244", "start": 1715.6, "end": 1716.799, "text": "Okay."}, {"id": "s245", "start": 1716.799, "end": 1723.84, "text": "So now now let's try to understand like uh the throughput dimension."}, {"id": "s246", "start": 1723.84, "end": 1737.52, "text": "You want to understand how many users you can actually serve and I think we saw like a diagram of the GPU memory where we saw okay there is some memory that is free for the key and the value vectors to grow."}, {"id": "s247", "start": 1737.52, "end": 1752.48, "text": "So assume like you have just a single user uh what's the total KV size that you have you can basically support it's defined by your context limit."}, {"id": "s248", "start": 1752.48, "end": 1766.32, "text": "uh the max users that you can support is like whatever is your GPU uh availability like whatever is the memory that is available in the GPU you divide it by the key and the value size per user"}, {"id": "s249", "start": 1766.32, "end": 1772.64, "text": "uh and when you do that like it comes out to be like your the concurrent users."}, {"id": "s250", "start": 1773.12, "end": 1780.32, "text": "Now assume like your GPU is fixed, your model is fixed."}, {"id": "s251", "start": 1780.32, "end": 1786.72, "text": "Uh so your KV size per token is fixed."}, {"id": "s252", "start": 1786.72, "end": 1793.36, "text": "There are only two dimensions that are left here which is context and your concurrent users."}, {"id": "s253", "start": 1793.36, "end": 1797.84, "text": "If you want to serve more concurrent users, you have to reduce the context length."}, {"id": "s254", "start": 1797.84, "end": 1802.399, "text": "If you reduce the context length, you could impact your quality."}, {"id": "s255", "start": 1802.48, "end": 1808.399, "text": "Uh so these are the two dimensions right now that we are trading off."}, {"id": "s256", "start": 1809.279, "end": 1817.52, "text": "Then if we but can you actually serve the like max number of concurrent users?"}, {"id": "s257", "start": 1817.52, "end": 1828.159, "text": "Uh in an ideal world probably not because every business has like a latency SLO that we have to meet."}, {"id": "s258", "start": 1828.159, "end": 1838.159, "text": "So if you remember like in the decode step I said the time for the decode still increases if you have more inputs."}, {"id": "s259", "start": 1838.159, "end": 1841.44, "text": "It also increases if you have more users."}, {"id": "s260", "start": 1841.44, "end": 1854.08, "text": "So ultimately uh your inter token latency also gets impacted if you have like a higher batch size and your TTF also gets impacted."}, {"id": "s261", "start": 1854.08, "end": 1858.799, "text": "So now there is a third dimension you have to worry about which is like your latency."}, {"id": "s262", "start": 1858.799, "end": 1864.48, "text": "So the three dimensions that you have is like a quality latency and the throughput."}, {"id": "s263", "start": 1864.48, "end": 1871.52, "text": "So it comes out to be like this trade-off triangle where you have to choose between the two."}, {"id": "s264", "start": 1871.52, "end": 1881.84, "text": "So for a premium chat application you would want to prioritize definitely the quality and you want to prioritize the like the latency."}, {"id": "s265", "start": 1881.84, "end": 1891.2, "text": "You would not want your users to wait infinitely for the like or like not infinitely but probably for the larger latency."}, {"id": "s266", "start": 1891.2, "end": 1905.44, "text": "You can always sacrifice the number of users you can support on the GPU and probably take that costed being more customers in form of like and and like if you consider like an agent"}, {"id": "s267", "start": 1905.44, "end": 1920.72, "text": "uh sorry the async agent workload you would want to like prioritize definitely quality and the throughput uh because these are the longunning tasks uh and you would want to like serve as many as concurrent tasks."}, {"id": "s268", "start": 1920.72, "end": 1925.279, "text": "fast as possible but with a very very higher quality."}, {"id": "s269", "start": 1927.84, "end": 1939.039, "text": "And often like we think like okay if the GPU is like a very expensive GPU uh that might not be a good fit for us."}, {"id": "s270", "start": 1939.039, "end": 1946.72, "text": "Uh but it turns out that could actually serve you the lowest cost per million uh tokens."}, {"id": "s271", "start": 1947.519, "end": 1961.519, "text": "Uh but you really have to trust your kind of calculations on the max users that you want and like uh you really have to make those estimations uh correctly."}, {"id": "s272", "start": 1963.84, "end": 1982.159, "text": "Uh so we do have like uh let me just Where is this?"}, {"id": "s273", "start": 1982.32, "end": 1983.679, "text": "Okay, great."}, {"id": "s274", "start": 1983.679, "end": 1992.559, "text": "So, for the capacity calculator, uh there is like a link to the collab because I was facing certain issues with molab."}, {"id": "s275", "start": 1992.559, "end": 1997.279, "text": "I had to migrate out the wall widget library and I didn't have time."}, {"id": "s276", "start": 1997.279, "end": 2001.279, "text": "So, being lazy, I just picked collab there."}, {"id": "s277", "start": 2001.279, "end": 2004.48, "text": "Uh apologies to Moab."}, {"id": "s278", "start": 2005.519, "end": 2011.76, "text": "Uh so my VR is connected."}, {"id": "s279", "start": 2015.84, "end": 2017.84, "text": "Okay."}, {"id": "s280", "start": 2026.08, "end": 2028.72, "text": "Wi-Fi probably."}, {"id": "s281", "start": 2031.919, "end": 2032.32, "text": "Okay."}, {"id": "s282", "start": 2032.32, "end": 2034.32, "text": "Great."}, {"id": "s283", "start": 2042.159, "end": 2052.399, "text": "So what we have done over here is we have like shaded some like the GPUs with their V RAMs, bandwidths, the flip-flops and the cost per hours."}, {"id": "s284", "start": 2052.399, "end": 2059.919, "text": "Um then we kind of like built this simple uh like uh capacity calculator."}, {"id": "s285", "start": 2059.919, "end": 2077.28, "text": "This is just a KV visualizer uh where you kind of like when you increase the number of tokens uh you see like your KV size it increases and when you increase the number of users your size is like increasing at a much faster rate"}, {"id": "s286", "start": 2077.919, "end": 2089.2, "text": "and then in this capacity calculator uh let it run."}, {"id": "s287", "start": 2089.599, "end": 2097.679, "text": "So we have like a model which we which is like a 7 billion parameter model that we selected."}, {"id": "s288", "start": 2098.079, "end": 2101.359, "text": "We set the like precision to be FP16."}, {"id": "s289", "start": 2101.359, "end": 2115.599, "text": "Uh now we decide the way we basically go by the GPU decision is you have to decide what's your like you have to fix one dimension first which you care about the most."}, {"id": "s290", "start": 2115.599, "end": 2127.04, "text": "for premium chat I mentioned like latency is definitely the one uh and then like for the async workloads the batch the minimum batch size that you want to serve"}, {"id": "s291", "start": 2127.04, "end": 2139.68, "text": "for from like a single GPU that is the second dimension so you want to fix these first so I will go about like in a premium chat application uh"}, {"id": "s292", "start": 2139.68, "end": 2156.24, "text": "so I can go ahead with like 10 milliseconds latency a minimum batch size I don't care like I can so I'm okay with like probably two uh okay so probably with the seven"}, {"id": "s293", "start": 2156.24, "end": 2170.64, "text": "concurrent users on a single GPU and then like my context limit is very important to me because I want to focus on the quality as well uh and so like I do see like some of the GPUs"}, {"id": "s294", "start": 2170.64, "end": 2180.0, "text": "so the H18GB it's like a $8 per hour but like am I 300x is it?"}, {"id": "s295", "start": 2180.0, "end": 2180.48, "text": "Yeah."}, {"id": "s296", "start": 2180.48, "end": 2193.92, "text": "So it's like around $10 per hour but if you do all that throughput math that we shared in the mathematics before you could find like your cost per million dollar tokens"}, {"id": "s297", "start": 2193.92, "end": 2197.599, "text": "that could be very very that could be like lesser."}, {"id": "s298", "start": 2197.599, "end": 2209.119, "text": "So you need to do such calculations by fixing those dimensions and you need to decide your GPU to like reduce your kind of inference cost."}, {"id": "s299", "start": 2209.119, "end": 2214.96, "text": "This is at least the first step that you can take towards optimizing the inference."}, {"id": "s300", "start": 2216.72, "end": 2219.359, "text": "Okay, cool."}, {"id": "s301", "start": 2221.52, "end": 2225.2, "text": "So the next slide."}, {"id": "s302", "start": 2225.2, "end": 2230.56, "text": "So let me Okay, great."}, {"id": "s303", "start": 2230.56, "end": 2234.8, "text": "And so like now the next thing is about the model optimization."}, {"id": "s304", "start": 2234.8, "end": 2246.48, "text": "So we are now basically have built that foundation where we understood some of the pain points, reason behind those pain points, why those were happening um how we could like"}, {"id": "s305", "start": 2246.48, "end": 2249.359, "text": "address that GPU capacity thing."}, {"id": "s306", "start": 2249.359, "end": 2253.839, "text": "We need to understand what can we do like what can we further do about it."}, {"id": "s307", "start": 2253.839, "end": 2268.64, "text": "So it it is about the model optimization and I think I would like to invite Tan I he can talk more about these model optimizations provided he has worked uh on this like during his research times"}, {"id": "s308", "start": 2268.64, "end": 2287.68, "text": "okay I can control yeah here okay hi everyone uh mic check am I audible at last yeah okay so hi I'm Tesha I work as a senior quant modeler and also I am an AI researcher."}, {"id": "s309", "start": 2287.68, "end": 2293.119, "text": "My work focuses on a agent verification and right now building world models."}, {"id": "s310", "start": 2293.119, "end": 2305.119, "text": "So for this one model optimization before we start model optimization so I created a research template so that it will be easy for us to understand all these complex things."}, {"id": "s311", "start": 2305.119, "end": 2307.92, "text": "I so our template is simple."}, {"id": "s312", "start": 2307.92, "end": 2310.4, "text": "First we will identify the problem."}, {"id": "s313", "start": 2310.4, "end": 2314.4, "text": "Second step we will solve the problem using two algorithms."}, {"id": "s314", "start": 2314.4, "end": 2315.92, "text": "These are just fake algorithms."}, {"id": "s315", "start": 2315.92, "end": 2319.28, "text": "So first algorithm is called ostrich algorithm."}, {"id": "s316", "start": 2319.28, "end": 2326.48, "text": "Whenever we see uh just like ostrich whenever we see a problem ostrich put their head into the sand."}, {"id": "s317", "start": 2326.48, "end": 2331.359, "text": "So same thing we will do whenever we face a problem we will just ignore it."}, {"id": "s318", "start": 2331.359, "end": 2334.88, "text": "So this is an important algorithm we should follow."}, {"id": "s319", "start": 2334.88, "end": 2339.359, "text": "Second one is created it is called world cup algorithm."}, {"id": "s320", "start": 2339.359, "end": 2343.359, "text": "For example, we don't know who will win this FIFA World Cup."}, {"id": "s321", "start": 2343.359, "end": 2352.88, "text": "So, what organizers did, they uh break the 48 teams into 12 groups, uh then round 32."}, {"id": "s322", "start": 2352.88, "end": 2355.599, "text": "So, round 32 right now is currently going on."}, {"id": "s323", "start": 2355.599, "end": 2361.359, "text": "Uh then round 16, then quarterfinals, uh then semi-finals and finals."}, {"id": "s324", "start": 2361.359, "end": 2370.64, "text": "So what they are doing is that uh they are breaking it into a smaller problems and the useful results are moving forward."}, {"id": "s325", "start": 2370.64, "end": 2378.96, "text": "So same analogy or same algorithm we will use uh to understand this model optimization all those things."}, {"id": "s326", "start": 2378.96, "end": 2381.44, "text": "So yeah let's start."}, {"id": "s327", "start": 2381.44, "end": 2386.4, "text": "So I have one H100 GPU."}, {"id": "s328", "start": 2386.4, "end": 2394.64, "text": "I have to use this open-source model what is called GPTOSS 120 billion parameter model."}, {"id": "s329", "start": 2394.64, "end": 2402.56, "text": "So right now I think it's so they have trained it on BF float 16 and weight is 240 GB."}, {"id": "s330", "start": 2402.56, "end": 2404.88, "text": "What should I do?"}, {"id": "s331", "start": 2404.88, "end": 2406.96, "text": "This is the problem we have."}, {"id": "s332", "start": 2406.96, "end": 2416.24, "text": "So first thing what we have to deal do is that 240 GB and 80 uh GB H100."}, {"id": "s333", "start": 2416.24, "end": 2421.68, "text": "So and I have to fit only in one GPU or not in multiple GPU."}, {"id": "s334", "start": 2421.68, "end": 2422.88, "text": "So what can we do?"}, {"id": "s335", "start": 2422.88, "end": 2427.68, "text": "I think simple step is that just compress it."}, {"id": "s336", "start": 2427.68, "end": 2429.28, "text": "But how should we compress it?"}, {"id": "s337", "start": 2429.28, "end": 2430.72, "text": "Uh that's the another challenge."}, {"id": "s338", "start": 2430.72, "end": 2442.16, "text": "So if we compress BF BF float 16 to FP8 uh then it will be around 120 GB but our GPU H100 is still 80 GB."}, {"id": "s339", "start": 2442.16, "end": 2453.359, "text": "So what I think they did is that they compressed it into further MX uh MX FP4 and I think size is around 65 GB."}, {"id": "s340", "start": 2453.359, "end": 2469.04, "text": "So this is something we can do uh compress but question so and we will use over this ostrich algorithm we are assuming that uh there is no loss in compressing a bigger model into a"}, {"id": "s341", "start": 2469.04, "end": 2470.88, "text": "a smaller size."}, {"id": "s342", "start": 2470.88, "end": 2485.359, "text": "Second thing in uh in this one okay yeah so in this one in this slide we have used this mistral 7B so 7 billion parameters so it's a small model 7 billion parameters so"}, {"id": "s343", "start": 2485.359, "end": 2499.68, "text": "uh so if you multiply it by two bytes so it so weight of it's around is 14 14.5 GB which can easily fit into H100 or even a a40 so"}, {"id": "s344", "start": 2499.92, "end": 2512.079, "text": "so Next uh what we can do is that like mistral 7B instead of compressing it a floating point 16 we can apply different techniques like int 8 or int4"}, {"id": "s345", "start": 2512.079, "end": 2513.119, "text": "or nf4."}, {"id": "s346", "start": 2513.119, "end": 2530.079, "text": "So basically we have to just use ostrich algorithm and just believe that uh there is no quality loss kind of things but somehow we also have to mathematically prove that by doing some kind of test testing on some external benchmark that whether it is working or not."}, {"id": "s347", "start": 2530.079, "end": 2536.0, "text": "So the and this comes under post training quantization kind of thing."}, {"id": "s348", "start": 2536.0, "end": 2542.56, "text": "One can also do uh this one uh during finetuning one can also do this kind of quantization."}, {"id": "s349", "start": 2542.56, "end": 2545.76, "text": "This comes under a quant training kind of thing."}, {"id": "s350", "start": 2545.76, "end": 2550.72, "text": "So uh let's move to our next problem."}, {"id": "s351", "start": 2551.52, "end": 2570.96, "text": "So we have this huge matrices just just imagine imagine uh 1,000 by 1,000 uh dimension matrix A and another matrix matrix um 1,000 by 1,000."}, {"id": "s352", "start": 2570.96, "end": 2584.319, "text": "So if we multiply uh if we multiply by this two matrices so number of operations will be 1,000 raised to the power q and this is kind of a problem in terms of"}, {"id": "s353", "start": 2584.319, "end": 2586.319, "text": "uh uh in terms of computing."}, {"id": "s354", "start": 2586.319, "end": 2592.72, "text": "So we wondered our matrix multiplication should be fast and it should save memory."}, {"id": "s355", "start": 2592.72, "end": 2595.2, "text": "So what should we do?"}, {"id": "s356", "start": 2595.2, "end": 2597.2, "text": "We have a giant matrix."}, {"id": "s357", "start": 2597.2, "end": 2599.04, "text": "Okay, let's take this one."}, {"id": "s358", "start": 2599.04, "end": 2602.88, "text": "Uh, Mr. 4096 by 4096."}, {"id": "s359", "start": 2602.88, "end": 2613.44, "text": "What should we do uh to solve our problem of speeding up the things and saving the memory 4096 by 4096."}, {"id": "s360", "start": 2613.599, "end": 2616.88, "text": "So first thing is that we will use just our world cup algorithm."}, {"id": "s361", "start": 2616.88, "end": 2622.16, "text": "We can decide a random number just break the block vertically."}, {"id": "s362", "start": 2622.16, "end": 2625.44, "text": "It does not matter what you are choosing it."}, {"id": "s363", "start": 2625.44, "end": 2636.96, "text": "So you have so let's say uh we have 4096 uh columns we will break it uh we will break it into a group of 128 column each."}, {"id": "s364", "start": 2636.96, "end": 2653.44, "text": "So 128 128 128 128 uh vertical vert uh vertically so we will get a 30 we will get this 32 blocks if we divide this 4096 then what will happen by doing this thing?"}, {"id": "s365", "start": 2653.44, "end": 2661.68, "text": "So if we just divide this one vertical vertically then we can use a multiple GPU to speed up the process."}, {"id": "s366", "start": 2661.68, "end": 2667.119, "text": "So this kind of thing is called multi head attention."}, {"id": "s367", "start": 2667.28, "end": 2669.599, "text": "So what else can we do?"}, {"id": "s368", "start": 2669.599, "end": 2676.72, "text": "We have a big matrix like uh as I have mentioned that ostrich algorithm."}, {"id": "s369", "start": 2676.72, "end": 2680.16, "text": "So our main problem is sizing."}, {"id": "s370", "start": 2680.16, "end": 2693.92, "text": "So what we what we can do is that instead of having all those 32 uh 32 vertical blocks we will throw away uh 31 blocks and we will assume that one block is sufficient enough"}, {"id": "s371", "start": 2693.92, "end": 2697.599, "text": "that all the queries uh can handle those blocks."}, {"id": "s372", "start": 2697.599, "end": 2708.56, "text": "Our loss will be almost negligible and we come up with this algorithm uh which uh and this algorithm is called a multiquery attention."}, {"id": "s373", "start": 2708.56, "end": 2712.4, "text": "So as we can see right now we are at two spectrum."}, {"id": "s374", "start": 2712.4, "end": 2728.079, "text": "One is multi head attention where we split it into 32 blocks and use different uh different uh GPUs or do some parallel processing and at the same time we are just throwing 31 blocks and"}, {"id": "s375", "start": 2728.079, "end": 2732.4, "text": "uh we are calling this is as a multi-query attention."}, {"id": "s376", "start": 2732.4, "end": 2746.24, "text": "So uh so at both extreme we should be come up with a middle ground like something we can say that instead of throwing all the 31 uh maybe we can group we can group"}, {"id": "s377", "start": 2746.24, "end": 2758.48, "text": "we can group some of the blocks together so that uh uh and we can assume that uh similar blocks will attend to a um similar kind of uh queries."}, {"id": "s378", "start": 2758.48, "end": 2764.24, "text": "So this kind of technique comes under grouped query attention which is very popular right now."}, {"id": "s379", "start": 2764.24, "end": 2771.359, "text": "Uh even in uh even in mistral or in other models this grouped query attention works."}, {"id": "s380", "start": 2771.359, "end": 2783.28, "text": "So right now we have understand that we have a big matrix uh we can divide it the way we want and doing some mathematical calculation prove that loss is almost negligible kind of thing."}, {"id": "s381", "start": 2783.28, "end": 2786.48, "text": "So what else we can do?"}, {"id": "s382", "start": 2786.88, "end": 2802.96, "text": "So after that uh after this grouped query attention uh see uh we have a big matrix uh one is one is key and one is value."}, {"id": "s383", "start": 2802.96, "end": 2815.52, "text": "Let's compress that matrix into a latent vector and then come up with some algorithm to uh reconstruct from latent vector uh to our original matrix."}, {"id": "s384", "start": 2815.52, "end": 2830.56, "text": "So this kind of a strategy comes under this one um multi head latent latent attention but again it has some problems with rope because rope is position dependent and uh and it is position independent kind of thing."}, {"id": "s385", "start": 2830.56, "end": 2837.52, "text": "So yeah one needs to also include some uh index for keys also so that one can map it."}, {"id": "s386", "start": 2837.52, "end": 2844.88, "text": "But again main problem is that why why we are why we are multiplying all those big matrices."}, {"id": "s387", "start": 2844.88, "end": 2854.16, "text": "So because that's how this attention mechanism works that each token will pay attention to every token."}, {"id": "s388", "start": 2854.16, "end": 2863.44, "text": "So how about let's don't pay attention to all the previous token only pay attention to the important tokens uh which is important for us."}, {"id": "s389", "start": 2863.44, "end": 2867.68, "text": "So this is a kind of uh this kind of field is uh evolving."}, {"id": "s390", "start": 2867.68, "end": 2871.599, "text": "So this comes under sparse uh deepseek sparse attention."}, {"id": "s391", "start": 2871.599, "end": 2882.64, "text": "So uh yeah and yeah yeah yeah so okay next yeah so next one is flash attention."}, {"id": "s392", "start": 2882.64, "end": 2900.8, "text": "So uh so in flash attention so main pro so main problem is that uh uh so so currently so so currently not currently so right now almost everyone uses flash attention but way in 2022 or 2023"}, {"id": "s393", "start": 2900.8, "end": 2915.04, "text": "uh so that's how it works that's how it works is that uh so uh this Q K query and A and key matrices they were in HBM."}, {"id": "s394", "start": 2915.04, "end": 2927.2, "text": "Uh it loads uh it uh first uh it loads into uh this one uh tensor core and it do some uh it do some calculation and then it will uh write it back to"}, {"id": "s395", "start": 2927.2, "end": 2931.76, "text": "uh HBM and then uh this process goes on multiple times."}, {"id": "s396", "start": 2931.76, "end": 2944.559, "text": "So in flash attention uh what they did is that uh is that instead of multiplying the whole matrices so they just divided it into like our world cup algorithm divided the"}, {"id": "s397", "start": 2944.559, "end": 2958.559, "text": "bigger matrices into a small tile and only put those small tiles uh into a SBM so that uh it can process multiplication fast and just uh keep uh keeping track of this some three variables"}, {"id": "s398", "start": 2958.559, "end": 2962.64, "text": "so that they can calculate this online softmax."}, {"id": "s399", "start": 2963.599, "end": 2965.2, "text": "Yeah."}, {"id": "s400", "start": 2965.2, "end": 2966.72, "text": "Next one."}, {"id": "s401", "start": 2966.72, "end": 2967.44, "text": "So, yeah."}, {"id": "s402", "start": 2967.44, "end": 2969.2, "text": "So, so this is just mathematics."}, {"id": "s403", "start": 2969.2, "end": 2987.839, "text": "So, if we have a multi head attention if it is 524 uh KV uh then it depends upon how much how much grouping we want and so if instead of 32 KV head we only want to use uh 8 KV heads."}, {"id": "s404", "start": 2987.839, "end": 3000.88, "text": "So uh so so we can get a compression of 4x times and this multi head latent attention this formula depends on the model to model how many layers your model have."}, {"id": "s405", "start": 3000.88, "end": 3018.16, "text": "So in the original deepseek paper uh I think they have some 128 dimension 128 d 12 I don't remember the exact dimension but according to that uh they have used uh this one latent vector in which they have used 512"}, {"id": "s406", "start": 3018.16, "end": 3024.079, "text": "as a dimension and some 64 for for rope index."}, {"id": "s407", "start": 3024.079, "end": 3034.0, "text": "So and then they show that it is a 50x 56x uh more compressed than multi head attention."}, {"id": "s408", "start": 3037.28, "end": 3039.28, "text": "Okay."}, {"id": "s409", "start": 3039.839, "end": 3040.24, "text": "Yeah."}, {"id": "s410", "start": 3040.24, "end": 3046.0, "text": "So uh so yeah so this is uh so this is the uh this is the trade-off uh trade-off diagram."}, {"id": "s411", "start": 3046.0, "end": 3050.96, "text": "So here I think we have not talked about this linear attention or mamba."}, {"id": "s412", "start": 3050.96, "end": 3055.119, "text": "So main problem is just all this m Matrix multiplication."}, {"id": "s413", "start": 3055.119, "end": 3057.359, "text": "Right now everyone is using attention."}, {"id": "s414", "start": 3057.359, "end": 3071.04, "text": "Suppose in future uh if we don't want to use attention or rather than generating tokens sequentially just use maybe diffusion models where we can generate everything simultaneously."}, {"id": "s415", "start": 3071.04, "end": 3074.48, "text": "So all these algorithms will change also."}, {"id": "s416", "start": 3074.48, "end": 3076.319, "text": "But here I think they have two more."}, {"id": "s417", "start": 3076.319, "end": 3079.44, "text": "One is linear attention and one is mamba."}, {"id": "s418", "start": 3079.44, "end": 3093.839, "text": "So according to uh this slide so if we are not compressing anything so MHA is just we are parallelizing the process so there is no quality loss so it's a good and then this"}, {"id": "s419", "start": 3093.839, "end": 3108.559, "text": "uh grouped query attention which is I think almost uh every model is using uh just GQA and DSA kind of thing or yeah I think same thing we are providing in the attention mechanism"}, {"id": "s420", "start": 3108.559, "end": 3124.8, "text": "scorecard So uh so I think uh this one mha quality is good throughput is uh throughput is okay and for grouped query attention it depends upon your use case also though yeah though"}, {"id": "s421", "start": 3124.8, "end": 3140.079, "text": "quality is almost similar to uh multi head attention but use case also matters a lot yeah multi-query attention is just one extreme we are I don't know why but we are just assuming that we only need one block"}, {"id": "s422", "start": 3140.079, "end": 3144.64, "text": "and all the queries will attend to that smaller smaller block."}, {"id": "s423", "start": 3144.64, "end": 3152.559, "text": "So, so quality is not that great for M for MQA and this multi head latent attention."}, {"id": "s424", "start": 3152.559, "end": 3168.319, "text": "So yeah if you have tried some this deep seat models so I think uh they are doing great job yeah in in quality wise besides that sliding window so all these are sub techniques which"}, {"id": "s425", "start": 3168.319, "end": 3182.559, "text": "yeah yeah all these are some techniques like I just slide the windows all those things and instead of yeah instead of multiplying everything so linear attention is just saying that sum summarize everything first"}, {"id": "s426", "start": 3182.559, "end": 3188.88, "text": "uh and then look up into it and then mamba this is just a state space model."}, {"id": "s427", "start": 3188.88, "end": 3193.839, "text": "Yeah, I can cover that."}, {"id": "s428", "start": 3193.839, "end": 3195.52, "text": "Okay."}, {"id": "s429", "start": 3195.52, "end": 3196.24, "text": "Uh cool."}, {"id": "s430", "start": 3196.24, "end": 3207.839, "text": "Uh thank you T. So for the model like optimizations we also have like the two notebooks here."}, {"id": "s431", "start": 3208.72, "end": 3216.16, "text": "So there will be I have to go to this."}, {"id": "s432", "start": 3222.8, "end": 3223.359, "text": "Okay."}, {"id": "s433", "start": 3223.359, "end": 3232.24, "text": "Uh so for the quantization uh like the demo uh this is is this already run?"}, {"id": "s434", "start": 3232.24, "end": 3237.2, "text": "No. Let me just run this."}, {"id": "s435", "start": 3243.28, "end": 3243.68, "text": "Okay."}, {"id": "s436", "start": 3243.68, "end": 3249.28, "text": "So we are loading the model which is like uh ML 7B."}, {"id": "s437", "start": 3252.48, "end": 3261.92, "text": "Uh so this one is like with the FP16 baseline."}, {"id": "s438", "start": 3269.76, "end": 3271.52, "text": "Wait."}, {"id": "s439", "start": 3271.52, "end": 3274.559, "text": "Uh, did it run?"}, {"id": "s440", "start": 3275.839, "end": 3276.319, "text": "Okay."}, {"id": "s441", "start": 3276.319, "end": 3280.16, "text": "So, it's uh two millisecond run."}, {"id": "s442", "start": 3280.16, "end": 3281.28, "text": "Did this run?"}, {"id": "s443", "start": 3281.28, "end": 3282.72, "text": "Okay."}, {"id": "s444", "start": 3282.72, "end": 3289.359, "text": "So, yeah, this time it's fetching that model with the FP16 precision."}, {"id": "s445", "start": 3297.52, "end": 3299.839, "text": "the Wi-Fi."}, {"id": "s446", "start": 3303.04, "end": 3306.0, "text": "It's going to take time."}, {"id": "s447", "start": 3307.44, "end": 3309.44, "text": "Okay."}, {"id": "s448", "start": 3311.2, "end": 3316.24, "text": "Yeah, it because it's downloading the weights from the hugging face."}, {"id": "s449", "start": 3317.04, "end": 3319.04, "text": "Huh."}, {"id": "s450", "start": 3320.48, "end": 3320.8, "text": "Yeah."}, {"id": "s451", "start": 3320.8, "end": 3323.119, "text": "So, MOLAB is like running online."}, {"id": "s452", "start": 3323.119, "end": 3325.119, "text": "Yes."}, {"id": "s453", "start": 3326.24, "end": 3354.88, "text": "because it needs to make the network call through to the hugging phase and like it fetching I don't know like but it's taking time to download probably Okay."}, {"id": "s454", "start": 3355.92, "end": 3356.96, "text": "So good."}, {"id": "s455", "start": 3356.96, "end": 3357.52, "text": "Okay."}, {"id": "s456", "start": 3357.52, "end": 3365.44, "text": "So here we see like the memory size is like 15 GB around approximately with the FP16 precision."}, {"id": "s457", "start": 3365.44, "end": 3372.48, "text": "We are trying to do the 2x compression as Tmet talked about with the int8."}, {"id": "s458", "start": 3373.839, "end": 3375.28, "text": "Let's download."}, {"id": "s459", "start": 3375.28, "end": 3375.599, "text": "Okay."}, {"id": "s460", "start": 3375.599, "end": 3381.2, "text": "So we do see like your memory size is now like 7.5 GB."}, {"id": "s461", "start": 3381.2, "end": 3387.2, "text": "What that means is now you have a more s more memory for your KV to basically grow."}, {"id": "s462", "start": 3387.2, "end": 3394.64, "text": "That means you can either serve higher context limit or you can serve the higher concurrent users there."}, {"id": "s463", "start": 3396.319, "end": 3405.599, "text": "If you do the like in your basic you are doing the 4x compression so that with the 4x compression it would be more lower."}, {"id": "s464", "start": 3405.599, "end": 3411.2, "text": "It would be I think around 3 to 4 GB."}, {"id": "s465", "start": 3411.2, "end": 3411.52, "text": "Yeah."}, {"id": "s466", "start": 3411.52, "end": 3417.68, "text": "4.5 GB and Yep."}, {"id": "s467", "start": 3417.68, "end": 3421.28, "text": "So this is Wait."}, {"id": "s468", "start": 3422.0, "end": 3429.839, "text": "So this is just a basic plot of like so these are the like theoretical numbers."}, {"id": "s469", "start": 3429.839, "end": 3439.68, "text": "uh we are not doing the like any throughput test here but uh usually you would see like your memory increases so pro you would also have like a bit of higher"}, {"id": "s470", "start": 3439.68, "end": 3441.44, "text": "uh throughput."}, {"id": "s471", "start": 3441.44, "end": 3450.0, "text": "Uh from some of the benchmarks that we studied we saw like the intate uh compression it does have like a lower throughput."}, {"id": "s472", "start": 3452.96, "end": 3454.16, "text": "Okay."}, {"id": "s473", "start": 3454.16, "end": 3460.799, "text": "And then there is like a demo on the like the attention mechanisms."}, {"id": "s474", "start": 3462.48, "end": 3469.04, "text": "So for the attention okay I have to run this."}, {"id": "s475", "start": 3478.48, "end": 3483.04, "text": "Uh okay so it has run."}, {"id": "s476", "start": 3483.04, "end": 3484.48, "text": "Oh, wait."}, {"id": "s477", "start": 3484.48, "end": 3488.0, "text": "Why does it say no GPU detected?"}, {"id": "s478", "start": 3489.44, "end": 3493.52, "text": "It should say the GPU should be detected."}, {"id": "s479", "start": 3498.88, "end": 3501.44, "text": "Oh, okay."}, {"id": "s480", "start": 3517.92, "end": 3532.799, "text": "Wait, but this is surprising."}, {"id": "s481", "start": 3537.2, "end": 3542.72, "text": "Yeah, I guess it's not like able to detect the GPU for some reason."}, {"id": "s482", "start": 3544.319, "end": 3548.799, "text": "Uh we do have like a GPU here."}, {"id": "s483", "start": 3551.28, "end": 3554.319, "text": "Uh okay, never mind."}, {"id": "s484", "start": 3554.319, "end": 3554.48, "text": "Yeah."}, {"id": "s485", "start": 3554.48, "end": 3554.64, "text": "Yeah."}, {"id": "s486", "start": 3554.64, "end": 3574.079, "text": "So, but the like basic idea here was more like as you try to move towards like compressing the computation like by using different attention mechanisms like moving from the multi head to the grouped query attention and then to the MLA"}, {"id": "s487", "start": 3574.079, "end": 3577.68, "text": "you would start seeing some optimizations."}, {"id": "s488", "start": 3578.0, "end": 3582.64, "text": "Um I think yesterday night we were doing some benchmarking."}, {"id": "s489", "start": 3582.64, "end": 3585.52, "text": "Uh I wanted to correct this part."}, {"id": "s490", "start": 3585.52, "end": 3590.64, "text": "Uh so it wasn't like 50 56x it was 14x."}, {"id": "s491", "start": 3590.64, "end": 3600.4, "text": "Uh basically the demo had a mistake of like a computation uh where it did not multiply the number of layers."}, {"id": "s492", "start": 3601.04, "end": 3603.92, "text": "Uh yeah so apologies for that."}, {"id": "s493", "start": 3603.92, "end": 3612.48, "text": "Uh so this MLA is like a 14x savings work in comparison to like your multi head attention."}, {"id": "s494", "start": 3614.319, "end": 3630.319, "text": "Uh so now that we have understanding of the pain points, the foundations, the one side of the optimizations which is the model optimizations, we want to talk about what can you do on the"}, {"id": "s495", "start": 3630.319, "end": 3633.28, "text": "like the serving side."}, {"id": "s496", "start": 3633.52, "end": 3648.72, "text": "So the first thing is we saw like when you perform like a simple decode step you are pulling it you are basically pulling the model weights and then you are recomputing the key and the value vectors"}, {"id": "s497", "start": 3648.72, "end": 3656.96, "text": "for all the previous tokens even though you already computed the those vectors for the tokens."}, {"id": "s498", "start": 3656.96, "end": 3661.52, "text": "So there is definitely like a lot of compute wastage."}, {"id": "s499", "start": 3661.52, "end": 3668.64, "text": "Uh and if you kind of analyze the time complexity of it, it would come out to be O of N²."}, {"id": "s500", "start": 3668.64, "end": 3673.119, "text": "Uh and the way to resolve that is like a classic trade-off against the memory."}, {"id": "s501", "start": 3673.119, "end": 3680.0, "text": "You can maintain a memory of those vectors against the tokens and you can reference that memory."}, {"id": "s502", "start": 3680.0, "end": 3684.24, "text": "So that memory was called as like KV cache."}, {"id": "s503", "start": 3684.559, "end": 3696.559, "text": "uh and the like the flow looks something like this and then based on this KV cache there were like four optimizations that were really possible."}, {"id": "s504", "start": 3696.559, "end": 3702.799, "text": "Um the first one is about the page detention."}, {"id": "s505", "start": 3702.799, "end": 3705.52, "text": "So what's the different what's the problem today?"}, {"id": "s506", "start": 3705.52, "end": 3721.359, "text": "So when you send like multiple requests as the input to the GPU these requests are in a batch uh every request is allocated like a continuous memory storage let's say of"}, {"id": "s507", "start": 3721.359, "end": 3739.28, "text": "I'm just taking an example like let's set uh 2 KB however like your request needed only let's say uh 1 KB so there is like u 50% of that memory fragmentation."}, {"id": "s508", "start": 3739.839, "end": 3744.48, "text": "Uh and this fragmentation basically leads to the memory wastage."}, {"id": "s509", "start": 3744.48, "end": 3756.319, "text": "That means there was a space in the memory where you could have served more requests but you could not because you were looking for that contigious block of the memory."}, {"id": "s510", "start": 3756.319, "end": 3767.76, "text": "So an inspiration to was being taken from like how the OS works like you maintain a logical memory and you basically have a physical memory."}, {"id": "s511", "start": 3767.76, "end": 3784.799, "text": "So in the logical memory it would still feel like uh that the KV vector for the like every token is like a contiguous but it will be mapping to a different physical address."}, {"id": "s512", "start": 3786.96, "end": 3791.599, "text": "So that really helped like saving a lot of memory."}, {"id": "s513", "start": 3791.599, "end": 3807.44, "text": "Uh and it was only possible because you they considered like memory as a set of blocks and you would be dynamically allocating those blocks as the request need as the like new tokens comes in and they need that"}, {"id": "s514", "start": 3807.44, "end": 3809.92, "text": "kind of memory."}, {"id": "s515", "start": 3810.96, "end": 3829.92, "text": "The another lever is like when you are sending multiple requests in the batch GPU is like taking those requests but it does not accepts the new batch unless all the requests in that batch gets completed."}, {"id": "s516", "start": 3829.92, "end": 3839.76, "text": "So the diagram looks more like a page retention but here it is more about like when is GPU available to take the next batch."}, {"id": "s517", "start": 3839.76, "end": 3855.2, "text": "So there is a time period where GPU is like sitting really idle and you want to like resolve for that and for that like the idea was like okay let's do that continuous batching."}, {"id": "s518", "start": 3857.52, "end": 3864.96, "text": "So the continuous batching also really helped with like throughput because now you can ship more requests pretty quickly."}, {"id": "s519", "start": 3864.96, "end": 3873.68, "text": "Keep making sure like GPU always uh get is always like occupied and it's not like uh sitting idle."}, {"id": "s520", "start": 3873.68, "end": 3876.64, "text": "So you are saving on that compute."}, {"id": "s521", "start": 3876.64, "end": 3879.52, "text": "The third is the like prefix caching."}, {"id": "s522", "start": 3879.52, "end": 3887.599, "text": "So you remember like the KV cache helped you save the computation for a single request across the tokens."}, {"id": "s523", "start": 3887.599, "end": 3893.44, "text": "But what if like you have the same tokens across multiple requests?"}, {"id": "s524", "start": 3893.44, "end": 3896.559, "text": "How do you basically save against that?"}, {"id": "s525", "start": 3896.559, "end": 3911.28, "text": "So the prefix caching uh which was introduced by VLM exactly counters that and then the third is like we talked about the fourth actually."}, {"id": "s526", "start": 3911.28, "end": 3921.52, "text": "So we talked about quantizing the model but you could also you can also like quantize the KV weights."}, {"id": "s527", "start": 3921.52, "end": 3928.24, "text": "So that means now you you need like a lesser space for your key and the value vectors."}, {"id": "s528", "start": 3928.24, "end": 3932.48, "text": "That means you can serve more key and the value vectors in the memory."}, {"id": "s529", "start": 3932.48, "end": 3934.799, "text": "And that means like you can serve more tokens."}, {"id": "s530", "start": 3934.799, "end": 3938.24, "text": "That means you can serve more context context limit."}, {"id": "s531", "start": 3938.24, "end": 3951.92, "text": "And that means like you can serve more model quality and all of this is like uh already present in the VLM."}, {"id": "s532", "start": 3951.92, "end": 3965.52, "text": "You don't really need to reinvent that wheel uh and you can like deploy this VLM in production and you could see that basically growth."}, {"id": "s533", "start": 3965.599, "end": 3969.44, "text": "So next we have like a benchmark that we did."}, {"id": "s534", "start": 3969.44, "end": 3982.88, "text": "So this benchmark was let me see if I have that here the demos."}, {"id": "s535", "start": 3983.359, "end": 3995.2, "text": "So doing this benchmark takes like around 1 hour because you have to continuously stop and like restart the VLM servers and you have to load the models and all."}, {"id": "s536", "start": 3995.2, "end": 4002.72, "text": "So it does take a lot of time in doing the testing but I can like really tell you here what we are doing."}, {"id": "s537", "start": 4002.72, "end": 4008.24, "text": "So we have kept the model as same like the Mistful 7B."}, {"id": "s538", "start": 4008.24, "end": 4014.88, "text": "Uh and then we have like the set of input questions that we are sending."}, {"id": "s539", "start": 4014.88, "end": 4017.28, "text": "Uh consider them as the prompts."}, {"id": "s540", "start": 4017.28, "end": 4022.319, "text": "Then we have couple of helper functions here like checking the server is up or not."}, {"id": "s541", "start": 4022.319, "end": 4025.76, "text": "The server is the VLM server."}, {"id": "s542", "start": 4025.76, "end": 4030.88, "text": "Then there are helper functions to get the VLM metrics."}, {"id": "s543", "start": 4030.88, "end": 4034.079, "text": "uh and I will talk about like what those metrics are."}, {"id": "s544", "start": 4034.079, "end": 4043.28, "text": "Uh then there are like lot of the benchmarks and all and then you have to measure uh the KV usage and all."}, {"id": "s545", "start": 4043.28, "end": 4045.2, "text": "So these are the like helper functions."}, {"id": "s546", "start": 4045.2, "end": 4050.16, "text": "So the baseline is very simple like we have a hugging phase baseline."}, {"id": "s547", "start": 4050.16, "end": 4056.88, "text": "Uh this is the raw like sending the text to the LLM getting back the response."}, {"id": "s548", "start": 4056.88, "end": 4058.72, "text": "We see some results here."}, {"id": "s549", "start": 4058.72, "end": 4064.24, "text": "We saw like hugging phase has a throughput of like around 51 tokens per second."}, {"id": "s550", "start": 4064.24, "end": 4070.0, "text": "Time to first token was like 54 and then the inter token latency was 19."}, {"id": "s551", "start": 4070.0, "end": 4074.48, "text": "Uh this bas uh this was all run on the h100."}, {"id": "s552", "start": 4075.2, "end": 4080.72, "text": "Uh and then we start like a very default VLM server."}, {"id": "s553", "start": 4080.72, "end": 4088.24, "text": "So by default VLM provides you the page detention, continuous batching and the KV caching."}, {"id": "s554", "start": 4088.24, "end": 4105.04, "text": "So three things are present by default and when you try to compare those benchmarks you see your throughput is like almost 15x you are able to serve more tokens per second"}, {"id": "s555", "start": 4105.04, "end": 4125.759, "text": "then your time to the first token uh that also rises and then your v the inter token latency kind goes down and then your KV versus users and the versus context rate increases for sure."}, {"id": "s556", "start": 4127.92, "end": 4142.64, "text": "Now when you apply the prefix caching to it so with the prefix caching you see like your throughput increases more your TDF decreases your inter token latency is approximately"}, {"id": "s557", "start": 4142.64, "end": 4156.88, "text": "same uh and then your KV cache usage versus the users it's kind of going down the vers context it's not going down it's approximately same I think this is also approximately"}, {"id": "s558", "start": 4156.88, "end": 4167.12, "text": "same it's like not that uh big of a deal when you apply the like KV quantization on top of it."}, {"id": "s559", "start": 4167.6, "end": 4174.159, "text": "So it becomes like so so you see like your throughput is like almost similar."}, {"id": "s560", "start": 4174.159, "end": 4176.64, "text": "Your time to first token is similar."}, {"id": "s561", "start": 4176.64, "end": 4182.159, "text": "Your token latency is similar but then your KV usage actually goes down."}, {"id": "s562", "start": 4182.159, "end": 4188.56, "text": "And this is because like you have quantized your key value space."}, {"id": "s563", "start": 4188.56, "end": 4194.96, "text": "Uh and then there is a concept of speculative decoding that TME will talk about."}, {"id": "s564", "start": 4194.96, "end": 4208.56, "text": "Uh so when you try to benchmark those so you also see like there is a uh like a bit of like the less KV usage there although like the results are approximately"}, {"id": "s565", "start": 4208.56, "end": 4210.56, "text": "same."}, {"id": "s566", "start": 4215.04, "end": 4226.0, "text": "So yeah, I mean overall like these are the like the metrics across probably I should zoom out."}, {"id": "s567", "start": 4226.0, "end": 4227.76, "text": "Okay, it's not zoom out."}, {"id": "s568", "start": 4227.76, "end": 4230.159, "text": "It's not working."}, {"id": "s569", "start": 4230.239, "end": 4231.44, "text": "Great."}, {"id": "s570", "start": 4231.44, "end": 4235.28, "text": "So yeah, this is the like VLM benchmarks."}, {"id": "s571", "start": 4235.28, "end": 4238.32, "text": "Um it's your production default by the way."}, {"id": "s572", "start": 4238.32, "end": 4248.0, "text": "uh we will also share that decision tree uh when we try to talk about like the other engines."}, {"id": "s573", "start": 4249.04, "end": 4264.0, "text": "So yeah, so we should talk about like what are some of the other inference optimizations we can do on top of it and what were some of the other solutions that came out."}, {"id": "s574", "start": 4265.199, "end": 4268.48, "text": "Uh so I would like to again invite Tanme."}, {"id": "s575", "start": 4268.48, "end": 4272.64, "text": "He's going to talk about like some of these optimizations."}, {"id": "s576", "start": 4278.48, "end": 4279.199, "text": "Oh, sorry."}, {"id": "s577", "start": 4279.199, "end": 4280.4, "text": "Uh I'm so sorry."}, {"id": "s578", "start": 4280.4, "end": 4284.159, "text": "Uh I didn't enable the slides."}, {"id": "s579", "start": 4285.28, "end": 4289.84, "text": "Uh what was the Okay, great."}, {"id": "s580", "start": 4290.0, "end": 4290.8, "text": "Perfect."}, {"id": "s581", "start": 4290.8, "end": 4291.6, "text": "Which one?"}, {"id": "s582", "start": 4291.6, "end": 4292.8, "text": "The speculative."}, {"id": "s583", "start": 4292.8, "end": 4293.44, "text": "Yeah."}, {"id": "s584", "start": 4293.44, "end": 4294.48, "text": "Thank you, Hersel."}, {"id": "s585", "start": 4294.48, "end": 4296.08, "text": "Yeah."}, {"id": "s586", "start": 4296.08, "end": 4307.199, "text": "So, so all these are like speculative decoding all these are the uh so so what we say uh different flavors of same kind of soda."}, {"id": "s587", "start": 4307.199, "end": 4312.239, "text": "So this uh this technique comes under decoding accelerator."}, {"id": "s588", "start": 4312.239, "end": 4327.36, "text": "So first one so we are only talking about this speculative decoding but there are other variants like self speculative eagle medusa I only like I think uh this one eagle algorithm"}, {"id": "s589", "start": 4327.44, "end": 4343.679, "text": "personally I don't think speculative decoding works because main problem is alignment okay so let's start with what is uh speculative decoding main problem is that in transformer architecture All these tokens are generated"}, {"id": "s590", "start": 4343.679, "end": 4347.04, "text": "sequentially one by one by one."}, {"id": "s591", "start": 4347.04, "end": 4363.6, "text": "How about just use a smaller model and let a smaller model to generate maybe let's say four or five tokens and this teacher model or we can say according to our world cup algorithm we can say referee."}, {"id": "s592", "start": 4363.6, "end": 4381.12, "text": "So referee will decide how many uh tokens it accept and this loop keeps on going on and our assumption is that there are certain domain where this kind of things will work like maybe in decode"}, {"id": "s593", "start": 4381.12, "end": 4389.04, "text": "maybe in coding or where almost there is no creativity uh each uh code or syntax is almost similar."}, {"id": "s594", "start": 4389.04, "end": 4391.44, "text": "So maybe it can help it."}, {"id": "s595", "start": 4391.44, "end": 4399.199, "text": "But uh based on personal testing, I didn't find this speculative decoding useful at all."}, {"id": "s596", "start": 4399.199, "end": 4415.52, "text": "But other techniques like uh self speculative decoding where teacher model also have one head auxiliary head and it will do same similar kind of things what this base model or small model is doing it."}, {"id": "s597", "start": 4415.52, "end": 4430.64, "text": "But then this eagle came Eagle 1 2 3 I don't know how many version versions are but it is just saying that instead of creating instead of generating tokens uh let's uh train a small model inside"}, {"id": "s598", "start": 4430.64, "end": 4443.679, "text": "train a small model and just take a features from one of its uh one of main models layer so that instead of generating token uh it will generate uh this features so"}, {"id": "s599", "start": 4443.679, "end": 4458.159, "text": "so uh so eagle is uh Eagle is better compared to this other kind of technologies and then another one is Medusa which is just saying that just generate all the tokens parallelly."}, {"id": "s600", "start": 4458.159, "end": 4459.199, "text": "Uh okay."}, {"id": "s601", "start": 4459.199, "end": 4463.04, "text": "So here so here in this slide"}, {"id": "s602", "start": 4463.52, "end": 4465.199, "text": "yeah the next slide."}, {"id": "s603", "start": 4465.199, "end": 4467.199, "text": "Okay."}, {"id": "s604", "start": 4469.44, "end": 4469.76, "text": "Okay."}, {"id": "s605", "start": 4469.76, "end": 4471.04, "text": "Yeah."}, {"id": "s606", "start": 4471.04, "end": 4471.679, "text": "Okay."}, {"id": "s607", "start": 4471.679, "end": 4475.28, "text": "Now we come to uh now we will come to this one prefix caching."}, {"id": "s608", "start": 4475.28, "end": 4488.48, "text": "So I don't know whether people are using this one static prefix caching or not but thing is that main problem with prefix caching is that sometimes we type and make a small kind of mistake"}, {"id": "s609", "start": 4488.48, "end": 4499.36, "text": "and this standard static prefix caching is basically it takes a prompt do some hashing and then next time when user asks similar kind of question it will try to match the hash."}, {"id": "s610", "start": 4499.36, "end": 4510.4, "text": "So if hash is uh if hash is equal then then it will instead of recomputing all those K and B it will just uh take it from from the storage"}, {"id": "s611", "start": 4510.4, "end": 4520.64, "text": "but you know that sometimes we make a mistake or maybe we can just change a word or letter something like that then we have a very higher uh cache uh hit cache"}, {"id": "s612", "start": 4520.64, "end": 4531.199, "text": "miss hit rate so that's why uh this one uh radics tree so radics tree is becoming very popular and also also because of agent."}, {"id": "s613", "start": 4531.199, "end": 4544.08, "text": "So I think almost everyone is doing agent and most of the computation is going during TT during test time inference kind of thing where we keep on asking same kind of questions and prompt for example"}, {"id": "s614", "start": 4544.08, "end": 4549.12, "text": "you are an expert software engineer multiply by 200 times."}, {"id": "s615", "start": 4549.12, "end": 4563.679, "text": "This kind of loop keeps on going inside this uh agentic agentic kind of things where it is al necessary to keep uh or store similar kind of things in a radics tree."}, {"id": "s616", "start": 4563.679, "end": 4578.159, "text": "So radics tree is just so so radic tree is just advanced version of this prefix tree where where we will just where we will just collapse a node if it does not have a does not have any branch"}, {"id": "s617", "start": 4578.159, "end": 4597.04, "text": "and for this kind of work where keep on repeating same thing this uh red x tree helps a lot and st lang uh use this kind of algorithm for prefix caching."}, {"id": "s618", "start": 4597.6, "end": 4598.08, "text": "Okay."}, {"id": "s619", "start": 4598.08, "end": 4598.32, "text": "Yeah."}, {"id": "s620", "start": 4598.32, "end": 4599.52, "text": "Then there is another thing."}, {"id": "s621", "start": 4599.52, "end": 4602.0, "text": "One is tensor RT LLM."}, {"id": "s622", "start": 4602.0, "end": 4603.36, "text": "This is very confusing."}, {"id": "s623", "start": 4603.36, "end": 4606.88, "text": "When I first started, I was I was just confused."}, {"id": "s624", "start": 4606.88, "end": 4609.6, "text": "What is tensor RTLM?"}, {"id": "s625", "start": 4609.6, "end": 4610.08, "text": "So yeah."}, {"id": "s626", "start": 4610.08, "end": 4616.0, "text": "So tensor RT is just a uh it's just a standard uh SDK kind of thing."}, {"id": "s627", "start": 4616.0, "end": 4622.48, "text": "Tensor RTLM is just an inference engine just like VLM, SG lang."}, {"id": "s628", "start": 4622.48, "end": 4626.4, "text": "But problem is that it is related to Nvidia."}, {"id": "s629", "start": 4626.4, "end": 4633.92, "text": "They optimized each and every layer and every problem as I mentioned in our world cup algorithm."}, {"id": "s630", "start": 4633.92, "end": 4639.679, "text": "They just break everything and optimized everything at hardware level also."}, {"id": "s631", "start": 4639.679, "end": 4642.159, "text": "So uh yeah."}, {"id": "s632", "start": 4642.159, "end": 4645.199, "text": "So okay next."}, {"id": "s633", "start": 4647.04, "end": 4647.52, "text": "Yeah."}, {"id": "s634", "start": 4647.52, "end": 4659.92, "text": "So for this workshop we also uh did some benchmarking like which is best uh so our setup was something similar was so so we did two kind of testing."}, {"id": "s635", "start": 4659.92, "end": 4674.48, "text": "First one is without uh without agentic testing where we just so we use this shared GPT uh this one data set and uh just ask those questions uh using VLM"}, {"id": "s636", "start": 4674.48, "end": 4677.28, "text": "and SG lang."}, {"id": "s637", "start": 4677.92, "end": 4679.92, "text": "Okay."}, {"id": "s638", "start": 4686.0, "end": 4686.88, "text": "Yeah."}, {"id": "s639", "start": 4686.88, "end": 4688.88, "text": "Okay."}, {"id": "s640", "start": 4689.12, "end": 4693.12, "text": "And let me just zoom it up."}, {"id": "s641", "start": 4693.12, "end": 4694.8, "text": "Okay, great."}, {"id": "s642", "start": 4694.8, "end": 4695.04, "text": "Okay."}, {"id": "s643", "start": 4695.04, "end": 4695.36, "text": "Yeah."}, {"id": "s644", "start": 4695.36, "end": 4707.36, "text": "So, yeah, for this workshop, we used H100 and of our first testing was that uh we just uh we just asked uh we take questions from shared GPT and put it into"}, {"id": "s645", "start": 4707.36, "end": 4715.679, "text": "VLM, SG lang and we found that actually there's no statistical difference between which one is better."}, {"id": "s646", "start": 4715.679, "end": 4717.84, "text": "So both have almost similar kind."}, {"id": "s647", "start": 4717.84, "end": 4724.08, "text": "So both are fulfilling similar kind of request per second uh TTFT and latency."}, {"id": "s648", "start": 4724.08, "end": 4730.96, "text": "So but only difference we have seen during agentic uh agentic branching."}, {"id": "s649", "start": 4730.96, "end": 4745.36, "text": "So uh what we did was that we asked that similar kind of question that you are the best this one software engineer in the world just solve the problem of traffic congestion in this city kind of thing."}, {"id": "s650", "start": 4745.36, "end": 4748.48, "text": "Then we put this into LLM."}, {"id": "s651", "start": 4748.48, "end": 4750.96, "text": "LLM generates some output."}, {"id": "s652", "start": 4750.96, "end": 4754.32, "text": "Then we did another uh round two also."}, {"id": "s653", "start": 4754.32, "end": 4768.719, "text": "So once this LLM generates this output, then in round two we have specially mentioned that uh provide uh review the proposal and give ratings from 1 to 10."}, {"id": "s654", "start": 4768.719, "end": 4775.36, "text": "So this uh two turns we did uh and this loop keeps on uh repeating it."}, {"id": "s655", "start": 4775.36, "end": 4787.52, "text": "Uh what we found is that for this kind of uh workflow where everything is standard all those prompts and context engineering comes into the picture."}, {"id": "s656", "start": 4787.52, "end": 4795.04, "text": "If we do proper this agentic branching then I think uh this HG lang is three to four times better."}, {"id": "s657", "start": 4795.04, "end": 4803.28, "text": "But again this depends upon the different setup maybe uh if you do it uh you may get different results."}, {"id": "s658", "start": 4803.28, "end": 4804.32, "text": "Okay."}, {"id": "s659", "start": 4804.32, "end": 4804.8, "text": "Yeah."}, {"id": "s660", "start": 4804.8, "end": 4809.6, "text": "So I think uh did we uploaded it on GitHub?"}, {"id": "s661", "start": 4809.6, "end": 4810.4, "text": "Okay."}, {"id": "s662", "start": 4810.4, "end": 4810.88, "text": "Yeah."}, {"id": "s663", "start": 4810.88, "end": 4815.6, "text": "So the PDF is like also in the drive."}, {"id": "s664", "start": 4815.6, "end": 4819.28, "text": "Uh it's the same link as the slides."}, {"id": "s665", "start": 4819.28, "end": 4823.28, "text": "So a quick summary here."}, {"id": "s666", "start": 4823.28, "end": 4832.0, "text": "So on a standard API workload throughput you would see like a VLM and the SG lang would behave same."}, {"id": "s667", "start": 4832.0, "end": 4836.96, "text": "So if you don't have if you have like a standard workload definitely go with VLM."}, {"id": "s668", "start": 4836.96, "end": 4839.36, "text": "It's the production default anyways."}, {"id": "s669", "start": 4839.36, "end": 4856.239, "text": "But what Tanme was also saying is when you try to like make it like agentic workloads that is where like your SG link really shines uh and uh it kind of like provides you all the benefits."}, {"id": "s670", "start": 4857.679, "end": 4865.92, "text": "So yeah keep like VLM as a default but if you have agentic workloads probably try to move as the towards the SG lang."}, {"id": "s671", "start": 4865.92, "end": 4868.8, "text": "if you're not happy with DB LLM."}, {"id": "s672", "start": 4868.8, "end": 4873.44, "text": "Uh but uh okay."}, {"id": "s673", "start": 4873.44, "end": 4883.04, "text": "Uh let me Okay."}, {"id": "s674", "start": 4886.0, "end": 4896.719, "text": "And then like there is like the like a comparison that is done at the 120 billion like for the GPTO OSS 120 billion."}, {"id": "s675", "start": 4896.719, "end": 4902.8, "text": "Um this is a benchmark that was prepared by clarify."}, {"id": "s676", "start": 4902.8, "end": 4906.4, "text": "So there is like a blog link here."}, {"id": "s677", "start": 4906.4, "end": 4908.64, "text": "Oh nice."}, {"id": "s678", "start": 4908.96, "end": 4910.4, "text": "Okay."}, {"id": "s679", "start": 4910.4, "end": 4910.8, "text": "Yeah."}, {"id": "s680", "start": 4910.8, "end": 4917.84, "text": "So they did the similar benchmark and they included like a tensor RT LLM in it."}, {"id": "s681", "start": 4918.4, "end": 4925.84, "text": "Definitely you can always go through these benchmarks and try to understand which basically suits your use case."}, {"id": "s682", "start": 4925.84, "end": 4934.56, "text": "As we mentioned like Tensor RT they try to optimize the hardware side as well having the peak hardware performance."}, {"id": "s683", "start": 4937.52, "end": 4944.0, "text": "Wait uh this is okay."}, {"id": "s684", "start": 4946.159, "end": 4947.92, "text": "Yeah."}, {"id": "s685", "start": 4947.92, "end": 4962.239, "text": "And then like in terms of when you want to dep pick like your engines once you figure out like between VLM, SG lang tenserati so that there are some new engines that are popping up"}, {"id": "s686", "start": 4962.239, "end": 4964.719, "text": "Nvidia Dynamo for sure."}, {"id": "s687", "start": 4964.719, "end": 4969.679, "text": "Uh so they are also for the agentic uh session routing."}, {"id": "s688", "start": 4969.76, "end": 4971.84, "text": "Uh hugging phase is always there."}, {"id": "s689", "start": 4971.84, "end": 4974.159, "text": "It's a simple no server."}, {"id": "s690", "start": 4974.159, "end": 4981.199, "text": "Then there is like an MSAR engine that was recently proposed by Stanford."}, {"id": "s691", "start": 4981.199, "end": 4984.88, "text": "They are for like the multimodel."}, {"id": "s692", "start": 4985.28, "end": 4999.199, "text": "Uh so definitely you could explore those and when you try to basically just to like give a quick summary uh you we start with like a baseline we try to find"}, {"id": "s693", "start": 4999.199, "end": 5002.88, "text": "what model could fit our use cases."}, {"id": "s694", "start": 5002.88, "end": 5011.04, "text": "Um, so you could pick like uh Deep Seek, you could pick like don't pick like a Mistral 7B."}, {"id": "s695", "start": 5011.04, "end": 5013.04, "text": "I mean, it's not good."}, {"id": "s696", "start": 5013.04, "end": 5024.719, "text": "Uh, but yeah, so you pick your model and you want to like have a smaller memory and you want to try to fit that bigger model into smaller memory"}, {"id": "s697", "start": 5024.719, "end": 5028.08, "text": "so that you could save cost on the GPU cost."}, {"id": "s698", "start": 5028.08, "end": 5038.88, "text": "So you can do like all those com quantization then you can apply all those serving optimizations by using the right serving engine under the hood."}, {"id": "s699", "start": 5038.88, "end": 5045.679, "text": "So that can really provide you that throughut that you really want."}, {"id": "s700", "start": 5047.92, "end": 5063.52, "text": "And now something that you can do uh after going back home pro because we cannot like actually go over all the material here uh is definitely reading about some of the source informations"}, {"id": "s701", "start": 5063.52, "end": 5077.679, "text": "like different attention mechanisms different like these engines like try to just read the different benchmarks which are present online as well and then there are a lot of like"}, {"id": "s702", "start": 5077.679, "end": 5085.6, "text": "in-depth guides or the next phases of it which is like learning about some KV eviction strategies."}, {"id": "s703", "start": 5085.6, "end": 5090.639, "text": "So world is moving towards having a separate KV cache engineering domain."}, {"id": "s704", "start": 5090.639, "end": 5093.04, "text": "So you want to understand what's going on in there."}, {"id": "s705", "start": 5093.04, "end": 5098.08, "text": "So KV cache KV eviction cache compressions hybrid memories."}, {"id": "s706", "start": 5098.08, "end": 5101.679, "text": "So there are like lot of solutions that are happening around there."}, {"id": "s707", "start": 5101.679, "end": 5115.44, "text": "So always try to stick to those foundations or like the fundamentals or the first principles and try to see like which solution basically solves what problem and whether you actually need that"}, {"id": "s708", "start": 5115.44, "end": 5126.48, "text": "problem to be solved for your use case and then there is like distributed LLM inference which is like a different painoint altogether."}, {"id": "s709", "start": 5126.48, "end": 5131.76, "text": "Uh you would probably need like a two-hour workshop there as well."}, {"id": "s710", "start": 5131.76, "end": 5137.679, "text": "uh to like go over like all the internals do all the hands-on."}, {"id": "s711", "start": 5141.28, "end": 5141.84, "text": "Yes."}, {"id": "s712", "start": 5141.84, "end": 5151.679, "text": "And this is something we are trying to propose for the AI engineer New York session uh which is to like dive deeper into the advanced sections of the LLM inference."}, {"id": "s713", "start": 5151.679, "end": 5156.4, "text": "So this workshop was more for the like beginner and the intermediate level."}, {"id": "s714", "start": 5156.4, "end": 5162.8, "text": "Um so in this form we do have like a feedback as well plus also the interest."}, {"id": "s715", "start": 5162.8, "end": 5174.96, "text": "Um if uh you think like we need certain improvements on certain sections definitely give that feedback as well and if you want to see this workshop in like New York"}, {"id": "s716", "start": 5174.96, "end": 5181.84, "text": "uh fair you I mean definitely feel free to enroll your interest."}, {"id": "s717", "start": 5182.639, "end": 5184.639, "text": "Uhhuh."}, {"id": "s718", "start": 5184.88, "end": 5187.36, "text": "How is it possible?"}, {"id": "s719", "start": 5188.0, "end": 5197.199, "text": "Well, let me just check."}, {"id": "s720", "start": 5206.8, "end": 5208.48, "text": "Huh?"}, {"id": "s721", "start": 5208.48, "end": 5210.32, "text": "URL works, right?"}, {"id": "s722", "start": 5210.32, "end": 5211.52, "text": "Not the QR code."}, {"id": "s723", "start": 5211.52, "end": 5212.32, "text": "Okay."}, {"id": "s724", "start": 5212.32, "end": 5216.639, "text": "Probably I forgot to link those two together."}, {"id": "s725", "start": 5220.239, "end": 5226.56, "text": "Z G A five."}, {"id": "s726", "start": 5231.76, "end": 5233.28, "text": "Okay, cool."}, {"id": "s727", "start": 5233.28, "end": 5233.52, "text": "Yes."}, {"id": "s728", "start": 5233.52, "end": 5254.48, "text": "So if you can give that feedback let me just okay that will be fine um and yeah I think we would like to wrap this workshop then I'm sure like lot of you would be having a lot of questions so we can take all those like offline"}, {"id": "s729", "start": 5254.48, "end": 5259.44, "text": "uh we can meet uh and we can uh like talk about those questions."}, {"id": "s730", "start": 5259.44, "end": 5261.12, "text": "Yeah sure."}, {"id": "s731", "start": 5261.12, "end": 5262.4, "text": "Uh thank you everyone."}, {"id": "s732", "start": 5262.4, "end": 5264.0, "text": "Thanks for joining."}, {"id": "s733", "start": 5264.0, "end": 5269.84, "text": "Uh I think it was really meaningful and all of you like came here."}, {"id": "s734", "start": 5269.84, "end": 5271.36, "text": "Uh thanks a lot."}, {"id": "s735", "start": 5271.36, "end": 5271.6, "text": "Yeah."}, {"id": "s736", "start": 5271.6, "end": 5273.6, "text": "Thanks."}]}, {"id": "yqF6XhzbWBk", "title": "Inside 847 Production Clinical AI Notes — Sebastian Fox, Composo", "channel": "AI Engineer", "duration": 1188, "upload_date": null, "url": "https://www.youtube.com/watch?v=yqF6XhzbWBk", "api": "/api/talks/yqF6XhzbWBk.json", "summary_url": "/#yqF6XhzbWBk", "transcript": {"html": "/transcripts/yqF6XhzbWBk.html", "txt": "/transcripts/yqF6XhzbWBk.txt", "vtt": "/transcripts/yqF6XhzbWBk.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.64, "end": 17.08, "text": "This is a clinical note an AI wrote from a real consultation."}, {"id": "s3", "start": 17.08, "end": 19.32, "text": "Take a few seconds and read it."}, {"id": "s4", "start": 19.32, "end": 21.6, "text": "It reads like a routine headache."}, {"id": "s5", "start": 21.6, "end": 27.2, "text": "A new headache, likely tension type, take some paracetamol, come back if it doesn't settle."}, {"id": "s6", "start": 27.2, "end": 30.64, "text": "Looks completely fine, doesn't it?"}, {"id": "s7", "start": 30.8, "end": 32.96, "text": "Here's what's missing."}, {"id": "s8", "start": 32.96, "end": 36.76, "text": "In the room, she also mentioned her jaw aches when she chews."}, {"id": "s9", "start": 36.76, "end": 42.44, "text": "A new headache, over 50 with jaw pain on chewing, that's giant cell arthritis."}, {"id": "s10", "start": 42.44, "end": 45.0, "text": "And untreated, it can take her sight within days."}, {"id": "s11", "start": 45.0, "end": 48.2, "text": "It's a same day start steroids now emergency."}, {"id": "s12", "start": 48.2, "end": 50.72, "text": "And that one line, it never made it into the note."}, {"id": "s13", "start": 50.72, "end": 52.92, "text": "On the page, it's a paracetamol headache."}, {"id": "s14", "start": 52.92, "end": 55.96, "text": "And nothing in the note is technically wrong."}, {"id": "s15", "start": 55.96, "end": 59.68, "text": "It's the dangerous part is what isn't there."}, {"id": "s16", "start": 59.68, "end": 61.6, "text": "And so that's what I'm going to talk about today."}, {"id": "s17", "start": 61.6, "end": 67.28, "text": "The dangerous failures are often the ones that actually look completely fine."}, {"id": "s18", "start": 67.6, "end": 69.52, "text": "Firstly, who am I?"}, {"id": "s19", "start": 69.52, "end": 78.6, "text": "I'm Seb, medical doctor by background, and now I'm Composure, where we build AI evaluation systems for high-stakes domains."}, {"id": "s20", "start": 79.8, "end": 85.4, "text": "So, that one was a subtle kind of error, but sometimes it's not subtle at all."}, {"id": "s21", "start": 85.4, "end": 89.8, "text": "A man in his 20s sees his GP for a sore throat, tonsillitis."}, {"id": "s22", "start": 89.8, "end": 91.64, "text": "The AI writes that up."}, {"id": "s23", "start": 91.64, "end": 98.6, "text": "It gets him chest pain, suspected angina, diabetes medications he's never taken, and an address for a hospital that doesn't exist."}, {"id": "s24", "start": 98.6, "end": 101.16, "text": "And I I really like the LLM for this one."}, {"id": "s25", "start": 101.16, "end": 104.03999999999999, "text": "I think it's it's a good attempt at hospital name."}, {"id": "s26", "start": 104.03999999999999, "end": 110.08, "text": "Um and weeks later, he's invited to diabetic eye screening for diabetes he doesn't have."}, {"id": "s27", "start": 110.08, "end": 114.0, "text": "That's genuinely a real case that happened recently."}, {"id": "s28", "start": 114.0, "end": 126.64, "text": "Obviously, these kind of crazy ones someone notices, but it's those quiet ones that sit in the record uncalled that are the most challenging and can actually do a lot more damage."}, {"id": "s29", "start": 126.92, "end": 128.8, "text": "And they're not rare at all."}, {"id": "s30", "start": 128.8, "end": 137.44, "text": "In the largest real-world study of these notes, about 1 in 20 carried an error that was serious enough that it could cause significant harm to the patient."}, {"id": "s31", "start": 137.44, "end": 138.32, "text": "1 in 20."}, {"id": "s32", "start": 138.32, "end": 143.16, "text": "That's not theoretical in testing, that's in production on real patients."}, {"id": "s33", "start": 143.16, "end": 145.28, "text": "And that's only the serious the ones."}, {"id": "s34", "start": 145.28, "end": 153.16, "text": "If you widen that lens to all errors, nearly 1 in 5 had an important omission and more than 1 in 10 had a hallucination."}, {"id": "s35", "start": 153.76, "end": 157.959, "text": "And AI is being deployed at scale across healthcare fast."}, {"id": "s36", "start": 157.959, "end": 163.68, "text": "Ambient Scribes are one of the leading cases, already in about a third of US practices and climbing."}, {"id": "s37", "start": 163.68, "end": 168.28, "text": "Physician AI use doubled last year and none of this is tracked."}, {"id": "s38", "start": 168.28, "end": 172.52, "text": "So, for most of these systems, there's no adverse event reporting at all."}, {"id": "s39", "start": 172.52, "end": 175.88, "text": "The errors never show up as incidents, they just sit in the record."}, {"id": "s40", "start": 175.88, "end": 183.72, "text": "So, errors this common that are going unseen is is quite hard for me to believe that it's not already affecting patients."}, {"id": "s41", "start": 183.72, "end": 189.239, "text": "It's not that we checked and it's fine, it's that we're flying blind."}, {"id": "s42", "start": 189.36, "end": 194.68, "text": "And this isn't just a healthcare problem, it's every high-stakes use of AI."}, {"id": "s43", "start": 194.68, "end": 200.4, "text": "Healthcare shows it more viscerally because here being confidently wrong can be life and death."}, {"id": "s44", "start": 200.4, "end": 205.2, "text": "But, everything I show you can map straight back onto other domains as well."}, {"id": "s45", "start": 205.2, "end": 207.0, "text": "So, here's what I want to do."}, {"id": "s46", "start": 207.0, "end": 219.48, "text": "I'm going to show you what exactly is going wrong, why it's going wrong, why the systems we built to catch it don't work, and a suggestion at how maybe we can start to fix that."}, {"id": "s47", "start": 219.48, "end": 221.76, "text": "So, first, what's going wrong and why?"}, {"id": "s48", "start": 221.76, "end": 224.64, "text": "So, LLMs are getting good, obviously."}, {"id": "s49", "start": 224.64, "end": 227.16, "text": "They don't make stupid mistakes anymore most of the time."}, {"id": "s50", "start": 227.16, "end": 228.8, "text": "So, it's not about dumb errors."}, {"id": "s51", "start": 228.8, "end": 234.16, "text": "Everything here came out of three of the best production Ambient scribes on the market."}, {"id": "s52", "start": 234.16, "end": 235.6, "text": "Ones that we all know."}, {"id": "s53", "start": 235.6, "end": 238.4, "text": "We generated a load of notes across them last week."}, {"id": "s54", "start": 238.4, "end": 242.12, "text": "And this is exactly what's going on right now."}, {"id": "s55", "start": 242.12, "end": 243.64, "text": "This is every failure we found."}, {"id": "s56", "start": 243.64, "end": 246.36, "text": "Each dot is an error colored by type."}, {"id": "s57", "start": 246.36, "end": 247.959, "text": "Left to right, how much it matters."}, {"id": "s58", "start": 247.959, "end": 251.68, "text": "Bottom to top, whether a strong automated check catches it."}, {"id": "s59", "start": 251.68, "end": 254.44, "text": "And that split is the point."}, {"id": "s60", "start": 254.44, "end": 256.44, "text": "A handful up top get caught."}, {"id": "s61", "start": 256.44, "end": 258.88, "text": "But almost everything sits below the line."}, {"id": "s62", "start": 258.88, "end": 262.84, "text": "The ones I care about most are these on the bottom right."}, {"id": "s63", "start": 262.84, "end": 266.12, "text": "The high stakes and missed ones."}, {"id": "s64", "start": 266.12, "end": 269.56, "text": "Let me show you what a couple of those looks like."}, {"id": "s65", "start": 269.919, "end": 273.0, "text": "So, a woman comes in with a headache."}, {"id": "s66", "start": 273.0, "end": 277.36, "text": "Doctor asks, \"Did it come on suddenly or build up gradually?\""}, {"id": "s67", "start": 277.36, "end": 278.56, "text": "She says she doesn't know."}, {"id": "s68", "start": 278.56, "end": 279.76, "text": "It just happened."}, {"id": "s69", "start": 279.76, "end": 282.76, "text": "The note records that as abrupt sudden onset."}, {"id": "s70", "start": 282.76, "end": 284.72, "text": "And sudden onset is a red flag."}, {"id": "s71", "start": 284.72, "end": 290.8, "text": "You can see why it just happened could maybe be interpreted and inferred as abrupt onset."}, {"id": "s72", "start": 290.8, "end": 293.72, "text": "But, that's a feature that points to a bleed on the brain."}, {"id": "s73", "start": 293.72, "end": 294.56, "text": "She never said it."}, {"id": "s74", "start": 294.56, "end": 295.88, "text": "The model decided it."}, {"id": "s75", "start": 295.88, "end": 300.04, "text": "And now that one word drives the whole workup."}, {"id": "s76", "start": 300.24, "end": 301.64, "text": "Here's another."}, {"id": "s77", "start": 301.64, "end": 303.6, "text": "Doctor suggests running some tests."}, {"id": "s78", "start": 303.6, "end": 307.32, "text": "Patient says, \"Can we just try try antibiotics instead?\""}, {"id": "s79", "start": 307.32, "end": 311.68, "text": "They agree, hold off on the tests, treat, and see how it goes."}, {"id": "s80", "start": 311.68, "end": 313.48, "text": "Note records the opposite."}, {"id": "s81", "start": 313.48, "end": 315.32, "text": "Arrange tests today."}, {"id": "s82", "start": 315.32, "end": 319.08, "text": "It kept the plan that they talked out of, not the one they chose."}, {"id": "s83", "start": 319.08, "end": 323.96, "text": "Every line in the note reads fine because it's not really a hallucination at all."}, {"id": "s84", "start": 323.96, "end": 324.56, "text": "It's not wrong."}, {"id": "s85", "start": 324.56, "end": 326.48, "text": "It was there in the original."}, {"id": "s86", "start": 326.48, "end": 329.56, "text": "But, it's just not what they ended up deciding."}, {"id": "s87", "start": 330.12, "end": 333.72, "text": "So, why are these happening?"}, {"id": "s88", "start": 333.72, "end": 338.8, "text": "There's, you know, in ambient scribes, there's first transcription and then generation."}, {"id": "s89", "start": 338.8, "end": 342.4, "text": "A lot of it does happen on the transcription layer."}, {"id": "s90", "start": 342.4, "end": 345.44, "text": "It can be words misheard for their sound-alikes."}, {"id": "s91", "start": 345.44, "end": 348.56, "text": "So, Humalog heard Humulin."}, {"id": "s92", "start": 348.56, "end": 353.64, "text": "Two insulins on completely different timelines, so swapping them could crash a blood sugar."}, {"id": "s93", "start": 353.64, "end": 357.84000000000003, "text": "Hyperthyroidism becomes hypothyroidism, the opposite condition."}, {"id": "s94", "start": 357.84000000000003, "end": 364.76, "text": "Or a drop to no on uh no evidence of cancer that becomes evidence of cancer."}, {"id": "s95", "start": 364.76, "end": 367.8, "text": "So, these these are really hard problems, and they are common."}, {"id": "s96", "start": 367.8, "end": 374.4, "text": "Not the ones I'm going to focus on, because most of what goes wrong is actually even with a perfect transcript."}, {"id": "s97", "start": 374.4, "end": 379.76, "text": "It's the model reading the words correctly and still doing one of three things."}, {"id": "s98", "start": 379.76, "end": 388.2, "text": "Either it adds something that was never said, it changes something that was, or it omits something that should be there."}, {"id": "s99", "start": 388.48, "end": 392.04, "text": "Now, the blatant version of each of these is is really easy to catch."}, {"id": "s100", "start": 392.04, "end": 397.12, "text": "The hard part in all three is the same."}, {"id": "s101", "start": 397.12, "end": 401.72, "text": "It's telling whether that thing that was added or changed or dropped actually matters."}, {"id": "s102", "start": 401.72, "end": 406.32, "text": "It's detecting that slight over inference versus the dangerous fabrication."}, {"id": "s103", "start": 406.32, "end": 409.64, "text": "The harmless rephrase versus the meaningful edit."}, {"id": "s104", "start": 409.64, "end": 413.15999999999997, "text": "A dropped line of small talk versus a dropped allergy."}, {"id": "s105", "start": 413.15999999999997, "end": 419.2, "text": "So, the ones that matter slip through along with all of the ones that don't."}, {"id": "s106", "start": 419.96, "end": 425.8, "text": "That call which different matters is taste, effectively."}, {"id": "s107", "start": 425.8, "end": 429.4, "text": "Not aesthetic taste, but essentially judgment."}, {"id": "s108", "start": 429.4, "end": 435.48, "text": "It's It's whether in this context a missed allergy might kill someone or is not important."}, {"id": "s109", "start": 435.48, "end": 438.8, "text": "And I think there's there's three properties that really matter about this."}, {"id": "s110", "start": 438.8, "end": 443.76, "text": "It's tacit, so your domain experts have it, but they can't fully write it down."}, {"id": "s111", "start": 443.76, "end": 448.36, "text": "It's contextual, so the same detail is critical in one note, noise in the next."}, {"id": "s112", "start": 448.36, "end": 449.76, "text": "And it's moving."}, {"id": "s113", "start": 449.76, "end": 455.919, "text": "The model changes, guidelines change, two good doctors disagree, different hospitals have different definitions."}, {"id": "s114", "start": 455.919, "end": 459.4, "text": "So, there's no fixed target to write down."}, {"id": "s115", "start": 459.6, "end": 462.72, "text": "And so, the model knows the facts, ultimately."}, {"id": "s116", "start": 462.72, "end": 469.84000000000003, "text": "They're extraordinarily capable, but what they lack is a sense of what matters here, for this specific example."}, {"id": "s117", "start": 469.84000000000003, "end": 473.04, "text": "And that's why even brilliant models make these mistakes."}, {"id": "s118", "start": 473.04, "end": 478.12, "text": "So, one natural move, you're never going to make that generator perfect."}, {"id": "s119", "start": 478.12, "end": 479.24, "text": "Generator is cheap."}, {"id": "s120", "start": 479.24, "end": 482.6, "text": "Generation is cheap, so stop fixing it at the source."}, {"id": "s121", "start": 482.6, "end": 486.68, "text": "Let it write, put a checker after it, pass only what clears the bar."}, {"id": "s122", "start": 486.68, "end": 489.12, "text": "And that checker should be the easier job."}, {"id": "s123", "start": 489.12, "end": 495.28, "text": "The generator has to get everything right and it pay attention to lots of varying instructions."}, {"id": "s124", "start": 495.28, "end": 499.08, "text": "Whereas the checker only has to find the one thing that's wrong and just focus on that task."}, {"id": "s125", "start": 499.08, "end": 503.4, "text": "You can also give it more time, more tokens, the exact failure modes to hunt for."}, {"id": "s126", "start": 503.4, "end": 505.88, "text": "Evaluation should be easier than generation."}, {"id": "s127", "start": 505.88, "end": 509.6, "text": "It's the asymmetry of verification, verifies law."}, {"id": "s128", "start": 509.6, "end": 515.28, "text": "That's why AI is raced ahead anyway, you can cheaply check the answer, maths and code."}, {"id": "s129", "start": 515.28, "end": 518.4, "text": "And doing this is exactly what the best teams do."}, {"id": "s130", "start": 518.4, "end": 520.919, "text": "They put a lot of energy into evaluation."}, {"id": "s131", "start": 520.919, "end": 530.36, "text": "It starts with the gold standard, which is expert humans reviewing notes, which obviously works offline, but you can't put a human on every note in production."}, {"id": "s132", "start": 530.36, "end": 532.6, "text": "So, they automate it."}, {"id": "s133", "start": 532.6, "end": 545.36, "text": "They build a serious system and some of the best versions of this that I've seen are you take the transcript and the note and context, put in front of the judge,"}, {"id": "s134", "start": 545.36, "end": 550.12, "text": "a detailed rubric for faithfulness with worked, pass and fail examples."}, {"id": "s135", "start": 550.12, "end": 553.52, "text": "The rubric maybe auto-optimized with GPA or something like that."}, {"id": "s136", "start": 553.52, "end": 560.68, "text": "Maybe you have some deterministic NLP to sort of count up medical concepts that are differing between the two."}, {"id": "s137", "start": 560.68, "end": 562.36, "text": "That's a powerful system."}, {"id": "s138", "start": 562.36, "end": 569.2, "text": "And yet, I pulled all of those errors earlier out of Ambient Scribes in an afternoon."}, {"id": "s139", "start": 569.2, "end": 574.24, "text": "So, if the evaluation is this good, how are these errors still getting through?"}, {"id": "s140", "start": 574.24, "end": 579.96, "text": "So, I built this system and ran those same notes through it."}, {"id": "s141", "start": 579.96, "end": 582.88, "text": "And it scored most of them fine."}, {"id": "s142", "start": 582.88, "end": 586.886, "text": "It flagged a handful of them and signed off the rest."}, {"id": "s143", "start": 586.886, "end": 587.72, "text": "[clears throat]"}, {"id": "s144", "start": 587.72, "end": 592.88, "text": "But one in five of those clean passes still had some sort of serious error buried in it."}, {"id": "s145", "start": 592.88, "end": 595.72, "text": "And often that was an omission."}, {"id": "s146", "start": 595.72, "end": 599.84, "text": "The things that should have been there and actually quietly weren't."}, {"id": "s147", "start": 599.84, "end": 606.8, "text": "And that's the best version of a judge I've seen in a lot of teams and it waved them through."}, {"id": "s148", "start": 606.8, "end": 607.72, "text": "Why did it do that?"}, {"id": "s149", "start": 607.72, "end": 609.6, "text": "It's not stupid."}, {"id": "s150", "start": 609.6, "end": 616.16, "text": "It's a frontier model, serious engineering behind it, more than clever enough to read the whole encounter and catch every obvious error."}, {"id": "s151", "start": 616.16, "end": 617.88, "text": "And it's not blind, either."}, {"id": "s152", "start": 617.88, "end": 619.32, "text": "And and that's part of the trap."}, {"id": "s153", "start": 619.32, "end": 630.44, "text": "If you take a note that says start amoxicillin, when the real decision was actually to wait and see, it's faithful to the words, amoxicillin did come up, but it's a lie about the intent."}, {"id": "s154", "start": 630.44, "end": 634.2, "text": "A good judge might catch that, might."}, {"id": "s155", "start": 634.2, "end": 642.48, "text": "But whether it flags that versus the other doesn't have other things that it could comment on depends on it knowing what decision matters most."}, {"id": "s156", "start": 642.48, "end": 648.6, "text": "And so it's not blind, it just can't tell what counts, essentially."}, {"id": "s157", "start": 648.6, "end": 659.6, "text": "So the note passes confidently and you put a judge like that in front of your system, you've not added a safety net, you've added a second silent failure that just nods along with the first."}, {"id": "s158", "start": 659.6, "end": 661.68, "text": "And here's the root of it."}, {"id": "s159", "start": 661.68, "end": 667.839, "text": "So in math or code, the verifier comes with free, a unit test, a compiler."}, {"id": "s160", "start": 668.44, "end": 672.56, "text": "But for is this note safe and complete, there's no unit test."}, {"id": "s161", "start": 672.56, "end": 682.64, "text": "You have to build the verifier yourself and verification is only easier than generation for the easy bit, i.e. spot the difference between transcription note."}, {"id": "s162", "start": 682.64, "end": 683.32, "text": "But that's not the hard bit."}, {"id": "s163", "start": 683.32, "end": 686.6, "text": "The hard bit is knowing of all those differences you've seen, which matter."}, {"id": "s164", "start": 686.6, "end": 691.12, "text": "And that's harder than writing that plausibly good general note in the first place."}, {"id": "s165", "start": 691.12, "end": 696.4, "text": "Because that standard of good was never written down anywhere that the judge can read it."}, {"id": "s166", "start": 696.4, "end": 700.92, "text": "A rubric that you pre-specify is only the taste you could write down."}, {"id": "s167", "start": 700.92, "end": 703.92, "text": "The taste that matters is the part that you couldn't."}, {"id": "s168", "start": 703.92, "end": 708.96, "text": "And so here's here's a bit more detail on what what matters looks like."}, {"id": "s169", "start": 708.96, "end": 715.24, "text": "Two patients, both with blood in their urine, both notes dropped the same kind of line where they'd been on holiday."}, {"id": "s170", "start": 715.24, "end": 717.64, "text": "One had been to France, the other to Lake Malawi."}, {"id": "s171", "start": 717.64, "end": 721.8, "text": "Same English emission, same shape, same mistake."}, {"id": "s172", "start": 721.96, "end": 730.32, "text": "Well, not really, because blood in the urine obviously warranted away and you're going to have to investigate it, but the France trip is irrelevant."}, {"id": "s173", "start": 730.32, "end": 732.84, "text": "The Lake Malawi trip is the diagnosis."}, {"id": "s174", "start": 732.84, "end": 739.68, "text": "Fresh water in sub-Saharan Africa means schistosomiasis until proven otherwise and it completely changes what the management plan is."}, {"id": "s175", "start": 739.68, "end": 744.84, "text": "So that same dropped line in one note is pure noise, in the other it's the answer."}, {"id": "s176", "start": 744.84, "end": 749.0, "text": "And which one it is, you simply just can't write all of that down in advance."}, {"id": "s177", "start": 749.0, "end": 758.12, "text": "So if you can't write it down, you can't write taste down, how do you get that into your evaluator and your whole application system?"}, {"id": "s178", "start": 758.12, "end": 761.4, "text": "Well, we've answered a version of this before."}, {"id": "s179", "start": 761.4, "end": 764.8389999999999, "text": "RLHF exists because you can't write the reward function for good."}, {"id": "s180", "start": 764.8389999999999, "end": 767.12, "text": "You learn it from examples by showing it."}, {"id": "s181", "start": 767.12, "end": 770.8389999999999, "text": "The only question is where you keep what you've learned."}, {"id": "s182", "start": 770.8389999999999, "end": 772.64, "text": "And there's three places."}, {"id": "s183", "start": 772.64, "end": 777.96, "text": "You can either specify it up front, you can stuff the prompt, write the perfect rubric."}, {"id": "s184", "start": 777.96, "end": 781.52, "text": "We just watched that fail essentially."}, {"id": "s185", "start": 781.52, "end": 793.56, "text": "You can bake into the weights, fine-tuning or continual learning, but for a standard that's still moving and a score that has to be explainable, the weights, I think, are the wrong place to keep that."}, {"id": "s186", "start": 793.56, "end": 799.4, "text": "They go stale, they can't tell you why and you can't change them without a retrain."}, {"id": "s187", "start": 799.4, "end": 805.4, "text": "So there's the third option, which I'll show you, which is you essentially just keep the taste as the examples themselves."}, {"id": "s188", "start": 805.4, "end": 815.28, "text": "Past judgments, expert corrections, references, and for each output, you retrieve the ones that bear on it into the judges context, add one and it's live on the next call."}, {"id": "s189", "start": 815.28, "end": 818.4, "text": "You can point at exactly what moved the score."}, {"id": "s190", "start": 818.4, "end": 823.96, "text": "For this problem, it's both better and also cheaper to do."}, {"id": "s191", "start": 824.48, "end": 828.48, "text": "So, that's the way to do that is one repeating loop, three steps."}, {"id": "s192", "start": 828.48, "end": 839.16, "text": "Discover the failure modes from real outputs, capture how your experts judge them, calibrate every output against that, and when the standard moves, the loop moves with it."}, {"id": "s193", "start": 839.16, "end": 840.72, "text": "So, in more detail, discover."}, {"id": "s194", "start": 840.72, "end": 843.68, "text": "You don't write that rubric in a vacuum."}, {"id": "s195", "start": 843.68, "end": 846.52, "text": "You have to put the system in production and look at the real outputs."}, {"id": "s196", "start": 846.52, "end": 849.52, "text": "Cluster what goes wrong and the failure modes surface on their own."}, {"id": "s197", "start": 849.52, "end": 850.76, "text": "You name them."}, {"id": "s198", "start": 850.76, "end": 852.36, "text": "This is your failure mode ontology."}, {"id": "s199", "start": 852.36, "end": 855.76, "text": "Discover from your data, not guess on a whiteboard."}, {"id": "s200", "start": 855.76, "end": 856.96, "text": "And you can't shortcut it."}, {"id": "s201", "start": 856.96, "end": 865.08, "text": "The ways that a real system goes wrong are effectively unbounded and synthetic test cases only cover the failures you already imagined."}, {"id": "s202", "start": 865.08, "end": 867.88, "text": "The ones that hurt you are often the ones that you didn't."}, {"id": "s203", "start": 867.88, "end": 870.04, "text": "And you'll only find those in real outputs."}, {"id": "s204", "start": 870.04, "end": 879.32, "text": "So, this ontology is your map, what to capture judgment on, what to retrieve against, including the failures that you never thought to check for."}, {"id": "s205", "start": 879.32, "end": 882.2, "text": "After that, it's capture and then calibrate."}, {"id": "s206", "start": 882.2, "end": 887.32, "text": "So, those discovered modes, they're not a checklist that the judge runs, but they organize everything."}, {"id": "s207", "start": 887.32, "end": 895.4, "text": "What you What you ask your experts about, how you index the cases that you'll retrieve, and capturing is a simple part."}, {"id": "s208", "start": 895.4, "end": 897.56, "text": "You put real outputs in front of your experts."}, {"id": "s209", "start": 897.56, "end": 900.36, "text": "Clinicians spend a focused few hours leaving comments."}, {"id": "s210", "start": 900.36, "end": 904.16, "text": "A session doesn't have to be a month-long labeling project to start with."}, {"id": "s211", "start": 904.16, "end": 906.08, "text": "And you collect their judgment."}, {"id": "s212", "start": 906.08, "end": 908.44, "text": "Not just a score, but the reasoning and corrections."}, {"id": "s213", "start": 908.44, "end": 912.64, "text": "And over time, you build up that record of how your experts actually judge."}, {"id": "s214", "start": 912.64, "end": 914.04, "text": "You then calibrate."}, {"id": "s215", "start": 914.04, "end": 918.36, "text": "That's the the the generic part of this you can write down once easily."}, {"id": "s216", "start": 918.36, "end": 922.0, "text": "For example, be faithful or don't drop anything important."}, {"id": "s217", "start": 922.0, "end": 925.96, "text": "But what you can't write down is what counts as a serious miss for this specific note."}, {"id": "s218", "start": 925.96, "end": 927.36, "text": "That's contextual."}, {"id": "s219", "start": 927.36, "end": 929.6, "text": "And it shifts from note to note."}, {"id": "s220", "start": 929.6, "end": 934.16, "text": "So, what we recommend is you assemble that on the fly."}, {"id": "s221", "start": 934.16, "end": 938.6, "text": "For each output, your judging agent pulls in everything that bears on this one case."}, {"id": "s222", "start": 938.6, "end": 947.68, "text": "It's memory of the most similar outputs that it's judged before and how they scored, the expert corrections that apply, the reference documents and guidelines."}, {"id": "s223", "start": 947.88, "end": 950.52, "text": "Just context engineering per output."}, {"id": "s224", "start": 950.52, "end": 963.52, "text": "And crucially not just one pre-specified rubric in a vacuum, and not a model that you have to retrain every week, but a full sort of case-specific standard assembled for this output."}, {"id": "s225", "start": 963.52, "end": 965.56, "text": "And it's a loop as well."}, {"id": "s226", "start": 965.56, "end": 969.12, "text": "Every output you judge, every correction, sharpens the next."}, {"id": "s227", "start": 969.12, "end": 975.12, "text": "And when a brand new failure mode appears, Discovery surface it, and it flows straight back in."}, {"id": "s228", "start": 975.12, "end": 985.8389999999999, "text": "And so, to make that a little bit more concrete, that headache that I opened with, the one that was really a possible blindness emergency, here's the kinds of things that you would want to pull in for that note."}, {"id": "s229", "start": 985.8389999999999, "end": 993.32, "text": "The nearest cases that your experts have judged, not this exact patient, but the same shape, maybe a red flag filed as routine."}, {"id": "s230", "start": 993.32, "end": 1004.68, "text": "Uh the corrections that apply, like a new headache over 50, um suggests something that you need to check red flags on, and some criteria and guidelines, and you pull"}, {"id": "s231", "start": 1004.68, "end": 1006.72, "text": "all of that in."}, {"id": "s232", "start": 1006.72, "end": 1008.2, "text": "It hasn't memorized this case."}, {"id": "s233", "start": 1008.2, "end": 1010.04, "text": "It's a capable model."}, {"id": "s234", "start": 1010.04, "end": 1015.04, "text": "And handed the right context to reason from, held against that, the dropped red flag stands out."}, {"id": "s235", "start": 1015.04, "end": 1016.28, "text": "It was never actually hard to catch."}, {"id": "s236", "start": 1016.28, "end": 1019.2, "text": "It just didn't know what mattered."}, {"id": "s237", "start": 1019.2, "end": 1031.839, "text": "And so, if you take that same data set generated notes from the start and pass it through these three judging systems, the first, a strong off-the-shelf judge with a rubric frontier model,"}, {"id": "s238", "start": 1031.839, "end": 1037.079, "text": "um it's better than a coin flip, but it misses most of what matters."}, {"id": "s239", "start": 1037.079, "end": 1048.92, "text": "The second, that sort of serious system that we talked about before, rubric, deeper, maybe some detona stick checks, better again, but still missing quite a lot of what counts."}, {"id": "s240", "start": 1048.92, "end": 1059.84, "text": "The third, the judge running this loop, discovered failure modes, calibrated for output against what experts judged, is performing a lot better on this specific data set."}, {"id": "s241", "start": 1059.84, "end": 1061.2, "text": "Same notes."}, {"id": "s242", "start": 1061.2, "end": 1063.68, "text": "The only thing that changes is what the judge was shown."}, {"id": "s243", "start": 1063.68, "end": 1068.48, "text": "And the difference here, it's not more compute or a better prompt, it's that the first two fight taste and lose."}, {"id": "s244", "start": 1068.48, "end": 1073.16, "text": "They guess the criteria, they freeze one standard, and they go stale."}, {"id": "s245", "start": 1073.16, "end": 1075.96, "text": "This repeating evolving loop does the opposite."}, {"id": "s246", "start": 1075.96, "end": 1081.52, "text": "It discovers the modes, fits the standard to each mode, and keeps learning."}, {"id": "s247", "start": 1081.92, "end": 1092.36, "text": "So, you might not write chemical notes, but if you ship anything where being confidently wrong has a cost, the contract review that misses the clauses that change the deal,"}, {"id": "s248", "start": 1092.36, "end": 1097.96, "text": "the support agent that promises a refund you don't offer, the same thing is true for all of those."}, {"id": "s249", "start": 1097.96, "end": 1103.44, "text": "It's watched, if at all, by a judge with no taste for what matters in your domain."}, {"id": "s250", "start": 1103.44, "end": 1106.12, "text": "So, three things."}, {"id": "s251", "start": 1106.12, "end": 1109.72, "text": "Discover your failure modes from real outputs, don't guess them."}, {"id": "s252", "start": 1109.72, "end": 1114.2, "text": "Capture your experts' judgment on them, the standard that they can't write down."}, {"id": "s253", "start": 1114.2, "end": 1120.92, "text": "Calibrate every output against the cases that they've already judged, not a static rubric, not a retrained model."}, {"id": "s254", "start": 1120.92, "end": 1122.92, "text": "Then keep that loop running."}, {"id": "s255", "start": 1122.92, "end": 1130.4, "text": "And if you take one thing away, easiest place to start is your experts leaving free-form comments on real outputs."}, {"id": "s256", "start": 1130.4, "end": 1134.88, "text": "That's the real That's the raw material for everything else."}, {"id": "s257", "start": 1134.92, "end": 1140.72, "text": "Your judge can verify anything that you write down in advance, but the standard of good never could be."}, {"id": "s258", "start": 1140.72, "end": 1147.08, "text": "And so, stop trying to write it all down in advance, and just start capturing it case by case, and evolving it."}, {"id": "s259", "start": 1147.08, "end": 1151.72, "text": "That's why evaluation can't be a thing you build once and freeze."}, {"id": "s260", "start": 1151.72, "end": 1155.6, "text": "The standard it checks against doesn't exist on paper."}, {"id": "s261", "start": 1155.6, "end": 1162.0, "text": "It has to be discovered from real outputs captured from the people who hold it and kept alive as it moves."}, {"id": "s262", "start": 1162.0, "end": 1167.24, "text": "Evaluation isn't something you have, it's something that you do continuously over time."}, {"id": "s263", "start": 1167.24, "end": 1169.188, "text": "Thank you."}, {"id": "s264", "start": 1169.188, "end": 1171.188, "text": "[applause]"}]}, {"id": "zCJtYuqwm7E", "title": "Coding Agents Don't Scale Themselves. Neither Do Your Teams. — Patrick Debois, Tessl", "channel": "AI Engineer", "duration": 1326, "upload_date": null, "url": "https://www.youtube.com/watch?v=zCJtYuqwm7E", "api": "/api/talks/zCJtYuqwm7E.json", "summary_url": "/#zCJtYuqwm7E", "transcript": {"html": "/transcripts/zCJtYuqwm7E.html", "txt": "/transcripts/zCJtYuqwm7E.txt", "vtt": "/transcripts/zCJtYuqwm7E.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.56, "end": 14.0, "text": "Well, welcome."}, {"id": "s3", "start": 14.0, "end": 16.6, "text": "Um last day, I guess."}, {"id": "s4", "start": 16.6, "end": 18.2, "text": "That's what happens."}, {"id": "s5", "start": 18.2, "end": 23.84, "text": "Um I'm going to talk to you maybe not on the technical side, but more on the organizational side."}, {"id": "s6", "start": 23.84, "end": 30.0, "text": "So, if you're here for any technology, you can still leave if you want to."}, {"id": "s7", "start": 31.48, "end": 38.36, "text": "So, in 2009, um a lot of people were telling me the idea of continuous delivery was crazy."}, {"id": "s8", "start": 38.36, "end": 44.76, "text": "And I feel we're in kind of the same era or kind of the same thing right now with a dark factory."}, {"id": "s9", "start": 44.76, "end": 46.56, "text": "It will not work here."}, {"id": "s10", "start": 46.56, "end": 50.16, "text": "That's what I keep hearing over and over again."}, {"id": "s11", "start": 50.16, "end": 54.28, "text": "Um but what they're actually signaling to me, we're not ready yet."}, {"id": "s12", "start": 54.28, "end": 56.96, "text": "So, it's not the technology that can't make it work."}, {"id": "s13", "start": 56.96, "end": 64.08, "text": "It's not something they won't be able to do eventually, but they're just not set up for this."}, {"id": "s14", "start": 64.16, "end": 73.08, "text": "And there's been a lot of conference talks here about optimizing agents with loops and harnesses and all those pieces, and I think that's great."}, {"id": "s15", "start": 73.08, "end": 75.28, "text": "But eventually, we'll get there, right?"}, {"id": "s16", "start": 75.28, "end": 77.6, "text": "It's not that this is the rocket science."}, {"id": "s17", "start": 77.6, "end": 84.88, "text": "And yes, we'll have to assemble this in a good way, but one day, this will kind of become commodity."}, {"id": "s18", "start": 84.88, "end": 92.84, "text": "Somewhere maybe even going into one of the, you know, frontier labs that just offers this as a service and will kind of make this work."}, {"id": "s19", "start": 92.84, "end": 98.08, "text": "Uh and that's not going to be the differentiator um for your organization."}, {"id": "s20", "start": 98.08, "end": 101.0, "text": "So, I'm starting from there up."}, {"id": "s21", "start": 101.0, "end": 108.32, "text": "Assume we're heading towards the dark factory, some kind of form of autonomous working within an organization."}, {"id": "s22", "start": 108.32, "end": 120.4, "text": "Um what I've seen for the people adopting this within our organization, including here where I work at Tessal, it changes dynamic of the way you collaborate around us."}, {"id": "s23", "start": 120.4, "end": 132.08, "text": "And for those familiar, there's like Conway's Law, like, you know, the way you organize yourselves and the tools, there is a relationship on how they interact and kind of work together on this."}, {"id": "s24", "start": 132.08, "end": 142.12, "text": "But today, I'm not talking about like how do you become better with your agent, but it is about how will will change your team dynamics, your platform, and your organization."}, {"id": "s25", "start": 142.12, "end": 145.2, "text": "So, that's what I'll take you through."}, {"id": "s26", "start": 146.24, "end": 147.28, "text": "Enabling the team."}, {"id": "s27", "start": 147.28, "end": 151.961, "text": "I assume most of you somewhere work in a team and that you're not somewhere a solopreneur"}, {"id": "s28", "start": 151.961, "end": 152.48, "text": "[music]"}, {"id": "s29", "start": 152.48, "end": 153.36, "text": "working."}, {"id": "s30", "start": 153.36, "end": 165.52, "text": "So, it kind of works different than just you with your Claude code and a team working together around that with Claude or any of the coding agents there as well."}, {"id": "s31", "start": 166.68, "end": 176.8, "text": "The narrative that I heard a lot is well, the developer eventually becomes more of a conductor and an orchestrator of agents."}, {"id": "s32", "start": 176.8, "end": 178.07999999999998, "text": "And then I think that's fair."}, {"id": "s33", "start": 178.07999999999998, "end": 186.12, "text": "That's been an evolution that we're on on the path where more like becoming the managers of the agent, they're kind of dealing with the agents."}, {"id": "s34", "start": 186.12, "end": 192.84, "text": "Now, what I've seen is that if eventually a lot of developers told me, \"We didn't sign up for this."}, {"id": "s35", "start": 192.84, "end": 196.56, "text": "We didn't sign up for better prompting, writing better specs."}, {"id": "s36", "start": 196.56, "end": 197.68, "text": "We're engineers."}, {"id": "s37", "start": 197.68, "end": 198.92000000000002, "text": "We're technical.\""}, {"id": "s38", "start": 198.92000000000002, "end": 204.68, "text": "And that creates friction, like, is this the role that we really want to do?"}, {"id": "s39", "start": 204.68, "end": 213.28, "text": "There was a thing that came around which maybe is more context engineering that put a first step around like, \"Hey, it's not just a prompt."}, {"id": "s40", "start": 213.28, "end": 214.48, "text": "We'll test the prompt."}, {"id": "s41", "start": 214.48, "end": 216.68, "text": "We'll kind of evaluate the prompt."}, {"id": "s42", "start": 216.68, "end": 219.92000000000002, "text": "We'll kind of distribute the prompt and kind of optimize the prompt.\""}, {"id": "s43", "start": 219.92000000000002, "end": 231.2, "text": "So, yes, there's a little bit of engineering, but still a lot of developers kind of felt empty just working kind of with a prompt and a specification as such."}, {"id": "s44", "start": 231.2, "end": 242.96, "text": "What I've seen is that when we started introducing harness and loops and eventually more autonomous work within the whole organization, a new technical path opened."}, {"id": "s45", "start": 242.96, "end": 254.8, "text": "All of a sudden, we were helping the agent with tooling, building tooling for the agent, and that kind of reignited some of the developers who kind of felt that it wasn't for them."}, {"id": "s46", "start": 254.8, "end": 257.56, "text": "Now, all of a sudden, they were like, \"Yes, we can do this."}, {"id": "s47", "start": 257.56, "end": 258.519, "text": "We have that knowledge."}, {"id": "s48", "start": 258.519, "end": 263.56, "text": "We're like somehow helping this even with a kind of programmatic way.\""}, {"id": "s49", "start": 263.56, "end": 277.2, "text": "So, I I think that's interesting that the identity, where we say abstraction, abstraction, abstraction, technically, all of a sudden, the craft created some new location for more engineering stuff to go to."}, {"id": "s50", "start": 277.48, "end": 282.68, "text": "Now, when I get the question, \"Can we please help people?\""}, {"id": "s51", "start": 282.68, "end": 285.52, "text": "And there's skeptical people, what do they do?"}, {"id": "s52", "start": 285.52, "end": 297.04, "text": "And I always really say that these are really great people to engage in creating better context for the agent because you tell them, \"Please improve."}, {"id": "s53", "start": 297.04, "end": 300.52, "text": "Please put all your knowledge to improve the result of the agent.\""}, {"id": "s54", "start": 300.52, "end": 302.08, "text": "And the same with the harness."}, {"id": "s55", "start": 302.08, "end": 316.84, "text": "So, if you have those kind of more resistant people that like complain maybe about the quality that things were produced by just the vanilla kind of coding agent, use almost that anger, use kind of that skepticism"}, {"id": "s56", "start": 316.84, "end": 319.56, "text": "to kind of make it better."}, {"id": "s57", "start": 320.48, "end": 334.68, "text": "And the big mentality shift, if I would advise a a a a company right now for their developers, is kind of stop fixing the code that the agent kind of produced,"}, {"id": "s58", "start": 334.68, "end": 336.64, "text": "but improve the system."}, {"id": "s59", "start": 336.64, "end": 341.76, "text": "I'm I have I'm not the only one saying this in this event, but kind of that is the difference."}, {"id": "s60", "start": 341.76, "end": 343.8, "text": "Like you kind of improve the system."}, {"id": "s61", "start": 343.8, "end": 351.08, "text": "And I think it was Swyx uh a couple of years who said it, like stop building the thing, but build the thing that builds the thing, right?"}, {"id": "s62", "start": 351.08, "end": 356.6, "text": "So, we going on that abstraction where that is with context, with harness, with loops."}, {"id": "s63", "start": 356.6, "end": 369.64, "text": "And that is kind of the change that a lot of people who are still very tightly in the loop, auto completion, prompting, that they kind of need to think about elevating this to the system thinking."}, {"id": "s64", "start": 369.64, "end": 379.84, "text": "So, what we're really trying to do is minimize the human touches, but still with good engineering practices."}, {"id": "s65", "start": 379.84, "end": 383.48, "text": "And some of the narrative that comes up more often in the beginning, we're like, \"Oh, great."}, {"id": "s66", "start": 383.48, "end": 387.48, "text": "I write code in a prompt, and then it gives a result, and we can keep going.\""}, {"id": "s67", "start": 387.48, "end": 397.04, "text": "Where we now see, well, we're kind of instructing it through prompts, but we're also instructing this like, \"Please do it with tests."}, {"id": "s68", "start": 397.04, "end": 399.04, "text": "Please update the documentation."}, {"id": "s69", "start": 399.04, "end": 399.8, "text": "Please do this.\""}, {"id": "s70", "start": 399.8, "end": 405.72, "text": "All the things that we're saying to good engineers, we're now asking the agents to do."}, {"id": "s71", "start": 405.72, "end": 413.0, "text": "So, if you still have people who kind of yoloing their way into this, I think you should tell them, \"No, stop doing this.\""}, {"id": "s72", "start": 413.0, "end": 422.52, "text": "Like, engineering practices still matter for you to maintain the system, and also for the agent to keep getting better at this."}, {"id": "s73", "start": 423.96, "end": 435.4, "text": "What I started seeing in some of the more advanced kind of teams is that their rituals of \"Hey, we're doing a planning, and we're doing a retro in a team.\""}, {"id": "s74", "start": 435.4, "end": 439.08, "text": "That they weren't about like, \"Hey, we had issues with the code.\""}, {"id": "s75", "start": 439.08, "end": 442.48, "text": "But we're saying, \"We had issues with the system.\""}, {"id": "s76", "start": 442.48, "end": 449.4, "text": "So, on the retro part is like, \"Hey, the agent went over and over hit this problem."}, {"id": "s77", "start": 449.4, "end": 451.08, "text": "Can we fix the system?\""}, {"id": "s78", "start": 451.08, "end": 453.52, "text": "That's something you'll learn in the retro."}, {"id": "s79", "start": 453.52, "end": 466.15999999999997, "text": "And on the planning side, what I started seeing is that things who were that were sufficiently scoped enough were easy to pick up by agents because they were well-defined"}, {"id": "s80", "start": 466.15999999999997, "end": 471.28, "text": "and what still was left for the humans were the things that weren't scoped out well."}, {"id": "s81", "start": 471.28, "end": 480.08, "text": "So, we were like a split in the planning where we said, \"These things can straight go into agents, well-defined, and the harness is getting better, and this is conversational"}, {"id": "s82", "start": 480.08, "end": 483.48, "text": "things that we need to decide as a team.\""}, {"id": "s83", "start": 484.2, "end": 492.6, "text": "And what I find important is you there's a certain kind of cycle that developers go through."}, {"id": "s84", "start": 492.6, "end": 498.2, "text": "Yes, they learn first about prompting, they get better, specs, context, harness loop."}, {"id": "s85", "start": 498.2, "end": 500.8, "text": "Also, the industry is learning like that."}, {"id": "s86", "start": 500.8, "end": 507.4, "text": "But, there is the lead of the team can say, \"Well, stop prompting."}, {"id": "s87", "start": 507.4, "end": 509.32, "text": "Make the context reusable.\""}, {"id": "s88", "start": 509.32, "end": 510.24, "text": "Now, we got that."}, {"id": "s89", "start": 510.24, "end": 511.36, "text": "Now, we jump to the next."}, {"id": "s90", "start": 511.36, "end": 525.4, "text": "So, part of the team lead is putting that pace and almost that constraint and that directive in the team where it is doesn't work where you just say, \"Go figure it out and do something on your own.\""}, {"id": "s91", "start": 525.64, "end": 538.76, "text": "And one of the impacts of that is that if you start producing as a team more, the people downstream, GTM, people like that, they have a hard time keeping up."}, {"id": "s92", "start": 538.76, "end": 540.72, "text": "Even users have a hard time keeping up."}, {"id": "s93", "start": 540.72, "end": 542.72, "text": "So, you need to help them also with automation."}, {"id": "s94", "start": 542.72, "end": 545.56, "text": "So, your harness doesn't stop at your coding."}, {"id": "s95", "start": 545.56, "end": 549.2, "text": "It also is extended to those people as well."}, {"id": "s96", "start": 549.2, "end": 556.88, "text": "And the same thing with kind of requiring uh like gathering requirements, the input might not come fast enough for your team."}, {"id": "s97", "start": 556.88, "end": 562.28, "text": "So, that's another kind of piece that you need to tap into that workflow as well."}, {"id": "s98", "start": 564.04, "end": 570.64, "text": "There's a lot of metrics that people are saying like, \"Hey, is your like tokens spend and all that stuff?\""}, {"id": "s99", "start": 570.64, "end": 577.84, "text": "I started to believe in these two metrics kind of see on how to be more productive."}, {"id": "s100", "start": 577.84, "end": 586.6, "text": "One is you start measuring how many human touches you still do to have the agent do the right thing."}, {"id": "s101", "start": 586.6, "end": 593.04, "text": "That's supposed to go down the better your harness is, the better your context is, the better your guidelines are."}, {"id": "s102", "start": 593.04, "end": 601.92, "text": "And on the other hand, if you're going from solo to shared system, that becomes a multiplier."}, {"id": "s103", "start": 601.92, "end": 605.8, "text": "You fix something once, everybody gets the benefit."}, {"id": "s104", "start": 605.8, "end": 616.68, "text": "This is not the multiplier from the one person becoming the 10x person, but the one change that optimized the agents has an impact on all the people."}, {"id": "s105", "start": 616.68, "end": 625.2, "text": "So, that is kind of the part that we're all You can start that in a team working together within your repo, sharing the context, working on a harness."}, {"id": "s106", "start": 625.2, "end": 628.56, "text": "But what you basically want to do is you want to scale this out."}, {"id": "s107", "start": 628.56, "end": 632.28, "text": "So, you come into the realm of the platform people, right?"}, {"id": "s108", "start": 632.28, "end": 636.96, "text": "Because they're the typical shared organization working on this."}, {"id": "s109", "start": 636.96, "end": 646.56, "text": "Now, the platform people, they might not be paying close attention because they're like infrastructure and cloud and working on like MCP gateway and stuff like that."}, {"id": "s110", "start": 646.56, "end": 649.8389999999999, "text": "But there's new things like bubbling up there."}, {"id": "s111", "start": 649.8389999999999, "end": 659.44, "text": "They need to think about like maybe skill registries or eval systems for your context and guardrails specifically for coding agents and identities and stuff."}, {"id": "s112", "start": 659.44, "end": 664.44, "text": "So, they need maybe a little bit of a hand kind of growing to that role."}, {"id": "s113", "start": 664.44, "end": 670.52, "text": "And that kind of central role, it's hard."}, {"id": "s114", "start": 670.52, "end": 675.8, "text": "You need an owner to drive that program, but is it the platform team?"}, {"id": "s115", "start": 675.8, "end": 677.8389999999999, "text": "Is it developer experience team?"}, {"id": "s116", "start": 677.8389999999999, "end": 684.04, "text": "They don't typically own any of those pieces of the infrastructure and the other people don't really do the development."}, {"id": "s117", "start": 684.04, "end": 694.32, "text": "So, there's somewhere a blend, but you need to kind of make sure that there's an owner driving this centralized piece and not just within your team."}, {"id": "s118", "start": 694.32, "end": 696.72, "text": "Because you won't have paved roads."}, {"id": "s119", "start": 696.72, "end": 698.28, "text": "And that's how I see it."}, {"id": "s120", "start": 698.28, "end": 700.88, "text": "Reusable context across teams."}, {"id": "s121", "start": 700.88, "end": 704.52, "text": "Why are we all inventing how we do the authentication system?"}, {"id": "s122", "start": 704.52, "end": 704.92, "text": "Right?"}, {"id": "s123", "start": 704.92, "end": 706.4, "text": "This is a shared component."}, {"id": "s124", "start": 706.4, "end": 708.32, "text": "Let's put it in the registry."}, {"id": "s125", "start": 708.32, "end": 710.8, "text": "Why are you building all your harnesses?"}, {"id": "s126", "start": 710.8, "end": 715.72, "text": "Well, if we're all using the same linters and the same security tools, that's a reusable component."}, {"id": "s127", "start": 715.72, "end": 724.76, "text": "So, I think that will centralize similar to the paved path for cloud into that platform registry of reuse."}, {"id": "s128", "start": 725.48, "end": 733.96, "text": "But, if everybody can put stuff like on the internet in a repo, it becomes a sprawl."}, {"id": "s129", "start": 733.96, "end": 738.6, "text": "And it becomes a thing like, well, he has a skill, he's maintaining it."}, {"id": "s130", "start": 738.6, "end": 742.2, "text": "That person is also has a similar skill and forked it."}, {"id": "s131", "start": 742.2, "end": 743.2, "text": "Now, what I do?"}, {"id": "s132", "start": 743.2, "end": 745.4, "text": "Like, which one do I pick?"}, {"id": "s133", "start": 745.4, "end": 750.4, "text": "So, there is a kind of thing that you say, there's an owner for this area."}, {"id": "s134", "start": 750.4, "end": 753.44, "text": "And they also care about making it testable."}, {"id": "s135", "start": 753.44, "end": 760.44, "text": "They make sure that it's modular, that other people can extend kind of the context, for example, or the harness, that it's security scanned."}, {"id": "s136", "start": 760.44, "end": 772.48, "text": "So, you build kind of a more centralized and the fact that it's secured and kind of maintained as something instead of just something I share around in my organization."}, {"id": "s137", "start": 772.68, "end": 774.8, "text": "Now, that consensus is hard."}, {"id": "s138", "start": 774.8, "end": 779.32, "text": "I'm not saying this is tabs versus spaces, but at times it feels like that."}, {"id": "s139", "start": 779.32, "end": 787.16, "text": "If you have two developer teams having to have consensus on the how the way they work, that requires a lot of communication and brokerage."}, {"id": "s140", "start": 787.16, "end": 793.76, "text": "So, you probably don't end up with one thing, but a catalog of three, four paved roads where they can pick off."}, {"id": "s141", "start": 793.76, "end": 797.48, "text": "And they can still do their own, but that's on their own budget."}, {"id": "s142", "start": 797.48, "end": 798.4, "text": "Right?"}, {"id": "s143", "start": 798.4, "end": 806.12, "text": "The centralized pieces will be maintained, and that is supposed to be the easy way of adoption to go there."}, {"id": "s144", "start": 806.2, "end": 813.36, "text": "Now, if they do this blindly, we also want to make sure that they know what it costs."}, {"id": "s145", "start": 813.36, "end": 818.84, "text": "Because if we visualize the cost, they might be eager to do some optimization in there."}, {"id": "s146", "start": 818.84, "end": 819.36, "text": "Right?"}, {"id": "s147", "start": 819.36, "end": 823.24, "text": "And that kind of is part of the platform team is making that visible."}, {"id": "s148", "start": 823.24, "end": 824.44, "text": "How much is he spending?"}, {"id": "s149", "start": 824.44, "end": 826.52, "text": "How much is that kind of like helping?"}, {"id": "s150", "start": 826.52, "end": 832.68, "text": "If I can reduce the number of iterations the agent has to run through, that is an optimization that I can run."}, {"id": "s151", "start": 832.68, "end": 837.8, "text": "But if I don't visualize that and I just see the end result, then we don't know, right?"}, {"id": "s152", "start": 837.8, "end": 841.24, "text": "So, that is part of the platform team helping people."}, {"id": "s153", "start": 841.24, "end": 853.48, "text": "And so, what I'm arguing is that we should somewhere move from the solo developer to the team shared kind of context and pieces to a multiplayer system in the organization."}, {"id": "s154", "start": 853.48, "end": 857.44, "text": "And I think that's where the multiplication effect will happen."}, {"id": "s155", "start": 857.44, "end": 857.76, "text": "Right?"}, {"id": "s156", "start": 857.76, "end": 864.32, "text": "Because you're have this flywheel of improvements that go into multiple directions."}, {"id": "s157", "start": 865.56, "end": 871.68, "text": "Now, one layer higher, the VP of Engineering says, \"How do I enable the organization?\""}, {"id": "s158", "start": 871.68, "end": 872.36, "text": "Right?"}, {"id": "s159", "start": 872.36, "end": 877.36, "text": "And that is that I you know, I can predict the story in your organization."}, {"id": "s160", "start": 877.36, "end": 883.28, "text": "Hackathon, a lunch and learn, let's share the successes, have a shared Slack channel, have a champions program."}, {"id": "s161", "start": 883.28, "end": 885.2, "text": "That's all generic transformation."}, {"id": "s162", "start": 885.2, "end": 887.24, "text": "It could have been Agile that transformed like that."}, {"id": "s163", "start": 887.24, "end": 888.24, "text": "It could have been DevOps."}, {"id": "s164", "start": 888.24, "end": 889.56, "text": "It doesn't matter."}, {"id": "s165", "start": 889.56, "end": 901.2, "text": "And on the other side, we know that the strategy of just, you know, give life to something and educate people, do something, let a thousand flowers bloom, it doesn't work."}, {"id": "s166", "start": 901.2, "end": 911.28, "text": "So, what I'm advocating is that the kind of on the organizational is that you give the team leads and the platform that mandate to start doing that work."}, {"id": "s167", "start": 911.28, "end": 914.72, "text": "And it's not the solo developer piece."}, {"id": "s168", "start": 915.2, "end": 921.92, "text": "Now, finding people that help you externally is is mess."}, {"id": "s169", "start": 921.92, "end": 929.8, "text": "Yes, we have all the titles, the new job titles, AI product engineer, forward deployed engineer, you know, there was a whole talk on this, agentic engineer, AI engineer."}, {"id": "s170", "start": 929.8, "end": 932.32, "text": "It doesn't mean anything."}, {"id": "s171", "start": 932.32, "end": 940.24, "text": "You cannot judge whether what the kind of the maturity of this because nobody's really that mature."}, {"id": "s172", "start": 940.24, "end": 947.2, "text": "But it's a signal when you put a job posting out there that people might with the new intention will be looking there."}, {"id": "s173", "start": 947.2, "end": 951.24, "text": "But it's not a validation of the skills as such, right?"}, {"id": "s174", "start": 951.24, "end": 957.52, "text": "So that is challenging for people um kind of hiring people."}, {"id": "s175", "start": 957.72, "end": 970.76, "text": "Now, they come to the interview and I heard stories about uh people using AI to reflect uh in their ears be response to the interview person and stuff like that."}, {"id": "s176", "start": 970.76, "end": 982.52, "text": "I think what what I hear from most companies is they say first step is we give them an exercise and we want them to really go nuts on the AI to solve this."}, {"id": "s177", "start": 982.52, "end": 985.88, "text": "You know, if they have help from AI, that's all good."}, {"id": "s178", "start": 985.88, "end": 992.0, "text": "That shows you kind of like how much they can kind of leverage the AI to do this."}, {"id": "s179", "start": 992.0, "end": 998.08, "text": "Now, after they pass this, you do a walk-through and you actually say, \"Please explain me what happened."}, {"id": "s180", "start": 998.08, "end": 1000.08, "text": "Why is this a good idea?\""}, {"id": "s181", "start": 1000.08, "end": 1005.4, "text": "That's where you are testing the taste and the engineering skills on why they're doing this."}, {"id": "s182", "start": 1005.4, "end": 1007.96, "text": "First part AI, then engineering."}, {"id": "s183", "start": 1007.96, "end": 1011.44, "text": "And this third thing is how do you collaborate?"}, {"id": "s184", "start": 1011.44, "end": 1012.56, "text": "Are you willing to share?"}, {"id": "s185", "start": 1012.56, "end": 1014.96, "text": "Are you open or are you a solo player?"}, {"id": "s186", "start": 1014.96, "end": 1017.8, "text": "That's another signal that you tap into."}, {"id": "s187", "start": 1017.8, "end": 1018.24, "text": "Right?"}, {"id": "s188", "start": 1018.24, "end": 1025.64, "text": "But that fits into that whole thing of like making it shareable, making it reusable, making it engineering grade within our organization."}, {"id": "s189", "start": 1025.64, "end": 1033.959, "text": "Those are the people that you look for, not people who studied ML or AI, not people who are like experts per se at the coding."}, {"id": "s190", "start": 1033.959, "end": 1035.48, "text": "There's a blend on this."}, {"id": "s191", "start": 1035.48, "end": 1045.56, "text": "Now, you might not find a person who has all three, which is okay, but at least you know, like, hey, they're very savvy on this piece, but then for the other piece, they need mentoring"}, {"id": "s192", "start": 1045.56, "end": 1047.16, "text": "and they need tutoring."}, {"id": "s193", "start": 1047.16, "end": 1053.16, "text": "But, like, don't put all the three pieces into one kind of saying like they're junior or they're senior."}, {"id": "s194", "start": 1053.16, "end": 1056.6, "text": "They have like different skills on there."}, {"id": "s195", "start": 1056.88, "end": 1066.68, "text": "Now, the VP of Engineering has to defend this and they would uh have to make the case, right?"}, {"id": "s196", "start": 1066.68, "end": 1069.08, "text": "Well, we have X amount of licenses that we sold."}, {"id": "s197", "start": 1069.08, "end": 1072.8, "text": "We have faster delivery, maybe they they can promise, but hard to prove."}, {"id": "s198", "start": 1072.8, "end": 1076.8, "text": "We have quality that improved, again, hard to say."}, {"id": "s199", "start": 1076.8, "end": 1089.76, "text": "But, similar to what I said with the metrics of how effective are your agents, you can show that how much turns and how much improvement that you're making on that journey."}, {"id": "s200", "start": 1089.76, "end": 1092.64, "text": "And same thing, how much there is reuse."}, {"id": "s201", "start": 1092.64, "end": 1104.28, "text": "So, it's an easier way to kind of show metrics than comparing productivity with and without agent decoding that help you in kind of those discussions as well."}, {"id": "s202", "start": 1104.28, "end": 1116.16, "text": "And so, when people say, uh the vendors are charging completely nuts, so we're going to limit the spends, you shouldn't say like, let's limit all the spends."}, {"id": "s203", "start": 1116.16, "end": 1133.72, "text": "Your reflection should be, let's optimize the spend and help them kind of reduce that uh in a good way, where that's as simple as saying, pick the right model, educate them on the model, but also on like giving them better context and harnesses because that will make your cost go down there as well."}, {"id": "s204", "start": 1135.0, "end": 1141.32, "text": "The debate around smaller and bigger teams, yes, it's nice to have like one person who can do it all."}, {"id": "s205", "start": 1141.32, "end": 1142.64, "text": "That's the ultimate dream."}, {"id": "s206", "start": 1142.64, "end": 1144.68, "text": "They can do everything."}, {"id": "s207", "start": 1144.68, "end": 1149.72, "text": "Typically, they're paired with a complementary skill, maybe PM, design, and so on."}, {"id": "s208", "start": 1149.72, "end": 1155.48, "text": "Okay, then we need a backup if one of them is on holiday so that amounts back to three."}, {"id": "s209", "start": 1155.48, "end": 1160.2, "text": "And then maybe somebody has to care about production and tickets coming in."}, {"id": "s210", "start": 1160.2, "end": 1168.64, "text": "Could be the same people if you're really productive, but yeah, you know, you lose speed of features if you're still doing bugs and that depends a little bit on your quality."}, {"id": "s211", "start": 1168.64, "end": 1177.08, "text": "And then there's the junior you want to get on the road as well to kind of make sure they're still learning what good looks like in one of those three areas."}, {"id": "s212", "start": 1177.08, "end": 1186.0, "text": "So, I think we're still limited in the way in an organization that we're not going to each team being a solo or one or two."}, {"id": "s213", "start": 1186.0, "end": 1188.84, "text": "Yes, a lot of experience, but I think that is the thing."}, {"id": "s214", "start": 1188.84, "end": 1193.8, "text": "Now, we keep investing in actually education for that piece as well."}, {"id": "s215", "start": 1193.8, "end": 1198.72, "text": "So, one of the final things is the dark factory, which is probably a dim factory."}, {"id": "s216", "start": 1198.72, "end": 1201.64, "text": "You have to see what risk you're willing to take for what features."}, {"id": "s217", "start": 1201.64, "end": 1214.84, "text": "So, not all features will become autonomous, but you can invest more in auditing like problems, like who changed the code, verifiers that kind of check whether that code was useful and when it fails,"}, {"id": "s218", "start": 1214.84, "end": 1217.04, "text": "you invest in situational awareness as well."}, {"id": "s219", "start": 1217.04, "end": 1229.6, "text": "So, there's a whole spectrum from being a micro manager to being on a autonomous approval that everything kind of is correct, but you make the decision on what your risk level is."}, {"id": "s220", "start": 1229.6, "end": 1232.52, "text": "And I think your mode is capturing the knowledge."}, {"id": "s221", "start": 1232.52, "end": 1232.72, "text": "Right?"}, {"id": "s222", "start": 1232.72, "end": 1241.52, "text": "The knowledge you're putting now into skills, you're in your context, and maybe in your harness, the way you kind of restrain this, your business context."}, {"id": "s223", "start": 1241.52, "end": 1247.08, "text": "And for me, that kind of brings continuous delivery actually to continuous learning."}, {"id": "s224", "start": 1247.08, "end": 1255.16, "text": "And if you ask the question of how fast can we swap in swap out something new, that's your reactive mode."}, {"id": "s225", "start": 1255.16, "end": 1266.16, "text": "And if you can improve that ultimately, it's not about making the whole system more reliable, but can I keep it reliable while changing more of the system."}, {"id": "s226", "start": 1267.0, "end": 1273.36, "text": "I'm working on a website that kind of where I try to list some of the agent enablement patterns that I described."}, {"id": "s227", "start": 1273.36, "end": 1276.8, "text": "I couldn't list them all within this time."}, {"id": "s228", "start": 1276.8, "end": 1278.08, "text": "Tell me what you're missing."}, {"id": "s229", "start": 1278.08, "end": 1280.36, "text": "I'm trying to source social kind of stories."}, {"id": "s230", "start": 1280.36, "end": 1289.08, "text": "So, if you have a story of how things are going in your organization, please tell me and I am happy to put on a link in there as well."}, {"id": "s231", "start": 1289.08, "end": 1293.56, "text": "And if you're interested in kind of the slides, happy to share those."}, {"id": "s232", "start": 1293.56, "end": 1299.48, "text": "And I think if there's one takeaway, it's not the solo player that will win the game."}, {"id": "s233", "start": 1299.48, "end": 1303.72, "text": "It's kind of like at the different levels how we improve our organizations."}, {"id": "s234", "start": 1303.72, "end": 1308.049, "text": "Thank you very very much for listening and I hope it was useful."}, {"id": "s235", "start": 1308.049, "end": 1310.049, "text": "[applause]"}, {"id": "s236", "start": 1323.77, "end": 1325.77, "text": "[music]"}]}, {"id": "zaGyGgLW3SM", "title": "Unlock Agent Autonomy: The Runtime for AI-Native Systems — Tushar Jain, Docker", "channel": "AI Engineer", "duration": 1370, "upload_date": null, "url": "https://www.youtube.com/watch?v=zaGyGgLW3SM", "api": "/api/talks/zaGyGgLW3SM.json", "summary_url": "/#zaGyGgLW3SM", "transcript": {"html": "/transcripts/zaGyGgLW3SM.html", "txt": "/transcripts/zaGyGgLW3SM.txt", "vtt": "/transcripts/zaGyGgLW3SM.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 12.76, "end": 13.84, "text": "All right."}, {"id": "s3", "start": 13.84, "end": 14.56, "text": "Can we start?"}, {"id": "s4", "start": 14.56, "end": 15.68, "text": "All right, there you go."}, {"id": "s5", "start": 15.68, "end": 18.44, "text": "Um hey everyone, welcome."}, {"id": "s6", "start": 18.44, "end": 20.12, "text": "Uh I hope everyone's enjoying the conference."}, {"id": "s7", "start": 20.12, "end": 22.56, "text": "This is uh a really fun conference."}, {"id": "s8", "start": 22.56, "end": 24.84, "text": "I've enjoyed all the talks and the presents here."}, {"id": "s9", "start": 24.84, "end": 29.76, "text": "Okay, so we're going to talk about unlocking agent autonomy and what that means."}, {"id": "s10", "start": 29.76, "end": 31.16, "text": "These last years have been crazy."}, {"id": "s11", "start": 31.16, "end": 32.279, "text": "I'm sure you all felt it, right?"}, {"id": "s12", "start": 32.279, "end": 36.0, "text": "Like 2 years ago we were talking about chatbots and here we are."}, {"id": "s13", "start": 36.0, "end": 40.28, "text": "We're now in this world where we all see the autonomy we get from agents."}, {"id": "s14", "start": 40.28, "end": 44.28, "text": "Agents have become powerful and they'll continue being so."}, {"id": "s15", "start": 44.28, "end": 53.2, "text": "Um at this point, the next big challenge like we spent the last 2 years trying to make agents more intelligent and powerful and that'll keep going and I think we're almost there."}, {"id": "s16", "start": 53.2, "end": 58.8, "text": "I think the next challenge in front of us is actually harder and more important, which is how to make them safer."}, {"id": "s17", "start": 58.8, "end": 63.2, "text": "At this point, I don't think intelligence is the next big blocker for us to leverage agents."}, {"id": "s18", "start": 63.2, "end": 68.8, "text": "It is actually how to do so safely so we can give them all the access and autonomy they need."}, {"id": "s19", "start": 68.8, "end": 70.84, "text": "Just as a story, this is a small anecdote."}, {"id": "s20", "start": 70.84, "end": 73.24, "text": "I'm sure everyone here has some version of this."}, {"id": "s21", "start": 73.24, "end": 76.2, "text": "Um this is one of many agents I run."}, {"id": "s22", "start": 76.2, "end": 77.68, "text": "This runs every night."}, {"id": "s23", "start": 77.68, "end": 81.96000000000001, "text": "It looks at some repos I care about and you know, just does some analysis for me."}, {"id": "s24", "start": 81.96000000000001, "end": 85.76, "text": "What activities happen, who's been doing what, what progress has been made."}, {"id": "s25", "start": 85.76, "end": 94.64, "text": "Um I have others that might do some more, might analyze the code review comments, have some of my own analysis in there, be like, what was the tone, who did what, how were they acting?"}, {"id": "s26", "start": 94.64, "end": 95.44, "text": "I'm a manager."}, {"id": "s27", "start": 95.44, "end": 98.96000000000001, "text": "This is not meant for public views, just meant to help me keep a pulse."}, {"id": "s28", "start": 98.96000000000001, "end": 101.75999999999999, "text": "But still, it's not something I want shared."}, {"id": "s29", "start": 101.75999999999999, "end": 104.16, "text": "It's for my own knowledge, something to keep up."}, {"id": "s30", "start": 104.16, "end": 106.28, "text": "This agent has been running for weeks just fine."}, {"id": "s31", "start": 106.28, "end": 109.4, "text": "Runs every night, sends me an email, I look at it."}, {"id": "s32", "start": 109.4, "end": 115.4, "text": "Randomly one day, uh it decided to post this report as a PR on the repo."}, {"id": "s33", "start": 115.4, "end": 115.88, "text": "Why?"}, {"id": "s34", "start": 115.88, "end": 119.47999999999999, "text": "Nothing's changed, just the model decided to be helpful."}, {"id": "s35", "start": 119.47999999999999, "end": 121.831, "text": "Um so"}, {"id": "s36", "start": 121.831, "end": 122.44, "text": "[laughter]"}, {"id": "s37", "start": 122.44, "end": 123.24, "text": "Thank you."}, {"id": "s38", "start": 123.24, "end": 126.32, "text": "Um But this is a fundamental thing, right?"}, {"id": "s39", "start": 126.32, "end": 128.28, "text": "Like agents do stuff."}, {"id": "s40", "start": 128.28, "end": 129.92, "text": "They try to be helpful."}, {"id": "s41", "start": 129.92, "end": 132.32, "text": "They increase and change the goal they're doing."}, {"id": "s42", "start": 132.32, "end": 139.24, "text": "Either cuz they themselves are just trying to be helpful, or they get confused, they make a mistake, or they get prompt injected, right?"}, {"id": "s43", "start": 139.24, "end": 142.0, "text": "Um This is a simple example, honestly."}, {"id": "s44", "start": 142.0, "end": 144.16, "text": "Like it's easy to fix this."}, {"id": "s45", "start": 144.16, "end": 147.48, "text": "That agent should never have had write access to GitHub."}, {"id": "s46", "start": 147.48, "end": 150.44, "text": "It should have just had read access, and that's an easy fix."}, {"id": "s47", "start": 150.44, "end": 152.64, "text": "Um But it's not that simple, right?"}, {"id": "s48", "start": 152.64, "end": 153.56, "text": "That's a very easy case."}, {"id": "s49", "start": 153.56, "end": 155.48, "text": "Let's take Let's take another example."}, {"id": "s50", "start": 155.48, "end": 160.2, "text": "Let's imagine I have an agent, and I'm asking it to do investigate a latency spike."}, {"id": "s51", "start": 160.2, "end": 161.44, "text": "Check out latency spike."}, {"id": "s52", "start": 161.44, "end": 162.4, "text": "Great, it starts."}, {"id": "s53", "start": 162.4, "end": 164.07999999999998, "text": "It's looking at the logs."}, {"id": "s54", "start": 164.07999999999998, "end": 166.28, "text": "It sees, \"Oh, I think there's another service here."}, {"id": "s55", "start": 166.28, "end": 168.16, "text": "I want the logs to for that service."}, {"id": "s56", "start": 168.16, "end": 169.8, "text": "Let me get that access.\""}, {"id": "s57", "start": 169.8, "end": 172.36, "text": "\"Oh, I see this uh might be related to a recent check-in."}, {"id": "s58", "start": 172.36, "end": 176.4, "text": "I would like access to GitHub, to the repos, to read the recent commits.\""}, {"id": "s59", "start": 176.4, "end": 178.16, "text": "Uh this looks like it may have happened."}, {"id": "s60", "start": 178.16, "end": 183.12, "text": "Let me look at Slack conversations to see has there been any chatter about this to learn from there."}, {"id": "s61", "start": 183.12, "end": 185.28, "text": "Great, it asked for Slack access."}, {"id": "s62", "start": 185.28, "end": 188.16, "text": "These are all reasonable steps, right?"}, {"id": "s63", "start": 188.16, "end": 188.8, "text": "This makes sense."}, {"id": "s64", "start": 188.8, "end": 191.04, "text": "This is what I would expect an engineer to do."}, {"id": "s65", "start": 191.04, "end": 198.239, "text": "But what's happening is that each time as it's expanding its goal, expanding what it's doing, it's crossing the trust boundary."}, {"id": "s66", "start": 198.239, "end": 200.28, "text": "It's increasing the scope of the task."}, {"id": "s67", "start": 200.28, "end": 202.44, "text": "And this is fundamentally where we run into trouble."}, {"id": "s68", "start": 202.44, "end": 204.68, "text": "How do we know it's okay to give it access?"}, {"id": "s69", "start": 204.68, "end": 213.76, "text": "We now end up with an agent that has access to everything at the same time, and so anything becomes a vector where the blast radius expands."}, {"id": "s70", "start": 213.76, "end": 217.16, "text": "This is fundamentally the big difference we're running into and the big challenge."}, {"id": "s71", "start": 217.16, "end": 221.12, "text": "Earlier, traditional software was deterministic, you could define the permissions."}, {"id": "s72", "start": 221.12, "end": 229.239, "text": "But now as agents become autonomous um and they gain and they try to solve more problems, what they're doing changes at runtime."}, {"id": "s73", "start": 229.239, "end": 231.76, "text": "The access they need changes at runtime."}, {"id": "s74", "start": 231.76, "end": 233.92000000000002, "text": "And right now we haven't truly solved this."}, {"id": "s75", "start": 233.92000000000002, "end": 240.36, "text": "We haven't solved how to give them exactly the access they need, how to do this in a safe manner, how to know if it's correct."}, {"id": "s76", "start": 240.36, "end": 245.32, "text": "And this is the fundamental thing I think we have to go solve now to actually unlock autonomy."}, {"id": "s77", "start": 245.32, "end": 251.32, "text": "And so we go away from like can it do this to like should it do this and how do we give it that access?"}, {"id": "s78", "start": 253.0, "end": 259.2, "text": "Also, this is something we can't just rely on the next frontier agent being really good and not making a mistake."}, {"id": "s79", "start": 259.2, "end": 261.92, "text": "We're going to use more than one model."}, {"id": "s80", "start": 261.92, "end": 264.96, "text": "I just think fundamentally we're all already there, I think."}, {"id": "s81", "start": 264.96, "end": 270.04, "text": "No one is going to bet everything on a single model or even a single frontier lab."}, {"id": "s82", "start": 270.04, "end": 272.96, "text": "You'll use models from different frontier labs as they make progress."}, {"id": "s83", "start": 272.96, "end": 275.32, "text": "And importantly, we will all use open models."}, {"id": "s84", "start": 275.32, "end": 281.28, "text": "We're all living through the GLM 5.2 um uh amazing progress last few weeks."}, {"id": "s85", "start": 281.28, "end": 284.24, "text": "And this is just the start, but there'll be more and more of this."}, {"id": "s86", "start": 284.24, "end": 287.48, "text": "So we'll end up wanting to use different models for different reasons."}, {"id": "s87", "start": 287.48, "end": 295.44, "text": "Privacy, cost, etc. So we need a solution that runs across them and doesn't just rely on the model itself being good."}, {"id": "s88", "start": 295.44, "end": 297.32, "text": "We'll also use multiple harnesses."}, {"id": "s89", "start": 297.32, "end": 300.84, "text": "You won't just use a single harness from a single provider."}, {"id": "s90", "start": 300.84, "end": 312.04, "text": "One, you should like betting entirely on a harness from a frontier lab makes it hard for to get choice across models from labs and across open models."}, {"id": "s91", "start": 312.04, "end": 314.48, "text": "Two, there'll be harnesses for different use cases."}, {"id": "s92", "start": 314.48, "end": 317.8, "text": "Right now we're all very focused on coding, but we're going to expand."}, {"id": "s93", "start": 317.8, "end": 322.2, "text": "Uh the open claw moment happened, but it's still not landed fully, right?"}, {"id": "s94", "start": 322.2, "end": 326.32, "text": "You can imagine sales people, marketing people having claws running doing stuff."}, {"id": "s95", "start": 326.32, "end": 330.72, "text": "So the kind of harnesses and agents will use will grow and you'll build your own."}, {"id": "s96", "start": 330.72, "end": 336.64, "text": "So we need something that works across harnesses and works across models."}, {"id": "s97", "start": 336.64, "end": 344.08, "text": "Um and we need something that it just doesn't just depend on no mistake happening, but constrains the environment around it."}, {"id": "s98", "start": 344.08, "end": 357.15999999999997, "text": "So what we want is an environment where the agent runs, where something goes wrong, there's limited blast radius, and we only give the access it needs, and we do this in a safe and correct manner."}, {"id": "s99", "start": 357.15999999999997, "end": 359.96, "text": "We think the best way to do this is to create a runtime."}, {"id": "s100", "start": 359.96, "end": 362.64, "text": "Is to have a runtime that all agents run on."}, {"id": "s101", "start": 362.64, "end": 366.16, "text": "So, this runs across any agent, any harness, and across models."}, {"id": "s102", "start": 366.16, "end": 374.64, "text": "And that's where we create these uh uh artifact these these capabilities that we want."}, {"id": "s103", "start": 374.76, "end": 377.2, "text": "There are three core pillars here."}, {"id": "s104", "start": 377.2, "end": 379.16, "text": "First is containment."}, {"id": "s105", "start": 379.16, "end": 382.84, "text": "You need to create an environment where it's controlled what the agent can get."}, {"id": "s106", "start": 382.84, "end": 385.36, "text": "Um this does mean sandboxes."}, {"id": "s107", "start": 385.36, "end": 390.44, "text": "And look, you can like throw a rock and find many sandbox something at this point, but it's more than that."}, {"id": "s108", "start": 390.44, "end": 397.0, "text": "So, when you have a you have a sandbox in which you can you run the agent and it gets only what it needs."}, {"id": "s109", "start": 397.0, "end": 404.48, "text": "And importantly, you run the agent inside the untrusted boundary, and you run controls outside, so outside of the VM boundary."}, {"id": "s110", "start": 404.48, "end": 407.15999999999997, "text": "Second, you scope access."}, {"id": "s111", "start": 407.15999999999997, "end": 411.8, "text": "This is more than just what network can you access, or even what tool can you access."}, {"id": "s112", "start": 411.8, "end": 414.24, "text": "But you need to give actual scoped capabilities."}, {"id": "s113", "start": 414.24, "end": 421.28, "text": "So, in our example, the agent now wants to access Slack to search for any conversations around this incident."}, {"id": "s114", "start": 421.28, "end": 425.4, "text": "Well, I could give it read only to Slack, but that's still more than what I want to give it."}, {"id": "s115", "start": 425.4, "end": 429.68, "text": "Maybe there's a single channel with only conversation with the incident, that's great."}, {"id": "s116", "start": 429.68, "end": 430.919, "text": "Often times that's not the case."}, {"id": "s117", "start": 430.919, "end": 437.919, "text": "It could be spread across many channels or a team channel with other conversation and I don't want this agent to get access to other content."}, {"id": "s118", "start": 437.919, "end": 439.4, "text": "How do I do this?"}, {"id": "s119", "start": 439.4, "end": 443.68, "text": "The upfront predefined tools typically don't aren't that fine scoped."}, {"id": "s120", "start": 443.68, "end": 455.15999999999997, "text": "What what the runtime should do is maybe create a just-in-time tool that composes over existing Slack MCV tools or anything else, but restricts access to just conversations about the incident."}, {"id": "s121", "start": 455.15999999999997, "end": 457.919, "text": "And that's what the agent gets access to."}, {"id": "s122", "start": 457.919, "end": 469.6, "text": "We create and use and instead of having a big sandbox that we keep adding capabilities to, take that part, run it in a scoped sandbox for that task with just the scoped capability it needs."}, {"id": "s123", "start": 469.6, "end": 484.0, "text": "This now starts to build the runtime and fabric for us where we can give agents fine-scoped access, break down work into tasks across security boundaries, run those in contained sandboxes with just access they need."}, {"id": "s124", "start": 484.0, "end": 493.36, "text": "This feels much better and now we're getting to place where we can be safer, but we're still not done cuz the core a what access should you get?"}, {"id": "s125", "start": 493.36, "end": 496.2, "text": "If this is asking for Slack, is that correct?"}, {"id": "s126", "start": 496.2, "end": 502.28, "text": "Um if it's asking to read this read from the Slack channel or have write access to something, should that be allowed?"}, {"id": "s127", "start": 502.28, "end": 509.64, "text": "How do you differentiate between what is correct, where it's making a mistake or being incorrectly eager, or where it's being prompt injected?"}, {"id": "s128", "start": 509.64, "end": 513.24, "text": "This is where we have to This is what intent-based access becomes."}, {"id": "s129", "start": 513.24, "end": 524.6, "text": "We need to understand the user's intent or the task intent, take the context in in account, and then decide what access you get and how that should be run in which contained environment."}, {"id": "s130", "start": 524.6, "end": 530.68, "text": "And so that becomes the next big challenge for us to do, which is how do we safely evolve the capabilities the task gets."}, {"id": "s131", "start": 530.68, "end": 532.8, "text": "So in this example, it makes sense."}, {"id": "s132", "start": 532.8, "end": 537.08, "text": "Okay, investigating this incident, you're asking for read access to Slack for that incident."}, {"id": "s133", "start": 537.08, "end": 537.88, "text": "That seems rational."}, {"id": "s134", "start": 537.88, "end": 539.44, "text": "Let's do Let's do that."}, {"id": "s135", "start": 539.44, "end": 541.96, "text": "All of a sudden, you would like email access."}, {"id": "s136", "start": 541.96, "end": 542.44, "text": "Why?"}, {"id": "s137", "start": 542.44, "end": 548.76, "text": "Nothing about the prompt said you should have that, so I'll deny that or I'll raise it up for human approval."}, {"id": "s138", "start": 548.76, "end": 561.96, "text": "But do this not just space in the frontier lab of the model that's running, but do this independent running at like a control layer in in the in the control sandbox layer in the core governance aspect"}, {"id": "s139", "start": 561.96, "end": 565.4, "text": "independent across all models and all harnesses."}, {"id": "s140", "start": 565.4, "end": 579.88, "text": "This is sort of This starts to get us to a world now where we can actually have a runtime layer and run agents safely in a contained manner with scoped access and now deal with the dynamic aspect of this."}, {"id": "s141", "start": 579.88, "end": 581.2, "text": "And to be clear, look, this is a hard problem."}, {"id": "s142", "start": 581.2, "end": 585.32, "text": "It's not fully solved yet, but this is the world I think we have to move towards."}, {"id": "s143", "start": 585.32, "end": 593.84, "text": "But we're not done once we do this, cuz if you're building a runtime, not only does it have to provide the safety aspects you need, it also has to meet"}, {"id": "s144", "start": 593.84, "end": 596.6, "text": "um our functional aspects."}, {"id": "s145", "start": 596.6, "end": 598.28, "text": "The runtime needs to follow the work."}, {"id": "s146", "start": 598.28, "end": 601.48, "text": "This can't just be something that runs locally or only in the cloud."}, {"id": "s147", "start": 601.48, "end": 605.8, "text": "It needs to go wherever we work, wherever agents work, and that's going to be everywhere."}, {"id": "s148", "start": 605.8, "end": 614.12, "text": "We'll work locally, we'll have agents running in the cloud, we'll do orchestration across clouds, we'll run them in our own VPC or in the customer's VPC as need be."}, {"id": "s149", "start": 614.12, "end": 619.4, "text": "The runtime has to be omnipresent and be able to move uh across all these environments."}, {"id": "s150", "start": 619.4, "end": 626.84, "text": "And ideally, it should be connected by a fabric, and so you can move agents up and down as you need to do."}, {"id": "s151", "start": 628.84, "end": 631.04, "text": "Docker spent the last Everyone knows Docker."}, {"id": "s152", "start": 631.04, "end": 633.32, "text": "I'm going to assume everyone knows Docker has used Docker."}, {"id": "s153", "start": 633.32, "end": 638.0, "text": "And you know it's the containers, and what Docker solved the last decade is portability."}, {"id": "s154", "start": 638.0, "end": 641.2, "text": "How do we get software from a laptop to the cloud?"}, {"id": "s155", "start": 641.2, "end": 646.88, "text": "We're taking all of that experience and building a runtime and evolving that to now solve for safety."}, {"id": "s156", "start": 646.88, "end": 652.0, "text": "You still need portability, but you need safety, and you need this runtime to run across all environments."}, {"id": "s157", "start": 652.0, "end": 653.56, "text": "Um that's what we're focused on now."}, {"id": "s158", "start": 653.56, "end": 663.96, "text": "This is a new It starts with a brand new VM technology, and on top of that uh a bunch of advancements on MCP and policy and safety and governance."}, {"id": "s159", "start": 663.96, "end": 666.12, "text": "So, I'm going to show you a quick demo."}, {"id": "s160", "start": 666.12, "end": 669.0, "text": "Uh let's see if I can get this done in time."}, {"id": "s161", "start": 669.0, "end": 675.24, "text": "Also, you'll have to bear with me for a minute while I figure out how to do this here."}, {"id": "s162", "start": 675.24, "end": 677.52, "text": "Let's see."}, {"id": "s163", "start": 681.12, "end": 683.32, "text": "I had this figured out."}, {"id": "s164", "start": 683.32, "end": 685.28, "text": "Up."}, {"id": "s165", "start": 685.28, "end": 689.28, "text": "Uh Let's just do that."}, {"id": "s166", "start": 692.72, "end": 693.6, "text": "Do you guys see that?"}, {"id": "s167", "start": 693.6, "end": 694.6, "text": "Cool."}, {"id": "s168", "start": 694.6, "end": 695.08, "text": "All right."}, {"id": "s169", "start": 695.08, "end": 699.96, "text": "So, is that visible?"}, {"id": "s170", "start": 700.12, "end": 700.6, "text": "You'll see that?"}, {"id": "s171", "start": 700.6, "end": 701.12, "text": "Cool."}, {"id": "s172", "start": 701.12, "end": 701.6, "text": "All right."}, {"id": "s173", "start": 701.6, "end": 702.68, "text": "I'm going to type over here."}, {"id": "s174", "start": 702.68, "end": 703.96, "text": "We'll see if this works."}, {"id": "s175", "start": 703.96, "end": 705.8, "text": "So, oops."}, {"id": "s176", "start": 705.8, "end": 708.0, "text": "Give me a minute."}, {"id": "s177", "start": 709.6, "end": 711.88, "text": "Let's start really basic."}, {"id": "s178", "start": 711.88, "end": 714.96, "text": "So, what we Oh my god."}, {"id": "s179", "start": 715.24, "end": 717.6, "text": "I'm there."}, {"id": "s180", "start": 717.6, "end": 718.24, "text": "Cool."}, {"id": "s181", "start": 718.24, "end": 721.44, "text": "Um just to orient you all, so you've got a new tool called SPX."}, {"id": "s182", "start": 721.44, "end": 722.96, "text": "Want to guess what it stands for?"}, {"id": "s183", "start": 722.96, "end": 729.24, "text": "This is This runs with a new micro VM that runs across all environments, Windows, Mac, Linux, cloud, everywhere."}, {"id": "s184", "start": 729.24, "end": 731.0, "text": "Uh let's start simple just so you can see this."}, {"id": "s185", "start": 731.0, "end": 733.88, "text": "Let's say I just do something like let's give this a name."}, {"id": "s186", "start": 733.88, "end": 734.68, "text": "And we'll create something."}, {"id": "s187", "start": 734.68, "end": 740.24, "text": "We'll say Codex test one codex.dat."}, {"id": "s188", "start": 740.24, "end": 740.8, "text": "Great."}, {"id": "s189", "start": 740.8, "end": 751.44, "text": "Just like that, this is going to go spin up a codex for me in a sandbox that's running um with my credentials injected in and with the network controls injected in."}, {"id": "s190", "start": 751.44, "end": 756.76, "text": "So, just as a test, I can do tell me a joke and as you can see this works."}, {"id": "s191", "start": 756.76, "end": 758.56, "text": "And hopefully it tells me something funny."}, {"id": "s192", "start": 758.56, "end": 771.16, "text": "And I can also say um what credentials do you have access to and are they real or stubs?"}, {"id": "s193", "start": 772.64, "end": 775.48, "text": "GitHub and codex creds."}, {"id": "s194", "start": 775.48, "end": 777.4, "text": "Ignore my typos."}, {"id": "s195", "start": 777.4, "end": 782.28, "text": "Um I'll wait a minute for that to run, but just to describe this, the base environment here is got a sandbox running."}, {"id": "s196", "start": 782.28, "end": 783.6, "text": "This looks like a normal agent."}, {"id": "s197", "start": 783.6, "end": 788.4, "text": "You get the DX you you're used to, but this is running in a safe environment now for you."}, {"id": "s198", "start": 788.4, "end": 789.92, "text": "No credentials are there."}, {"id": "s199", "start": 789.92, "end": 791.08, "text": "They're all injected in."}, {"id": "s200", "start": 791.08, "end": 792.52, "text": "Network policy is controlled."}, {"id": "s201", "start": 792.52, "end": 794.16, "text": "And you'll see later you can control MCT."}, {"id": "s202", "start": 794.16, "end": 795.92, "text": "You can control a lot more here."}, {"id": "s203", "start": 795.92, "end": 796.44, "text": "All right."}, {"id": "s204", "start": 796.44, "end": 799.4, "text": "Um I'm just going to ask you to believe me so we can save some time."}, {"id": "s205", "start": 799.4, "end": 802.8, "text": "This will come back and say all the creds are there, but they're all stubs."}, {"id": "s206", "start": 802.8, "end": 804.72, "text": "And they're all just being injected in."}, {"id": "s207", "start": 804.72, "end": 807.48, "text": "Uh this takes some time, so I'm going to escape out for this."}, {"id": "s208", "start": 807.48, "end": 810.2, "text": "Okay, so now um let's let's work through use case."}, {"id": "s209", "start": 810.2, "end": 815.52, "text": "Let's say I want to review a PR and I want to write that summary into a Notion page."}, {"id": "s210", "start": 815.52, "end": 816.8, "text": "Well, I can break this down."}, {"id": "s211", "start": 816.8, "end": 820.8, "text": "I don't need a single monolithic sandbox where I give it both credentials."}, {"id": "s212", "start": 820.8, "end": 823.36, "text": "I can have one task to do the PR, write it down."}, {"id": "s213", "start": 823.36, "end": 829.24, "text": "I can have a separate sandbox with just Notion access, no other network access to take that and write it up."}, {"id": "s214", "start": 829.24, "end": 830.52, "text": "This could be a good way to break it down."}, {"id": "s215", "start": 830.52, "end": 833.48, "text": "So, let's just do that manually so we get a feel for it."}, {"id": "s216", "start": 833.48, "end": 841.84, "text": "Um So, uh I'm going to just pull this over."}, {"id": "s217", "start": 843.08, "end": 845.88, "text": "So, I'm going to create a sandbox here."}, {"id": "s218", "start": 845.88, "end": 846.84, "text": "I'll give it a name."}, {"id": "s219", "start": 846.84, "end": 852.68, "text": "I have got a killed a kit uh a skill that tells it how to do the PR and go ahead and do that."}, {"id": "s220", "start": 852.68, "end": 860.2, "text": "And while that's going, this So, that's created."}, {"id": "s221", "start": 860.2, "end": 862.76, "text": "Um just so you get a sense."}, {"id": "s222", "start": 862.76, "end": 864.8, "text": "We can look at the policies here."}, {"id": "s223", "start": 864.8, "end": 871.04, "text": "Um that was my PR bot and as you can see it's got access to GitHub and Anthropic and that's it."}, {"id": "s224", "start": 871.04, "end": 871.88, "text": "Nothing else."}, {"id": "s225", "start": 871.88, "end": 874.2, "text": "I can't have I can't go anywhere else now."}, {"id": "s226", "start": 874.2, "end": 878.64, "text": "Um and actually just to make sure I'm going to give this more access."}, {"id": "s227", "start": 878.64, "end": 879.36, "text": "I already give it that."}, {"id": "s228", "start": 879.36, "end": 879.96, "text": "Great."}, {"id": "s229", "start": 879.96, "end": 882.48, "text": "So, let's just run it."}, {"id": "s230", "start": 888.56, "end": 888.8, "text": "Great."}, {"id": "s231", "start": 888.8, "end": 893.8, "text": "This will run and now I can tell it go research this PR and it'll go off and do the work and write a summary."}, {"id": "s232", "start": 893.8, "end": 897.44, "text": "All right, just to save us time, I'd already done this."}, {"id": "s233", "start": 897.44, "end": 900.44, "text": "So, now imagine this run."}, {"id": "s234", "start": 902.4, "end": 906.68, "text": "I can create another one here where I'll say this time I'm going to use Codex."}, {"id": "s235", "start": 906.68, "end": 909.6, "text": "And if you look here, I'm creating another sandbox."}, {"id": "s236", "start": 909.6, "end": 913.6, "text": "I'm giving this access to the Notion MCP."}, {"id": "s237", "start": 913.6, "end": 918.68, "text": "So, this is now an example of me containing it and giving scoped access just to what it needs."}, {"id": "s238", "start": 918.68, "end": 921.12, "text": "And this is not going to get access."}, {"id": "s239", "start": 921.12, "end": 924.6, "text": "I've I created this one, so assume I recreated it.\""}, {"id": "s240", "start": 924.6, "end": 930.12, "text": "And this one gets access to just those things."}, {"id": "s241", "start": 930.12, "end": 932.52, "text": "It doesn't have access to GitHub anymore over here."}, {"id": "s242", "start": 932.52, "end": 938.56, "text": "And now I can run this, and there I am, and I can tell it go do work."}, {"id": "s243", "start": 939.6, "end": 944.88, "text": "So, hopefully the idea you're getting is we get these sandboxes that can be composed and scoped down to the access they need."}, {"id": "s244", "start": 944.88, "end": 945.76, "text": "All right."}, {"id": "s245", "start": 945.76, "end": 946.8, "text": "Uh this is going to run."}, {"id": "s246", "start": 946.8, "end": 947.56, "text": "It'll do the right thing."}, {"id": "s247", "start": 947.56, "end": 949.2, "text": "It'll find the MCP tool and do all that."}, {"id": "s248", "start": 949.2, "end": 950.04, "text": "We'll save time there."}, {"id": "s249", "start": 950.04, "end": 951.4, "text": "Just trust you know, trust me."}, {"id": "s250", "start": 951.4, "end": 952.4, "text": "All right."}, {"id": "s251", "start": 952.4, "end": 954.04, "text": "So, great."}, {"id": "s252", "start": 954.04, "end": 957.08, "text": "Let's escape that, too, while that's running."}, {"id": "s253", "start": 957.08, "end": 957.44, "text": "Okay."}, {"id": "s254", "start": 957.44, "end": 958.48, "text": "So, this is great."}, {"id": "s255", "start": 958.48, "end": 959.4, "text": "I've got this now."}, {"id": "s256", "start": 959.4, "end": 965.08, "text": "But, you know what would be great is um I had created this thing."}, {"id": "s257", "start": 965.08, "end": 968.2, "text": "Well, can I just put this in the cloud?"}, {"id": "s258", "start": 968.2, "end": 968.84, "text": "Let's find out."}, {"id": "s259", "start": 968.84, "end": 971.96, "text": "That'd be nice if my runtime just extends."}, {"id": "s260", "start": 971.96, "end": 973.96, "text": "Uh like sure."}, {"id": "s261", "start": 973.96, "end": 979.76, "text": "Uh I already created that, so give me I'm just going to give it a different name."}, {"id": "s262", "start": 979.76, "end": 986.12, "text": "Just um just bear with there."}, {"id": "s263", "start": 987.08, "end": 988.2, "text": "So, cool."}, {"id": "s264", "start": 988.2, "end": 991.8, "text": "That ran, and can I just go in there?"}, {"id": "s265", "start": 996.8389999999999, "end": 999.8389999999999, "text": "Uh what did I do?"}, {"id": "s266", "start": 1000.12, "end": 1001.04, "text": "Up."}, {"id": "s267", "start": 1001.04, "end": 1005.08, "text": "Dash dash cloud, and great."}, {"id": "s268", "start": 1005.08, "end": 1011.52, "text": "Are you running on the cloud or on a Mac?"}, {"id": "s269", "start": 1011.52, "end": 1013.44, "text": "This might take a while for it to debug it all come down."}, {"id": "s270", "start": 1013.44, "end": 1023.4, "text": "But, this now took it this feels the same, but the exact same sandbox just runs in the cloud cuz the runtime is portable and goes there with your policies applied,"}, {"id": "s271", "start": 1023.4, "end": 1024.4, "text": "with all your controls applied."}, {"id": "s272", "start": 1024.4, "end": 1029.12, "text": "So, the same policy plane, same control continues with you and extends."}, {"id": "s273", "start": 1029.12, "end": 1029.839, "text": "Um all right."}, {"id": "s274", "start": 1029.839, "end": 1031.12, "text": "I'm going to let this be great."}, {"id": "s275", "start": 1031.12, "end": 1031.68, "text": "It figured it out."}, {"id": "s276", "start": 1031.68, "end": 1033.76, "text": "It's running in the cloud."}, {"id": "s277", "start": 1033.76, "end": 1040.92, "text": "If I have the cloud, well, it'd be nice if I could do a lot of work with it and it fan out."}, {"id": "s278", "start": 1040.92, "end": 1047.8, "text": "So, there's a little script that goes tries to review six PRs, creates It's going to clean up that I run this before right before this."}, {"id": "s279", "start": 1047.8, "end": 1051.8, "text": "Create six sandboxes and runs them all in parallel."}, {"id": "s280", "start": 1051.8, "end": 1062.6, "text": "So, this is the power where you get the score same experience you have locally in the cloud with the same secure runtime uh and the same policy and scoped access running."}, {"id": "s281", "start": 1062.6, "end": 1065.6, "text": "So, this is going to run all six running in parallel."}, {"id": "s282", "start": 1065.6, "end": 1066.96, "text": "This is great."}, {"id": "s283", "start": 1066.96, "end": 1070.92, "text": "Uh I'm going to save us time and come out of that."}, {"id": "s284", "start": 1070.92, "end": 1072.56, "text": "Assume they all run."}, {"id": "s285", "start": 1072.56, "end": 1074.48, "text": "Um let me skip."}, {"id": "s286", "start": 1074.48, "end": 1076.48, "text": "Cool."}, {"id": "s287", "start": 1077.8, "end": 1083.32, "text": "Well, if I have I'll let that be for a minute."}, {"id": "s288", "start": 1084.04, "end": 1091.92, "text": "While that's running, if I can do cloud, well, it'd be really nice if I can orchestrate."}, {"id": "s289", "start": 1091.92, "end": 1093.76, "text": "Let's see if I can do that."}, {"id": "s290", "start": 1093.76, "end": 1095.04, "text": "Nope, that's my slide."}, {"id": "s291", "start": 1095.04, "end": 1097.8, "text": "Talk, excuse me."}, {"id": "s292", "start": 1098.52, "end": 1100.52, "text": "Great."}, {"id": "s293", "start": 1100.68, "end": 1103.44, "text": "So, what if I can now do actual orchestration?"}, {"id": "s294", "start": 1103.44, "end": 1111.08, "text": "So, if this is a an orchestration tool we have, you see the same bots here, the Notion one and PR one."}, {"id": "s295", "start": 1111.08, "end": 1114.2, "text": "And we have this orchestrator that knows how to orchestrate."}, {"id": "s296", "start": 1114.2, "end": 1121.92, "text": "Um can I come here and tell it Uh where's my cursor?"}, {"id": "s297", "start": 1121.92, "end": 1135.12, "text": "Can I come and tell it find 10 random PRs from and review them and write a summary to Notion."}, {"id": "s298", "start": 1135.12, "end": 1136.88, "text": "So, this will take some time."}, {"id": "s299", "start": 1136.88, "end": 1138.84, "text": "I'll just briefly show you what it's doing."}, {"id": "s300", "start": 1138.84, "end": 1145.8, "text": "This is the same runtime with the same control plane, with the same policy and scoped access, but now scaled out to orchestration and running."}, {"id": "s301", "start": 1145.8, "end": 1156.28, "text": "This will go off, it finds those agents, it'll schedule them, it'll compose over them, run PR with just a PR bot limited access, and then run the notion one with just a notion tool."}, {"id": "s302", "start": 1156.28, "end": 1157.8, "text": "This goes off and does work."}, {"id": "s303", "start": 1157.8, "end": 1159.68, "text": "And once I have this, you can do more things."}, {"id": "s304", "start": 1159.68, "end": 1162.12, "text": "You can create a schedule and schedule all that."}, {"id": "s305", "start": 1162.12, "end": 1174.88, "text": "So, we go from a runtime that's providing us scope like containment for just the task you need with scoped access, and the same thing follows you locally to the cloud to full orchestration."}, {"id": "s306", "start": 1174.88, "end": 1175.44, "text": "All right."}, {"id": "s307", "start": 1175.44, "end": 1177.92, "text": "Last thing."}, {"id": "s308", "start": 1180.92, "end": 1184.88, "text": "Um where is uh There you go."}, {"id": "s309", "start": 1184.88, "end": 1185.96, "text": "Okay."}, {"id": "s310", "start": 1185.96, "end": 1190.04, "text": "So, we said now we need um we need intent-based access."}, {"id": "s311", "start": 1190.04, "end": 1192.0, "text": "How do we manage this dynamically?"}, {"id": "s312", "start": 1192.0, "end": 1196.16, "text": "This is still I'm showing you an early prototype we have internally, not built yet."}, {"id": "s313", "start": 1196.16, "end": 1200.12, "text": "Um let me fetch a PR here."}, {"id": "s314", "start": 1200.12, "end": 1206.88, "text": "Just give me Uh where Okay."}, {"id": "s315", "start": 1206.88, "end": 1211.4, "text": "So, what's happening here is we're running On the left, you see an agent running in a sandbox."}, {"id": "s316", "start": 1211.4, "end": 1213.44, "text": "You see the main agent over here."}, {"id": "s317", "start": 1213.44, "end": 1216.76, "text": "This has access just Anthropic Claude, no GitHub."}, {"id": "s318", "start": 1216.76, "end": 1225.2, "text": "But now I tell it do a quick overview of this PR."}, {"id": "s319", "start": 1226.56, "end": 1229.28, "text": "This agent in this sandbox is scope limited."}, {"id": "s320", "start": 1229.28, "end": 1231.0, "text": "It cannot do that."}, {"id": "s321", "start": 1231.0, "end": 1238.88, "text": "In this environment, we built an intent-based tool for it where it can ask the runtime and say, \"Hey, I want to take this action.\""}, {"id": "s322", "start": 1238.88, "end": 1239.68, "text": "What should happen?"}, {"id": "s323", "start": 1239.68, "end": 1241.44, "text": "It says, \"Oh, my network's blocked."}, {"id": "s324", "start": 1241.44, "end": 1242.68, "text": "Let me delegate and ask.\""}, {"id": "s325", "start": 1242.68, "end": 1252.92, "text": "And if you look here now, we created a scoped sub-sandbox that got access to GitHub, and the main one did not."}, {"id": "s326", "start": 1252.92, "end": 1254.16, "text": "So, we're running that."}, {"id": "s327", "start": 1254.16, "end": 1256.08, "text": "We decided that the intent made sense."}, {"id": "s328", "start": 1256.08, "end": 1258.4, "text": "The user query said, \"Review this PR.\""}, {"id": "s329", "start": 1258.4, "end": 1265.6, "text": "So, it makes sense you want access to that, but I'm going to create a scoped sub-sandbox for you where you get that access, and the result comes back."}, {"id": "s330", "start": 1265.6, "end": 1268.76, "text": "And the same thing can expand and go from there."}, {"id": "s331", "start": 1268.76, "end": 1273.36, "text": "So, what we did manually can start happening automatically with judgment in person."}, {"id": "s332", "start": 1273.36, "end": 1278.48, "text": "If the PR suppose the text PR said, \"I want you to now export this to pastebin.com.\""}, {"id": "s333", "start": 1278.48, "end": 1279.84, "text": "That would get rejected."}, {"id": "s334", "start": 1279.84, "end": 1286.48, "text": "And this is running at a base one-time layer, so runs across every agent, every model, every harness that you need."}, {"id": "s335", "start": 1286.48, "end": 1287.72, "text": "Okay."}, {"id": "s336", "start": 1287.72, "end": 1293.28, "text": "Um let's come back to our presentation if I can figure out how to do this."}, {"id": "s337", "start": 1293.28, "end": 1294.48, "text": "Let's see here."}, {"id": "s338", "start": 1294.48, "end": 1295.32, "text": "Great."}, {"id": "s339", "start": 1295.32, "end": 1303.76, "text": "So, just to recap, the core thing here is to really unlock autonomy, we need safety."}, {"id": "s340", "start": 1303.76, "end": 1308.04, "text": "To succeed at safety, you have to do this across models, across harnesses."}, {"id": "s341", "start": 1308.04, "end": 1311.32, "text": "You need to provide a contained environment."}, {"id": "s342", "start": 1311.32, "end": 1316.92, "text": "You need to put that environment, you need to be able to add scoped capabilities to that environment."}, {"id": "s343", "start": 1316.92, "end": 1321.0, "text": "You need to be able to know what capabilities to provide there based on intent."}, {"id": "s344", "start": 1321.0, "end": 1329.28, "text": "And this one-time has to work across models, across harnesses, and move across all environments, local, cloud, VPC, orchestration."}, {"id": "s345", "start": 1329.28, "end": 1330.28, "text": "That's what we focus on."}, {"id": "s346", "start": 1330.28, "end": 1330.92, "text": "That's what we're building."}, {"id": "s347", "start": 1330.92, "end": 1334.64, "text": "That's what we think is needed to actually go unlock agent autonomy next."}, {"id": "s348", "start": 1334.64, "end": 1335.56, "text": "Please go try this out."}, {"id": "s349", "start": 1335.56, "end": 1336.28, "text": "It's really easy."}, {"id": "s350", "start": 1336.28, "end": 1339.08, "text": "You can just go brew install SPX, run this."}, {"id": "s351", "start": 1339.08, "end": 1343.04, "text": "You can run Claude, Codex, Open Code, any agent, build your own in there."}, {"id": "s352", "start": 1343.04, "end": 1345.28, "text": "Um I'll be around afterwards, open for questions."}, {"id": "s353", "start": 1345.28, "end": 1347.16, "text": "And we have a booth uh down below."}, {"id": "s354", "start": 1347.16, "end": 1348.92, "text": "Come find us there, too."}, {"id": "s355", "start": 1348.92, "end": 1350.625, "text": "Thank you."}, {"id": "s356", "start": 1350.625, "end": 1352.625, "text": "[applause]"}]}, {"id": "zrZ1amZBSPw", "title": "Productionizing LLM Gateways: Architecture, Tradeoffs and Hard Lessons — Kanish Manuja, Twilio", "channel": "AI Engineer", "duration": 984, "upload_date": null, "url": "https://www.youtube.com/watch?v=zrZ1amZBSPw", "api": "/api/talks/zrZ1amZBSPw.json", "summary_url": "/#zrZ1amZBSPw", "transcript": {"html": "/transcripts/zrZ1amZBSPw.html", "txt": "/transcripts/zrZ1amZBSPw.txt", "vtt": "/transcripts/zrZ1amZBSPw.vtt"}, "sentences": [{"id": "s1", "start": 1.309, "end": 3.309, "text": "[music]"}, {"id": "s2", "start": 13.2, "end": 14.88, "text": "I'm Kanesh Manuja."}, {"id": "s3", "start": 14.88, "end": 18.24, "text": "I'm a principal engineer at Twilio."}, {"id": "s4", "start": 18.24, "end": 20.88, "text": "Let's start with a quick show of hands."}, {"id": "s5", "start": 20.88, "end": 24.56, "text": "Who here has seen the message, something went wrong."}, {"id": "s6", "start": 24.56, "end": 27.119, "text": "Please try again."}, {"id": "s7", "start": 27.439, "end": 32.719, "text": "Well, we have a few lucky ones and a few that have had a good lunch."}, {"id": "s8", "start": 32.719, "end": 45.2, "text": "Um, so behind that simple message is actually a system that is very complex that serves you that message despite the model providers being down."}, {"id": "s9", "start": 45.2, "end": 50.399, "text": "And that's what we're going to productionize today or discuss productionizing today."}, {"id": "s10", "start": 50.399, "end": 52.64, "text": "So what is an LM gateway?"}, {"id": "s11", "start": 52.64, "end": 59.6, "text": "An LLM gateway is an entry point or a middleware between your apps and the model providers behind them."}, {"id": "s12", "start": 59.6, "end": 61.039, "text": "It does a bunch of things."}, {"id": "s13", "start": 61.039, "end": 68.0, "text": "Routing, authentication, fallback, rate limits, all kinds of governance that you can think of."}, {"id": "s14", "start": 68.56, "end": 73.68, "text": "And right at the heart of the gateway is a fight between four things."}, {"id": "s15", "start": 73.68, "end": 78.96000000000001, "text": "It's availability, latency, your guardrails and costs."}, {"id": "s16", "start": 78.96000000000001, "end": 83.03999999999999, "text": "In case of a degradation, you cannot maximize all four."}, {"id": "s17", "start": 83.03999999999999, "end": 86.15899999999999, "text": "You need to pick what you want."}, {"id": "s18", "start": 86.15899999999999, "end": 95.439, "text": "So with this talk, if you use an LLM gateway, I want you I want to help you to make that trade-off for your use case."}, {"id": "s19", "start": 95.439, "end": 106.72, "text": "And if you design a gateway, I want you to design or provide those levers to your callers and customers u so that your customers are happy."}, {"id": "s20", "start": 106.72, "end": 109.36, "text": "Let's start with availability."}, {"id": "s21", "start": 110.56, "end": 117.28, "text": "If you have a single model provider, their ceiling is your ceiling."}, {"id": "s22", "start": 117.28, "end": 121.2, "text": "Their outage is your outage."}, {"id": "s23", "start": 123.439, "end": 131.36, "text": "So in typical software engineering, the way you tackle unreliable dependency is by retrying."}, {"id": "s24", "start": 131.36, "end": 136.0, "text": "Retrying with exponential backoffs, with jitters."}, {"id": "s25", "start": 136.0, "end": 144.07999999999998, "text": "And when all of that fails, you have a circuit breaker that trips after you've seen sufficient failures and you stop calling the damn thing."}, {"id": "s26", "start": 144.4, "end": 146.56, "text": "This is not enough for LLMs."}, {"id": "s27", "start": 146.56, "end": 152.879, "text": "LLMs are very different compared to your fast cheap APIs that you retry on."}, {"id": "s28", "start": 152.879, "end": 158.8, "text": "Retrying an LLM API eats into your latency budget really fast."}, {"id": "s29", "start": 158.8, "end": 167.28, "text": "And also tripping over a circuit breaker when you have another perfectly fine model provider to route to doesn't make sense."}, {"id": "s30", "start": 167.28, "end": 170.48, "text": "You should use the second model provider."}, {"id": "s31", "start": 170.48, "end": 174.4, "text": "And third, as I said, the calls are slow and expensive."}, {"id": "s32", "start": 174.4, "end": 179.76, "text": "So blind retries just multiply your cost and your tail latencies."}, {"id": "s33", "start": 180.8, "end": 182.56, "text": "So what is a better idea here?"}, {"id": "s34", "start": 182.56, "end": 185.76, "text": "It is actually a per request fallback."}, {"id": "s35", "start": 185.76, "end": 195.599, "text": "What that means is you can actually try model provider A and then in sequence try model provider B if your request to model provider A fails."}, {"id": "s36", "start": 195.599, "end": 200.64, "text": "Another option to consider here is you can fire requests to both the providers in parallel."}, {"id": "s37", "start": 200.64, "end": 208.48, "text": "But that's only if you're highly highly obsessed with latencies because that's just going to double your cost."}, {"id": "s38", "start": 208.56, "end": 213.76, "text": "Some of the similar circuit breaking patterns apply here to LMS as well."}, {"id": "s39", "start": 213.76, "end": 222.07999999999998, "text": "If you know that your primary has been failing for some time, it doesn't make sense to try it again."}, {"id": "s40", "start": 222.07999999999998, "end": 233.84, "text": "You put it, you take it out of the load balancer or your request path and put it in a cool down and then after a few minutes have passed, try putting that back again."}, {"id": "s41", "start": 233.84, "end": 240.4, "text": "One interesting choice that you have to make here is where your failure counts live."}, {"id": "s42", "start": 240.4, "end": 253.68, "text": "You can decide to have the failure counts live in memory on the instances that are serving your traffic or you can have shared infra where your failure counts are shared across the fleet."}, {"id": "s43", "start": 253.68, "end": 255.84, "text": "There are trade-offs."}, {"id": "s44", "start": 255.84, "end": 260.479, "text": "If you want quick failovers, then fleetwide helps."}, {"id": "s45", "start": 260.479, "end": 271.68, "text": "And with instance uh with local state counters the issue that you run into is whenever you change your deployment size your configuration and your expectations change."}, {"id": "s46", "start": 271.68, "end": 274.479, "text": "So something to consider."}, {"id": "s47", "start": 275.36, "end": 280.639, "text": "What that clean diagram did not really show you are some of the other gotchas that I'm going to discuss."}, {"id": "s48", "start": 280.639, "end": 283.36, "text": "So fallbacks are not transparent."}, {"id": "s49", "start": 283.36, "end": 290.479, "text": "While the industry is converging on an OpenAI API compatible format, I would say there are still nuances."}, {"id": "s50", "start": 290.479, "end": 293.44, "text": "So you need to really test your fallbacks well."}, {"id": "s51", "start": 293.44, "end": 298.72, "text": "They can have differences in your tool calling schemas, token limits, stop reasons and what have you."}, {"id": "s52", "start": 298.72, "end": 308.96, "text": "So with LM gateways, you can have a normalization layer that can ensure that you can do cross provider fallbacks as well."}, {"id": "s53", "start": 308.96, "end": 316.32, "text": "Another thing is streaming it."}, {"id": "s54", "start": 316.32, "end": 322.96, "text": "So essentially nobody wants to wait for 30 seconds to have a wall of text appear in front of them."}, {"id": "s55", "start": 322.96, "end": 327.28, "text": "So there are use cases where streaming is absolutely required."}, {"id": "s56", "start": 327.28, "end": 328.639, "text": "But it comes as at a cost."}, {"id": "s57", "start": 328.639, "end": 330.639, "text": "You trade away your levers."}, {"id": "s58", "start": 330.639, "end": 340.72, "text": "You cannot once you have decided to go with provider A, you have to continue going with provider A. You cannot mid-stream change the providers."}, {"id": "s59", "start": 340.72, "end": 343.919, "text": "Whatever has been sent to the client, it's done."}, {"id": "s60", "start": 343.919, "end": 349.44, "text": "And that's where the something uh went wrong message, that's the one that you see."}, {"id": "s61", "start": 349.44, "end": 350.8, "text": "It's not because of laziness."}, {"id": "s62", "start": 350.8, "end": 355.68, "text": "It's by design uh that you see that and it's one of the trade-offs."}, {"id": "s63", "start": 355.68, "end": 361.52, "text": "I would like to call out one other thing where I've seen teams trip over and over again."}, {"id": "s64", "start": 361.52, "end": 372.479, "text": "They really provision and test their primary providers really well, but they the second provider, the fallback provider doesn't necessarily get the same level of love."}, {"id": "s65", "start": 372.479, "end": 384.56, "text": "And I would argue that your throughputs or your capacity or your headroom should be even higher for the second provider or the fallback provider because that's your last line of defense."}, {"id": "s66", "start": 384.56, "end": 388.639, "text": "If that goes down, your application goes down."}, {"id": "s67", "start": 390.479, "end": 392.639, "text": "Let's discuss latencies."}, {"id": "s68", "start": 392.639, "end": 395.759, "text": "Availability failures are right in your face."}, {"id": "s69", "start": 395.759, "end": 397.12, "text": "They fail."}, {"id": "s70", "start": 397.12, "end": 398.15999999999997, "text": "You get alarmed."}, {"id": "s71", "start": 398.15999999999997, "end": 399.759, "text": "You get paged."}, {"id": "s72", "start": 399.759, "end": 403.28, "text": "But high latencies can be the quiet ones."}, {"id": "s73", "start": 403.28, "end": 411.199, "text": "And they need to receive more love um than I would say tuning your services for just availability."}, {"id": "s74", "start": 414.319, "end": 424.96, "text": "One thing to call out, a gateway may run mixed workloads and you can have embedding embedding requests that takes just less than a second."}, {"id": "s75", "start": 424.96, "end": 428.479, "text": "You can have classification requests that take less than a second."}, {"id": "s76", "start": 428.479, "end": 435.12, "text": "Uh you have chat requests taking 3 seconds and reasoning requests taking a long time."}, {"id": "s77", "start": 435.12, "end": 436.56, "text": "Quick show of hands."}, {"id": "s78", "start": 436.56, "end": 442.639, "text": "If you measure your aggregate latency for your entire service."}, {"id": "s79", "start": 442.88, "end": 444.08, "text": "Well, that was a trick question."}, {"id": "s80", "start": 444.08, "end": 444.479, "text": "Sorry."}, {"id": "s81", "start": 444.479, "end": 445.039, "text": "You shouldn't."}, {"id": "s82", "start": 445.039, "end": 445.919, "text": "It doesn't make sense."}, {"id": "s83", "start": 445.919, "end": 447.759, "text": "It's a lie."}, {"id": "s84", "start": 447.759, "end": 452.96, "text": "You should be tracking your P99 per model per route, not a gateway wide number."}, {"id": "s85", "start": 452.96, "end": 457.039, "text": "Gateway wide number doesn't make sense, especially if you're running mixed workloads."}, {"id": "s86", "start": 457.039, "end": 461.28, "text": "And I hope you're not u for those who raise your hand."}, {"id": "s87", "start": 461.28, "end": 470.88, "text": "Another thing that can really I cannot emphasize this enough is for you to set timeouts on per model class per route."}, {"id": "s88", "start": 470.88, "end": 474.639, "text": "That's where that's the number one root cause of your silent outage."}, {"id": "s89", "start": 474.639, "end": 481.68, "text": "If you don't have a timeout, your gateway thinks you're hap your request is being happily served while it is not."}, {"id": "s90", "start": 481.68, "end": 484.56, "text": "And I'll leave you with this message for for latencies."}, {"id": "s91", "start": 484.56, "end": 490.639, "text": "Um, specifically a reasoning models normal is actually a chat models outage."}, {"id": "s92", "start": 490.639, "end": 495.919, "text": "So you definitely need to track latency per route."}, {"id": "s93", "start": 497.12, "end": 505.52, "text": "Okay, this is the most painful or this the slide that has given me the most scarse which is reasoning and router models."}, {"id": "s94", "start": 505.52, "end": 521.2, "text": "So this is where truly the latency is unpredictable and reasoning models they do not give you they they're highly undeterministic more deterministic undeterministic than your normal models."}, {"id": "s95", "start": 521.2, "end": 531.6, "text": "You cannot set the temperature to zero in many cases and the same prompt can take somewhere from 2 seconds to 60 seconds and we've seen that in production where P99"}, {"id": "s96", "start": 531.6, "end": 534.72, "text": "suddenly popped to 60 seconds for no good reason."}, {"id": "s97", "start": 534.72, "end": 539.2, "text": "So that's while there's no magical solution to it."}, {"id": "s98", "start": 539.2, "end": 544.8, "text": "I would recommend that you at least start with fixing the reasoning level per route."}, {"id": "s99", "start": 544.8, "end": 549.279, "text": "So with router models, they hide that abstraction behind you."}, {"id": "s100", "start": 549.279, "end": 562.64, "text": "Like they pick which models to run and I would highly recommend that you at least make as much uh you make requests as determinist deterministic as possible with an undeterministic"}, {"id": "s101", "start": 562.64, "end": 564.32, "text": "system."}, {"id": "s102", "start": 564.32, "end": 567.76, "text": "Another idea is hedging the tail."}, {"id": "s103", "start": 567.76, "end": 577.36, "text": "You can have a you can fire another request if your primary request actually consumed let's say P90 of your latency budget."}, {"id": "s104", "start": 577.92, "end": 585.279, "text": "This can hedge the t this can really hedge the P99 tail u for for your services."}, {"id": "s105", "start": 585.68, "end": 586.24, "text": "All right."}, {"id": "s106", "start": 586.24, "end": 588.32, "text": "This is one of my favorite ones."}, {"id": "s107", "start": 588.32, "end": 594.64, "text": "Um to keep your model secure you need to have guardrails."}, {"id": "s108", "start": 594.64, "end": 609.839, "text": "And with that, guardrails are necessary for preventing your services from prompt injection attacks, keeping PII filters in place, having toxicity filters, keeping the LMS to stop swearing at your customers,"}, {"id": "s109", "start": 609.839, "end": 611.839, "text": "all those good things."}, {"id": "s110", "start": 611.839, "end": 615.92, "text": "But just like a model provider, there are trade-offs, too."}, {"id": "s111", "start": 615.92, "end": 629.68, "text": "Guardrails are just like another service that can go down that can be unreliable and that's where you need to choose do you fail open or do you fail close when I say fail open"}, {"id": "s112", "start": 629.68, "end": 641.68, "text": "you can still serve the request even if your guardrails are down fail close you block the request and say hey I'm not available that's the trade-off between availability and security to certain extent"}, {"id": "s113", "start": 641.68, "end": 654.399, "text": "while there's a no universal answer it really depends on your use case you can decide like for example a toxicity filter if it's not up and running you can still serve that request."}, {"id": "s114", "start": 654.399, "end": 660.88, "text": "So the default choice should be the worst case that you can live with."}, {"id": "s115", "start": 663.68, "end": 678.0, "text": "There are a few things that you can actually do to improve the behavior of your systems in face of uh you know guardrails being down and and managing just unreliability of the guardrails themselves."}, {"id": "s116", "start": 678.0, "end": 680.959, "text": "So the first is time budget."}, {"id": "s117", "start": 681.36, "end": 686.399, "text": "Your request should never be bound by your guardrail timing."}, {"id": "s118", "start": 686.399, "end": 690.959, "text": "It should always be the LM that is the rate determining step."}, {"id": "s119", "start": 690.959, "end": 698.88, "text": "So make sure that you have timeouts in place and those guardrails run with a specific time budget."}, {"id": "s120", "start": 698.88, "end": 701.12, "text": "Another important thing is fallback."}, {"id": "s121", "start": 701.12, "end": 704.88, "text": "You've heard, you probably know and I've talked about it."}, {"id": "s122", "start": 704.88, "end": 719.92, "text": "We always discuss fallbacks with regards to model providers, but guardrails are critical services too where you can consider fallbacks, have secondary provider, secondary checks, cache decisions uh to keep your service available"}, {"id": "s123", "start": 719.92, "end": 724.16, "text": "when a guardrail provider is down."}, {"id": "s124", "start": 724.16, "end": 731.6, "text": "Another interesting choice that pops up with regards to guardrails is the placement of the guardrails."}, {"id": "s125", "start": 731.839, "end": 736.079, "text": "Typically, you can place the guardrail in three ways."}, {"id": "s126", "start": 736.079, "end": 740.88, "text": "You can have a pre- hook that runs where the guardrail actually runs on the input."}, {"id": "s127", "start": 740.88, "end": 748.0, "text": "You can and that's probably the safest uh but it does add serial latency uh to your requests."}, {"id": "s128", "start": 748.0, "end": 749.92, "text": "Another one is in parallel."}, {"id": "s129", "start": 749.92, "end": 756.88, "text": "This is one of my favorites, but just to call out, streaming wouldn't work well here with with parallel."}, {"id": "s130", "start": 756.88, "end": 760.72, "text": "So if you're specially producing structured output, please don't stream them."}, {"id": "s131", "start": 760.72, "end": 766.9590000000001, "text": "Uh try to save your latencies and run run these guardrails concurrently for your structured outputs."}, {"id": "s132", "start": 766.9590000000001, "end": 768.56, "text": "Another one is post hooks."}, {"id": "s133", "start": 768.56, "end": 776.56, "text": "The these are best for um output monitoring, auditing your outputs and and so forth."}, {"id": "s134", "start": 778.9590000000001, "end": 787.92, "text": "So, so far we've all I've discussed all the things that can go wrong with regards to our dependencies."}, {"id": "s135", "start": 787.92, "end": 796.32, "text": "We haven't discussed that we are actually adding another dependency in the request path itself which is the central or which is the LM gateway itself."}, {"id": "s136", "start": 796.32, "end": 802.72, "text": "There are a few things where we have been bitten by u and we've learned some lessons that I want to share with you."}, {"id": "s137", "start": 802.72, "end": 809.12, "text": "If you're working on an LLM gateway or using one, one is shared limits."}, {"id": "s138", "start": 809.12, "end": 821.68, "text": "Make sure that your API keys are segregated per route, per use case to the most granular possible uh to the most granular thing that you can imagine."}, {"id": "s139", "start": 821.68, "end": 829.8389999999999, "text": "U having a noisy tenant can be one of the biggest problems here."}, {"id": "s140", "start": 829.8389999999999, "end": 832.0, "text": "Another thing is load shedding."}, {"id": "s141", "start": 832.0, "end": 844.48, "text": "This is a feature that you should uh as part of your runbooks, game days, uh make sure that the gateway that you're using supports load shedding because when you have a retry storm, it becomes really hard to just scale out."}, {"id": "s142", "start": 844.48, "end": 854.56, "text": "You cannot simply scale out services that is under a retry storm and all these web servers they have an internal queue and they're configurable."}, {"id": "s143", "start": 854.56, "end": 860.88, "text": "Make sure that they're bounded and they cannot request they cannot accept requests that are unbounded."}, {"id": "s144", "start": 860.88, "end": 869.92, "text": "And if you want to have some custom logic, you can even have traffic prioritization here as well to make sure under load your most important use cases get served."}, {"id": "s145", "start": 869.92, "end": 879.519, "text": "Well, last thing that I wanted to discuss is the whole idea of a central gateway itself."}, {"id": "s146", "start": 879.519, "end": 881.44, "text": "It is a single point of failure."}, {"id": "s147", "start": 881.44, "end": 892.8, "text": "So if you're thinking of having a central gateway for your entire company for to LLMs, I would recommend rethink that and see what are the reasons that you want it."}, {"id": "s148", "start": 892.8, "end": 898.0, "text": "What I've noticed is that in most scenarios, it's not the central gateway that they want."}, {"id": "s149", "start": 898.0, "end": 900.8, "text": "They want centralized governance."}, {"id": "s150", "start": 900.8, "end": 908.32, "text": "And there is a path forward where you can actually decentralize the gateway and still centralize government governance."}, {"id": "s151", "start": 908.32, "end": 918.24, "text": "So do not try to centralize your traffic but you can have plugins, you can have custom code that can centralize your governance."}, {"id": "s152", "start": 918.24, "end": 925.36, "text": "Uh governance can be in the form of cost tracking, rate limit managing management and there are other solutions possible."}, {"id": "s153", "start": 925.36, "end": 932.16, "text": "So explore those before you chart on having one central gateway for your entire company."}, {"id": "s154", "start": 932.16, "end": 943.199, "text": "It can be managed by a single team, but I wouldn't recommend deploying it as a single deployment for the entire company even though it's distributed."}, {"id": "s155", "start": 943.68, "end": 947.92, "text": "With that said, I want to end this talk on a personal note."}, {"id": "s156", "start": 947.92, "end": 955.279, "text": "So, it is my son's birthday today and I'm here talking to strangers about circuit breaking."}, {"id": "s157", "start": 955.279, "end": 962.88, "text": "So the least you can do for me is please go and prevent one incident for me and for your customers."}, {"id": "s158", "start": 962.88, "end": 963.44, "text": "Thank you."}, {"id": "s159", "start": 963.44, "end": 965.519, "text": "If you have any questions."}, {"id": "s160", "start": 965.519, "end": 967.519, "text": "Yeah."}, {"id": "s161", "start": 981.201, "end": 983.201, "text": "[music]"}]}]}