Klaaro logoKlaaro
  • Developers
  • Pricing
  • Team
EN|DE
Log inSign up

Validation rules

Catch wrong values before they reach your systems

AI data extraction is probabilistic, not 100% accurate. Validation rules are its deterministic guardrails: invoice totals that add up, dates in order, valid VAT numbers, checked on every record. Anything that breaks a rule is flagged for review, so only reliable data reaches your systems.

Sarah Stemmler
Talk to our founder

Sarah Stemmler · Founder & CEO

Try for free

100 pages · no credit card

Probabilistic AI, deterministic guardrails

The model read every value on this invoice correctly and flagged nothing as unsure. A rule still catches what is wrong: the total does not equal its line items.

  1. AI extraction

    A model reads the invoice into the record. Every value is printed on the page, so it is confident about all of them and flags nothing as unsure.

  2. Validation rules

    Your rules run on the record. No model, no guess: the same record gets the same verdict every time, and here the total does not equal its line items.

  3. Review

    The record is held back for a person to approve or review before reaching your export.

    Next: Approvals

Probabilistic

Extracted dataExtracting…No unsure fieldsNeeds review
supplierBerger Logistics GmbH
invoice_noINV-2024-0847
issue_date2024-09-15
due_date2024-10-15
vat_noDE811907980
line_items3 items
#descriptionamount
1Freight Hamburg–Munich9,800.00
2Pallet handling2,280.00
3Fuel surcharge1,870.00
total14,250.00sum(line_items.amount) = 13950 ≠ total = 14250

DeterministicHuman

ValidationInvoice

Invoice checks

2 rules3 rules

issue_datedue_dateDate ordering
and
vat_noChecksum (IBAN/VAT/Tax ID)VAT
and
totalline_itemsExpressionSum
Sum ofline_items.amountequalstotal
Filter checks…

Multi-field rule

Expression
Compare
Free expression
Pending reviewTriggered by: Validation violation

total

14,250.00

sum(line_items.amount) = 13950 ≠ total = 14250

ApproveRequest review

Hover over the scene to run it, or click a step to jump there

  1. A model reads the invoice into the record. Every value is printed on the page, so it is confident about all of them and flags nothing as unsure.

  2. Your rules run on the record. No model, no guess: the same record gets the same verdict every time, and here the total does not equal its line items.

  3. The record is held back for a person to approve or review before reaching your export.

    Next: Approvals

Probabilistic

Extracted dataExtracting…No unsure fieldsNeeds review
supplierBerger Logistics GmbH
invoice_noINV-2024-0847
issue_date2024-09-15
due_date2024-10-15
vat_noDE811907980
line_items3 items
#descriptionamount
1Freight Hamburg–Munich9,800.00
2Pallet handling2,280.00
3Fuel surcharge1,870.00
total14,250.00sum(line_items.amount) = 13950 ≠ total = 14250

DeterministicHuman

ValidationInvoice

Invoice checks

2 rules3 rules

issue_datedue_dateDate ordering
and
vat_noChecksum (IBAN/VAT/Tax ID)VAT
and
totalline_itemsExpressionSum
Sum ofline_items.amountequalstotal
Filter checks…

Multi-field rule

Expression
Compare
Free expression
Pending reviewTriggered by: Validation violation

total

14,250.00

sum(line_items.amount) = 13950 ≠ total = 14250

ApproveRequest review

No-code business rules for every document

Turn the checks your team does by hand into automated data validation: totals against line items, dates in order, VAT numbers, addresses. Set them in clicks, or let the AI agent write them.

Cross-field

Check fields against each other

  • Expression

    Sums, products, differences and ratios that have to equal another field, within a tolerance for rounding.

    • Sum
    • Product
    • Difference
    • Ratio
    • Min
    • Max
    • Avg
    Freight Hamburg–Munich9,800.00
    Pallet handling2,280.00
    Fuel surcharge1,870.00
    total14,250.00
    totalline_itemsExpressionSum

    Needs review

    sum(line_items.amount) = 13950 ≠ total = 14250

  • If / then

    If one condition holds, a second one has to hold too.

    • If / then
    • =
    • ≠
    • <
    • ≤
    • >
    • ≥
    iftotal > 10000
    thenpo_number ≠ empty
  • Free expression

    Your own formula over several fields, for the checks no preset covers.

    • Free expression
    • + − * /
    • and / or
    • Tolerance

    net_amount * (1 + vat_rate) = gross_amount

    tolerance 0.01

  • Compare & date ordering

    One field against another or a fixed value, and dates that have to come in order.

    • Compare
    • Date ordering
    net_amountgross_amountCompare<
    issue_datedue_dateDate ordering
  • Conditions

    Fields that depend on each other: required if, all or none, one of, unique across.

    • Required if
    • All or none
    • One of
    • Unique across

    Required if

    iban · payment_method = transfer

    One of

    vat_no, tax_id

    Unique across

    line_items.position

Single field

Check each value on its own

  • Numbers & text

    Required values, ranges, number rules, lengths, text rules and allowed values, right on the field.

    • Required
    • Numeric range
    • Number rule
    • String length
    • String rule
    • Allowed values (enum)
    • Enum value rule
    invoice_noRequired
    totalNumeric range0 – 1,000,000
    quantityNumber ruleInteger
    invoice_noString length4 – 32
    supplierString ruleDoes not contain "test"
    currencyAllowed values (enum)EUR, USD, GBP
    statusEnum value ruleMust not equal "void"
  • Checksums

    IBANs, VAT numbers and tax IDs have to pass their check digits, so one misread digit cannot slip through.

    • IBAN
    • VAT
    • Tax ID

    ibanChecksum · IBAN

    DE89 3704 0044 0532 0130 00

    vat_noChecksum · VAT

    DE811907981

    Value does not pass VAT checksum validation

  • Patterns & formats

    Your own regular expression, ready-made presets, and valid email addresses, phone numbers and URLs.

    • Regex pattern
    • Regex preset
    • Format check
    order_refRegex pattern^PO-\d{6}$
    postal_codeRegex presetPostal code
    bicRegex presetBIC
    contact_emailFormat checkEmail
  • Dates

    Date windows, no dates in the future, weekdays only, and public holidays by country.

    • Date range
    • Business date
    Mo13
    Tu14
    We15
    Th16
    Fr17
    Sa18
    Su19
    issue_dateDate rangeNot in the future
    due_dateBusiness dateWeekday, not a holiday (DE)

Beyond the field

Check against the outside world

  • Addresses

    Complete, real and consistent: checked for its parts, looked up in OpenStreetMap, and postal code matched against city.

    • Address format
    • Address API verification
    • Address geocode check

    supplier_address

    Berger Logistics GmbH

    Hafenstraße 12, 20457 Hamburg

    Address format

    Street, postal code, city

    Address API verification

    Nominatim (OpenStreetMap)

    Address geocode check

    Postal matches city

  • Links

    A URL taken from the document has to open.

    • URL reachable

    website

    https://berger-logistics.de

    websiteURL reachable

Continue the product tour

Product capabilities

  • OCR with AITurn scans and photos into text
  • Document parsingIngest files and keep their structure
  • Document classificationRecognize every document type
  • Schema generationFields drafted from the document
  • Data extractionThe right values in the right fields
  • IntegrationsAPI, SDKs, MCP, and n8n

Quality & validation

  • ApprovalsPeople decide the exceptions
  • EvaluationTest a schema edit before it goes live
See the full product overview

…Or let's talk personally!

Tell me which documents slow you down by booking your 20-minute slot in my calendar. Together, we can find out if Klaaro is the right tool for you.

Sarah Stemmler

Sarah Stemmler

Founder & CEO

Book your slotTry for free

Validation rules FAQ

Klaaro logoKlaaro

© 2026 Klaaro by synsugar GmbH.
All rights reserved.

Product

  • Product
  • Pricing

Resources

  • Docs
  • For AI agents
  • Comparisons
  • n8n Integration
  • Customers

Solutions

  • Energy
  • Construction
  • Logistics
  • Bill of Quantities

Company

  • Team
  • Contact

Community

  • Discord
  • Reddit
  • YouTube
  • Instagram

Legal

  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Legal Notice
Hosted in EUGDPR compliantNIS2 ReadyFunded by MicrosoftPart of Daytona Startup Gridn8n integration partner