A refined dataset
Your data after exactly the operations you selected, and nothing else.
A DataOps / MLOps-integrable platform
DataRefine turns a raw spreadsheet into a refined dataset, an exploration report and a trained model — using only pre-registered operations you chose. Then predict with the model you trained here: point it at new data and get your rows back with the answers added. Nothing is invented at runtime. Nothing is hidden. Run the same plan tomorrow and get the same result.
It is built to sit inside the stack you already run — databases, warehouses and lakehouses on one side, your DataOps and MLOps tooling on the other — rather than to replace it.
In development · early access opening to a small group first
The receipt
Every run writes an execution report — successful or failed. One row per operation, in the order it happened, with the parameters it used, what it did to your data, and how long it took. This is the document you hand to whoever asks.
| # | Operation | Stage | What changed | Time |
|---|---|---|---|---|
| 1 | ✓ info | explore | Profiled 9 columns on the raw file, before anything touched it. | 41 ms |
| 2 | ✓ describe | explore | Summary statistics for 5 numeric columns. | 88 ms |
| 3 | ✓ missing_summary | explore | 412 missing values found across 3 columns. | 12 ms |
| 4 | ✓ remove_duplicates keep=first | clean | 222 duplicate rows dropped. 6 340 → 6 118 rows. | 63 ms |
| 5 | ✓ impute_missing strategy=mean | clean | 412 nulls filled — column means for numeric, most common value for categorical. | 57 ms |
| 6 | ✓ standard_scaler | scale | 4 numeric feature columns centred on zero. The target column was not touched. | 34 ms |
| 7 | ✓ one_hot_encoding | encode | 1 categorical column replaced by 3 indicator columns. 9 → 11 columns. | 72 ms |
| 8 | ✓ random_forest_regressor | fit | Fitted on an 80 / 20 split and scored on the fifth it never saw. | 1.42 s |
Days later, with the model you just trained
A file, or a table read straight out of your database. The same five connectors that feed a run feed a prediction.
Against exactly what the model was trained on. A missing column is named — never quietly worked around, because a prediction that is wrong should not look like one that is right.
predictions.csv — your rows exactly as you sent them, with the model's output added as one more column.
What it does
Drag operations onto a canvas — explore, clean, scale, derive, encode, fit. 27 registered operations and 4 models. You never write Python, and nothing is generated on your behalf.
PostgreSQL, MySQL, MongoDB, Snowflake and Databricks. Point at a table or write a SELECT. Read-only statements only, and your credentials are never stored.
Each step appears as it finishes — rows in and out, columns added or dropped, nulls filled, milliseconds spent. A long run is never a spinner.
Predict with the very model you trained in DataRefine. Point it at new data — a file or a table — and get your rows back with the answers added. It checks the columns first and tells you if they don't match.
DataRefine is built to be integrable, not to be another island. Plans, runs and predictions are addressable pieces of work, so refinement and training can be triggered from the orchestration you already use, and the artifacts a run produces — dataset, report, model — land where the rest of your stack expects them. Deployable inside your own VPC.
Every operation, its parameters, its effect and its timing, written down. Especially useful the day something goes wrong — the trace ends exactly at the step that broke.
A plan is data, not a script. Save it, re-run it next quarter on next quarter's file, and compare like with like — because nothing about the run was improvised.
About
Most tools that promise machine learning without code work by hiding the decisions. You upload a file, something happens, a number comes out. That is fine until somebody asks what exactly did you do to this data — a risk officer, an auditor, a regulator, or the analyst who inherits your work in six months.
DataRefine answers that question by construction. You assemble a refinement plan from a fixed catalogue of registered operations. The system executes exactly those operations, in the order you set, and writes down every one of them with its parameters, its timing, and what it changed. No code is generated on the fly and no step is invented.
The same principle decides what the product refuses to do. Ask it to predict on data whose columns don't match what the model was trained on, and it stops and tells you which ones are missing — rather than reshaping your file until something comes out. A number that looks like an answer and isn't one is the only truly expensive bug in this business.
It is also meant to live inside a stack rather than beside one. DataRefine is integrable with existing DataOps and MLOps workflows — it reads from the databases and warehouses your data already sits in, and the artifacts it produces are ordinary files a downstream pipeline can pick up. And the model you train here does not have to leave: you can predict with it directly in DataRefine, on a new file or a new table, whenever you need to.
You do not need to know scikit-learn to use it. You do need to be able to read a list of what was done to your data — and that list is the product.
Your data after exactly the operations you selected, and nothing else.
Profiles, distributions, missingness and outliers — computed on the raw file, before anything transforms it.
Fitted and scored on a held-out split, with the metrics that suit the problem you chose.
Predict with the model you trained here — point it at a fresh file or table. It checks the columns against what it learned from, then hands back your rows with the answers added.
Early access
We are opening to a small first group. Tell us roughly what you work with and we will get in touch when there is something worth your time — no newsletter, no drip campaign.