← All AI Engineer talks

AI Engineer World's Fair 2024

How Zapier Builds AI Products and Features With the Help of Braintrust

Ankur Goyal· CEO, BraintrustOlmo Maldonado· Sr. AI Engineer, Zapier14:59

Read the talk

Building a Zap Is Easy to Demo. Knowing It Works Takes Evals.

Zapier’s path from prompt-generated workflows to an interactive Copilot shows how product criteria, regression tests and tracing make model changes measurable.

From a talk by Ankur Goyal and Olmo Maldonado

What makes a generated workflow correct?

How do you know whether an AI-generated workflow will actually work? That question brings product requirements and evaluation tooling together. Ankur Goyal describes building evaluation tools at Impira and later while leading the AI team at Figma, before founding Braintrust. Zapier became its first users, and the collaboration helped shape the platform.

Two-column introduction slide with Zapier and Braintrust logos, speaker portraits, roles, and biographical bullets.
Introducing the Zapier and Braintrust speakers.

At the time of the talk, Olmo Maldonado reports that Zapier connected over 7,000 apps and ran over 10 million tasks per day. That task volume describes Zapier overall, not AI-only usage. Its low-code and no-code interface makes integrations accessible, but the workflows still need to execute reliably.

Two Zapier AI products take on different parts of that work: AI Zap Builder generates workflows from prompts, while Zapier Copilot supports an interactive approach inside the editor. Maldonado also introduces Central, the historical bot framework for connecting bots to users’ apps, though the detailed examples focus on Builder and Copilot.

Braintrust supplies three connected capabilities: evaluations to measure behavior, observability to inspect what happened, and prompt development tools to change it. Goyal emphasizes that evaluation and observability form a continuum: measuring an output and understanding the execution that produced it belong in the same development loop.

0:491:02
Suggest correction

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

0:49 · section reference included

Turn a prompt-to-Zap demo into product criteria

Zapier’s process starts with getting a prototype to users early, learning from mistakes and making adjustments through evaluations. AI Zap Builder makes the initial interaction look straightforward: enter a prompt, let it propose a Zap, then click Try It to create the workflow. It can also handle field mapping. The difficult question comes after generation: how well does that output deliver the automation the customer wanted?

The long tail of integrations makes a handful of successful examples insufficient. Zapier involved product managers in defining the evaluation requirements, treating correctness as both a product and an engineering problem. Its P0 priorities made the intended behavior concrete:

  • Triggers and actions: Choose the expected operations and put steps in the correct positions.
  • Priority integrations: Support the top 25 apps correctly.
  • Internal workflow features: Include Zapier’s Paths and Filters in the evaluation suite.

Product priorities determine what the suite must measure. The objective is not merely to produce a plausible-looking workflow; it is to cover the behaviors the product promises.

4:064:16
Suggest correction

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

4:06 · section reference included

Seed, run and grade the suite

Zapier built an in-house framework with Braintrust around a repeatable sequence:

  1. Seed coverage with synthetic data from corporate accounts.
  2. Load the examples from datasets hosted in Braintrust.
  3. Execute the suite in CI and through manual runs. A custom runner exercises the AI providers in what Maldonado describes as a load-test-like process.
  4. Grade and report the outputs using both logic-based and LLM-based custom graders, then act on the failures.

The graders connect execution back to the product criteria. They provide multiple views of whether the generated workflow does what the team intended, rather than reducing every requirement to a single undifferentiated judgment.

5:556:02
Suggest correction

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

5:55 · section reference included

Make regressions visible and actionable

Frequent runs shorten the interval between introducing a regression and discovering it. In the AI Zap Builder project shown, developers can inspect individual inputs and outputs, compare a run with previous experiments, and see which grader scores improved or declined. The comparison view makes the product’s most important criteria visible so the team can decide where to intervene.

Learning slide showing an experiment comparison table, score distribution, and grader scores with green and red changes.
Comparing experiment results across graders in Braintrust.

Zapier expanded from seven unit tests run manually by developers to over 800 tests run with merge requests and continuously, with alerts on regressions. Maldonado reports nearly 300% improvement in accuracy after introducing this process. He explicitly cautions that this does not mean 100% accuracy; the talk supplies neither the baseline nor the calculation needed to translate the improvement into an absolute accuracy figure. The remaining failures still require work.

6:587:11
Suggest correction

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

6:58 · section reference included

Trace the move from generation to conversation

Positive customer feedback did not remove the limits of a single-shot interface. The next iteration, Zapier Copilot, lets the user work progressively through chat inside the editor. The demonstration starts with the same prompt used for Builder, then goes further: Copilot tests steps and configures fields as the workflow develops. Maldonado says the displayed demo is not sped up.

That richer interaction introduces a new debugging problem. With an agent framework calling multiple tools, the team could no longer easily identify the critical path or determine which part needed improvement. A final output alone does not explain where time was spent or where a decision went wrong.

Braintrust’s tracing breaks the request into smaller operations. Developers can inspect a chat completion’s inputs, outputs, token usage and response time, then use that detail to investigate Copilot’s behavior. The expanded trace shown exposes an individual tool call inside the larger execution. Maldonado also describes using a playground to iterate on inspected behavior, although the playground itself is not demonstrated.

Logs & Tracing slide with a nested trace tree and an expanded tool-call detail panel showing input and output text.
Inspecting an individual tool call within a trace.
8:428:56
Suggest correction

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

8:42 · section reference included

Compare models inside the application

Copilot initially used GPT-3.5 Turbo to get to market quickly. As the team tested alternatives, it manually assembled a comparison view showing model performance across different tools, including how that performance changed when the tools changed. The team selected GPT-4 Turbo for its message router, accepting slower responses in exchange for greater confidence in routing accuracy.

The next attempt to improve speed introduced GPT-4o—and the evaluation suite detected regressions. Recovering the earlier behavior required prompt changes and changes to parameters in the OpenAI calls. This was a migration problem in Zapier’s particular application: a model replacement changed how the existing instructions and tool setup behaved.

10:2110:34
Suggest correction

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

10:21 · section reference included

Follow falling scores into the prompt

Before the GPT-4o switch, most evaluation scores were at least 80%; Maldonado reports that the affected scores fell below 80% afterward. The team wanted the new model’s speed and cost benefits without accepting that loss in quality. The investigation shown was the work of his colleague Maggie Cody.

The inspected comparison contained 22 regressions associated with unwanted answers or apparent failures to follow system instructions. Maldonado describes the behavior as the model seeming to forget the system prompt. That is a description of the observed responses, not evidence that the instructions were absent from the request. The team’s diagnosis was that its prompts had become too tailored to GPT-3.5 Turbo.

The response was to undo some of that accumulated prompt engineering. Rather than adding more elaborate demands, the team relaxed the instructions and reran evaluations; Maldonado reports recovering the previous score levels. The displayed prompt diff makes the change tangible: longer instructions are removed and shorter instructions are added. A prompt tuned around one model’s behavior is part of what must be reevaluated when the model changes.

Prompt underfitting slide with a side-by-side code diff showing longer instructions removed and shorter instructions added.
Simplifying the prompt to avoid confusing GPT-4o.
11:5112:08
Suggest correction

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

11:51 · section reference included

Recover quality, then adopt the faster model

Rapid trial and error also led to a change in tool selection. Maldonado describes moving away from deprecated function-calling usage to tool_choice. The precise distinction in the OpenAI Chat Completions reference is that functions is replaced by tools, while function_call is replaced by tool_choice; the talk compresses those separate parameter changes. Its demonstrated setting is tool_choice: "auto", with "required" still a planned experiment.

The settings have different behavioral contracts:

SettingModel behaviorStatus in this account
autoMay answer directly or call toolsUsed in the revised setup
requiredMust make one or more tool callsPlanned experiment

That distinction matters when evaluating unwanted direct answers. Requiring a tool call changes the allowed behavior, but it was not yet a demonstrated recovery mechanism here. After the prompt and API changes, the team compared experiments against earlier runs and saw most scores improve.

Zapier subsequently adopted GPT-4o while continuing to iterate. Maldonado reports that streaming Copilot latency fell from around 14 seconds before adoption to three seconds afterward. The talk does not specify whether that measures first output or a complete response. The result closes the development loop: evaluations exposed the quality regression, individual failures guided revisions, and comparisons gave the team a basis for adopting the faster model without simply accepting the initial score drop.

13:1213:28
Suggest correction

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

13:12 · section reference included

Resources

From the talk

  • Explore Zapier's current AI automation products and connected-app capabilities.

  • The original announcement of Zapier's bot workspace, including connected apps, live data, and automated behaviors.

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] My name is Olmo Maldonado.

  2. 0:15

    I am from Zapier. Um, I promise I am not an open source LLM. [laughs] My name is Olmo. Um, I've been at Zapier for over seven years. Um, I apologize for all the bugs that I've introduced that may have affected you, and if you happen to have any bugs that you wanna report, I'd be happy to take that

  3. 0:33

    in and start working on them. Uh, you name it, I've been part of the team, so, um, you know, feel, feel free to come by and talk to me about it.

  4. 0:41

    I'm a lucky husband and father, and, uh, I've been playing some golf lately, and I don't know why I'm doing that. [laughs]

  5. 0:49

    Hey, everyone. Um, I'm Ankur. Uh, I, I actually went through Hamel's journey, I think. I built eval tooling at my last startup, Impira, and then when I led the AI team at Figma, and that's what led to Braintrust.

  6. 1:02

    Um, actually, Braintrust started, uh, kind of as a collaboration with our friends at Zapier, uh, who were our first users, um, and it's been a lot of fun since.

  7. 1:11

    Uh, I'm also a husband, um, not yet a father, uh, but a proud older brother, and also a reluctant golf player. Um, I hope to, uh, play against Olmo and beat him someday.

  8. 1:22

    All right, cool. So today it's gonna be a lot of storytelling. I'm not here to prophesize what you should be doing. I'm just gonna share what we've done that has worked for us, and I'm hoping to actually learn a lot from you all as well of what is working for you and something that we should try ourselves.

  9. 1:41

    I know I've already learned a lot from the conference, so I'm hoping that you all learn something from this talk. Um, we'll go over what we're doing at Zapier, the tech that is going on at Braintrust, and a couple of examples of how what they've done has really helped us to make a good product.

  10. 1:57

    So if you're not familiar, or actually just have a quick poll, how many folks here use Zapier?

  11. 2:05

    All right.

  12. 2:05

    Nice.

  13. 2:05

    A good number of folks. Appreciate that. Thank you for your support. If you're not aware, there's actually over 7,000 apps of your favorite ones, um, online. We make it very low-code to no-code to integrate with all of them.

  14. 2:19

    Um, on the right you can kinda see how the workflow works, and we'll do it in a reliable way to make sure it's mission critical and everything. Now, we have a lot of AI integrations.

  15. 2:30

    At this point, I'm happy to say per day we're doing over 10 million tasks. So if you haven't tried us out, please give it a try as well as, uh, use all the integrations with AI.

  16. 2:43

    Uh, here are the apps that we, uh, the products that we have built with AI. I'll only talk about the first two with the AI Zap Builder and Zapier Copilot, but I would strongly encourage for you guys to explore all the other new products that we have available.

  17. 2:57

    Uh, Central in particular, shout out to my colleagues that are here, um, it's a bot framework, so you can make your own bot, connect to over all of your, um, apps that you have online.

  18. 3:07

    So, um, yeah. If you want to learn more, uh, please go to zapier.com/ai.

  19. 3:15

    Really quickly about Braintrust. We'll keep the propaganda brief. Um, Braintrust is the end-to-end developer platform that some of the world's best AI teams use, including Notion, Airtable, Instacart, Zapier, Vercel, uh, and many others.

  20. 3:30

    Um, and basically if you break that down, uh, there are three things that we're really focused on today. One is helping you do evals incredibly well. Um, Olmo's gonna talk about how they do evals, which I think is probably the best way to actually learn about that.

  21. 3:44

    Uh, we also help you with observability, and I think it's really important that you build, uh, your stuff in a way that evals and observability, there's, there's actually kind of, um, a continuum across them.

  22. 3:56

    And so, uh, we are really kinda focused on that problem. Um, and then the last thing is we help you build really, really great prompts. Uh, and there's a bunch of tools, um, around that.

  23. 4:06

    Yeah. Yeah, so this is what it looks like to work at Zapier. Um, we want to get the prototype as early as possible to the user. We take an iterative approach.

  24. 4:16

    Um, we will get some things wrong, and we hope to learn from them and just keep improving the product as fast as possible. Uh, we make adjustments through our evals, and evals are the way that we make decisions.

  25. 4:29

    It didn't used to be that case. So if you haven't played with it, this is the AI Zap Builder. You give us a prompt, as you see there. We'll do our best to make a Zap for you, and when you click Try It, there's your Zap.

  26. 4:42

    Um, it will do, uh, many other things as well, uh, like field mapping and so forth. So what we learn from this experience is, how do we go about knowing how well is this product, you know, delivering Zapier to the customer?

  27. 4:58

    Over 7,000 products, the long tail of integrations is vast, so how well are we doing it? One of the things that we did that has worked for us that I would encourage for you all to do as well is involve the product managers.

  28. 5:11

    Involve the, your product side of things to be part of the conversation. This is an engineering problem as well as a product problem, and you can see here in this, uh, screenshot our P0 priority, the things that we wanted to make sure that our AI Zap Builder was able to produce.

  29. 5:27

    We wanted to make sure the triggers, actions were working as you'd expect. We don't want the re- in, like, the wrong step in the wrong place, and we wanted to make sure the top 25 apps were supported and that they were done in an eloquent way, like, correct way.

  30. 5:41

    Um, and yeah, we have even, uh, internal Zapier, uh, apps, like Paths and, uh, Filters. We want them to work as well. So all of this had to be in our eval suite in some way or form.

  31. 5:55

    This is our, um, framework that we built in-house with the help of Braintrust. Um-

  32. 6:02

    We have synthetic data from our corporate accounts that we use for seeding the evals, and we use that to get going with all of that coverage that you saw before.

  33. 6:12

    Um, what we do is we load that data from Braintrust actually, that is hosting us, and we, we take that and run that on a CI basis as well as a manual basis.

  34. 6:22

    And we have our own little runner that essentially kind of does a load test against all of our AI providers every single time that we run this. Um, so it's been really incredible to take all of this data, run it, report on it, and, uh, start ex- acting on the things that we've seen.

  35. 6:40

    Uh, we also have these custom graders that the previous speaker had mentioned. They're both logic-based as well as, um, LLM-based. Uh, and in general, what we're trying to do is make sure that that criteria that you saw before is being tested among, and that we are actually acting on what we wanted to see.

  36. 6:58

    So here's an example, uh, of all the different runs that we've had. Um, as you can see, it's pretty often that we run it. We want to make sure that if any regressions happen, that we act on them quickly.

  37. 7:11

    Um, I'll actually go over one of those cases in a bit. And, uh, this is really easy for us to act on it. We can see this is, uh, an ex- screenshot of Maggie's project for the, for the Za- uh, Zap AI Builder and, you know, as mentioned earlier, we have observability thanks to Braintrust.

  38. 7:30

    We can see within it, um, what happened, what were the inputs, what were the outputs, as well as compare the pink and green, hopefully you all can see it.

  39. 7:38

    It's actually comparing against previous runs as well and trying to find, huh, what, what went down, what went up, and so forth. Um, and yeah, this is just showing that even further with all of our different graders, the scores, if you will, of, like, the different things that we're looking for.

  40. 7:53

    We wanna make sure that the ones that we care most about are being highlighted and that we do something about it.

  41. 7:59

    So after all this work of creating the eval suite and running them continuously, I can say that before this, we just had seven unit tests. So seven unit tests that were run manually by devs, and now we have over eight hundred of them, and they're all run, um, part of this merge request, as well as on a

  42. 8:18

    continuous basis. And we get alerted on if any regress. So a lot better coverage there. This has led us to improve nearly three hundred percent of our accuracy. I will say that is not saying that we're at a hundred percent.

  43. 8:32

    Um, we still have a lot of work there. Uh, but it is, uh, fortunate that we were able to improve with this process that we created. Now, we're very thankful for our customers.

  44. 8:42

    These are just a few shout-outs of how they have received that product. Um, this is using an older UI, but it's essentially the same product. Now, one thing about that product is a single-shot approach can only take us so far.

  45. 8:56

    So this is the next iteration. As you all might imagine, it's a chat interface. We want to allow the user to interact with the editor as they're happening, so a progressive iterative approach.

  46. 9:08

    Um, you can see in the demo here, the GIF that, um, we're-- we not only did the same prompt that y- that we did before, but we're also testing steps.

  47. 9:17

    We're also configuring fields, um, all as quickly as possible to the user. This is actually not sped up, so we're really happy so far with the performance that we're getting out of this thing.

  48. 9:28

    Um, but yeah. The problem with it though, now that it's in a, kinda like an agent framework with multiple tools that it calls, we couldn't see what was the critical path.

  49. 9:37

    What is the things that we need to improve now to make the accuracy even better, to make the experience better? And this is where, again, Braintrust came in. They, they have tracing capabilities.

  50. 9:47

    This allowed us to break down the request from very granular observability to a very gran-- uh, fine, uh, fine, um, uh, look into the problem. And just as you would expect, you can actually see the inputs and outputs of a chat completion, the tokens, the time to response.

  51. 10:04

    Um, you name it, it's available. And we can quickly iterate on that one as well with a play, with a playground that they have. I'm not showing that, but just wanted to showcase that it's really easy as developers to go into it and really understand what is going on with, uh, with the performance of the, uh, of

  52. 10:21

    the copilot. So one of the things that ended up happening with the copilot is, you know, early on, because we wanted to get to market first, we wanted to, um, just do GPT-3.5 Turbo.

  53. 10:34

    And, you know, we, uh, we started testing different models. And this y- view that you're seeing here was manually made for us so that we can get a better sense of, you know, the performance of different models across different tools and as you change those tools, what is the performance characteristic overall.

  54. 10:53

    And we settled on GPT-4 Turbo for our message router that we call. And unfortunately, that came at a cost of performance. That was a lot slower than before. Uh, but at least we were able to provide some guarantees to our customers on accuracy.

  55. 11:09

    That led us to want to make that better, and we-- our evals started to show a regression. We were wondering what happened, and the reason for that was we switched to 4o.

  56. 11:22

    Now, you might have already heard from the conference that 4o is... You need to be careful with it. And yeah, we actually stumbled on that one. But I can say that with few changes that we had to make and a couple of parameters that we added to the OpenAI, um, calls, we're kind of back to the same

  57. 11:39

    performance that we were before. And that's what I wanna talk to you about right now. So as you know, we can see all the examples or all the different runs that we had with the experiments.

  58. 11:51

    We noticed beforehand that we were eighty percent or better in most of our scores. Um, after the change to the GPT-4o- All of that regressed below s- 80%. So we were really worried that, you know, we wanted the performance benefits and the cost benefits, but we didn't want to lower our scores.

  59. 12:08

    So what should we do? Uh, this is showcasing some of the work that my colleague, uh, Maggie Cody had. So, uh, shout out to her for her hard work in this.

  60. 12:17

    You can kinda see that all of our scores went down, and we can clearly see that there's a pattern to this. Like, what is going on with it? Like, drilling in further, we noticed that, you know, the 22 regressions that happened in here were all related to, uh, the, the OpenAI deciding to, like, forget our system prompt

  61. 12:37

    in some way or, like, to give an, an answer back that we didn't want to see or do. It just... In some ways, we, we had prompts that were too fine-tuned to GPT 3.5 Turbo.

  62. 12:48

    So we had to kinda regress our engineering, if you will, our prompt engineering, and that ended up l- allowing us to actually go back to the numbers that we were at.

  63. 12:58

    So this is the example of that prompt, how we were a lot more elaborate with how we were, uh, asking the GPT 3.5 to, like, respect our wishes, and afterwards, we actually just relaxed it a lot more.

  64. 13:12

    Th- um, and again, trial and error, really quickly iterating on that loop that I mentioned earlier, and that is what led us to make these discoveries. Now, the other thing that I mentioned, just to show case stat, is, you know, we made a change to the tool choices.

  65. 13:28

    We deprecated the functions usage over to the tool choice. Um, that tool choice auto is actually an asterisk there because we are also going to experiment with making that required.

  66. 13:38

    So that's coming up next. So yeah, overall, after those changes, we can see immediately that most of our scores went up. Uh, we're really happy that for us it's really easy to compare back and forth with, uh, previous runs.

  67. 13:52

    That's what's going on here on the top.

  68. 13:55

    And, um, since then, we've been able to adopt GPT 4o. We still have more work to do there, like I mentioned, but it's, it's an iterative approach. Um, before this, this adoption, we were around 14 seconds, and now we're at three seconds for a stream-based, um, uh, copilot.

  69. 14:15

    And of course, we had a lot more reduction as we did before or with this. So in conclusion, I just wanted to share some of our stories of how we've worked with Braintrust, um, from the very beginning to make a great product.

  70. 14:28

    Um, really we, we couldn't be happier working with them and, um, I don't know. There's not much mos- more to say to that. High five. Yeah. [laughs]

  71. 14:38

    So yeah. Thank you. [applause] [upbeat music]