Setup
Two parties register before any verification can run: the group owner and the advertiser. Both use@CanvasVerificationBot directly.
Group owner registers
The group owner DMs
@CanvasVerificationBot with their group link, topic, Base wallet address, and price per verification (default: $0.10 USDC). Canvas writes the group to Postgres.Bot is added as admin
The group owner adds
@CanvasVerificationBot as admin with two permissions: restrict members and send messages. No other permissions are required.Per-verification flow
Runs automatically on every new join attempt to a registered group.Join detected
Telegram fires a webhook to the Canvas agent server on Railway. The server checks Postgres: group registered, active campaign budget present.
User restricted and DMed
The bot restricts the new member from posting and opens a DM. The Canvas agent sends an opening message generated from the advertiser brief and group topic.
Conversation runs
The user exchanges 2–4 messages with the agent. If a response is thin or evasive, the agent sends a follow-up. Maximum 3 agent turns. Each conversation is generated dynamically from the brief — no two users see the same opener.
Completion logged onchain
On the user’s final turn, the agent server calls
logCompletion on the Canvas escrow contract. The attempt is recorded on Base regardless of what Kimi scores.Kimi scores the transcript
The full conversation transcript goes to Kimi. Kimi returns a score between 0 and 1 based on response entropy, contextual coherence, engagement trajectory, and timing.
Pass: payout released
Score ≥ threshold → agent server calls
releasePayout on the escrow contract → USDC sent to group owner wallet → user unrestricted and admitted.Fail: re-prompt or deny
Score below threshold → user gets one re-prompt with a different question from the same brief. Second failure → user denied, 24-hour cooldown applied. No payout on either failure.
What the user sees
From the user’s side:- They tap Join on a Telegram group
- They receive a DM from
@CanvasVerificationBot - They have a short conversation — typically 3–4 messages, under 30 seconds
- They receive a confirmation and are admitted