Build a prediction market bot that pays for signals
OddsPilot is a prediction market bot that buys signals from other bots, scores them, and pays in USDC when a signal is accepted.
What OddsPilot integrates
OddsPilot can sit on top of an existing prediction market research stack. It receives candidate signals from analysts, scraping agents, social-monitoring bots, and market data APIs.
Viaclave handles the money movement. OddsPilot only needs to decide whether a signal is worth paying for and which wallet or agent handle should receive the payout.
The business model
A prediction market bot that pays for signals is a marketplace in miniature. It has buyers, sellers, quality control, and settlement. The bot is the buyer. Signal providers are the sellers. The product is a piece of information that might improve a market decision.
The ROI is not measured only by winning trades. A signal can be valuable if it prevents a bad trade, speeds up a decision, or gives the bot enough confidence to ignore noisy markets. The right first metric is cost per accepted signal versus the value of decisions influenced by those signals.
For example, if OddsPilot spends 100 USDC per week on signals and those signals help the team avoid one 500 USDC loss, the signal marketplace is already useful. If a provider consistently sends low-quality information, stop paying them. Stablecoin micro-payouts make that feedback loop fast because you can pay per accepted signal instead of negotiating monthly contracts.
Provider onboarding
The provider can be a human analyst, a scraping bot, a social sentiment bot, or another agent. Give every provider a Viaclave handle or wallet ID. That lets OddsPilot pay by handle instead of storing external Solana addresses for every participant.
- Collect provider handle, market categories, source types, and payout terms.
- Require every signal to include a market ID, source link, confidence, and timestamp.
- Track accepted, rejected, duplicate, and stale signals per provider.
- Start with manual approval before allowing automated payouts.
Signal payment architecture
- A provider submits a market signal with source links and confidence.
- OddsPilot checks whether the signal is new, relevant, and inside budget.
- If accepted, OddsPilot sends USDC to the provider's Viaclave handle.
- The idempotency key prevents duplicate payouts for the same signal.
- A daily spending limit keeps the bot from overpaying during volatile news cycles.
Signal schema
Keep signal submissions structured. A model can summarize the text, but the payment decision should be based on explicit fields that your bot can score and audit.
type MarketSignal = {
signalId: string;
providerHandle: string;
marketId: string;
sourceUrl: string;
summary: string;
confidence: number;
requestedPaymentMicroUsdc: number;
submittedAt: string;
};Score before you pay
Paying every submission is how a signal marketplace gets spammed. Score the signal first, then pay only accepted signals. The first scoring system can be simple: new source, relevant market, inside budget, not a duplicate, and high enough confidence.
function shouldPayForSignal(signal: MarketSignal) {
const insideBudget = signal.requestedPaymentMicroUsdc <= 5000000;
const hasSource = signal.sourceUrl.startsWith("https://");
const confidenceOk = signal.confidence >= 0.7;
return insideBudget && hasSource && confidenceOk;
}Pay an accepted signal provider
Use the signal ID as part of the idempotency key. If your bot retries after a network error, the same accepted signal will not be paid twice.
async function paySignalProvider(signalId: string, providerHandle: string) {
const response = await fetch("https://api.viaclave.com/v1/payments/send", {
method: "POST",
headers: {
"Authorization": "Bearer vc_test_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
from_wallet_id: "wal_oddspilot",
to_handle: providerHandle,
amount: 2500000,
token: "USDC",
memo: "Accepted prediction market signal " + signalId,
idempotency_key: "signal-" + signalId,
}),
});
return response.json();
}Set a daily signal budget
Prediction markets can become noisy during breaking news. A daily limit prevents the bot from draining its research wallet when many providers submit at once.
await fetch("https://api.viaclave.com/v1/wallets/wal_oddspilot/limits", {
method: "PUT",
headers: {
"Authorization": "Bearer vc_test_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
daily_limit: 100000000,
per_tx_limit: 5000000,
}),
});Best signal types to monetize
- Breaking news summaries tied to a market question.
- On-chain wallet movement alerts for crypto-related markets.
- Sports injury updates and odds movement explanations.
- Policy, election, and macroeconomic event monitoring.
- Human analyst reviews before the bot changes a position.
How to measure provider ROI
Track every accepted signal against the market state when it arrived. Did the signal arrive before the price move or after? Did it change the bot's decision? Did the same provider repeatedly send useful signals for the same market category? Those questions matter more than a generic win rate.
A practical dashboard can show total paid, accepted signal count, average response time, duplicate rate, and downstream decision value. Once you have that, provider payouts become performance-based instead of guesswork.
Build this workflow in test mode
Create a test API key, connect the MCP server, or call the REST API directly. Viaclave's test mode lets you try wallet creation and test stablecoin payments without real funds.