Five states. One loopback. Each transition is logged, each money movement is a row in a ledger, every claim is arbitrated by a single source of truth so there's never a tie. Here's what actually happens between you posting and a deposit being refunded.
Six templates cover the launch surface — quick task, standard usability, deep dive, agent smoke test, agent stress test, landing critique. You fill in a target URL, instructions, optional NDA toggle, and pay through Stripe Checkout.
The deposit isn't a fee. It's an escrow. Nothing has been earned yet. The project enters status='active' and matching Hitloopers are notified.
A per-project Durable Object arbitrates the claim race. The first qualified Hitlooper (verified Stripe payouts, sufficient reputation for gated templates) wins; everyone else gets a clean 409 back.
The clock starts at claim time: 72 hours to submit, or the claim is released and the project reopens.
Browser-native screen + audio capture (no install). Their voice on top of your product. They fill out a structured deliverable scoped to the template — ratings, friction tags, plain-language findings.
The recording streams to Cloudflare Stream. Whisper transcribes it automatically. A scoring pass tags engagement, substance, originality, coverage — flagging anything below 50 for review.
You get 72 hours to review. Accept and the platform settles. Request clarification and the Hitlooper has 24h to respond. Dispute and it routes to a human admin queue.
If you don't act in 72h, the system auto-accepts with a neutral tag. That's by design — the loop only works if it keeps moving.
On accept, the Hitlooper is paid (deposit − 15%) via Stripe Connect transfer. Two ledger rows are written — payout and platform fee.
At the same moment, a 30-day reciprocity window opens for you. Complete equivalent work for someone else in that window and you get refunded automatically.
Every accepted project opens a 30-day window for the requester. To close that window with a refund, the requester must complete a project as the Hitlooper — with a deposit equal to or greater than the one they're trying to refund — before opened_at + 30d.
If you reciprocate inside 30 days: the platform fires stripe.refunds.create with amount = deposit × 0.85. Window closes with outcome 'refunded'.
If you don't: at hour 720, an hourly cron sweeps and marks your window 'expired'. No refund. Your worker keeps the full payment.
There is no extension, no partial credit, no rollover. The window is the window. Builders trust this because it's predictable, not because it's flexible.
The rule is simple: claim and complete a project with a deposit equal to or greater than the one you're trying to refund. Tier doesn't have to match — a usability test reciprocates an agent test just fine.
Five states, one loopback, one fee, one window. Honest math on every transaction. Sign in and post your first project — it takes about 90 seconds.