The FinLang rule language, running deterministically on this page — same input, same output, every time. Open your browser's Network tab while you type: nothing leaves this page.
How to use this playground
Pick an example ruleset from the dropdown, or write your own in the Rules tab. The live results (02) recategorise as you type; mistakes show as line-numbered errors, and rules with errors are excluded until they parse.
The Input data tab holds the transactions being categorised — edit the demo rows or paste your own (date,counterparty,amount,memo, dot-decimal amounts).
Run (03) produces what a real CLI run writes: a downloadable out.csv and audit.json, plus a SHA-256 of the output. Run it again — same rules, same data, same hash.
↺ Reset everything restores the demo rules and data at any point.
What the rule language can do here
match: on counterparty, memo, amount, category, flags, status — with == (exact, case-insensitive), ~ (glob, * wildcard) and amount in lo..hi (inclusive range).
set: on category, memo, status, flags (append-only +=, single tokens) and exclude. date, amount and counterparty come from your data and are read-only.
Rules run top-to-bottom; every condition in a match: must hold (AND); the last matching rule wins the category; a later rule can match fields set by an earlier one (chained rules).
This page runs a faithful in-browser reimplementation of the rule semantics, tested row-for-row against real engine output — the shipped engine remains the source of truth.
Not in the demo: bundled rulepacks, amount synthesis from debit/credit columns, locale-aware parsing (comma decimals, unusual encodings), header mapping for arbitrary bank CSVs, and the --verify, --reconcile and --impact tools.
Demo caps: 50 rules / 400 rule lines / 200 input rows. The installed CLI is benchmarked at multi-million-row scale.
The Run console simulates the CLI experience; the artefacts it offers are generated on this page from your current rules and data.
Privacy — where your edits go
Nowhere. Everything runs in your browser: no network calls, nothing uploaded, nothing stored. Refreshing the page discards your edits.
Please still use made-up data — this is a sandbox, not a place for real bank statements.
01Rules & data
A session sandbox — whatever is in these editors is exactly what the live results (02) and the run (03) execute. Nothing is saved or sent anywhere.