Reviewer investigation pilot
Reviewer investigations create a saved brief of a risk subject’s evidence and open work. This pilot is available only in test mode, using a local mock provider. It sends no data to an AI service and does not measure AI accuracy.
In the Risk dashboard, open a test customer and choose Investigate this customer. The worker prepares the brief. Inspect each finding’s source, then record agreement or dismissal with a reason. Owner/admin reviewers can record dispositions; other principals can read and start test investigations. A recorded agreement does not change the customer’s risk assessment or authorize an account operation.
API example
Use the same authenticated SDK and test credential as your risk integration:
const requestKey = crypto.randomUUID(); // Save this before the first request.
const run = await client.risk.investigate(subjectId, requestKey);
// Reuse requestKey and subjectId if the request needs a retry.
const saved = await client.risk.get('investigations', run.id);
const freshness = await client.risk.investigationState(run.id);The initial status is pending, followed by completed or failed. The worker
checks pending runs every five seconds. Subscribe to risk.investigation.completed
and risk.investigation.failed through the existing signed webhook transport, then
fetch the run by its resource ID. Authenticate signatures, deduplicate event IDs
and reconcile API state as described in risk webhooks.
A repeated notification is not a second investigation.
An owner/admin dashboard JWT can record a review:
await client.risk.inMode('test').reviewInvestigation(run.id, {
findingId,
disposition: 'accepted', // or 'dismissed'
reason: 'Reviewed the source records; clarification is needed.',
}, reviewRequestKey);
const reviews = await client.risk.list('investigation-reviews', {
subjectId,
investigationId: run.id,
});Use nextOffset to read remaining pages. The same finding can receive one immutable
review. An identical idempotent retry returns its recorded review; a competing
review returns 409. Reviewers can create a fresh investigation for subsequent work.
What the brief means
Rule findings summarize recorded missing evidence, deadlines, changes between the two most recent included assessments per policy, and open actions. Mock findings report different stored values from separate sources as uncertain comparisons. They do not establish contradictions, fraud or source reliability.
The source window contains at most 50 latest fact/source evidence records, 25
recent assessments and 50 oldest open actions. snapshot.truncated means more
history exists. An oversized source window returns 413 instead of making an
unbounded model request. No findings means only that this window produced none.
Saved snapshots remain unchanged. Read /risk/investigations/:id/state to check
whether later subject activity or a deadline has made a brief stale. Passage of
time alone does not emit a webhook. Clients must enforce freshness when displaying
or using these records. Investigation completion is never identity approval.
A production AI provider, semantic evaluations and live-mode support are separate from this pilot. Use synthetic data while testing.