Safe database reads for customer-support agents
Give a support copilot read access to orders, tickets, and accounts — with PII masked and destructive operations off the table by construction.
The problem
A support agent needs to look up a customer’s orders and account state, but you can’t hand an LLM raw SQL against production. It might surface passwords, run an expensive scan, or be talked into a write it should never make.
With OrmAI
OrmAI exposes a small typed toolset (db.query, db.get, db.aggregate) restricted to read models. Sensitive fields are masked or denied, row limits cap scans, and writes are simply not in the tool surface for this policy.
The primitives doing the work
Field-level redaction
Passwords, secrets, and tokens are denied; email and phone are masked in every response.
Query budgets
Row caps and statement timeouts keep a chatty agent from melting the database.
Read-only surface
Only query/get/aggregate are mounted — no create/update/delete exists to be misused.
The policy, in a few lines
policy = (
PolicyBuilder(DEFAULT_PROD)
.register_models([Order, Ticket, Account])
.deny_fields("*password*", "*secret*", "*token*")
.mask_fields(["email", "phone"])
.max_rows(200)
.build() # writes intentionally not enabled Keep reading
Other use cases