Core Concepts

Understand the foundational building blocks of RiskOS™ — evaluations, workflows, decisions, enrichments, rules, signals, and how they work together to automate identity verification and risk decisioning.

RiskOS™ automates identity verification, fraud prevention, and compliance through six interconnected concepts. Understanding how these concepts relate to each other is essential for building effective integrations.

flowchart LR
    A[Input] --> B[Evaluation]
    B --> C[Workflow]

    C --> D[Enrichments]
    D --> E[Signals]

    E --> F[Rules]
    F --> G[Decision]
ConceptWhat it is
EvaluationA single execution of a workflow — the runtime unit of work
WorkflowA configurable sequence of steps that processes an evaluation
EnrichmentA data service that adds risk, identity, or compliance signals
Signals & AttributesThe data taxonomy: inputs, enrichment outputs, reason codes, tags, and derived values
Rules & ConditionsThe logic layer that evaluates signals and routes the workflow
DecisionThe final outcome: ACCEPT, REJECT, or REVIEW


Evaluations

An evaluation is a single execution of a workflow in RiskOS™. When your application sends a POST request to the /api/evaluation endpoint with user, business, or device data, RiskOS™ runs the specified workflow and returns a decision along with enrichment data, risk scores, and reason codes.

Every interaction with the RiskOS™ decisioning engine — whether identity verification, fraud screening, or compliance check — is an evaluation.

Evaluation lifecycle

PhaseWhat happensOutput
RequestYour application sends a POST to /api/evaluation with a payload containing PII and a workflow nameeval_id assigned
ExecutionRiskOS™ runs the workflow: Input → Enrichments → Conditions → Rules → DecisionStep-by-step processing
DecisionThe workflow reaches a terminal step (Decision or Manual Review)ACCEPT, REJECT, or REVIEW
ResponseRiskOS™ returns the decision, enrichment data, tags, reason codes, and scoresJSON response or webhook
Case creation (conditional)If the workflow routes to Manual Review, the evaluation creates a case in Case ManagementCase record

Evaluation states

The eval_status field tracks where an evaluation is in execution. These states are distinct from decisions, which track what action to take.

eval_status valueDescriptionTrigger
evaluation_in_progressThe workflow is actively executing stepsPOST /api/evaluation received and workflow starts
evaluation_pausedThe workflow is waiting for user action (OTP, DocV, Wait step, Hosted Flow)Asynchronous step reached
evaluation_completedThe workflow ran to completion and returned a decisionAll steps executed

Webhook events such as workflow_execution_failed indicate additional terminal outcomes. You can also update a paused evaluation's state — including setting a final decision — via PUT /api/evaluation/{eval_id}/state.

For the full lifecycle model — including workflow states, case statuses, and state diagrams — see Statuses & Lifecycle.

Key fields in the evaluation response

FieldTypeDescription
eval_idstringUnique identifier for this evaluation
workflowstringThe workflow that processed the evaluation
decisionstringFinal outcome: ACCEPT, REJECT, or REVIEW
tagsarrayMetadata labels applied by Tag steps during execution
data_enrichmentsarrayResults from each enrichment called during execution
computedobjectValues calculated by Transformation and Rule Scorecard steps

Synchronous vs asynchronous evaluations

Evaluations follow one of two execution patterns depending on the workflow configuration:

  • Synchronous: The workflow completes all steps and returns a decision in the API response. This is the default for workflows without user-interaction steps.
  • Asynchronous: The workflow pauses at a step that requires user action (Document Verification, OTP, or a Wait step). RiskOS™ returns an evaluation_paused status. When the action completes, the workflow resumes and delivers the final result via webhook.

See Synchronous vs Asynchronous Evaluations for the full execution model.



Workflows

A workflow is a configurable sequence of steps that automates decision-making in RiskOS™. When an evaluation is triggered, RiskOS™ executes the specified workflow — processing data through input collection, enrichment calls, conditional logic, and rules — to reach a final decision.

You build workflows visually in the RiskOS™ Dashboard using the Workflow Editor.

Workflow categories

RiskOS™ supports two workflow delivery models. Both use the same evaluation runtime, enrichment pipeline, and decision model.

AspectCustom workflowHosted Flow
DefinitionBuilt and managed by the customer in the Workflow EditorPreconfigured workflow with a Socure-managed end-user UI
ConfigurationCustomer selects steps, enrichments, rules, and decision logicSocure provides an opinionated, pre-built flow
End-user UICustomer-built (API + SDK)Socure-hosted (web-based)
Lifecycle managementCustomer manages (Draft → Published → Live)Socure manages the workflow; customer customizes branding
ExtensibilityFull — any step type, any enrichment, any ruleLimited — template customization and branding

Both categories produce evaluations, return decisions, and follow the same lifecycle states. The distinction is operational — ownership and configuration model — not architectural.

For the full Hosted Flow ontology, see Hosted Flows.

What a workflow does

A workflow defines:

  1. What data to accept — The Input step specifies required fields in the evaluation payload.
  2. What data services to call — Enrichment steps call Socure products or third-party APIs for additional signals.
  3. How to evaluate the data — Condition steps, Rule Scorecards, and Transformation steps apply logic to route and score data.
  4. What decision to return — A Decision step or Manual Review step terminates the workflow with an outcome.

Step types

Every workflow consists of steps. Each step has a single purpose:

StepCategoryPurposeAsync capable
InputDataDefines the evaluation payload schemaNo
EnrichmentDataCalls a data service to add external signalsNo
TransformationLogicManipulates data with stateless functionsNo
ConditionLogicBranches the workflow based on boolean evaluationNo
Advanced ConditionLogicMulti-group conditional logic with nested groupsNo
TagLogicAttaches metadata labels to the evaluationNo
Reason CodeLogicAttaches explanatory codes to the evaluation outcomeNo
Rule ScorecardLogicAssigns risk scores based on rule evaluationsNo
Matrix RuleLogicEvaluates a tabular set of rulesNo
Grouped RulesLogicEvaluates collections of related rules togetherNo
Decision RulesDecisionCombines condition + decision in a single step with fallbackNo
DecisionDecisionAssigns a final evaluation outcome (ACCEPT, REJECT, REVIEW)No
Manual ReviewDecisionRoutes the evaluation to a human reviewer in Case ManagementNo
WaitPausePauses execution until an external API call resumes itYes
OTPPauseSends a one-time passcode and pauses until the user verifiesYes
Hosted FlowPauseTriggers a Socure-hosted end-user experienceYes
NoteDocumentationAdds inline documentation to the workflow canvasNo

For step-level configuration and field definitions, see Workflow Steps Reference.

Workflow lifecycle

Workflows move through three states:

StateDescriptionCan be editedProcesses evaluations
DraftInitial state after creation. Can be edited and tested.YesNo
PublishedFrozen configuration. Can be tested but not edited directly.NoNo
LiveActively processes evaluations via the Evaluation API.NoYes

A workflow must be Published before it can be set to Live. Only one version of a workflow can be Live at a time.

Versioning:

  • Major version: Duplicate a published workflow to create a new independent version.
  • Minor version: Edit a published workflow to create a patch (available only for certain changes).

For lifecycle management details, see Manage Workflow Lifecycle.

Workflow modes

ModeDescription
LiveProcesses production evaluations and returns real decisions
ShadowProcesses evaluations in parallel without affecting the live decision (for testing)
A/B (Champion-Challenger)Splits traffic between two workflow versions to compare performance

Terminal steps

Every workflow must end with one of:

  • A Decision step — assigns an automated outcome
  • A Manual Review step — routes to a human reviewer

A workflow without a terminal step can't be published.



Decisions

A decision is the final outcome of an evaluation. It represents the platform's determination — based on enrichment data, rules, and scoring logic — of whether to accept, reject, or flag an entity for further review.

Decisions are set by terminal workflow steps: a Decision step for automated outcomes, or a Manual Review step for human review.

Decision values

The Evaluation API returns three standard decision values:

ValueMeaningTypical action
ACCEPTThe entity passed all checksProceed with onboarding, transaction, or access
REJECTThe entity failed one or more checksDeny the request
REVIEWThe evaluation requires human assessmentRoute to Case Management for manual review

Custom and step-level values: Decision Rules steps can also assign values such as RESUBMIT and CANCEL, or route to Manual Review. You can define additional custom decision values when configuring a Decision step or Decision Rules step. These values appear in the API response and Case Management alongside the standard values.

Two types of decisions

Automated decisions are set by a Decision step or Decision Rules step in the workflow. These are returned in the evaluation API response without human involvement.

Manual review decisions occur when a workflow routes to a Manual Review step. The evaluation enters Case Management. A human reviewer examines the case and makes a final decision — typically Accept or Reject. The reviewer's decision is communicated back to your system via webhook (decision_update event) or API polling.

Where decisions appear

LocationField / eventDescription
Evaluation API responsedecisionThe automated decision from the workflow
Webhook: evaluation_completeddata.decisionFinal decision after an async workflow completes
Webhook: decision_updatedata.decisionUpdated decision after manual review
Case Management UIDecision columnVisible in case queues and case detail views

Decision vs status vs evaluation state

Decisions, statuses, and evaluation states are three distinct runtime concepts:

ConceptQuestion it answersValuesSet by
Decision"What action should we take?"ACCEPT, REJECT, REVIEW, customWorkflow step or human reviewer
Case status"Where is this case in the review process?"Open, On Hold, Closed (with customizable sub-statuses)Case Management system or reviewer
Evaluation state"Where is this evaluation in execution?"evaluation_in_progress, evaluation_paused, evaluation_completedRuntime engine

A case can have a REVIEW decision, an Open status with an "In Review" sub-status, and an evaluation_completed evaluation state simultaneously — each tracks a different dimension.

For the full lifecycle model with state diagrams, see Statuses & Lifecycle.



Enrichments

An enrichment is a data service that supplements an evaluation with additional risk, identity, and compliance signals beyond the data provided in the initial API request. Enrichments are also referred to as products in the RiskOS™ platform.

During workflow execution, an Enrichment step calls a Socure product or third-party API to retrieve structured data — scores, reason codes, attributes, and validation results. The workflow then uses these signals in downstream rules and conditions to reach a decision.

How enrichments work

sequenceDiagram
    participant App as Your Application
    participant RiskOS as RiskOS™
    participant Svc as Data Service

    App->>RiskOS: POST /api/evaluation (PII + workflow)
    RiskOS->>RiskOS: Run Input step
    RiskOS->>Svc: Call enrichment (e.g., Phone Risk)
    Svc-->>RiskOS: Return scores, reason codes, attributes
    RiskOS->>RiskOS: Apply rules using enrichment signals
    RiskOS->>RiskOS: Reach decision
    RiskOS-->>App: Return decision + data_enrichments[]
  1. The workflow reaches an Enrichment step.
  2. RiskOS™ calls the configured data service with the relevant payload fields.
  3. The service returns structured results (scores, codes, attributes).
  4. Results are stored in the data_enrichments array of the evaluation response.
  5. Downstream steps (Conditions, Rule Scorecards, Decisions) reference these results.

Where enrichment results appear in the API

Enrichment results are returned in the data_enrichments array of the evaluation response. Each entry represents a single enrichment call:

FieldDescription
enrichment_nameName of the enrichment/product
enrichment_endpointAPI endpoint called
enrichment_providerSocure or partner service
requestPayload sent to the enrichment
responseFull response returned, including scores and reason codes

Enrichment categories

CategoryEnrichmentsWhat they provide
Identity verificationVerify, Verify Plus, Prefill, eCBSV, Deceased CheckKYC data, SSN verification, identity attributes
Document verificationPredictive DocVGovernment ID capture and verification
Device & behavioralDigital Intelligence, Account IntelligenceDevice fingerprinting, behavioral signals, bank account verification
Fraud detectionSigma Identity Fraud, Sigma Synthetic Fraud, Sigma First-Party FraudML-based fraud scores and reason codes
Risk scoringAddress Risk, Email Risk, Phone Risk, Graph IntelligencePII attribute risk scores and identity correlation
ComplianceWatchlistSanctions, PEP, and adverse media screening
User verificationOTP, CNAMContact information verification
PartnerMiddesk, Experian, Thomson Reuters Clear, and othersThird-party data services

For the complete enrichment catalog with integration guides, see Enrichments Overview.

Enrichment error handling

If an enrichment call fails, RiskOS™ retries automatically. On final failure:

  • The enrichment output is set to null.
  • Downstream Condition steps referencing the failed enrichment evaluate to false.
  • You can configure fallback Enrichment steps to chain alternative providers.

For error handling details, see Enrichment Error Handling.

Enrichments vs signals

ConceptScopeExample
EnrichmentThe data service that is calledSigma Identity Fraud
SignalA discrete data point returned by an enrichmentsigma_identity_fraud.score = 0.92

An enrichment produces multiple signals. Signals are the inputs to rules and conditions.



Rules & Conditions

Rules and conditions are the logic layer in RiskOS™ workflows. They evaluate signals from enrichments, input data, and computed values to determine how an evaluation is routed and what decision is reached.

Conditions

A condition evaluates one or more expressions to true or false and branches the workflow accordingly.

Condition structure:

Each condition expression has three parts:

PartDescriptionExample
Left operandThe value to evaluatesigma_identity_fraud.score
OperatorThe comparison logicgreater than
Right operandThe threshold or reference value0.85

Operand sources:

SourceDescription
Input dataFields from the evaluation request payload
Enrichment dataValues returned by Enrichment steps
Output fieldsResults from Transformation, Condition, Rule Scorecard, or Tag steps
AggregationVelocity counters and entity-level aggregations

Operators:

CategoryOperators
Equality / comparisonequals, not equals, greater than, less than, greater or equal, less or equal
Stringcontains, not contains, starts with, ends with, matches regex, in, not in
Arraycontains, not contains, has any of, has all of
Listin Allow List, in Deny List
Presenceis set, is not set
Reason codehas reason code, does not have reason code

Grouping:

Combine multiple conditions using:

  • AND — all conditions must be true
  • OR — at least one condition must be true

The workflow follows the True path if the condition group evaluates to true, and the False path otherwise.

Rule types

RiskOS™ uses the term "rule" in several workflow step contexts. Each serves a different purpose:

Rule typeStepPurposeOutput
Condition ruleConditionRoutes the workflow based on boolean logicTrue/False branch
Score ruleRule ScorecardAssigns a numeric risk score (-100 to 100) when a condition is metSummed score value
Decision ruleDecision RulesCombines a condition with a decision outcome in a single stepACCEPT, REJECT, REVIEW, or step-level values (RESUBMIT, CANCEL), or Manual Review
Matrix ruleMatrix RuleEvaluates a tabular set of conditionsRow-level match
Grouped rulesGrouped RulesEvaluates collections of related rules togetherGroup-level outcome

Rule Scorecards

A Rule Scorecard assigns numeric risk scores based on rule evaluations:

  1. Each score rule defines a condition and a score value (-100 to 100).
  2. Rules that evaluate to true contribute their score.
  3. The final output is the sum of all matching scores.
  4. Downstream Condition or Decision steps reference the scorecard output to make routing decisions.

Decision Rules

A Decision Rules step combines condition evaluation with decision assignment in a single step:

  • Each rule maps a condition to an outcome — the standard API decision values (ACCEPT, REJECT, REVIEW), step-level values (RESUBMIT, CANCEL), or Manual Review routing.
  • Rules are evaluated top-to-bottom; the first matching rule applies.
  • A fallback (Else) path handles cases where no rule matches — it can either continue without a decision or assign a default decision.

This is the only workflow step that can both issue a final decision and continue execution via a fallback path.

How conditions and rules drive decisions

flowchart TD
    ENRICH["Enrichment signals"] --> COND["Condition step"]
    COND -->|True| SCORE["Rule Scorecard"]
    COND -->|False| DR["Decision Rules"]
    SCORE --> THRESHOLD{"Score > threshold?"}
    THRESHOLD -->|Yes| ACCEPT["Decision: ACCEPT"]
    THRESHOLD -->|No| REVIEW["Decision: REVIEW"]
    DR -->|Rule 1 match| REJECT["Decision: REJECT"]
    DR -->|No match| FALLBACK["Fallback: continue"]


Signals & Attributes

RiskOS™ workflows process five distinct types of data during an evaluation. Each has a precise definition, a distinct runtime role, and a specific location in the API response.

Data taxonomy

TermDefinitionRuntime roleSet byAPI response location
AttributeA normalized input field describing the entity being evaluatedWorkflow input — defines what data enters the evaluationYour application (via API request)Request payload (data.*)
SignalA discrete data point returned by an enrichment or external data serviceDecision input — provides evidence for rulesEnrichment stepdata_enrichments[].response.*
Reason codeA human-readable code explaining why a specific enrichment or decision outcome occurredExplainability — traces the reasoning behind a decisionEnrichment response or Reason Code stepdata_enrichments[].response.reason_codes[]
TagA metadata label conditionally attached to an evaluationOperational grouping — classifies evaluations for filtering, routing, and reportingTag step (when its condition evaluates to true)tags[]
Derived valueA value computed by a workflow step from attributes, signals, or other derived valuesIntermediate computation — feeds downstream conditions and decisionsTransformation step or Rule Scorecard stepcomputed.* (requires feature flag)

Attributes

An attribute is an input data point about the entity being evaluated — the information your application sends in the POST /api/evaluation request.

CategoryExample attributesPayload path
Individualfirst_name, last_name, dob, ssn, email, phone_numberdata.individual.*
Addressstreet, city, state, zip, countrydata.individual.address.*
Accountaccount_id, account_type, account_creation_datedata.individual.account.*
Businessbusiness_name, ein, business_addressdata.business.*
Deviceip_address, user_agent, device_iddata.device.*
CustomAny key-value pairs in the custom objectdata.custom.*, data.individual.custom.*

The Input step of a workflow defines which attributes are required and optional. Attributes are available to all downstream steps as operands in conditions and rules.

Signals

A signal is a discrete data point returned by an enrichment during workflow execution. Signals are the primary evidence used by rules and conditions to reach a decision.

Signal typeExampleSource
Risk scoresigma_identity_fraud.score = 0.92Sigma Identity Fraud enrichment
Validation resultphone_risk.phone_type = "mobile"Phone Risk enrichment
Match indicatorverify.name_match = "exact"Verify enrichment
Fraud flagdigital_intelligence.vpn_detected = trueDigital Intelligence enrichment
Compliance resultwatchlist.match_count = 0Watchlist enrichment

Signals appear in data_enrichments[].response.* in the evaluation API response.

Reason codes

A reason code is a human-readable identifier explaining a specific factor in an enrichment result or decision outcome. Reason codes provide explainability — they answer "why did this evaluation receive this decision?"

CharacteristicDescription
FormatAlphanumeric code (for example, I805, R301)
SourceReturned by enrichments or attached by a Reason Code workflow step
PurposeExplain the factors behind a score or decision to reviewers and downstream systems
API locationPer-enrichment data_enrichments[].response.reason_codes[]

Reason codes are not decision inputs — they are decision explanations. Rules and conditions evaluate signals, not reason codes (though the has reason code operator enables reason-code-aware routing).

Tags

A tag is a metadata label conditionally attached to an evaluation by a Tag step in the workflow. Tags classify evaluations for operational purposes.

CharacteristicDescription
BehaviorSet only when the Tag step's condition evaluates to true
PurposeOperational grouping — filter cases, trigger automation, segment analytics
Boolean outputEach Tag step produces a boolean output field indicating whether the tag was set
API locationtags[] in the evaluation response

Tags are metadata, not decision inputs. They describe the evaluation after the fact, enabling downstream filtering and reporting.

Derived values

A derived value is a value computed during workflow execution from attributes, signals, or other derived values. Derived values are intermediate computations used by downstream rules and conditions.

Source stepHow it produces a derived valueExample
TransformationApplies stateless functions (string, numeric, date, array) to input data$age_at_application = DATEDIFF(dob, NOW(), "years")
Rule ScorecardSums numeric scores from matching rules$risk_score = 45
ConditionProduces a boolean output indicating the branch taken$is_high_risk = true

Derived values appear in the computed object of the API response (requires feature flag) and are referenced in downstream steps using the $output_field_name syntax.

Entities and aggregations

RiskOS™ tracks certain attributes as entities — core data elements that represent a real-world actor (email address, phone number, SSN, account UUID). Entities enable:

  • Aggregation features: Computations applied across evaluations sharing the same entity (count, average, sum, min, max, first seen, last seen, distinct count).
  • Time windows: Aggregations can be scoped to specific periods (minutes, hours, days, or lifetime).
  • Cross-journey linkage: The same entity connects evaluations across onboarding, authentication, and fraud review via SocureID.

For entity configuration and aggregation functions, see Entities and Aggregations.



How These Concepts Work Together

The six concepts above form a processing pipeline. Each concept feeds into the next, and together they transform raw input data into a risk decision.

End-to-end data flow

flowchart TD
    REQ["API Request"] --> ATTR["Attributes (input)"]
    ATTR --> INPUT["Input Step validates payload"]
    INPUT --> ENRICH["Enrichment Steps call data services"]
    ENRICH --> SIG["Signals returned"]
    ENRICH --> RC["Reason Codes returned"]
    INPUT --> TRANSFORM["Transformation Steps"]
    TRANSFORM --> DV["Derived Values"]
    SIG --> RULES["Rules & Conditions evaluate data"]
    DV --> RULES
    RULES --> TAG["Tag Steps classify evaluation"]
    TAG --> TAGS["Tags"]
    RULES --> DECISION["Decision Step assigns outcome"]
    SIG --> RESP["API Response"]
    RC --> RESP
    TAGS --> RESP
    DV --> RESP
    DECISION --> RESP

The processing sequence

  1. Your application submits attributes. A POST /api/evaluation request sends PII (name, DOB, SSN, email, phone, device data) and specifies which workflow to run.

  2. The evaluation starts. RiskOS™ assigns an eval_id and begins executing the workflow. The evaluation state is evaluation_in_progress.

  3. The workflow processes data through steps. The Input step validates the payload. Enrichment steps call data services (Sigma Fraud, Phone Risk, Watchlist, DocV, and others) and return signals — scores, match results, and risk flags.

  4. Rules and conditions evaluate the signals. Condition steps branch the workflow based on signal values. Rule Scorecards compute aggregate risk scores. Decision Rules map conditions to outcomes.

  5. The workflow reaches a terminal step. A Decision step assigns ACCEPT, REJECT, or REVIEW. A Manual Review step routes the evaluation to Case Management for human assessment.

  6. RiskOS™ returns the result. The API response (or webhook for async evaluations) includes the decision, all enrichment data, reason codes, tags, and computed values.

Concept relationships

FromToRelationship
EvaluationWorkflowAn evaluation executes exactly one workflow
WorkflowEnrichmentA workflow contains zero or more Enrichment steps
EnrichmentSignalEach enrichment produces one or more signals
SignalRules & ConditionsRules evaluate signals to determine routing and scoring
Rules & ConditionsDecisionRules drive the workflow toward a terminal Decision step
AttributesEvaluationAttributes are the input data that starts an evaluation
TagsEvaluationTags are metadata labels attached during workflow execution
Reason codesDecisionReason codes explain why a decision was reached
Derived valuesRules & ConditionsDerived values feed into downstream rules as computed inputs


Related topics

These concepts are covered in dedicated pages for deeper reference: