TOUCHSTONE DATA
← Back to demo 04

Artifact 04 of 8 · Approved by: Joshua Garza, Touchstone Data's owner, November 2, 2026, after a separate reviewer agent's check

The client, its people and its town are fictional. This is a sample, not a case study.

ADR-001: Approved policy versions, human gates, tool allowlist and fixed disclosure for the support assistant

The client, its people and its town are fictional. This is a sample, not a case study.

Status: Accepted by Bizet & Brahms Home Goods on 2026-11-02.

Accepted by the sign-off record deliverables/06-sign-off.md on 2026-11-02 (a fictional record).

Prepared for Bizet & Brahms Home Goods. Recorded by Joshua Garza, Touchstone Data (ENG-D004, artifact 4). Approved by the owner, 2026-11-02.

This record is a professional opinion based on the evidence cited. It is not legal advice and carries no warranty of regulatory compliance; legal points are recorded as questions for Bizet & Brahms Home Goods' counsel.

SystemAI-001, the proposed first-line customer support assistant (deliverables/02-risk-classification.md). Not built (scope.md).
DecidersClara Schumann, VP of Customer Service, owner of the assistant (decides the refund limit value, the tool set at launch and the disclosure wording). Georges Bizet, COO, executive sponsor, who owns the budget. Fanny Mendelssohn, Data and AI Governance Lead, who owns the policy library and the risk register. Antonín Dvořák, Support team lead, who approves refunds above the agents' limit today and would be an approver at the refund gate. (stakeholders.md, interviews/2026-10-14-bizet-coo.md, interviews/2026-10-16-mendelssohn-governance-lead.md, interviews/2026-10-19-dvorak-support-team-lead.md)
ConsultedBizet & Brahms Home Goods' counsel (not named), on disclosure (Q-C1).
Recorded byJoshua Garza, Touchstone Data. Touchstone records the decision; it does not take it.
Builds ondeliverables/01-requirements.md (requirement IDs below), deliverables/02-risk-classification.md, deliverables/03-architecture.md (section numbers below), findings.yaml (F-001 to F-012).
Refund limitA parameter Bizet & Brahms Home Goods owns. Everywhere below it is written as $100 (proposed; the client's agent owner confirms).

Context

Clara Schumann's plan is a first-line assistant for website chat in six steps: disclose, verify, answer, act, flag, log. It would switch on "for all website chats on launch day, targeted before the holiday peak" (evidence/agent-proposal.md). Four parts of that plan force a decision before anything is built.

Read the full section

1. Where answers come from. The plan has the model answer "from our policies" by loading the help-center page and the wiki page into its instructions, and "says nothing about which source wins, about citing the source, or about what happens when no policy covers a question" (evidence/agent-proposal.md). The three sources in use give different return windows: help-center page 30 days, wiki page 45 days ("holiday extension", added November 2024, never removed), handbook PDF 14 days opened and 30 days unopened. "Nothing in any of them says which one governs. None has an effective date." (evidence/policy-sources.md). Agents already give customers all three: "Last month I saw chats where three agents told customers 30, 45 and 14 days for the same kind of return." (interviews/2026-10-19-dvorak-support-team-lead.md). Fanny Mendelssohn has drafted a policy record format (policy_id, version, owner, effective_date, status, approved_by), "but nothing has been entered and nobody has agreed who owns the returns policy" (interviews/2026-10-16-mendelssohn-governance-lead.md). Finding F-005 (high).

2. Refund limit and approval. The plan's issue_refund would "refund whatever the customer is entitled to under policy", and "The plan states no amount limit on issue_refund and no approval step for any action" (evidence/agent-proposal.md). Today, "Refunds up to $100 are at the agent's discretion. Larger refunds go to a team lead (Dvořák or the other shift's lead)", and refunds go through the payment provider by order ID (evidence/process-notes.md). Antonín Dvořák: "I approve refunds over $100. Nobody has asked me how that works with the bot." (interviews/2026-10-19-dvorak-support-team-lead.md). Clara Schumann: "The point is that it just sorts the refund out. Capping it at $100 defeats the purpose." (interviews/2026-10-15-schumann-vp-customer-service.md). Finding F-001 (high).

3. What the model can do. The plan gives the model five tools: lookup_order, create_return, issue_refund, update_address, handoff_to_human. Flagging rests on the model alone: "The model will recognise abusive or suspicious chats and hand them off." No other mechanism is described (evidence/agent-proposal.md). Customer text is untrusted: "Customers already try 'your colleague already approved my refund' or paste in text that looks like one of our emails. My people check the order notes before acting." (interviews/2026-10-19-dvorak-support-team-lead.md). Finding F-012 (high).

4. Disclosure. "The assistant introduces itself." Wording, placement and frequency: to be decided. Marketing has proposed the name "Rosie" (evidence/agent-proposal.md). Clara Schumann: "I don't want 'I am a bot' on every message; Rosie should feel like one of our people." (interviews/2026-10-15-schumann-vp-customer-service.md). Fanny Mendelssohn: "I don't know what disclosure we owe them. That's for counsel." (interviews/2026-10-16-mendelssohn-governance-lead.md). Bizet & Brahms Home Goods ships across the U.S. (the evidence names Maine and Utah) and to customers in the EU (evidence/process-notes.md). Finding F-008 (medium).

The two human gates this record covers use the names and IDs in the requirements and architecture:

  • Refund gate: G-2 "Refund above limit" (deliverables/01-requirements.md section 3; deliverables/03-architecture.md 3.5, "Refund gate"). Trigger: issue_refund amount above $100 (proposed; the client's agent owner confirms). Route: hold the refund; route to a team lead.
  • Policy gate: G-3 "Policy" (deliverables/01-requirements.md section 3), with the policy library's approval gate (deliverables/03-architecture.md 3.4, "Approval gate"). The approval gate is the human step: a record becomes approved only when it has an owner, a version, an approved_by and an effective date (PG-1, PG-2, PG-5). G-3 is where it bites in a chat: no approved record covers the question, or records conflict, so handoff_to_human, with no answer from general knowledge (FR-9, PG-8). The architecture's approval gate has no G-ID of its own; it is expressed by PG-1, PG-2 and PG-8 together with G-3.

Not decided here. The off switch and release gate (G-7, NFR-4, NFR-5; F-002, F-003), logging (NFR-2; F-011), retention (TR-1 to TR-5; F-009, F-010) and what customer data each turn sends (DH-3; F-004) are covered in deliverables/01-requirements.md and deliverables/03-architecture.md. This record refers to them only where a choice below depends on them.

Options considered

Cost below means the work and the operating load the option puts on Bizet & Brahms Home Goods. Where a finding gives an effort estimate it is quoted; those are Touchstone estimates for the client to confirm. No other cost figures are in evidence.

Read the full section

Part A: where policy answers come from

#OptionCostRiskWhat it rules out
A1The plan as written: load the help-center page and the wiki page into the model's instructions.Lowest; no policy work before launch.The two pages state 30 and 45 days and nothing says which wins (evidence/policy-sources.md); the assistant would quote and act on whichever it picks, in every website chat (F-005). No citation, so no answer can be traced to a source.Rules out showing which policy text an answer or a refund relied on (F-011); rules out one answer per question.
A2All three sources with a precedence rule (for example, "the help-center page wins"), loaded as they are.Low: one rule, no record entry.The rule is itself a policy decision with no owner or approver (PG-4, PG-5); it silently overrides the wiki's 45-day "holiday extension", whose status is unknown (to ask Schumann) (PG-7). The sources still have no version or effective date, so a later edit changes answers unnoticed.Rules out per-topic ownership and versioned answers; leaves the shared-inbox agents on different sources from the assistant.
A3Approved records only. One approved governing record per topic in Mendelssohn's format; only status approved with an arrived effective_date is released; every policy answer cites policy_id and version; no record or conflicting records go to G-3. (FR-8 to FR-11, PG-1 to PG-3, PG-8; architecture 3.4)Mendelssohn's team enters and approves records; F-005 estimates 1-2 weeks for returns and refunds first (estimate; the client confirms). Owners and approvers per topic are not agreed: unknown (to ask Mendelssohn) (PG-4, PG-5). Until a topic is approved, every question on it is handed off, so the shared inbox carries more chats at first.Answers are only as right as the approved records. Topics without a record hand off, which lowers what the assistant can resolve on day one (NFR-7, handle time, baseline and target unknown (to ask Bizet)).Rules out answers from the model's general knowledge and from unapproved or draft text (PG-2); rules out launching policy answers on a topic before its record is approved.
A4A3 plus a person reading each policy answer before it is sent.An agent's time on every policy answer; works against the handle-time goal ("Handle time is the number I care about", interviews/2026-10-14-bizet-coo.md).Lowest risk of a wrong term reaching a customer; the reviewer can still miss a wrong number.Rules out an unattended first line for policy questions.

Part B: the refund limit and the two gates

#OptionCostRiskWhat it rules out
B1The plan as written: no limit, no approval step.None.No ceiling on what one conversation can refund (F-001); a crafted chat could lead to refunds nobody approved (F-012). Departs from today's control, where refunds above $100 go to a team lead (evidence/process-notes.md).Rules out nothing; removes today's team-lead check for larger refunds.
B2Limit written into the model's instructions only.Low: a line of instructions.The limit is only as strong as the model's reading of untrusted chat text; "your colleague already approved my refund" and pasted text posing as company emails are already tried (interviews/2026-10-19-dvorak-support-team-lead.md; F-012, FR-17). No record of a gate decision.Rules out a limit that holds whatever the customer types; rules out testing gate routing as a system property (AT-4).
B3Code-enforced limit with a team-lead gate. The tool gateway reads the limit, $100 (proposed; the client's agent owner confirms), as a parameter. At or below it, the refund is issued through the payment provider by order ID; above it, G-2 holds the refund for a team lead (Dvořák or the other shift's lead). G-3 hands off policy questions with no approved record. (FR-14, G-2, G-3; architecture 3.3 to 3.5)Build work: F-001 estimates 1-2 weeks inside the assistant build (estimate; the client confirms). Team-lead time on every refund above the limit. How team-lead approval works with the assistant, where held refunds appear and what the customer is told meanwhile: unknown (to ask Dvořák) (G-2).A customer above the limit waits for a person; whether that wait is acceptable at the holiday peak: unknown (to ask Schumann). If the limit is set too low, the assistant resolves fewer refunds, the concern Schumann has raised.Rules out the assistant refunding above the limit on its own; rules out any chat message changing the limit or counting as approval.
B4B3, with a person approving every refund at first, inside the limit too, then widening on evidence. F-001 recommends this start: "Start with approval before each action, within the limit; widen autonomy only on evidence."Team-lead or agent time on every refund during the first period; length of that period: unknown (to ask Schumann).Lowest refund risk while the assistant is new; a person may approve by habit.Rules out the assistant "just sorting the refund out" (interviews/2026-10-15-schumann-vp-customer-service.md) until the first period ends.
B5B3 with a limit set above agents' current discretion, in line with Schumann's view that capping it at $100 "defeats the purpose".As B3.More refund value per conversation without a person; the assistant would hold more refund authority than an agent does today (evidence/process-notes.md).Rules out parity between the assistant's and the agents' refund authority. B3's mechanism allows this by changing the parameter; it is the value, not the design, that differs.

Part C: the tool allowlist

#OptionCostRiskWhat it rules out
C1The plan as written: five tools; when each may be used is left to the model's judgement, with verification and flagging stated as the model's job.Lowest.Untrusted chat text reaches a model that can refund, create returns and change addresses with no check outside the model (F-012). Nothing stops order data before verification except the model (FR-6).Rules out showing that verification, the flag block and the limit hold on hard cases (AT-2, AT-4 to AT-6).
C2Fixed allowlist of the five tools behind a tool gateway that enforces each tool's preconditions in code: lookup_order only after order number and email match (G-1, FR-12); create_return verified, not flagged, inside the approved returns window (FR-13); issue_refund verified, not flagged, entitlement from an approved record, then G-2 (FR-14); update_address verified, not flagged, order not yet packed (FR-15, G-4); handoff_to_human always (FR-16). Any other tool name is rejected. Once a chat is flagged, no action tool runs for the rest of it (FR-19, G-5). Nothing the customer types or pastes is authorization (FR-17). Every call and gate decision is logged (NFR-2). (Architecture 3.3)Build work in the gateway, inside the F-001 and F-012 estimates (1-2 weeks each; estimates, the client confirms). Open inputs: how the gateway learns an order is packed, unknown (to ask Schumann) (FR-15); whether lookup_order returns order notes, unknown (to ask Schumann) (FR-17); what counts as "suspicious", unknown (to ask Dvořák) (FR-20).The gateway's rules are only as good as the acceptance tests show (AT-2, AT-4 to AT-6). Whether create_return and update_address need approval beyond G-1, G-4 and G-5 is still open: unknown (to ask Schumann) (G-6).Rules out any tool outside the five, and any action the gateway's checks have not passed, whatever the model asks for.
C3Narrower first release: allow only lookup_order and handoff_to_human; add create_return, issue_refund and update_address later, each on test results and a period of action logs without incident (the widening F-012 recommends).Least build at launch; more chats to the shared inbox, since every return, refund and address change is handed off.Lowest action risk; the assistant answers and looks up but does not act.Rules out the assistant sorting out refunds at launch, which is Schumann's stated purpose.
C4Broad access: give the model general access to the order system and payment provider and rely on its instructions.Low to build.Widest effect of a crafted chat; card data handling depends on the model (DH-2).Rules out containment at the tool level; rules out DH-2 as a system property.

Part D: disclosure

#OptionCostRiskWhat it rules out
D1The model writes its own introduction each chat (the plan's "The assistant introduces itself").None beyond instructions.Wording varies by chat and can drift toward "feel like one of our people"; whether a given customer was told they were talking to an automated assistant can only be read chat by chat. What disclosure is owed is a question for counsel (Q-C1).Rules out one approved wording that counsel can check and the test set can match exactly.
D2Fixed disclosure text. The assistant service sends an approved, versioned text at the start of each chat (FR-1), before any model output; the model does not write or reword it. Wording, placement and frequency are set after counsel answers Q-C1 (FR-3).One approval step for the text; any wording change is a release. Wording, placement, frequency and adopted name (FR-2): unknown (to ask Schumann).If the approved text falls short of what counsel says is owed, every chat is short in the same way; the fix is one text change.Rules out model-written disclosure and per-chat variation; rules out personalising the introduction.
D3D2 plus a standing label in the chat window (placement rather than repetition).Depends on the website chat; whether it can show such a label: unknown (to ask Schumann).As D2. Meets Schumann's wish to avoid "'I am a bot' on every message" only if counsel finds that enough (Q-C1).As D2.
D4A disclosure on every message.Low.Counsel may not require it; Schumann does not want it (interviews/2026-10-15-schumann-vp-customer-service.md).Rules out the experience the owner wants.

Decision

Proposed, for the deciders above to accept or change: A3, B3, C2 and D2.

Read the full section
  • Answers come only from approved policy versions (A3). The assistant answers only from approved, effective records in the policy library, one governing record per topic, each answer citing policy_id and version; everything else goes to G-3 "Policy" and a person. This is the only option that settles the 30, 45 and 14-day conflict by an owner's decision rather than the model's choice (F-005).
  • Refund limit and the two gates (B3). issue_refund runs on its own only at or below $100 (proposed; the client's agent owner confirms), a parameter the tool gateway reads; above it, G-2 "Refund above limit" holds the refund for a team lead, as today. The policy library's approval gate admits a record only with an owner, version, approved_by and effective date, and G-3 hands off where no approved record covers the question. Both gates sit in code and in people, not in the model's instructions, so no chat message can move them (F-001, F-012). Whether to start with B4 (a person approves every refund at first) is for Clara Schumann to decide: unknown (to ask Schumann).
  • Tool allowlist (C2). The five tools in the plan, and no others, behind a gateway that checks verification, the flag, the policy record, the packed status and the limit before any tool runs. The allowlist is a list the gateway reads, so Bizet & Brahms Home Goods can switch action tools off for a pilot (C3) without rebuilding; whether to: unknown (to ask Schumann) (G-7, pilot scope).
  • Fixed disclosure text (D2). The disclosure is an approved, fixed text sent by the assistant service, not model output, so it can be checked by counsel, tested exactly and shown to have been sent. Its wording, placement and frequency wait for counsel's answer to Q-C1 and Clara Schumann's choice; this record decides the mechanism, not the words.

The value of the refund limit, the approvers, the policy owners and the disclosure wording belong to the client. This record proposes the mechanism they plug into.

Consequences

Easier

  • For any refund or disputed answer, Bizet & Brahms Home Goods can say which policy version the assistant relied on, what it did and who approved it, through the lineage log (NFR-2, PG-6; F-011).
  • The refund limit, the allowlist and the policy records change by the owner's decision, without changing the model's instructions.
  • Gate routing, blocked actions, invented terms and the disclosure text become testable against fixed targets before release (AT-1 to AT-6; G-7).
  • The assistant and the shared-inbox agents can work from the same approved records once they exist, which addresses the different windows agents quote today (interviews/2026-10-19-dvorak-support-team-lead.md).
Read the full section

Harder

  • Nothing about policy can be answered until Mendelssohn's records are entered and approved. Owners, approvers and effective dates per topic: unknown (to ask Mendelssohn) (PG-4, PG-5, PG-7). Until then G-3 sends those chats to the shared inbox.
  • Team leads take every refund above the limit. Dvořák has not been asked how that works with the assistant; the route is unknown (to ask Dvořák) (G-2).
  • The assistant resolves fewer refunds than Schumann's plan intends. This is in direct tension with "Capping it at $100 defeats the purpose" and needs her decision on the value.
  • The build carries a tool gateway and a policy release step the plan does not have (F-001 and F-012 estimate 1-2 weeks each inside the assistant build; estimates, the client confirms), against a launch date that is unknown (to ask Bizet) (NFR-8).
  • Disclosure wording cannot be finalised until counsel answers Q-C1.

Open inputs this decision depends on

InputRequirementWho
Refund limit value: $100 (proposed; the client's agent owner confirms)FR-14, G-2unknown (to ask Schumann)
Whether every refund needs approval at first (B4), and for how longF-001unknown (to ask Schumann)
How team-lead approval works with the assistantG-2unknown (to ask Dvořák)
Policy owner, approver and effective date per topicPG-4, PG-5, PG-7unknown (to ask Mendelssohn)
Whether the 45-day "holiday extension" still appliesPG-7unknown (to ask Schumann)
Whether create_return and update_address need approvalG-6unknown (to ask Schumann)
How the gateway learns an order is packed; whether lookup_order returns order notesFR-15, FR-17unknown (to ask Schumann)
What counts as "suspicious"FR-20unknown (to ask Dvořák)
Pilot scope, including which tools are on at launchG-7unknown (to ask Schumann)
Disclosure wording, placement, frequency; adopted nameFR-2, FR-3unknown (to ask Schumann), after counsel
What disclosure is owed to customers in the EU and in U.S. states (the evidence names Maine and Utah), and whether the approach Schumann prefers meets it; the related Article 50(1) and 50(5) question in deliverables/02-risk-classification.md section 4Q-C1Counsel

Revisit

  • At sign-off (a later step): when the deciders accept or change this record. Status moves from Proposed to Accepted only then.
  • When Clara Schumann confirms the limit, or later changes it: record the value and the date; if it rises above agents' current discretion (B5), record who decided and why.
  • When Antonín Dvořák defines the G-2 route: check the route against AT-4 cases before G-7 opens.
  • When counsel answers Q-C1: set the disclosure wording, placement and frequency, add the text to the test set, and revisit D2 or D3.
  • Before G-7 opens: AT-1 to AT-6 meet their targets on the test set (deliverables/01-requirements.md section 8). A missed target keeps the assistant off.
  • After launch, before widening autonomy: raise the limit, drop B4, or add tools only on test results and a period of action logs without incident (F-001, F-012). Length of that period and the review date: unknown (to ask Schumann).
  • When the launch date is known: re-rate F-001, F-005 and F-012, which were rated on the plan as it stands (findings.yaml); date unknown (to ask Bizet).
  • When a tool, a policy topic or the model version changes: amend the allowlist or the policy records through this record, and update the AI inventory (F-007; model version unknown (to ask Schumann)).

Sources. Requirements FR-1 to FR-3, FR-6, FR-8 to FR-19, G-1 to G-7, PG-1 to PG-8, DH-2, NFR-2, NFR-7, NFR-8, AT-1 to AT-6, Q-C1 (deliverables/01-requirements.md). Findings F-001, F-005, F-008 and F-012 (decided here); F-002 to F-004, F-007 and F-009 to F-011 (referred to) (findings.yaml). Evidence: evidence/agent-proposal.md, evidence/process-notes.md, evidence/policy-sources.md, interviews/2026-10-14-bizet-coo.md, interviews/2026-10-15-schumann-vp-customer-service.md, interviews/2026-10-16-mendelssohn-governance-lead.md, interviews/2026-10-19-dvorak-support-team-lead.md (all in evidence/index.md).

The client, its people and its town are fictional. This is a sample, not a case study.

Ready to raise the standard?

Book a free 30-minute discovery call. An honest conversation about your situation and whether Touchstone Data is the right fit. No preparation needed.