Witdem
EN / DE
Back

Guide

Agentic workflow observability beyond tracing

A green trace means the pipeline ran, but it does not mean the job succeeded. You still need a clear product goal and inspectable evidence on that same run.

Diagram: execution runtime on the left, product meaning and outcomes on the right
Runtime completion and product meaning are different questions.

Four layers

Observability for agents means seeing more than spans: what ran, how good it was, what it cost, and whether the job was done. These four layers answer different questions on the same run.

Teams need all four on one run; three tools and a spreadsheet are not the same thing. When data lives apart, you guess. When it shares one run identity, you can decide with less doubt.

Product outcomes — was the job done? Cost — what did this run spend? Evaluation — quality vs criteria? Tracing — what executed?

Tracing

What executed? Spans, tools, models, retries, timing.

Evaluation

Quality vs criteria? Rubrics, golden sets, online scores.

Cost

What did it spend? Tokens and tools on the same run.

Product outcomes

Was the job done? Declared goal + evidence you can inspect.

What this means in practice

Picture one agent run from start to finish. You look at the same run four ways, and each layer asks one concrete question about that execution.

First comes tracing: you see which steps ran, plus tools, models, retries, and timing. A green path here only says the code finished, not that the product job succeeded.

Next comes evaluation. You score the output against criteria you chose, but a high score still needs a job that you named up front.

Then comes cost. You attach tokens and tool spend to that same run, because spend without a goal is only a bill.

Last comes the product outcome. You ask whether you met the goal you wrote down, and you keep fields that show why. That is the layer most stacks still leave informal or scattered.

Example: false success

Pipelines can finish every step and still miss the product job. HTTP 200 and finished spans are necessary, but they are not enough on their own.

Trace

Looks healthy

  1. Retriever ran
  2. LLM call finished
  3. HTTP 200 OK

Everything ran as planned.

Product goal

Still failed

Empty or ungrounded answer

Runtime OK. Job not done.

This is a false success: the runtime looks fine, yet the user still gets an empty or ungrounded answer. Operations may think the system is healthy while product knows the job failed.

Without a named goal on the run, you cannot tell those stories apart. You only see green spans, so you miss the failure that matters to users.

A product goal is a short, shared rule for what “done” means. Evidence is the fields that prove pass or fail for that run, and you should keep both next to the trace.

Then a review can ask whether you spent money on a real win, or whether you paid for a clean failure that still looked healthy in tracing.

Anti-patterns

These shortcuts look like monitoring but skip outcomes, so each one answers the wrong question. Green spans alone are not enough, a lone score is not enough, and spend without a named job creates false trust.

Trace only

Green spans with no declared product goal.

Score only

An eval number without a job definition.

Cost without goal

Spend tracked without asking what was achieved.

Fix the habit, not just the chart: name the job, attach evidence, and join cost to that same run.

Example: grounded RAG contract

A small contract in the repo makes success easy to inspect next to the pipeline, instead of hiding the rule behind a dashboard switch alone.

The sample below names an artifact, a decision, and a product goal. Pass means the answer is present and grounding is true, and that rule can sit in git with the code.

version: 1
service:
  name: grounded-rag
  runtime: haystack
contracts:
  grounded_answer:
    artifact:
      name: Grounded answer
      valid:
        non_empty: $.answer
    decision:
      name: Grounding decision
      expected: true
      observed: $.grounded
    product_goal:
      name: Successful grounded answer
      achieved:
        all:
          - $.witdem.artifact_valid
          - $.witdem.decision_correct

What to measure

If you keep only four habits, make them these, because they make pass and fail explainable later. Use the same definition in the repo, keep evidence on the run, and join cost to that outcome.

Named goal

Same definition in-repo for every engineer.

Evidence

Fields that explain pass/fail on that run.

Cost × goal

Spend joined to the run you scored.

No silent judge

Name and version any LLM-as-judge.

Write the goal once and reuse it in reviews. Do not invent a new meaning of “good” inside every tool.

What outcome analytics looks like

Dashboards help when goal, evidence, and cost share one run identity. The screens below come from Witdem; the pattern matters more than the vendor.

You want one place that shows whether the goal was met, why, and at what spend. Path replay helps when you need the steps next to that call.

Dashboard overview showing goal achievement rates
Overview — goal achieved vs needs attention
Run replay of an executed agent path with outcome markers
Run replay — path plus goal on the same run
Model comparison against the same product goal
Compare — models against the same goal

Tool landscape

Tracing tools are strong, and evaluation tools are strong too. Outcomes joined to cost on the same run are often still informal or split across sheets.

The gap is simple to name: join outcome evidence to spend on the same run. Keep tracing and evaluation, then add the missing link.

Tracing

Langfuse · LangSmith · Phoenix

Evaluation

Braintrust and similar

Outcomes + cost×goal

Often still informal or split

Implementation note

This sits beside tracing and evaluation as a soft placement, not a hard sell. Contracts state the goal without replacing your stack.

Witdem is one option: contracts in .witdem/witdem.yaml on Haystack, LangGraph, and similar. Not an orchestrator. Goal + evidence + cost beside tracing and eval — not instead of them.

Start with one named goal on one flow, attach evidence fields, review spend against that goal, and then expand.

FAQ

Is tracing the same as product outcomes? No. Tracing shows what ran; outcomes ask whether the job you named was done. You need both on the same run.

Do you replace Langfuse or similar tools? No. Keep your tracing stack and add a clear goal with evidence next to it. Outcome analytics sits beside tracing and evaluation.

What is a product goal? A short, shared rule for “done” that lives in the repo. Evidence is the fields that show pass or fail for that run.

Who is this for? Teams that ship agent workflows and need more than green spans — platform, ML, and product folks who share one definition of success.

Framework guides: Haystack · LangGraph · LangChain · OpenAI Agents · Case study: Document intake · Layers: Tracing, evaluation, product analytics · Alongside: Langfuse · LangSmith · Phoenix

Get started Read the docs GitHub
Witdem

Analytics for AI agents and multi-step AI applications.

Home Guide Haystack LangGraph LangChain OpenAI Agents Case study Layers Privacy Legal notice License