Every listing is a one-off
A salvage yard does not have ten of anything. It has 48 linear meters of one particular reclaimed beam, in one condition, in one part of Cape Town. So I gave sellers structured fields instead of a description box: condition, how the material was sourced, price per unit, how much is left, minimum order, and who arranges collection. Buyers get something they can check, and the marketplace never repeats a claim it cannot attribute to the seller who made it.

The same fields on every screen
The listing page reuses the fields from search rather than introducing its own. Comparing two batches of timber is reading the same rows twice instead of interpreting two sales pitches. Anything a seller writes in their own words sits in a box labelled as theirs, and supporting documents such as a demolition inventory attach as evidence a buyer can open.

Operators approve, they do not rewrite
Listings go to an operator before buyers see them, checked against a fixed list: seller verification, media, claims and evidence, privacy, and unsupported materials. The operator can approve, request a correction, or keep the listing hidden. What they cannot do is edit the seller’s words, and the review screen says so on the page. If an operator rewrites a claim, buyers can no longer tell which words came from the seller.

Writing a listing and publishing it are separate rights
The seller writes the content; the operator decides whether it reaches the marketplace. Pulling a listing therefore never erases who said what. Operator notes stay internal, so when a dispute arrives months later it can be traced back to the original claim and the person who made it.

Splitting the cart at checkout
A buyer filling one cart from four salvage yards is really placing four orders. I split the cart at checkout, before confirmation, so each seller got an order carrying its own inventory, handoffs, and payout, while the buyer still paid once. That bought a reconciliation step between one payment and several orders, and I took it because a dispute with one yard cannot reach the other three. Each order then runs its own clock: unconfirmed orders cancel themselves, and the collection address stays hidden until the seller confirms.

Paying for what actually moved
Materials leave in batches, not all at once. Keying payout to the order total would have meant either paying for goods still sitting in the yard or holding the whole amount hostage to the last meter, so I tied payout eligibility to handed-off quantity instead. A seller records 8 of 12 linear meters as handed over, that batch opens a 48-hour dispute window, and if nobody objects, the money for those 8 meters comes free while the remaining 4 stay open on their own. The cost is that payout tracks partial quantities and several overlapping windows rather than one paid flag.
