Evally
Trust & safety

Bot intent classifier

Read a client's recent requests and name what it's after and how it crawls.

Hand Jev the last few dozen paths a client requested. It names the target (prices, articles, accounts, stock, search, media, your API) and the pattern (walking pagination, enumerating IDs, following the sitemap, hammering search, trying logins), so you can block, slow down or allow by intent instead of by IP address.

Try it live

Real calls to Jev. Pick an example or paste your own.

Examples
218
41
No verdict yet

Pick an example or paste your own input, then run it.

Under the hood

Every question and rule, in the open. Fork it to change any of them.

What it asks

Reads requests and client, then asks 4 questions in one call.

  1. Q1AfterPick one

    What is the client mostly after, judging by the requests?

    PricesContentAccountsStockSearchMediaAPIUnclear
  2. Q2PatternPick one

    How do the requests move through the site?

    Walks pagesEnumerates IDsFull crawlSearch sweepLogin attemptsBrowsingOther
  3. Q3AutomatedYes / no

    Do the requests, together with what's known about the client, look automated rather than a person in a browser (no page assets, a machine-regular order, or far more pages than a person reads)?

  4. Q4AggressiveYes / no

    Do the requests look like an attempt to copy the site's data wholesale, or to get into accounts?

How it decides

Rules run in code, top to bottom. The first one that matches gives the verdict.

  1. 1
    If Pattern is Login attemptsBlock
  2. 2
    If Automated ≥ 0.7 and Aggressive ≥ 0.7Block
  3. 3
    If Automated ≥ 0.6Slow down
  4. ·
    DefaultAllow

Call it from your code

Every template runs as-is with an API key, no setup: POST /api/v1/judges/bot-intent-classifier/run.

curl -X POST https://tryevally.com/api/v1/judges/bot-intent-classifier/run \  -H "Authorization: Bearer $EVALLY_API_KEY" \  -H "Content-Type: application/json" \  -d '{  "input": {    "requests": "GET /products?page=1\nGET /products?page=2\nGET /products?page=3\nGET /products?page=4\nGET /products/10431\nGET /products/10432\nGET /products/10433\nGET /api/price?sku=10431\nGET /api/price?sku=10432\nGET /api/price?sku=10433",    "client": "python-requests/2.32, data-center network"  }}'

Seen in the wild

Community builds on Jev that use this pattern. Not affiliated with Evally.

More in Trust & safety