Decentralized AI Data Labeling Marketplace
Connect AI Labs needing labeled training data with a global, crypto-incentivized workforce on mobile. Workers complete micro-labeling tasks and earn instant cUSD. Completed datasets are permanently stored on Filecoin and sold on a decentralized marketplace.
π― Prize Tracks:
- π£ Celo: Mobile-first payments with real cUSD on Mainnet
- π Self Protocol: ZK-verified identity for region and age-specific labeling
- πΎ Filecoin: Decentralized dataset storage on Calibration Testnet with fast retrieval
| Contract | Address | Description |
|---|---|---|
| Real cUSD | 0x765DE816845861e75A25fCA122bb6898B8B1282a |
Official Celo USD stablecoin |
| DataAnnotateEscrow | 0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0 |
β VERIFIED - Escrow contract for worker payouts |
| DatasetMarketplace | 0x2cC8C36C09726519b676b0a19BB911873dAdF387 |
Marketplace for buying/selling labeled datasets |
Network Details:
- Chain ID: 42220
- RPC URL: https://forno.celo.org
- Currency: CELO (for gas)
- Block Explorer: https://celoscan.io
Contract Verification:
- β DataAnnotateEscrow is verified on CeloScan via Sourcify
- π View Source Code
- π Sourcify Repository
| Contract | Address | Description |
|---|---|---|
| MockCUSD | 0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0 |
Mock cUSD (testnet only) |
| DataAnnotateEscrow | 0xA39faDa84249f557a32338eA4b3604780fB9274c |
Escrow (testnet only) |
.
βββ backend/ # Backend services
βββ contracts/ # Smart contracts (Foundry)
βββ filecoin/ # Filecoin integration
βββ miniapp/ # Frontend application
βββ mock_dataset/ # Sample datasets for testing
Create .env files in each directory (see .env.example files).
Required:
- Celo Sepolia private key (for deployments)
- Supabase URL and API key
- Filecoin private key (for storage)
cd contracts
# Install dependencies
forge install
# Build contracts
forge build
# Run tests
forge test
# Deploy Marketplace (after setting PRIVATE_KEY in .env)
forge script script/DeployDatasetMarketplace.s.sol \
--rpc-url https://alfajores-forno.celo-testnet.org \
--broadcast --legacycd miniapp
# Install dependencies
pnpm install
# Set up environment variables
cp apps/web/.env.example apps/web/.env.local
# Edit .env.local with your Supabase credentials
# Run development server
pnpm devcd filecoin
# Install dependencies
npm install
# Set up .env with PRIVATE_KEY
# Quick demo upload (2 files)
npm run quick
# Retrieve from Filecoin (fast!)
npm run retrieve
# View uploaded CIDs
cat demo-cids.jsonCalibration Testnet Details:
- Network: Filecoin Calibration Testnet (314159)
- RPC:
RPC_URLS.calibration.httpvia Synapse SDK - Explorer: https://calibration.filfox.info/en
- Upload Speed: 60-90 seconds per file
- Retrieval Speed: 3-5 seconds per file
- Run the database migration:
cd miniapp/apps/web npx tsx scripts/migrate-marketplace.ts - Copy the SQL output and run it in your Supabase dashboard
- π± Mobile-First: Optimized for MiniPay wallet on Celo
- π ZK Verification: Self Protocol for age/country gating (enables region-specific tasks)
- π° Instant Payouts: Earn cUSD for each completed annotation
- π― Multiple Task Types: Image labeling, audio transcription, text classification
- π Leaderboard: Track your ranking and earnings
- π Launch Datasets: Upload raw data, set bounties per annotation
- ποΈ Track Progress: Real-time completion status for each dataset
- π Upload to Filecoin: One-click background upload when dataset is 100% labeled
- π List on Marketplace: Set price and sell completed labeled datasets
- π΅ Sales History: View all buyers and earnings from sold datasets
- π Browse Datasets: Discover labeled training data for AI models
- π³ Buy with cUSD: Pay with cUSD (85% to curator, 15% platform fee)
- π₯ Instant Download: Retrieve files directly from Filecoin in seconds
- π Gallery View: Scroll through all images and annotations in one view
- πΎ Save to Device: Download individual files to your phone
- Escrow System: Secure on-chain worker payments via
DataAnnotateEscrow - Marketplace Contract: Decentralized buy/sell with 15% platform fee
- Hybrid Storage: Supabase for active datasets β Filecoin for completed datasets
- Filecoin Integration: Synapse SDK for upload to Calibration Testnet + fast retrieval
- Background Uploads: Filecoin uploads run in background (60-90s per file)
- Smart Contract Verification: DataAnnotateEscrow verified on CeloScan
Using the deployed DataAnnotateEscrow contract:
# Approve cUSD tokens for escrow contract
cast send 0x765DE816845861e75A25fCA122bb6898B8B1282a \
"approve(address,uint256)" \
0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0 \
1000000 \
--private-key <YOUR_PRIVATE_KEY> \
--rpc-url https://forno.celo.org
# Create dataset (amount in cUSD decimals: 18)
cast send 0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0 \
"createDataset(uint256,address)" \
1000000000000000000 \
<CURATOR_ADDRESS> \
--private-key <YOUR_PRIVATE_KEY> \
--rpc-url https://forno.celo.orgcast send 0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0 \
"distribute(uint256,address,uint256)" \
0 \
<USER_ADDRESS> \
100000000000000000 \
--private-key <CURATOR_PRIVATE_KEY> \
--rpc-url https://forno.celo.orgcast call 0x765DE816845861e75A25fCA122bb6898B8B1282a \
"balanceOf(address)(uint256)" \
<ADDRESS> \
--rpc-url https://forno.celo.orgπ‘ Tip: View the verified contract source code on CeloScan to see all available functions.
cd contracts
# Run all tests
forge test
# Run tests with verbosity
forge test -vvv
# Run specific test
forge test --match-contract MockCUSDTest
# Run with gas reports
forge test --gas-report- Filecoin README - Storage and retrieval guide
- Supabase Migration
- MiniApp Structure
- Profile Screen: View your active datasets
- Marketplace Screen: Buy/sell labeled datasets
- Launch Dataset Screen: Create new annotation tasks
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ScaleDotFun Platform β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Workers β β Curators β β Buyers β β
β β (Annotate) β β (Curate) β β (Market) β β
β β - MiniPay β β - Launch β β - Browse β β
β β - Self ZK β β - Track β β - Purchase β β
β ββββββββ¬βββββββ ββββββββ¬βββββββ ββββββββ¬βββββββ β
β β β β β
β ββββββββββββββββββΌβββββββββββββββββ β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββ β
β β Supabase (Centralized Storage) β β
β β - User profiles & verification β β
β β - Active datasets & annotations β β
β β - Marketplace listings & purchasesβ β
β β - Raw files (work-in-progress) β β
β ββββββββββββββ¬ββββββββββββββββββββββββ β
β β β
β ββββββββββββββΌβββββββββββββ β
β βΌ βΌ βΌ β
β βββββββββββββ ββββββββββββ βββββββββββββββββββββββ β
β β Celo β β Self β β Filecoin β β
β β Mainnet β β Protocol β β Calibration Testnet β β
β β β β β β β β
β β β’ cUSD β β β’ ZK Age β β β’ Completed datasetsβ β
β β β’ Escrow β β β’ Countryβ β β’ Synapse SDK β β
β β β’ Market β β β β β’ Fast retrieval β β
β βββββββββββββ ββββββββββββ βββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Flow:
1. Curator uploads β Supabase Storage (fast, cheap, editable)
2. Workers annotate β Supabase DB (real-time updates)
3. 100% complete β Background upload to Filecoin (permanent, immutable)
4. Listed on marketplace β Buyers download from Filecoin (decentralized)
Why Supabase + Filecoin?
| Phase | Storage | Reason |
|---|---|---|
| Raw Upload | Supabase | Fast access for workers, cheap, can delete if bad quality |
| Annotation | Supabase DB | Real-time updates, easy querying, mutable |
| Completion | Filecoin | Permanent record, decentralized, immutable, provenance |
| Marketplace | Filecoin CIDs | Buyers trust decentralized storage, always accessible |
Think of it like draft documents (Supabase) vs published books (Filecoin).
- Connect MiniPay wallet
- Verify identity via Self Protocol ZK proof (nationality + age)
- Browse active datasets filtered by your verification
- Complete micro-tasks: label images, classify text, transcribe audio
- Earn instant cUSD payouts per annotation (tracked in leaderboard)
- Upload dataset: Upload raw files to Supabase, set bounty per annotation
- Smart contract locks cUSD funds in
DataAnnotateEscrow - Workers complete annotations (stored in Supabase)
- Track real-time progress (% complete)
- When 100% complete β Click "Upload to Filecoin"
- Background API uploads all files + annotations to Filecoin Calibration Testnet
- Each file gets a unique CID (Content Identifier)
- Click "List on Marketplace" β Set price, deploy to
DatasetMarketplacecontract - View sales history and earnings from buyers
- Browse marketplace listings for labeled datasets
- Click "Buy Now" β Approve cUSD, call
buyDataset()on contract- 85% to curator, 15% to platform
- Click "Download Dataset" β Fetches all files from Filecoin
- Gallery view: Scroll through all images + annotations
- Save to device: Download individual files to phone
Create .env files with your own keys:
# contracts/.env
PRIVATE_KEY=your_private_key_here
# miniapp/apps/web/.env.local
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your_supabase_key
FILECOIN_PRIVATE_KEY=your_filecoin_key
# filecoin/.env
PRIVATE_KEY=your_filecoin_key- β CELO tokens for gas (buy from exchange or get from faucet)
- β
Private key with CELO balance set in
contracts/.env - β
Real cUSD for testing (address:
0x765DE816845861e75A25fCA122bb6898B8B1282a)
cd contracts
# Create .env file with:
# PRIVATE_KEY=your_mainnet_private_key
# Deploy to Celo Mainnet with REAL cUSD
forge script script/DeployDataAnnotateEscrow.s.sol \
--sig "run(address)" 0x765DE816845861e75A25fCA122bb6898B8B1282a \
--rpc-url https://forno.celo.org \
--broadcast --legacy
# Verify the contract on CeloScan
forge verify-contract \
<DEPLOYED_ADDRESS> \
src/DataAnnotateEscrow.sol:DataAnnotateEscrow \
--chain-id 42220 \
--verifier sourcifyβ Deployed & Verified:
- Address:
0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0 - CeloScan: https://celoscan.io/address/0x704EEf9f5c4080018f45FC1C048F2fd30F4063d0
- Status: Verified via Sourcify
Next Steps: Update the escrow address in your frontend:
miniapp/apps/web/src/components/screens/LaunchDatasetScreen.tsxminiapp/apps/web/src/config/self.config.ts
cd contracts
# Add to .env:
# CUSD_ADDRESS=0x765DE816845861e75A25fCA122bb6898B8B1282a
forge script script/DeployDatasetMarketplace.s.sol \
--rpc-url https://forno.celo.org \
--broadcast --legacy
# β οΈ SAVE THE DEPLOYED ADDRESS!
# Update MARKETPLACE_ADDRESS in:
# - miniapp/apps/web/src/components/screens/UploadToMarketplaceScreen.tsx (line 11)
# - miniapp/apps/web/src/components/screens/MarketplaceScreen.tsx (line 11)You can get real cUSD by:
- Buy on Exchange: Coinbase, Binance, etc.
- Swap on Celo: Use Uniswap/Mento
- Ask Friend: Have them send to your address
Real cUSD address: 0x765DE816845861e75A25fCA122bb6898B8B1282a
What we built:
- β
Deployed on Celo Mainnet with real cUSD (
0x765DE816845861e75A25fCA122bb6898B8B1282a) - β Verified Contract on CeloScan: DataAnnotateEscrow
- β Mobile-first MiniApp optimized for MiniPay wallet
- β Two smart contracts: Worker escrow + Dataset marketplace
- β Real transactions: Workers earn real cUSD, datasets sold for real cUSD
Impact: Mobile workers in emerging markets can earn stable crypto by labeling AI training data.
What we built:
- β ZK-verified identity for nationality and date of birth
- β Task gating based on verification (e.g., "US residents 18+" for content moderation)
- β Privacy-preserving: Worker credentials verified on-chain without exposing PII
- β Integrated with dashboard: Verification status shown in UI
Impact: Enables region and age-specific data labeling requirements while preserving worker privacy.
What we built:
- β Synapse SDK integration for upload and retrieval
- β Calibration Testnet deployment: All completed datasets stored on Filecoin
- β Working demo: Full MiniApp with background uploads and instant downloads
- β Open-source: Public GitHub repository
Storage Innovation:
- Dataset Marketplace: Buy/sell labeled AI training data stored on Filecoin
- Hybrid approach: Centralized storage for work-in-progress β Filecoin for final products
- Background uploads: 60-90s per file, runs async so users can continue working
- Fast retrieval: 3-5 seconds per file download using Synapse SDK
- Gallery UI: Mobile-friendly scrollable view of downloaded datasets
- Provenance: Immutable CIDs prove dataset authenticity
Qualification Requirements:
- β Uses Synapse SDK meaningfully (storage + retrieval)
- β
Deploys to Filecoin Calibration Testnet (
RPC_URLS.calibration.http) - β Working demo (full MiniApp frontend)
- β Open-source GitHub repository
This is a hackathon project. Contributions welcome!
MIT
Built with β€οΈ for Celo, Self Protocol, and Filecoin