Documentation
Ovryth docs
Everything needed to understand, use, and build on Ovryth: payroll for real community work, paid in USDC on Base.
Overview
Ovryth pays members who do real work in a project's Telegram, in USDC on Base, within minutes. The project keeps its budget in its own Base Account and grants Ovryth a capped, revocable spend permission. Low-quality or copied messages are refused in public with a reason, and Ovryth can never spend past the weekly cap because the cap is enforced on chain.
How it works
A project funds a weekly cap in its Base Account and grants a spend permission naming the Ovryth payer contract as the only spender. Members post work in the project's Telegram group where Ovryth is an admin. Each message is scored against the project's rules; real work is paid, and everything else is refused in public. Every payout is a single on-chain transaction, and a payout past the cap reverts.
Getting started
Earn in a room
Join a project's group where Ovryth is active, DM the bot /wallet 0xYourAddress once, then answer a pinned question with real, specific work. You are paid in-thread with a BaseScan link. Copying an earlier answer is refused.
Open a room
You need a Base Account, some USDC on Base for the weekly cap, and a Telegram group where you are an admin. Connect at /open, set the allowance and sign the spend permission, write your rules, then add @Ovryth_bot and send /link in the group.
Core concepts
- Base Account
- A smart-wallet account on Base that can sign a spend permission. Plain seed-phrase wallets (EOAs) are not supported.
- Spend permission
- A signed, on-chain authorization letting the Ovryth payer spend up to a weekly allowance from the project's account, and no more. Revocable in one transaction.
- Weekly cap
- The allowance per 7-day period. A payout past it reverts on chain. It resets each period.
- Non-custodial
- Ovryth never holds funds. Each payout is one transaction from the project's account to the member.
- Refusal
- A message judged not to be real work. Ovryth replies in public with a fixed reason, at most once per member per day.
- Hold
- Approved work with no linked wallet is held for 72 hours, then released back to the budget.
- Floors
- Minimum account age and room tenure, plus per-member weekly and per-room daily caps, applied before payment.
Room flow
For each message: a cheap pre-filter checks length, links, duplicates, and floors. Candidates that pass go to the model, which classifies the message against the room's categories and proposes an amount within the category range. A deterministic policy layer then applies floors and caps and can only lower or zero the amount, never raise it. The result is a payout to the member's linked wallet, a 72-hour hold if there is no wallet, or a public refusal. Recipients come only from the wallet a member linked in a DM, never from message text.
Telegram commands
/wallet 0x…- DM the bot to link your payout address. Changing it requires a confirmation.
/rules- DM the bot to list the rooms you are in and their rules.
/link <code>- Sent in a group by the owner to bind it to a room.
#question …- Pin a question so answers are judged against a real prompt.
Console
The owner console at /console shows the weekly budget bar, the spend permission, the ledger of paid and refused contributions, and operator notes (last sweeper run, pending jobs, operator gas). Owners connect their Base Account to pause or resume the room and edit the rules; both actions are signed and verified against the room owner. Revoking is done from the Base Account's own permissions screen and stops Ovryth immediately.
API reference
Owner-signed routes take a SIWE-style message signed by the room's Base Account, valid for ten minutes. The public room JSON is also rendered on the room page.
Technical details
Chain: Base mainnet, chain id 8453. USDC 0x8335…2913. Coinbase SpendPermissionManager 0xf852…67Ad. OvrythPayer 0x4854…3999, verified on BaseScan, with no withdraw, no arbitrary call, and no way to hold funds. The payer's pay() approves the permission once, spends within the cap, and transfers to the member in a single transaction. Stack: Next.js App Router, viem, Prisma on Neon Postgres, and a raw Telegram Bot API webhook. See /proof for the on-chain artifacts.