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

# Campaign analysis workflow (MCP prompts)

> An eight-step prompt chain for evaluating a full interview campaign — from corpus inventory to a workshop-ready problem map — served directly by the Ontora MCP server.

The Ontora MCP server ships eight **MCP prompts** that walk an AI assistant through a complete,
defensible campaign evaluation. Each step builds on the previous one's output, and every prompt
already encodes the counting and privacy rules that make the numbers trustworthy:

* a person counts **once per topic cluster**, even when they raise the topic at several questions,
* person counts and example counts are always reported **separately**,
* **no verbatim quotes** from privacy-protected interviews (they still count in aggregates),
* "nicht genannt" (not stated) always beats invention — no guessed numbers, no invented sources.

The prompt content is written in German; run the chain with any model that handles German well.

## The eight steps

| Prompt                     | Step                                                                                                     | Arguments                                 | Tools the step drives                                                                                        |
| -------------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `campaign_analysis_step_0` | Inventory: corpus size, readable vs. protected, department/seniority distribution, incomplete interviews | `interview_id`                            | `get_research_corpus_manifest`, `get_interview_guide`, `get_question_results`, `list_campaign_conversations` |
| `campaign_analysis_step_1` | Quantitative baseline from the closed questions only                                                     | `interview_id`, `question_ids` (optional) | `get_question_results`, `search_transcript_passages`                                                         |
| `campaign_analysis_step_2` | Extract concrete data needs across the whole corpus                                                      | `interview_id`                            | `start_full_corpus_analysis`, `get_full_corpus_analysis`, `search_transcript_passages`                       |
| `campaign_analysis_step_3` | Pain points, what works well today, data quality and trust                                               | `interview_id`                            | `start_full_corpus_analysis`, `get_full_corpus_analysis`, `search_transcript_passages`                       |
| `campaign_analysis_step_4` | The forced single priority question, clustered and cross-checked against step 2                          | `interview_id`, `question_ids` (optional) | `get_question_results`, `search_transcript_passages`                                                         |
| `campaign_analysis_step_5` | Contradictions and blind spots — the evaluation argues against itself                                    | `interview_id`                            | `search_transcript_passages`, `search_quotes`                                                                |
| `campaign_analysis_step_6` | Prioritized problem/needs map — describes problems, never prescribes solutions                           | `interview_id`                            | (condenses steps 0–5)                                                                                        |
| `campaign_analysis_step_7` | Workshop-ready working document for the follow-up session                                                | `interview_id`                            | (formats step 6)                                                                                             |

`interview_id` is the campaign UUID (from `list_campaigns`). `question_ids` lets you pin the exact
question IDs for the closed questions (step 1) or the single-priority question (step 4); leave it
out and the prompt instructs the assistant to map them via `get_interview_guide` itself.

Steps 2 and 3 deliberately run the durable full-corpus analysis instead of semantic search: it
processes **every eligible interview exactly once**, so the counts are population statements, not
"the most relevant hits". For extraction-heavy steps (1–4) use the strongest reasoning model you
have; for the writing steps (6–7) the model choice barely matters.

## Running the chain from Claude

Claude Code, Claude Desktop, and other MCP clients with prompt support discover the prompts
automatically once the Ontora server is [connected](/mcp/connect):

1. Pick `campaign_analysis_step_0` from the client's prompt menu (in Claude Code, prompts appear
   as `/ontora:campaign_analysis_step_0` style commands) and fill in the `interview_id`.
2. Let the assistant finish the step and **save the output** before moving on — each step consumes
   the previous results, and a saved copy lets you restart cleanly if the context drifts.
3. Continue through step 7 in order. Steps 6 and 7 only reshape earlier results, so run them in
   the same conversation as (or with pasted output from) steps 0–5.

## Running the chain from LangDock

LangDock's remote-MCP integration currently exposes **tools**; if your LangDock version does not
list server prompts, fetch a prompt's text once from any MCP client (or ask us for the text) and
paste it as the message to your LangDock assistant — the Ontora tools it references are all
available through the [LangDock integration](/mcp/langdock). The chain works identically; only
the prompt delivery differs.

Because steps 2 and 3 call `start_full_corpus_analysis`, Claude's `/mcp/directory` connection requires
an Ontora workspace admin. On the legacy `/mcp` surface, the API key needs **full access** (a
read-only key covers every other step).
