# `Nous.Research.Planner`
[🔗](https://github.com/nyo16/nous/blob/v0.17.1/lib/nous/research/planner.ex#L1)

Decomposes a complex research query into a structured plan with sub-questions.

Supports three strategies:
- `:parallel` - Independent sub-queries executed simultaneously
- `:sequential` - Each step depends on prior results
- `:tree` - Branching exploration with pruning

# `plan`

```elixir
@type plan() :: %{
  query: String.t(),
  steps: [step()],
  strategy: :parallel | :sequential | :tree,
  estimated_searches: non_neg_integer()
}
```

# `step`

```elixir
@type step() :: %{
  query: String.t(),
  strategy: :parallel | :sequential,
  depends_on: [non_neg_integer()]
}
```

# `plan`

```elixir
@spec plan(
  String.t(),
  keyword()
) :: {:ok, plan()}
```

Generate a research plan from a user query.

Uses an LLM to decompose the query into searchable sub-questions.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
