> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2-docs-scavio-google-v2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Structured deliverable

> Return a typed decision with the call, conviction, allocation, rationale, and citations.

Make the final pipeline step return a typed decision that downstream code can validate and use. Define the call, conviction, allocation, rationale, and citations in a Pydantic schema, then pass it as the final agent's `output_schema`.

```python theme={null}
from typing import List, Literal

from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from pydantic import BaseModel, Field


class Decision(BaseModel):
    call: Literal["BUY", "HOLD", "PASS"] = Field(..., description="The committee decision")
    conviction: Literal["low", "medium", "high"] = Field(..., description="Confidence in the call")
    allocation_usd: float = Field(..., description="Dollar allocation, 0 if not BUY")
    rationale: str = Field(..., description="Why, referencing the analyst inputs")
    citations: List[str] = Field(..., description="Sources and prior memos used")


chair = Agent(
    name="Committee Chair",
    model=OpenAIResponses(id="gpt-5.5"),
    output_schema=Decision,
    instructions=(
        "Synthesize the analyst inputs into a decision. Every BUY needs a "
        "dollar amount. Every decision must reference at least one risk."
    ),
)


def briefing(*analyst_outputs: str) -> str:
    return "Analyst inputs:\n\n" + "\n\n".join(analyst_outputs)


result = chair.run(briefing(market, fundamentals, technicals, risk)).content
# Decision(call='BUY', conviction='high', allocation_usd=2_000_000.0,
#          rationale='Momentum and fundamentals align; sized within the
#                      sector cap the Risk Officer set.',
#          citations=['memo:NVDA-2024Q3', 'research:semiconductors'])
```

Because `output_schema=Decision`, the run returns a validated `Decision`. Downstream code reads `result.call` and `result.allocation_usd` directly. If the model's output fails validation, Agno logs a warning and `content` stays a string, so check the type before acting on it.

The chair weighs the specialists' inputs and commits to a call. Its configuration omits tools so every conclusion comes from the supplied briefing.

## Decision and memo

A research system usually produces both a machine-actionable decision and a human-readable memo.

| Artifact | Form                           | Consumer                                 |
| -------- | ------------------------------ | ---------------------------------------- |
| Decision | Typed object (`output_schema`) | Downstream automation, dashboards, audit |
| Memo     | Markdown written to disk       | Humans, the next review's context        |

The memo is written by a dedicated agent with file tools and a fixed template, then archived. The next review reads it back as [prior work](/use-cases/deep-research/grounding-research). The decision is the row you store and act on.

## Required decision fields

| Field        | Purpose                                                  |
| ------------ | -------------------------------------------------------- |
| `conviction` | Lets you threshold: act on high, queue medium for review |
| `rationale`  | Records the reasoning trail for review and audit         |
| `citations`  | Carries source identifiers for downstream verification   |

Require citations in the schema and instructions so each decision carries source identifiers for verification.

## Add approval for consequential actions

When a decision triggers a real action, such as moving capital or publishing a number, add human approval before the action executes. See [human approval](/hitl/overview).

## Next steps

| Task                             | Guide                                                                     |
| -------------------------------- | ------------------------------------------------------------------------- |
| Carry the memo into the next run | [Grounding research](/use-cases/deep-research/grounding-research)         |
| Make decisions improve over time | [Institutional learning](/use-cases/deep-research/institutional-learning) |
| Serve the decision to a surface  | [Serve and embed](/use-cases/deep-research/serve-and-embed)               |

## Developer Resources

* [Structured output](/input-output/structured-output/agent)
* [Workflows cookbook](https://github.com/agno-agi/agno/tree/main/cookbook/04_workflows)
* [Human approval](/hitl/overview)
