Evidence before effort.
RewardOps is a cross-channel agent that protects developers from wasting hours on closed, stale, vague, or overcrowded software rewards. Send it a public GitHub issue and it verifies the live source, extracts reward evidence, counts visible attempts, applies hard-stop risk gates, and returns an explainable pursue/research/ skip decision.
The same Caspian on_message handler serves every connected channel. The
hackathon deployment is designed for email plus Slack; no handler is duplicated
and no channel-specific business logic exists.
Reward marketplaces frequently preserve an old card after its underlying GitHub issue has closed. A large dollar amount can also hide dozens of active attempts, an assignee, missing payout mechanics, or a two-line scope. RewardOps checks the source of truth at decision time and refuses to score unreachable sources from stale cached data.
- Hard-stop verification: a closed issue always scores
SKIP, regardless of the advertised amount. - Evidence extraction: common
$100,100 USD,350 USDC, and/bounty 100formats are supported, with the matching source lines retained. - Currency-safe scoring: token-only rewards such as MRG, RTC, BTC, or credits are never displayed as USD without independent conversion evidence.
- Competition sensing: visible
/attempt,/claim, and work-intent comments reduce the score. - Explainable decisions: every score includes positive signals and risk flags.
- Persistent watchlist:
watchsaves evidence to SQLite;digestranks it. - One Caspian handler: email and Slack route through exactly the same command and response path, including rich cards and clean text fallbacks.
- Reply-safe email parsing: quoted reply history is removed before a command is evaluated, so email clients cannot accidentally turn one command into many.
scan https://github.com/<owner>/<repo>/issues/<number>
watch https://github.com/<owner>/<repo>/issues/<number>
digest
help
Requires Python 3.11+.
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .envOn Windows PowerShell, activate with:
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
Copy-Item .env.example .envCreate a Caspian project and connect two channels:
pip install caspian-cli
caspian init
caspian connect email
caspian connect slackAuthorize the returned Slack link, then start the one-handler agent:
rewardops-agentFor higher GitHub API limits, add GITHUB_TOKEN to .env. Never commit .env.
The CLI exercises the exact same service used by Caspian:
rewardops scan https://github.com/BasedHardware/omi/issues/2316Even if a marketplace still advertises this old $1,000 bounty, RewardOps checks
GitHub live and returns SKIP because the issue is closed. That stale-card failure
mode is the core demo.
Email ─────┐
├─ Caspian normalized message ─ one handler ─ evidence verifier
Slack ──────┘ │
├─ live GitHub API
├─ scoring + risk gates
└─ SQLite watchlist
ruff check .
ruff format --check .
pytestTests cover URL safety, reward extraction, the closed-source hard stop, competition penalties, watchlist persistence, and channel-independent command handling.
The hackathon submission draft and live recording plan are in
docs/DEVPOST_SUBMISSION.md and
docs/DEMO_SCRIPT.md.
RewardOps only reads public issue metadata. It does not contact maintainers, submit claims, scrape private data, or perform security testing. A high score is evidence for human review, never a guarantee of payment.