Here is the uncomfortable truth about verification fraud: nothing observable at send time separates a fraud farm from a real signup. Both request a code, to a well-formed number, from a plausible address, at a plausible rate. Every send-time signal is either forgeable or shared with legitimate traffic.
So how do you tell them apart?
The asymmetry that gives it away
The difference appears afterwards, and only afterwards: a real user types the code in. A farm never does — it was never trying to receive anything, only to make the message get sent.
That single fact is the most valuable signal in the entire system. POST /v1/confirm is what turns it into something usable: you tell us when a code was actually entered, and we learn which networks convert and which never do.
- Real traffic sits far above any reasonable floor — people who ask for a code overwhelmingly go on to type it in.
- A network that has requested forty codes and completed none is not a population of people having a bad day.
Why it can't be inferred
The confirmation cannot be reconstructed from the send path, because the send path genuinely does not know. It has to be volunteered. Skip the call and the shape and velocity layers still protect you — but the reputation layer stays blind.
Why it is the moat
Anyone can count sends per address in an afternoon. Nobody can learn which networks never convert from their own traffic alone, because a farm spreads across enough victims that no single one sees a pattern. Only the pooled view does.
That is the part a single tenant cannot build for themselves — and the reason a shared confirmation loop, not a clever rule, is what actually ends the attack.