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

# Deep Research Patterns

> Compose multi-stage retrievers for investigations, literature reviews, and analysis

Deep research workflows orchestrate multiple retriever executions, enrichment passes, and synthesis steps to answer complex questions. Mixpeek's stage catalog—filter, sort, reduce, apply, enrich—gives you the primitives to build these flows without bespoke infrastructure.

## Building Blocks

| Stage               | Examples                                           | Use in Research                                                              |
| ------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------- |
| Search (filter)     | `feature_search`, `query_expand`                   | Gather candidate documents across modalities; expand queries for recall      |
| Narrow (filter)     | `attribute_filter`, `llm_filter`                   | Restrict to relevant time ranges, entities, or sentiment                     |
| Web (apply)         | `external_web_search`, `web_scrape`                | Pull public sources from the open web                                        |
| Enrich              | `document_enrich`, `taxonomy_enrich`, `llm_enrich` | Attach related docs, taxonomy tags, or LLM-extracted facts                   |
| Synthesize (reduce) | `summarize`                                        | Aggregate results into a single synthesized brief with citations             |
| Compose (apply)     | `api_call`, `cross_compare`                        | Call external services (e.g., fact-check APIs) or compare across collections |

## Common Patterns

### Literature Review

1. **Seed search** using `feature_search` to retrieve recent papers across text and figures.
2. **Narrow** by publication date and venue with `attribute_filter`.
3. **Classify** by research area with `taxonomy_enrich`.
4. **Synthesize** findings with citations using `summarize`.
5. Store summaries alongside `feature_id` references for auditability.

### Competitive Intelligence

1. Use `external_web_search` + `web_scrape` stages to pull public announcements.
2. Join with internal product docs via `document_enrich` to compare specs.
3. Apply an `attribute_filter` to spotlight price or feature gaps.
4. Generate a briefing memo with the `summarize` stage.

### Incident Investigation

1. Collect relevant runbooks/logs via `feature_search` over internal collections.
2. Use `attribute_filter` to isolate the incident window.
3. Enrich with taxonomy-based tags (`taxonomy_enrich`) for impacted systems.
4. Summarize timeline and root cause via `summarize`, keeping citations.

## Orchestrating Multi-Retriever Flows

Leverage the `document_enrich` stage to call a sub-retriever based on previous stage output:

```json theme={null}
{
  "stage_name": "retriever",
  "stage_type": "enrich",
  "config": {
    "stage_id": "document_enrich",
    "parameters": {
      "retriever_id": "ret_internal_logs",
      "input_mappings": {
        "query_text": "{{INPUT.primary_question}}",
        "time_range": "{{STAGE.filter.time_range}}"
      },
      "merge_strategy": "append"
    }
  }
}
```

This pattern lets you create macro retrievers that orchestrate domain-specific sub-searches, enabling modular reuse.

## Capturing Feedback

* Record user signals with the [Interactions API](/retrieval/interactions) (`click`, `long_view`, `positive_feedback`, etc.).
* Feed interactions back into [auto-tuning](/retrieval/auto-tune) or `attribute_filter` stages ("hide documents seen in this session").
* Use [Observability](/operations/observability) to optimize parameter choices (e.g., increase a `feature_search` stage's `final_top_k` if users often tap beyond the top 10).

## Operational Tips

1. **Persist execution IDs** – each `execute` response includes an execution id; link it to your research session for audit trails.
2. **Monitor stage telemetry** – `stage_statistics` identifies bottlenecks (e.g., LLM stages dominating latency).
3. **Budget controls** – set `budget_limits` on retrievers to cap time or spend for exploratory workflows.
4. **Cache intermediate results** – cache expensive discovery steps, especially when analysts reiterate queries.
5. **Leverage tasks** – schedule enrichment batches (clusters, taxonomies) ahead of time so research pipelines stay low-latency.

## Suggested Architecture

```
Orchestration App
 ├─ Calls macro retriever (with document_enrich compose stages)
 ├─ Logs execution IDs + user prompts
 ├─ Stores generated summaries & citations
 └─ Sends interactions back to Mixpeek
```

Behind the scenes, Mixpeek handles stage execution, caching, and lineage tracking. You focus on stitching together the right stages and presenting the synthesized output.

## Next Steps

* Review [Retrievers](/retrieval/retrievers) for stage configuration details.
* Learn how [Filters](/retrieval/filters) and [Taxonomies](/enrichment/taxonomies) contribute structure to exploratory pipelines.
* Use [Operations → Observability](/operations/observability) to monitor research workloads in production.
