Data Freelancer Bounty Board
Bounty board for data work—cleaning, labeling, analysis—not generic gigs. Post a schema, vetted freelancers deliver, payout waits on a quality gate.
A growth lead needs a labeled competitor-pricing table by Friday. An ML engineer needs 8,000 images boxed before a fine-tune. A RevOps manager needs a CRM export deduped and GDPR-clean before the board meeting. None of those jobs is “hire a generalist.” They are data jobs: collect, clean, label, analyze. The buyer already knows the schema. What they cannot find is someone who hits it on the first delivery. Generic marketplaces treat this as another gig. Fiverr has data listings, but as the research puts it: “Fiverr has data gigs but no quality standards or schema enforcement.” You buy a $150 scrape, get unnamed columns and a ToS-risky method, then spend two internal days cleaning the cleaner. Upwork optimizes for profile volume, not row-level accuracy. Agencies take the work at enterprise rates.
Built for Freelancers, Solo Founders, Small Business Owners, Weekend Builders.
Suggested stack: Next.js + Vercel, Convex or Supabase, Stripe Connect, JSON Schema + Great Expectations (or a thin clone), Claude or GPT-4o for sampled review, Clerk or Convex Auth. Weekend scope: about 10 hours.
The Problem
A growth lead needs a labeled competitor-pricing table by Friday. An ML engineer needs 8,000 images boxed before a fine-tune. A RevOps manager needs a CRM export deduped and…
The Solution
Collection — niche lists, public filings, priced catalogs, research extracts, with a documented method (no “trust me” scrapes)
Market Research
Cloud catalogs = paid demand, not custom delivery. AWS Data Exchange: 3,700-plus datasets since 2019. Snowflake Marketplace: 1,300-plus from 300 providers since 2020. Catalogs…
Competitive Landscape
Fiverr — Default scrape / “data cleaning” gig. Instant checkout, huge supply, 20% seller commission. No schema, no method disclosure, no accuracy score that follows the…
Business Model
Post ($0 to list, 12% take on completion; 10% as a launch wedge) — Primary revenue. Waive take on the first buyer job if the board is empty.
Recommended Tech Stack
Next.js + Vercel — Buyer post, freelancer claim/bid, admin queue. Filterable list, not a feed.
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "ProofSet": a bounty board for data cleaning where a buyer posts a schema and a freelancer's file must pass an automatic quality gate before the buyer sees it. No money moves through the app. Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Storage, Auth with email magic link). The quality gate is plain code, with no model. Deploy on Vercel. Tables (Row Level Security on; buyers own their bounties, freelancers read open bounties and their own deliveries): - profiles(id, user_id, role, skills text[], accuracy_score, status) role is buyer or freelancer; status is pending or active and you set it by hand - bounties(id, buyer_id, title, brief, schema_json jsonb, max_null_rate, max_dupe_rate, deadline, status) status is open, claimed, in_review, passed, failed or accepted - claims(id, bounty_id, freelancer_id, status, claimed_at) - deliveries(id, bounty_id, freelancer_id, file_path, checksum, submitted_at) - quality_reports(id, delivery_id, schema_pass boolean, null_rate, dupe_rate, row_errors jsonb, notes) Screens: /login, /bounties (open ones, filtered by skill), /bounties/new, /bounties/[id] (claim, upload, report, accept). Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only). Do not build: billing, escrow, payouts or a platform fee, bids, a vetting trial, a model-graded spot check, labeling or data collection jobs, disputes. Done when: npm run dev starts, you can sign in, and the five tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves ProofSet: a delivery either passes a written quality gate or comes back with exact row errors. 1. A buyer posts a cleaning bounty: a title, a brief, a schema as a list of columns { name, type: string | integer | number | date | enum, required, allowed_values }, the largest acceptable null rate and duplicate rate, and a deadline. 2. An active freelancer claims an open bounty. One active claim locks it. 3. The freelancer uploads a CSV to a private bucket. A route handler runs the gate in code: the header matches the schema's column names and order, every value coerces to its type, enum values are in allowed_values, required columns have no empty cells, the null rate per column is under the limit and the share of duplicate rows is under the limit. 4. Save a quality_reports row. If the gate fails, set the bounty back to claimed and give the freelancer a CSV of row-level errors (row number, column, problem). If it passes, set the bounty to in_review. 5. The buyer sees the report and a download link only when the status is in_review. They accept or reject with a note. Accepting sets accepted and updates the freelancer's accuracy_score as accepted deliveries divided by all deliveries. Rules: a freelancer never sees another freelancer's delivery. The buyer never sees a file that failed the gate. Empty state: with no open bounties, show a short example of a schema. Done when: a test CSV with one bad date and 5 percent empty cells fails with a row-error file, a clean CSV moves the bounty to in_review, accepting it updates the score, and a second freelancer cannot open the first one's file.3. Landing Page
Build a one-page landing site for ProofSet, a bounty board for data work. Hero: "A bounty board for data work, not gigs." Sub: "Post a schema. Vetted freelancers clean your data. Nothing reaches you until it passes the quality gate." Two buttons: Join the waitlist as a buyer, Join as a freelancer. Sections: the problem (messy CSVs from general freelance sites), a sample quality report with a pass, a fail and row errors, how it works in four steps (post a schema, claim, deliver into the gate, accept), and an FAQ on personal data, what the gate checks and why this is not a general gig site. Waitlist: store the email and the role in a waitlist table in Supabase. No other service. Style: Geist, a near-black background, one aubergine accent, no stock photos of smiling analysts. Done when: the page renders on a phone and a submitted email with its role appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for ProofSet: a wordmark and an icon that suggest a table cell with a check inside it. Colors: near-black, off-white and one aubergine. Type: Geist, with IBM Plex Mono for column names and numbers. Deliverables: wordmark, icon, three gate result badges (passed, failed, in review) that differ by shape as well as color, and one launch graphic. Done when: each deliverable is saved in one folder and the badges are distinguishable without color.