Fraud detection API

Two models have to agree
before we block anything.

Wilma reads an SMS and returns one of three answers: block, review, or pass. Built for Nigerian banks and fintechs, where wrongly blocking a customer's OTP costs more than missing a scam.

Test a message Read the API reference

Try it

Paste a message

Nothing you type here is stored. Try one of the examples if you would rather not think of one.

Press Cmd or Ctrl and Enter to submit.


How it decides

Three answers, not two

Block

Both models flag it. This is the high precision path. On our Nigerian test set it produced two false alarms in forty messages.

Review

The models disagree. Instead of guessing, the message goes to a human queue. This is where most real fraud in our testing was caught.

Pass

Neither model sees fraud. Deliver normally.

The two models were trained on different data and fail on different messages. One knows long form advance fee letters and Nigerian prize language. The other knows short credential harvesting. Between them they flagged every scam in our Nigerian test set. Where they disagree, a person decides rather than a probability.


Evidence

Measured, including where it fails

Evaluated September 2026. The Nigerian set is 40 real-world messages.
TestWhat it measuresResult
Held out test setData drawn like the training data98.1%
Nigerian SMS setReal Nigerian scams and real bank alerts80.0%
Scams flaggedRecall across both models on that set20 of 20
Length experimentOne scam written short, medium, long75 / 88 / 88%

The number we do not lead with.

An earlier version scored 99.24% on public corpora and 80% on Nigerian SMS. Written short, it caught zero scams out of eight. It had learned the shape of long American email rather than fraud itself.

Retraining on short message data fixed that. The honest remaining weakness is false alarms on ordinary transactional messages, which is what our current data collection is for. We would rather tell you this than have you discover it in production.


Developers

One POST, JSON in, verdict out

curl -X POST https://winifred12-wilma.hf.space/verdict \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"text": "Your OTP is 483920. Do not share it with anyone."}'

Full interactive reference at /docs. Rate limits, usage metering and batch classification are all documented there. Message content is never stored. We keep an API key id, the endpoint called, a message count and a timestamp, and nothing else.


Questions

What people ask first

How accurate is it, really?

80% on our 40-message Nigerian evaluation set, and 98.1% on a held out test set drawn from the same distribution as the training data. The second number is the less meaningful one and we say so. The evaluation set is small, so treat every figure here as directional until we publish results on several hundred messages.

What happens when it is wrong?

Two ways. A missed scam reaches the customer, which is the failure every fraud system has. A false alarm blocks something legitimate, which for a bank is usually worse, because a customer who cannot receive an OTP cannot transact. That is why blocking requires both models to agree and everything uncertain becomes a review rather than a block.

What do you do with our customers' messages?

Nothing. Message text is processed in memory to produce a verdict and is never written to storage. What we record is the API key id, the endpoint, a message count and a timestamp, so that usage can be billed. See the privacy policy.

What does it cost?

Pricing is not published yet. Wilma is in pilot and we are working with a small number of Nigerian fintechs at no cost while the Nigerian evaluation set grows. Get in touch and we will be straight with you about what stage it is at.

How long does integration take?

One HTTP POST with a bearer token. A developer can have it screening messages in an afternoon. Batch classification takes up to 50 messages per request.

Who built this?

Wilma is built in Lagos. The models, the evaluation method and the API are all original work, and the evaluation notes including the failures are part of the repository rather than hidden.


Next step

Run it against your own messages

The most useful thing you can do is send us fifty of your own SMS, scam and legitimate, and see how Wilma scores them. That tells you more than any number on this page. We will send back the results either way, including the ones it gets wrong.

Request pilot access

Or reply with a message you want tested and we will run it for you.