Before an AI agent changes a business system, show the reviewer what will be different. A plan such as clean up the CRM is too broad to approve meaningfully. A preview naming the records, current values, proposed values and downstream effects gives the person a concrete decision. The execution should then be constrained to that reviewed proposal.
The examples below use fictional CRM records and describe a proposed design. They are not results from a customer deployment. Primary technical references were checked on October 11, 2026.
- 01Preview the change, not only the intentionShow affected records and before-and-after values in ordinary language.
- 02Bind approval to a specific proposalA changed payload, destination or scope needs the review that applies to it.
- 03Recheck the current stateA preview can become stale while a person is deciding.
- 04Compare execution with approvalRead back results and preserve partial or uncertain outcomes.
01 — Review objectReplace a broad plan with a concrete proposal
Consider a fictional sales team asking an agent to reassign open leads after a colleague changes territory. A broad plan might say that the agent will find relevant leads and update their owner. That is useful for explaining the approach, but it does not tell the reviewer which customers will move, whether any exclusions apply or what notifications the updates trigger.
A concrete preview names the selected records and the proposed field changes. It also explains why each record is included and what remains excluded. The reviewer can inspect a lead that belongs to the old territory but has an active exception, or notice that a supposedly open lead is already closed. The proposal makes those decisions visible before the application performs them.
This is distinct from deciding who is allowed to approve a workflow. Our approval-gate framework addresses that broader governance question. Here the subject is the artifact the reviewer sees and the contract execution must follow. A properly assigned reviewer still cannot make a good decision if the proposal hides the affected records behind a vague summary.
Find and reassign leads
Describes the approach but leaves the actual selection and business effect unresolved.
These records change owner
Shows current values, proposed values, inclusion reasons and known side effects.
02 — Before and afterShow the fields that change and the context that matters
The preview should be compact enough to inspect while retaining the facts needed for the decision. For each fictional lead, show a stable identifier, a recognizable label, the current owner and the proposed owner. Add the rule that selected it, such as territory and open status. Do not require a reviewer to infer the affected customer from an internal identifier alone.
Keep unchanged context visible when it affects approval. A lead with a pending appointment or a manual ownership exception may need special handling even if those fields are not being edited. Conversely, dumping every CRM field into the preview can bury the important difference. Choose context according to the business decision, and provide a way to inspect the underlying record when needed.
Distinguish a missing value from an unchanged value. Blank owner, owner not retrieved and owner deliberately left unchanged describe different situations. The data read-path guide helps identify where current values came from. A preview is only meaningful when the before state is both understandable and sufficiently current for the proposed action.
In the fictional batch, Lead A-118 has a pending appointment. The owner change might still be appropriate, but the reviewer needs to know whether responsibility for that appointment moves too. Put that question beside the row instead of hiding it in a general warning at the bottom. Lead A-123 is excluded because of a manual exception; displaying the exclusion prevents the reviewer from assuming the agent overlooked it. A preview can therefore explain both action and deliberate inaction, which is essential when a user asks why some apparently similar records were treated differently.
| Fictional record | Current owner | Proposed owner | Review context |
|---|---|---|---|
| Lead A-104 | Alex | Sam | Open; territory matches |
| Lead A-118 | Alex | Sam | Open; appointment pending |
| Lead A-123 | Alex | No change | Manual exception; excluded |
03 — Effect scopeInclude side effects beside the visible edit
Changing one field can trigger more than one business effect. A CRM owner update may send a notification, alter a work queue or start a downstream automation. The preview should identify the known consequences of the proposed operation. A reviewer who approves a field change should not discover afterwards that it also contacted a customer or reassigned a related task.
Read the actual integration behavior rather than guessing from the field name. Some systems let an update suppress selected notifications; others do not. If the workflow cannot establish a consequential side effect, preserve that uncertainty before execution. The application may need a narrower operation or an additional check. Do not hide the unknown behind a generic statement that the update is reversible.
Show the destination account or workspace where ambiguity is possible. Two CRM environments can contain similar record names, and a correct payload sent to the wrong account is still a serious error. The review object should bind the proposed changes to the intended destination, not merely display a list of values that could be applied anywhere.
- Name the target system and account.
- List known notifications and dependent updates.
- Make unresolved side effects visible before approval.
04 — Approval identityBind the decision to the exact proposed change
Give the proposal a stable identity and preserve the fields, record set and destination it describes. The approval should refer to that proposal, not to whatever the agent decides to do next. If the user changes the new owner or removes a record, produce an updated proposal and make clear which version is now awaiting a decision.
A paused workflow can support this interaction. The LangChain interrupt pattern describes waiting for human input and resuming execution. That mechanism does not itself decide whether the resumed payload matches the reviewed one. The application has to keep the approved proposal and the execution request connected.
Treat approval as a fact with scope. It names who approved, what they approved and the conditions under which it remains applicable. This does not require a cumbersome ceremony for every small action. It requires avoiding a misleading shortcut where one broad yes is reused for a different destination, a larger record set or a materially changed payload that the reviewer has never seen.
Consider a reviewer approving three ownership changes, after which the agent discovers two more matching leads. The new leads may satisfy the same selection rule, but they were not part of the inspected artifact. The correct handling depends on the authorization actually given: a fixed-record approval covers the three, while a separately authorized rule-based operation may cover a broader set under its own conditions. Make that distinction explicit. Do not let the interface show a fixed list while the execution quietly treats it as approval for an open-ended query.
If the agent discovers additional records after review, keep them outside the approved batch until the applicable authorization is clear. Do not silently enlarge the action under the old proposal.
05 — State preconditionDetect a stale preview before applying it
A reviewer may take several minutes to inspect a proposal. During that interval, a colleague can change the same lead’s owner or close the record. The before state in the preview is now stale. Applying the old update without checking can overwrite valid work that happened after preparation, even though the reviewer made a sensible decision using the information shown.
Where the destination supports conditional updates, use its documented version or precondition mechanism. HTTP If-Match is one example of a request condition used to avoid overwriting a resource that no longer matches the expected entity tag. That does not mean every CRM API supports it; choose the mechanism the actual destination provides.
If the precondition fails, show the changed record and prepare a revised proposal where needed. A fresh read followed by an unconditional write still leaves a race between the two operations, so do not describe that sequence as equivalent to an atomic conditional update. The implementation should state its actual concurrency guarantees and use a conservative stop or review path where it cannot safely preserve the intended condition.
- Capture a source version or applicable state condition.
- Require the supported precondition at execution.
- Treat a changed record as a conflict to resolve, not a reason to overwrite.
06 — Batch clarityMake batch review usable without hiding exceptions
A preview for many records needs a summary and an inspectable detail list. Show how many records change, which fields change and how many were excluded or need separate review. Let the reviewer inspect the exceptions first. A clean total can conceal a single consequential mistake, so the aggregate should help navigation rather than replace record-level evidence.
Separate different action classes. Reassigning an owner, deleting a duplicate and changing a customer-facing status may all appear in a cleanup request, but they have different consequences and acceptance criteria. Present them as distinct proposals or clearly separated groups. The reviewer should be able to accept the useful part without accidentally authorizing the entire collection.
Preserve partial outcomes during execution. If some approved updates succeed and others encounter a conflict, the result should name both sets. Do not label the whole job failed and rerun every action, or label it complete because most records changed. The bulk-job engineering guide covers related retry mechanics; the preview remains the reference for which effects were intended in the first place.
For a partial batch, keep a result row for every approved item. A successful update should include its observed final value; a conflict should show why its precondition failed; an uncertain result should identify the missing confirmation. This lets a person resume only the unresolved work. A summary saying two of three succeeded can be useful at the top, but it cannot replace the item identities needed to avoid repeating completed changes or losing the failed one.
Show changed, excluded, conflicted and uncertain records separately. The reviewer should not have to infer those categories from a single success percentage.
07 — Execution evidenceVerify the result against the approved artifact
After execution, compare the destination state with the reviewed proposal. The agent should be able to report which records reached the intended values and which did not. A successful API response may confirm request handling without proving every downstream effect, so the read-back should match the business acceptance condition rather than a convenient transport signal.
Retain the proposal and result together. If a colleague later asks why ownership changed, the record should show the inclusion rule, the approved before-and-after values and the observed execution outcome. This is more useful than a long chat history whose important decision is buried between searches and progress updates. It also helps distinguish an incorrect proposal from an execution defect.
Our AI transformation service can help build these review and verification steps into an everyday workflow. The objective is to make the agent’s work easier to inspect, not to add an approval queue to every harmless read. Put the concrete preview where a business change becomes meaningful, and keep the evidence proportional to that change.
- Read back the fields that define successful completion.
- Reconcile partial and uncertain effects before retrying.
- Keep the reviewed proposal beside the observed outcome.
08 — Preview evaluationTest whether a reviewer can spot the wrong change
A preview is an interface and should be tested as one. Give a reviewer a fictional batch containing a wrong destination, an excluded exception and a stale current value. Ask them to identify what they would approve or reject. If the interface makes those differences hard to notice, the review step exists in name but is not doing its intended job.
Then test the execution binding. Change the proposed owner after approval, add a new record and simulate a destination version conflict. The application should preserve the scope of the original decision and stop or request the appropriate new review. These are proposed acceptance tests, not a claim that a particular agent framework enforces them automatically.
A good preview lets a person make a specific decision with reasonable effort. It gives the agent a concrete target for execution and gives the team a concrete artifact to compare with the result. That is the useful standard: a reviewer can see what will change, the system performs only the applicable authorized work and the final state can be checked against the proposal.
Time the review as part of the design test, but do not optimize only for speed. A short approval time can mean the preview is clear, or it can mean the reviewer did not notice the hidden exception. Ask what they understood, what they would approve and what they would need to inspect next. That feedback reveals whether the artifact supports a real decision rather than merely encouraging a quick click.
- Test review clarity with deliberate mistakes.
- Test that payload changes invalidate the relevant approval.
- Test stale-state and partial-batch behavior before broad rollout.
Make one real change easy to review
Choose a narrow business update and build its before-and-after preview. Include the destination, relevant context and side effects, then bind execution to that exact proposal.
A useful review step lets the person see the consequence and lets the system prove what happened. Start there before expanding the agent’s range of actions.