Rightshold™ Sign up

Answers · AI evidence

How do I show a customer or regulator that a human reviewed an AI decision before it went out?

Last updated

TL;DR: Keep three records and make their order checkable: what the AI produced, what the reviewer decided and when, and what was actually sent. Hash the AI's draft decision when it's produced, hash the final version when it's approved, and log the send with its time, so anyone can see the approval came before the send and covered exactly what was sent, including any edits. Regulators look past a click on 'approve'. Under GDPR Article 22, a decision with legal or similarly significant effects that is based solely on automated processing is restricted, and the EU data protection authorities' guidelines (WP251rev.01) say human involvement must be meaningful, 'rather than just a token gesture', by someone with the authority and competence to change the decision. So the record should also show what the reviewer saw, that they could change the outcome, and how often reviewers actually do. On Rightshold, record_ai_run seals the AI draft, request_human_approval binds the approval to a hash of the exact decision to be sent, decide_human_approval returns a signed, timestamped decision, and verify_human_approval lets the customer or regulator check it for free.

What should I check, step by step?

1. Hash and timestamp the AI's draft decision when it's produced, with the model and inputs, before any human touches it. That's the baseline the review is measured against.

  1. Show the reviewer the draft, the inputs it was based on and anything the person affected sent in. Record what was shown (hashes of the case file and the draft), not just that a screen opened.
  2. Record the decision as a separate event: approve, change or reject, the reason, the reviewer's role and identity in your own system, and the time. If they changed it, hash the final version too, so the edit is visible as a different hash.
  3. Bind the approval to the exact decision being sent: hash the final decision text or object and require the send step to match it. An approval of draft A shouldn't let draft B go out.
  4. Log the send with its time and the final decision's hash. The approval time must come before it.
  5. Measure whether review is real: share of drafts changed or rejected, time spent per case, cases per reviewer per day. A reviewer who approves every draft in seconds is the 'token gesture' the guidelines warn about.
  6. Keep the records past the dispute window and the logging period your rules set. For high-risk systems, Article 26(6) of the EU AI Act requires deployers to keep the system's automatically generated logs for at least six months, unless other law provides otherwise.
  7. Write down which decisions skip review, why, and who signed off on that rule. A gap you documented is easier to defend than one found in an audit.

What does human review of an AI decision have to involve under GDPR Article 22?

GDPR Article 22(1) gives people the right not to be subject to a decision based solely on automated processing that produces legal effects or similarly significantly affects them, with exceptions that come with safeguards such as the right to obtain human intervention and to contest the decision (Article 22(3)).

What human oversight and logging does the EU AI Act require for high-risk AI decisions?

For high-risk AI systems, Article 14 requires that people assigned to oversight can understand the system's limits, stay aware of automation bias, correctly interpret its output, and decide to disregard, override or reverse it. Article 26 requires deployers to assign oversight to people with the necessary competence, training and authority, and to keep the system's logs. artificialintelligenceact.eu lists these high-risk rules as applying from December 2, 2027 for Annex III systems and August 2, 2028 for Annex I systems.

How do I prove a human approved an AI decision before it was sent, and that it was the same decision?

Order: the AI run receipt and the decision receipt are timestamped by Rightshold's clock, not yours. Write the decision receipt id into your send log, so each send points at the approval it relied on. A send logged before its decision, or with no decision id, is visible as a failure, not a footnote.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Before this AI-drafted claim denial goes to the customer, ask me to approve the exact final decision, tied to the AI run receipt for the draft, and wait for my yes or no.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "summary": "Send claim decision for case C-20418: partial approval, 60% of the claimed amount. AI draft receipt air_<id>; reviewer changed the draft from a full denial.",
    "action": {
      "type": "send_decision",
      "case_ref": "C-20418",
      "final_decision_sha256": "<sha256 of the final decision text>",
      "ai_draft_receipt": "air_<id>",
      "ai_draft_output_sha256": "<sha256 of the AI draft>"
    },
    "expires_in_minutes": 240
  }
}

Rightshold records the AI run, the approval request and the decision you send it, signs and timestamps them, and lets anyone check them. It doesn't see your case file, judge whether the review was meaningful, identify which person held the account key, or stop a decision that was sent without asking. Whether your process meets GDPR, the AI Act or a sector rule is for your counsel and regulator. Not legal advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'