A bounty marketplace for civic cleanup. Funders post geo-tagged cleanup bounties backed by Solana escrow, claimers complete work, and an AI verifier validates proof before payout. High-stakes actions are gated by World ID.
frontend/- React + Vite + Tailwind app (map UI, bounty flows)backend/- Express API (bounties, claims, sessions, Supabase integration)ai-service/- FastAPI verifier service (video/gps validation pipeline)contracts/- Solana program scaffold and testsshared/- shared schemas/types/contracts between servicesdocs/- architecture, API, and product docs
cd frontend
npm install
npm run devcd backend
npm install
# create backend/.env with PORT, SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY,
# WORLD_ID_APP_ID, SOLANA_RPC_URL (devnet by default)
npm run devcd ai-service
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# create ai-service/.env with at least OPENAI_API_KEY; see app/config.py
# for every tunable env var (backend URL, thresholds, detector backend, etc.)
uvicorn app.main:app --reload --port 8001- Poster funds bounty + uploads reference 360 video.
- Claimer claims bounty (4h lock).
- Claimer starts task and GPS logging.
- Claimer submits completion 360 video + nonce watermark.
- AI verifier checks media + GPS + street context.
- Contract releases SOL on pass.