← All AI Engineer talks

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: Routing, Measuring and Improving Automated Code Review at Uber

Will Bond and Ameya Ketkar explain how Uber combines review generators, team-owned rules and developer feedback—and why agent-facing reviews make accuracy more important.

From a talk by Will Bond and Ameya Ketkar

At a glance

Ideas worth remembering

  • A shared review service can support humans and agents while routing changes to different generators and filtering duplicate or low-value comments before delivery.

  • Reply sentiment, comment addressal and agent trajectories provide complementary evidence for improving review behavior, runtime and cost.

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

  • Uber reports around 25,000 comments weekly, a 67% addressal rate and 60% lower cost than a naive implementation. The reported quality and accuracy improvement lacks a defined evaluation method.

  • Agent-facing reviews need enough accuracy to avoid repeated reversals of changes. As automation grows, the speakers propose keeping humans involved through architecture, domain and product judgment.

Code generation puts pressure on review

Will Bond introduces uReview as Uber’s system for increasing software engineering velocity through automated code review. The organizational scale matters: thousands of engineers work across hundreds of teams, 12 sites and six language-specific monorepos. A review system serving that organization has to work across different codebases and team practices.

The immediate problem is the growing queue for human attention. Bond reports that both pull request volume and pull request size increased over the preceding 24 months. In 2024, engineers received a first review within three hours; in 2026, that wait had grown to nine hours. He identifies code review as the bottleneck. Those figures establish the motivation for uReview, but do not measure an improvement caused by it.

0:140:17
Suggest correction

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

0:01 · section reference included

Why Uber built a shared review platform

Uber’s decision to build internally begins with integration constraints. The company was using Phabricator while migrating to GitHub, and Bond says most available solutions did not support Phabricator. Uber also wanted review inside the agent’s development loop: agents should encounter the same review rules as human engineers. Supporting both existing review tools and agent workflows made a common platform valuable.

A shared platform does not mean centrally authoring every rule. With hundreds of teams, Uber needed to distribute responsibility for review customizations and the knowledge behind them. Its existing team ownership system supplied that organizational structure. Integrating with it avoided maintaining a separate representation of who owned which code and review practices.

The platform also needed to vary review effort according to a change’s risk and complexity. At Uber’s volume, giving every change exactly the same treatment would ignore those differences. Alongside this flexibility, Bond identifies a requirement for consistent security and compliance coverage: required reviews must run reliably across changes, without depending on individual teams remembering to invoke a review skill. The design therefore combines local customization with platform-level execution guarantees.

1:281:31
Suggest correction

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

1:21 · section reference included

Generate broadly, then control what reaches the engineer

GitHub, Phabricator and the agent loop all feed requests into the uReview service. The service receives review requests and user feedback, then routes work to generators tuned for different performance and cost characteristics. It can also connect to third-party review systems, allowing Uber to compare its own results with alternatives. The architecture separates the surface requesting a review from the mechanism producing it.

Multiple generators create a second problem: they can repeat findings and collectively produce too many comments. uReview therefore applies post-processing that rates, categorizes, filters and deduplicates comments before presenting them. The stated goal is to deliver high-confidence findings that engineers can act on. Generating a candidate observation and deciding whether it deserves a developer’s attention are separate steps; the talk does not specify the scoring thresholds or deduplication algorithm.

3:073:09
Suggest correction

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

2:57 · section reference included

Measure reactions, actions and agent behavior

Ameya Ketkar describes an initially simple implementation: a prompt for per-file logic checks, a basic agent for thorough review and a dispatcher choosing between generators. Its early observability consisted of cost tracking, an NPS survey, Google Forms and Slack support. These channels collected feedback, but the team still saw highly variable quality relative to cost. Knowing expenditure and broad satisfaction did not yet give it enough detail to tune individual review behavior.

The next step was to classify developers’ replies to uReview comments by sentiment, including positive and negative responses, and by other categories. This exposed recurring classes of bugs and issues that the team could address. Ketkar credits those changes with moving more pull requests toward a better quality-to-cost balance. Replies became a way to identify repeated failure patterns rather than remaining isolated support conversations.

The team then added addressal rate: after uReview posts a comment, does the developer actually address it? That provides a behavioral signal alongside the developer’s expressed reaction. It also collected agent trajectories as a form of runtime profiling, including tool calls and the agent’s recorded reasoning process. These traces helped the team investigate how a review was produced and tune runtime and performance. Together, the signals connect what developers say, what they do and what the agent did to reach its finding.

Ketkar’s central warning is that a model can confidently deliver an incorrect review. Its confidence does not substitute for team knowledge or evaluation. Teams need to supply their style guides, preferred patterns and anti-patterns, while the runtime needs guardrails that tell the agent which activities would waste turns. Review has to finish within a useful time span; spending that budget on irrelevant work can reduce review quality as well as increase cost.

4:334:34
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

Give teams reviewers they can maintain

uReview’s customization stack starts with single-file and multi-file reviewers. A general-purpose reviewer looks for logic bugs within each file. A deeper agent review incorporates the style guides and anti-patterns of Uber’s six monorepos and works across multiple files. These are distinct scopes of analysis: the platform can run local checks while also supporting a review that considers a broader change.

The stack extends to AI linters and custom agents. Ketkar describes the linters as using few-shot examples, gathering context in a more deterministic way and applying rules to that context and a file to find systematic, mechanical issues. Custom agents offer teams more control: a team can connect a reviewer to its knowledge base, past pull requests and a review skill. The distinction is the amount of team-specific context and behavior each mechanism can carry; the description does not establish that the AI linters themselves produce deterministic judgments.

Making these capabilities usable across the organization required integration with Uber’s ownership model. Customizations live next to the code so developers can update them as part of their normal work. Deterministic routing selects which teams receive which types of review, models and generators. Ownership, configuration location and routing therefore turn a collection of review skills into an operating system for team-specific reviews.

The feedback also has to reach the people writing those rules. uReview surfaces trajectories, addressal rates and sentiment analysis to contributing teams. Ketkar gives the example of a rule author discovering that developers dislike a rule and then updating it. Teams could quickly ask Claude to derive a skill from previous pull request reviews; the harder work was running those skills at scale with consistent quality and low cost. That required repeated adjustment by both the uReview team and the teams supplying customizations.

7:277:31
Suggest correction

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

7:20 · section reference included

What the reported results establish

Ketkar reports around 25,000 uReview comments per week. About 10% of comments receive feedback, while 4% of pull requests receive some negative feedback. These percentages use different denominators: one measures responses to comments, the other measures pull requests with negative feedback. They cannot be combined into a comment approval rate, and comments without feedback do not establish developer agreement.

The overall addressal rate is around 67%, with almost three quarters of high-severity issues addressed. These figures support the claim that developers act on a substantial share of uReview’s output. Addressal is still a measure of developer behavior, rather than a direct measurement of whether every finding was correct or prevented a defect.

Against a naive implementation, Ketkar reports a 60% cost reduction and an increase of around 70% in quality and accuracy. He attributes the improvement to the observability and evaluation work. The presentation does not define the quality and accuracy measures, specify the measurement window or clarify whether the 70% figure is relative improvement or a percentage-point change. These are reported outcomes, without enough methodological detail to reproduce the comparison.

10:1310:16
Suggest correction

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

10:13 · section reference included

Agent-facing reviews need greater accuracy

Returning to the inner and outer development loops, Bond describes a shift toward agents authoring more code and engineers interacting with implementation details less. Humans were still approving code at the time of the talk. He presents automatic approval and landing for a percentage of changes as a near-future direction, rather than an already established uReview result.

Serving agents through the same platform requires more than changing the interface. Bond argues that review accuracy must increase in the inner loop because a bad comment can cause an agent to change code, request another review and then reverse its earlier work. In this repeated review-and-repair cycle, inaccurate feedback becomes a source of unstable behavior. A review system must therefore be judged partly by the changes it induces over successive iterations.

Comment volume has a different tradeoff for agents. Bond observes that an agent will handle 100 small nits on a pull request, while a human engineer may find that frustrating. But an agent’s willingness to act does not replace the human feedback that helped improve uReview. Developers’ reactions supplied evidence for tuning prompts and agents; changing the audience changes the availability of that evidence.

11:1111:25
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

Move human review toward architecture and product judgment

The ending asks what happens to review quality when humans become less involved. Removing human participation also removes a source of corrective feedback, creating the possibility of quality degradation. Bond’s proposed direction is to expand the outer loop by moving human responsibilities up a layer. The concern follows directly from uReview’s development: human feedback was part of how the team learned which automated reviews were useful.

In that proposed division of work, agents take on more implementation and detailed review, while engineers spend more attention on architecture, domain expertise and product thinking. Bond uses performance optimization and API compatibility as examples of details from which human attention could shift. He closes with this as the team’s expectation for how engineers will guide increasingly automated development. The talk does not supply a replacement feedback mechanism for that future arrangement; preserving useful human guidance remains a design problem as the outer loop changes.

13:0813:12
Suggest correction

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

13:08 · section reference included

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.