← All AI Engineer talks

AI Engineer Europe 2026

Why building eval platforms is hard

Read the talk

Why building eval platforms is hard

A loop and a spreadsheet can get evaluation started. Sustaining agent quality requires experiments, production feedback, and a data layer built for demanding trace workloads.

From a talk by Phil Hetzel

Before you start: Familiarity with LLM agents, prompts, and basic database queries will help; no prior evaluation-platform experience is required.

What keeps a working prototype out of production?

Why can a team build a convincing generative AI proof of concept and still struggle to put it into production? Phil Hetzel encountered that gap repeatedly while helping clients implement systems. Before leading solutions engineering at Braintrust, he spent 12 years in consulting: four at KPMG and eight at Slalom, where he led the global Databricks business unit. His clients could produce compelling prototypes, but getting those systems into production remained difficult. He began using Braintrust to help close that gap, then joined the company roughly a year before this talk. His perspective comes from helping customers build evaluation and agent observability into their development process.

The missing ingredient is confidence that survives contact with real usage. Hetzel describes Braintrust as an agent quality platform with two related pillars: evaluation builds confidence while a team experiments before deployment; observability checks whether that confidence remains justified once real users interact with the agent. Both concern the same behavior, viewed at different points in the agent’s life.

LLM variability makes this difficult. The flexibility that lets a model reason across many problems also makes its behavior harder to anticipate. As customers increasingly expect agentic interactions, that uncertainty becomes a product concern: an agent can create brand and compliance risks, as well as cost, maintenance, and systems problems. Evaluation is how a team starts checking whether its agent behaves as intended before those consequences reach customers.

Slide titled “Why evals are important” with three green bars describing LLM variability, agents interacting with customers, and confidence in agent performance.
Why evals matter: variability, customer-facing agents, and confidence in performance.
1:331:52
Suggest correction

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

1:33 · section reference included

A spreadsheet and a for loop

The smallest useful eval setup is approachable: run an agent on several inputs, put its outputs into a spreadsheet, and add handwritten notes or scores. It needs only three ingredients.

IngredientWhat it provides
Agent executionA way to invoke the system being tested
Input examplesThe information needed to initiate each run
Results UIOutputs, notes, and scores people can inspect

An input example is not necessarily just a question. It contains whatever information is necessary to invoke that agent. Google Sheets can be a perfectly reasonable first results UI. The problem is that these visible pieces are only the tip of the platform iceberg.

The work underneath involves several kinds of expertise. Product and AI engineers shape behavior; systems engineers make the agent run; subject-matter experts judge whether its responses make sense in the domain. Model complexity, collaboration across those roles, and infrastructure requirements compound one another. An eval platform must support that collaboration rather than assume engineers can evaluate the agent in isolation.

Start with the loop anyway. Each time the agent changes, rerun the examples and record the new outputs. That provides a low-barrier way to see differences, but the workflow soon becomes documentation rather than experimentation. Comparing runs across a growing spreadsheet is cumbersome, aggregate analysis is limited, and human scoring—valuable as it is—becomes difficult to scale.

The spreadsheet also limits who participates. Nontechnical contributors may have the strongest domain expertise or the closest contact with users, yet a manually maintained results sheet may not draw them into the process. Recreating or appending the sheet after every evaluation adds friction precisely where the team needs fast iteration.

6:086:18
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

A nicer UI is not yet an experiment

The next step often begins with an engineer announcing, “I can just vibe code Braintrust.” There is real value in that step. Keep the for loop, replace the spreadsheet with a friendlier interface, and persist results in a database—Hetzel gives Neon as an example. Now the records are easier to retain, and the UI can fit the people who need to review them. But if users can only inspect what already happened, the result is still primarily a reporting tool. Better presentation does not by itself create an iteration workflow.

Experimentation requires letting users change something and evaluate the consequences. A playground supplies a sandbox around an agent configuration, exposing selected parameters that a user can adjust. Technical users also need an SDK-driven path; the UI should not be the only way to run the experiment.

Hetzel’s example exposes the system instructions for an agent that runs outside the eval platform. A user changes those instructions, compares two system-prompt configurations, and runs evals across both agent runs. The resulting scores make technical and functional behavior visible. The important boundary is that the platform can control an experiment without owning the agent’s execution environment: it needs access to the configuration, a way to run the agent, and a way to compare the results.

10:4711:05
Suggest correction

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

10:47 · section reference included

Use production failures to choose the next experiment

A playground makes experiments possible, but it does not tell the team what to test. Build scoring functions around failure modes, then use production traces to discover which failure modes actually occur. Real users expose behavior that a team’s initial examples may never have anticipated. This is where evaluation and observability become parts of the same system.

Hetzel traces that connection to an early Braintrust customer. The company initially offered only offline evals, but the customer was piping production traffic into its database and evaluating it there. Hetzel recalls a customer running a massive evaluation every hour of every day against production traffic. That workaround exposed the need for a direct tracing and observability workflow, rather than forcing live usage into the shape of an offline experiment.

The resulting loop is continuous:

  1. Observe the agent in production to see its actual behavior and the effect of changes.
  2. Analyze those interactions to find failures worth addressing.
  3. Evaluate using real examples brought back into an offline environment.
  4. Improve the agent and repeat the cycle throughout its lifetime.

The dataset is no longer just a collection of imagined requests. It becomes a way to bring observed behavior back into development.

Circular diagram linking Observe, Analyze, Evaluate, and Improve, with notes about logging traces, finding failures, creating eval cases, and repeating improvements.
The observability and evaluation flywheel: observe, analyze, evaluate, improve.

That feedback loop expands the platform’s scope substantially. It is now a tracing and logging platform as well as an offline eval platform. Real interactions provide higher-signal examples, making offline evaluation closer to rerunning production in a safe environment. The same scoring functions can also run against observability traffic as online evals, supporting alerts when behavior warrants attention.

The organizational consequence is easy to underestimate: building the platform creates a continuing maintenance responsibility. Someone must operate it and extend it as agent development changes. The initial custom UI may be a small project; keeping the full evaluation and observability loop working becomes an ongoing job.

13:5414:08
Suggest correction

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

13:54 · section reference included

The data layer behind the trace viewer

Agent traces put unusual pressure on storage. They contain large amounts of text, mix semi-structured and unstructured content, and can arrive rapidly once an agent has substantial production usage. Hetzel illustrates the mismatch with the prospect of putting a one-gigabyte trace into a Postgres row: treating a trace as one ordinary record can create serious performance problems. The example is a storage-design warning, not a measured database limit.

The platform must serve two different access patterns at once.

Access patternUser expectationData-layer requirement
Inspect a recent traceSee what just happenedLow-latency ingestion and visibility
Analyze many tracesUnderstand behavior in aggregateEfficient analytical reads

Braintrust’s former architecture addressed these with separate persistence layers, including an open-source data warehouse for aggregate analysis. It stitched the sources together using BTQL, a domain-specific query language. Hetzel describes that language as unpopular with both users and the team. A third aggregation layer ran DuckDB in the browser. The arrangement worked for a time, but coordinating the layers added complexity.

Text-heavy customer workloads exposed the arrangement’s limits. Hetzel uses Notion as an example: large volumes of unstructured data created demand for full-text search across traces. His criticism concerns the suitability of Braintrust’s former combination of technologies for that workload. DuckDB does have a full-text-search extension; that capability alone does not establish that the former browser-based arrangement could satisfy the required trace-search workload.

Agent quality becomes a systems problem, not just a UI problem. The challenge is not simply storing more records. Users expect capabilities such as full-text search across millions of traces. A polished interface cannot supply those functions if the underlying data platform cannot retrieve and analyze the necessary content.

A span is one part of a trace, and context can make an individual agent span large. Hetzel contrasts traditional spans of a couple of kilobytes with agent spans he has observed at 10–20 megabytes because of their context. These are his observed examples, not a typical-size estimate. Combine large, highly unstructured payloads with rapid ingestion, aggregate reads, and low-latency inspection, and familiar database requirements become a difficult joint workload. None of those requirements is individually new; satisfying them together is the distinctive problem.

17:1717:27
Suggest correction

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

17:17 · section reference included

The next user may be a coding agent

The data platform also determines whether evaluation can support automated improvement. Hetzel describes a workflow in which a coding agent retrieves aggregate evaluation data, brings it into its context, and changes the evaluated agent within the same coding session. That requires useful access to the underlying data, independently of the trace viewer. He presents SQL access as important to making this workflow practical.

For a concrete example, suppose evaluation results live in an eval_results table with agent_version, failure_mode, and passed columns. A coding agent investigating version candidate_b could retrieve failures by category:

sql

SELECT
    failure_mode,
    COUNT(*) AS evaluated_cases,
    SUM(CASE WHEN passed = FALSE THEN 1 ELSE 0 END) AS failed_cases
FROM eval_results
WHERE agent_version = 'candidate_b'
GROUP BY failure_mode
ORDER BY failed_cases DESC;

That gives the coding session a compact set of failure categories to investigate before proposing a change. It illustrates the aggregate-data access Hetzel calls for; the table is a teaching schema. For Braintrust specifically, the current SQL reference recommends SQL for new queries while retaining legacy BTQL support. SQL access does not imply unrestricted PostgreSQL compatibility.

Hetzel reports growing interest in these headless eval workflows: some users want Codex or Claude Code to help improve their agent without visiting the platform UI at all. The backend must therefore serve agents as well as human analysts. He briefly shows a backend architecture slide, but passes over the implementation discussion for time; the workflow requirement is the developed point here.

Slide titled “What to expect” showing incoming traces flowing through write-ahead logging, background indexing, Tantivy indexing, and unified queries to streamed results in the UI.
A data-backend diagram connects incoming traces to streamed results.
21:1321:34
Suggest correction

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

21:13 · section reference included

Find unknown usage patterns and govern collection

Retrieving known failures is only part of the job. A mature platform should also help teams discover behavior they did not know to look for. Hetzel points to topic modeling as a way to understand how people use an agent without manually reading a large collection of traces. Surfacing those unknown usage patterns helps decide where engineering time should go. As that analysis becomes part of development, both humans and agents need to be able to consume it.

Operating the platform at scale brings additional requirements:

  • Role-based access control: govern access to platform data and capabilities.
  • Data masking: account for sensitive content within the collected data.
  • Automatic tracing: use an AI proxy or gateway to capture LLM interactions centrally, making tracing part of the request path rather than an optional developer action.

The gateway provides a point of central governance. These are further platform responsibilities, beyond experiment execution and results presentation.

22:4623:01
Suggest correction

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

22:46 · section reference included

Keep media review in the trace

The closing audience question makes the data problem concrete again. Dynamic prompts can include files and videos, not just strings assembled through interpolation. The questioner asks how Braintrust handles that complexity when teams otherwise end up building custom solutions around evaluation tools. Hetzel narrows the question to multimodal inputs, outputs, and traces, and the questioner confirms that framing.

His answer separates media storage from trace review: put the media in object storage, reference it from the trace, and render it inside the trace interface. A reviewer can play audio or video where they are already inspecting the agent’s behavior, without leaving the platform. The attachment documentation describes current media-preview support; storing an attachment should not be confused with indexing all of its contents for search.

Prompt ownership remains a separate decision. When the questioner asks whether prompt management must live in Braintrust, Hetzel answers that it can, but does not have to. The platform can make multimodal execution inspectable while leaving prompt management elsewhere—just as the earlier playground can evaluate an agent running outside the platform.

24:1124:34
Suggest correction

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

24:11 · section reference included

Resources

  • How Brainstore worksArticle

    Braintrust's architectural account of trace ingestion, indexing, querying, and the limitations of its previous storage stack.

  • Introducing BrainstoreArticle

    The original Brainstore announcement, with workload-specific benchmarks and explanations of its object-storage architecture.

  • DuckDB's official extension for indexing text and searching document collections.

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] All right. It's 11:15.

  2. 0:16

    Uh, we're gonna go ahead and get started. Before we do, everyone say evals. Evals.

  3. 0:20

    Evals. [laughs]

  4. 0:23

    I was telling my colleague, Rose, uh, who, who's at, at the door, that I was a adjunct professor for a number of years and, um, the first, uh, year that I did it, I thought I was gonna have this full class of 130 people every single week eager to learn.

  5. 0:40

    And then as the weeks went on, 130 became 60 became 30 became 10. So I always tell myself that whenever I give a talk that only about four or five people are gonna show up, but I'm gonna be really excited to teach those four or five.

  6. 0:53

    Um, today is a, a, a, a real blessing because, um, you know, we have, we have a, a packed house here today. Everyone's excited to learn about, uh, evals, and I, I am excited to, to teach it.

  7. 1:06

    Um, here's what we're gonna be talking about today. I'll give you a little bit of, uh, intro about myself and the company that I work for, um, an overview of, of the problem statement.

  8. 1:17

    Uh, we'll go into the different stages of when people are building eval platforms, and after that we'll, we'll talk about, um, at least in, in my opinion, where I think e- eval platforms are going to go.

  9. 1:33

    Um, but yeah, this is, this is me. My name is Phil Hetzel. I lead solutions engineering at Braintrust. I'll go i- into what Braintrust is in a second. Um, solution engineering, that basically means I'm the person, and my team are the people that make sure that people are getting the most value out of our platform, uh, and

  10. 1:52

    as, as quickly as possible. So I'm fortunate because, uh, throughout all of our customers, I, I see, uh, what the state of the art is in, in both evals and, and agent observability.

  11. 2:05

    Prior to Braintrust, I spent 12 years in consulting and systems implementation. I worked for KPMG for four years. I worked for a company called Slalom Consulting for eight years where, uh, I led the global Databricks business unit.

  12. 2:21

    And I noticed that as I was, um, helping my, my clients with those implementations, they were great. So they were so good at generating these generative AI proofs of concepts, and none of them were getting to production.

  13. 2:36

    And I wanted to be, um, I wanted to be helpful in making sure that those POCs could get to production. So I actually started using Braintrust 'cause I knew it helped out in this space.

  14. 2:48

    I started using it as a user, and I liked the platform so much that I applied for a job, and I've been, uh, been here for about a year.

  15. 2:56

    Uh, outside of work, uh, I, I like to play chess, but I'm, I'm, I'm very bad at it. And I like to spend time with my wife and, and my dachshund.

  16. 3:06

    Uh, the dachshund is, i- is named Pistol Pete, and he's pictured... Um, he's the person in brown. He's not the person in black. Person in black is me. Um, has anyone heard of Braintrust before?

  17. 3:19

    Anyone? Couple of hands. How many people have heard about Braintrust for the first time this week?

  18. 3:26

    Really? Okay. Great. Wonderful. Uh, Braintrust, for, um, for just a reminder, um, I think of ourselves as an agent quality platform, and there's a lot of things that can go into quality.

  19. 3:40

    Um, the way that we can get to agent quality, two main pillars through evals and through observability, which we think of as really similar problems to solve. Evals, that's what you're doing with your agent before it gets to production as you're experimenting so that you can become confident in your agent.

  20. 4:03

    And then observability is really similar, but you're already in production. Your agent is, uh, in front of real usage from real users, and you wanna be confident, you wanna remain confident, I should say, that your agent is performing the way that you thought that it, it would when you were building it.

  21. 4:21

    Um, so that's Braintrust. I was specifically told to not make this a sales pitch, so that's like really the last Braintrust slide that, that you'll get today. Uh, although, of course, I'm very happy to answer questions about our company this week.

  22. 4:36

    But mainly, I wanted to talk, uh, more conceptually about, um, how people start to mature and, and build, uh, build these platforms, spoken from a, a place where we have a lot of experience in the space.

  23. 4:49

    Uh, first, why evals are important. Evals are important because, um, this sounds obvious, but LLMs have extreme variability. Uh, we love LLMs because they're highly variable. There are so many different types of problems that LLMs can reason to solve.

  24. 5:08

    That's why we're, that, why, you know, we're so attracted to, to them as a technology. Um, agents are also... Uh, of course, agents use LLMs as, as the brain of the agent.

  25. 5:19

    Agents are becoming the norm in how customers are interacting with companies. People expect an agentic experience now. So if you combine both of those things together, you really need to be confident in how your agent is going to perform once it is in production.

  26. 5:38

    Without doing so, you're going to incur, or you can potentially incur, a great deal of risk, um, from both a, a brand perspective, a compliance perspective, uh, and even more of a, a, a cost and, and, and maintenance and systems perspective.

  27. 5:55

    So we wanna avoid all of those things happening and make sure that, you know, our customers are having a great experience and that our agents are, are, um, acting the way that we thought that they would act.

  28. 6:08

    Um, how many people are, like, they're doing evals right now, but it's just on a Google Sheet or, or some spreadsheet? There's probably... There's no shame in that, my friend.

  29. 6:18

    Raise that hand high. [laughs] That's great. Um, there's... I, I, I... And I, I think, I think that's great. Like, ju- just making the step is, is really important. It's an acknowledgement of the problem space.

  30. 6:29

    And a lot of folks will, you know, they'll, they'll, they'll come to us and they'll say, "Well, I don't really understand Braintrust because, you know, I... All I need to know is, uh, how to loop through my agent with a couple of different inputs and be able to display some, you know, handwritten notes and scores about that

  31. 6:48

    agent." So the things that I mentioned there, three things: some way to, uh, execute your agent, some UI, sometimes it's as simple as a spreadsheet to show those outputs and scores, and then, uh, also a way to, to gather input examples.

  32. 7:05

    What, what I mean by input example is the, the thing that can initiate a run of an agent, the thing that can invoke an agent, whatever information that's necessary for that.

  33. 7:16

    Um, it would be a really short presentation if, if this is all evals was. Uh, I would, I would thank you for your time, and I would walk out the room.

  34. 7:23

    But that's not, that's not what you're here for. There is a whole other part of the iceberg.

  35. 7:28

    It's way more complicated than that. There are a lot of things that you end up having to build when you're really serious about evals. We're not gonna talk about every single one of these things today.

  36. 7:41

    Um, but we will touch on, uh, on many of them. Uh, and of course, if there's anything here that I don't cover that you're interested in, I'll leave some, uh, sometimes, uh, time for questions for that.

  37. 7:51

    I also see, like, a, a lot of phones up, so I'm gonna... I'll pause for iceberg pictures. [laughs]

  38. 7:58

    Um, a coup- a couple things while that's happening. Uh, why is this a complicated problem? We already talked about, a little bit about how the underlying technology is quite complex.

  39. 8:08

    LLMs are, are, are not a superficial, um, engine. Uh, but it, it's also a multi-persona problem, uh, buil- building these agents. It's not just something that engineers do in isolation.

  40. 8:21

    It's something where engineers, uh, whether, whether they're product engineers or AI engineers or both, systems engineers to get the thing running, um, uh, SMEs that have the domain knowledge, all of these people need to be involved.

  41. 8:37

    Uh, and then lastly, uh, evals themselves become a systems problem. That'll be the last thing that we've, that we touch on today. So what are the different stages of, of building an eval platform?

  42. 8:47

    Um, my f- my, my friend over, uh, over there that raised his hand proudly, um, a- about starting out in a spreadsheet, this is, this is a great place to start.

  43. 8:56

    The, the most important thing is that you just get started. So you've got a spreadsheet and you've got a for loop. You've got a bunch of input examples that you can iterate through, and you have a way to execute your agent.

  44. 9:07

    So you can say... You can see every time you tweak your agent how the outputs are different over time. Um, while this is a great place to start because there is no barrier to entry here, everyone has some way to access some type of, of spreadsheet technology, um, the, the returns can be diminishing for a couple of

  45. 9:27

    reasons. Um, this is more... I would call this documenting. It, it's not really experimenting. So while you have this spreadsheet of, you know, a, a bunch of input examples, maybe you keep track across each time you are tweaking your agent, the, the different output that, that emitted.

  46. 9:47

    Um, that can become cumbersome to, to manage over time, of course. Um, it's really challenging to be able to compare directly experiments over time. You're probably not doing a lot of analytics across those experiments, and the analytics that you, you are doing or performing, they're likely coming from some type of human scorer, which is, which is really

  47. 10:11

    valuable but, uh, challenging to scale in practice. Um, evals are, are a team sport, kind of what I was talking about before. We wanna make sure that we're bringing a ton of people into the fold, not just technical folks, but also non-technical folks.

  48. 10:25

    They can add a lot of value to, uh, to your agent because of their domain, unique domain expertise and proximity to users. They're probably not coming into the spreadsheet is, is my point.

  49. 10:36

    Uh, and it's slow. Um, each, each time you, you eval, um, you have to go through probably a little bit of a cumbersome process to, to recreate or append to the spreadsheet.

  50. 10:47

    Um, so, uh, probably the, one of the, uh, um, most fun conversations that, uh, I have in my job is I'll have, you know, a, a very proud product engineer that gets on a call with me and, you know, they, they puff their chest out and they smirk at me and they say, "Well, I can just vibe

  51. 11:05

    code Braintrust. It's no problem." Um, and I think for, for, like, like if, if, if you're just getting started in your journey, it's a really nice step to, to go to.

  52. 11:15

    So now instead of being i- in a spreadsheet land, you're making something a little bit more bespoke for other, other people to bring them into the fold. So now you've probably got a for loop.

  53. 11:29

    You have a nicer UI now, so it's more approachable. And hopefully you've graduated into some database that, that isn't Excel or Google Sheets. You probably, um, you know, use, roll, roll a, a new database in, in something like Neon or, or something.

  54. 11:48

    Um, so now you have a, a better story around persistence of evals. Uh, and because of this, you're bringing more people into the fold. You are, um, making UIs that are a little bit more bespoke for your specific users.

  55. 12:01

    Um, the thing that's, that's a problem here is that you're still not really iterating yet. You're still performing work that is a little bit more, uh, just reporting, just documentation, rather than encouraging a lot of, a lot of iteration.

  56. 12:16

    So more of a reporting tool here. How many people have vibe coded their own, uh, UI? Yeah. Makes sense.

  57. 12:25

    Uh, next step here. So you wanna encourage a lot of, um, experimentation, not just with technical users, but with non-technical users. So, um, you know, I'm showing this, uh, image that is more aligned to allowing experimentation for non-technical users.

  58. 12:44

    But of course, as you're building these platforms, you wanna allow for more SDK driven experience as well. Uh, that just doesn't make for, for a very nice image in a, in a presentation.

  59. 12:55

    So experimentation to me means that you can give a user access to a, an agent, a, a configuration of an agent in a sandbox, and you allow them to tweak certain parameters within, within that agent.

  60. 13:11

    In my example here, I'm allowing a user in the UI to change the system instructions to an agent running outside of my eval platform and allowing them to compare two different configurations of that, uh, of that, of that system prompt.

  61. 13:28

    And I'm running evals across those two different agent runs so that I can bubble up scores. You can, you can see that in the image now. I can bubble up different scores to understand both technically and functionally how my agent is behaving.

  62. 13:44

    Um, so this is like you'll hear about a lot of platforms have a playground feature. You're going to want some type of playground feature both for technical and non-technical users.

  63. 13:54

    This is where the rubber starts meeting the road because the best way to perform evals is to, um, really think about the failure modes that your agent can fall into, um, and build scoring functions around those failure modes.

  64. 14:08

    The best way to find those failure modes in the first place is to have access to production trace data, i.e., your agent in front of real users, u-users in, in real usage.

  65. 14:21

    So the next step here is a really important one. We wanna make sure that we can connect what we, at least internally, we call the flywheel. Observability and evals to us is actually the same problem from a, from a systems perspective.

  66. 14:36

    Um, funny story. We used to be, uh, three years ago when we started, we were only an evals platform. And then we noticed one of our customers was running this massive eval,

  67. 14:46

    uh, like a, every hour of every day. So we reached out to this person, and they said, "Oh, yeah, I'm just piping all of my production traffic into this database, and I'm running an eval against it."

  68. 14:56

    So we're like, "Okay, we should probably just make, make that ability to trace obs, uh, and, and observe actual traffic and be a- and, uh, account for that use case without having to cram it into offline evals."

  69. 15:10

    Uh, so this is really important to make sure that we can observe things in production, understand the actual behavior of our agents. Uh, also understand the, the real lift that the changes that we're making to our agents are, are having.

  70. 15:24

    Um, so we're analyzing that data. Uh, we pull that back, those actual examples back into an offline environment, and then we improve upon those using, uh, offline evals. This is a loop, so it's, it's not just a, a process.

  71. 15:39

    Uh, you're gonna be performing this loop hopefully for the lifetime of the agent that, that you're pushing to production. You, you, you should be iterating this loop as many times as possible.

  72. 15:48

    That's how you, that's how you improve. Um, so as a result of that, you've, you've changed your scope a little. You've widened your scope a, a lot actually. You are now a tracing pro- platform.

  73. 16:00

    You're now a logging platform in addition to being an offline evals platform. Again, the benefit of that is that you got-- you're starting to get far higher signal from how users are interacting with, uh, with your agents, and you can use those real interactions.

  74. 16:19

    Uh, so you can, um, almost think about eval as almost like you're rerunning production in a safe environment. You're now getting to, uh, to that point, um, with, uh, with, with this example.

  75. 16:31

    Um, you can also perform online eval. So you can point scoring functions to your, uh, to your observability traffic, uh, and perform things like alerting, um, all things that you could build in when you're at this phase of maturity for, uh, for running evals.

  76. 16:49

    Uh, the bad here, uh, if you build it, you have to manage it. So just because you've, you know, uh, vibe coded a platform, guess what? You might get a promotion for it.

  77. 16:59

    But also, like, that's gonna be your job now, uh, is, is to, is to manage and, and continue to grow your eval platform at the pace that the industry is moving, um, which can be an e-exciting challenge.

  78. 17:12

    That's kind of the bet that, that our company's making, and we're excited to solve that problem.

  79. 17:17

    The more important challenge though is that agent traces specifically, if you kind of look on the, on the screen, these are really nasty. They're not like normal application traces.

  80. 17:27

    Um, they are, they are really semi-structured. A lot of times they're unstructured. There's just a, a ton of text inherent to LLM problems that we're, that we're solving. Um, they're, um, just, like, very large in addition to being complicated.

  81. 17:43

    So if you're trying to cram, you know, a, a, a one gigabyte trace into a Postgres row, that can lead to a lot of performance problems, uh, and they're numerous.

  82. 17:53

    It's high velocity, uh, because there's so much usage happening in production, hopefully with the, with the agent that you've pushed.

  83. 18:02

    Um, so this is how we used to solve this problem. Uh, just as an example, if, if you're at this stage in maturity, you've got traces coming in, you're gonna need to, uh, account for two query patterns.

  84. 18:13

    One, if you're performing observability, you need a way for, for folks to instantly be able to see their traces. It's very important to people. So you'll need, uh, a, a, a very low latency way to ingest data.

  85. 18:28

    And then, uh, you also need a, a second, uh, um, a second layer of persistence for the query pattern of, I wanna be able to analyze in, in aggregate these data.

  86. 18:40

    So we used to use an open source data warehouse for this. And we used to stitch these two sources together, uh, through a, a, a domain specific language that we created called BTQL that no one liked, and, and including us.

  87. 18:55

    We, we, we hated it. And then we would perform a, like a third level of, of aggregation with, uh, using DuckDB in the, in the browser. Um, this worked for us for, for a bit.

  88. 19:06

    Uh, and then it, it didn't work when, um... I'll, I'll just use one of our customer examples. A, a customer like Notion for, um, as, as an example. Just a ton of a lot of, of unstructured data that they were sending us.

  89. 19:19

    They wanna be able to perform things like full text search across a trace. None of these technologies are really equipped to perform text style, um, analytics, which is a challenge with, with the LLM domain 'cause there's just so much text.

  90. 19:35

    So that leads us to this, um, measuring agent quality, performing evals, performing observability. It's actually a systems problem. It's not just a UI/UX problem. We recognize that it's quite easy to vibe code the UI of evals, um, but it's way, way, way more challenging to create that data layer of, of running a successful evals and, and observability

  91. 19:59

    platform. And not just from a scale perspective, although that matters. Mostly from a functional perspective of allowing people to do the things that they would expect to do, like performing full tech search across millions of traces, um, in, in their platform of choice.

  92. 20:15

    Um, I talked about this a little bit. The, the reason why this is such a novel problem to solve is across a, a lot of these dimensions, which I, you know, I, I won't drain this slide, but, um, the data comes in really fast.

  93. 20:29

    Uh, the data are, are, are like just really large when they come in. So e- even though traditional, uh, spans in a trace, a span is just like one part of a trace, traditional span would be like a couple kilobytes.

  94. 20:41

    Here, we've seen spans that are ten, twenty megabytes in size, just be- there's so much context within those spans. Um, highly, highly unstructured. And then also there, there are a lot of different types of read patterns.

  95. 20:54

    So, um, you might be performing, uh, aggregate types of read patterns, but also you want very low latency types of, of read, read patterns. So none of these problems are, are individually unique, but together they make a, make for a very, uh, unique problem from a sys- systems perspective.

  96. 21:13

    Uh, so what we've done is, um, and you know, what you all would have to endeavor to do if, if you were building this yourselves is you really have to think about making the right data platform for traces so that you can perform some of the more functional, um, requirements that, that eventually come down the line.

  97. 21:34

    The example that I have here is that, you know, let's say that you want to let a coding agent loose on your evals platform so that you can, um, be a little bit more self-healing with grabbing data in aggregate from your evals platform using a coding agent to grab that into context and change your agent, uh, within,

  98. 21:55

    um, you know, with- with- within a, a coding agent session. That's something that's gonna be really challenging to do if you can't run a lot of just pure SQL on the data back end of, of your e- uh, evals platform.

  99. 22:09

    We've actually noticed a lot of these headless style use cases come up where people aren't in- interested in the UI at all. The only thing that they're interested in is, "How can I perform evals in a way where I can use a Codex or I can use a CloudCode to, to help, uh, um, uh,

  100. 22:29

    uh, help increase the quality of my agent for me?"

  101. 22:32

    So the, the last problem here that, that I'll talk about is the so what problem. Um, and we- we'll, we'll skip this for now for the sake of time.

  102. 22:39

    This is how Braintrust does this. We have a blog about this if, if you're interested that, that just got released. Um,

  103. 22:46

    um, but what, what kind of comes next here for, um, uh, what you can expect to build into your evals platform is you wanna be able to tell folks the unknown unknowns of your agent, i.e., "Don't make me look across a whole bunch of traces.

  104. 23:01

    Just tell me how people are, are using, uh, our, our agent." Uh, so you wanna be able to uncover those unknown unknowns, unknown unknowns through topic modeling techniques so that you know where to spend your engineering time.

  105. 23:14

    Um, you wanna make sure that you are, uh, building your platform not just for humans but also for agents 'cause that's one of the main media for how people are, are creating technology now.

  106. 23:26

    Um, we didn't even talk about the non-functional requirements that go into building these platforms like role-based access control, data masking. That's also something that, that's super important that comes up when you wanna operate at scale.

  107. 23:38

    Uh, then lastly, uh, a consideration for adding, uh, uh, automatic tracing through some type of AI proxy or, or gateway so that people don't even have a choice but to trace their, their LLMs.

  108. 23:51

    Um, you can govern very centrally by adding tracing automatically, uh, to, uh, to your eval platform.

  109. 23:59

    Um, so I appreciate the time. I'm-- I've got like a minute and twenty seconds left for, for questions. I can probably take two of them if anyone has any questions.

  110. 24:09

    Yes.

  111. 24:11

    Okay. Um, I'm not sure about Braintrust with, with Langfuse and these kind of tools. Um, the problem is often that you create like dynamic prompts and not from only string, uh, interpolation but also like files and, uh, videos, uh, creating LLMs that like solutions struggle and then you often build like a custom, uh, version.

  112. 24:34

    How does Braintrust, uh, yeah, get around that?

  113. 24:37

    So like how does Braintru- Braintrust specifically handle multimodal outputs and inputs and traces?

  114. 24:44

    Yes.

  115. 24:44

    Yeah. We, uh, like just very technically, we, uh, uh, put them in some object storage, reference them, and then, um, display them directly into the trace. So if you have like an audio file or a video file, you can play it in the trace when someone's reviewing the, the trace itself.

  116. 25:00

    We don't want people to have to exit the platform for that.

  117. 25:03

    And the prompt management is in Braintrust?

  118. 25:05

    It could be. Yeah. The question was, is prompt management in Braintrust? It, it, it could be or it doesn't have to be. Yeah.

  119. 25:15

    Okay. Perfect. Thank you so much for your attention today. [clapping] [outro jingle]