> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/campaigns/opportunities.md).

# Opportunities

**Opportunities** is the Campaign tab where your team reviews recommended actions. Each opportunity is one proposed action with a brief and optional supporting pages or prompts. Review that brief before work moves into **Action**.

## Review flow

1. Open the Campaign.
2. Select **Opportunities**.
3. Generate opportunities. Click **Generate Opportunities** to run Quill, wait for a configured **Trigger**, or click **Add opportunity manually**.
4. Wait for generation to finish. This usually takes 15 to 30 minutes.
5. Review the opportunities shown in the list. Open **View Details** on an opportunity to read its brief, target page, and supporting context.
6. Edit the brief if the recommended action needs a clearer instruction.
7. If the opportunity has supporting context, continue to **Review context**. Keep the pages or prompts that belong with the action. Remove any that should not be included.
8. Click **Accept opportunity** to send the work to **Action**, or **Decline opportunity** to leave it out.

## Opportunity groups

| Group                 | What it contains                                                |
| --------------------- | --------------------------------------------------------------- |
| **New Opportunities** | Pending recommendations your team has not accepted or declined. |
| **Accepted**          | Opportunities already sent to **Action**.                       |
| **Declined**          | Opportunities your team chose not to pursue.                    |

Use **Show All** when a group has more opportunities than the first page.

## What you review

Open **View Details** to review the full brief and context.

| Field           | Description                                                                                |
| --------------- | ------------------------------------------------------------------------------------------ |
| **Brief**       | The recommended action. You can edit this before you accept.                               |
| **Target page** | For refresh Campaigns, the existing page the action should update.                         |
| **Context**     | Supporting pages or prompts that should inform the action and later appear in Measurement. |
| **Status**      | New, accepted, or declined.                                                                |

## Review the brief and context

Accepting an opportunity is a parent-level decision. You accept or decline the recommended action, then choose which supporting context to carry into **Action**.

1. Read the opportunity name and brief.
2. Edit the brief if the action should be more specific.
3. Click **Next** when there is supporting context to review.
4. Keep the prompts or pages that belong with the action.
5. Click **Remove** on any context you do not want included. You can add a removed item back with **Include**.
6. Click **Accept opportunity**.

Included context is used when your team takes action and when Measurement calculates visibility and sentiment. Removed context is not copied into the Action row.

{% hint style="info" %}
You can still open accepted or declined opportunities to read the original recommendation. Those records are no longer editable.
{% endhint %}

## Add an opportunity manually

Use **Add opportunity manually** when you already know the action and do not want to wait for a generation run.

1. Open Campaign configuration.
2. Click **Add opportunity manually**.
3. For a refresh Campaign, select the **Page** the opportunity should update.
4. Add **Reference context** such as related prompts or pages. This context is tied to the opportunity and tracked in Measurement.
5. Write the **Brief**.
6. Click **Add Opportunity**. Select **Add more** if you want to stay in the modal and create another one.

## Opportunity JSON shape

The following simplified shape describes a v2 Campaign Opportunity. It is the recommendation your team reviews before accepting it into **Action**.

A v2 Opportunity object contains these fields:

| Field                        | Shape             | Purpose                                                                                 |
| ---------------------------- | ----------------- | --------------------------------------------------------------------------------------- |
| `id`                         | Integer           | The Opportunity ID.                                                                     |
| `name`                       | String            | The name of the recommended action.                                                     |
| `description`                | String            | The recommended brief. You can edit it during review.                                   |
| `opportunity_schema_version` | Integer           | The Opportunity contract version. V2 is `2`.                                            |
| `status`                     | String            | The review status, such as `pending`, `accepted`, or `rejected`.                        |
| `target_page`                | Object or `null`  | The page to refresh. It is `null` for a page-creation opportunity.                      |
| `opportunity_contexts`       | Array             | Supporting pages or prompts, ordered by `position`.                                     |
| `action_item_id`             | Integer or `null` | The accepted Action record. It is `null` while the Opportunity is pending.              |
| `grid_row_id`                | Integer or `null` | The Action row created after acceptance. It is `null` while the Opportunity is pending. |

The `target_page` object includes the page `id`, `url`, and `folder`.

Each item in `opportunity_contexts` includes:

* `id`: The context ID.
* `rationale`: Why the context supports the Opportunity.
* `position`: The context's order.
* `resource`: The supporting page or prompt.

A prompt resource includes its `type`, `id`, prompt text, topic, and tags. A page resource includes its `type`, `id`, page URL, folder, and topics.

The shape above is for v2 Campaigns. Legacy v1 Campaigns use `opportunity_items` instead of `opportunity_contexts`.

## What happens after acceptance

Accepted opportunities appear in **Action** as Action rows. Each row keeps the brief you approved, the target page when there is one, and the context you included.

Declined opportunities stay out of **Action** so the Campaign remains focused on the work your team wants to pursue.

## Examples

### Page refresh review

For a refresh Campaign, review whether the target page has a clear reason to change. Strong candidates may have declining citation rate, outdated information, competitor pressure, or a gap between the current page and the prompts it should answer.

Keep supporting prompts that the refresh should answer. Remove prompts that are off-topic. Accept the opportunity when your team is ready to refresh that page.

### New page review

For a creation Campaign, review whether the brief describes a page your team can create. Strong candidates may have high-intent prompts, weak owned coverage, or competitor pages filling the gap.

Keep the prompts the new page should answer. Remove prompts that belong in a different Campaign. Accept the opportunity when your team can create the supporting content.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.airops.com/campaigns/opportunities.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
