Playground · live in your browser

Write a rule. Watch it categorise.

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).
  • Full grammar reference: the rule language docs.
Where the demo stops and the product begins
  • 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.

— picking one replaces the editor below
02 Live results— updates as you type
6 rules · 12 transactions · 6 categorisednetwork calls: 0
Counterparty
Category · rule
Flags
SHELL TRADING INTERNATIONAL
245,000.00 · Q1 gas supply
Energy & Commodities
Energy: Shell
CAYMAN ISLANDS TRUST
250,000.00 · Investment management fee
ACME PAYROLL SERVICES
88,000.00 · March payroll run
Payroll
Payroll
BRITISH GAS BUSINESS
4,200.00 · Office utilities
AWS EMEA
12,750.00 · Cloud infrastructure
Cloud & IT
Cloud & IT
HSBC TREASURY DESK
1,200,000.00 · FX settlement GBPUSD
TESCO STORES 4471
310.50 · Staff catering
Staff & Catering
Catering: Tesco
STRIPE PAYMENTS UK
+45,200.00 · Customer card receipts
Customer Receipts
Receipts: Stripe
BP FUEL CARDS
2,180.00 · Fleet fuel March
DELOITTE LLP
64,000.00 · External audit fees
GREGGS PLC 0421
42.80 · Team lunch
Staff & Catering
Catering: Greggs
VODAFONE BUSINESS
1,890.00 · Telecoms line rental
03 Run— the CLI, simulated on this page
$ finlang --input demo_corporate.csv --rules playground.fin --output out.csv --audit audit.json --audit-mode full

Simulated run — this page builds the same artefacts the CLI writes, in your browser. The real thing: pip install finlang

Demo subset of the rule language — the shipped engine adds rulepacks, amount synthesis, locale parsing and audit output. Full reference in the docs.