← All AI Engineer talks

AI Engineer World's Fair 2026

Benchmarking Coding Agents on New vs Legacy Codebases — Denys Linkov, Wisedocs

Denys Linkov· Head of ML, Wisedocs18:08

Read the talk

Benchmarking Coding Agents on New and Legacy Codebases

Wisedocs’ pipeline refactor shows where better coding agents save work, where they still stop short, and why a cleaner codebase can be worth building before the next model arrives.

From a talk by Denys Linkov

Before you start: Familiarity with software repositories, pull requests, and AI coding agents will help; no Temporal or Ray experience is required.

A pipeline customer growth could no longer sustain

In 2025, customer growth was exposing three problems in Wisedocs’ AI pipeline: throughput could not meet demand, the system was too complicated to update, and developers avoided touching legacy code spread across more than ten repositories. Improving the underlying technology had become a business requirement.

Slide titled “Three foundational issues” lists being too slow to meet customer demand, too complicated to update, and code in 10+ repos that no one wants to touch.
Three foundational issues: slow throughput, difficult updates, and code spread across 10+ repositories.

The team committed to a six-month refactor. Was that the right decision, given how quickly coding agents were improving? The workload made the question consequential: Wisedocs processes complex medical claims in PDFs exceeding 10,000 pages, with some files larger than video files. A pipeline containing multiple ML models has several distinct scaling problems; making one component faster does not automatically make the whole system handle more work.

0:160:27
Suggest correction

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

0:16 · section reference included

Technical debt has to earn its cost

Bad code is not always a deliberate shortcut. Denys Linkov recalls trying to render a video-game character with Java’s System.out.println before he understood the difference between printing output and drawing an image. Experience changes the mistakes, but does not eliminate them. The useful question is what the resulting debt buys: a feature, a customer, or another business outcome—and whether that return exceeds the complexity that keeps accumulating afterward.

AI coding tools make that calculation more urgent. Linkov points to Anthropic case studies involving Spotify and Stripe as examples of faster shipping and refactoring. But faster implementation is only one part of product progress. He asks the audience whether technical products have improved over twenty years, then five years, then the past year. The shrinking window separates obvious long-term advances from a harder question: is the latest increase in shipping speed improving customers’ experience?

His anonymized uptime examples illustrate the concern: he describes services falling short of three- or four-nine reliability, without identifying the companies or supplying exact figures in the spoken explanation. Shipping faster does not establish that maintainability, reliability, or product quality improved. Those outcomes need their own attention.

1:231:31
Suggest correction

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

1:23 · section reference included

From orchestrator research to tested capabilities

Implementation began in April, after preparatory research. The team spent roughly two months evaluating five open-source orchestrators for its pipeline. Linkov places that work before the Google and OpenAI deep-research products were available. After gathering requirements, a three-person team built proofs of concept to check that the candidates could deliver the required behavior.

The original process combined manual research, some AI assistance, and a Confluence document comparing seventeen criteria. Linkov estimates that the research process could now be 90% faster; this is a retrospective estimate, not a measured rerun. His proposed workflow is:

  1. Use deep research to investigate candidates.
  2. Match the findings against the actual problem statements and criteria.
  3. Assign subagents to examine individual products and criteria.
  4. Build proofs of concept and evaluate the results.

The final step preserves the difference between a promising description and a working capability.

A polished research report can make a nonexistent feature seem credible. Accepting that report without testing the capability can send the project backward, regardless of how much research time the agent saved. The proof of concept is part of the selection process, not an optional confirmation after the decision.

Slide titled “This process could be 90% faster today” compares a manual Confluence document with Deep Research. Below are criteria, problem statement, deep research, subagents, POC building, and aggregate scoring, followed by a caution box.
Manual research and Deep Research compared, with a workflow through POC building and aggregate scoring.
3:313:47
Suggest correction

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

3:31 · section reference included

Rerunning a bounded Temporal refactor

After researching orchestration and model serving, Linkov began implementing Temporal activities and workflows that could reproduce behavior from the legacy system. He iterated on what he wanted, then gave the implementation task to o3 in Cursor. It worked faster than he could, but speed did not remove the need for supervision: the session required repeated guidance, manual edits, and code deletion.

Later reruns used Sonnet 4.6 and Opus 4.8. Linkov reports the following results for this particular task:

ModelReported result
o3 in CursorThree hours of back-and-forth; ten major mistakes
Sonnet 4.6Solved with one additional iteration
Opus 4.8Essentially solved in one attempt

These are observations from a bounded refactor, not a general benchmark of every kind of repository change.

The interaction changed alongside the models. The earlier o3 run lacked substantial tool use in some categories; newer harnesses used subagents, planning calls, shell commands, and verification. Model execution became somewhat more expensive, while the work required less human intervention. Linkov estimates that rebuilding this particular task with the newer tools would take around one-fifth of the original time. The gain was therefore not just faster code generation: it was less manual effort to reach an acceptable result.

5:015:11
Suggest correction

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

5:01 · section reference included

A longer task horizon is not a dependable handoff

As models improve, the developer’s input shifts from small changes and explicitly supplied snippets toward a well-constructed specification. That makes missing requirements more expensive. Starting an agent before leaving for the evening feels productive until a flaw in the prompt or plan invalidates the unattended work. The quality of the handoff becomes part of the engineering task.

METR’s task-completion time horizons help describe this capability, but the time axis needs care: it measures task difficulty through human expert completion time, not how long an agent runs. A horizon is fitted at a specified probability of success. Linkov contrasts the commonly shared 50% horizon with an 80% or higher threshold. The improving trend remains, but an eighteen-plus-human-hour claim at one threshold cannot simply be carried over to the other. METR also warns that measurements above sixteen hours are unreliable with its current task suite.

For routine delegation, Linkov would prefer to reason about 90% or 99% success. Those are desired reliability thresholds, not results he demonstrates. A specification should support a reasonably dependable handoff; an hour-long attempt with a fifty-fifty chance of completion can consume elapsed time, compute, and the attention needed to discover that it failed.

In the Mythos Preview evaluation he presents, Linkov describes a notable decline in success around four hours of human task difficulty. He also points to inconsistent completion of some tasks around fifteen seconds and below fifteen minutes. His interpretation is that a short task is not automatically a reliable task: rising aggregate capability does not guarantee that a particular assignment will succeed.

Teams therefore need a shared understanding of what agents can accomplish and development practices that make completion checkable. Wisedocs’ verification processes matured during the refactor. Their purpose was practical: avoid spending time on repeated model attempts that never resolve the underlying problem.

6:557:03
Suggest correction

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

6:55 · section reference included

Reach parity, then keep shipping

The refactor consolidated roughly ten repositories into a monorepo, with the intention of adding new features afterward. The older repositories had accumulated more than six years of history. Linkov attributes their slower progress both to technical debt and to the absence of the AI coding tools available during the rebuild. The monorepo reached parity with the previous system within the first six months, according to Linkov.

Feature development continued beyond the parity milestone. Code volume and commit activity rose, although Linkov explicitly acknowledges that code volume is a weak productivity metric. The contribution graph uses a logarithmic scale and also reflects the gradual onboarding of more developers. Commit counts eased as work moved from reproducing existing behavior to adding product features, but delivery continued.

Eventually, almost every developer in the company contributed to the monorepo. Contributions extended beyond individual specialties: someone could change a schema, an API call, or another part of the stack as their work required. That broader participation is a distinct outcome from generating more code, even though the graphs do not isolate how much each change—repository structure, tooling, or team participation—caused the improvement.

10:0810:16
Suggest correction

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

10:08 · section reference included

The whole-codebase attempt stopped at scaffolding

Could a newer model perform the whole refactor from a broad goal? Linkov tried GPT-5.5 extra high, providing repository names and context about the underlying models and components. The agent reported completion after ten minutes and twenty-two seconds, having written about 2,000 lines of code. That small output prompted a closer inspection.

The result was scaffolding, not the required model implementations. A Ray Serve deployment and a bootstrap command were also missing. The agent’s completion report did not establish that the system had been rebuilt. This broader attempt exposed a gap in scope completion and self-validation that the successful bounded Temporal task did not resolve. Linkov’s expectation that substantial refactors would become consistently achievable within another six months was a forecast, not the outcome of this run.

Slide shows code-change and assistant-response screenshots above an “IMPORTANT CAVEAT” stating that a Ray Serve deployment and bootstrap command were not added.
“Great success... Almost”: generated scaffolding comes with a missing deployment caveat.
11:3511:54
Suggest correction

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

11:35 · section reference included

What waiting would save—and what it would cost

The case for waiting is real. Models are improving, tool use is improving, and sandboxes and monitoring make agent behavior easier to support and inspect. Those advances make future cleanup less demanding. If the same work becomes easier next year, accepting some technical debt today can be a rational choice.

But AI-assisted development can recreate the same legacy conditions: a large volume of code, poor performance or quality, and too few people who understand how it works. When customer requirements change or failures appear, that lack of understanding makes adaptation harder. Guardrails remain necessary whether the team chooses a full refactor or only a partial one.

For Wisedocs, the earlier repository patterns had served customer demand and achieved business goals. Consolidation then enabled another stage of growth. Linkov reports shorter pipeline runtime, lower costs, and support for larger files after the refactor. He also reports that some features previously requiring multiple months could now ship in under a week.

The cleaner codebase also changed developers’ willingness to participate. People wanted to work in it, and patterns established there spread to other repositories. Those benefits extend beyond the immediate output of a coding agent: the system became easier for the organization to keep developing.

A monorepo rebuild is not the only route. An AI delivery system has multiple layers, and isolating particular components can avoid a full refactor. The timing decision depends on business value: what present constraints cost, what cleanup would unlock, and what might become cheaper later. Better future models do not remove the value of making the current system workable.

12:3012:39
Suggest correction

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

12:30 · section reference included

Repository navigation is only part of the problem

In the Q&A, Linkov distinguishes agent navigation from operating the complete system. Models have become better at exploring multiple repositories placed under a common parent directory. That does not make end-to-end testing, verification, and deployment equally simple across those repositories. A full-system sandbox also has to clone and configure them all, adding setup work before the agent can test anything. Consolidation addressed that operational friction as well as code discoverability.

15:1515:25
Suggest correction

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

15:15 · section reference included

Requirements held up; verification evolved

Asked whether the requirements and guardrails were fixed before the project or discovered along the way, Linkov says the team revisited them. He reports that fifteen of the seventeen initial requirements were right. Verification practices evolved during implementation. In his account of the project’s starting point, plan mode was only emerging in Claude Code and was absent from Cursor; the team subsequently incorporated planning into its development lifecycle. Those tool limitations describe the historical workflow, not their present capabilities.

15:4715:59
Suggest correction

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

15:47 · section reference included

Human review built shared understanding

Another question assumes that pull-request reviews were already autonomous. Linkov corrects that assumption: all PR reviews during the refactor were human reviews. Local AI skills supplied additional code checks, but did not replace that review process. Although review was becoming more autonomous afterward, the original PRs served an additional purpose. A small group had built the new repository, and reviewing their changes helped other developers learn what the refactor contained. Review distributed knowledge as well as checking code.

16:3116:36
Suggest correction

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

16:31 · section reference included

The next gains extend beyond rewriting files

Asked what would change most over the following six months, Linkov expects models to handle more complex assignments and companies to build more supporting infrastructure for refactors. The opportunity spans research, proofs of concept, code-quality validation, and checks for hidden assumptions. A library feature that appears to satisfy a requirement, for example, may exist only in beta. Catching that distinction early can matter as much as rewriting a file quickly. His forecast is for a faster path from understanding the problem to validating the system—not merely faster production of replacement code.

17:0217:07
Suggest correction

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

17:02 · section reference included

Resources

From the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] So it's not just my AI pipeline that's on fire, but also my PowerPoint.

  2. 0:16

    So it's twenty twenty-five, uh, we're scaling as a business, and things are going poorly. We're adding too many customers, we're not getting the throughput we need, and we need to improve our underlying technology.

  3. 0:27

    And there's three main issues that we're facing. The first one is that we're too slow to meet customer demand. The second one is that this AI pipeline that we've built is too complicated to update.

  4. 0:37

    And the third one is because it's a legacy code base or actually more than ten repos, nobody actually wants to touch the code. It's not a fun experience.

  5. 0:45

    So we made this decision to refactor over the course of six months, and the real question for this talk today: Was this the right move to do?

  6. 0:54

    So I'll spend this time answering this question, but let's start off with the use case. So the company I work at, Wisedocs, processes complex medical claims, which are PDFs that are more than ten thousand pages in size.

  7. 1:04

    Some of these files are bigger than video files. So it's a pretty complex application, and because of this, it's actually non-trivial to scale the different parts. So we're gonna talk about the pipeline today, which has a number of ML models.

  8. 1:17

    So I'll divide this talk into a number of chapters. We'll start off with the first one, which is the concept of tech debt.

  9. 1:23

    So I think we all have this feeling universally, if we've been developers for a while, that we all write bad code. The question is: Do we do this intentionally or not?

  10. 1:31

    And if I look back to some of the earliest code I used to write, uh, it was bad. This was more than fifteen years ago. I tried to print an image of this character from a video game, and I didn't understand that you can't, uh, system.out.printline in Java to render something on the screen.

  11. 1:47

    So hopefully I've come, uh, further from that point in time, but there's these moments where we all know that we've written bad code before.

  12. 1:55

    If we think about technical debt as financial debt, it compounds in mysterious and sometimes unexpected ways. But you should think about it in a rigorous format as well. For us to achieve some kind of ROI by taking on technical debt, such as building a feature or getting new customers, we want to make sure that the ROI makes

  13. 2:11

    sense. If we introduce additional complexity into our code base, we can very quickly outrun the ROI we've generated.

  14. 2:21

    Now, with AI engineering, you've probably seen a number of different stories that have come out to showcase the progress that's been made. These are two case studies from Anthropic, one from Spotify and the other from Stripe, talking about the immense progress that they've made, both in shipping velocity and also the ability to refactor code.

  15. 2:37

    So at this point in time, writing code or making changes is something that teams are doing faster and faster. Now I'll pause here.

  16. 2:46

    Who here thinks that products have gotten better in the past twenty years? Technical products. Why don't you raise your hand.

  17. 2:52

    I hope everybody, right? Phones are pretty cool. How about five years?

  18. 2:58

    How about the past year? Okay. So the challenge is that we're going faster and faster through the technology life cycle, but we've lost something. The, the product focus on customers in some way has degraded.

  19. 3:10

    The maintainability of the code and the reliability has degraded. You can see some of the up times here from two leading companies. I blurred out their names for, for-- it, it doesn't actually matter who they are.

  20. 3:20

    But we are below a three nine or even a four nine reliability. So even though we're shipping faster and faster, the code quality and the product quality has not necessarily gone up.

  21. 3:31

    So let's talk about the refactor that we did. So we started this refactor with the actual code implementation in April and did some pre-work earlier. So I'll go through five different tasks that we did and share some of the, the findings that we had before and after, especially with-- as new models have come out.

  22. 3:47

    So we spent around two months evaluating orchestrators for our AI pipeline. We looked at five open source projects, and we wanted to benchmark and see how effective they were for our use case.

  23. 3:56

    And we started this off before deep research came out as part of Google and OpenAI, so that web search capability to do a comprehensive analysis was still not there.

  24. 4:05

    Now, after we actually gathered these requirements, we built out proof of concepts with a team of three to make sure that we actually got the right results.

  25. 4:13

    Now, I'm pretty confident we could do this ninety percent faster now with the tooling that we have. Before, we would manually go through, use a little bit of AI, but put everything into a Confluence doc, and we'd evaluate across seventeen different criteria that we came up with.

  26. 4:26

    Nowadays, we could build a much more agentic workflow to do that, starting off with deep research, uh, making sure that we, uh, match that against the problem statements that we have, creating subagents for each of these criteria and, uh, products, and then finally building POCs and evaluating.

  27. 4:41

    So things have changed in the past year and a half where we could actually go much, much faster. But we still have to maintain that same set of quality because it's very easy to undergo AI psychosis, where you look at a deep research rep-report that's twenty pages long, and you say, "Wow, this looks good," and then those

  28. 4:56

    features don't actually exist in the product and you've set yourself back.

  29. 5:01

    Now, after we've done the initial, uh, orchestration research and model serving research, we went into actually committing code. This is just a example of what happened when we were experimenting.

  30. 5:11

    I was doing some initial research with Temporal and committed some activities in workflow code to make sure that we can actually replicate what we have in the legacy code base.

  31. 5:20

    So then I did what we wanted to do o-over a number of iterations, and at the time gave it to o3 to actually try to implement this code. And it did it much faster than I would be.

  32. 5:30

    This refactor took, uh, three hours of back and forth chatting within Cursor, but it made ten major mistakes. So at the time when we were going through this refactor, agentic coding was getting better and better, but it still hadn't reached the point of where it is now.

  33. 5:44

    And it was still a very manual process where you had to intervene and actually guide the model and manually edit or delete code.

  34. 5:52

    Now, I reran these benchmarks on some, some modern models. So we have Sonnet four point six and Opus four point eight, and things were much faster. Uh, Sonnet four point six with one additional iteration was able to solve the task, and with Opus, it was basically able to one-shot this problem.

  35. 6:07

    So models are getting significantly better, along with harnesses. And the interesting part here as well is that the way that the models interacted has changed su-substantially as well. Before with o3, there weren't substantial tool calls on certain categories.

  36. 6:19

    Uh, and then as we moved into Sonnet 4.6 and Opus, we see now that in modern harnesses we get subagents, we get some of those plan calls, we get, uh, different shell commands, and we get different verifications.

  37. 6:31

    And overall, this process, even though the model execution was a little bit more expensive, it was a lot less manual, so we could actually accomplish a lot more. So if I was rebuilding the same task that I had for, for this refactor, it would take around one-fifth of the time to accomplish, which is pretty good progress.

  38. 6:48

    So I think all of us realize the scenario that models are substantially better now than they were before.

  39. 6:55

    Now, this is really important because it shapes the way we think about the software development life cycle. We think about 2025 and the types of work that we were doing.

  40. 7:03

    We were making some small changes. We would give specific code snippets to models. We were just starting to get into this agentic framework, uh, of the type of work we can do.

  41. 7:12

    And now if we provide a, a well-constructed spec to a model, it could generally execute it at a very, very high, uh, capability level. And we can see this both in anecdotal experiences as well as some of the thought leadership that has been coming out of the big labs.

  42. 7:25

    Th-this image is one from Anthropic. Let me ask the group a question. Who here has kicked off an agent and realized that either the prompt, the plan, or the requirements were incomplete or missing?

  43. 7:38

    A lot of people. Yeah. It's, it's very frustrating, right? You-- You're like, "Okay, I'm ready to go. It's eleven PM or five PM. I'm going to set off an agent and then come back," and then you realize there is a, there is a critical flaw.

  44. 7:50

    Now, the reason I bring this up is it's very important to have a good mental model in understanding how accurate models can be in accomplishing tasks. Who here has seen this meter graph before?

  45. 8:00

    I think decent number of people. So this is pretty common on actually mapping how much time models can complete tasks of certain categories for. So the idea being that as models get better and better, they can do longer running tasks.

  46. 8:12

    Now, typically, this graph is shared with a fifty percent accuracy rate, but I think it's much better to actually look at the eighty percent accuracy rate or higher. And you can see there, you can still see a similar exponential trend, but we're no longer claiming that models can accomplish tasks that would take a human eighteen-plus hours.

  47. 8:27

    Now, I actually think it's much better to measure the accuracy at ninety or ninety-nine percent because this is where the mental model is most efficient. You construct a plan, you create a spec, you hand it off to an agent, and you're pretty sure that it'll get things done, right?

  48. 8:41

    You don't want to be creating a plan or a spec and then have a fifty-fifty chance of coming back and knowing that you wasted compute and your attention span.

  49. 8:48

    Now, if you're kicking off a process that is going to take an hour and it has a fifty percent chance of completing, there's a very high chance you just wasted that hour and you could have been doing something different.

  50. 8:58

    If we think about, uh, broader evaluation-- So Meter does have some more information about their frontier models. So this is one for, for Mythos preview that they did roughly a month ago.

  51. 9:08

    And you can see here that generally the success rate starts to decline significantly at that four-hour mark. But even before then, at the fifteen-second mark or even before the fifteen-minute mark, there are certain tasks that Mythos, uh, in, in all its glory cannot complete, uh, effectively and consistently.

  52. 9:25

    So we're making rapid progress in, in the AI model space, but we're still not there where you can just kick off an agent and have something be completed reliably.

  53. 9:33

    So again, this is really important for your software engineering teams and for you as an IC to understand what is your mental model and how are you going to contribute to that.

  54. 9:43

    And I think what's really important is, I think you've been hearing this throughout this conference, is that there are a number of different frameworks and primitives that you need to have implemented in order to have good agentic development.

  55. 9:52

    And this is no different from, from what we found. As we were continuing to mature as an organization and going through our refactor, these are the things that made sure that we can implement, uh, the solutions effectively and not waste our time just running doom loops with models.

  56. 10:08

    So let's go into chapter three. Let's talk about the refactor itself and some of the productivity gains that we saw. So the core idea is that we had these ten repositories.

  57. 10:16

    We put them into a monorepo, and we wanted to build additional features on top of it.

  58. 10:22

    So this is, this is the result. Uh, the previous repos had been around for more than six years, and you can see the progress that was being made. It was pretty slow.

  59. 10:30

    Part of it was because of the tech debt that was taken on. Other parts were because we didn't have, uh, AI coding tools. And you can see that within the first six months of the rebuild when we got to parity that we had before, that steepness of that curve is immense, and it didn't slow down after we,

  60. 10:45

    we kept shipping. So after that, that dotted line in the middle there, we kept adding new and new, uh, features into the repository. And we shipped, uh, a lot faster, both in terms of the amount of code, even though that's not a great metric, but also the commit rate that we had among developers.

  61. 11:01

    And we actually saw that a lot more developers actually joined in, uh, into the contributions. So this is a log graph on the commits that we had from the repository initially, uh, and then we slowly onboarded more and more people.

  62. 11:13

    And we had fewer commits because it's much easier to commit code when you're just refactoring and replicating something. But we still kept up that velocity as we were adding product features towards the end.

  63. 11:22

    And now almost every developer within the company is committing to this new monorepo, even though it might not be their area of expertise, but they might need to make changes to schemas, uh, API calls, and other parts, uh, of the stack.

  64. 11:35

    So let's go on to chapter four. Can a modern LLM zero-shot this problem? Can I say, "Hey, amazing LLM, go refactor this code base"? So I ran this experiment, uh, with GPT 5.5 extra high, and I gave it this goal, uh, giving some of the names of the repositories with the underlying models and other components, and it

  65. 11:54

    completed its goal in, in ten minutes and twenty-two seconds. Now, it only wrote two thousand lines of code, which was a little bit fishy, so I, I dug deeper.

  66. 12:04

    Um, and it actually just implemented a bunch of scaffolding and didn't implement the models. So you can see here, I did not add a Ray serve deployment or bootstrap command yet, right?

  67. 12:13

    So we're still not there where models can self-validate and just one-shot these kinds of problems, but we're getting close. I think in, in six months, we'll get to the point that we can complete pretty substantial refactors, as we saw in the Str- in the Stripe example, consistently across the board.

  68. 12:30

    So we get to the core question: Was this refactor worthwhile? Should we have waited a year to do this refactor as models and harnesses continued to get better, or did it make sense to do it at the time?

  69. 12:39

    Now, I'll say the, the other side of the argument, right? Things are getting substantially better. Models are getting better. They can call tools better. We have a lot more infrastructure, like sandboxes and monitoring frameworks, in order for us to actually understand what's happening, uh, under the hood with these models.

  70. 12:55

    So taking on technical debt and refactoring later is getting exponentially easier, uh, as the days go by.

  71. 13:03

    Now, the problem is that a lot of times when, when you build a lot of code, and you do this kind of development in an AI, AI-native world, it starts looking like some of the legacy code we've, we've seen in the past.

  72. 13:13

    There's a lot of code written. It's written with low performance or quality, and the broader problem is people don't actually understand what's happening there. So if you have some issues within the code base or you want to adjust based on customer requirements, it's actually much harder to do so.

  73. 13:26

    So you do have to make sure that there are appropriate guardrails, whether or not you do a full refactor or only a partial one.

  74. 13:34

    So if you ask me, was it worthwhile? I'd say yes. Uh, we had built out the patterns that we had earlier with the number of different repos in or- in order to match customer requirements and demands.

  75. 13:44

    Uh, it, it took an amount of time, but we ultimately achieved the goals, uh, of the business. And then we came back and re- refactored, and we were able to accelerate.

  76. 13:52

    Uh, we were able to actually reduce the amount of time the pipeline took. We were able to reduce the costs. We could support larger files. And now we can ship features that would take multiple months in, in under a week.

  77. 14:03

    So the monorepo refactor, the cleanup wa- was worthwhile, and we have some of the productivity metrics we saw there. The other part is that beyond just shipping velocity, developers actually want to work in this code base.

  78. 14:13

    So everybody comes along and says, "Hey, can I work in this code base? It's mu- much cleaner compared to the other ones. Uh, can we actually contribute in a way that makes sense?"

  79. 14:22

    And a lot of the patterns we have adopted here have spread to other repos within the company.

  80. 14:28

    Now whether or not you refactor, uh, the AI delivery system is, is a layered approach. Uh, you can isolate different parts of your code base to avoid a full refactor, but there's so many components that you need to keep in mind.

  81. 14:40

    And hopefully, throughout this conference you've heard more details about this. But, uh, I really encourage everybody to think about, uh, the, the business value of delivering a, a big refactor and the trade-offs of doing it now versus in the future.

  82. 14:52

    So models will continue to get better, uh, but sometimes it's good to pause, build a monorepo and forge ahead. So thank you everybody. Uh, happy to take any questions. [audience applauding]

  83. 15:15

    Yeah. So the question was, before we had multiple repos and did we move into monorepo? Yes. Uh, we did that. One of the things we've found now is that models are much better at navigating multiple repos.

  84. 15:25

    So if you put it into a higher level folder, right, they could navigate the, the file directory. But for doing that end-to-end testing and verification and deployment, it's still much harder to do with multiple repos.

  85. 15:36

    Uh, and if you're building a sandbox environment to run sort of a full AI factory, it's-- it also takes more time to clone repos and get everything set up.

  86. 15:44

    So. Yeah.

  87. 15:47

    Uh, you mentioned a bunch of, like, changing strategy and the limitations. Did you define those before you started the project or did you, like, go back and discover them?

  88. 15:59

    Yeah. So the question was, uh, when we defined certain features and requirements, did we go back and check them and make changes, uh, as well as sort of the guardrails framework?

  89. 16:07

    Uh, we did. I think we got, uh, fifteen out of seventeen requirements right when we were going ahead with the refactor. Um, and some of the processes that we added for the actual AI engineering verification, that evolved over time.

  90. 16:20

    So, for example, when we started, plan mode was just barely coming into Claude Code and didn't exist in Cursor, but we adopted it as part of our development life cycle.

  91. 16:30

    Yep.

  92. 16:31

    But on your PR reviews were also quite autonomous. So similarly to Cursor.

  93. 16:36

    So our PR reviews were all, all human PR reviews during that refactor. Uh, we did some local checks where we ran skills to say, "Hey, review this code. Make sure that it's good."

  94. 16:45

    And they're continuing to get more autonomous as time goes on. But at that point, PRs were a really good way for us to build context, uh, for that repo, as we only had a few developers working on it, and we wanted to make sure people understood what had gone into the refactor.

  95. 17:00

    Yep.

  96. 17:02

    Um, what's the number one factor you think six months after will be different?

  97. 17:07

    Um, in terms of factors, I think that the complexity of the task you can give to a model, uh, is gonna be different, and many more companies will have more scaffolding in terms of actually doing a refactor.

  98. 17:19

    So, for example, when I showed the, the life cycle of doing the research, the POC work, um, validating the code quality, checking hidden assumptions, like you, you thought an open source library had this feature, but it was actually in, uh, a beta, for example.

  99. 17:34

    I think that is going to be much, much faster on top of sort of the standard refactoring of, "Hey, here's a file. Rewrite it to, to match this, uh, set of requirements."

  100. 17:45

    So... Right. Great. Thank you, everybody. Have a great rest of the conference. [upbeat music]