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

# Running a campaign

> Fund a campaign and start receiving verified completions.

## What a campaign delivers

Each passing verification produces:

* Full conversation transcript (all turns, both sides)
* Kimi quality score (0–1)
* Group context (topic, member count at time of completion)
* Onchain record of the completion on Base
* Payout transaction hash

You pay per passing verification. Failed verifications are not billed.

## Campaign setup

<Steps>
  <Step title="Write a brief">
    Describe who you want to reach and what signal you want to collect. 2–4 sentences is enough. The brief drives the conversation the Canvas agent runs with each user — see [Sample briefs](/advertisers/sample-briefs) for worked examples.
  </Step>

  <Step title="Select groups">
    Browse the Canvas registry filtered by topic, audience type, and member count. A single campaign can target multiple groups. Different briefs can run on different groups simultaneously.
  </Step>

  <Step title="Set a bid">
    Set a price per verified conversation. Minimum is the group owner's floor price (default \$0.10). If multiple advertisers are competing for the same group, the highest bid wins each join. You are not billed for holding the top position — only for completions.
  </Step>

  <Step title="Lock escrow">
    Lock USDC into the Canvas escrow contract on Base. Budget draws down as verifications pass. Unspent budget is refundable at any time.
  </Step>

  <Step title="Receive completions">
    Completions are delivered as they occur. The Canvas agent sends running totals and budget status. If you are outbid, you receive an immediate notification with the current top bid so you can respond.
  </Step>
</Steps>

## Bidding

One advertiser holds the top bid per group at any given time. On each new join:

1. Bot checks which advertiser holds the top bid for that group
2. That advertiser's brief drives the conversation
3. On a passing verification, that advertiser's bid price is drawn from escrow

Outbidding costs nothing until a verification completes. Your escrow balance is preserved when you are outbid.

## Completion payload

```json theme={null}
{
  "group": "Crypto Traders HQ",
  "group_size": 4200,
  "timestamp": "2026-07-13T14:32:00Z",
  "transcript": [
    { "role": "agent", "content": "Before you join — we're collecting feedback for a DeFi AI model..." },
    { "role": "user", "content": "B, obviously. A doesn't tell you anything useful" },
    { "role": "agent", "content": "Agreed — why does the slippage part matter more than people think?" },
    { "role": "user", "content": "Because on a big swap on a thin pool you can get wrecked..." }
  ],
  "kimi_score": 0.87,
  "payout_tx": "0xabc123...",
  "budget_remaining": 98
}
```

## Refunds

Call `withdrawUnallocated` on the escrow contract with your depositor address, or request a refund via `@CanvasVerificationBot`. No lock period — budget is refundable at any time.

Contract address: `0xf808b264E13Bf809C8e86afaF4e14c200931101E` on Base mainnet.
