← All AI Engineer talks

AI Engineer World's Fair 2025

Beyond the Prototype: Using AI to Write High-Quality Code

Josh Albrecht· CTO, Imbue17:59

Read the talk

Beyond the Prototype: Building Trust in AI-Generated Code

Shipping agent-generated code requires evidence about its behavior. Sculptor explores immediate checks, explicit specifications, and safer testing to make that evidence part of development.

From a talk by Josh Albrecht

Before you start: Familiarity with code diffs, automated tests, and coding agents will help; the Python example uses sets and a dataclass.

Generated code is only the beginning

You give a coding agent a task. It produces a pile of code, and the prototype looks finished. What would make that code ready to ship into a larger, established codebase? That gap motivates Sculptor, the experimental coding-agent environment introduced by Josh Albrecht, CTO of Imbue. The version shown in this recording was a research preview, with features still subject to change.

There are many possible places to improve an agent: larger context windows, lower cost, faster responses, or more reliable output parsing. Albrecht recommends concentrating instead on problems specific to the developer’s domain. His expectation was that upstream model and agent improvements would address many generic limitations over roughly three to twenty-four months. That is a forecast about where to invest engineering effort, much like choosing an existing database instead of building one yourself. The durable work is the part that matters specifically to your product and organization.

Slide titled “Focus on the Right Problem(s)” with a large circle labeled “What you could build” and a small blue dot indicated by “What you should build.”
What you should build is a small part of what you could build.
0:190:34
Suggest correction

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

0:19 · section reference included

What is wrong with this diff?

An agent reports that it added 59 lines. That tells you how much code changed, but little about whether the change is good. You can inspect every line yourself, or merge and hope. Sculptor explores a third option: have another AI system examine the change for concrete problems, such as race conditions or an exposed API key. Generating code and building trust in code are separate jobs. The illustrated Slack extraction change makes the missing evidence visible: a diff summary is not a quality assessment.

Slide titled “The Problem We Focused On” shows “Implement Slack content extraction and saving to JSON,” +59 and -0, and the question “What is wrong with this diff?”
A Slack extraction change prompts the question: “What is wrong with this diff?”

The working definition of quality here is defect-oriented: how many problems exist, how long they take to fix, and how many a particular technique catches. That makes the timing of feedback consequential. Sculptor is positioned inside the editing loop, rather than as a pull-request review tool. As soon as an agent generates code—or a developer changes a line—the environment should surface problems while the relevant context is still available. Immediate feedback makes correction easier for both the developer and the agent.

The prevention side of that loop begins with four practices: learn what already exists, plan before implementing, write specifications, and enforce a strict style guide. Each gives the agent a better-defined problem before it starts producing changes.

2:422:55
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

Research first, then separate planning from implementation

Before asking an agent to implement something, ask what technologies already solve the problem and how other developers have approached similar work. Sculptor supports questions and research as part of development, so discovering an existing solution can happen before unnecessary reimplementation begins.

The Scrabble solver demonstration then separates deciding what to build from writing it:

  1. Give the agent the solver task, with a system prompt requiring a plan and forbidding code generation.
  2. Let it produce the plan.
  3. Change the system prompt to permit implementation.
  4. Extend the workflow with a checking stage after code generation.

The important control is the ability to change the agent’s operating instructions between phases. Albrecht presents editing the system prompt as stronger steering than simply adding a request to the conversation. Customized agents can make the sequence repeatable: plan, implement, then run checks.

4:515:07
Suggest correction

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

4:51 · section reference included

Make project intent explicit

Specifications and documentation are expensive when someone must continually keep them synchronized with implementation. But agents need the context those documents provide. They may not have access to the email or Slack conversation where a decision happened; even with access, they may not infer its intended consequences for the code. Writing that intent down makes it available as a development input.

Sculptor tries to reduce the maintenance burden by detecting drift between code, documentation, and docstrings, and helping fix the inconsistencies. It can also flag requirements that conflict with one another. These are different checks: one asks whether implementation matches its description; the other asks whether the description is internally coherent before implementation begins.

A strict style guide supplies another kind of context: constraints on how the team wants software constructed. In the demonstrated suggestion, Sculptor recommends making a class immutable, reflecting Imbue’s preference for functional, immutable code to avoid classes of errors involving shared mutable state. The guidance applies to human teammates as well as agents. An additional style guide tailored specifically to common AI-agent mistakes was still under development.

6:086:24
Suggest correction

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

6:08 · section reference included

Detect new problems in an imperfect repository

Prevention will not eliminate mistakes. The next layer combines three detection methods: automated analysis, tests, and LLM checks. The named Python tools include Ruff, mypy, Pylint, and Pyre. Collectively these are linters and static type checkers, with complementary responsibilities. Small diagnostics can create tedious work for developers, but they also give an agent specific issues to fix. Sculptor connects detection to automatic repair so the developer need not handle every minor violation.

An established repository may already contain many diagnostics. Requiring the agent to make the entire repository clean would mix the requested task with unrelated cleanup. Sculptor instead records which issues existed before the agent started and compares them with the issues afterward. The immediate requirement is to avoid introducing new errors. Existing debt does not have to block that improvement.

For example, the comparison can be expressed in Python using normalized diagnostic identities:

python

from dataclasses import dataclass


@dataclass(frozen=True)
class Diagnostic:
    path: str
    symbol: str
    rule: str


before = {
    Diagnostic("legacy.py", "load_config", "unused-import"),
}
after = {
    Diagnostic("legacy.py", "load_config", "unused-import"),
    Diagnostic("solver.py", "solve", "undefined-name"),
}

introduced = after - before
resolved = before - after

assert introduced == {
    Diagnostic("solver.py", "solve", "undefined-name"),
}
assert resolved == set()

The old legacy.py issue remains, while the new solver.py issue becomes a repair target. A real integration needs diagnostic matching that survives ordinary edits; shifted line numbers alone should not make an old issue appear new.

8:038:19
Suggest correction

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

8:03 · section reference included

Use generated tests to protect behavior

Test generation changes the economics of preserving behavior. Writing and maintaining tests used to require substantial effort after the implementation was already working. Agents reduce the initial writing cost. For code already assumed correct, Albrecht suggests generating tests, discarding those that fail, and retaining those that pass. That captures accepted behavior; it does not independently establish that the implementation is correct.

The reason to retain those tests becomes stronger when agents can make broad changes quickly. A regression suite expresses behavior you do not want an agent to alter unexpectedly. Albrecht invokes Google’s testing slogan to make the point: behavior that matters deserves a test, because confidence in today’s implementation does not protect it from tomorrow’s edit.

Slide titled “Why write tests?” shows a boxed quotation, “If you liked it, you shoulda put a test on it,” attributed to Software Engineering at Google: Lessons Learned from Programming Over Time.
“If you liked it, you shoulda put a test on it.”
9:5410:06
Suggest correction

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

9:54 · section reference included

Isolate side effects before searching for failures

Good tests start with code that is easy and safe to exercise. Put most logic into functional transformations without side effects, and isolate the operations that touch external systems. Albrecht’s cautionary example is a test with access to a live Gmail account: one mistake could delete real email. Separating decision logic from external actions lets an agent explore the logic without exposing the live account to every experiment.

Different tests then serve different purposes:

Test typePurposeSuggested emphasis
Happy pathShow expected operationA small representative set
Unhappy pathFind bugs and unusual behaviorBroad exploration of inputs

For functional code, Albrecht proposes generating hundreds or thousands of candidate inputs, running them, and asking an LLM which outputs look abnormal. An abnormal result is a lead to investigate, not proof by itself. Once confirmed as a bug, the input supplies a concrete, reproducible test case.

10:5911:10
Suggest correction

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

10:59 · section reference included

Keep the tests whose behavior matters

Cheap generation also changes which unit tests deserve permanent maintenance. A generated suite may encode incidental behavior that the team does not care about preserving. Albrecht suggests considering whether to discard those tests, regenerate them later, or consolidate them into a more maintainable suite. Tests that insist on obsolete behavior can confuse an agent asked to change that behavior. The distinction is between durable regression protection and disposable exploration: preserve the contracts you care about, and deliberately curate the rest.

12:1812:35
Suggest correction

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

12:18 · section reference included

Test what users can do

Integration tests move the focus from individual functions to observable user behavior. A shopping-cart test plan can state that clicking to add an item makes it appear in the cart. The complementary plan says that removing the item makes it disappear. Writing these plans first gives the agent a meaningful behavioral target to translate into tests. The developer can reason about the product interaction instead of specifying every implementation detail of the test.

Passing tests are only one part of the evidence. When Claude Code writes a change, you also need to ask whether enough of that change is tested. In Albrecht’s hypothetical merge decision, 100% test coverage, passing tests, and a review finding the tests reasonable provide more confidence than a line-count summary alone. This is not a measured Sculptor result or a correctness guarantee: coverage records execution, while useful assertions and missing edge cases still need scrutiny.

Finally, make tests easy to run in sandboxes and without secrets wherever possible. Isolation reduces the chance that testing will cause accidental external effects, and helps avoid dependencies that make tests flaky. It also makes the repeated execution needed for agent-driven repairs more practical.

13:0413:18
Suggest correction

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

13:04 · section reference included

Check intent, architecture, and missing requirements

The third detection method is to ask an LLM questions that go beyond conventional diagnostics:

  • Change review: Are there issues in the current uncommitted change or elsewhere in the branch?
  • Intent: Does the requested task make sense?
  • Design constraints: Does the implementation violate the style guide or architecture documents?
  • Specification completeness: Are necessary details missing, requirements unimplemented, or behavior insufficiently tested?

These checks compare code with the project’s intended meaning, not just the language’s rules. Sculptor’s extension goal is to let teams add their own checks so codebase-specific practices are examined continually.

14:4815:03
Suggest correction

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

14:48 · section reference included

Make the failure clear, then try repairs safely

Once a problem has been identified precisely, repair becomes easier. Albrecht spends comparatively little time on this stage because, in his experience, coding agents can often fix an issue once they understand what went wrong. A specific defect gives them a concrete target instead of an open-ended instruction to improve the code.

Repeated attempts are one repair strategy; Albrecht even suggests trying a hundred times with a different agent. He provides no measured success rate for that suggestion. The enabling mechanism is sandboxing: safely isolated agents can attempt repairs in parallel, subject to cost constraints, and a successful candidate can supply the solution. That makes clear failure detection valuable twice—first for identifying the problem, then for judging whether an attempted fix resolves it.

15:2915:42
Suggest correction

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

15:29 · section reference included

Extend the loop beyond code generation

The same approach can extend past implementation and deployment. Debugging, logging, tracing, and profiling offer further places for specialized tools to help. Automated QA agents can navigate a website and check whether a user can complete an intended task. Other tools can generate code from visual designs, while better contextual search can serve both developers and their agents.

Better base models are part of this picture, alongside integrations between specialized developer tools. Albrecht closes by inviting builders of those adjacent capabilities to integrate with Sculptor, anticipating that more of them would become accessible over the following year or two. The proposed development environment connects those capabilities across the workflow: discovering what to build, checking what changed, repairing failures, and examining how the software behaves after deployment.

Slide lists post-deployment debugging, logging and tracing; automated QA; generating code from visual designs; integration with emerging dev tools; contextual search over everything; and improved base models.
“This is Just the Beginning”: post-deployment tools, automated QA, visual designs, integrations, search, and improved models.
16:2416:34
Suggest correction

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

16:24 · section reference included

Resources

From the talk

  • Imbue's brief introduction to Josh Albrecht's World's Fair presentation about building robust software with Sculptor.

  • Google's testing guidance explains how coverage exposes testing gaps and why a high percentage does not establish correctness.

Updates since the talk

  • Sculptor's later redesignArticle

    A later announcement explains Sculptor's shift toward parallel coding agents, container isolation, saved sessions and interactive review.

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] It's great to be here.

  2. 0:19

    So I'm Josh Albrecht. I'm the CTO of Imbue, and our focus is on making more robust, useful AI agents, in particular focusing on software agents right now. And the main product that we're working on today is called Sculptor.

  3. 0:34

    So the purpose of Sculptor is to kind of help us with something that we've all experienced. You know, we've all tried these vibe coding tools and you, you know, tell it to go off and do something.

  4. 0:45

    It goes off and creates a bunch of code for you, uh, and then, you know, voila, you're done, right? Well, not quite. Like at least today, there's a big gap between kind of the stuff that comes back, uh, and what you wanna ship to production, especially as you get away from the prototyping into a larger, more established

  5. 1:00

    code bases. So today, I'm gonna go over some of the technical decisions that went into the design of Sculptor, uh, our experimental coding agent environment, uh, and kind of go through some of the context and motivations for the various ideas that we've explored and the features that we've implemented.

  6. 1:18

    It's still a research preview, so these features may change before we actually release it. Uh, but I hope that, you know, whether you're an individual using these tools or you're someone who's developing the tools yourself, you'll find these, uh, kind of learnings from our experiments to be useful for yourselves.

  7. 1:35

    So today, if you're thinking about how you can make coding agents better, then there's a million different things that you could build. You could build something that helps improve the performance on really large context windows.

  8. 1:49

    You can make something to make it cheaper or faster. You could make something that does a better job of parsing the outputs. But I don't think that we really should be building any of these things.

  9. 1:59

    I think that what we really want to be building is things that are much more specific to the use case or to like the problem domain or the thing that you are, like, really specialized in.

  10. 2:10

    Most of the things that I just mentioned are gonna get solved over the next, call it, three to 12 to 24 months as models get better, coding agents get better, et cetera.

  11. 2:20

    And so I think, you know, just like you wouldn't want to make your own database, I don't think we wanna be spending a lot of time working on the problems that are going to get solved.

  12. 2:29

    Uh, instead, we wanna focus on the particular part of the problem that really matters for, for us, for our business. And so at Imbue, the problem that we're focusing on is basically this, like what is wrong with this diff?

  13. 2:42

    You get a coding agent output and it tells you like, "Okay, I've added 59 new lines." Are those good? Like right now, you have an awkward choice between either looking at each of the lines yourself or just hitting merge and kind of hoping for the best.

  14. 2:55

    Uh, and neither of those are a really great place to be, so we try to give you a third option. Uh, the goal is to help build user trust by allowing another AI system to come and take a look at this and understand like, "Hey, are there any race conditions?

  15. 3:13

    Did you leave your API key in there?" Et cetera. So we wanna think about how do we help leverage AI tools, not just to generate the code, but to help us build trust in that code.

  16. 3:24

    And kind of the way that we think about it is about, like identifying problems with the code. Because if there's no problems, then that's probably high quality code, and that's kind of the definition of high quality code.

  17. 3:37

    If you think about it from like an academic perspective, the way that people normally measure software quality is by looking at the number of defects, and they look at like how long does it take to fix a particular defect, or how many defects are caught by this particular technique.

  18. 3:53

    So this is sort of the definition that at least we're working o- from when we're thinking about making high quality software. And then if we think about, you know, the software development process, what you wanna be doing is getting to a place where you have identified these problems as early as possible.

  19. 4:09

    So Sculptor does not work as like a pull request review tool, 'cause that's much, much later in the process. Rather, we want something that's synchronous and immediate and giving you immediate feedback.

  20. 4:20

    As soon as you've generated that code, as soon as you've changed that line, you wanna know, like, is there something wrong with it? That's easier both for you to fix and also for the agent to fix.

  21. 4:30

    So what are some ways that you can prevent problems in AI-generated code? We're gonna go through five different ways. Uh, the first is learning, planning-- Oh, sorry, only four different ways. [chuckles]

  22. 4:42

    Learning, planning, writing specs, and having a really strict style guide, and we'll see how those manifest in Sculptor.

  23. 4:51

    So the first thing you wanna do when you're using coding agents if you're trying to prevent problems is learn what's out there. We try to make this as easy as possible in Sculptor by letting you ask questions, have it do research, get answers about what are the technologies, et cetera, that exist, what are the ways that other

  24. 5:07

    people have solved similar problems, so that you don't end up reproducing a bunch of work for what's already out there.

  25. 5:15

    Next, we wanna think about how we can encourage people to start by planning. Here's a little example workflow where you can, you know, kick off the agent to go do something simple like, you know, implement this Scrabble solver and change the system prompt here to force the AI agent to first make a plan without writing any code

  26. 5:33

    at all. Then you can wait a little while, it'll generate the plan, uh, and then you can go and change the system prompt again to say like, "Okay, now we can actually create some code."

  27. 5:44

    So we make it really easy to kind of change these types of meta parameters of the coding agent itself. Of course, you can just tell the agent to do that, but by changing its system prompt, you sort of force it in a much stronger way to, uh, change its behavior.

  28. 5:57

    And you can build up larger workflows by making sort of customized agents for always plan first, then always do the code, then always run the checks, et cetera.

  29. 6:08

    Third, you wanna think about writing specs and docs as a kind of first class part of the workflow. One of the main reasons why at least I don't normally write lots of specs and docs in the past has been that it's kind of annoying to keep them all up to date, to spend all this time kind of

  30. 6:24

    typing everything out if I already know what the code is supposed to be. But this is really important to do if you want the coding agents to actually have context on the project that you're trying to do because they don't have access to your email, your Slack, et cetera, necessarily, and even if they did, they might not

  31. 6:40

    know exactly how to turn that into code.

  32. 6:43

    So in Sculptor, uh, one of the ways that we try to make this easier is by helping detect if the code and the docs have become outdated. So it reduces the barrier to writing and maintaining documentation and doc strings because now you have a way of more automatically fixing the inconsistencies.

  33. 7:03

    It can also highlight inconsistencies or parts of the specifications that conflict with each other, uh, making it easier to make sure that your system makes sense from the very beginning.

  34. 7:12

    And finally, you wanna have a really strict style guide and try to enforce it. This is important even if you're just doing regular coding without AI agents, just with other human software engineers.

  35. 7:22

    But one of the things that is special in Sculptor is that we make suggestions, which you can see towards the bottom here, uh, that help keep the AI system on a reasonable path.

  36. 7:33

    So here it's highlighting that you could, you know, make this particular class immutable to prevent race conditions, which is something that comes from our style guide where we try to encourage both the coding agents and our teammates to write things in a more functional immutable style to prevent certain classes of errors.

  37. 7:51

    We're also working on developing a style guide that's sort of custom-tailored to AI agents to make it even easier for them to avoid some of the most egregious mistakes that they normally make.

  38. 8:03

    But no matter how many, uh, things you do to prevent the AI system from making mistakes in the first place, it's going to make some mistakes. And there are many things that we can do to prevent or to detect those problems and prevent them from getting into production.

  39. 8:19

    So we'll go through three here. Uh, first, running linters, second, writing and running tests, third, asking an LLM, uh, and we'll dig into each and see how that manifests in Sculptor.

  40. 8:31

    So for the first one, for running linters, there are many automated tools that are out there like Ruff or Mypy, Pylint, Pyre, et cetera, that you can use to automatically detect certain classes of errors.

  41. 8:46

    In normal development, this is sort of obnoxious because you have to go fix all these like really small errors that don't necessarily cause problems. It's a lot of like churn and extra work.

  42. 8:56

    But one of the great things about AI systems is that they're really good at fixing these. So one of the things that we've built into Sculptor is the ability for the system to very easily detect these types of issues and automatically fix them for you without you having to get involved.

  43. 9:12

    Another thing that we've done is make it easy to use these tools in practice. A lot of tools end up like these, you know. How many people here, maybe a show of hands, how many people have a linter set up at all?

  44. 9:28

    Okay. How many people have zero linting errors in their code base? Two. Great. I will hire you. Okay, cool. Uh, but [chuckles] you know, it's, uh, it's not, it's not easy, but one of the things that we've done in Sculptor is make it so that the AI system understands what issues were there before it started, and then what

  45. 9:45

    issues were there after it ran. So at least you can prevent the AI system from creating more errors without you, even if it doesn't work in a perfectly clean code base.

  46. 9:54

    Okay. Third, testing. So why should you write tests at all? I think I was pretty lazy as a developer for a long time and did not want to write tests because it took a, you know, a lot of effort.

  47. 10:06

    You have to maintain them. I already wrote the code. It works. Okay. But one of the major objections to writing tests has kind of disappeared now that we have AI systems.

  48. 10:16

    The ability to generate tests is now so easy that you might as well write tests, especially if you have correct code. You can tell the agent, "Hey, just write a bunch of tests, throw out the ones that don't pass, and just keep the rest."

  49. 10:27

    So there's no real reason to not write tests at all. Uh, and B, at Go-- as they say at Google, "If you liked it, you should have put a test on it."

  50. 10:36

    This becomes much more important with coding agents. Uh, the reason is that you don't want your coding agent to go change the behavior of your system in a way that you don't understand and don't expect and don't want to see happen.

  51. 10:48

    So at Google, this matters a lot for their infrastructure 'cause they don't want their site to crash when someone changes something. But if you really care about the behavior of your system, you wanna make sure that it's fully tested.

  52. 10:59

    So how do we actually write good tests? I'll go through a bunch of different, uh, components to this. So first, one of the things that you can do is write code in a functional style.

  53. 11:10

    By this, I mean code that has no side effects. This makes it much, much easier to run LLMs and understand if the code is actually successful. You really don't want to be running a test that has access to, say, your live Gmail environment, where if you make a single mistake, you can delete all of your email.

  54. 11:28

    You really want to isolate those types of side effects and be able to focus most of the code, uh, on the kind of functional transformations that matter for your program.

  55. 11:38

    Second, you can try and write two different types of unit tests. Happy path unit tests are those that are ones that show you that your code is working. It's happy.

  56. 11:47

    Hooray, it worked. Uh, you don't need that many of those. You just need a small number to show that things are working as you hope. The unhappy unit tests are the ones that help us find bugs, and here, LLMs can be really, really helpful.

  57. 12:00

    So especially if you've written your code in a functional style, you can have the LLM generate hundreds or even thousands of potential inputs, see what happens to those inputs, and then ask the LLM, "Does that look weird?"

  58. 12:12

    And often when it says yes, that will be a bug. And so now you have a perfect test case replicating a bug.

  59. 12:18

    Third, after you've written your unit tests, it's maybe a good idea to throw them away in some cases. This is a little bit counterintuitive. In the past, it spent-- we took all this effort and spent all this time trying to write good unit tests, and so we feel some aversion to throwing them away.

  60. 12:35

    But now that it's so easy to run LLMs and generate the test suite again from scratch, there's a reas- a good reason to not keep around too many unit tests of behavior that you don't care about too much.

  61. 12:47

    You might also want to just refactor the ones that you generated into something that's slightly more maintainable. But when you do keep them around, it does kind of confuse the LLM when you come back and change this behavior, so it's something that's at least worth thinking about, whether you want to keep the tests that were originally generated,

  62. 13:00

    clean them up, how many of them should you keep, et cetera.

  63. 13:04

    Fourth, you should probably focus on integration tests, uh, as opposed to testing only the kind of code level functional, uh, behavior of your program. Integration tests are those that show you that your program actually works, like from the user's perspective.

  64. 13:18

    Like when the user clicks on this thing, does this other thing happen?

  65. 13:23

    AI systems can be extremely good at writing these, especially if you create nice test plans where you can write, okay, when the user clicks on the button to add the item to the shopping cart, then the item is in the shopping cart.

  66. 13:34

    If you write that out and then you write the test, then you can write another test plan, like if the user clicks to remove the button, the thing from the shopping cart, then it is gone.

  67. 13:43

    The systems can almost always get this right, and so it allows you to work at the level of meaning for your testing, which can be much more efficient. Uh, fifth, you wanna think about test coverage as a core part of your testing suite.

  68. 13:57

    So if you're having Claude code write things for you, then you don't care just about the tests working on their own, but you also care are there enough tests in the first place.

  69. 14:08

    If you think back to the original screenshot where we get back our PR of, you know, how many lines have changed, if I tell you how many lines have changed, it's not that helpful.

  70. 14:16

    If I tell you so many lines have changed and also there's a hundred percent test coverage, and also all the tests pass, and also a thing looked at the tests and thought they were reasonable, now you can probably click on that merge button without quite as much fear.

  71. 14:30

    Uh, and sixth, uh, we try to make it easy to run tests in sandboxes and without secrets as much as possible. This, uh, makes it a lot easier to actually fix things and makes it a lot easier to make sure that you're not accidentally causing problems or making flaky tests.

  72. 14:48

    The third thing that we can do to detect errors is ask an LLM. There are many different things that we can check for, including if there are issues before you commit with your current change, if the thing that you're trying to do even makes sense, if there are issues in the current branch you're working on, if there

  73. 15:03

    are violations of rules in your style guide or in your architecture documents, if there are details that are missing from the specs, if the specs aren't implemented, if they're not well tested, or whatever other custom things that you want to check for.

  74. 15:16

    One of the things that we're trying to enable in Sculptor is for people to extend the checks that we have so that they can add their own types of best practices into the code base, uh, and make sure that they are continually checked.

  75. 15:29

    After you've found issues, then you have to fix them. Very little of this talk is about fixing the issues because it ends up being a lot easier for the systems to fix issues than you would expect.

  76. 15:42

    I think this quote captures it relatively well, and that a problem well stated is half solved. What this means is that if you really understand what went wrong, then it's much easier to solve the problem.

  77. 15:54

    This is especially true for coding agents because the really simple strategies work really well. So even just try multiple times, try a hundred times with a different agent, it actually ends up, like working out quite well.

  78. 16:08

    And one of the things that enables this is having really good sandboxing. If you have agents that can run safely, then you can run an almost unlimited number, subject to cost constraints, uh, in parallel, and then if any one of them succeeds, then you can use that solution.

  79. 16:24

    And this is really just the beginning. There are going to be so many more tools that are released over the next year or two, and many of the people in this room are working on those tools.

  80. 16:34

    There will be things that are not just for writing code like we've been talking about, but for after deployment, for debugging, logging, tracing, profiling, et cetera. There are tools for doing automated quality assurance where you can have an AI system click around on your website and check if it can actually do the thing that you want the

  81. 16:53

    user to do. There are tools for generating code from visual designs. There are tons of dev, dev tools coming out every week. You will have much better contextual search systems that are useful for both you and for the agent.

  82. 17:05

    Uh, and of course, we'll get better AI-based models as well. If anyone is working on these other sorts of tools that, that are kind of adjacent to developer experience and helping you fix this like much smaller piece of the process, we would love to work together and find out a way to integrate that into Sculptor so that

  83. 17:24

    people can take advantage of that. I think what we'll see over the next year or two is that most of these things will be accessible, uh, and it'll make the development experience just a lot easier once all these things are working together.

  84. 17:37

    So that's pretty much all that I have for today. If you're interested, feel free to take a look at the QR code. Go to our website at imbue.com and sign up to try out Sculptor.

  85. 17:46

    And of course, if you're interested in working on things like this, we're always hiring, we're always happy to chat, so feel free to reach out. Thank you. [upbeat music]