Skip to main content

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

1

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 for worked examples.
2

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.
3

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.
4

Lock escrow

Lock USDC into the Canvas escrow contract on Base. Budget draws down as verifications pass. Unspent budget is refundable at any time.
5

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.

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

{
  "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.