Stop vibing your agents to production: applying ML discipline to agent development

The Vibing Problem: Wasted Effort in LLM Experimentation

Speaker F introduces the talk's theme of combining 'vibing' with machine learning engineering discipline, describing how teams initially built full front-end/back-end stacks just to prove LLM concepts. He outlines the progression from raw SDK experimentation (chat completions, Anthropic messages) to adopting higher-level frameworks and cloud provider abstractions for runtime, evals, and telemetry.

The Cost of Infrastructure Overhead and Becoming the Bottleneck

Speaker F shares that 60-70% of effort was wasted on infrastructure across six to eight experiments, causing a simple proof of concept to take ten to twelve weeks. Despite eventually shipping two experiments to production through sheer effort, the team recognized an anti-pattern emerging where they became the bottleneck for other teams.

Platform Engineering Philosophy and Developer Experience

Speaker F explains his platform engineering background focused on developer tooling, distributed systems telemetry, and internal developer platforms that help teams onboard services efficiently. He connects this to a prior talk's point that R&D (ML) and application teams should no longer be separate, setting up the need for a platform approach to building agents.

Machine Learning Principles Applied to Agent Development

Speaker F describes his personal ML experiments (Pokemon classifiers, fine-tuning GPT-2 via NanoGPT) and draws the insight that everything in ML is configuration—from model architecture to hyperparameters. He explains treating agent parameters like ML hyperparameters, using loss functions (cross entropy for autoregressive transformers) as the guide for convergence and improvement, informing the platform's design philosophy.

Building the Agent Platform: Architecture and Tooling Stack

Speaker F details the technical stack built for the team's agent platform, including Azure and AWS inference providers, Semantic Kernel framework, AG UI for front-end agent communication, and YAML-driven configuration for agents and evaluations. He describes extending Microsoft's Extensions.AI Evaluations library beyond LLM-as-judge to include deterministic metrics like METEOR, GLUE, and BLEU.

Deterministic Code Generation and Key Trade-offs

Speaker F explains how agent configurations are shipped to production via .NET source generation (deterministic, not AI-generated code). He discusses key trade-offs: treating agents as config while still enabling engineers to write agent loops when needed, prioritizing self-hosting to avoid cloud provider dependency, and questioning whether another agent framework is even necessary given battle-tested harnesses like Claude Agent SDK and OpenAI Agent SDK.

Evals as Graders: Balancing LLM Judges with Deterministic Tests

Speaker F describes the team's evaluation strategy, inspired by Anthropic's blog post on demystifying agent evals, defaulting to LLM-as-judge but extending with deterministic graders for cost efficiency. He emphasizes the outcome: faster experimentation, reduced bottlenecking, and introduces Holodeck, an open-source CLI tool distilling these learnings for building and evaluating agents via YAML configuration.

Live Demo: Building a Financial Assistant with Holodeck

Speaker H demonstrates Holodeck using a financial assistant built on the ConvFinQA dataset for numerical reasoning evaluation. The demo walks through YAML-based agent configuration, running evaluations with math and search tools, and reviewing detailed results including tool calls, reasoning outputs, and pass/fail metrics across test case turns.

Live Demo: Serving, Deploying, and Monitoring the Agent

Speaker H continues the demo by exposing the agent via Holodeck serve using the AG UI protocol with a CopilotKit front-end, showing real-time server-sent events for tool calls and responses. The segment covers collecting OpenTelemetry traces tagged with GenAI metadata, then packaging and deploying the agent as a container to Azure Container Apps, with future support planned for AWS AppRunner and GCP Cloud Run.

Automated Agent Tuning with Optimization Techniques

Speaker F closes the demo and introduces ongoing work on automatically tuning agents using machine learning-inspired optimization: Bayesian optimization for numerical hyperparameters like temperature and top-k, and TextGrad-style critic prompt optimization agents for text prompts. He notes this work is still in progress within the organization.

Key Takeaways and Closing Remarks

Speaker F summarizes the core takeaways: own your agent development lifecycle rather than outsourcing it, treat evals as the loss function guiding optimization, start with deterministic graders, and consider building a dedicated platform engineering effort for agents in large organizations. He closes by directing the audience to the GitHub repo and his contact information for the Holodeck project.

So we're gonna talk about vibing and machine learning engineering, which are possibly the two most extreme topics that we've seen today. But I guess we've to start at vibing first. So in our team, vibing was when me when I joined the team, I saw teams trying to build LM experiments by standing up a full front end, back end stack, just to prove a concept whether if LLMs are fit for purpose.

So we first we started, you know, messing around with the SDK, and that's not a bad place to start. I mean, a year ago, maybe two years ago, it was just chat completions. Today, there's responses. Anthropic messages, cloud providers have their own. Same goes for the eval libraries, tracing, all these stuff you have to figure out if you want to do it all yourself.

So some teams go one step higher, elevate, pick a framework, pick an abstraction. And maybe that's an abstraction or an SDK that your cloud provider provides, which is all great. So, know, you don't have to solve a lot of this stuff lower level. But at that point, maybe just think, and we almost did this. Let's just hand it over to our cloud provider, like, runtime, evals, telemetry. And they're also asking for our CICD.

Just let that go. And what that meant for our team there we go. Is we tried to do six to eight experiments. Some of them agentic. Some of them, you know, just simple hitting the LLM API. And all of that 60 to 70% effort wasted on that infrastructure led us to take roughly ten to twelve weeks, three months, just a proven experiment. Through four sheer sheer force of will, though, we were able to ship two of them to production.

But one thing that emerged that was sort of becoming a bit of an anti pattern was my team became the bottleneck. And we felt like we had to fix that at some point. So my background is platform engineering. I build platforms. I focus a lot on developer tooling and experience. And one of the main goals, or if the only goal of developer experience, is to make it easier for software engineers to make the right choice, write the right code, performant code code that you can ship in the easiest way possible.

So that's developer experience for me, which becomes way harder with distributed systems. So I've built, you know, tooling platforms to make distributed systems problems a bit easier to do, distributed telemetry across service boundaries, distributed transactions and workflows, cap theorem stuff, distributed databases. And we have to be a bit opinionated.

And and to those who've worked with platform teams, you'll see that, you know, they're so opinionated. This is how you do async. This how you do sync. But that's just the reality for large engineering organizations. And finally, internal developer platforms, which goal is to make it easier for dev teams to onboard themselves, their services, their teams.

So with all that, I thought, yeah, maybe I've got something good enough in my experience to maybe build a platform for building agents. But then tried to build it, and I think there's something missing. And there was one talk yesterday. I think it was Kareem Abdul who talked about your r and d and your app team should no longer be separate.

So your r and d team is usually your machine learning engineers, the people who train models, regression models, maybe neural networks. Then you've got your application team, which, you know, serve APIs, you know, serve actual product. And I think that makes a lot of sense. And I'm not a machine learning engineer by trade, by the way, but I mess around, you know, train my own convolutional neural networks just to make a classifier for Pokemon types.

And GPT two on my machine, fine tuned it through NanoGPT from Andre Garpati. Really recommend that one. But what I learned from doing all that stuff is everything is configuration. When you put together your model, you don't build a transformer block from scratch if you use PyTorch. You pick the transformer block, put a feed forward, pick the activation function. And you version all of that.

Right? Obviously, that's the sole version through code, through Git. And then when you run your training runs, another set of variables and parameters come in. So these are your learning parameters, learning rate, your Adam W optimizer beta one, beta two parameters, things that all you treat as configuration as well. And then finally, you treat everything as a hyperparameter.

So we don't manually tune all these parameters. I mean, you you think a a naive way is to do grid search. So you run multiple training runs at a time with different parameters, and you pick the best performing one. And then once you've, you know, you've settled, you define what's good enough, you deterministically ship that to production.

The most important bit is the loss function. So loss function is what allows you to know to determine what your training gradient is. How do you converge? Which direction does your machine learning model converge? Just a bit of trivia. If I can get this to work. Anyone know what the loss function is for a autoregressive transformer model?

Might buy you some beer. It's cross entropy. Other loss functions are mean squared error for, you know, standard regression type regression types. So with that playbook and, you know, with the platform engineering stuff under my belt, there's his how we built it.

We don't have a good name for it. I'm not we're not good at naming names in the government, as you may know. But at the bottom, obviously, there was our cloud provider, inference provider, hosting, data. We were stuck with Azure to start. We're lucky to have AWS inference just recently. I'm so happy we I get to access Quad finally.

We are a dot net shop, fortunately or unfortunately. And we also build, obviously, front end view in TypeScript. So what we've picked in sort of that layer is semantic kernel, which is a year ago. It's probably the only mature framework out there. Today, there's agent framework. The next one, I don't know. Maybe not sure yet.

Maybe we won't pick a framework. Then for front end agent communication, AG UI, which is basically just servers and events. And at the top layer, which is the layer our AI engineers deal with on a daily day to day basis, is where they write their agents, their experiments, the configuration, the evaluation, the test cases in YAML, driven through, you know, whatever the harness that we picked is, and then fed the output to the Microsoft at extensions.ai Evaluations library, which was quite opinionated.

So they came in. It was just LLMs as judges. So we had to extend it to have more determinism in. Implemented METR, GLUE, BLUE, which are translation metrics, which are quite good, especially with free text and if you've got a good ground dataset. Then once you're done and after you've defined what good enough is, we then use those same artifacts to ship that through source generation.

So to any dot net folks here, source generation is a cool thing. We're not using AI to generate the code. It's deterministic code generation. Ship that to an API that you can ship to production.

Cool.

Some trade offs. So obviously, we picked config. Agent as config, experiment as config. Geoff had a great point during the keynote that every AI engineer, for those who don't want to be one, needs to be able to write an agent loop themselves. And that's true. But in a large organization, you don't really need to rewrite that agent loop every single time.

Next is self hosted. Obviously, self hosting is very important to us. It's a systemic risk to be dependent on a cloud provider. And the last bit, which is well, not the last bit, but the other thing that I hinted on earlier was you might not actually need another agent framework. And and my point around here is, you know, framework versus harness, which one do you pick?

I would say harnesses today are probably some of the more battle tested agent loops you can use. So Cloud Agent SDK, OpenAI Agent SDK, OpenCode SDK for a more open source option. And the last bit was the evals. So with the evals, we defaulted to LLM to judge first.

But like I said, we extended it. We had to invest in more deterministic graders. And I use the term graders because I we our team got inspiration from Anthropic's great blog post, which is over there at the bottom, demystifying agent evals for AI agents. So elements as judges, expensive, costs money like your end to end integration tests. But, obviously, at the top, you still need that domain expert so they can help you write your ground truths for your deterministic tests.

So this is how it led to us. We were able to do experiments faster, focus more on the use case, focus more on the stuff that will allow us to take its production faster. The most most important bit is now we're no longer the bottleneck. Other teams are now starting to experiment. And really, that's the goal of platform engineering in any large organization, which is to share the wealth, share the expertise.

It was an open source thing, so anyone could contribute to it. Inner source, not open source. Now I'd love to talk more about our use cases, but I've they're gonna ship me off to a goal if I do. So I did the next best thing that I could with Claude, distill everything that I learned in an open source project called Holodeck.

It's Python. It's a CLI. So if you're gonna build agents using agents, what better tool can you use or can you give them rather than a CLI? It's all in YAML, you know, same kind of agent as config, eval as config, and allows you to ship stuff to a Docker container, which you can host anyway. So I'll be doing a demo.

I'll just take a rest over there. This seemed like a very good idea, so I could take a break. So just hang on, and hopefully, you can hear it properly.

For today's demo, we will show financial assistant built on Holodo. We used the ConFinD QA dataset for its grounding data and most importantly, its validation set. It's a research dataset that aims to study and evaluate complex numerical reasoning. The study and the dataset is free for anyone to use.

And here's the raw dataset, and here's the documents used in the conversations. Holodeck agents are configured in YAML. We have the model configuration, system instructions, evaluation settings, and tools. You can see it has three tools, two math tools, and a separate search tool. The test cases fed in the eval run is in a separate YAML file, which you'll see here.

This is the original config QA dataset from earlier. Let's run evaluation. The eval set has hundreds of test cases and each having multiple turns. So we'll limit it to 10 for now. It is now spinning up the agent, feeding the test cases, then running the configured eval metrics when it finishes.

The eval harness captures everything that the agent emits. Tool calls, both arguments and results, its reasoning output, and the final responses. Now that the eval run has finished, let's look at the results. The run we did shows a 50% pass rate for the 10 test cases we did. Drilling down to that run shows the agent configuration snapshot, the detailed transcript return including tool call arguments, and the results.

Each turn is subject to the same eval metrics configured, but it can be overwritten. We can see the turn zero has passed while turn one has failed. You can also assert which tools must be called per turn. And at the bottom, there are the aggregates. Let's look at a test case that passed. Same thing, detailed transcripts, metric result aggregation.

Hollerbeck ships a dashboard where you can view historical agent runs. Let's say we're done with evals and want to test our agent with an app. We'll use Holodeck serve to expose an API that implements AG UI. For the front end, we're using a TypeScript library called CopilotKit, which implements the AGUI protocol.

Let's warm up the agent. Then let's ask it its tools. And then let's take one of the test cases and feed it into the agent. AG UI is a native agentic protocol which uses server sent events that standardizes on the events passed between UI and agents. Agents. This includes conversation start and tool call use, results and arguments, and then finally the final response.

The UI side captures these events and renders them accordingly. As the agent was running during test and serve, we collect telemetry. Here we can see the app logs, but most importantly, the traces and spans which are tagged with GenAI specific metadata. Now let's say we're happy with how the app works.

We'll now use the Holodeck deploy commands to pack the agent in a container. That includes the Holodeck runtime plus the agent configuration. Now let's push the generated image to our container registry. Now that the image is pushed, let's use the holodeck deploy run command to push it up to Azure Container Apps.

In the agent YAML file, there are settings on how to configure your agent to be deployed. This is purely optional though, and you may choose to use your own deployment mechanisms. Let's have a look at Azure and the deployed agent. Azure Container Apps is just one of the supported native deployment targets.

We plan to support AWS AppRunner and GCP Cloud Run. This is purely optional, and you can choose your own container runtime infrastructure to run your agent with your own tools. We've reconfigured the Copilot kit app to point to the agent endpoint in Azure. So let's give it a go by feeding in another test case.

Just taking a peek in the log so we know it's live. And the final response, thanks for watching this demo and give Holodeck a try. Thank you.

That one better than expected. I was able to take a break, so I'll do that next time again. It was a good tip from John. So there's one more thing. We did say we wanted to use machine learning engineering principles. And it's not machine learning if there's no stochastic grad student descent. Sorry. Stochastic gradient descent.

You got the joke. Awesome. So for basically, we want to be able to have a process to automatically tune agents. There's two things that normally we tune. You've got your hyper parameters. So think about your temperature. What else? If you've got search tools, vector search tools, you've got top k. You've got minimum similar similarity scores, things you can tune numerically. There's all obviously, the text prompt as well.

So for the numbers, Bayesian optimization for hyperparameters. For text prompts, TextGrad style critic TextGrad style critic prompt optimization agents. Still building that, testing that out as well in in the organization, but I'll let you know how it goes.

Takeaways. Own your life cycle, at least for developing agents. And I think the analogy here is you wouldn't outsource your application logic. You wouldn't outsource your unit test framework. So why should you do that for agents if you're going to do use them for anything material in your business?

Treat evals as the loss function. You won't be able to do machine learning style optimization without a loss function. So treat the evals as loss. Start with deterministic graders, which is a bit of a theme that I've picked up across the two days. And finally, if you got an organization that's large enough, maybe this is what you ask your platform engineering team to build.

Maybe. So that's all I have. I've got a QR code there for the GitHub repo, my LinkedIn, and all the others and the sample app sample experiment as well. Have a look. Give it a try or reach out to me. Have a great day, and have a good rest of your afternoon.

// the problem

This is what 'Vibing' looks like.

60-70%

of every experiment burned on infrastructure — not agent logic.

// the receipt

And here's where it broke.

  • We also became the adoption bottleneck.

// the receipt

And here's where it broke.

  • Intake: 6–8 experiments started.
  • Bottleneck (stalled): 10–12 weeks each.
  • Output: 2 ships to prod.

We also became the adoption bottleneck.

A process flow diagram illustrating three stages: Intake, Bottleneck, and Output, with numerical values for each stage.

// strategy

Borrow the ML engineering playbook.

Two faint, rectangular boxes with rounded corners, outlined in light green, on a dark green background. One box is positioned slightly above and to the right of the other.

// trade-offs

The fights worth having (and the ones that aren't).

The receipt, flipped.

// AFTER - 01

4 weeks

From 8-10 weeks

// AFTER - 02

3x faster

vs the old baseline

// AFTER - 03

2 other teams

adopted the toolchain

We stopped being the bottleneck.

The slide shows three empty rectangular placeholders with rounded corners, outlined in light green. One smaller box is on the left, and two larger boxes are stacked on the right.

Confid-QA: Exploring the Case of Hierarchical Reasoning in Conversational Finance Question Answering

Screenshot of a web page, likely a research paper or document, displaying the title "Confid-QA: Exploring the Case of Hierarchical Reasoning in Conversational Finance Question Answering". A large green overlay with a play button covers a significant portion of the document content, indicating an embedded video or interactive element.
Screenshot of an application interface with a dark background. It features three small colored dots (red, orange, green) at the top, and several overlapping rectangular panels. A prominent dark panel with rounded corners and a thin green outline overlays a solid green rectangle, resembling a window or a data display within a console environment.

Screenshot of arXiv article on ConvFinQA dataset by Zhiyu Chen et al.

Screenshot of an arXiv web page displaying a research paper.

ConFinQA: Exploring the Chain of Numerical Reasoning in Conversational Finance Question Answering

Screenshot of an academic research paper.

Financial Data and Conversational Flow Example

{
  "data": [
    {
      "id": "Single_2008_2009_page_28.pdf-0",
      "pre_text": "On 2009 annual report on fiscal 2008, revenues in the credit union systems and services business segment increased 106 (14 %) from fiscal 2007, all revenue components within the segme",
      "post_text": "year ended June 30, cash provided by operations increased $ 23587 to $ 208388 for

Advance Auto Parts (AAP)

Screenshot of a document viewer displaying a financial document for Advance Auto Parts (AAP) from 2008, identified as Document ID Double_AAP2008page_85.pdf.
name: financial-assistant
description: Greenfield-driven financial analyst demonstrating multi-turn test cases

model:
  provider: anthropic
  name: claude-sonnet-4-4
  temperature: 0.8
  auth_provider: auth_token

# Required backend model_provider in anthropic and we use a hierarchical_document tool.
embedding_provider:
  provider: azure_openai
  name: ${AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME}
  endpoint: ${AZURE_OPENAI_API_ENDPOINT}
  api_key: ${AZURE_OPENAI_API_KEY}

instructions:
  file: instructions/system-prompt.md

# Native structured output - the LLM enforces this schema on every final
# response, so the prompt doesn't have to police format. The grader pulls
# answer via response_path below.
response_format:
  type: object
  additionalProperties: false
  required:
    - answer
  properties:
      answer:
        description:
          Numeric answer for the turn. Use a ISIN number when possible
          use the string "NONE" when the filing genuinely lacks the data.
          Percentages may be expressed either as a decimal number
          (e.g.10) or as a string with a trailing % ("33.24%").
        oneOf:
          - type: number
          - type: string
            pattern: "[\-+]?((\d+(\.\d*)?|\.\d+)([eE][\-+]?\d+)?|NONE|[\d]{1,2}.[\d]{2}%)"

tools:
  - name: subtract
    type: function
    description: "Compute a - b. Pass a and b as numeric strings (e.g., "200000", "1,234.56"). returns the difference as a string."
    file: tools/financial_tools.py
    function: subtract
  - name: divide
    type: function
    description: "Compute a / b. Pass a and b as numeric strings. returns the quotient as a string. Raises ZeroDivisionError when b is zero."
    file: tools/financial_tools.py
    function: divide
  - name: sec_filings_archive
    type: hierarchical_document
    description: ...
Screenshot of a code editor, likely VS Code, showing a YAML configuration file named agent.yaml.

AGENT CONFIG SNAPSHOT

A screenshot of an agent evaluation dashboard, displaying agent configuration details including model provider, model temperature, and embedding provider. It lists three tools: "function subtract", "function divide", and "hierarchical_document_convfinqa_archive". A mouse cursor hovers over "function divide". The dashboard also shows a list of test cases on the left, with some marked "PASS" and others "FAIL", and sections for "CONVERSATION" and "EXPECTED TOOLS".

AI Agent Evaluation Results in Tabexplorer

Screenshot of the Tabexplorer UI, a dark-themed application for evaluating AI agents. The interface displays a list of test cases on the left, detailed agent configuration and conversation logs including tool calls, expected tools, and evaluation metrics on the right, and a console output at the bottom summarizing test results with a 50% pass rate.

Thread with tool calls

Screenshot of a development or evaluation interface, showing a list of test cases on the left with pass/fail statuses, and a detailed log of an agent's conversation thread on the right, including user input, tool calls with arguments, and results.

Agent Execution Log

Parameters:

"a": "10592",
"b": "0.332"

Intermediate Result:

"51903.614457831325"

Tool Call: StructuredOutput()

Arguments:
{
  "a": "51903.614457831325"
}
Tool Result:

"Structured output provided successfully"

Agent's Final Answer:

{
  "answer": "51903.614457831325"
}

Metrics:

STANDARD numeric

A screenshot of a technical interface displaying an agent's execution trace, showing initial parameters, an intermediate calculation result, a call to a StructuredOutput tool with its arguments and result, the agent's final answer, and associated metrics.

Agent Run Details and Evaluation Metrics

A screenshot of a user interface displaying detailed results for an agent's run. It includes the agent's answer, performance metrics (token usage, completion time), expected vs. invoked tools, and per-metric evaluation results.

Agent Evaluation Interface

Screenshot of an agent evaluation interface, displaying results, agent output, metrics including token usage, and expected tool call coverage. The interface also shows a bottom navigation bar with "Debug Console" active.

convfinqa_subset_retrieval.yaml


- input: In Advance Auto Parts (AAP)'s 2006 annual report, what was the change in
           the total of inventories due to the adoption of lifo during 2006?
  
A screenshot of a code editor, likely VS Code, displaying a YAML configuration file containing test cases for an agent. A specific input query for one of the test cases is highlighted.

How I use them together:

  1. Retrieve the right filing with `convfinqa_archive_search`
  2. Read the returned chunks for exact numeric values
  3. Calculate using `subtract` and/or `divide` as needed
  4. Answer your question with proper precision

Got a filing you'd like to dig into? Just give me a company and a year! 📊

In Advance Auto Parts (AAP)'s 2006 annual report, what was the change in the total of inventories due to the adoption of lifo during 2006?

AI can make mistakes. Please verify important information.

/Users/justinbarian/Justins-MBP-2 ~/documents/Git/holodeck-samples/copilotkit ⚡ main npm run dev
/Users/justinbarian/Documents/Git/holodeck-samples/copilotkit/package-lock.json
(Turbopack)
http://localhost:3000
http://192.168.1.100:3000
.env.local
Screenshot of an application interface demonstrating an AI agent interaction, showing an input prompt and a terminal output.
  1. Retrieve the right filing with convfinqa_archive_search
  2. Read the returned chunks for exact numeric values
  3. Calculate using subtract and/or divide as needed
  4. Answer your question with proper precision

Got a filing you'd like to dig into? Just give me a company and a year! 🗺️

In Advance Auto Parts (AAP)'s 2006 annual report, what was the change in the total of inventories due to the adoption of lifo during 2006?

Type a message...

AI can make mistakes. Please verify important information.

Screenshot of a conversational AI interface displaying a numbered list of instructions, a chat prompt, and a user's financial query. A hand cursor points towards the chat input field.

Financial Assistant

ConvFinQA-driven financial analyst demonstrating multi-turn test cases

Screenshot of a 'Financial Assistant' web application with a chat interface, showing instructions, a user query about Advance Auto Parts' 2006 annual report, and the execution of a 'Convfinqa Archive Search' tool. Below the application, a terminal window displays application logs and network activity related to `copilotkit`.

Mcp Holodeck Tools Convfinqa Archive Search

Screenshot of an AI agent user interface in a dark theme. It displays a chat conversation where a user has asked a question about Advance Auto Parts' 2006 annual report. The AI agent has invoked a tool titled "Mcp Holodeck Tools Convfinqa Archive Search" with the argument `{"query": "Advance Auto Parts 2006"}`. A hand cursor points to the "Result" section of the tool's panel. Below the conversation, a terminal window shows logs, including references to `holodeck-samples/copilotkit` and `npm run dev`.

Mcp Holodeck Tools Convfinqa Archive Search

Screenshot of a developer environment showing a conversational AI agent UI and a terminal. The AI UI displays a user query about Advance Auto Parts' 2006 annual report, the invocation of 'Mcp Holodeck Tools Convfinqa Archive Search' with its arguments and a document ID result, and a message input field. The terminal shows `npm run dev` and `Next.js is 16.1.1 (Turbopack)` messages from a `copilotkit` project.

Advance Auto Parts (AAP)'s 2006 annual report, what was the change in total of inventories due to the adoption of lifo during 2006?

Screenshot of a dark-themed AI agent or search application interface displaying a query, search progress with a 'Complete' button, and source document details.

Mcp Holodeck Tools Subtract

Screenshot of an interactive agent or tool interface displaying the execution of a "Subtract" tool with specific arguments and its numerical result, along with a message input field and a terminal prompt at the bottom.

Aspire: Traces

Screenshot of the 'Aspire' web application's 'Traces' view, displayed in a web browser. The view presents a table with columns for Timestamp, Name, and Spans, detailing various activities related to 'holodeck-financial-assistant'. The browser's address bar indicates `localhost:8888/traces`.

Financial Assistant

(holodeck-ai) justinbarias@justins-MBP-2 ~/documents/.git/python/agent/lab/sample/financial-assistant/claude main holodeck deploy build agent.yaml --tag latest --no-cache
Loading agent configuration from agent.yaml...
Build Configuration:
Agent: financial-assistant
Image: ghcr.io/justinbarias/holodeck-financial-assistant:latest
Platform: linux/amd64
Protocol: agi-v1
Port: 8080
Preparing build context...
Connecting to Docker...
Building image ghcr.io/justinbarias/holodeck-financial-assistant:latest...
Screenshot of a web browser displaying a "Financial Assistant" application showing financial data. Overlaid on the browser is a modal dialog from "Visual Studio Code" requesting access to data from other apps. A notification in the top right corner reads "Big update: Series A, Threads and CopilotKit Enterprise Intelligence". Below the browser, a terminal window shows the output of a 'holodeck deploy' command for a financial assistant agent, including build configuration details and build progress.

I found the filing. The inventory table shows the LIFO adjustments for both years. Let me calculate the change: The change in total inventories due to the adoption of LIFO during 2006 was $9,978 thousand (an increase).

Here's the breakdown from the filing's inventory table:

Dec 30, 2006 Dec 31, 2005
Adjustments to state inventories at LIFO $82,767 $72,789
Change +$9,978

This aligns with the filing's disclosure that the LIFO method resulted in a reduction to cost of sales of $9,978 for fiscal year 2006 — meaning lower costs were pushed into cost of sales as newer (cheaper) inventory was used, while the LIFO reserve on the balance sheet grew by the same $9,978 thousand.

AI can make mistakes. Please verify important information.

A screenshot of a financial AI assistant interface, displaying text and a table detailing LIFO inventory adjustments for 2005 and 2006, along with an explanation of the financial impact.

Dec 30, 2006Dec 31, 2005
Adjustments to state inventories at LIFO$82,767$72,789
Change+$9,978

This aligns with the filing’s disclosure that the LIFO method resulted in a reduction to cost of sales of $9,978 for fiscal year 2006 – meaning lower costs were pushed into cost of sales as newer (cheaper) inventory was used, while the LIFO reserve on the balance sheet grew by the same $9,978 thousand.

+ Type a message...

(holodeck-ai) justinbarias@Justins-MBP-2 ~/Documents/Git/python/agentlab/sample/financial-assistant/claude  main holodeck deploy build agent.yaml --tag latest --no-cache
Loading agent configuration from agent.yaml...

Build Configuration:
    Agent: financial-assistant
    Image: ghcr.io/justinbarias/holodeck-financial-assistant:latest
    Platform: linux/amd64
    Protocol: ag-ui
    Port: 8888
Preparing build context...
Connecting to Docker...
Building image ghcr.io/justinbarias/holodeck-financial-assistant:latest...
A screenshot displaying a financial table detailing LIFO inventory adjustments for 2005 and 2006, followed by a paragraph explaining the adjustment. Below this is a chat input field and a terminal showing a `holodeck deploy build` command and its output, including the build configuration for a 'financial-assistant' agent and the progress of building its Docker image.

Financial Assistant

ConvFinQA-driven financial analyst demonstrating multi-turn test cases

Screenshot of a web application for a financial assistant, displaying financial data, an explanation, and a chat interface. Below it, a terminal window shows deployment logs.

Viewing Application Logs for Financial-assistant

Screenshot of a cloud application management portal, displaying the 'Revisions and replicas' section for 'Financial-assistant' in the navigation, and real-time application logs for the 'Financial-assistant' service in the main content area.

// coming soon • v2

The optimizer loop.

  • numeric phase → Optuna TPE
  • textual phase → TextGrad critic
  • every accept → baseline advances

$ holodeck test optimize

$ holodeck test optimize
baseline    loss 0.234
— cycle 1 • numeric —
  top_k       ▼0.019 accept ✓
  semantic_wt ▼0.002 noise X
— cycle 1 • textual —
  instructions ▼0.031 accept ✓
— cycle 2 • numeric —
  top_k       ▼0.013 accept ✓
best 0.234 → 0.171 +27%
✓ stacked candidate written
A simulated terminal window on the right displays a live run of an optimization process, showing cycles of numeric and textual phases, with metrics like 'top_k', 'semantic_wt', and 'instructions' being optimized, resulting in a 'best' loss reduction from 0.234 to 0.171, representing a +27% improvement.

Stop vibing. Start engineering.

  • Own your lifecycle.

People

  • Andrej Karpathy
  • Kareem Abdul

Technologies & Tools

  • .NET
  • Adam W optimizer
  • AG UI
  • Agent Framework
  • AWS AppRunner
  • Azure Container Apps
  • Cloud Agent SDK
  • CopilotKit
  • Docker
  • GCP Cloud Run
  • Git
  • GPT-2
  • Holodeck
  • Microsoft.Extensions.AI Evaluations
  • NanoGPT
  • OpenAI Agent SDK
  • OpenCode SDK
  • PyTorch
  • Semantic Kernel
  • TextGrad
  • TypeScript
  • YAML

Standards & Specs

  • BLEU
  • Cross entropy
  • GLUE
  • Mean squared error
  • METEOR
  • Server-sent events

Concepts & Methods

  • Bayesian optimization
  • CAP theorem
  • Convolutional neural network
  • Deterministic graders
  • Developer experience
  • Grid search
  • LLM as judge
  • Loss function
  • Platform engineering
  • Source generation
  • Stochastic gradient descent
  • Transformer block

Organisations & Products

  • Anthropic
  • AWS
  • Azure
  • Microsoft

Works

  • ConvFinQA
  • Demystifying agent evals for AI agents