Docs
Reality Signal turns a model's raw confidence into true probability + uncertainty so you can build reliable routing: automate, reroute to a stronger model, or escalate — based on calibrated risk.
Quickstart
Call /decide to calibrate a score. Send /feedback to improve calibration over time.
Try it now
See how calibrated probability + uncertainty can change with feedback over time. This is a UX demo (not the exact algorithm), designed to illustrate the calibrate → decide → learn loop.
POST /decide
{
"score": 0.86
}{
"decision_id": 123,
"prob_est": 0.80,
"uncertainty": 0.18,
"decision": true
}{
"decision_id": 123,
"prob_est": 0.84,
"uncertainty": 0.11,
"decision": true
}/decide call (Python or cURL), then send outcomes to /feedback.import requests
API_URL = "https://onprem-api-sowl.jollysand-1b9ed42e.swedencentral.azurecontainerapps.io"
HEADERS = {"x-api-key": "YOUR_API_KEY"}
payload = { "features": { "score": 0.82 } }
res = requests.post(f"{API_URL}/decide", json=payload, headers=HEADERS)
res.raise_for_status()
data = res.json()
print(data) # decision_id, prob_est, uncertainty, decision
curl -X POST https://onprem-api-sowl.jollysand-1b9ed42e.swedencentral.azurecontainerapps.io/decide -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"features": { "score": 0.82 }
}'{
"decision_id": 123,
"prob_est": 0.62,
"uncertainty": 0.08,
"decision": false
}decision_id from /decide and send the outcome back to improve calibration over time.curl -X POST https://onprem-api-sowl.jollysand-1b9ed42e.swedencentral.azurecontainerapps.io/feedback -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"decision_id": 123,
"feedback": 1,
"force_retrain": false
}'prob_est), uncertainty, and a boolean decision flag.{
"decision_id": 123,
"prob_est": 0.62,
"uncertainty": 0.08,
"decision": false
}Real‑world patterns
Three common ways teams use Reality Signal in production decision workflows.
Use prob_est + uncertainty to decide when to fall back from a fast/cheap model to a stronger one.
rc = rc_decide(score)
if rc["prob_est"] < 0.70 or rc["uncertainty"] > 0.15:
answer = strong_model(prompt) # reroute
else:
answer = base_model(prompt)Before an agent triggers a side effect (refund, email, purchase), require calibrated confidence above your safety threshold.
rc = rc_decide(action_confidence)
if rc["decision"]:
perform_action()
else:
reprompt_with_constraints()
# or: request_human_review()Route borderline cases to stricter checks or human compliance when uncertainty is high — while approving clearly safe cases.
rc = rc_decide(kyc_score)
if rc["prob_est"] >= 0.90 and rc["uncertainty"] <= 0.10:
approve()
elif rc["uncertainty"] > 0.20:
send_to_compliance()
else:
run_additional_checks()