Validate a recurring CSV feed against your rules

Write rules once, then see a scorecard with checked, passed and failed counts for each rule. Failing rows can be reported, flagged in an issues column or moved to the ledger.

Example data — not saved

Showing synthetic sample data: Validate a product feed. Open or drop your own file to replace it — files are read in your browser and never uploaded.

Source AUpdating…
Loading…

Arrow keys move; Enter or double-click edits a cell (recorded as a replayable “Cell edits” step). ∅ = missing, · = edge whitespace, ↵ = line break inside a value. Row labels show source:record provenance.

Reading the scorecard

The example product feed has a duplicate SKU (marked as a critical rule), a missing title, a negative price, a non-numeric stock count, a status in the wrong case and a month-13 date. Each rule is listed separately; there is no single weighted score that could hide a critical failure.

The “Add an issues column” policy keeps every row and writes the reasons into _issues, which is handy for sending a file back to its owner. “Move failing rows to the ledger” produces a clean file plus a rejects file.

Save the recipe as JSON to rerun the same rules on next week’s feed. If the feed’s header changes, preflight stops the rule that lost its column.

Questions

Do range and pattern rules flag blank cells?

No. They skip blanks so that “optional but valid if present” is expressible. Add a “Not blank” or “Required” rule when a value must exist.

What is the difference between “Required” and “Not blank”?

Required fails only when the field is missing (a short record or null). Not blank also fails for empty text and whitespace-only values.

Can rules use regular expressions?

Yes. Pattern rules match the whole value and run under the same worker time budget as other regex steps.