AI Engineer World's Fair 2026

Building uReview, Uber’s Multi-Agent Code Review Engine — Will Bond & Ameya Ketkar, Uber

Read the talk

Building uReview, Uber’s Multi-Agent Code Review Engine

Will Bond and Ameya Ketkar explain how Uber routes code changes through multiple reviewers, filters their output, learns from developer behavior, and lets hundreds of teams maintain local rules without giving up platform-wide consistency.

From a talk by Will Bond and Ameya Ketkar

At a glance

Ideas worth remembering

  • uReview separates review surfaces from generators, then rates, categorizes, filters, and deduplicates candidate comments before delivering them.

  • Useful observability combines what developers say, what they change, and how the agent produced its finding: sentiment, addressal rate, and agent trajectories answer different questions.

  • Team-owned review rules need ownership integration, nearby configuration, deterministic routing, and feedback to their authors. Writing a skill was easier than operating it consistently and cheaply at scale.

  • Uber reports around 25,000 comments per week, a 67% addressal rate, and 60% lower cost than a naive implementation. Addressal measures developer behavior, while the reported 70% quality and accuracy improvement lacks enough methodology to reproduce.

  • Agent-facing reviews need greater accuracy because a bad comment can induce repeated changes and reversals. As agents assume more detailed work, the speakers propose moving human review toward architecture, domain expertise, and product judgment.

As pull requests grew, review became the bottleneck

Uber’s scale makes code review an allocation problem as much as a code-quality problem. Thousands of engineers work across hundreds of teams, 12 sites, and six language-specific monorepos. Over the preceding 24 months, both pull-request volume and pull-request size grew. The company’s time to first review rose from three hours in 2024 to nine hours in 2026, leading Bond to identify review as the new bottleneck. Those numbers explain why Uber invested in automation; they do not by themselves measure uReview’s impact.

Uber built uReview internally partly because its development surfaces were in transition. The company was using Phabricator while migrating to GitHub, and Bond says most available products did not support Phabricator. Uber also wanted the same review rules to operate inside an agent’s coding loop, rather than creating one review regime for people and another for generated code.

0:120:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:12 · section reference included

A shared platform with distributed ownership

A company-wide review service could not mean a company-wide team writing every rule. Each team carries local knowledge about its code, style guides, recurring patterns, and anti-patterns. uReview therefore plugs into Uber’s existing ownership model so responsibility for review knowledge can stay with the teams that own the code.

The platform still makes several decisions centrally. It can vary the review according to a change’s risk and complexity instead of spending the same effort everywhere. It must also run required security and compliance checks consistently; those checks cannot depend on a team remembering to invoke the right skill. The resulting design combines local authorship with reliable platform execution.

1:422:12
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

1:42 · section reference included

Generate broadly, then control what reaches the engineer

GitHub, Phabricator, and the agent loop all send review requests into the uReview service. The service also receives user feedback and routes work among multiple generators tuned for different cost and performance characteristics. Third-party review systems can plug into the same architecture, giving Uber a way to compare internal generators with outside alternatives.

Multiple generators create an immediate product problem: overlapping findings can flood a pull request with repetitive comments. uReview separates candidate generation from publication. A post-processing stage rates, categorizes, filters, and deduplicates comments, with the goal of showing engineers only actionable, high-confidence findings. The talk does not reveal the scoring thresholds or deduplication algorithm, so this is an architectural description rather than a reproducible ranking recipe.

How it fits togetherThe uReview request and comment pipeline

GitHub, Phabricator, and the agent loop submit review requests.

Several review surfaces share one routing service. Multiple generators can propose findings, but post-processing decides which comments reach the reviewer.

2:423:12
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:42 · section reference included

Cost and surveys could not explain review quality

The first uReview implementation was deliberately small: one prompt performed per-file logic checks, a simple agent conducted a more thorough review, and a dispatcher chose which generator to use. Its observability was similarly coarse—cost tracking, an NPS survey, Google Forms, and Slack support. The team could see that quality relative to cost varied widely, but those signals did not explain which comments failed or why.

The next iteration classified developers’ replies to uReview comments by positive or negative sentiment and by additional categories. Aggregating those responses exposed recurring classes of bugs and system issues that the uReview team could address. Ketkar reports that this moved many pull requests toward a better quality-to-cost position.

The team then added two complementary signals. Addressal rate asks whether a developer changes the code after receiving a comment. Agent trajectories act as runtime profiles, recording the tool calls and the system’s recorded reasoning process behind a review. Sentiment captures what developers say, addressal captures what they do, and trajectories show how the reviewer reached its result. Together, these signals gave the team more useful evidence for tuning runtime, performance, quality, and cost.

The key warning is that a model does not reliably signal when its review is wrong. It can present a bad finding with confidence, so model confidence cannot replace team knowledge or evaluation. Teams need to supply their style guides, patterns, and anti-patterns. The runtime also needs guardrails that keep the agent from wasting turns: review has a useful time budget, and irrelevant work consumes both time and inference cost while potentially degrading the result.

How it fits togetherThe review-improvement loop

The system publishes a selected review finding.

uReview combines expressed reactions, observed developer actions, and execution traces to find problems and revise review behavior.

4:244:54
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:24 · section reference included

From general reviewers to team-owned agents

uReview’s customization stack begins with two scopes of general review. A single-file reviewer looks for logic bugs within each file. A deeper multi-file reviewer incorporates anti-patterns and style guides from Uber’s six monorepos, allowing it to reason across a larger change rather than treating every file independently.

The platform then adds more specialized mechanisms:

  • AI linters: Few-shot systems gather context in a more controlled way and apply rules to a file to find systematic, mechanical issues. Ketkar describes deterministic context collection, but the talk does not establish that the model’s final judgment is deterministic.
  • Custom agents: Teams can define a reviewer connected to their knowledge base, previous pull requests, and a review skill. This carries more local history and procedure than the general reviewers.

Making custom agents available was harder than exposing a prompt box. uReview ties them to Uber’s ownership model, stores customizations near the code so developers can update them, and uses deterministic routing to decide which team receives which review type, model, and generator. These choices make ownership and execution discoverable instead of relying on a parallel registry maintained by the central platform team.

Rule authors also need to see the consequences of their work. uReview returns agent trajectories, addressal rates, and sentiment analysis to contributing teams. A team can discover that developers dislike or ignore a rule and revise it. Writing the initial skill was often easy—Ketkar says teams could ask Claude to derive one from previous pull-request reviews. Running those skills at organizational scale with consistent quality and low cost required repeated work from both the platform team and each team authoring rules.

7:247:54
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:24 · section reference included

What the reported results do—and do not—show

Ketkar reports that uReview produces around 25,000 comments each week. About 10% of comments receive some feedback, while 4% of pull requests receive negative feedback. Those percentages have different denominators and should not be combined into an approval rate. Silence also does not prove that a comment was correct or useful.

The overall addressal rate is around 67%, and developers address almost three quarters of high-severity issues. These figures show that developers act on a substantial portion of uReview’s output. Addressal is still a behavioral proxy: it does not directly prove that every addressed finding was correct or that it prevented a defect.

Compared with what Ketkar calls a naive implementation, Uber reports 60% lower cost and roughly 70% higher quality and accuracy after adding observability and evaluation. The talk does not define the quality or accuracy metrics, identify the measurement window, or say whether 70% is a relative increase or a percentage-point change. The result is therefore directionally useful but not independently reproducible from the presentation.

9:5310:23
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:53 · section reference included

Agent-facing review raises the accuracy requirement

The final part shifts from uReview’s current operation to where the speakers expect software development to go. Engineers are interacting with implementation details less as agents write more code. Humans still approved code at the time of the talk, while Bond presents automatic approval and landing for some percentage of changes as a near-future direction rather than a shipped uReview result.

A single review platform can serve humans and agents, but the audiences behave differently. Humans become frustrated by a pull request covered in 100 minor comments; an agent will work through them. Yet agent willingness makes bad feedback more dangerous, not less. An inaccurate comment can make an agent change the code, request another review, and then reverse the change after the next comment. Accuracy must rise because errors can create an unstable review-and-repair cycle.

This creates a second problem: uReview improved by learning from human reactions and actions. If humans leave the detailed review loop, the system loses part of the feedback that helped tune its prompts and agents. Bond warns that removing that corrective signal could lead to quality degradation and low-quality generated code, but the talk does not specify a replacement feedback mechanism.

The proposed answer is to expand the outer loop rather than eliminate it. Agents take on more implementation and detailed review, while engineers move their attention toward architecture, domain expertise, and product thinking. Bond includes performance optimization and API compatibility among the implementation concerns that agents may increasingly handle. The human role becomes guidance at a higher level—but preserving effective feedback while making that move remains an open design problem.

Compare the ideasHuman-facing and agent-facing review loops

High comment volume, including 100 small nits, can frustrate an engineer.

Agents tolerate more comments, but inaccurate findings can create repeated reversals. The proposed outer loop moves human attention toward higher-level judgment.

11:1111:41
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:11 · section reference included

Resources

From the talk

  • Bond’s supplied speaker profile identifies his work on AI developer experience and uReview.

  • AI EngineerReference

    Conference organizer and publisher of the recording.

Read the complete timestamped transcript
  1. 0:01

    [music]

  2. 0:12

    >> All right, hello everyone.

  3. 0:14

    My name is Will and uh I'm here to talk

  4. 0:17

    to you about automated code review. Uh

  5. 0:21

    my teammate Amir and I work at Uber and

  6. 0:24

    we're going to be walking through U

  7. 0:25

    Review, a system that Uber has built uh

  8. 0:28

    to help increase the velocity of our

  9. 0:30

    software engineering teams.

  10. 0:33

    Um for a little bit of context about

  11. 0:35

    what software engineering org at Uber

  12. 0:37

    looks like, we have thousands of

  13. 0:39

    software engineers who work across

  14. 0:42

    hundreds of teams uh located across 12

  15. 0:45

    different sites and uh they work in

  16. 0:47

    primarily one of six language-specific

  17. 0:50

    monorepos.

  18. 0:51

    As many of you have probably noticed

  19. 0:52

    over the past 24 months, the volume of

  20. 0:55

    PRs, the size of PRs has been growing.

  21. 0:58

    One of the ways that that's been exposed

  22. 1:00

    to us has been through uh the metric

  23. 1:02

    that we track of the first time to

  24. 1:04

    review. Back in 2024, we were seeing

  25. 1:07

    that engineers would get their first

  26. 1:09

    review within 3 hours.

  27. 1:11

    Now in 2026, that has grown to 9 hours

  28. 1:14

    uh in addition to all of the volume

  29. 1:15

    changes. So, in short, code review is

  30. 1:19

    now the bottleneck that we are running

  31. 1:20

    into.

  32. 1:21

    Um specifically around automated code

  33. 1:24

    review, uh there are there are various

  34. 1:26

    options available in the industry, uh

  35. 1:28

    but Uber spent the time to invest in

  36. 1:31

    building an in-house solution due to

  37. 1:33

    some of the constraints that we have.

  38. 1:34

    One of those is uh we currently use

  39. 1:37

    Fabricator and have for a long time and

  40. 1:39

    are in the process of migrating to

  41. 1:40

    GitHub. Uh most of the solutions do not

  42. 1:43

    provide support for Fabricator. Um in

  43. 1:46

    addition, if you were at the previous

  44. 1:47

    talk, you saw Uday and Adam talking

  45. 1:49

    about the agentic SDLC. A big part of

  46. 1:52

    what we want to do is bring a consistent

  47. 1:54

    code review experience to the inner loop

  48. 1:57

    so that our agents are getting the same

  49. 1:59

    code review, the same rules, everything

  50. 2:01

    applied as our humans do.

  51. 2:04

    With hundreds of teams across the

  52. 2:06

    company, we can't have centralized

  53. 2:08

    management of our code reviews, our

  54. 2:10

    customizations, and our rules, and even

  55. 2:13

    the knowledge that goes into those code

  56. 2:14

    reviews. We need to distribute that. So,

  57. 2:16

    we have a need for

  58. 2:18

    plugging into existing team ownership

  59. 2:21

    system rather than trying to replicate

  60. 2:23

    that externally.

  61. 2:25

    Uh finally, with the volume of code

  62. 2:27

    reviews that we perform, we need the

  63. 2:29

    ability to take factors like the risk

  64. 2:32

    profile and the complexity of a code

  65. 2:35

    change and factor that in when deciding

  66. 2:38

    how we're going to run a code review.

  67. 2:40

    Not all code gets the exact same review.

  68. 2:43

    And then finally, consistency. We need

  69. 2:45

    to make sure that we have security and

  70. 2:46

    compliance reviews run across

  71. 2:48

    everything. We can't rely on teams

  72. 2:51

    hoping to run the skill the code review

  73. 2:53

    skill that happens. We need reliability

  74. 2:55

    there.

  75. 2:57

    With all that said, I wanted to give you

  76. 2:58

    an overview of the architecture of what

  77. 3:01

    you review looks like. We'll talk about

  78. 3:03

    a couple of the big pieces, and then

  79. 3:04

    we're going to dive into a few focus

  80. 3:06

    areas.

  81. 3:07

    At the top, you'll notice that we have

  82. 3:09

    our code review surface areas, GitHub,

  83. 3:12

    Fabricator, and the agent loop.

  84. 3:14

    These all feed into you review service.

  85. 3:18

    These This takes in requests for

  86. 3:20

    reviews.

  87. 3:21

    It brings in feedback from users, and it

  88. 3:24

    routes it. We have a number of different

  89. 3:25

    generators. Now, these generators are

  90. 3:28

    tuned for different performance and cost

  91. 3:33

    avenues. There are We also have the

  92. 3:35

    ability to plug into third-party code

  93. 3:37

    review systems so that we can compare

  94. 3:39

    ourselves to what's available more

  95. 3:42

    broadly.

  96. 3:43

    Finally, with all these different

  97. 3:44

    generators, we might be might be

  98. 3:46

    duplicating comments, and we can

  99. 3:48

    actually create quite a high volume of

  100. 3:51

    comments. If you've ever used AI to to

  101. 3:53

    run a code review, you've probably seen

  102. 3:54

    that. So, we run through a number of

  103. 3:57

    steps in the post-processing where we

  104. 4:00

    both rate, categorize, filter, and

  105. 4:03

    deduplicate comments so that our

  106. 4:04

    engineers get only the highest

  107. 4:06

    confidence comments that are actionable

  108. 4:08

    for them to work on.

  109. 4:10

    You'll also notice along the bottom we

  110. 4:12

    talk a little bit about feedback in our

  111. 4:14

    evaluation. But, with this context of

  112. 4:16

    the overall system, I'm now going to

  113. 4:18

    hand it off to Ameya to dive into our

  114. 4:19

    first focus area.

  115. 4:24

    >> Hello.

  116. 4:25

    Hello, everyone. So, I will be talking

  117. 4:27

    about how we evolve U review with

  118. 4:30

    observability and evaluation.

  119. 4:33

    So, U review had a very humble

  120. 4:34

    beginning. Basically, it was a single

  121. 4:37

    prompt that you should do logic checks

  122. 4:38

    per file, a simple agent which used to

  123. 4:40

    do thorough review. And we had a

  124. 4:42

    dispatcher to decide whether to go which

  125. 4:46

    generator to choose.

  126. 4:48

    Even what we used to collect as

  127. 4:49

    observability was very surface-level. We

  128. 4:51

    used to collect cost. We used to run an

  129. 4:53

    NPS survey, have Google Forms being

  130. 4:55

    filled, Slack support. And with all of

  131. 4:58

    this, we saw that our quality to cost

  132. 5:00

    ratio was like all over the place. Like,

  133. 5:03

    our goal is to be in the second

  134. 5:04

    quadrant, that is the top left quadrant,

  135. 5:07

    but

  136. 5:08

    you can see we were all over the place.

  137. 5:11

    Then what we did is that we started

  138. 5:13

    collecting more data. So, we started

  139. 5:17

    collecting the sentiments of the replies

  140. 5:20

    that were made to the U review

  141. 5:22

    that the U review uh call

  142. 5:25

    you know, the U review agent got from

  143. 5:27

    the developers. So, we categorized them

  144. 5:29

    into positive, negative. We classified

  145. 5:31

    them into

  146. 5:32

    various categories, and we found a bunch

  147. 5:35

    a lot of classes of bugs and issues that

  148. 5:37

    we could actually solve. And with that,

  149. 5:40

    we improved the system, and we were able

  150. 5:42

    to move a large number of PRs to a high

  151. 5:45

    quality to cost ratio.

  152. 5:47

    Um but, we still felt that this was not

  153. 5:49

    enough.

  154. 5:51

    We need to know more of how the review

  155. 5:53

    is done. So we started tracking things

  156. 5:55

    like address rate. So basically when a U

  157. 5:58

    review comment is made, does the

  158. 6:00

    developer go and actually address the

  159. 6:02

    comment? We started tracking that. And

  160. 6:05

    then we also

  161. 6:07

    started doing more like a runtime

  162. 6:08

    profile, which is like the agent

  163. 6:10

    trajectory,

  164. 6:11

    which told us

  165. 6:13

    why the agent is doing what it what it

  166. 6:15

    did. We get to know what tools calls it

  167. 6:19

    made. We get to know what thinking

  168. 6:20

    process it had. And then with that

  169. 6:22

    insight, we were able to actually tune

  170. 6:25

    our runtime, tune our performance such

  171. 6:27

    that the agent could very quickly give

  172. 6:30

    us

  173. 6:32

    high-quality results at a low cost.

  174. 6:35

    One of the biggest learnings in this

  175. 6:37

    process was like the model doesn't know

  176. 6:39

    that it's wrong. It always confidently

  177. 6:41

    says 100% sure that yeah, this is the

  178. 6:44

    review for your code. Go ahead. But we

  179. 6:46

    saw that no, it actually needs a lot of

  180. 6:48

    guidance from the teams because each

  181. 6:50

    team has its own style guide, its own

  182. 6:54

    patterns or like anti-patterns that they

  183. 6:56

    want to look for. So that all should be

  184. 6:58

    like baked into the agent. And we also

  185. 7:01

    realized that we need to have guardrails

  186. 7:03

    for the agent. So we need to tell the

  187. 7:05

    agent what not to waste turns doing.

  188. 7:07

    Like code review is something that has

  189. 7:09

    to happen in like a specific time span.

  190. 7:12

    And then if it starts spending time

  191. 7:14

    doing things that it should not be

  192. 7:16

    doing, uh leads to a bad quality code

  193. 7:19

    review.

  194. 7:20

    Uh second focus area for U review has

  195. 7:24

    been

  196. 7:25

    nations.

  197. 7:26

    We

  198. 7:27

    We went very deep on team customizations

  199. 7:29

    because as we'll presented that we have

  200. 7:31

    hundreds of teams and everyone has like

  201. 7:33

    their own way or their own thing for

  202. 7:35

    code review.

  203. 7:37

    So our review stack is pretty

  204. 7:38

    straightforward. We have single-file

  205. 7:40

    reviewers and multi-file reviewers.

  206. 7:43

    Uh, we basically do a general purpose

  207. 7:45

    "Hey, find me all logic bugs per file"

  208. 7:48

    uh, kind of a review. And uh, then we

  209. 7:50

    also do a deep review because we have

  210. 7:52

    like six mono repos. So, all these mono

  211. 7:54

    repos have their own anti-pattern style

  212. 7:57

    guides and all baked into this agent

  213. 7:59

    review which does have a nice multi-file

  214. 8:01

    review.

  215. 8:02

    But, then we extended it further

  216. 8:04

    uh, basically to AI linters. These are

  217. 8:07

    basically few shot uh,

  218. 8:09

    AI problem uh, or like a few shots uh,

  219. 8:12

    system where uh, developers can

  220. 8:15

    basically

  221. 8:16

    kind of deterministically get more

  222. 8:18

    context and then run rules with that

  223. 8:21

    context and like a file and find some

  224. 8:24

    uh, systematic and mechanical issues.

  225. 8:26

    And finally uh, the most powerful thing

  226. 8:29

    is the custom agent uh, where the teams

  227. 8:31

    could basically define their own custom

  228. 8:33

    agent, link it to like a knowledge base,

  229. 8:36

    uh, link it to their past PRs, have like

  230. 8:38

    a skill to do the review, and so on.

  231. 8:41

    But, uh, all of this was not simple

  232. 8:44

    because we had to actually uh, piggyback

  233. 8:46

    on our uh, ownership model which is at

  234. 8:48

    Uber uh, so that we can like very

  235. 8:50

    logically roll out to all the teams.

  236. 8:54

    Uh, we had to basically do a

  237. 8:57

    uh, what do you say? Co-locate the

  238. 8:58

    customizations next to where the

  239. 9:00

    developers write their code so that they

  240. 9:02

    can like quickly uh, keep updating these

  241. 9:04

    customizations. We had to implement a

  242. 9:06

    smart deterministic uh, routing so that

  243. 9:10

    we could route which team gets what kind

  244. 9:12

    of review with which model, what kind of

  245. 9:14

    generators, and so on.

  246. 9:16

    And finally uh, the hard thing was like

  247. 9:18

    we had to actually surface all of this

  248. 9:20

    observability that I talked before, like

  249. 9:23

    the agent trajectory, addressal rate,

  250. 9:25

    uh, sentiment analysis back to the

  251. 9:27

    teams. So, so that the teams could

  252. 9:29

    actually understand that "Oh, I wrote

  253. 9:31

    this rule, but maybe not a lot of

  254. 9:33

    developers are liking it in my team, so

  255. 9:35

    let me go and update it." And then we

  256. 9:37

    had to give Bubble up that kind of

  257. 9:39

    observability to all the people who are

  258. 9:41

    contributing to the platform.

  259. 9:43

    Uh

  260. 9:44

    one thing that we learned is that

  261. 9:46

    actually writing the skill was very

  262. 9:48

    easy. Like teams just very quickly wrote

  263. 9:51

    a skill by asking Claude to write one,

  264. 9:53

    go over my

  265. 9:55

    previous PR reviews and write me a

  266. 9:57

    skill. But the hard part was how to run

  267. 10:00

    these skills at scale with consistent

  268. 10:02

    quality and low cost. And that required

  269. 10:05

    a lot of iterations not only from the

  270. 10:07

    U-Review team side, but also like for

  271. 10:09

    each team who was trying to write these

  272. 10:11

    rules. Uh

  273. 10:13

    in results, we basically uh see that,

  274. 10:16

    you know, uh U-Review does like around

  275. 10:18

    25,000 comments a week. And uh we get

  276. 10:21

    10% of them actually get some feedback.

  277. 10:24

    And only 4% of the PRs actually get some

  278. 10:26

    negative feedback. Uh we also saw that

  279. 10:30

    um

  280. 10:31

    the overall addressal rate was uh around

  281. 10:33

    67%

  282. 10:34

    and almost three quarters of the high

  283. 10:36

    severity issues uh

  284. 10:39

    were usually addressed by the

  285. 10:40

    developers, which shows that U-Review

  286. 10:42

    actually adds some value to the entire

  287. 10:45

    development life cycle. And then uh with

  288. 10:47

    all the observability and

  289. 10:49

    uh evals that I showed that I went

  290. 10:51

    through, we saw that against like a very

  291. 10:53

    naive implementation, our costs were

  292. 10:55

    down by 60% and our quality and our

  293. 10:58

    accuracy was up by uh around 70%.

  294. 11:02

    Uh

  295. 11:02

    for a last focus area, I'll give the mic

  296. 11:05

    back to Will and he will go over the

  297. 11:07

    inner versus outer loop.

  298. 11:11

    >> Awesome. So, now that we've talked about

  299. 11:14

    uh some of the details of actually

  300. 11:16

    implementing high-quality reviews, it

  301. 11:19

    kind of brings us to the last area,

  302. 11:21

    which is where we start talking about

  303. 11:24

    where things are going, right? With

  304. 11:25

    moving to the Agentech SDLC,

  305. 11:28

    we're moving software into a model where

  306. 11:31

    engineers are interacting with the code

  307. 11:34

    less.

  308. 11:35

    They're often times not as involved in

  309. 11:37

    authoring the code. Uh currently, we

  310. 11:40

    still have uh humans approving the code,

  311. 11:43

    uh but we see a a short path in the near

  312. 11:46

    future to a percentage of our code

  313. 11:50

    landing automatically, having automatic

  314. 11:51

    approvals, right? The various parts of

  315. 11:54

    the industry are already moving there.

  316. 11:56

    Um

  317. 11:57

    Part of the way along the process was

  318. 11:59

    figuring out by having our single code

  319. 12:02

    review platform, what did we need to

  320. 12:04

    tune for the various audiences that are

  321. 12:07

    actually getting these code reviews? Um

  322. 12:10

    you know, the interface, that's one area

  323. 12:12

    that's sort of intuitive there. Uh one

  324. 12:14

    thing that might be less intuitive is

  325. 12:16

    around accuracy. Uh with the inner loop,

  326. 12:20

    our accuracy needs actually need to go

  327. 12:22

    up,

  328. 12:23

    or else we can result in uh dealing with

  329. 12:26

    cavitation of an agent where it fixes

  330. 12:28

    something, goes back, gets another code

  331. 12:29

    review, and has to kind of like fix

  332. 12:31

    backwards because the quality of the

  333. 12:33

    comment was low. Um

  334. 12:36

    The one of the other interesting things

  335. 12:38

    is agents are more than happy to go

  336. 12:39

    through and fix 100 nits on a pull

  337. 12:42

    request where your engineers really get

  338. 12:44

    frustrated in situations like that. Um

  339. 12:47

    but probably the most interesting aspect

  340. 12:49

    of this transition is the feedback. As

  341. 12:53

    you can see, quite a bit of what went

  342. 12:55

    into getting high-quality code reviews

  343. 12:57

    at Uber was bringing the human feedback

  344. 13:01

    into the system and using that to figure

  345. 13:04

    out how to tune our prompts, how to tune

  346. 13:06

    our agents.

  347. 13:08

    Uh and so as we move to a model where

  348. 13:12

    humans are less in the loop, where

  349. 13:15

    software engineering is moving to an

  350. 13:17

    agentic model,

  351. 13:19

    we're effectively going to a place where

  352. 13:21

    we're starting to talk about are we

  353. 13:23

    going to kill the outer loop? Is the

  354. 13:24

    human engineer not going to be involved

  355. 13:28

    in the code review.

  356. 13:29

    Some people are already here.

  357. 13:31

    Now,

  358. 13:32

    with the feedback taken into

  359. 13:34

    consideration,

  360. 13:35

    you start wondering, all right,

  361. 13:37

    what could this result in, right? I'll

  362. 13:39

    let your imagination go there in terms

  363. 13:41

    of quality degradation, slop, and so

  364. 13:43

    forth. But, rather than killing the

  365. 13:45

    outer loop, I think that we believe and

  366. 13:48

    the industry has just started to really

  367. 13:50

    kind of coalesce on this idea that we're

  368. 13:52

    really expanding the outer loop. Rather

  369. 13:55

    than removing humans from the code

  370. 13:57

    review process, we are moving their

  371. 14:01

    responsibilities up a layer.

  372. 14:03

    Rather than them dealing with the

  373. 14:05

    details of the implementation, the agent

  374. 14:07

    is great at writing the software.

  375. 14:09

    The agent is getting much, much better

  376. 14:11

    at reviewing the software as a human

  377. 14:13

    would. But now, as software engineers,

  378. 14:15

    we still are going to have an outer

  379. 14:17

    loop. It's just going to look a little

  380. 14:18

    different. Instead of you worrying about

  381. 14:20

    the optimization of the performance and

  382. 14:23

    the API compatibility, you're going to

  383. 14:25

    be thinking more about architecture in

  384. 14:27

    your code reviews. You're going to have

  385. 14:29

    time to focus on the domain expertise

  386. 14:31

    that you have and product thinking. So,

  387. 14:34

    we believe that as we adopt this

  388. 14:36

    automated uh code review, this is going

  389. 14:40

    to be the result of how our engineers

  390. 14:42

    are interacting with the system and

  391. 14:43

    guiding it.

  392. 14:47

    And that's it. Thank you so much for

  393. 14:48

    coming. Thanks.