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.

Simulated • No API key required

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.

Customer: My flight was canceled. Can I get a refund and rebook for tomorrow?
Yes — you can receive a full refund and rebook for tomorrow at no additional cost. You can do this anytime in the app.
Raw score (p_raw)
0.86
Decision threshold (p*)
0.70
Automate when p_true ≥ p* and uncertainty ≤ 0.20.
Feedback examples
30
Slide to see “learning” effect.
Request
http
POST /decide
{
  "score": 0.86
}
Response
Before feedback
json
{
  "decision_id": 123,
  "prob_est": 0.80,
  "uncertainty": 0.18,
  "decision": true
}
AUTOMATE
After 30 feedback examples
json
{
  "decision_id": 123,
  "prob_est": 0.84,
  "uncertainty": 0.11,
  "decision": true
}
AUTOMATE
Why: Calibration improves confidence in automation while keeping uncertainty bounded.
Want real responses instead? Use the API quickstart in API & SDKs.
Copy/paste a quick /decide call (Python or cURL), then send outcomes to /feedback.
Python
python
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
bash
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 }
  }'
json
{
  "decision_id": 123,
  "prob_est": 0.62,
  "uncertainty": 0.08,
  "decision": false
}
Send feedback
Use decision_id from /decide and send the outcome back to improve calibration over time.
bash
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
  }'
What you get back
Calibrated probability (prob_est), uncertainty, and a boolean decision flag.
json
{
  "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.

1) Reroute to a stronger LLM

Use prob_est + uncertainty to decide when to fall back from a fast/cheap model to a stronger one.

python
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)
2) Gate an agent action

Before an agent triggers a side effect (refund, email, purchase), require calibrated confidence above your safety threshold.

python
rc = rc_decide(action_confidence)

if rc["decision"]:
    perform_action()
else:
    reprompt_with_constraints()
    # or: request_human_review()
3) KYC / compliance triage

Route borderline cases to stricter checks or human compliance when uncertainty is high — while approving clearly safe cases.

python
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()