Policies

Business guardrails that override all other suggestions. Define what your AI assistant should never do.

Policies Override Everything
Policies are the highest priority in the knowledge base. They override patterns, templates, rules, and even direct requests. Use them for critical business rules.

Purpose

Policies define hard rules for your AI assistant:

  • What it should never do (hard blocks)
  • What requires explicit approval (require approval)
  • What it should warn about but can proceed (warnings)

Policy Structure

{
"id": "no-refund-promise",
"name": "No Unauthorized Refunds",
"category": "financial",
"severity": "hard_block",
"trigger": "refund|money back|reimburse",
"action": "Never promise refunds without explicit user approval",
"response": "I'll need to check with the team on refund eligibility and get back to you.",
"enabled": true
}

Field Reference

FieldDescription
idUnique identifier
nameHuman-readable name
categorysecurity, financial, communication, operations
severityhard_block, require_approval, warn
triggerKeywords or patterns that activate this policy
actionWhat the AI should do when triggered
responseWhat to say to the requester (if applicable)
enabledWhether this policy is active

Severity Levels

LevelMeaningAI Behavior
hard_blockNever do thisRefuse, explain policy, cannot override
require_approvalNeeds human approvalDraft response, wait for user confirmation
warnCaution, but can proceedAlert user, proceed if they confirm

Categories

  • security — Data protection, access control, confidentiality
  • financial — Refunds, discounts, pricing, payment terms
  • communication — What can be said, tone requirements, approval needs
  • operations — Process rules, handoffs, escalation

Example Policies

Financial: No Unauthorized Refunds

{
"id": "no-refund-promise",
"name": "No Unauthorized Refunds",
"category": "financial",
"severity": "hard_block",
"trigger": "refund|money back|reimburse",
"action": "Never promise refunds without explicit user approval",
"response": "I'll need to check with the team on refund eligibility and get back to you.",
"enabled": true
}

Financial: Discount Approval

{
"id": "no-discount-promise",
"name": "No Unauthorized Discounts",
"category": "financial",
"severity": "require_approval",
"trigger": "discount|deal|lower price|coupon",
"action": "Draft response, flag for user to decide discount",
"response": "Let me check what options might be available for you.",
"enabled": true
}

Security: No Confidential Info

{
"id": "no-confidential-share",
"name": "No Confidential Info",
"category": "security",
"severity": "hard_block",
"trigger": "other customer|competitor|internal|confidential",
"action": "Never share other customer info, internal data, or competitor details",
"response": "I'm not able to share that information.",
"enabled": true
}

Operations: Escalate Threats

{
"id": "escalate-threats",
"name": "Escalate Threats",
"category": "operations",
"severity": "require_approval",
"trigger": "lawyer|sue|legal action|report you|BBB|attorney general",
"action": "Flag immediately for user attention, do not respond without approval",
"response": null,
"enabled": true
}

Priority Order

When the AI handles an email, it checks knowledge in this order:

  1. Policies — Hard rules, override everything
  2. Contact preferences — Person-specific settings
  3. Account rules — Account defaults
  4. Blitz preferences — Global user defaults
  5. Templates/patterns — Suggestions only

When to Add Policies

Add a policy when:

  • User corrects the same mistake twice
  • User says "never do X" or "always do Y"
  • Sensitive pattern emerges (financial, legal, confidential)
  • User expresses concern about AI autonomy in an area
Start Conservative
When in doubt, use require_approval instead of hard_block. You can always tighten policies later.

File Location

~/.config/pontius/knowledge/policies/policies.json