# Resale and peer-to-peer marketplaces

On a resale or classifieds platform, the scam usually starts as an ordinary
question and ends outside your app. The buyer asks to pay by transfer, sends a
screenshot of a payment that never arrived, or moves the seller to a chat app
where your buyer protection does not reach. Filters that look at one message
catch the last step, if that. SigWise scores the **user**, over their messages
and actions, so a pattern is visible as it forms.

## What to send

- **Messages** between buyers and sellers, with the listing in `metadata`.
- **Actions**: account created, listing created, order placed, order cancelled,
  refund requested, item reported, payout changed.
- **Context** in `metadata`: account age, number of completed sales, price,
  category, country.

```json
POST /v1/objects/user-77/events
{
  "object_type": "user",
  "events": [
    { "type": "event", "name": "account.created", "metadata": { "account_age_days": 2 } },
    { "type": "message", "content": "Is it still available? I can pay now.", "metadata": { "listing": "bike-221", "price": 450 } },
    { "type": "message", "content": "I paid by bank transfer, here is the screenshot. Please post it today, my courier is waiting." },
    { "type": "message", "content": "It says pending because of the weekend. Can we move to WhatsApp so I can send the receipt?" }
  ]
}
```

The conversation above is invented for this page.

## The signals

Four questions cover most of the loss on these platforms. Write each with the
evidence you would look for.

```json
PUT /v1/signals/pushes_off_platform
{
  "type": "noul",
  "instructions": "Is this user trying to move the conversation or the payment outside the platform?",
  "criteria": {
    "true": "asks to continue on WhatsApp, Telegram, email or by phone, or to pay by bank transfer, a payment app or gift cards instead of the platform's checkout",
    "false": "keeps the conversation and the payment inside the platform"
  }
}
```

```json
PUT /v1/signals/fake_payment_proof
{
  "type": "noul",
  "instructions": "Is this buyer claiming to have paid and pressing the seller to ship before the money has cleared in the seller's account?",
  "criteria": {
    "true": "sends or describes a payment screenshot or confirmation, says the payment is pending, and presses to ship, hand over or release the item quickly",
    "false": "pays through the platform, or waits for funds to clear"
  }
}
```

`sleeper_account` (a `noul`): a user whose recent behaviour breaks sharply from
a record of small, clean sales, such as a new high-value listing, a payout
detail change and requests to leave the platform. `refund_abuse` (a `noul`): a
buyer who repeatedly claims "not as described" after delivery. This one works
mainly from events rather than messages, so send refund requests and outcomes
as events.

## Act on it

- **Warn the other party in the app** when `pushes_off_platform` is high, with a
  message such as "Payments outside the app are not protected." This is cheaper
  than blocking, and legitimate users learn from it too.
- **Hold shipping or payout** when `fake_payment_proof` is high, until the
  payment is confirmed in the seller's account. Use `"wait": true` on the
  buyer's message to get the verdict before the seller sees it.
- **Review sleeper accounts** through a [rule](https://sigwise.ai/docs/guides/rules.md) to Slack, rather
  than acting on the score alone.

Start in alert-only mode and review what it flags before you enforce anything.
See [Test SigWise on your own data](https://sigwise.ai/docs/guides/evaluating.md).

## Judge fairly

Sellers who have completed hundreds of sales also ask to move to a chat app
once, usually to send photos. The history is what separates them from a new
account that does the same. Send completed sales and account age as events so
every message is judged in that context, and review the borderline band by
hand. See [User trust scores](https://sigwise.ai/docs/use-cases/user-trust-scores.md).
