ML Data Validator
An offline tool that learns the shape of your CSV data, flags invalid cells with a reason and a suggested fix, and never sends a byte anywhere.
- Python
- scikit-learn
- FastAPI
- React
- TypeScript
Problem
Some data is too sensitive for cloud tools. A hospital export or an HR sheet cannot be pasted into a chatbot to get it checked; that is a privacy breach the moment you hit enter. Reviewing it by hand in Excel takes hours and still misses things, and rule engines only catch what someone thought to write a rule for. I wanted a checker that learns what your data normally looks like and runs entirely on your own machine.
What I built
A validation tool that works fully offline. Upload a CSV and every cell gets checked and colour coded, green for valid and red for flagged. Each flag says which check caught it, why, and how confident it is, and most come with a one click fix. Every applied change goes into an audit log you can export.
It ships with a base model for common columns like names, emails, phones, and countries. For your own domain you train a custom model on around 50 clean rows. The trainer works out each column's shape on its own: a department column becomes a closed set, a salary column gets a learned numeric range, and open ended columns like customer names get their own classifier. On the benchmark dataset it caught all 5 planted errors across 700 cells with zero false positives, in about 2 seconds.
Screenshots

Every cell is colour coded after a run, with quality metrics up top. Here the one row of planted errors is caught.

Each flag shows the pipeline stage that caught it, the reason, a confidence score, and a one click fix where a correction exists.
Tech and approach
Each cell passes through a pipeline ordered from certain to probabilistic: empty checks, deterministic rules matched to column names, whitelist and learned range checks, fuzzy typo detection with rapidfuzz, and finally a per column logistic regression over character n-grams and shape tokens (P101 is seen as xddd), tuned with GridSearchCV. The classifier only flags a cell when it is at least 65 percent sure. A reviewer who sees valid cells painted red stops trusting the red, so the design trades a little recall for precision.
FastAPI serves the backend, React with AG Grid renders the grid, and scikit-learn does the learning. 53 automated tests cover the pipeline, plus a live API integration suite. The server binds to localhost only, so nothing leaves the machine.