JoobEscrow LogoJoobEscrow

How Disputes Work

A transparent look into our impartial arbitration lifecycle.

1. Open a Dispute

If the client and provider cannot reach an agreement, either party can trigger the openDispute(id, evidenceHash) function on the smart contract.

Status changes to: DISPUTED

2. Submit Evidence

Both parties share their proof of work or proof of failure (chat logs, deliverables, requirements). The contract supports anchoring a cryptographic hash of each piece of evidence on-chain (submitEvidence); in-app evidence upload is coming.

3. Arbitration & Resolution

Our arbitration team reviews the evidence from both parties. We use the resolveDispute(id, providerBps) function to enforce a fair split based on the work completed.

Example Split: If the provider finished 80% of the milestone before the dispute, the contract routes 80% of the funds to the provider and refunds 20% back to the client.

4. Stale Dispute Fallback

If a dispute is opened but left unresolved for 30 days, either party (client or provider) can callresolveStaleDispute(id) on the smart contract. This executes a 50/50 split of the locked funds between client and provider, without waiting for the arbitration team.