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

# Parallel investigation

> Run independent specialist steps concurrently, then synthesize their results.

Place independent specialist steps in a Workflow `Parallel` block. Each step in the block runs concurrently, and the Workflow waits for the block to finish before continuing. In this review, fundamental and technical analysis both start after market assessment and complete before risk assessment.

```python theme={null}
from agno.workflow import Parallel, Step, Workflow

workflow = Workflow(
    id="review",
    name="Deep Dive Review",
    steps=[
        Step(name="Market Assessment", agent=market_analyst),
        Parallel(
            Step(name="Fundamental Analysis", agent=financial_analyst),
            Step(name="Technical Analysis", agent=technical_analyst),
            name="Deep Dive",
        ),
        Step(name="Risk Assessment", agent=risk_officer),
    ],
)

result = workflow.run("Run a full review on NVDA")
final = result.content  # the last step's output

# Gotcha: result.step_results is positional, and a Parallel block is one
# StepOutput whose .steps holds the sub-steps, not flattened:
#   [ StepOutput("Market Assessment"),
#     StepOutput("Deep Dive", steps=[StepOutput("Fundamental Analysis"),
#                                    StepOutput("Technical Analysis")]),
#     StepOutput("Risk Assessment") ]
```

Market assessment runs first. Fundamental and technical analysis both use that market context, so they run together. Risk assessment starts after both analyses finish.

## Two ways to fan out

| Shape                         | Use when                                                          |
| ----------------------------- | ----------------------------------------------------------------- |
| `Parallel` step in a Workflow | The investigations and their position in the step graph are fixed |
| Broadcast Team                | A lead should synthesize independent opinions on one question     |

A Broadcast team is the adaptive version: every member evaluates the same question simultaneously and the lead reconciles them. See [Orchestration patterns](/use-cases/deep-research/orchestration-patterns#broadcast-independent-evaluations-one-synthesis).

## Model the dependencies

Use the step graph to express data dependencies. Group steps that share the same prerequisite in `Parallel`. Place downstream steps after the block.

| Step                 | Depends on       | Runs                         |
| -------------------- | ---------------- | ---------------------------- |
| Market assessment    | Research request | First, alone                 |
| Fundamental analysis | Market context   | In parallel with technical   |
| Technical analysis   | Market context   | In parallel with fundamental |
| Risk assessment      | Both analyses    | After the parallel block     |

## Reduce research latency

Running independent analyses concurrently reduces wall-clock latency while preserving each specialist's full analysis.

## Next steps

| Task                            | Guide                                                                     |
| ------------------------------- | ------------------------------------------------------------------------- |
| Choose the orchestration shape  | [Orchestration patterns](/use-cases/deep-research/orchestration-patterns) |
| Ground each parallel specialist | [Grounding research](/use-cases/deep-research/grounding-research)         |
| Synthesize into one artifact    | [Structured deliverable](/use-cases/deep-research/structured-deliverable) |

## Developer Resources

* [Parallel workflows](/workflows/workflow-patterns/parallel-workflow)
* [Parallel execution cookbook](https://github.com/agno-agi/agno/tree/main/cookbook/04_workflows/04_parallel_execution)
