Vom Decision Platform

website·Indexed 31 days ago

http://docs.vomdecision.com

A SaaS decision platform for configuring automated decision policies. It features a built-in Feature Store time series database, Excel-inspired formulas for date and time handling, Generative AI blocks, and API integration for real-time and batch decisions.

Tokens
12.3K
Snippets
129
Records
156
Agent score
48%

What's inside Vom

  1. Overview of Vom Decision Platform Concepts

    Vom is a decision engine SaaS used to configure automated decisions. The platform uses the following core hierarchy and components:

    • Policies: The top-level container for a specific decision process (e.g., a bank may have separate policies for 'personal line of credit' and 'business loans').
    • Versions: Policies are versioned to support A/B testing and auditability. A policy has one 'current' version and may have multiple 'experimental' (challenger) versions running simultaneously.
    • Decision Flow: Versions are constructed as block diagrams consisting of:
      • Conditional Blocks: Used to test values and direct the decision flow.
      • Assignment Blocks: Used to assign values to variables.
    • Vom Formulas: A simple, Excel-inspired language used within blocks to define logic.
    • Input Variables: Parameters for decisions sourced from either the Decision API call or the Feature Store (a time-series database).
    • End Blocks: Define the overall decision result (e.g., Approved, Denied).
    • Decision History: A storage system where all outputs (final results and intermediary variables) are saved for debugging, analysis, and backtesting.
  2. Overview of Vom Decision Platform concepts

    Vom is a decision engine SaaS used to configure automated decisions by consuming internal/external data and running ML models. The core architecture consists of:

    • Policies: Separate decision processes (e.g., one for credit cards, one for business loans).
    • Versions: Versioned iterations of a policy to enable A/B testing and auditability. A policy has one 'current' version and may have multiple 'experimental' (challenger) versions.
    • Blocks: The decision process is modeled as a block diagram using 'conditional blocks' for flow control and 'assignment blocks' for variable assignment.
    • Vom Formulas: A simple, Excel-inspired language used within blocks to define logic.
    • Input Variables: Parameters for decisions sourced from API calls or the Feature Store (a time-series database).
    • End Blocks: Define the overall decision result (e.g., Approved, Denied).
    • Decision History: A storage system where outputs and intermediary variables are kept for debugging, analysis, and backtesting.
  3. Handle date and time values in Vom formulas

    Vom uses an Excel-inspired formula language for date and time operations. Input datetime variables (via API or batch decision CSV) must be provided as ISO 8601 combined date and time strings in the UTC time zone (e.g., 2024-06-12T10:15:00Z). Internally, Vom represents datetimes as floating-point numbers representing the number of days since 1900-01-01, where the fractional part represents the time since midnight.
    // Example: Check if a person is underage
    DATEDIF(NOW(), birth_date, "Y") < 18
  4. Check for the presence of document variables in formulas

    Document variables (containing images, PDFs, or scanned forms) are converted to booleans when used within a formula. They return TRUE if the document was provided and FALSE otherwise. This is used to verify if optional documents were supplied. Note that the actual content of the document cannot be accessed via formulas; it must be processed using Generative AI blocks.
    IF(proof_of_income, "Document provided", "Missing document")
  5. Pull data using HTTP Connectors

    Connectors pull data from external sources into Vom when a policy needs a feature value and no fresh value exists in the store.

    Optimization Tips:

    • Use the Value Expiration option on input variables to use cached values.
    • Structure policies to read expensive features only after simpler checks pass to avoid unnecessary connector invocations.

    HTTP Status Matchers: HTTP connectors can use status matchers to evaluate a JMESPath condition against the response body. If the condition is truthy, Vom replaces the response status code with a configured one. This is used to handle business errors returned within 2xx responses. Vom stores both the original_status and the final status_code in execution details.

  6. Prepare CSV files for Batch Decisions

    Batch Decisions allow processing large datasets by uploading a CSV file. Each row represents one decision, and the first row must contain the policy variable names as headers.

    CSV Formatting Specifications:

    • Delimiter: Comma (,).
    • Quoting: Use double quotes (") for fields with special characters; use repeated double quotes ("") to escape a quote.
    • Decimals: Use a dot (.) as the separator.
    • Booleans: Use true or false.
    • Datetime: Use ISO 8601 UTC strings (e.g., 2024-01-20T14:01:15Z or 2024-01-20T00:00:00Z for dates).
    • Lists: Enclose in double quotes (e.g., "[1, 2, 3]").
    • Missing Values: Empty fields use the configured default value; otherwise, the decision results in an error.
    age,income,address,has_requested_loan,last_loan
    25,5000.50,"123 Main Street, Apt ""4 B"",true,2023-12-20T12:00:00Z
    37,7500,"456 Oak Avenue, Suite 300",false,
    42,10000.75,789 Pine Road,true,2024-04-01T21:59:59Z
  7. Generate client libraries from OpenAPI specifications

    Vom provides OpenAPI JSON files to generate client libraries for your preferred programming language:

    • Decision API: Available at https://api.vomdecision.com/v1/organizations/{organization_name}/decide/{policy_name}/docs
    • Other APIs: Available at https://api.vomdecision.com/openapi.json
  8. Best practices for Generative AI backtests

    When running backtests from decision history, Generative AI blocks return the original decision's outputs, ignoring any changes made to the prompt or input variables. To ensure accurate results:

    1. Separate extraction from logic: Use the GenAI block only to extract data (e.g., gross income) and use a separate Condition block to evaluate that data against thresholds. Avoid putting decision logic inside the prompt.
    2. Avoid decision history for prompt changes: If you have updated a prompt, do not use decision history for backtesting. Instead, use a CSV file and precompute the desired outputs to reflect the updated prompts and inputs.
  9. Integrate LLMs into decision policies using Generative AI blocks

    Generative AI blocks allow you to integrate Large Language Models (LLMs) into Vom decision policies. You can define a prompt that references variables (including documents), which is then processed by a selected LLM to compute output variables. These outputs can be used by subsequent blocks in the policy. Supported models include Gemini 2.0, Gemini 2.5, GPT-4.1, and GPT-5.
    Prompt: Check {{proof_of_income}} to make sure it's an authentic proof of income for a US person.
    
    Output variables:
    - authentic (True/False): True if the document looks authentic. False if there are signs it's a forgery.
    - income (Number): The gross income shown in the document. 0 if it's not authentic.
  10. Pull external data using Connectors

    Connectors pull data from external sources into the Feature Store when a policy version requires a feature value and no fresh value exists. To optimize costs:

    • Use the Value Expiration option on input variables to utilize cached values.
    • Structure policies so expensive features are only read after simpler checks pass; if a block containing a feature read is not executed, the connector is not invoked.
  11. Handle date and time values in Vom

    Vom uses ISO 8601 combined date and time strings in the UTC time zone (e.g., 2024-06-12T10:15:00Z) for API and batch decision CSV inputs. Internally, formulas represent datetimes as floating-point numbers (similar to Excel), where the integer part is the number of days since 1900-01-01 and the fractional part represents the time elapsed since midnight. Date functions handle these numbers transparently.
  12. Prepare CSV files for Batch Decisions

    Batch Decisions allow processing large datasets by uploading a CSV file. The first row must be a header containing the policy variable names. Each subsequent row represents one decision.

    CSV Formatting Rules:

    • Delimiter: Comma (,).
    • Escaping: Enclose fields with special characters in double quotes ("). Use double double-quotes ("") to include a literal quote.
    • Decimals: Use a dot (.) as the separator.
    • Booleans: Use true or false.
    • Lists: Enclose in double quotes (e.g., "[1, 2, 3]").
    • Datetime: Use ISO 8601 UTC strings (e.g., 2024-01-20T14:01:15Z). For dates without time, use T00:00:00Z.
    • Missing Values: Empty fields result in the policy default being used, or an error if no default is configured.
    age,income,address,has_requested_loan,last_loan
    25,5000.50,"123 Main Street, Apt ""4 B"",true,2023-12-20T12:00:00Z
    37,7500,"456 Oak Avenue, Suite 300",false,
    42,10000.75,789 Pine Road,true,2024-04-01T21:59:59Z