← 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.
- 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.
- 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.
- 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.
- 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.
- 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"
}
}
}
}