
Putting Custom AI Agent Scope in the Contract: Do / Don’t / Human-Confirm Tables
The most common fight in custom AI Agent projects is not model scores—it is someone claiming “it should change prices” while the other side says “auto price changes were never in the contract.” If the SOW only says “provide smart customer support,” everyone is right and wrong at go-live. Write do / don’t / human-confirm tables into a contract annex and back them with eval samples. GeonAI delivers on acceptable boundaries; /agents are capability references only (not a public trial of 363+ presets). Email [email protected]. Artifacts: /blog/custom-agent-delivery-artifact-checklist. High-risk copy and review: /blog/financial-services-agent-compliance.
Boundaries are testable constraints—not disclaimer piles
For a given intent, the system must auto-act, refuse, or stop for human confirm. Stacking “results are for reference only” does not stop KPI fights over auto-resolve rate, and it does not stop costly mis-ops.
Table A — Do (automatic)
| Intent class | Allowed action | Evidence required |
|---|---|---|
| Policy FAQ | Retrieve and answer | Doc version / section required |
| Read-only order lookup | Call read-only API | Receipt code; refuse on failure |
| Draft outreach | Generate follow-up email draft | Do not auto-send by default |
| Status summary | Summarize read-only ticket/logistics fields | Traceable fields; never invent ETA |
Table A is not “can chat”—it is an evidence bar. FAQ without a version, or order status without a receipt code, should refuse or hand off—not guess. Tool allowlists: /blog/agent-function-call-mcp-integration.
Table B — Don’t (hard refuse)
- Invent stock, ETA, list prices, or legal conclusions
- Call arbitrary APIs / SQL outside the allowlist
- Show HQ-classified knowledge to unauthorized contractor accounts
- Claim “order placed” without a system receipt
- Bypass discount/refund approval to change price or pay out
On Table B hits, return a fixed refuse script + human handoff. Contract language should state: these refuses are not defects and must not be scored as auto-resolve failures.
Table C — Human confirm
| Action | Approver | Timeout policy |
|---|---|---|
| Price change / discount | Sales lead | Do not submit; open a ticket |
| Refund / goodwill credit | Support lead | Keep draft only |
| External lead-time commitment change | Planning / sales | Agent collects facts only |
| Bulk outreach send | Marketing owner | No send without confirm |
Table C is semi-auto: the Agent may draft, collect, and prefill, but must not write or send without a human confirm. Freeze timeout→ticket behavior. When read/write duties conflict, split a read-only Agent from a draft Agent—see /blog/multi-agent-vs-single-assistant.
Suggested contract structure
- Annex “Capability Boundary v1.0” (three tables) governs; changes require a written change order (editing a prompt is not a change).
- Table B fixed refuses are not defects and are not standalone SLA breaches.
- Unconfirmed Table C sends or writes do not count as auto-resolve wins; loss allocation follows the pre-change RACI.
- The eval set must cover each table with ≥N items (suggest ≥15 per table in pilot, ≥30 before production).
- Tie to acceptance metrics: wrong-promise, ACL-leak, and missed-handoff rates—see /blog/poc-to-production-agent-checklist.
Change control: do not “just prompt it to auto-discount”
If the business wants auto discounts, move the intent from Table C to Table A (or expand the allowlist), add eval cases and training, then release. Changing only the prompt leaves the contract and production behavior out of sync—and neither side survives an audit.
How to brief GeonAI
List the three mis-ops you fear most (wrong quotes, fake ETAs, bad refunds). We will draft the three tables and wire them into the eval set. Email [email protected], /pricing, or Live chat.
Frequently asked questions
Are three tables too rigid for “intelligence”?
Intelligence shows up as Table A coverage and Table C confirm speed; Table B is the safety floor. “Smart” without a floor is unauditable randomness.
How do boundaries relate to multi-agent design?
When read/write duties conflict, split a read-only Agent from a draft/write Agent and attach boundary rows per Agent—not one god-assistant.
What if the customer refuses boundary tables?
Narrow them to a pilot scope, or increase shared-risk / liability caps. Do not sign production acceptance with zero tables.
Are Table B refuses delivery defects?
Not if the contract says so. Define them as in-spec safety behavior with fixed copy and a handoff path.
How does this relate to the delivery artifact checklist?
The checklist requires a boundary-tables draft in kickoff week; this post explains how to make those tables executable annexes with eval coverage.
Who maintains table versions?
Business owner proposes changes; IT/delivery updates config and evals; compliance spot-checks. Version IDs ship with the release pack. Runtime mechanisms (KB, tools, handoff): /blog/custom-agent-more-than-a-prompt.