Available · v1
Policy Evaluation
Send a policy in plain language and a request with its facts. Get back a decision, a suggested action, and the exact rules that drove it, quoted from your policy.
- Evaluates only the policy you supply
- Quotes rules word for word, so every result is traceable
- Approvals, exceptions, and conflicts go to a person
- Missing facts are reported, never assumed
Request body
{
"policy": {
"id": "refund-policy",
"version": "1.0",
"text": "Refund requests are permitted within 30 days of delivery. Requests after 30 days require manager approval."
},
"request": {
"description": "Customer requests a refund",
"facts": {
"days_since_delivery": 45
}
}
}Response · 200 OK
{
"request_id": "req_9rTk4MvWq1BzLs6D",
"decision": "requires_review",
"suggested_action": "request_approval",
"requirements": [
{
"rule": "Requests after 30 days require manager approval.",
"status": "requires_review"
}
],
"missing_information": [],
"policy": {
"id": "refund-policy",
"version": "1.0"
}
}The problem
Policies are written for people, not code
Refund rules, expense limits, warranty terms, and approval procedures live in plain language. Encoding each one as custom logic is slow and brittle, and the documents change.
Use cases
Where teams use it
- Refund eligibility
- Expense reimbursement
- Warranty pre-screening
- Internal approval rules
- Customer service procedures
Limitations
- Advisory only; not legal advice or a compliance certification.
- Up to 40 rules per request; split longer policies.
- Put exact numbers in request.facts for the most reliable threshold checks.
Integrate
One HTTP call
const response = await fetch("https://kovca.io/api/v1/policy/evaluate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.KOVCA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"policy": {
"id": "refund-policy",
"version": "1.0",
"text": "Refund requests are permitted within 30 days of delivery. Requests after 30 days require manager approval."
},
"request": {
"description": "Customer requests a refund",
"facts": {
"days_since_delivery": 45
}
}
}),
});
if (!response.ok) {
const { error, request_id } = await response.json();
throw new Error(`${error.code}: ${error.message} (${request_id})`);
}
const { decision, suggested_action, requirements, missing_information } = await response.json();Related APIs
- Data Quality Intelligence
Find missing values, contradictions, and semantic inconsistencies in structured business records.
- Scope Intelligence
Check whether a requested change is within an agreed statement of work, excluded, or needs a change request.
- Content Intelligence
Evaluate user-generated content against your platform rules and get a structured moderation recommendation.