Decisions about a text
in a tenth of a second
Clef answers typed questions about a text — yes or no with a probability, one option out of several, a point on a scale — and generates nothing else. Change a sentence, and the answer changes while you are still typing.
An open model by Cloudflare (Apache-2.0), served by Heabsy in the European Economic Area.
What does Clef answer while you type?
Pick one of five scenarios, then change the text on the left. Each pause in typing sends the text and the questions to Clef; the answers on the right update in about a tenth of a second. The questions can be edited, and the panel at the bottom shows the same request as curl.
Scenarios are in English, where Clef is strongest.
Clef's answers
What does the customer want?
pick onerefund—cancel—bug—how_to—sales—Is the customer frustrated?
yes or no—noyesHow soon should a person reply?
scale · 4—Within a weekIn two daysTodayWithin the hour
›Call it from your code
curl https://api.heabsy.com/v1/systemone \
-H "Authorization: Bearer $HEABSY_API_KEY" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{
"model": "clef",
"state": "Subject: Charged twice this month\n\nHi,\n\nI was billed twice for my October plan: €49 on the 1st and €49 again on the 2nd. Please refund the duplicate charge.\n\nThis is the second time this has happened and I'm starting to lose patience.\n\nMarta",
"questions": {
"intent": {
"type": "choice",
"instructions": "What does the customer want?",
"criteria": {
"refund": "Money back for a charge",
"cancel": "Stop or downgrade the plan",
"bug": "Report something broken",
"how_to": "Ask how to do something",
"sales": "Buy more or upgrade"
}
},
"upset": {
"type": "noul",
"instructions": "Is the customer frustrated?"
},
"reply_by": {
"type": "score",
"instructions": "How soon should a person reply?",
"criteria": [
"Within a week",
"In two days",
"Today",
"Within the hour"
]
}
}
}
JSON—
Three kinds of question
A request carries the text (or a JSON state) and any number of named questions. Each question has one of three types, and each answer comes back as probabilities.
Yes or no
noulOne probability that the statement holds: is the customer annoyed, is this a phishing attempt, is the clause one-sided.
One of several
choiceA probability for every option you name, summing to one: which team gets the ticket, which tool the agent calls next.
A point on a scale
scoreOrdered options with an expected value: how urgent, how risky, how far a draft is from your standard.
Where does a decision model fit?
Wherever a system has to decide something about a text many times a day and a person should only see the unclear cases. The five scenarios in the demo:
Support triage
Route the message, rate urgency and spot the customer who is about to cancel — before anyone reads it.
Phishing screening
Score an email for impersonation, a lookalike link and pressure to act now, and hold it back above your threshold.
Contract clauses
Flag a one-sided liability cap or an automatic renewal in an incoming clause, with a probability you can set a rule on.
The agent's next tool
Give the agent's state as JSON and ask which tool comes next; when the state changes, the answer changes with it.
Role-play director
Check whether a reply writes the user's lines for them — the guard that keeps an interactive story on track.
Why not just ask a chat model?
Probabilities, not prose
Every allowed option gets a probability from a single forward pass. There is no generated text to parse and no format to break.
You set the threshold
Act automatically above 0.9, send to a person below it. The probability is the setting, not a guess hidden in a sentence.
Fast enough for every keystroke
Around a tenth of a second per answer in the demo, so it fits inside a form, a queue or an agent loop.
Billed on input only
$0.20 per million input tokens. A decision produces no output tokens, so there is nothing else to pay for.
Compatible with Jev and SystemOne
Same request and response format: switching is a change of the model name and the address.
One request, one answer per question
POST /v1/systemone with the model name clef. The answer holds, for each question, the chosen option, its confidence and the probabilities of all options, plus the number of input tokens. Our API accepts text and JSON; images and video, which the open model also reads, are not enabled yet.
curl https://api.heabsy.com/v1/systemone \
-H "Authorization: Bearer $HEABSY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "clef",
"state": "Our checkout started returning errors and orders are blocked.",
"questions": {
"department": { "type": "choice",
"instructions": "Which team should handle the message?",
"criteria": { "billing": "Payments or invoices", "technical": "Bugs or outages" } },
"urgency": { "type": "score", "criteria": ["Can wait", "This week", "Today"] },
"outage": { "type": "noul", "instructions": "Is a service down?" }
}
}'Questions about Clef
What is Clef?+
How fast does Clef answer?+
What does Clef cost?+
Is the text I send to Clef stored?+
How do I get API access to Clef?+
Can Clef run on our own servers?+
Try Clef on your own decisions
Tell us which decision you want to automate and how often it comes up. We switch Clef on for your key and help you set the first thresholds.