← Back to the pile

How Jevilize works

149 things lie on the floor. You describe some of them in plain words; Jev, a small classifier from typesafe.ai, says how well each one fits, and the ones that fit are pulled up by a magnet.

  1. You type. After you pause for 220 ms, the text is sent to this app's own server. The browser never sees the API key.
  2. One question per thing. The server builds one request with 149 yes/no questions, one per thing: "Object: scarf. Does it match '…'?". Jev answers them all in a single call, usually in under half a second.
  3. Probabilities, not labels. Jev gives each question a probability of yes. A thing at 75% or more is pulled up; the rest fall. Adding "in winter" moves sunglasses from about 100% to about 70%, so they drop.
  4. The magnet is a spring. Each match gets a slot in rows under the text box. Every physics step its velocity is nudged toward that slot and gravity is cancelled. A higher probability pulls harder. Matches still collide, so they jostle into place.
  5. Real bounding boxes. Every emoji image is cropped to its opaque pixels, and that rectangle, with rounded corners, is its body in Matter.js. A pencil is thin and a pizza slice is wide. Turn on Debug on the main page to see the outlines, scores and pull lines.

Try a description

What Jev reads for 🕶️ sunglasses

Pick a card below to see its question. The real request holds 149 of these.
{
  "state": "Sorting objects into the category: things you can wear in winter",
  "questions": {
    "i5": {
      "type": "choice",
      "instructions": "Object: sunglasses. Does it match \"things you can wear in winter\"?",
      "criteria": {
        "yes": "clearly and typically matches \"things you can wear in winter\"",
        "no": "does not match \"things you can wear in winter\", or only in unusual edge cases"
      }
    }
  }
}

The things

The name is the only thing Jev knows about each one. The picture is for you. Pictures are Microsoft's Fluent Emoji 3D.