1 Choose a file
or
No file chosen yet.
2 Cleaning rules
Each rule is explicit and can be switched off. Rejected rows are never silently dropped.
3 Run
Choose a file first.
Results
Nothing run yet. Choose a file and click Run now.
- Rows read
- 0
- Cleaned
- 0
- Rejected
- 0
- Seconds
- 0
Schedule
The scheduler checks the "watched folder" (the file chosen above) and runs it with nobody clicking.
Scheduler is off.
Alerts
When a run fails, an alert is queued so the owner is told. In a real build this goes to a channel you choose.
No alerts. Try the broken file to see one.
Run log
No runs yet.
| # | Time | Source | Trigger | Status | Read | Cleaned | Rejected | Note |
|---|
How it is kept maintainable
Configuration (what the owner edits)
Adding a rule takes one small function
@rule("max_quantity")
def max_quantity(row, cfg):
if int(row["qty"]) > 1000:
raise Reject("quantity above 1000, check with sales")
Then add max_quantity to the enabled list. The rejected-rows file and run log pick it up automatically.
What is simulated here
This page re-creates the cleaning logic in JavaScript with sample data so you can click through it. The Python/SQLite/XLSX version lives in the project files and is not part of this page.