How FlowCSV works
Written for whoever picks this product up next: an operator, a new developer, or a buyer evaluating it.
What it is
A focused B2B data-cleaning and transformation utility that turns messy operational CSV files into structured, system-ready data. One workflow: upload, understand, clean, map, preview, export.
It is used by bookkeepers, office administrators, operations staff, agencies and migration consultants — people who receive exports from one business system and need them accepted by another, without writing formulas or scripts.
Where your data lives
Parsing, analysis, cleaning, mapping and export all run in the browser. Files are never uploaded to a server, so there is no server-side copy to retain, leak or delete, and no account is required to use the product.
The only persisted data is in this browser's local storage: file summaries for the History page, cleaning profiles you save, and anonymous usage counters. Settings erases all of it.
The cleaning engine
Every transformation is ordinary deterministic application logic — no language model touches your data, and identical input always produces identical output. Current rules:
- Remove leading and trailing spaces — Strips stray spaces from the start and end of every value.
- Collapse repeated spaces — Turns "John Smith" into "John Smith" inside values.
- Standardize email casing — Lowercases addresses and removes stray quotes or brackets.
- Normalize phone numbers — Rewrites 10-digit North-American numbers as 519-555-1234. Anything else is left alone.
- Standardize date format — Converts recognizable dates to YYYY-MM-DD. Unrecognized values stay as they are.
- Standardize province and state values — Maps "Ontario", "ontario" and "ON." to the two-letter code ON.
- Fix ALL CAPS and lowercase names — Restores normal capitalization: "JOHN SMITH" becomes "John Smith".
- Remove duplicate rows — Keeps the first occurrence of each row and drops later repeats. Rows are compared after the other fixes above are applied and ignoring letter case and extra spacing, so "NULL" and "null" count as the same row.
- Remove completely blank rows — Drops rows with no values at all. Rows with any value are kept.
Values the engine cannot standardize with confidence — an unrecognizable date, a phone number with too few digits — are reported as findings and left untouched rather than guessed at.
Analysis and severity
Analysis is read-only and runs before anything is modified. Findings are graded: Error for structural problems such as duplicate rows or invalid emails, Warning for inconsistency such as mixed province spellings or date formats, Info for cosmetic differences. A file with only cosmetic differences is reported as ready, not broken.
Safety on export
Cells beginning with =, +, -, @, tab or carriage return can execute as formulas when a CSV is opened in a spreadsheet. FlowCSV prefixes those cells with an apostrophe so they are treated as text; plain negative numbers are left alone. Files are written with a UTF-8 byte-order mark so accented characters survive Excel.
Limits
Up to 15 MB per file, 100,000 rows and 300 columns. Comma, semicolon, tab and pipe separators are detected automatically; quoted values, embedded commas, embedded newlines and ragged rows are handled, with anything unusual reported as a note rather than a silent fix.
How it is built
React with TanStack Start and Router, TypeScript, Tailwind. The engine is plain, dependency-free TypeScript in src/lib/flowcsv/ — parsing, normalizing, analysis, rules, cleaning, mapping, templates and CSV writing are separate modules with no UI imports, each covered by unit tests. UI components under src/components/ hold no data logic.
Because the engine is pure and UI-free, moving processing to a server later — for very large files or scheduled jobs — means calling the same functions from a server function, with no rewrite.
Deliberately not built yet
Accounts, teams, billing, an API, scheduled imports and direct connections to accounting or CRM systems are all future functionality, not present today. The templates are FlowCSV column layouts modelled on common import formats — not official integrations or certified compatibility.