Posting Bounties
Step-by-step guide for businesses to create and manage data bounties on the Data Bounty Board.
Prerequisites
Before posting a bounty, ensure you have:
- Registered company account - Complete the B2B company registration
- Connected wallet - Link an Ethereum wallet for PRIV token transactions
- Sufficient balance - Fund your wallet with PRIV tokens for the bounty budget (funds are held in on-chain escrow via BountyEscrow.sol)
- Verification level - Higher levels allow larger budgets and more concurrent bounties
Creating a Bounty
Step 1: Define Your Bounty
Navigate to the B2B Dashboard and click Post a Bounty. Fill in the basic information:
| Field | Description | Requirements |
|---|---|---|
| Title | Clear, descriptive title | 5-200 characters |
| Description | Detailed requirements | 20-5000 characters |
| Bounty Type | Data format needed | image, video, audio, voice, text, behavioral, location, mixed |
| Tags | Discovery keywords | 1-10 tags, max 50 chars each |
Step 2: Set Pricing and Budget
Configure the financial parameters:
┌─────────────────────────────────────────────────┐
│ Pricing Configuration │
├─────────────────────────────────────────────────┤
│ │
│ Price Per Item: [ 0.50 ] PRIV │
│ ↓ │
│ Target Items: [ 10,000 ] │
│ ↓ │
│ Maximum Budget: [ 5,000 ] PRIV │
│ │
│ Estimated Cost Breakdown: │
│ ├── Contributor Payout (97%): 4,850 PRIV │
│ ├── Protocol Fee (3%): 150 PRIV │
│ │ ├── Burn (40%): 60 PRIV │
│ │ ├── Stakers (35%): 52.5 PRIV │
│ │ └── Treasury (25%): 37.5 PRIV │
│ └── Total: 5,000 PRIV │
│ │
│ Escrow: Funds locked in BountyEscrow.sol │
│ │
└─────────────────────────────────────────────────┘| Parameter | Description | Limits |
|---|---|---|
| Price Per Item | PRIV tokens paid per approved submission | 0.001 - 100 PRIV |
| Target Items | Number of submissions you want | 1 - 10,000,000 |
| Maximum Budget | Total spend cap (held in escrow) | Based on verification level |
| Expiration Date | When the bounty closes | Optional, must be future date |
Step 3: Quality Requirements
Specify the quality standards for submissions:
// Quality requirements schema
{
"qualityRequirements": {
// Minimum quality tier: basic, verified, premium
"minQualityTier": "verified",
// Minimum contributor reputation level (0-4)
"minReputationLevel": 1,
// Require approver voting for all submissions
"requireApproverVoting": true,
// Custom validation rules (optional)
"customRules": {
"requireMetadata": true,
"uniqueContentOnly": true
}
}
}Enabling stake-backed QA (approver voting) adds a 25% premium to the cost but significantly improves data quality. Approvers stake 500 PRIV and require a 3-vote quorum with 66.67% consensus.
Step 4: Consent Requirements
Define what consent contributors must provide:
| Consent Type | Description | Default |
|---|---|---|
| AI Training | Data can be used for AI/ML model training | Required |
| Commercial | Data can be used in commercial products | Optional |
| Research | Data can be used for academic research | Optional |
| Allow Anonymous | Accept submissions from anonymous contributors | No |
Step 5: Content Specifications
Provide detailed specifications based on your bounty type.
Image Bounties
{
"contentSpec": {
"minWidth": 800,
"maxWidth": 4000,
"minHeight": 600,
"maxHeight": 3000,
"aspectRatio": "16:9",
"format": "jpeg",
"colorMode": "rgb",
"subjects": ["street scenes", "urban environments"],
"prohibited": ["faces", "license plates"],
"background": "natural"
}
}Video Bounties
{
"contentSpec": {
"minDuration": 5,
"maxDuration": 60,
"minResolution": "720p",
"maxResolution": "4k",
"fps": 30,
"requireAudio": false,
"orientation": "landscape",
"categories": ["outdoor", "nature"]
}
}Voice Bounties
{
"contentSpec": {
"minDuration": 10,
"maxDuration": 300,
"language": "en",
"accents": ["american", "british"],
"gender": "any",
"ageRange": "adult",
"emotions": ["neutral", "happy"],
"transcriptRequired": true,
"script": "Read the following sentences clearly..."
}
}Text Bounties
{
"contentSpec": {
"minCharCount": 500,
"maxCharCount": 5000,
"minWordCount": 100,
"maxWordCount": 1000,
"language": "en",
"contentType": "conversation",
"format": "json",
"topics": ["customer support", "product inquiries"],
"prohibitedTopics": ["politics", "religion"]
}
}Step 6: Geographic Restrictions
Optionally restrict which countries can contribute:
{
// Only accept from these countries (ISO 3166-1 alpha-2)
"allowedCountries": ["US", "CA", "GB", "DE", "FR"],
// Or exclude specific countries
"excludedCountries": ["XX", "YY"],
// Minimum contributor age (13-100)
"minContributorAge": 18
}Step 7: Instructions and Samples
Provide clear instructions for contributors:
{
"instructions": `
## How to Submit
1. Capture original photos of street scenes
2. Ensure no identifiable faces or text
3. Upload in JPEG format at full resolution
4. Include location metadata if available
## Quality Guidelines
- Sharp focus on main subject
- Good lighting (avoid harsh shadows)
- Horizontal orientation preferred
- No filters or heavy editing
`,
"sampleUrls": [
"https://example.com/sample1.jpg",
"https://example.com/sample2.jpg"
]
}API Reference
Create Bounty
curl -X POST https://api.privlabs.io/v1/b2b/requests \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Urban Street Photography Dataset",
"description": "High-quality street photography for training computer vision models. Looking for diverse urban scenes from around the world.",
"requestType": "image",
"pricePerItem": "0.50",
"targetItems": 10000,
"maxBudget": "5000",
"expiresAt": "2026-06-01T00:00:00Z",
"tags": ["photography", "urban", "street", "computer-vision"],
"consentRequirements": {
"aiTraining": true,
"commercial": true,
"research": false,
"allowAnonymous": false
},
"qualityRequirements": {
"minQualityTier": "verified",
"minReputationLevel": 1,
"requireAudit": true
},
"contentSpec": {
"minWidth": 1920,
"minHeight": 1080,
"format": "jpeg",
"subjects": ["streets", "buildings", "vehicles"],
"prohibited": ["faces", "text"]
},
"minContributorAge": 18,
"instructions": "Capture original street photography..."
}'Response
{
"success": true,
"data": {
"id": "req_a1b2c3d4e5f6",
"companyId": "com_x1y2z3",
"companyName": "AI Vision Labs",
"title": "Urban Street Photography Dataset",
"description": "High-quality street photography...",
"requestType": "image",
"pricePerItem": "0.50",
"targetItems": 10000,
"currentItems": 0,
"maxBudget": "5000",
"spentBudget": "0",
"status": "draft",
"expiresAt": "2026-06-01T00:00:00Z",
"tags": ["photography", "urban", "street", "computer-vision"],
"consentRequirements": {
"aiTraining": true,
"commercial": true,
"research": false,
"allowAnonymous": false
},
"qualityRequirements": {
"minQualityTier": "verified",
"minReputationLevel": 1,
"requireAudit": true
},
"createdAt": "2026-02-04T10:00:00Z",
"updatedAt": "2026-02-04T10:00:00Z"
}
}List Your Bounties
curl https://api.privlabs.io/v1/b2b/requests \
-H "Authorization: Bearer sk_live_xxx"Update Bounty
curl -X PUT https://api.privlabs.io/v1/b2b/requests/req_a1b2c3d4e5f6 \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"pricePerItem": "0.75",
"targetItems": 15000,
"status": "active"
}'View Submissions
curl https://api.privlabs.io/v1/b2b/requests/req_a1b2c3d4e5f6/submissions \
-H "Authorization: Bearer sk_live_xxx"Bounty Lifecycle
┌─────────┐ ┌──────────────────┐ ┌────────┐
│ Draft │ ──> │ Pending Approval │ ──> │ Active │
└─────────┘ └──────────────────┘ └────────┘
│ │ │
│ │ ├──> Paused
│ │ │ │
│ │ │ ▼
│ │ ├──> Active
│ │ │
│ │ ├──> Fulfilled (target reached)
│ │ │
│ │ ├──> Expired (deadline passed)
│ │ │
▼ ▼ ▼
Cancelled Rejected Cancelled| Status | Description | Actions Available |
|---|---|---|
| Draft | Being created/edited | Edit, Submit for approval, Cancel |
| Pending Approval | Under platform review | Wait, Cancel |
| Active | Accepting submissions (escrow funded) | Pause, Cancel, Download data |
| Paused | Temporarily suspended | Resume, Cancel |
| Fulfilled | Target reached | Download data |
| Expired | Deadline passed | Reactivate (extend deadline) |
| Cancelled | Manually cancelled (escrow refunded) | None (terminal) |
| Rejected | Failed platform review | Revise and resubmit |
Best Practices
Writing Effective Bounty Descriptions
- Be specific about what you need
- Include examples of acceptable content
- List common rejection reasons upfront
- Explain the purpose (helps contributors understand context)
Setting Appropriate Prices
| Data Type | Typical Price Range | Factors |
|---|---|---|
| Simple images | 0.05 - 0.25 PRIV | Resolution, subject |
| Complex images | 0.25 - 1.00 PRIV | Specific requirements |
| Short video | 0.50 - 2.00 PRIV | Duration, quality |
| Voice recordings | 0.25 - 1.00 PRIV | Length, language |
| Text content | 0.10 - 0.50 PRIV | Word count, complexity |
Setting prices too low will result in fewer submissions and lower quality. Research market rates before pricing.
Quality vs. Quantity
- High volume needs: Lower price, basic quality tier
- High quality needs: Higher price, enable approver voting, premium tier
- Specialized content: Premium price, specific requirements, verified contributors
Payment Tiers
| Tier | Fee | Discount | Description |
|---|---|---|---|
| Standard | 3% | -- | Pay with any method |
| DirectPRIV | 3% | 15% discount on bounty cost | Pay directly in PRIV tokens |
| StakedPRIV | 2% | 20% discount on bounty cost | Pay with staked PRIV balance |
Troubleshooting
| Issue | Solution |
|---|---|
| Bounty not receiving submissions | Check pricing competitiveness, broaden requirements |
| High rejection rate | Clarify instructions, provide more examples |
| Budget exhausted before target | Increase budget or reduce target |
| Wrong file formats received | Be explicit about format requirements |
Next Steps
- Content Rules - Understand what content is allowed
- Approver Voting - Learn how stake-backed QA works
- Pricing - Detailed fee breakdown