Industries
A hospital pins anything with patient data to on-prem. A bank caps cost per request and keeps EU traffic in the EU. A law firm sends doubtful answers to counsel. A support desk escalates anger to a person. Each starts from a rules.yaml you can read in a minute and change in a pull request.
targets:
- id: llm-small # cheap, fast, fine for FAQs and bulk copy
kind: llm
cost_per_1k: 0.0002
- id: llm-mid
kind: llm
cost_per_1k: 0.002
- id: llm-frontier # the best money can buy, for what deserves it
kind: llm
cost_per_1k: 0.02
- id: llm-onprem # inside your boundary; PII and PHI stop here
kind: llm
data_boundary: on_prem
- id: coding-agent
kind: agent
capabilities: [coding]
- id: human-escalation # a person, reached through the human queue
kind: human0 industries
Each line describes the behaviour; the file beside it is the whole of the configuration that produces it. Nothing is hidden in code.
rules:
- name: faqs-on-the-small-model
when:
domains: [customer_support]
max_complexity: 0.35
prefer: [llm-small]
weight: 0.8
- name: upset-or-complex-escalates
when:
domains: [customer_support]
actions: [escalate]
prefer: [llm-frontier, human-escalation]
pin: trueThe escalate action comes from the request itself - a complaint, a chargeback, a ticket that bounced twice.
rules:
- name: real-code-to-the-coding-agent
when:
domains: [coding]
min_complexity: 0.45
prefer: [coding-agent]
weight: 0.7
- name: prose-never-pays-coding-prices
when:
domains: [general_chat, marketing, hr]
avoid: [coding-agent]
weight: 0.6Complexity is a signal, so a one-line regex question never wakes the coding agent.
rules:
- name: account-data-stays-onprem
when:
domains: [finance]
contains_pii: true
prefer: [llm-onprem]
pin: true
- name: statements-are-extraction
when:
domains: [finance]
actions: [extract]
prefer: [llm-mid]
weight: 0.6pin restricts the candidates instead of nudging them; the hash-chained audit records why.
rules:
- name: phi-stays-onprem
when:
contains_pii: true
prefer: [llm-onprem]
avoid: [llm-frontier, llm-mid]
weight: 1.0
- name: clinical-review
when:
domains: [medical]
min_complexity: 0.6
prefer: [clinician-review]
pin: truePolicies run before scoring, so no objective weight can trade the boundary away.
rules:
- name: contracts-need-context
when:
domains: [legal]
min_complexity: 0.5
prefer: [llm-frontier]
weight: 0.8
- name: anything-doubtful-to-counsel
when:
domains: [legal]
actions: [escalate]
prefer: [counsel-review]
pin: true
# router settings:
# min_confidence: 0.55
# fallback_target: counsel-reviewThe floor is one router setting: below min_confidence the request goes to fallback_target instead.
rules:
- name: bulk-copy-on-cheap-models
when:
domains: [marketing]
actions: [generation]
max_complexity: 0.5
prefer: [llm-small, llm-mid]
weight: 0.8
- name: brand-critical-gets-the-best
when:
domains: [marketing]
context: { brand_critical: true }
prefer: [llm-frontier]
pin: trueBudgets are declared per target in the catalogue; context keys let the caller flag what matters.
rules:
- name: faqs-on-the-small-model
when:
domains: [customer_support]
max_complexity: 0.35
prefer: [llm-small]
weight: 0.8
- name: upset-or-complex-escalates
when:
domains: [customer_support]
actions: [escalate]
prefer: [llm-frontier, human-escalation]
pin: trueThe escalate action comes from the request itself - a complaint, a chargeback, a ticket that bounced twice.
Why a file, not a form
Your AI policy becomes a document your compliance team can read, your platform team can review and your auditor can quote.
The free plan runs the same rules engine as the enterprise edition. Paste the file into your workspace policy or run it in the Python package on your own machine.
Free plan, no card. Fifteen thousand decisions a month with the full trace.