Area: mobieusMarket / BBS (audit p3) · Surface: /market/{slug} · Dimension: competitor-gap · Severity: minor
eBay's Best Offer and Facebook Marketplace's offer flow turn a stalled listing into a sale by letting buyer and seller converge on a price with structured accept/decline/counter actions. Today a Mobieus buyer who wants to haggle has to free-text it in a DM, the seller has to remember to update the listing price, and there's no record of the agreed number for the sale. A lightweight Offer object (amount, status: pending/accepted/declined/countered) that, on accept, can pre-fill the buy/mark-sold flow would convert more listings and give the tenant real negotiation data.
Evidence
There is no offer table or offer route in the authoritative route list (no /market/{slug}/offer). MarketplaceController.php has no offer/counteroffer logic — grep for 'offer|counteroffer|best.?offer|bid' returns only feedback-loop variables and a ships_to validation string. show.php:645 explicitly punts negotiation to plain DM: 'For private negotiation, use Message seller'.
Suggested fix. Add a listing_offers table + /market/{slug}/offer (and /offer/{id}/respond) POST routes. Render an 'Make offer' button next to 'Message seller' for for_sale/trade types. On accept, link the offer to the resulting ListingSale so feedback and (eventual) checkout carry the agreed price.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus