State machine
Conversation sub-states
WithinACTIVE, the conversation moves through:
GREETING— agent sends opening message from briefAWAITING_RESPONSE— waiting for user replyPROBING(conditional) — agent sends follow-up if response was thin; returns toAWAITING_RESPONSECLOSING— agent sends final turn; transcript queued for Kimi
Timing
Typical total: under 30 seconds for an engaged user. On-chain settlement (
releasePayout) runs asynchronously in the payout batch and does not gate admission — the user is admitted as soon as they pass and accept the group rules.
Timeouts
Verification timeout: User does not respond to the initial DM within 5 minutes →TIMED_OUT → user denied. They can rejoin and start a new verification.
Rejection cooldown: Two consecutive failures (including re-prompt) → COOLDOWN_REJECTED → 24-hour cooldown on that user/group combination. The cooldown key is tg_user_id + group_id.
Kimi outage: Scoring request queued with up to 4 retries and exponential backoff. If all 4 fail → SCORING_UNAVAILABLE → user admitted, no payout released, no cooldown applied. Kimi infrastructure failures do not penalize users.
Rate limits
Sequential processing per group prevents simultaneous join floods from exhausting campaign budgets faster than intended.
Re-prompt
On first failure, the agent sends a single re-prompt using a different angle from the same brief:“Let’s give it another shot — [rephrased question or different question from the brief].”If the second attempt also fails, the user is denied and the 24-hour cooldown begins. Failed verifications are not billed to the advertiser.