GUBUS CHECKER

Advanced validation system for complex multi-condition checks with AND logic.

CHECKER is GUBUS’s advanced validation system for complex multi-condition checks. It enables sophisticated AND-logic validation where ALL conditions must pass for a row to be considered “done” or “valid”.

Primarily used in Workfeed read logic, Checker allows you to define multiple validation rules that are evaluated together, providing far more flexibility than simple single-condition checks.

💡

Checker uses AND logic - ALL conditions must be true. Perfect for complex workflow prerequisites and multi-field validation.

When to use Checker:

  • Multi-field validation (e.g., status = “ready” AND date < today)
  • Complex date-based conditions
  • Combinations of different check types
  • Advanced workflow prerequisites

Key characteristics:

  • AND logic: All checkers must pass
  • 15+ check command types
  • Date validation with custom formats
  • Value extraction before checking
  • Field comparison and validation

How It Works

In Workfeed Read Context

[Read workfeed] → [Generate check instructions] → [Execute checker logic] 
→ [Filter "done" rows] → [localObjs]

Step-by-step:

  1. Workfeed rule specifies resolve_type: "checker"
  2. Checker array loaded from workfeed configuration
  3. Check instructions generated
  4. For each row:
    • Each checker evaluated independently
    • ALL checkers must return true (AND logic)
    • If all pass → row marked as “done”
    • If any fail → row skipped
  5. Done rows collected for processing
  6. Resolve strategy executed on matched rows
💡

Checkers use AND logic - ALL conditions must be true. If you need OR logic, use separate schemas.

Checker Structure

class Checker {
  reference: string;              // Unique identifier for this checker
  check_field_name: string;       // Field to validate
  check_command: string;          // Validation command
  check_help_value: string;       // Reference value for comparison
  date_format_if_date: string;    // Date format for date checks
  extract_command: string;        // Optional: extract value before check
  extract_ref: string;            // Reference for extraction
  extract_field: string;          // Field to extract from
  date_format_extracted: string;  // Date format for extracted dates
}
PROPERTY
REQUIRED
PURPOSE
EXAMPLE
reference
✅ Yes
Unique identifier
”completion_check”
check_field_name
✅ Yes
Field to validate
”is_completed”, “operation_date”
check_command
✅ Yes
Validation command
”CHECKBOX_TRUE”, “DATE_EARLIER_INCLUDE”
check_help_value
Depends
Reference value for comparison
”2025-12-31”, “confirmed”
date_format_if_date
For dates
Date format string
”YYYY-MM-DD”, “DD.MM.YYYY”
extract_*
No
Advanced extraction (rarely used)
See Advanced section

Check Commands

Category 1: Basic Comparison

IN - Value must be in list

Checks if field value is in comma-separated list.

{
  "reference": "status_check",
  "check_field_name": "status",
  "check_command": "IN",
  "check_help_value": "pending,processing,ready"
}

Example:

  • Field status: "processing" → ✅ PASS (in list)
  • Field status: "completed" → ❌ FAIL (not in list)

NOT_IN - Value must NOT be in list

{
  "reference": "exclude_statuses",
  "check_field_name": "status",
  "check_command": "NOT_IN",
  "check_help_value": "cancelled,archived"
}

IS_EQUAL - Exact match

{
  "reference": "payment_confirmed",
  "check_field_name": "payment_status",
  "check_command": "IS_EQUAL",
  "check_help_value": "confirmed"
}

IS_NOT_EQUAL - Not equal

{
  "reference": "not_cancelled",
  "check_field_name": "status",
  "check_command": "IS_NOT_EQUAL",
  "check_help_value": "cancelled"
}

Category 2: Cell State Checks

CELL_NOT_EMPTY - Cell has any value

{
  "reference": "has_comment",
  "check_field_name": "comment",
  "check_command": "CELL_NOT_EMPTY",
  "check_help_value": ""
}

Example:

  • Field comment: "Some text" → ✅ PASS
  • Field comment: "" → ❌ FAIL (empty)

CELL_IS_NUMBER_NULL - Cell is number or empty

{
  "reference": "optional_amount",
  "check_field_name": "discount_amount",
  "check_command": "CELL_IS_NUMBER_NULL",
  "check_help_value": ""
}

IS_POSITIVE_NUMBER - Value > 0

{
  "reference": "has_quantity",
  "check_field_name": "quantity",
  "check_command": "IS_POSITIVE_NUMBER",
  "check_help_value": ""
}

CHECKBOX_TRUE - Checkbox is checked

{
  "reference": "completion_check",
  "check_field_name": "is_completed",
  "check_command": "CHECKBOX_TRUE",
  "check_help_value": ""
}
💡

Most popular checker for workflow queues - mark tasks as ready for processing.


Category 3: Date Checks

💡

All date checkers require date_format_if_date to parse field value correctly.

DATE_TODAY - Date equals today

{
  "reference": "today_check",
  "check_field_name": "operation_date",
  "check_command": "DATE_TODAY",
  "check_help_value": "",
  "date_format_if_date": "YYYY-MM-DD"
}

DATE_YESTERDAY - Date equals yesterday

{
  "reference": "yesterday_check",
  "check_field_name": "report_date",
  "check_command": "DATE_YESTERDAY",
  "check_help_value": "",
  "date_format_if_date": "DD.MM.YYYY"
}

DATE_TOMORROW - Date equals tomorrow

{
  "reference": "tomorrow_check",
  "check_field_name": "scheduled_date",
  "check_command": "DATE_TOMORROW",
  "check_help_value": "",
  "date_format_if_date": "YYYY-MM-DD"
}

DATE_EARLIER_INCLUDE - Date ≤ reference date

{
  "reference": "deadline_check",
  "check_field_name": "due_date",
  "check_command": "DATE_EARLIER_INCLUDE",
  "check_help_value": "2025-12-31",
  "date_format_if_date": "YYYY-MM-DD"
}
💡

Process all items with dates in the past or up to a deadline.


DATE_LATER_EXCLUDE - Date > reference date

{
  "reference": "future_only",
  "check_field_name": "start_date",
  "check_command": "DATE_LATER_EXCLUDE",
  "check_help_value": "2025-11-19",
  "date_format_if_date": "YYYY-MM-DD"
}

DATE_THIS_MONTH - Date in current month

{
  "reference": "current_month_check",
  "check_field_name": "transaction_date",
  "check_command": "DATE_THIS_MONTH",
  "check_help_value": "",
  "date_format_if_date": "YYYY-MM-DD"
}

DATE_TIME_PRECISION_MATCH_SECONDS - Exact datetime match

{
  "reference": "exact_time_check",
  "check_field_name": "scheduled_time",
  "check_command": "DATE_TIME_PRECISION_MATCH_SECONDS",
  "check_help_value": "2025-11-19 14:30:00",
  "date_format_if_date": "YYYY-MM-DD HH:mm:ss"
}

Category 4: Special Checks

CHECK_NOT_GOOGLE_MISTAKE - Validates proper data format

Checks that field value is not a Google Sheets error or invalid format.

{
  "reference": "valid_data",
  "check_field_name": "calculated_total",
  "check_command": "CHECK_NOT_GOOGLE_MISTAKE",
  "check_help_value": ""
}

Example:

  • Field calculated_total: 100.50 → ✅ PASS (valid number)
  • Field calculated_total: "#DIV/0!" → ❌ FAIL (formula error)
💡

Validate that calculated fields don’t contain formula errors before processing.

Date Format Patterns

Common date format patterns for date_format_if_date:

FORMAT
EXAMPLE
DESCRIPTION
YYYY-MM-DD
2025-11-19
ISO 8601 standard
DD.MM.YYYY
19.11.2025
European format
MM/DD/YYYY
11/19/2025
US format
YYYY-MM-DD HH:mm
2025-11-19 14:30
Date with time (24h)
YYYY-MM-DD HH:mm:ss
2025-11-19 14:30:45
Date with seconds
DD.MM.YYYY HH:mm
19.11.2025 14:30
European with time
💡

Date format must EXACTLY match your sheet’s date format, or checks will fail. Format is case-sensitive! YYYY ≠ yyyy

Complete Examples

Example 1: Simple Checkbox Queue

Use Case: Process tasks marked as ready.

{
  "resolve_type": "checker",
  "checker": [
    {
      "reference": "ready_check",
      "check_field_name": "is_ready",
      "check_command": "CHECKBOX_TRUE",
      "check_help_value": ""
    }
  ]
}

Logic: Read only rows where is_ready checkbox is checked.


Example 2: Multi-Condition AND Logic

Use Case: Process orders that are both ready AND have confirmed payment.

{
  "resolve_type": "checker",
  "checker": [
    {
      "reference": "ready_check",
      "check_field_name": "is_ready",
      "check_command": "CHECKBOX_TRUE",
      "check_help_value": ""
    },
    {
      "reference": "payment_check",
      "check_field_name": "payment_status",
      "check_command": "IS_EQUAL",
      "check_help_value": "confirmed"
    }
  ]
}

Logic: Read only rows where BOTH conditions are true:

  • is_ready = true AND
  • payment_status = “confirmed”

If either fails, row is skipped.


Example 3: Complex Workflow Prerequisites

Use Case: Process production items that meet all criteria.

{
  "resolve_type": "checker",
  "checker": [
    {
      "reference": "status_check",
      "check_field_name": "status",
      "check_command": "IN",
      "check_help_value": "ready,processing"
    },
    {
      "reference": "quantity_check",
      "check_field_name": "quantity",
      "check_command": "IS_POSITIVE_NUMBER",
      "check_help_value": ""
    },
    {
      "reference": "date_check",
      "check_field_name": "production_date",
      "check_command": "DATE_THIS_MONTH",
      "check_help_value": "",
      "date_format_if_date": "YYYY-MM-DD"
    },
    {
      "reference": "not_cancelled",
      "check_field_name": "is_cancelled",
      "check_command": "IS_NOT_EQUAL",
      "check_help_value": "true"
    }
  ]
}

Logic: ALL of these must be true:

  • status is “ready” OR “processing” AND
  • quantity > 0 AND
  • production_date is in current month AND
  • is_cancelled ≠ “true”

Integration with Workfeed

Checker is silently connected to workfeed reference. Just set resolve_type: "checker" and GUBUS will search checker properties bound to workfeed reference.

How it works:

  1. Schema reads workfeed
  2. System generates check instructions from checker array
  3. For each row:
    • Check 1, Check 2, … Check N evaluated
    • If BOTH/ALL pass → row is “done” and included in read result
  4. After processing, rows are resolved as assigned in resolve property

Advanced: Extract Commands

Actively Used: Extract commands is a perfect concise way to check workfeed against another pattern loaded to Schema Context. Most commonly you need to check against values entered in initial multipanel.

Example Use Case: User wants to undo some execution by posting date. Multipanel for that created. How to extract value to check workfeed with entered value? Right! GUBUS extract command!

{
  "reference": "extracted_date_check",
  "check_field_name": "posting_date",
  "check_command": "DATE_EARLIER_INCLUDE",
  "check_help_value": "2025-12-31",
  "date_format_if_date": "YYYY-MM-DD",
  "extract_command": "EXTRACT_VALUE",
  "extract_field": "undo_date",
  "extract_ref": "undoInputPanel"
}

This extracts undo_date from multipanel, then checks workfeed posting_date against it.

Best Practices

Do’s ✅

Design:

  • ✅ Use clear, descriptive reference names (e.g., “payment_confirmed”, “past_date_check”)
  • ✅ Start with simple checkers, add complexity only when needed
  • ✅ Use CHECKBOX_TRUE for workflow queues (most common pattern)
  • ✅ Always specify date_format_if_date for date checks

Testing:

  • ✅ Test each checker independently first
  • ✅ Test ALL combinations of conditions
  • ✅ Verify date formats match your sheet exactly
  • ✅ Use sample data to validate logic before production

Don’ts ❌

Configuration:

  • ❌ Don’t forget date_format_if_date for date checks - will fail silently
  • ❌ Don’t mix different date formats in same workfeed
  • ❌ Don’t use too many checkers (>5) - becomes hard to debug
  • ❌ Don’t use checkers for simple single-condition checks (use resolve_type instead)

Logic:

  • ❌ Don’t expect OR logic - ALL checkers must pass (AND only)
  • ❌ Don’t assume empty fields pass checks - define explicit handling

Troubleshooting

Checker Not Matching Any Rows

Possible Causes:

  1. Date format mismatch - date_format_if_date doesn’t match actual format
  2. Field name typo in check_field_name
  3. Too restrictive conditions - no rows meet ALL criteria
  4. Wrong check_help_value - doesn’t match actual data

Solution Checklist:

  • ✓ Verify check_field_name exists in workfeed model
  • ✓ Check date format matches exactly (case-sensitive)
  • ✓ Temporarily disable some checkers to isolate issue
  • ✓ Review actual sheet data to verify values

Date Checks Always Failing

Cause: Date format mismatch between sheet and date_format_if_date.

Solution:

// If sheet has: "19.11.2025"
// Use: "DD.MM.YYYY"

// If sheet has: "2025-11-19"
// Use: "YYYY-MM-DD"

// If sheet has: "11/19/2025"
// Use: "MM/DD/YYYY"
💡

Format is case-sensitive! YYYY ≠ yyyy

Summary

Checker = Complex Multi-Condition Validation

  • ✅ AND logic: ALL checkers must pass
  • ✅ 15+ check commands (comparison, cell state, date, special)
  • ✅ Flexible date validation with custom formats
  • ✅ Integrated with Workfeed read logic

Key Commands:

  • Comparison: IN, NOT_IN, IS_EQUAL, IS_NOT_EQUAL
  • Cell State: CELL_NOT_EMPTY, IS_POSITIVE_NUMBER, CHECKBOX_TRUE
  • Date: DATE_TODAY, DATE_EARLIER_INCLUDE, DATE_THIS_MONTH
  • Special: CHECK_NOT_GOOGLE_MISTAKE

Common Patterns:

  • Simple queue: CHECKBOX_TRUE on is_ready field
  • Date range: DATE_EARLIER_INCLUDE for past dates
  • Multi-condition: Multiple checkers for complex workflows
  • Status validation: IS_EQUAL or IN for status checks

When to use:

  • Multi-field validation requirements
  • Complex workflow prerequisites
  • Date-based processing logic
  • Advanced queue management

When NOT to use:

  • Single simple condition (use resolve_type instead)
  • OR logic needed (use separate schemas)
  • Performance-critical paths (checkers add overhead)

Next Steps

👉 GUBUS WORKFEED → - Workfeed pattern documentation 👉 GUBUS SCHEMA → - Schema execution workflows 👉 ← Back to Getting Started - Main documentation