Proofs and disputes
A proof shows the placement is still there. A dispute is how the brand says it is not. Both are on the record, and the outcome is on-chain.
The code
Before taking a proof photo, the owner asks the campaign page for a code. It looks like K7P-4QX: six characters, with no I, O, 0 or 1, because someone has to write it on paper and read it back. A code lives for 30 minutes. An old photo cannot carry a code that did not exist when it was taken.
The dated photo
The owner writes the code on paper and photographs it beside the placement, with the object and the artwork in the same frame. The page records whether the photo was taken in the app or uploaded, and what the photo’s own data says about when it was taken. Both facts go to the brand. Neither rejects a photo on its own, because that data is easy to edit and honest cameras vary.
The pre-check
Before sending, the owner can have the photo looked at on the spot by an AI-assisted check: is the code readable, is the object in frame, is the artwork visible. If something is off, the owner hears it in plain words while still standing next to the object, and can take the photo again.
The pre-check never blocks. If it is unsure, the button reads Submit anyway, and a person reads whatever the check was unsure about.
The hash on-chain
When a proof is sent, its hash is written to the escrow from the owner’s own wallet, so the contract never depends on us. The photo stays private to the two sides; the hash is public and permanent, and anyone can later check that a photo matches it. Each campaign also has a public proof page that shows that proofs exist and when they arrived, without photos, amounts or emails.
Where it went
With each photo, the owner can choose to share the area it was taken in. The location is rounded to about a kilometre and named by district and city, for example “Kadıköy, İstanbul”. The exact point is never kept. The brand sees the district on the campaign page, never a point on a map.
The brand disputes
Each proof opens a seven-day window. While it is open, the brand can dispute that instalment, with a written reason the owner and the arbiter will read. Disputing freezes that instalment only; the rest of the campaign carries on.
The owner is told, with the brand’s words, and replies on the campaign page. Each side can add up to three written statements to a dispute. The arbiter reads both.
The arbiter decides
The arbiter is a named person at peelbid. The decision is executed on-chain and can be any of these:
- Release the frozen instalment to the owner.
- Return it to the brand.
- Split it between them, from nothing to everything for the owner. The fee comes out of the owner's part only.
- End the campaign, returning everything not yet released to the brand.
Amounts already released are final. Each decision states its reason and the name of the person who made it, and both sides see them. On mainnet, a decision takes effect only with two of three keys. A missed instalment is different: it needs no arbiter at all (see Disputes and spot checks).