Skip to main content
control.human_review: Pause the run for selective field confirmation or correction, then continue with the reviewed data. Use this step after extraction or transformation when a human must confirm or correct specific fields before the run continues. Place it as a top-level sequential step only — nested placement inside other control containers is rejected at publish time.
When metadataFrom: ai.extract is set and data references the whole extract output, the step strips the reserved _grounding key, derives categorical confidence (low, medium, high) per field from nested dotted-path grounding, and reuses the extract schema when schema is omitted. When data is exactly {{ steps.<extract-step>.output }}, Eigenpal also snapshots any lineage and ParsedDocument sidecars the extract step produced. Studio loads them for the review workspace: source PDFs/images beside the structured output, spatial citation highlights on supported fields, and bbox overlays when a canonical ParsedDocument is available. Missing or unreadable sidecars are skipped — review still works from _grounding alone. Review decisions are not yet written back into lineage. The human review API includes optional lineage and parsedDocument on task detail when sidecars resolve; they are API-only context, not workflow output. Selection modes: confidence reviews fields below a threshold; explicit reviews paths matched by include/exclude; all reviews every scalar leaf. Thresholds accept numeric 0–1 or categorical low|medium|high. Per-path overrides live under selection.fields with review: always|never|skip and optional per-field threshold. Selectors: pointers address scalar leaves, not containers. For an array of strings named reasons, use /reasons/* (all items) or /reasons/0 (one item), not /reasons. For nested objects, select a leaf such as /client/name. include, exclude and selection.fields follow the same rule. Validation rejects selectors that a known review schema proves cannot reach a scalar, including schemas inferred through metadataFrom: ai.extract. Dynamic or unresolved schemas are checked at runtime; even a valid array selector can match no fields when that array is empty. Evaluations: evaluation runs always simulate review and never pause. Assert routing and simulated edits with review fixtures in dataset meta.json — see Build a dataset.

Configuration

Configuration goes inside the step’s with: block.
string | record<string, unknown> | array<unknown>
required
Structured data or a template expression resolving to an object or array
record<string, unknown>
Optional JSON Schema for validating edits and exposing downstream autocomplete. When omitted with metadataFrom: ai.extract and a direct whole-output data expression, the extract step schema is reused.
"ai.extract"
Producer adapter. ai.extract derives field confidence from _grounding and strips that reserved key from review data. Grounding is not stripped unless this is set.
record<string, object>
default:"{}"
RFC 6901 pointer map of producer facts (labels, confidence, display). Selection policy belongs under selection.fields; fieldMetadata.review is a legacy alias.
object
required
Field selection policy resolved once when the task is created
object
default:"{\"includeRunInputs\":true,\"attachments\":[]}"
Run input files and optional current-run attachments for reviewers
string
Free-form guidance shown above the review workspace

Output

Returns unknown. The complete reviewed data in the same object or array shape as the input.