A small tool for better decisions

Data, ready for
the next step.

Validate a CSV. Isolate exceptions. Explore the operational picture.
One transparent workflow, from source rows to useful signals.

Data WorkbenchValidate → understand → act
Fixed reporting snapshot26 October 2026
Local processing

01 / Protect the input

A clear result for every row.

Start with the fictional sample, or check a CSV of your own. Only accepted rows enter the operations view.

Check a dataset

Choose a UTF-8 CSV. It stays on this device and is cleared when you leave or reload.

Up to 1 MB · 2,000 data rows · 40 columns

View the expected schema

Use these nine headers. Dates are YYYY-MM-DD; effort is a non-negative whole number of minutes.

id, title, status, priority, channel, opened_at, due_at, resolved_at, effort_minutes
Status
Open, In progress, Resolved
Priority
Low, Medium, High, Urgent
Channel
Email, Portal, Phone, Chat

Resolved tickets require a resolution date; other tickets leave it blank. The snapshot date is 26 October 2026. Future opened or resolved dates are rejected.

Latest completed check

Loading fictional sample

Ready

Original, deterministic fictional data.

Source records—Non-blank data rows
Accepted—Ready for exploration
Held for review—Excluded from reporting
Checking reconciliation…
Required fields Unique IDs Valid dates Allowed values Non-negative effort

Exports quote every cell and prefix formula-like text for spreadsheet safety. CSV remains data; review it before importing elsewhere.

Exception review

Every held record includes its source line and reason.

Rejected source records and validation reasons
SourceRecord IDTitle / contextReason for review

What this check does — and its limits

The parser handles quoted commas, escaped quotes, multiline fields, UTF-8 BOM and CRLF/LF line endings. Headers are trimmed and case-normalised. Unexpected extra columns are disclosed and excluded from accepted exports.

All instances of a duplicate ID are held; no record is silently chosen as correct. Blank lines are ignored and counted. A failed file does not replace the previous successful run. This is a schema check, not proof of business accuracy or an immutable audit trail.

Your data stays in this tab.Refresh to return to the fictional sample.

Why I built this

Useful automation needs
visible checks.

This original demonstration connects two parts of business systems work: making inputs dependable, then making the result understandable.

It uses a bounded schema, explicit exception handling, reconciliation and traceable calculations. The demo is built with HTML, CSS and vanilla JavaScript; its data and outcomes are fictional.

Back to selected work

Record detail

Accepted source record · all data is fictional in the sample.