Use case guide
KYC / compliance triage
Approve obvious passes automatically, route borderline cases to stricter checks, and send high‑uncertainty decisions to compliance review.
Overview
Problem
Compliance pipelines often suffer hidden costs: either you over‑escalate (too many manual reviews) or you under‑escalate (miss risky cases).
Reality Signal
Convert a score into prob_est + uncertainty and a boolean decision.
Policy
Auto‑pass when prob_est is high and uncertainty is low. If uncertainty is high, escalate to compliance. Otherwise run additional checks or reroute to a stronger model.
Architecture
- Base model produces a score for the decision you care about.
- Send the score to
/decide. - Use
prob_est+uncertaintyto route safely. - When the true outcome is known, call
/feedbackto improve calibration.
Routing actions: automate, reroute, reprompt, or escalate.
1) Decide + triage
Call /decide with your model’s score. Route based on calibrated probability and uncertainty.
Request
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 }
}'Response
json
{
"decision_id": 123,
"prob_est": 0.62,
"uncertainty": 0.08,
"decision": false
}Use
prob_est + uncertainty as routing signals.2) Feedback from final decision
When ground truth is known, send /feedback with the decision_id so calibration improves over time.
Feedback (cURL)
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
}'Reference implementation
Python
python
import requests
API_URL = "https://onprem-api-sowl.jollysand-1b9ed42e.swedencentral.azurecontainerapps.io"
HEADERS = {"x-api-key": "YOUR_API_KEY"}
def rc_decide(score: float):
r = requests.post(f"{API_URL}/decide", json={"features": {"score": score}, headers=HEADERS)
r.raise_for_status()
return r.json()
kyc_score = 0.86
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_review()
else:
run_additional_checks()Policy knobs: raise the pass threshold for stricter regimes; lower it for faster onboarding with more downstream checks.